From 47f048326749b5c2e3b19fed79cd425181e87753 Mon Sep 17 00:00:00 2001 From: Conor McCarthy Date: Tue, 23 Apr 2024 23:33:56 +1000 Subject: [PATCH] vkd3d-shader/dxil: Implement DX intrinsic WaveReadLaneFirst. --- libs/vkd3d-shader/d3d_asm.c | 1 + libs/vkd3d-shader/dxil.c | 4 ++++ libs/vkd3d-shader/vkd3d_shader_private.h | 1 + 3 files changed, 6 insertions(+) diff --git a/libs/vkd3d-shader/d3d_asm.c b/libs/vkd3d-shader/d3d_asm.c index a7609578..9abc2c4d 100644 --- a/libs/vkd3d-shader/d3d_asm.c +++ b/libs/vkd3d-shader/d3d_asm.c @@ -346,6 +346,7 @@ static const char * const shader_opcode_names[] = [VKD3DSIH_WAVE_OP_UMIN ] = "wave_op_umin", [VKD3DSIH_WAVE_PREFIX_BIT_COUNT ] = "wave_prefix_bit_count", [VKD3DSIH_WAVE_READ_LANE_AT ] = "wave_read_lane_at", + [VKD3DSIH_WAVE_READ_LANE_FIRST ] = "wave_read_lane_first", [VKD3DSIH_XOR ] = "xor", }; diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c index e6f24b4e..48b7fff3 100644 --- a/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d-shader/dxil.c @@ -454,6 +454,7 @@ enum dx_intrinsic_opcode DX_WAVE_ACTIVE_ALL_EQUAL = 115, DX_WAVE_ACTIVE_BALLOT = 116, DX_WAVE_READ_LANE_AT = 117, + DX_WAVE_READ_LANE_FIRST = 118, DX_WAVE_ACTIVE_OP = 119, DX_WAVE_ACTIVE_BIT = 120, DX_WAVE_PREFIX_OP = 121, @@ -4586,6 +4587,8 @@ static enum vkd3d_shader_opcode map_dx_unary_op(enum dx_intrinsic_opcode op) return VKD3DSIH_WAVE_ANY_TRUE; case DX_WAVE_PREFIX_BIT_COUNT: return VKD3DSIH_WAVE_PREFIX_BIT_COUNT; + case DX_WAVE_READ_LANE_FIRST: + return VKD3DSIH_WAVE_READ_LANE_FIRST; default: vkd3d_unreachable(); } @@ -6271,6 +6274,7 @@ static const struct sm6_dx_opcode_info sm6_dx_op_table[] = [DX_WAVE_PREFIX_BIT_COUNT ] = {"i", "1", sm6_parser_emit_dx_unary}, [DX_WAVE_PREFIX_OP ] = {"n", "Rcc", sm6_parser_emit_dx_wave_op}, [DX_WAVE_READ_LANE_AT ] = {"n", "Ri", sm6_parser_emit_dx_binary}, + [DX_WAVE_READ_LANE_FIRST ] = {"n", "R", sm6_parser_emit_dx_unary}, }; static bool sm6_parser_validate_operand_type(struct sm6_parser *sm6, const struct sm6_value *value, char info_type, diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index d2a49361..81bc95c2 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -547,6 +547,7 @@ enum vkd3d_shader_opcode VKD3DSIH_WAVE_OP_UMIN, VKD3DSIH_WAVE_PREFIX_BIT_COUNT, VKD3DSIH_WAVE_READ_LANE_AT, + VKD3DSIH_WAVE_READ_LANE_FIRST, VKD3DSIH_XOR, VKD3DSIH_INVALID,