131 lines
6.1 KiB
Plaintext
Executable File
131 lines
6.1 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 99
|
|
// Generated by (magic number): 51a00bb
|
|
// Id's are bound by 77
|
|
|
|
Source ESSL 310
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint GLCompute 4 "main"
|
|
Name 4 "main"
|
|
Name 11 "func(au1;"
|
|
Name 10 "c"
|
|
Name 13 "atoms("
|
|
Name 23 "counter"
|
|
Name 24 "param"
|
|
Name 27 "val"
|
|
Name 31 "countArr"
|
|
Name 41 "origi"
|
|
Name 43 "atomi"
|
|
Name 47 "origu"
|
|
Name 49 "atomu"
|
|
Name 51 "value"
|
|
Name 74 "arrX"
|
|
Name 75 "arrY"
|
|
Name 76 "arrZ"
|
|
Decorate 23(counter) Binding 0
|
|
Decorate 31(countArr) Binding 0
|
|
Decorate 74(arrX) NoStaticUse
|
|
Decorate 75(arrY) NoStaticUse
|
|
Decorate 76(arrZ) NoStaticUse
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
7: TypeInt 32 0
|
|
8: TypePointer Function 7(int)
|
|
9: TypeFunction 7(int) 8(ptr)
|
|
16: 7(int) Constant 1
|
|
17: 7(int) Constant 0
|
|
21: 7(int) Constant 256
|
|
22: TypePointer UniformConstant 7(int)
|
|
23(counter): 22(ptr) Variable UniformConstant
|
|
28: 7(int) Constant 4
|
|
29: TypeArray 7(int) 28
|
|
30: TypePointer UniformConstant 29
|
|
31(countArr): 30(ptr) Variable UniformConstant
|
|
32: TypeInt 32 1
|
|
33: 32(int) Constant 2
|
|
40: TypePointer Function 32(int)
|
|
42: TypePointer WorkgroupLocal 32(int)
|
|
43(atomi): 42(ptr) Variable WorkgroupLocal
|
|
45: 32(int) Constant 3
|
|
48: TypePointer WorkgroupLocal 7(int)
|
|
49(atomu): 48(ptr) Variable WorkgroupLocal
|
|
51(value): 22(ptr) Variable UniformConstant
|
|
55: 7(int) Constant 7
|
|
63: 32(int) Constant 7
|
|
69: 7(int) Constant 10
|
|
72: TypeArray 32(int) 16
|
|
73: TypePointer PrivateGlobal 72
|
|
74(arrX): 73(ptr) Variable PrivateGlobal
|
|
75(arrY): 73(ptr) Variable PrivateGlobal
|
|
76(arrZ): 73(ptr) Variable PrivateGlobal
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
24(param): 8(ptr) Variable Function
|
|
27(val): 8(ptr) Variable Function
|
|
MemoryBarrier 16 21
|
|
25: 7(int) Load 23(counter)
|
|
Store 24(param) 25
|
|
26: 7(int) FunctionCall 11(func(au1;) 24(param)
|
|
34: 22(ptr) AccessChain 31(countArr) 33
|
|
35: 7(int) Load 34
|
|
36: 7(int) AtomicLoad 35 16 17
|
|
37: 7(int) Load 34
|
|
Store 27(val) 37
|
|
38: 7(int) Load 23(counter)
|
|
39: 7(int) AtomicIDecrement 38 16 17
|
|
Branch 6
|
|
6: Label
|
|
Return
|
|
FunctionEnd
|
|
11(func(au1;): 7(int) Function None 9
|
|
10(c): 8(ptr) FunctionParameter
|
|
12: Label
|
|
15: 7(int) Load 10(c)
|
|
18: 7(int) AtomicIIncrement 15 16 17
|
|
19: 7(int) Load 10(c)
|
|
ReturnValue 19
|
|
FunctionEnd
|
|
13(atoms(): 2 Function None 3
|
|
14: Label
|
|
41(origi): 40(ptr) Variable Function
|
|
47(origu): 8(ptr) Variable Function
|
|
44: 32(int) Load 43(atomi)
|
|
46: 32(int) AtomicIAdd 44 16 17 45
|
|
Store 41(origi) 46
|
|
50: 7(int) Load 49(atomu)
|
|
52: 7(int) Load 51(value)
|
|
53: 7(int) AtomicAnd 50 16 17 52
|
|
Store 47(origu) 53
|
|
54: 7(int) Load 49(atomu)
|
|
56: 7(int) AtomicOr 54 16 17 55
|
|
Store 47(origu) 56
|
|
57: 7(int) Load 49(atomu)
|
|
58: 7(int) AtomicXor 57 16 17 55
|
|
Store 47(origu) 58
|
|
59: 7(int) Load 49(atomu)
|
|
60: 7(int) Load 51(value)
|
|
61: 7(int) AtomicSMin 59 16 17 60
|
|
Store 47(origu) 61
|
|
62: 32(int) Load 43(atomi)
|
|
64: 32(int) AtomicSMax 62 16 17 63
|
|
Store 41(origi) 64
|
|
65: 32(int) Load 43(atomi)
|
|
66: 32(int) Load 41(origi)
|
|
67: 32(int) AtomicExchange 65 16 17 66
|
|
Store 41(origi) 67
|
|
68: 7(int) Load 49(atomu)
|
|
70: 7(int) Load 51(value)
|
|
71: 7(int) AtomicCompareExchange 68 16 17 69 70
|
|
Store 47(origu) 71
|
|
Return
|
|
FunctionEnd
|