yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
03f924248
master
1// Test for verifying subscript operator support with uint types in cuda. 2 3//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-cuda -compute -shaderobj 4//TEST_INPUT: Texture1D(size=4, content = one):name cudaT1D_u 5Texture1D<uint> cudaT1D_u; 6//TEST_INPUT: Texture2D(size=8, content = one):name cudaT2D_u 7Texture2D<uint> cudaT2D_u; 8//TEST_INPUT: Texture2D(size=8, content = one):name cudaT2D_u2 9Texture2D<uint2> cudaT2D_u2; 10//TEST_INPUT: Texture2D(size=8, content = one):name cudaT2D_u4 11Texture2D<uint4> cudaT2D_u4; 12//TEST_INPUT: Texture3D(size=8, content = one):name cudaT3D_u 13Texture3D<uint> cudaT3D_u; 14//TEST_INPUT: Texture3D(size=8, content = one):name cudaT3D_u2 15Texture3D<uint2> cudaT3D_u2; 16//TEST_INPUT: Texture3D(size=8, content = one):name cudaT3D_u4 17Texture3D<uint4> cudaT3D_u4; 18//TEST_INPUT: TextureCube(size=16, content = one):name cudaTCube_u 19TextureCube<uint> cudaTCube_u; 20//TEST_INPUT: Texture2D(size=16, content = one, arrayLength=3):name cudaT2DArray_u 21Texture2DArray<uint> cudaT2DArray_u; 22//TEST_INPUT: Texture2D(size=16, content = one, arrayLength=3):name cudaT2DArray_u2 23Texture2DArray<uint2> cudaT2DArray_u2; 24//TEST_INPUT: Texture2D(size=16, content = one, arrayLength=3):name cudaT2DArray_u4 25Texture2DArray<uint4> cudaT2DArray_u4; 26 27//TEST_INPUT: ubuffer(data=[0 0 0], stride=4):out,name cudaOutputBuffer 28RWStructuredBuffer<uint> cudaOutputBuffer; 29 30[numthreads(3, 1, 1)] 31[shader("compute")] 32void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) 33{ 34 int idx = dispatchThreadID.x; 35 36 switch (idx) 37 { 38 case 0: 39 { 40 int2 var = int2(1, 2); 41 uint result = cudaT2D_u[var]; 42 cudaOutputBuffer[idx] = result; 43 44 uint2 result2 = cudaT2D_u2[var]; 45 cudaOutputBuffer[idx] += result2.x; 46 47 uint4 result4 = cudaT2D_u4[var]; 48 cudaOutputBuffer[idx] += result4.x; 49 cudaOutputBuffer[idx] += result4.y; 50 } 51 break; 52 53 case 1: 54 { 55 int3 var = int3(1, 1, 1); 56 uint result = cudaT3D_u[var]; 57 cudaOutputBuffer[idx] = result; 58 59 uint2 result2 = cudaT3D_u2[var]; 60 cudaOutputBuffer[idx] += result2.x; 61 62 uint4 result4 = cudaT3D_u4[var]; 63 cudaOutputBuffer[idx] += result4.x; 64 cudaOutputBuffer[idx] += result4.w; 65 } 66 break; 67 68 case 2: 69 { 70 int3 var = int3(0, 0, 1); 71 uint result = cudaT2DArray_u[var]; 72 cudaOutputBuffer[idx] = result; 73 74 uint2 result2 = cudaT2DArray_u2[var]; 75 cudaOutputBuffer[idx] += result2.y; 76 77 uint4 result4 = cudaT2DArray_u4[var]; 78 cudaOutputBuffer[idx] += result4.x; 79 cudaOutputBuffer[idx] += result4.y; 80 } 81 break; 82 } 83} 84// CHECK:FE000000 85// CHECK:FE000000 86// CHECK:FE000000