glslang/Test/baseResults/spv.atomic.comp.out
Dejan Mircevski ed55bcd9f8 Don't remove SPIR-V blocks before codegen.
A removed block releases its instructions, so Module::idToInstruction
suddenly contains dangling references.  The original motivation for
block removal was to skip some unreachable blocks, but that's already
achieved by InReadableOrder.cpp.

Also updated stale comments.
2016-01-19 21:18:14 -05:00

133 lines
6.3 KiB
Plaintext
Executable File

spv.atomic.comp
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
Linked compute stage:
TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 75
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
ExecutionMode 4 LocalSize 1 1 1
Source ESSL 310
Name 4 "main"
Name 10 "func(au1;"
Name 9 "c"
Name 12 "atoms("
Name 21 "counter"
Name 22 "param"
Name 25 "val"
Name 29 "countArr"
Name 36 "origi"
Name 38 "atomi"
Name 41 "origu"
Name 43 "atomu"
Name 45 "value"
Name 62 "dataSSB"
MemberName 62(dataSSB) 0 "f"
MemberName 62(dataSSB) 1 "n_frames_rendered"
Name 64 "result"
Name 72 "arrX"
Name 73 "arrY"
Name 74 "arrZ"
Decorate 21(counter) Binding 0
Decorate 29(countArr) Binding 0
MemberDecorate 62(dataSSB) 0 Offset 0
MemberDecorate 62(dataSSB) 1 Offset 16
Decorate 62(dataSSB) BufferBlock
Decorate 64(result) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
8: TypeFunction 6(int) 7(ptr)
14: 6(int) Constant 1
15: 6(int) Constant 0
19: 6(int) Constant 1024
20: TypePointer AtomicCounter 6(int)
21(counter): 20(ptr) Variable AtomicCounter
26: 6(int) Constant 4
27: TypeArray 6(int) 26
28: TypePointer AtomicCounter 27
29(countArr): 28(ptr) Variable AtomicCounter
30: TypeInt 32 1
31: 30(int) Constant 2
35: TypePointer Function 30(int)
37: TypePointer Workgroup 30(int)
38(atomi): 37(ptr) Variable Workgroup
39: 30(int) Constant 3
42: TypePointer Workgroup 6(int)
43(atomu): 42(ptr) Variable Workgroup
44: TypePointer UniformConstant 6(int)
45(value): 44(ptr) Variable UniformConstant
48: 6(int) Constant 7
53: 30(int) Constant 7
57: 6(int) Constant 10
60: TypeFloat 32
61: TypeVector 30(int) 4
62(dataSSB): TypeStruct 60(float) 61(ivec4)
63: TypePointer Uniform 62(dataSSB)
64(result): 63(ptr) Variable Uniform
65: 30(int) Constant 1
66: 6(int) Constant 2
67: TypePointer Uniform 30(int)
70: TypeArray 30(int) 14
71: TypePointer Private 70
72(arrX): 71(ptr) Variable Private
73(arrY): 71(ptr) Variable Private
74(arrZ): 71(ptr) Variable Private
4(main): 2 Function None 3
5: Label
22(param): 7(ptr) Variable Function
25(val): 7(ptr) Variable Function
MemoryBarrier 14 19
23: 6(int) Load 21(counter)
Store 22(param) 23
24: 6(int) FunctionCall 10(func(au1;) 22(param)
32: 20(ptr) AccessChain 29(countArr) 31
33: 6(int) AtomicLoad 32 14 15
Store 25(val) 33
34: 6(int) AtomicIDecrement 21(counter) 14 15
Return
FunctionEnd
10(func(au1;): 6(int) Function None 8
9(c): 7(ptr) FunctionParameter
11: Label
16: 6(int) AtomicIIncrement 9(c) 14 15
ReturnValue 16
FunctionEnd
12(atoms(): 2 Function None 3
13: Label
36(origi): 35(ptr) Variable Function
41(origu): 7(ptr) Variable Function
40: 30(int) AtomicIAdd 38(atomi) 14 15 39
Store 36(origi) 40
46: 6(int) Load 45(value)
47: 6(int) AtomicAnd 43(atomu) 14 15 46
Store 41(origu) 47
49: 6(int) AtomicOr 43(atomu) 14 15 48
Store 41(origu) 49
50: 6(int) AtomicXor 43(atomu) 14 15 48
Store 41(origu) 50
51: 6(int) Load 45(value)
52: 6(int) AtomicUMin 43(atomu) 14 15 51
Store 41(origu) 52
54: 30(int) AtomicSMax 38(atomi) 14 15 53
Store 36(origi) 54
55: 30(int) Load 36(origi)
56: 30(int) AtomicExchange 38(atomi) 14 15 55
Store 36(origi) 56
58: 6(int) Load 45(value)
59: 6(int) AtomicCompareExchange 43(atomu) 14 15 15 58 57
Store 41(origu) 59
68: 67(ptr) AccessChain 64(result) 65 66
69: 30(int) AtomicIAdd 68 14 15 65
Return
FunctionEnd