diff options
| author | Yong He <yonghe@outlook.com> | 2023-11-03 17:10:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-03 17:10:09 -0700 |
| commit | 79677b83870577fbad9ce65a731d3ae8a4c553c1 (patch) | |
| tree | 82e10e5eaef138cf61f21c8842d5c8e4b199c198 /tests | |
| parent | 111de4d5527a07877edd971e8be335e067ff9a1b (diff) | |
Add SubgroupQuad intrinsics for glsl/spirv. (#3310)
* Add SubgroupQuad intrinsics for glsl/spirv.
* Fix.
* Add test for quad intrinsics.
* fix.
* improve diagnostics text.
* Fix.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/hlsl-intrinsic/subgroup-quad.slang | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/hlsl-intrinsic/subgroup-quad.slang b/tests/hlsl-intrinsic/subgroup-quad.slang new file mode 100644 index 000000000..928431a45 --- /dev/null +++ b/tests/hlsl-intrinsic/subgroup-quad.slang @@ -0,0 +1,41 @@ +//TEST:SIMPLE(filecheck=SPIRV): -entry main -stage compute -target spirv +//TEST:SIMPLE(filecheck=SPIRV): -entry main -stage compute -target spirv -emit-spirv-directly +//TEST:SIMPLE(filecheck=HLSL): -entry main -stage compute -target hlsl + +RWStructuredBuffer<float> output; + +[numthreads(1,1,1)] +void main() +{ + float x = output[0]; + float3 vx = float3(x, x, x); + + float v1 = QuadReadLaneAt(x, 1); + float v11 = QuadReadLaneAt(vx, 1).x; + float v2 = QuadReadAcrossX(x); + float v21 = QuadReadAcrossX(vx).x; + float v3 = QuadReadAcrossY(x); + float v31 = QuadReadAcrossY(vx).x; + float v4 = QuadReadAcrossDiagonal(x); + float v41 = QuadReadAcrossDiagonal(vx).x; + + output[0] = v1 + v2 + v3 + v4 + v11 + v21 + v31 + v41; + + // HLSL: QuadReadLaneAt + // HLSL: QuadReadLaneAt + // HLSL: QuadReadAcrossX + // HLSL: QuadReadAcrossX + // HLSL: QuadReadAcrossY + // HLSL: QuadReadAcrossY + // HLSL: QuadReadAcrossDiagonal + // HLSL: QuadReadAcrossDiagonal + + // SPIRV: OpGroupNonUniformQuadBroadcast {{.*}} %{{u?int_3}} {{.*}} %{{u?int_1}} + // SPIRV: OpGroupNonUniformQuadBroadcast {{.*}} %{{u?int_3}} {{.*}} %{{u?int_1}} + // SPIRV: OpGroupNonUniformQuadSwap {{.*}} %{{u?int_3}} {{.*}} %{{u?int_0}} + // SPIRV: OpGroupNonUniformQuadSwap {{.*}} %{{u?int_3}} {{.*}} %{{u?int_0}} + // SPIRV: OpGroupNonUniformQuadSwap {{.*}} %{{u?int_3}} {{.*}} %{{u?int_1}} + // SPIRV: OpGroupNonUniformQuadSwap {{.*}} %{{u?int_3}} {{.*}} %{{u?int_1}} + // SPIRV: OpGroupNonUniformQuadSwap {{.*}} %{{u?int_3}} {{.*}} %{{u?int_2}} + // SPIRV: OpGroupNonUniformQuadSwap {{.*}} %{{u?int_3}} {{.*}} %{{u?int_2}} +} |
