diff --git a/libs/vkd3d-shader/msl.c b/libs/vkd3d-shader/msl.c index 47ea6ce1f..f5472bab2 100644 --- a/libs/vkd3d-shader/msl.c +++ b/libs/vkd3d-shader/msl.c @@ -1114,6 +1114,9 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d case VKD3DSIH_NEU: msl_relop(gen, ins, "!="); break; + case VKD3DSIH_INEG: + msl_unary_op(gen, ins, "-"); + break; case VKD3DSIH_ITOF: case VKD3DSIH_UTOF: msl_cast(gen, ins, "float"); diff --git a/tests/hlsl/f16tof32.shader_test b/tests/hlsl/f16tof32.shader_test index 066445345..c4572f76c 100644 --- a/tests/hlsl/f16tof32.shader_test +++ b/tests/hlsl/f16tof32.shader_test @@ -11,77 +11,77 @@ float4 main() : sv_target [test] uniform 0 uint 0x5140 -todo(msl) draw quad +draw quad probe (0, 0) rgba(42.0, 42.0, 42.0, 42.0) % zero uniform 0 uint 0x0 -todo(msl) draw quad +draw quad probe (0, 0) rgba(0.0, 0.0, 0.0, 0.0) % negative zero uniform 0 uint 0x8000 -todo(msl) draw quad +draw quad probe (0, 0) rgba(-0.0, -0.0, -0.0, -0.0) % subnormal number uniform 0 uint 0x1 -todo(msl) draw quad +draw quad probe (0, 0) rgba(5.9604645e-08, 5.9604645e-08, 5.9604645e-08, 5.9604645e-08) % subnormal number uniform 0 uint 0x2 -todo(msl) draw quad +draw quad probe (0, 0) rgba(1.1920929e-07, 1.1920929e-07, 1.1920929e-07, 1.1920929e-07) % subnormal number uniform 0 uint 0x4 -todo(msl) draw quad +draw quad probe (0, 0) rgba(2.3841858e-07, 2.3841858e-07, 2.3841858e-07, 2.3841858e-07) % subnormal number uniform 0 uint 0x8 -todo(msl) draw quad +draw quad probe (0, 0) rgba(4.7683716e-07, 4.7683716e-07, 4.7683716e-07, 4.7683716e-07) % subnormal number uniform 0 uint 0x10 -todo(msl) draw quad +draw quad probe (0, 0) rgba(9.536743e-07, 9.536743e-07, 9.536743e-07, 9.536743e-07) % subnormal number uniform 0 uint 0x20 -todo(msl) draw quad +draw quad probe (0, 0) rgba(1.9073486e-06, 1.9073486e-06, 1.9073486e-06, 1.9073486e-06) % subnormal number uniform 0 uint 0x40 -todo(msl) draw quad +draw quad probe (0, 0) rgba(3.8146973e-06, 3.8146973e-06, 3.8146973e-06, 3.8146973e-06) % subnormal number uniform 0 uint 0x80 -todo(msl) draw quad +draw quad probe (0, 0) rgba(7.6293945e-06, 7.6293945e-06, 7.6293945e-06, 7.6293945e-06) % subnormal number uniform 0 uint 0x100 -todo(msl) draw quad +draw quad probe (0, 0) rgba(1.5258789e-05, 1.5258789e-05, 1.5258789e-05, 1.5258789e-05) % subnormal number uniform 0 uint 0x200 -todo(msl) draw quad +draw quad probe (0, 0) rgba(3.0517578e-05, 3.0517578e-05, 3.0517578e-05, 3.0517578e-05) % I'd love to use rgba probes here but msvc doesn't scanf infinity :( % positive infinity uniform 0 uint 0x7c00 -todo(msl) draw quad +draw quad probe (0, 0) u32(0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000) % negative infinity uniform 0 uint 0xfc00 -todo(msl) draw quad +draw quad probe (0, 0) u32(0xff800000, 0xff800000, 0xff800000, 0xff800000) diff --git a/tests/hlsl/sign.shader_test b/tests/hlsl/sign.shader_test index c2df764ff..066f81a6b 100644 --- a/tests/hlsl/sign.shader_test +++ b/tests/hlsl/sign.shader_test @@ -8,13 +8,13 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 0.0 0.0 0.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) uniform 0 float4 -1.0 0.0 0.0 0.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (-1.0, -1.0, -1.0, -1.0) uniform 0 float4 0.0 0.0 0.0 0.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0) @@ -28,7 +28,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) @@ -43,7 +43,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 0.0 0.0 uniform 4 float4 3.0 4.0 0.0 0.0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) @@ -58,15 +58,15 @@ float4 main() : sv_target [test] if(sm<4) uniform 0 float4 1 0 0 0 if(sm>=4) uniform 0 int4 1 0 0 0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (1, 1, 1, 1) if(sm<4) uniform 0 float4 -1 0 0 0 if(sm>=4) uniform 0 int4 -1 0 0 0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (-1, -1, -1, -1) if(sm<4) uniform 0 float4 0 0 0 0 if(sm>=4) uniform 0 int4 0 0 0 0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (0, 0, 0, 0) @@ -81,7 +81,7 @@ float4 main() : sv_target [test] if(sm<4) uniform 0 float4 1 2 3 4 if(sm>=4) uniform 0 int4 1 2 3 4 -todo(msl) draw quad +draw quad probe (0, 0) rgba (1, 1, 1, 1) @@ -98,5 +98,5 @@ if(sm<4) uniform 0 float4 1 2 0 0 if(sm<4) uniform 4 float4 3 4 0 0 if(sm>=4) uniform 0 int4 1 2 0 0 if(sm>=4) uniform 4 int4 3 4 0 0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (1, 1, 1, 1)