glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out
steve-lunarg dd8287a109 WIP: HLSL: add structuredbuffer pass by reference in fn params
This PR adds the ability to pass structuredbuffer types by reference
as function parameters.

It also changes the representation of structuredbuffers from anonymous
blocks with named members, to named blocks with pseudonymous members.
That should not be an externally visible change.
2017-02-26 11:13:42 -07:00

600 lines
28 KiB
Plaintext

hlsl.structbuffer.atomics.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; (temp 4-component vector of float)
0:5 Function Parameters:
0:5 'pos' (in uint)
0:? Sequence
0:8 AtomicAdd (temp void)
0:8 indirect index (layout(row_major std430 ) buffer uint)
0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 right-shift (temp int)
0:8 Constant:
0:8 8 (const int)
0:8 Constant:
0:8 2 (const int)
0:8 Constant:
0:8 1 (const int)
0:9 move second child to first child (temp uint)
0:9 'u' (temp uint)
0:9 AtomicAdd (temp uint)
0:9 indirect index (layout(row_major std430 ) buffer uint)
0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:9 Constant:
0:9 8 (const int)
0:9 Constant:
0:9 2 (const int)
0:9 Constant:
0:9 1 (const int)
0:10 AtomicAnd (temp void)
0:10 indirect index (layout(row_major std430 ) buffer uint)
0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 right-shift (temp int)
0:10 Constant:
0:10 8 (const int)
0:10 Constant:
0:10 2 (const int)
0:10 Constant:
0:10 1 (const int)
0:11 move second child to first child (temp uint)
0:11 'u' (temp uint)
0:11 AtomicAnd (temp uint)
0:11 indirect index (layout(row_major std430 ) buffer uint)
0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 right-shift (temp int)
0:11 Constant:
0:11 8 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:12 move second child to first child (temp uint)
0:12 'u' (temp uint)
0:12 Convert int to uint (temp uint)
0:12 AtomicCompSwap (temp int)
0:12 indirect index (layout(row_major std430 ) buffer uint)
0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 right-shift (temp int)
0:12 Constant:
0:12 8 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 2 (const int)
0:14 move second child to first child (temp uint)
0:14 'u' (temp uint)
0:14 AtomicExchange (temp uint)
0:14 indirect index (layout(row_major std430 ) buffer uint)
0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
0:14 Constant:
0:14 8 (const int)
0:14 Constant:
0:14 2 (const int)
0:14 Constant:
0:14 1 (const int)
0:15 AtomicMax (temp void)
0:15 indirect index (layout(row_major std430 ) buffer uint)
0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:15 Constant:
0:15 0 (const uint)
0:15 right-shift (temp int)
0:15 Constant:
0:15 8 (const int)
0:15 Constant:
0:15 2 (const int)
0:15 Constant:
0:15 1 (const int)
0:16 move second child to first child (temp uint)
0:16 'u' (temp uint)
0:16 AtomicMax (temp uint)
0:16 indirect index (layout(row_major std430 ) buffer uint)
0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:16 Constant:
0:16 0 (const uint)
0:16 right-shift (temp int)
0:16 Constant:
0:16 8 (const int)
0:16 Constant:
0:16 2 (const int)
0:16 Constant:
0:16 1 (const int)
0:17 AtomicMin (temp void)
0:17 indirect index (layout(row_major std430 ) buffer uint)
0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:17 Constant:
0:17 0 (const uint)
0:17 right-shift (temp int)
0:17 Constant:
0:17 8 (const int)
0:17 Constant:
0:17 2 (const int)
0:17 Constant:
0:17 1 (const int)
0:18 move second child to first child (temp uint)
0:18 'u' (temp uint)
0:18 AtomicMin (temp uint)
0:18 indirect index (layout(row_major std430 ) buffer uint)
0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:18 Constant:
0:18 0 (const uint)
0:18 right-shift (temp int)
0:18 Constant:
0:18 8 (const int)
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
0:18 1 (const int)
0:19 AtomicOr (temp void)
0:19 indirect index (layout(row_major std430 ) buffer uint)
0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:19 Constant:
0:19 0 (const uint)
0:19 right-shift (temp int)
0:19 Constant:
0:19 8 (const int)
0:19 Constant:
0:19 2 (const int)
0:19 Constant:
0:19 1 (const int)
0:20 move second child to first child (temp uint)
0:20 'u' (temp uint)
0:20 AtomicOr (temp uint)
0:20 indirect index (layout(row_major std430 ) buffer uint)
0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:20 Constant:
0:20 0 (const uint)
0:20 right-shift (temp int)
0:20 Constant:
0:20 8 (const int)
0:20 Constant:
0:20 2 (const int)
0:20 Constant:
0:20 1 (const int)
0:21 AtomicXor (temp void)
0:21 indirect index (layout(row_major std430 ) buffer uint)
0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:21 Constant:
0:21 0 (const uint)
0:21 right-shift (temp int)
0:21 Constant:
0:21 8 (const int)
0:21 Constant:
0:21 2 (const int)
0:21 Constant:
0:21 1 (const int)
0:22 move second child to first child (temp uint)
0:22 'u' (temp uint)
0:22 AtomicXor (temp uint)
0:22 indirect index (layout(row_major std430 ) buffer uint)
0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:22 Constant:
0:22 0 (const uint)
0:22 right-shift (temp int)
0:22 Constant:
0:22 8 (const int)
0:22 Constant:
0:22 2 (const int)
0:22 Constant:
0:22 1 (const int)
0:24 Branch: Return with expression
0:24 Construct vec4 (temp 4-component vector of float)
0:24 Convert uint to float (temp float)
0:24 indirect index (layout(row_major std430 ) buffer uint)
0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:24 Constant:
0:24 0 (const uint)
0:24 right-shift (temp int)
0:24 'pos' (in uint)
0:24 Constant:
0:24 2 (const int)
0:5 Function Definition: main( (temp void)
0:5 Function Parameters:
0:? Sequence
0:5 move second child to first child (temp uint)
0:? 'pos' (temp uint)
0:? 'pos' (layout(location=0 ) in uint)
0:5 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:5 Function Definition: @main(u1; (temp 4-component vector of float)
0:5 Function Parameters:
0:5 'pos' (in uint)
0:? Sequence
0:8 AtomicAdd (temp void)
0:8 indirect index (layout(row_major std430 ) buffer uint)
0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:8 Constant:
0:8 0 (const uint)
0:8 right-shift (temp int)
0:8 Constant:
0:8 8 (const int)
0:8 Constant:
0:8 2 (const int)
0:8 Constant:
0:8 1 (const int)
0:9 move second child to first child (temp uint)
0:9 'u' (temp uint)
0:9 AtomicAdd (temp uint)
0:9 indirect index (layout(row_major std430 ) buffer uint)
0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:9 Constant:
0:9 0 (const uint)
0:9 right-shift (temp int)
0:9 Constant:
0:9 8 (const int)
0:9 Constant:
0:9 2 (const int)
0:9 Constant:
0:9 1 (const int)
0:10 AtomicAnd (temp void)
0:10 indirect index (layout(row_major std430 ) buffer uint)
0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:10 Constant:
0:10 0 (const uint)
0:10 right-shift (temp int)
0:10 Constant:
0:10 8 (const int)
0:10 Constant:
0:10 2 (const int)
0:10 Constant:
0:10 1 (const int)
0:11 move second child to first child (temp uint)
0:11 'u' (temp uint)
0:11 AtomicAnd (temp uint)
0:11 indirect index (layout(row_major std430 ) buffer uint)
0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:11 Constant:
0:11 0 (const uint)
0:11 right-shift (temp int)
0:11 Constant:
0:11 8 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:12 move second child to first child (temp uint)
0:12 'u' (temp uint)
0:12 Convert int to uint (temp uint)
0:12 AtomicCompSwap (temp int)
0:12 indirect index (layout(row_major std430 ) buffer uint)
0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:12 Constant:
0:12 0 (const uint)
0:12 right-shift (temp int)
0:12 Constant:
0:12 8 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 2 (const int)
0:14 move second child to first child (temp uint)
0:14 'u' (temp uint)
0:14 AtomicExchange (temp uint)
0:14 indirect index (layout(row_major std430 ) buffer uint)
0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:14 Constant:
0:14 0 (const uint)
0:14 right-shift (temp int)
0:14 Constant:
0:14 8 (const int)
0:14 Constant:
0:14 2 (const int)
0:14 Constant:
0:14 1 (const int)
0:15 AtomicMax (temp void)
0:15 indirect index (layout(row_major std430 ) buffer uint)
0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:15 Constant:
0:15 0 (const uint)
0:15 right-shift (temp int)
0:15 Constant:
0:15 8 (const int)
0:15 Constant:
0:15 2 (const int)
0:15 Constant:
0:15 1 (const int)
0:16 move second child to first child (temp uint)
0:16 'u' (temp uint)
0:16 AtomicMax (temp uint)
0:16 indirect index (layout(row_major std430 ) buffer uint)
0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:16 Constant:
0:16 0 (const uint)
0:16 right-shift (temp int)
0:16 Constant:
0:16 8 (const int)
0:16 Constant:
0:16 2 (const int)
0:16 Constant:
0:16 1 (const int)
0:17 AtomicMin (temp void)
0:17 indirect index (layout(row_major std430 ) buffer uint)
0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:17 Constant:
0:17 0 (const uint)
0:17 right-shift (temp int)
0:17 Constant:
0:17 8 (const int)
0:17 Constant:
0:17 2 (const int)
0:17 Constant:
0:17 1 (const int)
0:18 move second child to first child (temp uint)
0:18 'u' (temp uint)
0:18 AtomicMin (temp uint)
0:18 indirect index (layout(row_major std430 ) buffer uint)
0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:18 Constant:
0:18 0 (const uint)
0:18 right-shift (temp int)
0:18 Constant:
0:18 8 (const int)
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
0:18 1 (const int)
0:19 AtomicOr (temp void)
0:19 indirect index (layout(row_major std430 ) buffer uint)
0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:19 Constant:
0:19 0 (const uint)
0:19 right-shift (temp int)
0:19 Constant:
0:19 8 (const int)
0:19 Constant:
0:19 2 (const int)
0:19 Constant:
0:19 1 (const int)
0:20 move second child to first child (temp uint)
0:20 'u' (temp uint)
0:20 AtomicOr (temp uint)
0:20 indirect index (layout(row_major std430 ) buffer uint)
0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:20 Constant:
0:20 0 (const uint)
0:20 right-shift (temp int)
0:20 Constant:
0:20 8 (const int)
0:20 Constant:
0:20 2 (const int)
0:20 Constant:
0:20 1 (const int)
0:21 AtomicXor (temp void)
0:21 indirect index (layout(row_major std430 ) buffer uint)
0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:21 Constant:
0:21 0 (const uint)
0:21 right-shift (temp int)
0:21 Constant:
0:21 8 (const int)
0:21 Constant:
0:21 2 (const int)
0:21 Constant:
0:21 1 (const int)
0:22 move second child to first child (temp uint)
0:22 'u' (temp uint)
0:22 AtomicXor (temp uint)
0:22 indirect index (layout(row_major std430 ) buffer uint)
0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:22 Constant:
0:22 0 (const uint)
0:22 right-shift (temp int)
0:22 Constant:
0:22 8 (const int)
0:22 Constant:
0:22 2 (const int)
0:22 Constant:
0:22 1 (const int)
0:24 Branch: Return with expression
0:24 Construct vec4 (temp 4-component vector of float)
0:24 Convert uint to float (temp float)
0:24 indirect index (layout(row_major std430 ) buffer uint)
0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint)
0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:24 Constant:
0:24 0 (const uint)
0:24 right-shift (temp int)
0:24 'pos' (in uint)
0:24 Constant:
0:24 2 (const int)
0:5 Function Definition: main( (temp void)
0:5 Function Parameters:
0:? Sequence
0:5 move second child to first child (temp uint)
0:? 'pos' (temp uint)
0:? 'pos' (layout(location=0 ) in uint)
0:5 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:5 Function Call: @main(u1; (temp 4-component vector of float)
0:? 'pos' (temp uint)
0:? Linker Objects
0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'pos' (layout(location=0 ) in uint)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 87
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 80 83
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 12 "@main(u1;"
Name 11 "pos"
Name 15 "sbuf"
MemberName 15(sbuf) 0 "@data"
Name 17 "sbuf"
Name 29 "u"
Name 78 "pos"
Name 80 "pos"
Name 83 "@entryPointOutput"
Name 84 "param"
Decorate 14 ArrayStride 4
MemberDecorate 15(sbuf) 0 Offset 0
Decorate 15(sbuf) BufferBlock
Decorate 17(sbuf) DescriptorSet 0
Decorate 80(pos) Location 0
Decorate 83(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
8: TypeFloat 32
9: TypeVector 8(float) 4
10: TypeFunction 9(fvec4) 7(ptr)
14: TypeRuntimeArray 6(int)
15(sbuf): TypeStruct 14
16: TypePointer Uniform 15(sbuf)
17(sbuf): 16(ptr) Variable Uniform
18: TypeInt 32 1
19: 18(int) Constant 0
20: 18(int) Constant 8
21: 18(int) Constant 2
23: TypePointer Uniform 6(int)
25: 18(int) Constant 1
26: 6(int) Constant 1
27: 6(int) Constant 0
79: TypePointer Input 6(int)
80(pos): 79(ptr) Variable Input
82: TypePointer Output 9(fvec4)
83(@entryPointOutput): 82(ptr) Variable Output
4(main): 2 Function None 3
5: Label
78(pos): 7(ptr) Variable Function
84(param): 7(ptr) Variable Function
81: 6(int) Load 80(pos)
Store 78(pos) 81
85: 6(int) Load 78(pos)
Store 84(param) 85
86: 9(fvec4) FunctionCall 12(@main(u1;) 84(param)
Store 83(@entryPointOutput) 86
Return
FunctionEnd
12(@main(u1;): 9(fvec4) Function None 10
11(pos): 7(ptr) FunctionParameter
13: Label
29(u): 7(ptr) Variable Function
22: 18(int) ShiftRightArithmetic 20 21
24: 23(ptr) AccessChain 17(sbuf) 19 22
28: 2 AtomicIAdd 24 26 27 25
30: 18(int) ShiftRightArithmetic 20 21
31: 23(ptr) AccessChain 17(sbuf) 19 30
32: 6(int) AtomicIAdd 31 26 27 25
Store 29(u) 32
33: 18(int) ShiftRightArithmetic 20 21
34: 23(ptr) AccessChain 17(sbuf) 19 33
35: 2 AtomicAnd 34 26 27 25
36: 18(int) ShiftRightArithmetic 20 21
37: 23(ptr) AccessChain 17(sbuf) 19 36
38: 6(int) AtomicAnd 37 26 27 25
Store 29(u) 38
39: 18(int) ShiftRightArithmetic 20 21
40: 23(ptr) AccessChain 17(sbuf) 19 39
41: 18(int) AtomicCompareExchange 40 26 27 27 21 25
42: 6(int) Bitcast 41
Store 29(u) 42
43: 18(int) ShiftRightArithmetic 20 21
44: 23(ptr) AccessChain 17(sbuf) 19 43
45: 6(int) AtomicExchange 44 26 27 25
Store 29(u) 45
46: 18(int) ShiftRightArithmetic 20 21
47: 23(ptr) AccessChain 17(sbuf) 19 46
48: 2 AtomicSMax 47 26 27 25
49: 18(int) ShiftRightArithmetic 20 21
50: 23(ptr) AccessChain 17(sbuf) 19 49
51: 6(int) AtomicUMax 50 26 27 25
Store 29(u) 51
52: 18(int) ShiftRightArithmetic 20 21
53: 23(ptr) AccessChain 17(sbuf) 19 52
54: 2 AtomicSMin 53 26 27 25
55: 18(int) ShiftRightArithmetic 20 21
56: 23(ptr) AccessChain 17(sbuf) 19 55
57: 6(int) AtomicUMin 56 26 27 25
Store 29(u) 57
58: 18(int) ShiftRightArithmetic 20 21
59: 23(ptr) AccessChain 17(sbuf) 19 58
60: 2 AtomicOr 59 26 27 25
61: 18(int) ShiftRightArithmetic 20 21
62: 23(ptr) AccessChain 17(sbuf) 19 61
63: 6(int) AtomicOr 62 26 27 25
Store 29(u) 63
64: 18(int) ShiftRightArithmetic 20 21
65: 23(ptr) AccessChain 17(sbuf) 19 64
66: 2 AtomicXor 65 26 27 25
67: 18(int) ShiftRightArithmetic 20 21
68: 23(ptr) AccessChain 17(sbuf) 19 67
69: 6(int) AtomicXor 68 26 27 25
Store 29(u) 69
70: 6(int) Load 11(pos)
71: 18(int) ShiftRightLogical 70 21
72: 23(ptr) AccessChain 17(sbuf) 19 71
73: 6(int) Load 72
74: 8(float) ConvertUToF 73
75: 9(fvec4) CompositeConstruct 74 74 74 74
ReturnValue 75
FunctionEnd