yum-mirror/slang

Making it easier to work with shaders

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

CopilotFix CUDA backend missing U32_firstbitlow implementation (#7921)e8797496b

master
1.3 KiB39 linesraw
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