yum-mirror/slang

Making it easier to work with shaders

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

James Helferty (NVIDIA)render-test: Change D3D12 default to sm_6_5 (#8320)f02b08490

master
2.5 KiB68 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -compile-arg -skip-spirv-validation -emit-spirv-directly
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-dx12
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-mtl
4//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu
5//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cuda
6//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-wgpu
7
8// CHECK: 8765432F
9// CHECK-NEXT: 876543F1
10// CHECK-NEXT: 87654F21
11// CHECK-NEXT: 8765F321
12// CHECK-NEXT: A8
13// CHECK-NEXT: 3FC0
14// CHECK-NEXT: AF
15// CHECK-NEXT: 123456F8
16// CHECK-NEXT: 9ABCDE60
17// CHECK-NEXT: 87654331
18// CHECK-NEXT: FEDCBA68
19// CHECK-NEXT: 12345EF8
20// CHECK-NEXT: 9ABCD560
21// CHECK-NEXT: 87654431
22// CHECK-NEXT: FEDCB568
23
24//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14], stride=4):out,name=u32Buffer
25RWStructuredBuffer<uint> u32Buffer;
26
27[numthreads(1, 1, 1)]
28void computeMain()
29{
30    // 32-bit tests
31    {
32        // Simple hex insertion to test, varying the offset.
33        uint base = 0x87654321;
34        uint value = 0xABCDEF;
35        u32Buffer[0] = bitfieldInsert(base, value, 4 * 0, 4); // 0x8765432F
36        u32Buffer[1] = bitfieldInsert(base, value, 4 * 1, 4); // 0x876543F1
37        u32Buffer[2] = bitfieldInsert(base, value, 4 * 2, 4); // 0x8765F321
38        u32Buffer[3] = bitfieldInsert(base, value, 4 * 3, 4); // 0x87F54321
39
40        // Test with varying bit length
41        base = 0;
42        value = 0b101010;
43        u32Buffer[4] = bitfieldInsert(base, value, 2, 6); // 0b10101000
44        value = 0b11111111;
45        u32Buffer[5] = bitfieldInsert(base, value, 6, 8); // 0b11111111000000
46
47        // Test with int input
48        u32Buffer[6] = bitfieldInsert(0b10100000, 0b1111, 0, 4);  // 0b10101111
49
50        // Test with a vector
51        uint4 base4 = uint4(0x12345678, 0x9abcdef0, 0x87654321, 0xfedcba98);
52        uint4 value4 = uint4(0xABCDEF, 0x123456, 0x876543, 0x123456);
53        uint4 output4 = bitfieldInsert(base4, value4, 4, 4);
54        u32Buffer[7] = output4.x;
55        u32Buffer[8] = output4.y;
56        u32Buffer[9] = output4.z;
57        u32Buffer[10] = output4.w;
58
59        // Test with a int vector
60        int4 ibase4 = int4(0x12345678, 0x9abcdef0, 0x87654321, 0xfedcba98);
61        int4 ivalue4 = int4(0xABCDEF, 0x123456, 0x876543, 0x123456);
62        int4 ioutput4 = bitfieldInsert(ibase4, ivalue4, 4, 8);
63        u32Buffer[11] = ioutput4.x;
64        u32Buffer[12] = ioutput4.y;
65        u32Buffer[13] = ioutput4.z;
66        u32Buffer[14] = ioutput4.w;
67    }
68}