John Kessenich | cc16fa0 | 2015-12-10 18:01:54 -0700 | [diff] [blame^] | 1 | spv.atomic.comp |
| 2 | Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. |
| 3 | |
| 4 | |
| 5 | Linked compute stage: |
| 6 | |
| 7 | |
| 8 | TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class? |
| 9 | // Module Version 10000 |
| 10 | // Generated by (magic number): 80001 |
| 11 | // Id's are bound by 74 |
| 12 | |
| 13 | Capability Shader |
| 14 | 1: ExtInstImport "GLSL.std.450" |
| 15 | MemoryModel Logical GLSL450 |
| 16 | EntryPoint GLCompute 4 "main" |
| 17 | ExecutionMode 4 LocalSize 1 1 1 |
| 18 | Source ESSL 310 |
| 19 | Name 4 "main" |
| 20 | Name 10 "func(au1;" |
| 21 | Name 9 "c" |
| 22 | Name 12 "atoms(" |
| 23 | Name 20 "counter" |
| 24 | Name 21 "param" |
| 25 | Name 24 "val" |
| 26 | Name 28 "countArr" |
| 27 | Name 35 "origi" |
| 28 | Name 37 "atomi" |
| 29 | Name 40 "origu" |
| 30 | Name 42 "atomu" |
| 31 | Name 44 "value" |
| 32 | Name 61 "dataSSB" |
| 33 | MemberName 61(dataSSB) 0 "f" |
| 34 | MemberName 61(dataSSB) 1 "n_frames_rendered" |
| 35 | Name 63 "result" |
| 36 | Name 71 "arrX" |
| 37 | Name 72 "arrY" |
| 38 | Name 73 "arrZ" |
| 39 | Decorate 20(counter) Binding 0 |
| 40 | Decorate 28(countArr) Binding 0 |
| 41 | MemberDecorate 61(dataSSB) 0 Offset 0 |
| 42 | MemberDecorate 61(dataSSB) 1 Offset 16 |
| 43 | Decorate 61(dataSSB) BufferBlock |
| 44 | Decorate 63(result) Binding 0 |
| 45 | 2: TypeVoid |
| 46 | 3: TypeFunction 2 |
| 47 | 6: TypeInt 32 0 |
| 48 | 7: TypePointer Function 6(int) |
| 49 | 8: TypeFunction 6(int) 7(ptr) |
| 50 | 14: 6(int) Constant 1 |
| 51 | 15: 6(int) Constant 0 |
| 52 | 18: 6(int) Constant 1024 |
| 53 | 19: TypePointer AtomicCounter 6(int) |
| 54 | 20(counter): 19(ptr) Variable AtomicCounter |
| 55 | 25: 6(int) Constant 4 |
| 56 | 26: TypeArray 6(int) 25 |
| 57 | 27: TypePointer AtomicCounter 26 |
| 58 | 28(countArr): 27(ptr) Variable AtomicCounter |
| 59 | 29: TypeInt 32 1 |
| 60 | 30: 29(int) Constant 2 |
| 61 | 34: TypePointer Function 29(int) |
| 62 | 36: TypePointer Workgroup 29(int) |
| 63 | 37(atomi): 36(ptr) Variable Workgroup |
| 64 | 38: 29(int) Constant 3 |
| 65 | 41: TypePointer Workgroup 6(int) |
| 66 | 42(atomu): 41(ptr) Variable Workgroup |
| 67 | 43: TypePointer UniformConstant 6(int) |
| 68 | 44(value): 43(ptr) Variable UniformConstant |
| 69 | 47: 6(int) Constant 7 |
| 70 | 52: 29(int) Constant 7 |
| 71 | 56: 6(int) Constant 10 |
| 72 | 59: TypeFloat 32 |
| 73 | 60: TypeVector 29(int) 4 |
| 74 | 61(dataSSB): TypeStruct 59(float) 60(ivec4) |
| 75 | 62: TypePointer Uniform 61(dataSSB) |
| 76 | 63(result): 62(ptr) Variable Uniform |
| 77 | 64: 29(int) Constant 1 |
| 78 | 65: 6(int) Constant 2 |
| 79 | 66: TypePointer Uniform 29(int) |
| 80 | 69: TypeArray 29(int) 14 |
| 81 | 70: TypePointer Private 69 |
| 82 | 71(arrX): 70(ptr) Variable Private |
| 83 | 72(arrY): 70(ptr) Variable Private |
| 84 | 73(arrZ): 70(ptr) Variable Private |
| 85 | 4(main): 2 Function None 3 |
| 86 | 5: Label |
| 87 | 21(param): 7(ptr) Variable Function |
| 88 | 24(val): 7(ptr) Variable Function |
| 89 | MemoryBarrier 14 18 |
| 90 | 22: 6(int) Load 20(counter) |
| 91 | Store 21(param) 22 |
| 92 | 23: 6(int) FunctionCall 10(func(au1;) 21(param) |
| 93 | 31: 19(ptr) AccessChain 28(countArr) 30 |
| 94 | 32: 6(int) AtomicLoad 31 14 15 |
| 95 | Store 24(val) 32 |
| 96 | 33: 6(int) AtomicIDecrement 20(counter) 14 15 |
| 97 | Return |
| 98 | FunctionEnd |
| 99 | 10(func(au1;): 6(int) Function None 8 |
| 100 | 9(c): 7(ptr) FunctionParameter |
| 101 | 11: Label |
| 102 | 16: 6(int) AtomicIIncrement 9(c) 14 15 |
| 103 | ReturnValue 16 |
| 104 | FunctionEnd |
| 105 | 12(atoms(): 2 Function None 3 |
| 106 | 13: Label |
| 107 | 35(origi): 34(ptr) Variable Function |
| 108 | 40(origu): 7(ptr) Variable Function |
| 109 | 39: 29(int) AtomicIAdd 37(atomi) 14 15 38 |
| 110 | Store 35(origi) 39 |
| 111 | 45: 6(int) Load 44(value) |
| 112 | 46: 6(int) AtomicAnd 42(atomu) 14 15 45 |
| 113 | Store 40(origu) 46 |
| 114 | 48: 6(int) AtomicOr 42(atomu) 14 15 47 |
| 115 | Store 40(origu) 48 |
| 116 | 49: 6(int) AtomicXor 42(atomu) 14 15 47 |
| 117 | Store 40(origu) 49 |
| 118 | 50: 6(int) Load 44(value) |
| 119 | 51: 6(int) AtomicUMin 42(atomu) 14 15 50 |
| 120 | Store 40(origu) 51 |
| 121 | 53: 29(int) AtomicSMax 37(atomi) 14 15 52 |
| 122 | Store 35(origi) 53 |
| 123 | 54: 29(int) Load 35(origi) |
| 124 | 55: 29(int) AtomicExchange 37(atomi) 14 15 54 |
| 125 | Store 35(origi) 55 |
| 126 | 57: 6(int) Load 44(value) |
| 127 | 58: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56 |
| 128 | Store 40(origu) 58 |
| 129 | 67: 66(ptr) AccessChain 63(result) 64 65 |
| 130 | 68: 29(int) AtomicIAdd 67 14 15 64 |
| 131 | Return |
| 132 | FunctionEnd |