yum-mirror/slang

Making it easier to work with shaders

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

Jay KwakFix VVL errors on coopvec tests (#8541)f55f669d1

master
2.1 KiB73 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -render-feature cooperative-vector -output-using-type
2
3// HLSL doesn't support the training operations
4//DISABLE_TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-dx12 -render-feature cooperative-vector -dx12-experimental -output-using-type -profile cs_6_9 -Xslang... -Xdxc -Vd -X.
5
6// Disabled because of some pecularities stemming from our lowering of half to float
7//DISABLE_TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -output-using-type
8
9// CHECK: type: half
10// CHECK-NEXT: 112.000000
11// CHECK-NEXT: 2.000000
12// CHECK-NEXT: 3.000000
13// CHECK-NEXT: 4.000000
14// CHECK-NEXT: 5.000000
15// CHECK-NEXT: 6.000000
16// CHECK-NEXT: 7.000000
17// CHECK-NEXT: 8.000000
18// CHECK-NEXT: 2.000000
19// CHECK-NEXT: 4.000000
20// CHECK-NEXT: 6.000000
21// CHECK-NEXT: 8.000000
22// CHECK-NEXT: 10.000000
23// CHECK-NEXT: 12.000000
24// CHECK-NEXT: 14.000000
25// CHECK-NEXT: 16.000000
26// CHECK-NEXT: 3.000000
27// CHECK-NEXT: 6.000000
28// CHECK-NEXT: 9.000000
29// CHECK-NEXT: 12.000000
30// CHECK-NEXT: 15.000000
31// CHECK-NEXT: 18.000000
32// CHECK-NEXT: 21.000000
33// CHECK-NEXT: 24.000000
34// CHECK-NEXT: 4.000000
35// CHECK-NEXT: 8.000000
36// CHECK-NEXT: 12.000000
37// CHECK-NEXT: 16.000000
38// CHECK-NEXT: 20.000000
39// CHECK-NEXT: 24.000000
40// CHECK-NEXT: 28.000000
41// CHECK-NEXT: 32.000000
42
43//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=2):out,name=outputBuffer
44RWStructuredBuffer<half> outputBuffer;
45
46//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4),name=output
47RWByteAddressBuffer output;
48
49[numthreads(1, 1, 1)]
50void computeMain()
51{
52    CoopVec<half, 4> vecA;
53    CoopVec<half, 8> vecB;
54    for(int i = 0; i < vecA.getCount(); ++i)
55        vecA[i] = half(i+1);
56    for(int i = 0; i < vecB.getCount(); ++i)
57        vecB[i] = half(i+1);
58
59    output.Store<half>(0, half(111));
60
61    coopVecOuterProductAccumulate(
62        vecA,
63        vecB,
64        output,
65        0,
66        32,
67        CoopVecMatrixLayout::TrainingOptimal,
68        CoopVecComponentType::Float16,
69    );
70
71    for(int i = 0; i < vecA.getCount() * vecB.getCount(); ++i)
72        outputBuffer[i] = output.Load<half>(i * 2);
73}