yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
bf607e2f3
master
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}