Skip to content

Commit ba7565f

Browse files
authored
Add test for asuint (#296)
Adds a test for 32 bit version of asuint, which does a bit cast Adds a test for splitdouble version of asuint. Closes #174
1 parent 1a9166e commit ba7565f

File tree

2 files changed

+226
-0
lines changed

2 files changed

+226
-0
lines changed

test/Feature/HLSLLib/asuint.32.test

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
#--- source.hlsl
2+
StructuredBuffer<uint4> In0 : register(t0);
3+
StructuredBuffer<int4> In1 : register(t1);
4+
StructuredBuffer<float4> In2 : register(t2);
5+
6+
RWStructuredBuffer<uint4> Out0 : register(u3);
7+
RWStructuredBuffer<uint4> Out1 : register(u4);
8+
RWStructuredBuffer<uint4> Out2 : register(u5);
9+
10+
[numthreads(1,1,1)]
11+
void main() {
12+
13+
Out0[0] = asuint(In0[0]);
14+
Out0[1] = uint4(asuint(In0[1].xyz), asuint(In0[1].w));
15+
Out0[2] = uint4(asuint(In0[2].xy), asuint(In0[2].zw));
16+
Out0[3] = asuint(uint4(100, 0, 4294967295, 75757575));
17+
18+
Out1[0] = asuint(In1[0]);
19+
Out1[1] = uint4(asuint(In1[1].xyz), asuint(In1[1].w));
20+
Out1[2] = uint4(asuint(In1[2].xy), asuint(In1[2].zw));
21+
Out1[3] = asuint(int4(-1, 0, 2147483647, -2147483648));
22+
23+
Out2[0] = asuint(In2[0]);
24+
Out2[1] = uint4(asuint(In2[1].xyz), asuint(In2[1].w));
25+
Out2[2] = uint4(asuint(In2[2].xy), asuint(In2[2].zw));
26+
Out2[3] = asuint(float4(10, 0, 5.57, 111.111));
27+
}
28+
//--- pipeline.yaml
29+
30+
---
31+
Shaders:
32+
- Stage: Compute
33+
Entry: main
34+
DispatchSize: [1, 1, 1]
35+
Buffers:
36+
- Name: In0
37+
Format: UInt32
38+
Stride: 16
39+
Data: [100, 0, 4294967295, 75757575, 10, 20, 30, 40 , 50, 60, 70, 80]
40+
- Name: In1
41+
Format: Int32
42+
Stride: 16
43+
Data: [-1, 0, 2147483647, -2147483648, -10, -20, -30, -40, -50, 60, 70, 80]
44+
- Name: In2
45+
Format: Float32
46+
Stride: 16
47+
Data: [10, 0, 5.57, 111.111, 20.5, 30.6, 40.7, 50.8, -60.9, -0.000001, -0.0002, -888.888]
48+
- Name: Out0
49+
Format: UInt32
50+
Stride: 16
51+
ZeroInitSize: 64
52+
- Name: ExpectedOut0
53+
Format: UInt32
54+
Stride: 16
55+
Data: [100, 0, 4294967295, 75757575, 10, 20, 30, 40 , 50, 60, 70, 80, 100, 0, 4294967295, 75757575]
56+
- Name: Out1
57+
Format: UInt32
58+
Stride: 16
59+
ZeroInitSize: 64
60+
- Name: ExpectedOut1
61+
Format: UInt32
62+
Stride: 16
63+
Data: [ 4294967295, 0, 2147483647, 2147483648, 4294967286, 4294967276, 4294967266, 4294967256, 4294967246, 60, 70, 80, 4294967295, 0, 2147483647, 2147483648]
64+
- Name: Out2
65+
Format: UInt32
66+
Stride: 16
67+
ZeroInitSize: 64
68+
- Name: ExpectedOut2
69+
Format: UInt32
70+
Stride: 16
71+
Data: [ 1092616192, 0, 1085422961, 1121859797, 1101266944, 1106562253, 1109576909, 1112224563, 3262355866, 3045472189, 3109140247, 3294509269, 1092616192, 0, 1085422961, 1121859797 ]
72+
Results:
73+
- Result: Test0
74+
Rule: BufferExact
75+
Actual: Out0
76+
Expected: ExpectedOut0
77+
- Result: Test1
78+
Rule: BufferExact
79+
Actual: Out1
80+
Expected: ExpectedOut1
81+
- Result: Test2
82+
Rule: BufferExact
83+
Actual: Out2
84+
Expected: ExpectedOut2
85+
DescriptorSets:
86+
- Resources:
87+
- Name: In0
88+
Kind: StructuredBuffer
89+
DirectXBinding:
90+
Register: 0
91+
Space: 0
92+
VulkanBinding:
93+
Binding: 0
94+
- Name: In1
95+
Kind: StructuredBuffer
96+
DirectXBinding:
97+
Register: 1
98+
Space: 0
99+
VulkanBinding:
100+
Binding: 1
101+
- Name: In2
102+
Kind: StructuredBuffer
103+
DirectXBinding:
104+
Register: 2
105+
Space: 0
106+
VulkanBinding:
107+
Binding: 2
108+
- Name: Out0
109+
Kind: RWStructuredBuffer
110+
DirectXBinding:
111+
Register: 3
112+
Space: 0
113+
VulkanBinding:
114+
Binding: 3
115+
- Name: Out1
116+
Kind: RWStructuredBuffer
117+
DirectXBinding:
118+
Register: 4
119+
Space: 0
120+
VulkanBinding:
121+
Binding: 4
122+
- Name: Out2
123+
Kind: RWStructuredBuffer
124+
DirectXBinding:
125+
Register: 5
126+
Space: 0
127+
VulkanBinding:
128+
Binding: 5
129+
#--- end
130+
131+
# RUN: split-file %s %t
132+
# RUN: %dxc_target -T cs_6_5 -Fo %t.o %t/source.hlsl
133+
# RUN: %offloader %t/pipeline.yaml %t.o

test/Feature/HLSLLib/asuint.64.test

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#--- source.hlsl
2+
StructuredBuffer<double4> In0 : register(t0);
3+
RWStructuredBuffer<uint4> Lows : register(u1);
4+
RWStructuredBuffer<uint4> Highs : register(u2);
5+
6+
[numthreads(1,1,1)]
7+
void main() {
8+
9+
asuint(In0[0], Lows[0], Highs[0]);
10+
uint4 Tmp0;
11+
uint4 Tmp1;
12+
asuint(In0[1].xyz, Tmp0.xyz, Tmp1.xyz);
13+
asuint(In0[1].w, Tmp0.w, Tmp1.w);
14+
Lows[1] = Tmp0;
15+
Highs[1]= Tmp1;
16+
asuint(In0[2].xy, Tmp0.xy, Tmp1.xy);
17+
asuint(In0[2].zw, Tmp0.zw, Tmp1.zw);
18+
Lows[2] = Tmp0;
19+
Highs[2] = Tmp1;
20+
asuint(double4(10, 0, 5.57, 111.111), Lows[3], Highs[3]);
21+
}
22+
//--- pipeline.yaml
23+
24+
---
25+
Shaders:
26+
- Stage: Compute
27+
Entry: main
28+
DispatchSize: [1, 1, 1]
29+
Buffers:
30+
- Name: In0
31+
Format: Float64
32+
Stride: 32
33+
Data: [10, 0, 5.57, 111.111, 20.5, 30.6, 40.7, 50.8, -60.9, -0.000001, -0.0002, -888.888]
34+
- Name: Lows
35+
Format: UInt32
36+
Stride: 16
37+
ZeroInitSize: 64
38+
- Name: ExpectedLows
39+
Format: UInt32
40+
Stride: 16
41+
Data: [ 0, 0, 343597384, 2680059593, 0, 2576980378, 2576980378, 1717986918, 858993459, 2696277389, 3944497965, 2680059593, 0, 0, 536870912, 2684354560 ]
42+
- Name: Highs
43+
Format: UInt32
44+
Stride: 16
45+
ZeroInitSize: 64
46+
- Name: ExpectedHighs
47+
Format: UInt32
48+
Stride: 16
49+
Data: [ 1076101120, 0, 1075201966, 1079756570, 1077182464, 1077844377, 1078221209, 1078552166, 3226366771, 3199256311, 3207214818, 3230385946, 1076101120, 0, 1075201966, 1079756570 ]
50+
Results:
51+
- Result: Test0
52+
Rule: BufferExact
53+
Actual: Lows
54+
Expected: ExpectedLows
55+
- Result: Test1
56+
Rule: BufferExact
57+
Actual: Highs
58+
Expected: ExpectedHighs
59+
DescriptorSets:
60+
- Resources:
61+
- Name: In0
62+
Kind: StructuredBuffer
63+
DirectXBinding:
64+
Register: 0
65+
Space: 0
66+
VulkanBinding:
67+
Binding: 0
68+
- Name: Lows
69+
Kind: RWStructuredBuffer
70+
DirectXBinding:
71+
Register: 1
72+
Space: 0
73+
VulkanBinding:
74+
Binding: 1
75+
- Name: Highs
76+
Kind: RWStructuredBuffer
77+
DirectXBinding:
78+
Register: 2
79+
Space: 0
80+
VulkanBinding:
81+
Binding: 2
82+
#--- end
83+
84+
# https://github.com/microsoft/DirectXShaderCompiler/issues/7666
85+
# XFAIL: DXC-Vulkan
86+
87+
# https://github.com/llvm/llvm-project/issues/153091
88+
# XFAIL: Clang-Vulkan
89+
90+
# REQUIRES: Double
91+
# RUN: split-file %s %t
92+
# RUN: %dxc_target -T cs_6_5 -HV 202x -Fo %t.o %t/source.hlsl
93+
# RUN: %offloader %t/pipeline.yaml %t.o

0 commit comments

Comments
 (0)