From 5f437aa24dc64426555176aa05cc7bbb4e7242ce Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 12 Aug 2024 20:02:26 -0400 Subject: [PATCH] elk: fix compute shader derivatives derivatives are not fs only so move to be with the rest of subgroup ops. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11674 Signed-off-by: Alyssa Rosenzweig Reviewed-by: Ian Romanick Part-of: --- src/intel/compiler/elk/elk_fs_nir.cpp | 38 +++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/intel/compiler/elk/elk_fs_nir.cpp b/src/intel/compiler/elk/elk_fs_nir.cpp index 29b6a5ebfee..5fc12015fa9 100644 --- a/src/intel/compiler/elk/elk_fs_nir.cpp +++ b/src/intel/compiler/elk/elk_fs_nir.cpp @@ -3986,25 +3986,6 @@ fs_nir_emit_fs_intrinsic(nir_to_elk_state &ntb, break; } - case nir_intrinsic_ddx_fine: - bld.emit(ELK_FS_OPCODE_DDX_FINE, retype(dest, ELK_REGISTER_TYPE_F), - retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); - break; - case nir_intrinsic_ddx: - case nir_intrinsic_ddx_coarse: - bld.emit(ELK_FS_OPCODE_DDX_COARSE, retype(dest, ELK_REGISTER_TYPE_F), - retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); - break; - case nir_intrinsic_ddy_fine: - bld.emit(ELK_FS_OPCODE_DDY_FINE, retype(dest, ELK_REGISTER_TYPE_F), - retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); - break; - case nir_intrinsic_ddy: - case nir_intrinsic_ddy_coarse: - bld.emit(ELK_FS_OPCODE_DDY_COARSE, retype(dest, ELK_REGISTER_TYPE_F), - retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); - break; - default: fs_nir_emit_intrinsic(ntb, bld, instr); break; @@ -5999,6 +5980,25 @@ fs_nir_emit_intrinsic(nir_to_elk_state &ntb, break; } + case nir_intrinsic_ddx_fine: + bld.emit(ELK_FS_OPCODE_DDX_FINE, retype(dest, ELK_REGISTER_TYPE_F), + retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); + break; + case nir_intrinsic_ddx: + case nir_intrinsic_ddx_coarse: + bld.emit(ELK_FS_OPCODE_DDX_COARSE, retype(dest, ELK_REGISTER_TYPE_F), + retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); + break; + case nir_intrinsic_ddy_fine: + bld.emit(ELK_FS_OPCODE_DDY_FINE, retype(dest, ELK_REGISTER_TYPE_F), + retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); + break; + case nir_intrinsic_ddy: + case nir_intrinsic_ddy_coarse: + bld.emit(ELK_FS_OPCODE_DDY_COARSE, retype(dest, ELK_REGISTER_TYPE_F), + retype(get_nir_src(ntb, instr->src[0]), ELK_REGISTER_TYPE_F)); + break; + case nir_intrinsic_reduce: { elk_fs_reg src = get_nir_src(ntb, instr->src[0]); nir_op redop = (nir_op)nir_intrinsic_reduction_op(instr);