vkd3d-shader/msl: Implement VSIR_OP_UREM.

This commit is contained in:
Henri Verbeet
2025-09-22 17:24:07 +02:00
parent 69879129f8
commit b6acac49f1
Notes: Henri Verbeet 2025-10-14 16:33:22 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1787
3 changed files with 19 additions and 16 deletions

View File

@@ -1585,6 +1585,9 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d
case VSIR_OP_IF:
msl_if(gen, ins);
break;
case VSIR_OP_UREM:
msl_binop(gen, ins, "%");
break;
case VSIR_OP_ISHL:
msl_binop(gen, ins, "<<");
break;

View File

@@ -25,8 +25,8 @@ float4 main() : SV_TARGET
[test]
uniform 0 float4 5.0 16.0 0.0 0.0
todo(msl) draw quad
probe (0, 0) rgba (5.0, 5.0, -5.0, 3.0)
todo(msl & sm>=6) draw quad
probe (0, 0) f32(5.0, 5.0, -5.0, 3.0)
[pixel shader]
uniform float2 a;
@@ -55,8 +55,8 @@ float4 main() : SV_TARGET
[test]
uniform 0 float4 42.0 5.0 0.0 0.0
todo(msl) draw quad
bug(mvk<1.2.11) probe (0, 0) rgba (2.0, -2.0, 2.0, -2.0)
todo(msl & sm>=6) draw quad
bug(mvk<1.2.11) probe (0, 0) f32(2.0, -2.0, 2.0, -2.0)
[pixel shader]
uniform float2 a;
@@ -85,8 +85,8 @@ float4 main() : SV_TARGET
[test]
uniform 0 float4 45.0 5.0 0.0 0.0
todo(msl) draw quad
bug(mvk<1.2.11) probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0)
todo(msl & sm>=6) draw quad
bug(mvk<1.2.11) probe (0, 0) f32(0.0, 0.0, 0.0, 0.0)
[pixel shader]
uniform float4 a;
@@ -117,8 +117,8 @@ float4 main() : sv_target
[test]
uniform 0 float4 45.0 5.0 50.0 10.0
uniform 4 float4 3.0 8.0 2.0 5.0
todo(msl) draw quad
probe (0, 0) rgba (9.0, 5.0, 1.0, 3.0)
todo(msl & sm>=6) draw quad
probe (0, 0) f32(9.0, 5.0, 1.0, 3.0)
[pixel shader]
float f;
@@ -133,9 +133,9 @@ float4 main() : sv_target
[test]
uniform 0 float 10.0
todo(msl) draw quad
if(sm<4) probe (0, 0) rgba(6, 6, -6, -6)
if(sm>=4) bug(mvk<1.2.11) probe (0, 0) rgba(7, 7, -7, -7)
todo(msl & sm>=6) draw quad
if(sm<4) probe (0, 0) f32(6, 6, -6, -6)
if(sm>=4) bug(mvk<1.2.11) probe (0, 0) f32(7, 7, -7, -7)
[pixel shader]
float f;

View File

@@ -67,20 +67,20 @@ void main(out uint4 dst : sv_target)
[test]
uniform 0 uint4 0 0 1 0
todo(msl) draw quad
draw quad
% Integer division by zero is undefined for shader model 6 targets.
if(sm<6) probe (0, 0) u32(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff)
uniform 0 uint4 1 1 7 1
todo(msl) draw quad
draw quad
probe (0, 0) u32(1, 7, 0, 0)
uniform 0 uint4 7 2 7 3
todo(msl) draw quad
draw quad
probe (0, 0) u32(3, 2, 1, 1)
uniform 0 uint4 7 4 7 5
todo(msl) draw quad
draw quad
probe (0, 0) u32(1, 1, 3, 2)
uniform 0 uint4 7 6 7 7
todo(msl) draw quad
draw quad
probe (0, 0) u32(1, 1, 1, 0)
% Test expression normalization and simplification.