yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Harsh Aggarwal (NVIDIA)Fix#8085: Batch-9: Enable cuda tests (#8269)bf607e2f3

master
2.0 KiB38 linesraw
1//TEST:SIMPLE(filecheck=CHECK0):-target glsl -entry main -stage compute
2//TEST:SIMPLE(filecheck=CHECK1):-target hlsl -entry main -stage compute
3//TEST:SIMPLE(filecheck=CHECK2):-target spirv -entry main -stage compute -emit-spirv-via-glsl
4//TEST:SIMPLE(filecheck=CHECK3):-target spirv -entry main -stage compute -emit-spirv-directly
5//TEST:SIMPLE(filecheck=CHECK4):-target cuda -entry main -stage compute -emit-spirv-directly
6
7RWStructuredBuffer<int> buffer[];
8
9[numthreads(8, 1, 1)]
10void main(uint3 dispatchThreadID: SV_DispatchThreadID)
11{
12    // CHECK0: buffer_{{.*}}[nonuniformEXT({{.*}})]
13
14    // CHECK1: buffer_{{.*}}[NonUniformResourceIndex(_{{.*}})]
15
16    // CHECK2-DAG: OpDecorate %[[VAR1:[a-zA-Z0-9_]+]] NonUniform
17    // CHECK2-DAG: OpDecorate %[[VAR2:[a-zA-Z0-9_]+]] NonUniform
18    // CHECK2-DAG: OpDecorate %[[VAR3:[a-zA-Z0-9_]+]] NonUniform
19    // CHECK2: %[[VAR1]] = OpCopyObject %{{.*}}
20    // CHECK2: %[[VAR2]] = OpAccessChain %_ptr_Uniform_int %buffer_{{.*}} %[[VAR1]]
21    // CHECK2: OpStore  %[[VAR2]] %{{.*}}
22    // CHECK2: %[[VAR3]] = OpCopyObject %{{.*}}
23    // CHECK2: %{{.*}} = OpBitcast %int %[[VAR3]]
24
25    // CHECK3: %[[VAR1:[a-zA-Z0-9_]+]] = OpAccessChain %_ptr_StorageBuffer_RWStructuredBuffer %buffer %{{.*}}NonUniform
26    // CHECK3: %{{.*}} = OpAccessChain %_ptr_StorageBuffer_int %[[VAR1]]
27    // CHECK3: %[[VAR2:[a-zA-Z0-9_]+]] = OpAccessChain %_ptr_StorageBuffer_RWStructuredBuffer %buffer %{{.*}}NonUniform
28    // CHECK3: %{{.*}} = OpAccessChain %_ptr_StorageBuffer_int %[[VAR2]]
29    
30    // CHECK4: Array<RWStructuredBuffer<int>>  [[BUFFER:buffer[_0-9]*]];
31    // CHECK4: [[GLOBALPARAMS:globalParams[_0-9]*]]->[[BUFFER]][_S{{[0-9]+}}]
32    // CHECK4: [[GLOBALPARAMS]]->[[BUFFER]][int(_S{{[0-9]+}})]
33    RWStructuredBuffer<int> buffer1 = buffer[NonUniformResourceIndex(NonUniformResourceIndex(NonUniformResourceIndex(dispatchThreadID.x)))];
34    buffer1[0] = 1;
35
36    RWStructuredBuffer<int> buffer2 = buffer[int(NonUniformResourceIndex(uint(float(dispatchThreadID.x))))];
37    buffer2[0] = 1;
38}