Skip to content

Commit 808508a

Browse files
committed
Add one more test for multi-nodes
1 parent d43156b commit 808508a

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
//TEST:SIMPLE(filecheck=CHK): -target spirv-asm -stage compute -entry computeMain -skip-spirv-validation
2+
3+
RWStructuredBuffer<int> inputBuffer;
4+
5+
struct RecordData
6+
{
7+
int myData;
8+
}
9+
10+
[shader("compute")]
11+
[numthreads(1, 1, 1)]
12+
void computeMain()
13+
{
14+
spirv_asm
15+
{
16+
OpExecutionMode $computeMain ShaderIndexAMDX $(0);
17+
OpExecutionMode $computeMain StaticNumWorkgroupsAMDX $(1) $(1) $(1);
18+
};
19+
20+
//TODO: "myNodeID" is supposed to come from [NodeID("name")] attribute on "node" variable.
21+
// Until it is implemented properly, we will use an int-type generic argument.
22+
//
23+
#define myNodeID_1 0
24+
#define myNodeID_2 1
25+
26+
ThreadNodeOutputRecords<RecordData, myNodeID_1> node1 = { 1 };
27+
ThreadNodeOutputRecords<RecordData, myNodeID_2> node2 = { 1 };
28+
29+
node1.Get().myData = inputBuffer[0];
30+
node2.Get().myData = inputBuffer[0];
31+
32+
node1.OutputComplete();
33+
node2.OutputComplete();
34+
}
35+
36+
//CHK: OpCapability ShaderEnqueueAMDX
37+
//CHK: OpExtension "SPV_AMDX_shader_enqueue"
38+
39+
//CHK: ; Annotations
40+
41+
//CHK-DAG: [[RecordType1:%[a-zA-Z_0-9]+]] = OpTypeNodePayloadArrayAMDX %RecordData
42+
//CHK-DAG: [[RecordType2:%[a-zA-Z_0-9]+]] = OpTypeNodePayloadArrayAMDX %RecordData
43+
//CHK-DAG: [[PtrType1:%[a-zA-Z_0-9]+]] = OpTypePointer NodePayloadAMDX [[RecordType1]]
44+
//CHK-DAG: [[PtrType2:%[a-zA-Z_0-9]+]] = OpTypePointer NodePayloadAMDX [[RecordType2]]
45+
//CHK-DAG: [[NodeID_1:%[a-zA-Z_0-9]+]] = OpConstantStringAMDX "NodeID_0"
46+
//CHK-DAG: [[NodeID_2:%[a-zA-Z_0-9]+]] = OpConstantStringAMDX "NodeID_1"
47+
//CHK-DAG: OpDecorateId [[RecordType1]] PayloadNodeNameAMDX [[NodeID_1]]
48+
//CHK-DAG: OpDecorateId [[RecordType2]] PayloadNodeNameAMDX [[NodeID_2]]
49+
50+
//CHK-NOT: = OpTypeNodePayloadArrayAMDX
51+
//CHK-NOT: = OpConstantStringAMDX
52+
//CHK-NOT: OpDecorateID {{.*}} PayloadNodeNameAMDX
53+
54+
//CHK: ; Function
55+
56+
// ThreadNodeOutputRecords::__init()
57+
//CHK-DAG: [[Alloc1:%[a-zA-Z_0-9]+]] = OpAllocateNodePayloadsAMDX [[PtrType1]] %
58+
//CHK-DAG: [[Alloc2:%[a-zA-Z_0-9]+]] = OpAllocateNodePayloadsAMDX [[PtrType2]] %
59+
//CHK-NOT: = OpAllocateNodePayloadsAMDX
60+
61+
// ThreadNodeOutputRecords::Get()
62+
//CHK-DAG: [[Load1:%[a-zA-Z_0-9]+]] = OpLoad [[PtrType1]] %var
63+
//CHK-DAG: [[Load2:%[a-zA-Z_0-9]+]] = OpLoad [[PtrType2]] %var
64+
//CHK-DAG: = OpAccessChain [[PtrType1]] [[Load1]] %
65+
//CHK-DAG: = OpAccessChain [[PtrType2]] [[Load2]] %
66+
67+
// ThreadNodeOutputRecords::OutputComplete()
68+
//CHK-DAG: OpEnqueueNodePayloadsAMDX [[Alloc1]]
69+
//CHK-DAG: OpEnqueueNodePayloadsAMDX [[Alloc2]]
70+
//CHK-NOT: OpEnqueueNodePayloadsAMDX
71+

tests/workgraphs/producer.slang

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ void computeMain()
3030
//CHK: OpCapability ShaderEnqueueAMDX
3131
//CHK: OpExtension "SPV_AMDX_shader_enqueue"
3232

33+
//CHK: ; Annotations
34+
3335
//CHK-DAG: [[RecordType:%[a-zA-Z_0-9]+]] = OpTypeNodePayloadArrayAMDX %RecordData
3436
//CHK-DAG: [[PtrType:%[a-zA-Z_0-9]+]] = OpTypePointer NodePayloadAMDX [[RecordType]]
3537
//CHK-DAG: [[NodeID:%[a-zA-Z_0-9]+]] = OpConstantStringAMDX "NodeID_0"
@@ -39,6 +41,8 @@ void computeMain()
3941
//CHK-NOT: = OpConstantStringAMDX
4042
//CHK-NOT: OpDecorateID {{.*}} PayloadNodeNameAMDX
4143

44+
//CHK: ; Function
45+
4246
// ThreadNodeOutputRecords::__init()
4347
//CHK: [[Alloc:%[a-zA-Z_0-9]+]] = OpAllocateNodePayloadsAMDX [[PtrType]] %
4448
//CHK-NOT: = OpAllocateNodePayloadsAMDX

0 commit comments

Comments
 (0)