summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJay Kwak <82421531+jkwak-work@users.noreply.github.com>2024-05-02 11:56:13 -0700
committerGitHub <noreply@github.com>2024-05-02 11:56:13 -0700
commitf7d54af67e026feb2546af1deaf2513a36f8516e (patch)
treec751573fbfceb114eeac6217bb3ccc4c13f19ef2 /tests
parent679a457940027420817a85070b3fdb9bfc0cca2e (diff)
Fix fmod behavior targetting GLSL and SPIR-V (#4080)
* Fix fmod behavior targetting GLSL and SPIR-V The default implementation of fmod was doing "Modulo" operation when "fmod" in HLSL should do "remainder" operation. * Fix a mistake in `fmod` GLSL target When using __intrinsic_asm, the "if" logic wasn't emitted. "__intrinsic_asm" had to be called from a new function and `fmod` had to call it. Alternatively, I am using `operator?()` to workaround. A similar modification is made to `roundEven()` hoping for a better performance.
Diffstat (limited to 'tests')
-rw-r--r--tests/cross-compile/fmod.slang3
-rw-r--r--tests/glsl-intrinsic/intrinsic-basic.slang25
2 files changed, 12 insertions, 16 deletions
diff --git a/tests/cross-compile/fmod.slang b/tests/cross-compile/fmod.slang
index 6efff35b3..16ecf072a 100644
--- a/tests/cross-compile/fmod.slang
+++ b/tests/cross-compile/fmod.slang
@@ -4,7 +4,8 @@
// expected output on Vulkan/GLSL.
//TEST(compute):COMPARE_COMPUTE:-dx11 -compute -shaderobj
-//TEST(compute):COMPARE_COMPUTE:-vk -compute -shaderobj
+//TEST(compute):COMPARE_COMPUTE:-vk -compute -shaderobj -emit-spirv-via-glsl
+//TEST(compute):COMPARE_COMPUTE:-vk -compute -shaderobj -emit-spirv-directly
//TEST_INPUT:cbuffer(data=[4 0 0 0]):name=C
cbuffer C
diff --git a/tests/glsl-intrinsic/intrinsic-basic.slang b/tests/glsl-intrinsic/intrinsic-basic.slang
index 42d416c1e..fbe29a000 100644
--- a/tests/glsl-intrinsic/intrinsic-basic.slang
+++ b/tests/glsl-intrinsic/intrinsic-basic.slang
@@ -207,12 +207,10 @@ bool Test_ScalarType()
&& genFType(0) == round(genFType(zero))
&& genDType(0) == round(genDType(zero))
-#if 0
- // C-HECK_GLSL-COUNT-2: roundEven(
- // C-HECK_SPIR-COUNT-2: RoundEven{{ }}
+ // CHECK_GLSL-COUNT-2: roundEven(
+ // CHECK_SPIR-COUNT-2: RoundEven{{ }}
&& genFType(0) == roundEven(genFType(zero))
&& genDType(0) == roundEven(genDType(zero))
-#endif
// CHECK_GLSL-COUNT-2: ceil(
// CHECK_SPIR-COUNT-2: Ceil{{ }}
@@ -224,11 +222,10 @@ bool Test_ScalarType()
&& genFType(0) == fract(genFType(zero))
&& genDType(0) == fract(genDType(zero))
-#if 0
- // C-HECK_GLSL-COUNT-2: mod(
+ // CHECK_GLSL-COUNT-2: mod(
+ // CHECK_SPIR-COUNT-2: Floor{{ }}
&& genFType(0) == mod(genFType(zero), genFType(one))
&& genDType(0) == mod(genDType(zero), genDType(one))
-#endif
// CHECK_GLSL-COUNT-2: modf(
// CHECK_SPIR-COUNT-2: Modf{{ }}
@@ -733,13 +730,11 @@ bool Test_VectorType()
&& genFType(0) == round(genFType(zero))
&& genDType(0) == round(genDType(zero))
-#if 0
- // C-HECK_GLSL-COUNT-2: roundEven(
- // C-HECK_SPIR-COUNT-2: RoundEven{{ }}
- // C-HECK_SPIR-NOT: RoundEven{{ }}
+ // CHECK_GLSL-COUNT-2: roundEven(
+ // CHECK_SPIR-COUNT-2: RoundEven{{ }}
+ // CHECK_SPIR-NOT: RoundEven{{ }}
&& genFType(0) == roundEven(genFType(zero))
&& genDType(0) == roundEven(genDType(zero))
-#endif
// CHECK_GLSL-COUNT-2: ceil(
// CHECK_SPIR-COUNT-2: Ceil{{ }}
@@ -753,13 +748,13 @@ bool Test_VectorType()
&& genFType(0) == fract(genFType(zero))
&& genDType(0) == fract(genDType(zero))
-#if 0
- // C-HECK_GLSL-COUNT-4: mod(
+ // CHECK_GLSL-COUNT-4: mod(
+ // CHECK_SPIR-COUNT-4: Floor{{ }}
+ // CHECK_SPIR-NOT: Floor{{ }}
&& genFType(0) == mod(genFType(zero), float(one))
&& genFType(0) == mod(genFType(zero), genFType(one))
&& genDType(0) == mod(genDType(zero), double(one))
&& genDType(0) == mod(genDType(zero), genDType(one))
-#endif
// CHECK_GLSL-COUNT-2: modf(
// CHECK_SPIR-COUNT-2: Modf{{ }}