From d1da5436f4535a46a7936f823b57a4d4e831a7ef Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani <gmascellani@codeweavers.com> Date: Fri, 14 Oct 2022 15:10:13 +0200 Subject: [PATCH] tests: Test sign rules for integer division and modulus. --- tests/arithmetic-int-uniform.shader_test | 60 ++++++++++++++++++++++++ tests/arithmetic-int.shader_test | 52 ++++++++++++++++++++ 2 files changed, 112 insertions(+) diff --git a/tests/arithmetic-int-uniform.shader_test b/tests/arithmetic-int-uniform.shader_test index cac2a234b0..bd35f5660f 100644 --- a/tests/arithmetic-int-uniform.shader_test +++ b/tests/arithmetic-int-uniform.shader_test @@ -28,6 +28,66 @@ uniform 0 float4 5.0 16.0 0.0 0.0 draw quad probe all rgba (5.0, 5.0, -5.0, 3.0) +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +uniform 0 float4 42.0 5.0 0.0 0.0 +draw quad +probe all rgba (8.0, -8.0, -8.0, 8.0) + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +uniform 0 float4 42.0 5.0 0.0 0.0 +draw quad +probe all rgba (2.0, -2.0, 2.0, -2.0) + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +uniform 0 float4 45.0 5.0 0.0 0.0 +draw quad +probe all rgba (9.0, -9.0, -9.0, 9.0) + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +uniform 0 float4 45.0 5.0 0.0 0.0 +draw quad +probe all rgba (0.0, 0.0, 0.0, 0.0) + [pixel shader] uniform float4 a; diff --git a/tests/arithmetic-int.shader_test b/tests/arithmetic-int.shader_test index 8b6d6d7cf5..f4c9890418 100644 --- a/tests/arithmetic-int.shader_test +++ b/tests/arithmetic-int.shader_test @@ -24,6 +24,58 @@ float4 main() : SV_TARGET draw quad probe all rgba (5.0, 5.0, -5.0, 3.0) +[pixel shader] +float4 main() : SV_TARGET +{ + int x = 42; + int y = 5; + + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +draw quad +probe all rgba (8.0, -8.0, -8.0, 8.0) + +[pixel shader] +float4 main() : SV_TARGET +{ + int x = 42; + int y = 5; + + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +draw quad +probe all rgba (2.0, -2.0, 2.0, -2.0) + +[pixel shader] +float4 main() : SV_TARGET +{ + int x = 45; + int y = 5; + + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +draw quad +probe all rgba (9.0, -9.0, -9.0, 9.0) + +[pixel shader] +float4 main() : SV_TARGET +{ + int x = 45; + int y = 5; + + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +draw quad +probe all rgba (0.0, 0.0, 0.0, 0.0) + [pixel shader fail] float4 main() : SV_TARGET { -- GitLab