From 521efaeb7bc8b85306064387ce55475b7b1f5809 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 22 Sep 2025 17:39:01 +0200 Subject: [PATCH] vkd3d-shader/msl: Implement VSIR_OP_ATAN. --- libs/vkd3d-shader/msl.c | 3 ++ tests/hlsl/inverse-trig.shader_test | 80 ++++++++++++++--------------- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/libs/vkd3d-shader/msl.c b/libs/vkd3d-shader/msl.c index 9444334b6..e63585361 100644 --- a/libs/vkd3d-shader/msl.c +++ b/libs/vkd3d-shader/msl.c @@ -1473,6 +1473,9 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d case VSIR_OP_ASIN: msl_intrinsic(gen, ins, "asin"); break; + case VSIR_OP_ATAN: + msl_intrinsic(gen, ins, "atan"); + break; case VSIR_OP_BREAK: msl_break(gen); break; diff --git a/tests/hlsl/inverse-trig.shader_test b/tests/hlsl/inverse-trig.shader_test index dd05cc0d0..1314fa05f 100644 --- a/tests/hlsl/inverse-trig.shader_test +++ b/tests/hlsl/inverse-trig.shader_test @@ -101,24 +101,24 @@ float4 main() : sv_target [test] uniform 0 float4 -1.0 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (-0.785409629, 0.0, 0.0, 0.0) 512 +draw quad +probe (0, 0) f32(-0.785409629, 0.0, 0.0, 0.0) 512 uniform 0 float4 -0.5 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (-0.4636476, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(-0.4636476, 0.0, 0.0, 0.0) 256 uniform 0 float4 0.0 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(0.0, 0.0, 0.0, 0.0) 256 uniform 0 float4 0.5 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (0.4636476, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(0.4636476, 0.0, 0.0, 0.0) 256 uniform 0 float4 1.0 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (0.785409629, 0.0, 0.0, 0.0) 512 +draw quad +probe (0, 0) f32(0.785409629, 0.0, 0.0, 0.0) 512 [pixel shader] uniform float4 a; @@ -132,64 +132,64 @@ float4 main() : sv_target [test] % Non-degenerate cases uniform 0 float4 1.0 1.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (0.785385, 0.0, 0.0, 0.0) 512 +draw quad +probe (0, 0) f32(0.785385, 0.0, 0.0, 0.0) 512 uniform 0 float4 5.0 -5.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (2.356194, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(2.356194, 0.0, 0.0, 0.0) 256 uniform 0 float4 -3.0 -3.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (-2.356194, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(-2.356194, 0.0, 0.0, 0.0) 256 uniform 0 float4 1.0 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (1.570796, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(1.570796, 0.0, 0.0, 0.0) 256 uniform 0 float4 -1.0 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (-1.570796, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(-1.570796, 0.0, 0.0, 0.0) 256 uniform 0 float4 0.0 1.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(0.0, 0.0, 0.0, 0.0) 256 uniform 0 float4 0.0 -1.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (3.1415927, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(3.1415927, 0.0, 0.0, 0.0) 256 % Degenerate cases uniform 0 float4 0.00001 0.00002 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (0.463647, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(0.463647, 0.0, 0.0, 0.0) 256 uniform 0 float4 0.00001 -0.00002 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (2.677945, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(2.677945, 0.0, 0.0, 0.0) 256 uniform 0 float4 -0.00001 100000.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (-0.000000000099986595, 0.0, 0.0, 0.0) 2048 +draw quad +probe (0, 0) f32(-0.000000000099986595, 0.0, 0.0, 0.0) 2048 uniform 0 float4 10000000.0 0.00000001 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (1.570796, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(1.570796, 0.0, 0.0, 0.0) 256 % Negative zero behavior should be to treat it the % same as normal zero. uniform 0 float4 1000000000.0 0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (1.570796, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(1.570796, 0.0, 0.0, 0.0) 256 uniform 0 float4 1000000000.0 -0.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (1.570796, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(1.570796, 0.0, 0.0, 0.0) 256 uniform 0 float4 0.0 -1.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (3.1415927, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(3.1415927, 0.0, 0.0, 0.0) 256 uniform 0 float4 -0.0 -1.0 0.0 0.0 -todo(msl & sm>=6) draw quad -probe (0, 0) rgba (3.1415927, 0.0, 0.0, 0.0) 256 +draw quad +probe (0, 0) f32(3.1415927, 0.0, 0.0, 0.0) 256