yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
e8797496b
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -compute -shaderobj 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -shaderobj 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -dx12 -shaderobj 4//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -compute -shaderobj 5//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cuda -compute -shaderobj 6 7//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer 8RWStructuredBuffer<uint> outputBuffer; 9 10[numthreads(10, 1, 1)] 11void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 12{ 13 uint idx = dispatchThreadID.x; 14 15 if (idx < 5) { 16 // Test unsigned values 17 uint testValues[5] = {0, 1, 2, 4, 8}; 18 uint value = testValues[idx]; 19 uint result = firstbitlow(value); 20 outputBuffer[idx] = result; 21 } else { 22 // Test signed values 23 int testValues[5] = {-1, -2, -4, -8, 0}; // 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFC, 0xFFFFFFF8, 0 24 int value = testValues[idx - 5]; 25 uint result = firstbitlow(value); 26 outputBuffer[idx] = result; 27 } 28} 29 30// CHECK: FFFFFFFF 31// CHECK: 0 32// CHECK: 1 33// CHECK: 2 34// CHECK: 3 35// CHECK: 0 36// CHECK: 1 37// CHECK: 2 38// CHECK: 3 39// CHECK: FFFFFFFF