nak: BMov is always variable-latency

The barrier half is HW scoreboarded by the GPR isn't.  When moving from
a GPR to a barrier, we still need a token for WaR hazards.

Fixes: 7cd9680554 ("nak: Add back OpBMov with better semantics")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29591>
(cherry picked from commit 0a089b1b13)
This commit is contained in:
Faith Ekstrand 2024-06-06 10:02:15 -05:00 committed by Eric Engestrom
parent 8cf67a4467
commit acee7868bd
2 changed files with 5 additions and 8 deletions

View file

@ -2434,7 +2434,7 @@
"description": "nak: BMov is always variable-latency",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "7cd9680554b16e7de07873cd3be428953be9ad07",
"notes": null

View file

@ -5700,13 +5700,10 @@ impl Instr {
Op::Bra(_) | Op::Exit(_) => true,
Op::WarpSync(_) => false,
// BMOV: barriers only when using gprs (and only valid for the gpr),
// no barriers for the others.
Op::BMov(op) => match &op.dst {
Dst::None => true,
Dst::SSA(vec) => vec.file() == RegFile::Bar,
Dst::Reg(reg) => reg.file() == RegFile::Bar,
},
// The barrier half is HW scoreboarded by the GPR isn't. When
// moving from a GPR to a barrier, we still need a token for WaR
// hazards.
Op::BMov(_) => false,
// Geometry ops
Op::Out(_) | Op::OutFinal(_) => false,