Structured control-flow rules allow leaving the middle of a construct through a return, but not through a jump to a block that does a return. Addresses issue #58.
198 lines
9.0 KiB
Plaintext
Executable File
198 lines
9.0 KiB
Plaintext
Executable File
spv.forLoop.frag
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
// Module Version 99
|
|
// Generated by (magic number): 51a00bb
|
|
// Id's are bound by 122
|
|
|
|
Source GLSL 130
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "main"
|
|
ExecutionMode 4 OriginLowerLeft
|
|
Name 4 "main"
|
|
Name 9 "color"
|
|
Name 11 "BaseColor"
|
|
Name 15 "i"
|
|
Name 22 "Count"
|
|
Name 27 "bigColor"
|
|
Name 35 "gl_FragColor"
|
|
Name 38 "sum"
|
|
Name 40 "i"
|
|
Name 50 "v4"
|
|
Name 59 "i"
|
|
Name 65 "tv4"
|
|
Name 83 "r"
|
|
Name 89 "i"
|
|
Name 97 "f"
|
|
Name 110 "i"
|
|
Decorate 11(BaseColor) Smooth
|
|
Decorate 35(gl_FragColor) BuiltIn FragColor
|
|
Decorate 97(f) Smooth
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeVector 6(float) 4
|
|
8: TypePointer Function 7(fvec4)
|
|
10: TypePointer Input 7(fvec4)
|
|
11(BaseColor): 10(ptr) Variable Input
|
|
13: TypeInt 32 1
|
|
14: TypePointer Function 13(int)
|
|
16: 13(int) Constant 0
|
|
21: TypePointer UniformConstant 13(int)
|
|
22(Count): 21(ptr) Variable UniformConstant
|
|
24: TypeBool
|
|
26: TypePointer UniformConstant 7(fvec4)
|
|
27(bigColor): 26(ptr) Variable UniformConstant
|
|
32: 13(int) Constant 1
|
|
34: TypePointer Output 7(fvec4)
|
|
35(gl_FragColor): 34(ptr) Variable Output
|
|
37: TypePointer Function 6(float)
|
|
39: 6(float) Constant 0
|
|
45: 13(int) Constant 4
|
|
47: TypeInt 32 0
|
|
48: TypeVector 47(int) 4
|
|
49: TypePointer UniformConstant 48(ivec4)
|
|
50(v4): 49(ptr) Variable UniformConstant
|
|
70: 47(int) Constant 4
|
|
84: TypeVector 6(float) 3
|
|
96: TypePointer Input 6(float)
|
|
97(f): 96(ptr) Variable Input
|
|
115: 13(int) Constant 16
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
9(color): 8(ptr) Variable Function
|
|
15(i): 14(ptr) Variable Function
|
|
38(sum): 37(ptr) Variable Function
|
|
40(i): 14(ptr) Variable Function
|
|
59(i): 14(ptr) Variable Function
|
|
65(tv4): 8(ptr) Variable Function
|
|
83(r): 8(ptr) Variable Function
|
|
89(i): 14(ptr) Variable Function
|
|
110(i): 14(ptr) Variable Function
|
|
12: 7(fvec4) Load 11(BaseColor)
|
|
Store 9(color) 12
|
|
Store 15(i) 16
|
|
Branch 17
|
|
17: Label
|
|
20: 13(int) Load 15(i)
|
|
23: 13(int) Load 22(Count)
|
|
25: 24(bool) SLessThan 20 23
|
|
LoopMerge 18 None
|
|
BranchConditional 25 19 18
|
|
19: Label
|
|
28: 7(fvec4) Load 27(bigColor)
|
|
29: 7(fvec4) Load 9(color)
|
|
30: 7(fvec4) FAdd 29 28
|
|
Store 9(color) 30
|
|
31: 13(int) Load 15(i)
|
|
33: 13(int) IAdd 31 32
|
|
Store 15(i) 33
|
|
Branch 17
|
|
18: Label
|
|
36: 7(fvec4) Load 9(color)
|
|
Store 35(gl_FragColor) 36
|
|
Store 38(sum) 39
|
|
Store 40(i) 16
|
|
Branch 41
|
|
41: Label
|
|
44: 13(int) Load 40(i)
|
|
46: 24(bool) SLessThan 44 45
|
|
LoopMerge 42 None
|
|
BranchConditional 46 43 42
|
|
43: Label
|
|
51: 13(int) Load 40(i)
|
|
52: 48(ivec4) Load 50(v4)
|
|
53: 47(int) VectorExtractDynamic 52 51
|
|
54: 6(float) ConvertUToF 53
|
|
55: 6(float) Load 38(sum)
|
|
56: 6(float) FAdd 55 54
|
|
Store 38(sum) 56
|
|
57: 13(int) Load 40(i)
|
|
58: 13(int) IAdd 57 32
|
|
Store 40(i) 58
|
|
Branch 41
|
|
42: Label
|
|
Store 59(i) 16
|
|
Branch 60
|
|
60: Label
|
|
63: 13(int) Load 59(i)
|
|
64: 24(bool) SLessThan 63 45
|
|
LoopMerge 61 None
|
|
BranchConditional 64 62 61
|
|
62: Label
|
|
66: 13(int) Load 59(i)
|
|
67: 13(int) Load 59(i)
|
|
68: 48(ivec4) Load 50(v4)
|
|
69: 47(int) VectorExtractDynamic 68 67
|
|
71: 47(int) IMul 69 70
|
|
72: 6(float) ConvertUToF 71
|
|
73: 7(fvec4) Load 65(tv4)
|
|
74: 7(fvec4) VectorInsertDynamic 73 72 66
|
|
Store 65(tv4) 74
|
|
75: 13(int) Load 59(i)
|
|
76: 13(int) IAdd 75 32
|
|
Store 59(i) 76
|
|
Branch 60
|
|
61: Label
|
|
77: 6(float) Load 38(sum)
|
|
78: 7(fvec4) CompositeConstruct 77 77 77 77
|
|
79: 7(fvec4) Load 65(tv4)
|
|
80: 7(fvec4) FAdd 78 79
|
|
81: 7(fvec4) Load 35(gl_FragColor)
|
|
82: 7(fvec4) FAdd 81 80
|
|
Store 35(gl_FragColor) 82
|
|
85: 7(fvec4) Load 11(BaseColor)
|
|
86: 84(fvec3) VectorShuffle 85 85 0 1 2
|
|
87: 7(fvec4) Load 83(r)
|
|
88: 7(fvec4) VectorShuffle 87 86 4 5 6 3
|
|
Store 83(r) 88
|
|
Store 89(i) 16
|
|
Branch 90
|
|
90: Label
|
|
93: 13(int) Load 89(i)
|
|
94: 13(int) Load 22(Count)
|
|
95: 24(bool) SLessThan 93 94
|
|
LoopMerge 91 None
|
|
BranchConditional 95 92 91
|
|
92: Label
|
|
98: 6(float) Load 97(f)
|
|
99: 7(fvec4) Load 83(r)
|
|
100: 7(fvec4) CompositeInsert 98 99 3
|
|
Store 83(r) 100
|
|
101: 13(int) Load 89(i)
|
|
102: 13(int) IAdd 101 32
|
|
Store 89(i) 102
|
|
Branch 90
|
|
91: Label
|
|
103: 7(fvec4) Load 83(r)
|
|
104: 84(fvec3) VectorShuffle 103 103 0 1 2
|
|
105: 7(fvec4) Load 35(gl_FragColor)
|
|
106: 84(fvec3) VectorShuffle 105 105 0 1 2
|
|
107: 84(fvec3) FAdd 106 104
|
|
108: 7(fvec4) Load 35(gl_FragColor)
|
|
109: 7(fvec4) VectorShuffle 108 107 4 5 6 3
|
|
Store 35(gl_FragColor) 109
|
|
Store 110(i) 16
|
|
Branch 111
|
|
111: Label
|
|
114: 13(int) Load 110(i)
|
|
116: 24(bool) SLessThan 114 115
|
|
LoopMerge 112 None
|
|
BranchConditional 116 113 112
|
|
113: Label
|
|
117: 6(float) Load 97(f)
|
|
118: 7(fvec4) Load 35(gl_FragColor)
|
|
119: 7(fvec4) VectorTimesScalar 118 117
|
|
Store 35(gl_FragColor) 119
|
|
120: 13(int) Load 110(i)
|
|
121: 13(int) IAdd 120 45
|
|
Store 110(i) 121
|
|
Branch 111
|
|
112: Label
|
|
Return
|
|
FunctionEnd
|