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