glslang/Test/baseResults/hlsl.structcopy.comp.out
Matthew Moulton 5073d93ec4
Apply GLSL memory decorations to top-level OpVariable
Apply memory decorations from GLSL source to the top-level OpVariable.
Previously, these decorations would only be applied to individual
members. While this is correct behavior, it is more convenient for some
front ends to see the decorations (specifically ReadOnly and WriteOnly)
applied to the whole variable rather than individual members.
2024-08-28 17:46:16 -04:00

405 lines
22 KiB
Plaintext

hlsl.structcopy.comp
Shader version: 500
local_size = (128, 1, 1)
0:? Sequence
0:20 Function Definition: @main(u1; ( temp void)
0:20 Function Parameters:
0:20 'id' ( in uint)
0:? Sequence
0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c})
0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 1 (const uint)
0:21 2 (const uint)
0:21 3 (const uint)
0:22 Sequence
0:22 move second child to first child ( temp uint)
0:22 'count' ( temp uint)
0:22 count: direct index for structure ( temp uint)
0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
0:22 Constant:
0:22 0 (const uint)
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:23 Sequence
0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit
0:23 Condition
0:23 Compare Greater Than ( temp bool)
0:23 'id' ( in uint)
0:23 'count' ( temp uint)
0:23 true case
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
0:23 subtract ( temp uint)
0:23 'id' ( in uint)
0:23 'count' ( temp uint)
0:23 false case
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
0:23 Constant:
0:23 0 (const uint)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 1 (const int)
0:23 'id' ( in uint)
0:25 AtomicAdd ( temp uint)
0:25 a: direct index for structure ( temp uint)
0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:25 Constant:
0:25 0 (const uint)
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 a: direct index for structure ( temp uint)
0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:25 Constant:
0:25 0 (const int)
0:26 AtomicAdd ( temp uint)
0:26 b: direct index for structure ( temp uint)
0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:26 Constant:
0:26 0 (const uint)
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 b: direct index for structure ( temp uint)
0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:26 Constant:
0:26 1 (const int)
0:27 AtomicAdd ( temp uint)
0:27 c: direct index for structure ( temp uint)
0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:27 Constant:
0:27 0 (const uint)
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 c: direct index for structure ( temp uint)
0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:27 Constant:
0:27 2 (const int)
0:20 Function Definition: main( ( temp void)
0:20 Function Parameters:
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'id' ( temp uint)
0:? 'id' ( in uint LocalInvocationIndex)
0:20 Function Call: @main(u1; ( temp void)
0:? 'id' ( temp uint)
0:? Linker Objects
0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c})
0:? 1 (const uint)
0:? 2 (const uint)
0:? 3 (const uint)
0:? 'id' ( in uint LocalInvocationIndex)
Linked compute stage:
Shader version: 500
local_size = (128, 1, 1)
0:? Sequence
0:20 Function Definition: @main(u1; ( temp void)
0:20 Function Parameters:
0:20 'id' ( in uint)
0:? Sequence
0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c})
0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 1 (const uint)
0:21 2 (const uint)
0:21 3 (const uint)
0:22 Sequence
0:22 move second child to first child ( temp uint)
0:22 'count' ( temp uint)
0:22 count: direct index for structure ( temp uint)
0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
0:22 Constant:
0:22 0 (const uint)
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:23 Sequence
0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit
0:23 Condition
0:23 Compare Greater Than ( temp bool)
0:23 'id' ( in uint)
0:23 'count' ( temp uint)
0:23 true case
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
0:23 subtract ( temp uint)
0:23 'id' ( in uint)
0:23 'count' ( temp uint)
0:23 false case
0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c})
0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data})
0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
0:23 Constant:
0:23 0 (const uint)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 1 (const int)
0:23 'id' ( in uint)
0:25 AtomicAdd ( temp uint)
0:25 a: direct index for structure ( temp uint)
0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:25 Constant:
0:25 0 (const uint)
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 a: direct index for structure ( temp uint)
0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:25 Constant:
0:25 0 (const int)
0:26 AtomicAdd ( temp uint)
0:26 b: direct index for structure ( temp uint)
0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:26 Constant:
0:26 0 (const uint)
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 b: direct index for structure ( temp uint)
0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:26 Constant:
0:26 1 (const int)
0:27 AtomicAdd ( temp uint)
0:27 c: direct index for structure ( temp uint)
0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c})
0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c})
0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:27 Constant:
0:27 0 (const uint)
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 c: direct index for structure ( temp uint)
0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c})
0:27 Constant:
0:27 2 (const int)
0:20 Function Definition: main( ( temp void)
0:20 Function Parameters:
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'id' ( temp uint)
0:? 'id' ( in uint LocalInvocationIndex)
0:20 Function Call: @main(u1; ( temp void)
0:? 'id' ( temp uint)
0:? Linker Objects
0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data})
0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data})
0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c})
0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c})
0:? 1 (const uint)
0:? 2 (const uint)
0:? 3 (const uint)
0:? 'id' ( in uint LocalInvocationIndex)
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 88
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 83
ExecutionMode 4 LocalSize 128 1 1
Source HLSL 500
Name 4 "main"
Name 10 "@main(u1;"
Name 9 "id"
Name 12 "MyStruct"
MemberName 12(MyStruct) 0 "a"
MemberName 12(MyStruct) 1 "b"
MemberName 12(MyStruct) 2 "c"
Name 16 "s"
Name 25 "count"
Name 26 "MyStruct"
MemberName 26(MyStruct) 0 "a"
MemberName 26(MyStruct) 1 "b"
MemberName 26(MyStruct) 2 "c"
Name 28 "MyStructs"
MemberName 28(MyStructs) 0 "count"
MemberName 28(MyStructs) 1 "data"
Name 30 "sb"
MemberName 30(sb) 0 "@data"
Name 32 "sb"
Name 37 "ms"
Name 65 "o"
MemberName 65(o) 0 "@data"
Name 67 "o"
Name 81 "id"
Name 83 "id"
Name 85 "param"
MemberDecorate 26(MyStruct) 0 Offset 0
MemberDecorate 26(MyStruct) 1 Offset 4
MemberDecorate 26(MyStruct) 2 Offset 8
Decorate 27 ArrayStride 12
Decorate 28(MyStructs) BufferBlock
MemberDecorate 28(MyStructs) 0 Offset 0
MemberDecorate 28(MyStructs) 1 Offset 4
Decorate 29 ArrayStride 16
Decorate 30(sb) BufferBlock
MemberDecorate 30(sb) 0 NonWritable
MemberDecorate 30(sb) 0 Offset 0
Decorate 32(sb) NonWritable
Decorate 32(sb) Binding 0
Decorate 32(sb) DescriptorSet 0
Decorate 64 ArrayStride 12
Decorate 65(o) BufferBlock
MemberDecorate 65(o) 0 NonWritable
MemberDecorate 65(o) 0 Offset 0
Decorate 67(o) NonWritable
Decorate 67(o) Binding 1
Decorate 67(o) DescriptorSet 0
Decorate 83(id) BuiltIn LocalInvocationIndex
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
8: TypeFunction 2 7(ptr)
12(MyStruct): TypeStruct 6(int) 6(int) 6(int)
13: 6(int) Constant 128
14: TypeArray 12(MyStruct) 13
15: TypePointer Workgroup 14
16(s): 15(ptr) Variable Workgroup
17: TypeInt 32 1
18: 17(int) Constant 0
19: 6(int) Constant 1
20: 6(int) Constant 2
21: 6(int) Constant 3
22:12(MyStruct) ConstantComposite 19 20 21
23: TypePointer Workgroup 12(MyStruct)
26(MyStruct): TypeStruct 6(int) 6(int) 6(int)
27: TypeRuntimeArray 26(MyStruct)
28(MyStructs): TypeStruct 6(int) 27
29: TypeRuntimeArray 28(MyStructs)
30(sb): TypeStruct 29
31: TypePointer Uniform 30(sb)
32(sb): 31(ptr) Variable Uniform
33: TypePointer Uniform 6(int)
36: TypePointer Function 12(MyStruct)
40: TypeBool
47: 17(int) Constant 1
49: TypePointer Uniform 26(MyStruct)
61: 17(int) Constant 2
64: TypeRuntimeArray 26(MyStruct)
65(o): TypeStruct 64
66: TypePointer Uniform 65(o)
67(o): 66(ptr) Variable Uniform
71: 6(int) Constant 0
82: TypePointer Input 6(int)
83(id): 82(ptr) Variable Input
4(main): 2 Function None 3
5: Label
81(id): 7(ptr) Variable Function
85(param): 7(ptr) Variable Function
84: 6(int) Load 83(id)
Store 81(id) 84
86: 6(int) Load 81(id)
Store 85(param) 86
87: 2 FunctionCall 10(@main(u1;) 85(param)
Return
FunctionEnd
10(@main(u1;): 2 Function None 8
9(id): 7(ptr) FunctionParameter
11: Label
25(count): 7(ptr) Variable Function
37(ms): 36(ptr) Variable Function
52: 36(ptr) Variable Function
24: 23(ptr) AccessChain 16(s) 18
Store 24 22
34: 33(ptr) AccessChain 32(sb) 18 18 18
35: 6(int) Load 34
Store 25(count) 35
38: 6(int) Load 9(id)
39: 6(int) Load 25(count)
41: 40(bool) UGreaterThan 38 39
42: 6(int) Load 9(id)
43: 6(int) Load 25(count)
44: 6(int) ISub 42 43
45: 23(ptr) AccessChain 16(s) 44
46:12(MyStruct) Load 45
48: 6(int) Load 9(id)
50: 49(ptr) AccessChain 32(sb) 18 18 47 48
51:26(MyStruct) Load 50
SelectionMerge 54 None
BranchConditional 41 53 55
53: Label
Store 52 46
Branch 54
55: Label
56: 6(int) CompositeExtract 51 0
57: 7(ptr) AccessChain 52 18
Store 57 56
58: 6(int) CompositeExtract 51 1
59: 7(ptr) AccessChain 52 47
Store 59 58
60: 6(int) CompositeExtract 51 2
62: 7(ptr) AccessChain 52 61
Store 62 60
Branch 54
54: Label
63:12(MyStruct) Load 52
Store 37(ms) 63
68: 33(ptr) AccessChain 67(o) 18 18 18
69: 7(ptr) AccessChain 37(ms) 18
70: 6(int) Load 69
72: 6(int) AtomicIAdd 68 19 71 70
73: 33(ptr) AccessChain 67(o) 18 18 47
74: 7(ptr) AccessChain 37(ms) 47
75: 6(int) Load 74
76: 6(int) AtomicIAdd 73 19 71 75
77: 33(ptr) AccessChain 67(o) 18 18 61
78: 7(ptr) AccessChain 37(ms) 61
79: 6(int) Load 78
80: 6(int) AtomicIAdd 77 19 71 79
Return
FunctionEnd