
For GLSL function imageAtomicStore, it will be translated to OpImageTexelPointer + OpAtomicStore. The result type of OpImageTexelPointer must be the same as the sampled type of OpTypeImage. On translation, the result type is mistakenly fetched from operand list operands[2] while operands[2] corresponds to sampleNum whose type is always uint. This leads to an error if the image type is iimageXXX that is int image.
288 lines
16 KiB
Plaintext
288 lines
16 KiB
Plaintext
spv.memoryScopeSemantics.comp
|
|
// Module Version 10300
|
|
// Generated by (magic number): 80008
|
|
// Id's are bound by 169
|
|
|
|
Capability Shader
|
|
Capability Int64
|
|
Capability Int64Atomics
|
|
Capability StorageImageMultisample
|
|
Capability VulkanMemoryModelKHR
|
|
Capability VulkanMemoryModelDeviceScopeKHR
|
|
Extension "SPV_KHR_vulkan_memory_model"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical VulkanKHR
|
|
EntryPoint GLCompute 4 "main"
|
|
ExecutionMode 4 LocalSize 1 1 1
|
|
Source GLSL 450
|
|
SourceExtension "GL_ARB_gpu_shader_int64"
|
|
SourceExtension "GL_KHR_memory_scope_semantics"
|
|
Name 4 "main"
|
|
Name 8 "origi"
|
|
Name 10 "atomi"
|
|
Name 21 "origu"
|
|
Name 23 "atomu"
|
|
Name 24 "value"
|
|
Name 36 "imagei"
|
|
Name 46 "imageu"
|
|
Name 66 "BufferU"
|
|
MemberName 66(BufferU) 0 "x"
|
|
Name 68 "bufferu"
|
|
Name 73 "y"
|
|
Name 78 "BufferI"
|
|
MemberName 78(BufferI) 0 "x"
|
|
Name 80 "bufferi"
|
|
Name 84 "A"
|
|
MemberName 84(A) 0 "x"
|
|
Name 85 "BufferJ"
|
|
MemberName 85(BufferJ) 0 "a"
|
|
Name 88 "bufferj"
|
|
Name 99 "BufferK"
|
|
MemberName 99(BufferK) 0 "x"
|
|
Name 101 "bufferk"
|
|
Name 111 "imagej"
|
|
Name 123 "samp"
|
|
Name 134 "atomu64"
|
|
Name 139 "atomi64"
|
|
Name 144 "BufferL"
|
|
MemberName 144(BufferL) 0 "x"
|
|
Name 146 "bufferl"
|
|
Name 151 "BufferM"
|
|
MemberName 151(BufferM) 0 "x"
|
|
Name 153 "bufferm"
|
|
Name 165 "imageMS"
|
|
Decorate 36(imagei) DescriptorSet 0
|
|
Decorate 36(imagei) Binding 1
|
|
Decorate 46(imageu) DescriptorSet 0
|
|
Decorate 46(imageu) Binding 0
|
|
MemberDecorate 66(BufferU) 0 Offset 0
|
|
Decorate 66(BufferU) Block
|
|
Decorate 68(bufferu) DescriptorSet 0
|
|
Decorate 68(bufferu) Binding 2
|
|
MemberDecorate 78(BufferI) 0 Offset 0
|
|
Decorate 78(BufferI) Block
|
|
Decorate 80(bufferi) DescriptorSet 0
|
|
Decorate 80(bufferi) Binding 3
|
|
Decorate 83 ArrayStride 4
|
|
MemberDecorate 84(A) 0 Offset 0
|
|
MemberDecorate 85(BufferJ) 0 Offset 0
|
|
Decorate 85(BufferJ) Block
|
|
Decorate 88(bufferj) DescriptorSet 0
|
|
Decorate 88(bufferj) Binding 4
|
|
MemberDecorate 99(BufferK) 0 Offset 0
|
|
Decorate 99(BufferK) Block
|
|
Decorate 101(bufferk) DescriptorSet 0
|
|
Decorate 101(bufferk) Binding 7
|
|
Decorate 111(imagej) DescriptorSet 0
|
|
Decorate 111(imagej) Binding 5
|
|
Decorate 123(samp) DescriptorSet 0
|
|
Decorate 123(samp) Binding 6
|
|
MemberDecorate 144(BufferL) 0 Offset 0
|
|
Decorate 144(BufferL) Block
|
|
Decorate 146(bufferl) DescriptorSet 0
|
|
Decorate 146(bufferl) Binding 8
|
|
MemberDecorate 151(BufferM) 0 Offset 0
|
|
Decorate 151(BufferM) Block
|
|
Decorate 153(bufferm) DescriptorSet 0
|
|
Decorate 153(bufferm) Binding 9
|
|
Decorate 165(imageMS) DescriptorSet 0
|
|
Decorate 165(imageMS) Binding 10
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 1
|
|
7: TypePointer Function 6(int)
|
|
9: TypePointer Workgroup 6(int)
|
|
10(atomi): 9(ptr) Variable Workgroup
|
|
11: 6(int) Constant 3
|
|
12: 6(int) Constant 1
|
|
13: 6(int) Constant 320
|
|
14: 6(int) Constant 4
|
|
15: TypeInt 32 0
|
|
16: 15(int) Constant 5
|
|
17: 15(int) Constant 0
|
|
18: 15(int) Constant 324
|
|
20: TypePointer Function 15(int)
|
|
22: TypePointer Workgroup 15(int)
|
|
23(atomu): 22(ptr) Variable Workgroup
|
|
24(value): 22(ptr) Variable Workgroup
|
|
26: 15(int) Constant 2
|
|
28: 6(int) Constant 64
|
|
29: 6(int) Constant 2
|
|
30: 15(int) Constant 66
|
|
33: 15(int) Constant 68
|
|
34: TypeImage 6(int) 2D nonsampled format:R32i
|
|
35: TypePointer UniformConstant 34
|
|
36(imagei): 35(ptr) Variable UniformConstant
|
|
37: TypeVector 6(int) 2
|
|
38: 6(int) Constant 0
|
|
39: 37(ivec2) ConstantComposite 38 38
|
|
40: TypePointer Image 6(int)
|
|
42: 15(int) Constant 32768
|
|
44: TypeImage 15(int) 2D nonsampled format:R32ui
|
|
45: TypePointer UniformConstant 44
|
|
46(imageu): 45(ptr) Variable UniformConstant
|
|
47: 15(int) Constant 3
|
|
48: TypePointer Image 15(int)
|
|
51: 15(int) Constant 4
|
|
53: 15(int) Constant 7
|
|
58: 6(int) Constant 7
|
|
62: 15(int) Constant 10
|
|
64: 15(int) Constant 322
|
|
66(BufferU): TypeStruct 15(int)
|
|
67: TypePointer StorageBuffer 66(BufferU)
|
|
68(bufferu): 67(ptr) Variable StorageBuffer
|
|
69: TypePointer StorageBuffer 15(int)
|
|
71: 15(int) Constant 1
|
|
78(BufferI): TypeStruct 15(int)
|
|
79: TypePointer StorageBuffer 78(BufferI)
|
|
80(bufferi): 79(ptr) Variable StorageBuffer
|
|
83: TypeArray 15(int) 26
|
|
84(A): TypeStruct 83
|
|
85(BufferJ): TypeStruct 84(A)
|
|
86: TypeArray 85(BufferJ) 26
|
|
87: TypePointer StorageBuffer 86
|
|
88(bufferj): 87(ptr) Variable StorageBuffer
|
|
95: TypePointer StorageBuffer 84(A)
|
|
99(BufferK): TypeStruct 15(int)
|
|
100: TypePointer Uniform 99(BufferK)
|
|
101(bufferk): 100(ptr) Variable Uniform
|
|
102: TypePointer Uniform 15(int)
|
|
107: TypeVector 6(int) 4
|
|
109: TypeArray 34 26
|
|
110: TypePointer UniformConstant 109
|
|
111(imagej): 110(ptr) Variable UniformConstant
|
|
117: 107(ivec4) ConstantComposite 38 38 38 38
|
|
118: TypeFloat 32
|
|
119: TypeImage 118(float) 2D sampled format:Unknown
|
|
120: TypeSampledImage 119
|
|
121: TypeArray 120 26
|
|
122: TypePointer UniformConstant 121
|
|
123(samp): 122(ptr) Variable UniformConstant
|
|
124: TypePointer UniformConstant 120
|
|
127: TypeVector 118(float) 2
|
|
128: 118(float) Constant 0
|
|
129: 127(fvec2) ConstantComposite 128 128
|
|
130: TypeVector 118(float) 4
|
|
132: TypeInt 64 0
|
|
133: TypePointer Workgroup 132(int64_t)
|
|
134(atomu64): 133(ptr) Variable Workgroup
|
|
135:132(int64_t) Constant 7 0
|
|
137: TypeInt 64 1
|
|
138: TypePointer Workgroup 137(int64_t)
|
|
139(atomi64): 138(ptr) Variable Workgroup
|
|
140:137(int64_t) Constant 10 0
|
|
144(BufferL): TypeStruct 15(int)
|
|
145: TypePointer StorageBuffer 144(BufferL)
|
|
146(bufferl): 145(ptr) Variable StorageBuffer
|
|
151(BufferM): TypeStruct 15(int)
|
|
152: TypePointer StorageBuffer 151(BufferM)
|
|
153(bufferm): 152(ptr) Variable StorageBuffer
|
|
161: 6(int) Constant 32768
|
|
163: TypeImage 6(int) 2D multi-sampled nonsampled format:R32i
|
|
164: TypePointer UniformConstant 163
|
|
165(imageMS): 164(ptr) Variable UniformConstant
|
|
167: 6(int) Constant 4294967289
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
8(origi): 7(ptr) Variable Function
|
|
21(origu): 20(ptr) Variable Function
|
|
73(y): 20(ptr) Variable Function
|
|
19: 6(int) AtomicIAdd 10(atomi) 12 18 11
|
|
Store 8(origi) 19
|
|
25: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
|
|
27: 15(int) AtomicAnd 23(atomu) 16 17 25
|
|
Store 21(origu) 27
|
|
31: 6(int) AtomicLoad 10(atomi) 12 30
|
|
Store 8(origi) 31
|
|
32: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
|
|
AtomicStore 23(atomu) 12 33 32
|
|
41: 40(ptr) ImageTexelPointer 36(imagei) 39 17
|
|
43: 6(int) AtomicLoad 41 12 30
|
|
Store 8(origi) 43
|
|
49: 48(ptr) ImageTexelPointer 46(imageu) 39 17
|
|
50: 15(int) AtomicIAdd 49 12 30 47
|
|
Store 21(origu) 50
|
|
52: 48(ptr) ImageTexelPointer 46(imageu) 39 17
|
|
AtomicStore 52 12 33 51
|
|
54: 15(int) AtomicOr 23(atomu) 12 17 53
|
|
Store 21(origu) 54
|
|
55: 15(int) AtomicXor 23(atomu) 12 17 53
|
|
Store 21(origu) 55
|
|
56: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
|
|
57: 15(int) AtomicUMin 23(atomu) 12 17 56
|
|
Store 21(origu) 57
|
|
59: 6(int) AtomicSMax 10(atomi) 12 17 58
|
|
Store 8(origi) 59
|
|
60: 6(int) Load 8(origi)
|
|
61: 6(int) AtomicExchange 10(atomi) 12 17 60
|
|
Store 8(origi) 61
|
|
63: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26
|
|
65: 15(int) AtomicCompareExchange 23(atomu) 12 64 64 63 62
|
|
Store 21(origu) 65
|
|
70: 69(ptr) AccessChain 68(bufferu) 38
|
|
72: 15(int) AtomicIAdd 70 12 18 71
|
|
MemoryBarrier 26 18
|
|
ControlBarrier 26 26 64
|
|
ControlBarrier 26 26 17
|
|
74: 69(ptr) AccessChain 68(bufferu) 38
|
|
75: 15(int) Load 74 MakePointerVisibleKHR NonPrivatePointerKHR 26
|
|
Store 73(y) 75
|
|
76: 15(int) Load 73(y)
|
|
77: 69(ptr) AccessChain 68(bufferu) 38
|
|
Store 77 76 MakePointerAvailableKHR NonPrivatePointerKHR 26
|
|
81: 69(ptr) AccessChain 80(bufferi) 38
|
|
82: 15(int) Load 81 MakePointerVisibleKHR NonPrivatePointerKHR 16
|
|
Store 73(y) 82
|
|
89: 69(ptr) AccessChain 88(bufferj) 38 38 38 12
|
|
90: 15(int) Load 89 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
|
|
Store 73(y) 90
|
|
91: 15(int) Load 73(y)
|
|
92: 69(ptr) AccessChain 80(bufferi) 38
|
|
Store 92 91 MakePointerAvailableKHR NonPrivatePointerKHR 16
|
|
93: 15(int) Load 73(y)
|
|
94: 69(ptr) AccessChain 88(bufferj) 38 38 38 12
|
|
Store 94 93 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16
|
|
96: 95(ptr) AccessChain 88(bufferj) 12 38
|
|
97: 84(A) Load 96 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
|
|
98: 95(ptr) AccessChain 88(bufferj) 38 38
|
|
Store 98 97 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16
|
|
103: 102(ptr) AccessChain 101(bufferk) 38
|
|
104: 15(int) Load 103 NonPrivatePointerKHR
|
|
105: 69(ptr) AccessChain 80(bufferi) 38
|
|
Store 105 104 MakePointerAvailableKHR NonPrivatePointerKHR 16
|
|
106: 34 Load 36(imagei)
|
|
108: 107(ivec4) ImageRead 106 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16
|
|
112: 35(ptr) AccessChain 111(imagej) 38
|
|
113: 34 Load 112
|
|
114: 107(ivec4) ImageRead 113 39 NonPrivateTexelKHR
|
|
115: 35(ptr) AccessChain 111(imagej) 12
|
|
116: 34 Load 115
|
|
ImageWrite 116 39 117 NonPrivateTexelKHR
|
|
125: 124(ptr) AccessChain 123(samp) 38
|
|
126: 120 Load 125
|
|
131: 130(fvec4) ImageSampleExplicitLod 126 129 Lod NonPrivateTexelKHR 128
|
|
136:132(int64_t) AtomicUMax 134(atomu64) 12 17 135
|
|
Store 134(atomu64) 136 MakePointerAvailableKHR NonPrivatePointerKHR 26
|
|
141:132(int64_t) Load 134(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26
|
|
142:137(int64_t) Bitcast 141
|
|
143:137(int64_t) AtomicCompareExchange 139(atomi64) 12 64 64 142 140
|
|
147: 69(ptr) AccessChain 146(bufferl) 38
|
|
148: 15(int) Load 147 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16
|
|
Store 73(y) 148
|
|
149: 69(ptr) AccessChain 146(bufferl) 38
|
|
150: 15(int) AtomicIAdd 149 16 42 71
|
|
154: 69(ptr) AccessChain 153(bufferm) 38
|
|
155: 15(int) AtomicOr 154 16 42 26
|
|
156: 40(ptr) ImageTexelPointer 36(imagei) 39 17
|
|
157: 6(int) AtomicIAdd 156 16 42 11
|
|
158: 69(ptr) AccessChain 68(bufferu) 38
|
|
159: 15(int) AtomicIAdd 158 12 17 51
|
|
160: 69(ptr) AccessChain 68(bufferu) 38
|
|
162: 15(int) AtomicIAdd 160 12 42 16
|
|
166: 40(ptr) ImageTexelPointer 165(imageMS) 39 12
|
|
AtomicStore 166 12 33 14
|
|
168: 40(ptr) ImageTexelPointer 36(imagei) 39 17
|
|
AtomicStore 168 12 33 167
|
|
Return
|
|
FunctionEnd
|