yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
7e35123ba
master
1//TEST(compute):COMPARE_COMPUTE:-shaderobj 2 3//TEST_INPUT:ubuffer(data=[3 7 8 10], stride=4):name=inputBuffer 4RWStructuredBuffer<int> inputBuffer; 5 6//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer 7RWStructuredBuffer<int> outputBuffer; 8 9[numthreads(1,1,1)] 10void computeMain() 11{ 12 int amount = 1; 13 14 outputBuffer[0] = inputBuffer[0] >> amount; 15 16 int2 v2 = int2(inputBuffer[0], inputBuffer[1]) >> amount; 17 outputBuffer[1] = v2[0]; 18 outputBuffer[2] = v2[1]; 19 20 int3 v3 = int3(inputBuffer[0], inputBuffer[1], inputBuffer[2]) >> amount; 21 outputBuffer[3] = v3[0]; 22 outputBuffer[4] = v3[1]; 23 outputBuffer[5] = v3[2]; 24 25 int4 v4 = int4(inputBuffer[0], inputBuffer[1], inputBuffer[2], inputBuffer[3]) >> amount; 26 outputBuffer[6] = v4[0]; 27 outputBuffer[7] = v4[1]; 28 outputBuffer[8] = v4[2]; 29 outputBuffer[9] = v4[3]; 30 31 outputBuffer[10] = inputBuffer[0] << amount; 32 33 v2 = int2(inputBuffer[0], inputBuffer[1]) << amount; 34 outputBuffer[11] = v2[0]; 35 outputBuffer[12] = v2[1]; 36 37 v3 = int3(inputBuffer[0], inputBuffer[1], inputBuffer[2]) << amount; 38 outputBuffer[13] = v3[0]; 39 outputBuffer[14] = v3[1]; 40 outputBuffer[15] = v3[2]; 41 42 v4 = int4(inputBuffer[0], inputBuffer[1], inputBuffer[2], inputBuffer[3]) << amount; 43 outputBuffer[16] = v4[0]; 44 outputBuffer[17] = v4[1]; 45 outputBuffer[18] = v4[2]; 46 outputBuffer[19] = v4[3]; 47 48 v2 = inputBuffer[0] >> int2(amount); 49 outputBuffer[20] = v2[0]; 50 outputBuffer[21] = v2[1]; 51 52 v3 = inputBuffer[1] >> int3(amount); 53 outputBuffer[22] = v3[0]; 54 outputBuffer[23] = v3[1]; 55 outputBuffer[24] = v3[2]; 56 57 v4 = inputBuffer[2] >> int4(amount); 58 outputBuffer[25] = v4[0]; 59 outputBuffer[26] = v4[1]; 60 outputBuffer[27] = v4[2]; 61 outputBuffer[28] = v4[3]; 62 63 v2 = inputBuffer[0] << int2(amount); 64 outputBuffer[29] = v2[0]; 65 outputBuffer[30] = v2[1]; 66 67 v3 = inputBuffer[1] << int3(amount); 68 outputBuffer[31] = v3[0]; 69 outputBuffer[32] = v3[1]; 70 outputBuffer[33] = v3[2]; 71 72 v4 = inputBuffer[2] << int4(amount); 73 outputBuffer[34] = v4[0]; 74 outputBuffer[35] = v4[1]; 75 outputBuffer[36] = v4[2]; 76 outputBuffer[37] = v4[3]; 77 78 v2 = int2(inputBuffer[0], inputBuffer[1]) >> int2(1, 2); 79 outputBuffer[38] = v2[0]; 80 outputBuffer[39] = v2[1]; 81 82 v3 = int3(inputBuffer[0], inputBuffer[1], inputBuffer[2]) >> int3(1, 2, 3); 83 outputBuffer[40] = v3[0]; 84 outputBuffer[41] = v3[1]; 85 outputBuffer[42] = v3[2]; 86 87 v4 = int4(inputBuffer[0], inputBuffer[1], inputBuffer[2], inputBuffer[3]) >> int4(1, 2, 3, 4); 88 outputBuffer[43] = v4[0]; 89 outputBuffer[44] = v4[1]; 90 outputBuffer[45] = v4[2]; 91 outputBuffer[46] = v4[3]; 92}