On Fri, Aug 20, 2021 at 1:45 AM Zebediah Figura zfigura@codeweavers.com wrote:
Signed-off-by: Zebediah Figura zfigura@codeweavers.com
libs/vkd3d-shader/hlsl_sm4.c | 116 +++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+)
diff --git a/libs/vkd3d-shader/hlsl_sm4.c b/libs/vkd3d-shader/hlsl_sm4.c index 894c513f..029dc3de 100644 --- a/libs/vkd3d-shader/hlsl_sm4.c +++ b/libs/vkd3d-shader/hlsl_sm4.c @@ -549,10 +549,120 @@ static void write_sm4_rdef(struct hlsl_ctx *ctx, struct dxbc_writer *dxbc) dxbc_writer_add_section(dxbc, TAG_RDEF, buffer.data, buffer.size); }
+struct sm4_register +{
- enum vkd3d_sm4_register_type type;
- uint32_t idx[2];
- unsigned int idx_count;
- enum vkd3d_sm4_dimension dim;
+};
+struct sm4_instruction +{
- enum vkd3d_sm4_opcode opcode;
- struct
- {
struct sm4_register reg;
unsigned int writemask;
- } dst;
- struct
- {
struct sm4_register reg;
unsigned int swizzle;
- } srcs[2];
- unsigned int src_count;
- unsigned int has_dst;
+};
I think there are SM4 instructions with 2 dest registers. Just something to keep in mind for the future.