Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl_codegen.c:
}
+static bool lower_int_dot(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void *context) +{
- struct hlsl_ir_node *arg1, *arg2, *mult, *comps[4] = {0}, *res;
- struct hlsl_type *type = instr->data_type;
- struct hlsl_ir_expr *expr;
- unsigned int i, dimx;
- if (instr->type != HLSL_IR_EXPR)
return false;
- expr = hlsl_ir_expr(instr);
- if (expr->op != HLSL_OP2_DOT)
return false;
- if (type->base_type == HLSL_TYPE_FLOAT)
Maybe you should skip `HALF` too, so that the dot product operation is emitted?