From 14f9f98dcb4b6034c331120acf405e9a3c64edc6 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 16 Mar 2023 16:01:16 -0700 Subject: [PATCH] i965/vec4: Implement uclz in the vec4 backend Commit 28311f9d029 moved ufind_msb lowering to NIR and started emitting uclz. Unfortunately, the vec4 backend never actually implemented uclz. It's trivial to do. Now it does. Fixes: 28311f9d029 ("nir: intel/compiler: Move ufind_msb lowering to NIR") Reviewed-by: Faith Ekstrand Part-of: --- src/intel/compiler/brw_vec4.h | 1 + src/intel/compiler/brw_vec4_nir.cpp | 6 ++++++ src/intel/compiler/brw_vec4_visitor.cpp | 1 + 3 files changed, 8 insertions(+) diff --git a/src/intel/compiler/brw_vec4.h b/src/intel/compiler/brw_vec4.h index 12e58fd..1b56817 100644 --- a/src/intel/compiler/brw_vec4.h +++ b/src/intel/compiler/brw_vec4.h @@ -214,6 +214,7 @@ public: EMIT1(FBH) EMIT1(FBL) EMIT1(CBIT) + EMIT1(LZD) EMIT3(MAD) EMIT2(ADDC) EMIT2(SUBB) diff --git a/src/intel/compiler/brw_vec4_nir.cpp b/src/intel/compiler/brw_vec4_nir.cpp index 32b0a3a..c94331f 100644 --- a/src/intel/compiler/brw_vec4_nir.cpp +++ b/src/intel/compiler/brw_vec4_nir.cpp @@ -1636,6 +1636,12 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr) break; } + case nir_op_uclz: + assert(nir_dest_bit_size(instr->dest.dest) == 32); + assert(nir_src_bit_size(instr->src[0].src) == 32); + emit(LZD(dst, op[0])); + break; + case nir_op_find_lsb: assert(nir_dest_bit_size(instr->dest.dest) == 32); assert(nir_src_bit_size(instr->src[0].src) == 32); diff --git a/src/intel/compiler/brw_vec4_visitor.cpp b/src/intel/compiler/brw_vec4_visitor.cpp index f205baa..82076cd 100644 --- a/src/intel/compiler/brw_vec4_visitor.cpp +++ b/src/intel/compiler/brw_vec4_visitor.cpp @@ -183,6 +183,7 @@ ALU3(BFI2) ALU1(FBH) ALU1(FBL) ALU1(CBIT) +ALU1(LZD) ALU3(MAD) ALU2_ACC(ADDC) ALU2_ACC(SUBB) -- 2.7.4