vkd3d-shader/ir: Introduce VSIR_OP_UDIV_SIMPLE.

It is meant to compute the unsigned integer division, without
computing the modulo at the same time.
This commit is contained in:
Giovanni Mascellani
2025-06-20 18:39:07 +02:00
committed by Henri Verbeet
parent ada09d003d
commit 78e0f8412d
Notes: Henri Verbeet 2025-06-25 17:09:38 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1603
4 changed files with 10 additions and 0 deletions

View File

@@ -4536,6 +4536,9 @@ static enum vkd3d_shader_opcode map_binary_op(uint64_t code, const struct sm6_ty
is_valid = is_int && !is_bool;
break;
case BINOP_UDIV:
op = VSIR_OP_UDIV_SIMPLE;
is_valid = is_int && !is_bool;
break;
case BINOP_UREM:
op = VSIR_OP_UDIV;
is_valid = is_int && !is_bool;
@@ -4611,6 +4614,7 @@ static void sm6_parser_emit_binop(struct sm6_parser *sm6, const struct dxil_reco
case VSIR_OP_USHR:
case VSIR_OP_IDIV:
case VSIR_OP_UDIV:
case VSIR_OP_UDIV_SIMPLE:
case VSIR_OP_IREM:
silence_warning = !(flags & ~PEB_EXACT);
break;