diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index cd91fadaab4..cf3f2d50bb5 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -1619,10 +1619,6 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr) result = vir_CLZ(c, src[0]); break; - case nir_op_ufind_msb: - result = vir_SUB(c, vir_uniform_ui(c, 31), vir_CLZ(c, src[0])); - break; - case nir_op_imul: result = vir_UMUL(c, src[0], src[1]); break; diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index 1f490223ab5..ebbed6bd05c 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -218,6 +218,7 @@ v3dv_pipeline_get_nir_options(const struct v3d_device_info *devinfo) .lower_to_scalar = true, .lower_device_index_to_zero = true, .lower_fquantize2f16 = true, + .lower_ufind_msb = true, .has_fsub = true, .has_isub = true, .has_uclz = true, diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c index d82a7626508..5c415eb6b0e 100644 --- a/src/gallium/drivers/v3d/v3d_screen.c +++ b/src/gallium/drivers/v3d/v3d_screen.c @@ -749,6 +749,7 @@ v3d_screen_get_compiler_options(struct pipe_screen *pscreen, nir_lower_shift64 | nir_lower_ufind_msb64, .lower_fquantize2f16 = true, + .lower_ufind_msb = true, .has_fsub = true, .has_isub = true, .has_uclz = true,