vkd3d-shader/sm4: Parse register modifiers separately from the extended operand type.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Conor McCarthy
2021-09-28 16:07:21 +02:00
committed by Alexandre Julliard
parent 859f80930d
commit cddd978be6
3 changed files with 53 additions and 32 deletions

View File

@@ -94,7 +94,12 @@
#define VKD3D_SM4_OPCODE_MASK 0xff
#define VKD3D_SM4_REGISTER_MODIFIER (0x1u << 31)
#define VKD3D_SM4_EXTENDED_OPERAND (0x1u << 31)
#define VKD3D_SM4_EXTENDED_OPERAND_TYPE_MASK 0x3fu
#define VKD3D_SM4_REGISTER_MODIFIER_SHIFT 6
#define VKD3D_SM4_REGISTER_MODIFIER_MASK (0xffu << VKD3D_SM4_REGISTER_MODIFIER_SHIFT)
#define VKD3D_SM4_ADDRESSING_SHIFT2 28
#define VKD3D_SM4_ADDRESSING_MASK2 (0x3u << VKD3D_SM4_ADDRESSING_SHIFT2)
@@ -388,12 +393,18 @@ enum vkd3d_sm4_register_type
VKD3D_SM5_RT_DEPTHOUT_LESS_EQUAL = 0x27,
};
enum vkd3d_sm4_extended_operand_type
{
VKD3D_SM4_EXTENDED_OPERAND_NONE = 0x0,
VKD3D_SM4_EXTENDED_OPERAND_MODIFIER = 0x1,
};
enum vkd3d_sm4_register_modifier
{
VKD3D_SM4_REGISTER_MODIFIER_NONE = 0x01,
VKD3D_SM4_REGISTER_MODIFIER_NEGATE = 0x41,
VKD3D_SM4_REGISTER_MODIFIER_ABS = 0x81,
VKD3D_SM4_REGISTER_MODIFIER_ABS_NEGATE = 0xc1,
VKD3D_SM4_REGISTER_MODIFIER_NONE = 0x00,
VKD3D_SM4_REGISTER_MODIFIER_NEGATE = 0x01,
VKD3D_SM4_REGISTER_MODIFIER_ABS = 0x02,
VKD3D_SM4_REGISTER_MODIFIER_ABS_NEGATE = 0x03,
};
enum vkd3d_sm4_output_primitive_type