From f6b9d13a150a27682f170bee96dce8448ffafe71 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 18 Apr 2025 19:17:24 -0500 Subject: [PATCH] nak/sm20: Implement OpBar Part-of: --- src/nouveau/compiler/nak/sm20.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/nouveau/compiler/nak/sm20.rs b/src/nouveau/compiler/nak/sm20.rs index fcb09c9d694..24133e0b780 100644 --- a/src/nouveau/compiler/nak/sm20.rs +++ b/src/nouveau/compiler/nak/sm20.rs @@ -2490,6 +2490,25 @@ impl SM20Op for OpExit { } } +impl SM20Op for OpBar { + fn legalize(&mut self, _b: &mut LegalizeBuilder) { + // Nothing to do + } + + fn encode(&self, e: &mut SM20Encoder<'_>) { + e.set_opcode(SM20Unit::Move, 0x14); + + e.set_field(5..7, 0_u8); // 0: .popc, 1: .and, 2: .or + e.set_field(7..9, 0_u8); // 0: .sync, 1: .arv, 2: .red + e.set_reg_src(20..26, 0.into()); + e.set_reg_src(26..32, 0.into()); + e.set_bit(46, false); // src1_is_imm + e.set_bit(47, false); // src0_is_imm + e.set_pred_src(49..53, true.into()); + e.set_pred_dst(53..56, Dst::None); + } +} + impl SM20Op for OpTexDepBar { fn legalize(&mut self, _b: &mut LegalizeBuilder) { // Nothing to do @@ -2683,6 +2702,7 @@ macro_rules! as_sm20_op_match { Op::Cont(op) => op, Op::PCnt(op) => op, Op::Exit(op) => op, + Op::Bar(op) => op, Op::TexDepBar(op) => op, Op::Isberd(op) => op, Op::Kill(op) => op,