From 893362010955ea3f4393489e0b9b01fb2805ab00 Mon Sep 17 00:00:00 2001 From: Francisco Casas Date: Fri, 31 May 2024 20:21:57 -0400 Subject: [PATCH] vkd3d-shader/hlsl: Save REINTERPRET hlsl_ir_exprs as vsir_program MOVs for SM1. --- libs/vkd3d-shader/d3dbc.c | 7 ------- libs/vkd3d-shader/hlsl_codegen.c | 4 ++++ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/libs/vkd3d-shader/d3dbc.c b/libs/vkd3d-shader/d3dbc.c index df831271..455a2531 100644 --- a/libs/vkd3d-shader/d3dbc.c +++ b/libs/vkd3d-shader/d3dbc.c @@ -2405,17 +2405,10 @@ static void d3dbc_write_semantic_dcls(struct d3dbc_compiler *d3dbc) static void d3dbc_write_expr(struct d3dbc_compiler *d3dbc, const struct hlsl_ir_node *instr) { struct hlsl_ir_expr *expr = hlsl_ir_expr(instr); - struct hlsl_ir_node *arg1 = expr->operands[0].node; struct hlsl_ctx *ctx = d3dbc->ctx; VKD3D_ASSERT(instr->reg.allocated); - if (expr->op == HLSL_OP1_REINTERPRET) - { - d3dbc_write_unary_op(d3dbc, VKD3D_SM1_OP_MOV, &instr->reg, &arg1->reg, 0, 0); - return; - } - if (expr->op == HLSL_OP1_CAST) { d3dbc_write_cast(d3dbc, instr); diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index 41a8d024..09225aac 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -6722,6 +6722,10 @@ static bool sm1_generate_vsir_instr_expr(struct hlsl_ctx *ctx, struct vsir_progr sm1_generate_vsir_instr_expr_per_component_instr_op(ctx, program, expr, VKD3DSIH_RCP); break; + case HLSL_OP1_REINTERPRET: + sm1_generate_vsir_instr_expr_single_instr_op(ctx, program, expr, VKD3DSIH_MOV, 0, 0, true); + break; + case HLSL_OP1_RSQ: sm1_generate_vsir_instr_expr_per_component_instr_op(ctx, program, expr, VKD3DSIH_RSQ); break;