From 82dfc582393e49755645cda1555f4421f3f58a97 Mon Sep 17 00:00:00 2001 From: kmpeng Date: Wed, 16 Jul 2025 11:18:29 -0700 Subject: [PATCH 1/6] WIP adduint64 tests --- test/Feature/HLSLLib/adduint64.test | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 test/Feature/HLSLLib/adduint64.test diff --git a/test/Feature/HLSLLib/adduint64.test b/test/Feature/HLSLLib/adduint64.test new file mode 100644 index 00000000..0f9d34e1 --- /dev/null +++ b/test/Feature/HLSLLib/adduint64.test @@ -0,0 +1,64 @@ +#--- source.hlsl + +StructuredBuffer In : register(t0); +RWStructuredBuffer Out : register(u1); + +[numthreads(1,1,1)] +void main() { + Out[0].xy = AddUint64(In[0].xy, In[0].xy); + Out[0].zw = AddUint64(In[0].zw, In[0].zw); + Out[1].xy = AddUint64(In[1].xy, In[1].xy); + Out[1].zw = AddUint64(In[1].zw, In[1].zw); + Out[2].xy = AddUint64(In[2].xy, In[2].xy); + Out[2].zw = AddUint64(In[2].zw, In[2].zw); +} + +//--- pipeline.yaml + +--- +Shaders: + - Stage: Compute + Entry: main + DispatchSize: [1, 1, 1] +Buffers: + - Name: In + Format: Float32 + Stride: 16 + Data: [ 1, 0, 1, 256, 10000, 10001, 0x80000000, 1, 0x7fffffff, 0x7fffffff, 0xffffffff, 0x7fffffff ] + - Name: Out + Format: Float32 + Stride: 16 + ZeroInitSize: 48 + - Name: ExpectedOut # The result we expect + Format: Float32 + Stride: 16 + Data: [ 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff ] +Results: + - Result: Test1 + Rule: BufferFloatEpsilon + Epsilon: 0 + Actual: Out + Expected: ExpectedOut +DescriptorSets: + - Resources: + - Name: In + Kind: StructuredBuffer + DirectXBinding: + Register: 0 + Space: 0 + VulkanBinding: + Binding: 0 + - Name: Out + Kind: RWStructuredBuffer + DirectXBinding: + Register: 1 + Space: 0 + VulkanBinding: + Binding: 1 +... +#--- end + +# UNSUPPORTED: Clang-Vulkan +# RUN: split-file %s %t +# RUN: %dxc_target -T cs_6_5 -Fo %t.o %t/source.hlsl +# RUN: %offloader %t/pipeline.yaml %t.o From 9c10b3055159db9da5127bbcfeb9c78b982275b9 Mon Sep 17 00:00:00 2001 From: kmpeng Date: Wed, 16 Jul 2025 16:17:45 -0700 Subject: [PATCH 2/6] WIP - add vec4 and constant folding tests, vec4 currently failing --- test/Feature/HLSLLib/adduint64.test | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/test/Feature/HLSLLib/adduint64.test b/test/Feature/HLSLLib/adduint64.test index 0f9d34e1..384d89d7 100644 --- a/test/Feature/HLSLLib/adduint64.test +++ b/test/Feature/HLSLLib/adduint64.test @@ -1,7 +1,7 @@ #--- source.hlsl -StructuredBuffer In : register(t0); -RWStructuredBuffer Out : register(u1); +StructuredBuffer In : register(t0); +RWStructuredBuffer Out : register(u1); [numthreads(1,1,1)] void main() { @@ -11,6 +11,8 @@ void main() { Out[1].zw = AddUint64(In[1].zw, In[1].zw); Out[2].xy = AddUint64(In[2].xy, In[2].xy); Out[2].zw = AddUint64(In[2].zw, In[2].zw); + Out[3] = AddUint64(In[0], In[0]); // vec4 test + Out[4].xy = AddUint64(uint2(1,2), uint2(3,4)); } //--- pipeline.yaml @@ -22,21 +24,20 @@ Shaders: DispatchSize: [1, 1, 1] Buffers: - Name: In - Format: Float32 + Format: UInt32 Stride: 16 Data: [ 1, 0, 1, 256, 10000, 10001, 0x80000000, 1, 0x7fffffff, 0x7fffffff, 0xffffffff, 0x7fffffff ] - Name: Out - Format: Float32 + Format: UInt32 Stride: 16 - ZeroInitSize: 48 + ZeroInitSize: 80 - Name: ExpectedOut # The result we expect - Format: Float32 + Format: UInt32 Stride: 16 - Data: [ 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff ] + Data: [ 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff, 2, 0, 2, 512, 4, 6, 0, 0 ] Results: - Result: Test1 - Rule: BufferFloatEpsilon - Epsilon: 0 + Rule: BufferExact Actual: Out Expected: ExpectedOut DescriptorSets: From c2b5b7807c29a3a9279965996e492d86ba0fdf17 Mon Sep 17 00:00:00 2001 From: kmpeng Date: Thu, 17 Jul 2025 15:05:50 -0700 Subject: [PATCH 3/6] finish tests --- test/Feature/HLSLLib/adduint64.test | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/test/Feature/HLSLLib/adduint64.test b/test/Feature/HLSLLib/adduint64.test index 384d89d7..a1a95624 100644 --- a/test/Feature/HLSLLib/adduint64.test +++ b/test/Feature/HLSLLib/adduint64.test @@ -5,14 +5,15 @@ RWStructuredBuffer Out : register(u1); [numthreads(1,1,1)] void main() { - Out[0].xy = AddUint64(In[0].xy, In[0].xy); - Out[0].zw = AddUint64(In[0].zw, In[0].zw); - Out[1].xy = AddUint64(In[1].xy, In[1].xy); - Out[1].zw = AddUint64(In[1].zw, In[1].zw); - Out[2].xy = AddUint64(In[2].xy, In[2].xy); - Out[2].zw = AddUint64(In[2].zw, In[2].zw); - Out[3] = AddUint64(In[0], In[0]); // vec4 test - Out[4].xy = AddUint64(uint2(1,2), uint2(3,4)); + // vec4 + Out[0] = AddUint64(In[0], In[0]); + Out[1] = AddUint64(uint4(1, 0, 1, 256), uint4(1, 0, 1, 256)); + + // vec2 + uint4 Tmp = {AddUint64(In[1].xy, In[1].xy), AddUint64(In[1].zw, In[1].zw)}; + Out[2] = Tmp; + uint4 Tmp2 = {AddUint64(In[2].xy, In[2].xy), AddUint64(In[2].zw, In[2].zw)}; + Out[3] = Tmp2; } //--- pipeline.yaml @@ -27,14 +28,16 @@ Buffers: Format: UInt32 Stride: 16 Data: [ 1, 0, 1, 256, 10000, 10001, 0x80000000, 1, 0x7fffffff, 0x7fffffff, 0xffffffff, 0x7fffffff ] + # 1, 0, 1, 256, 10000, 10001, 2147483648, 1, 2147483647, 2147483647, 4294967295, 2147483647 - Name: Out Format: UInt32 Stride: 16 - ZeroInitSize: 80 + ZeroInitSize: 64 - Name: ExpectedOut # The result we expect Format: UInt32 Stride: 16 - Data: [ 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff, 2, 0, 2, 512, 4, 6, 0, 0 ] + Data: [ 2, 0, 2, 512, 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff ] + # 2, 0, 2, 512, 2, 0, 2, 512, 20000, 20002, 0, 3, 4294967294, 4294967294, 4294967294, 4294967295 Results: - Result: Test1 Rule: BufferExact @@ -59,7 +62,9 @@ DescriptorSets: ... #--- end -# UNSUPPORTED: Clang-Vulkan +# https://github.com/llvm/llvm-project/issues/149345 +# XFAIL: Clang-DirectX + # RUN: split-file %s %t # RUN: %dxc_target -T cs_6_5 -Fo %t.o %t/source.hlsl # RUN: %offloader %t/pipeline.yaml %t.o From 24a74a430b3b7251c255ac7673dba0c28282537b Mon Sep 17 00:00:00 2001 From: kmpeng Date: Mon, 21 Jul 2025 15:31:19 -0700 Subject: [PATCH 4/6] add overflow test, xfail failing tests --- test/Feature/HLSLLib/adduint64.test | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/test/Feature/HLSLLib/adduint64.test b/test/Feature/HLSLLib/adduint64.test index a1a95624..a9797cf1 100644 --- a/test/Feature/HLSLLib/adduint64.test +++ b/test/Feature/HLSLLib/adduint64.test @@ -7,13 +7,13 @@ RWStructuredBuffer Out : register(u1); void main() { // vec4 Out[0] = AddUint64(In[0], In[0]); - Out[1] = AddUint64(uint4(1, 0, 1, 256), uint4(1, 0, 1, 256)); // vec2 uint4 Tmp = {AddUint64(In[1].xy, In[1].xy), AddUint64(In[1].zw, In[1].zw)}; - Out[2] = Tmp; + Out[1] = Tmp; uint4 Tmp2 = {AddUint64(In[2].xy, In[2].xy), AddUint64(In[2].zw, In[2].zw)}; - Out[3] = Tmp2; + Out[2] = Tmp2; + Out[3].xy = AddUint64(uint2(0xffffffff, 0xffffffff), uint2(1, 0)); // overflow test } //--- pipeline.yaml @@ -36,8 +36,8 @@ Buffers: - Name: ExpectedOut # The result we expect Format: UInt32 Stride: 16 - Data: [ 2, 0, 2, 512, 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff ] - # 2, 0, 2, 512, 2, 0, 2, 512, 20000, 20002, 0, 3, 4294967294, 4294967294, 4294967294, 4294967295 + Data: [ 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff, 0, 0, 0, 0 ] # Last two are filler + # 2, 0, 2, 512, 20000, 20002, 0, 3, 4294967294, 4294967294, 4294967294, 4294967295, 0, 0, 0, 0 Results: - Result: Test1 Rule: BufferExact @@ -64,6 +64,15 @@ DescriptorSets: # https://github.com/llvm/llvm-project/issues/149345 # XFAIL: Clang-DirectX +# XFAIL: Clang-Metal + +# https://github.com/llvm/llvm-project/issues/149919 +# XFAIL: Clang-Vulkan + +# https://github.com/llvm/offload-test-suite/issues/292 +# XFAIL: DXC-Metal + +# UNSUPPORTED: DXC-Vulkan # RUN: split-file %s %t # RUN: %dxc_target -T cs_6_5 -Fo %t.o %t/source.hlsl From 62fa6ff5e30b9932146450389d257faa9e49548b Mon Sep 17 00:00:00 2001 From: kmpeng Date: Fri, 8 Aug 2025 17:20:58 -0700 Subject: [PATCH 5/6] remove xfail, edit constant folding test to avoid different bug (filed) --- test/Feature/HLSLLib/adduint64.test | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/test/Feature/HLSLLib/adduint64.test b/test/Feature/HLSLLib/adduint64.test index a9797cf1..86bf5e71 100644 --- a/test/Feature/HLSLLib/adduint64.test +++ b/test/Feature/HLSLLib/adduint64.test @@ -13,7 +13,8 @@ void main() { Out[1] = Tmp; uint4 Tmp2 = {AddUint64(In[2].xy, In[2].xy), AddUint64(In[2].zw, In[2].zw)}; Out[2] = Tmp2; - Out[3].xy = AddUint64(uint2(0xffffffff, 0xffffffff), uint2(1, 0)); // overflow test + uint4 Tmp3 = {AddUint64(uint2(0xffffffff, 0xffffffff), uint2(1, 0)), AddUint64(uint2(1, 256), uint2(1, 256))}; + Out[3] = Tmp3; } //--- pipeline.yaml @@ -36,8 +37,8 @@ Buffers: - Name: ExpectedOut # The result we expect Format: UInt32 Stride: 16 - Data: [ 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff, 0, 0, 0, 0 ] # Last two are filler - # 2, 0, 2, 512, 20000, 20002, 0, 3, 4294967294, 4294967294, 4294967294, 4294967295, 0, 0, 0, 0 + Data: [ 2, 0, 2, 512, 20000, 20002, 0, 3, 0xfffffffe, 0xfffffffe, 0xfffffffe, 0xffffffff, 0, 0, 2, 512 ] + # 2, 0, 2, 512, 20000, 20002, 0, 3, 4294967294, 4294967294, 4294967294, 4294967295, 0, 0, 2, 512 Results: - Result: Test1 Rule: BufferExact @@ -62,10 +63,6 @@ DescriptorSets: ... #--- end -# https://github.com/llvm/llvm-project/issues/149345 -# XFAIL: Clang-DirectX -# XFAIL: Clang-Metal - # https://github.com/llvm/llvm-project/issues/149919 # XFAIL: Clang-Vulkan From 3028493151c4c0a3fd9296493535f9d832523df8 Mon Sep 17 00:00:00 2001 From: kmpeng Date: Mon, 11 Aug 2025 11:09:17 -0700 Subject: [PATCH 6/6] xfail clang-metal, remove clang-vulkan xfail --- test/Feature/HLSLLib/adduint64.test | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/Feature/HLSLLib/adduint64.test b/test/Feature/HLSLLib/adduint64.test index 86bf5e71..d0b4e908 100644 --- a/test/Feature/HLSLLib/adduint64.test +++ b/test/Feature/HLSLLib/adduint64.test @@ -63,12 +63,12 @@ DescriptorSets: ... #--- end -# https://github.com/llvm/llvm-project/issues/149919 -# XFAIL: Clang-Vulkan - # https://github.com/llvm/offload-test-suite/issues/292 # XFAIL: DXC-Metal +https://github.com/llvm/offload-test-suite/issues/344 +# XFAIL: Clang-Metal + # UNSUPPORTED: DXC-Vulkan # RUN: split-file %s %t