SPV return from main: Simplify a legacy design such returns are not jumps to exit block.
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.
This commit is contained in:
parent
5f5b205ce9
commit
e770b3e6cf
74 changed files with 9648 additions and 9816 deletions
|
|
@ -5,7 +5,7 @@ Linked fragment stage:
|
|||
|
||||
// Module Version 99
|
||||
// Generated by (magic number): 51a00bb
|
||||
// Id's are bound by 112
|
||||
// Id's are bound by 111
|
||||
|
||||
Source GLSL 110
|
||||
Capability Shader
|
||||
|
|
@ -14,165 +14,163 @@ Linked fragment stage:
|
|||
EntryPoint Fragment 4 "main"
|
||||
ExecutionMode 4 OriginLowerLeft
|
||||
Name 4 "main"
|
||||
Name 9 "blendscale"
|
||||
Name 13 "w"
|
||||
Name 15 "u"
|
||||
Name 17 "w_dep"
|
||||
Name 19 "w_reorder"
|
||||
Name 21 "w2"
|
||||
Name 23 "w_flow"
|
||||
Name 30 "t"
|
||||
Name 49 "w_undef"
|
||||
Name 56 "p"
|
||||
Name 70 "gl_FragColor"
|
||||
Name 82 "c"
|
||||
Name 84 "rep"
|
||||
Name 111 "blend"
|
||||
Decorate 30(t) Smooth
|
||||
Decorate 70(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 111(blend) NoStaticUse
|
||||
Name 8 "blendscale"
|
||||
Name 12 "w"
|
||||
Name 14 "u"
|
||||
Name 16 "w_dep"
|
||||
Name 18 "w_reorder"
|
||||
Name 20 "w2"
|
||||
Name 22 "w_flow"
|
||||
Name 29 "t"
|
||||
Name 48 "w_undef"
|
||||
Name 55 "p"
|
||||
Name 69 "gl_FragColor"
|
||||
Name 81 "c"
|
||||
Name 83 "rep"
|
||||
Name 110 "blend"
|
||||
Decorate 29(t) Smooth
|
||||
Decorate 69(gl_FragColor) BuiltIn FragColor
|
||||
Decorate 110(blend) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeFloat 32
|
||||
8: TypePointer Function 7(float)
|
||||
10: 7(float) Constant 1071971828
|
||||
11: TypeVector 7(float) 4
|
||||
12: TypePointer Function 11(fvec4)
|
||||
14: TypePointer UniformConstant 11(fvec4)
|
||||
15(u): 14(ptr) Variable UniformConstant
|
||||
28: TypeVector 7(float) 2
|
||||
29: TypePointer Input 28(fvec2)
|
||||
30(t): 29(ptr) Variable Input
|
||||
54: TypeBool
|
||||
55: TypePointer UniformConstant 54(bool)
|
||||
56(p): 55(ptr) Variable UniformConstant
|
||||
69: TypePointer Output 11(fvec4)
|
||||
70(gl_FragColor): 69(ptr) Variable Output
|
||||
81: TypePointer Function 28(fvec2)
|
||||
85: 7(float) Constant 0
|
||||
86: 7(float) Constant 1065353216
|
||||
87: 11(fvec4) ConstantComposite 85 85 85 86
|
||||
93: 7(float) Constant 3212836864
|
||||
104: 7(float) Constant 1079613850
|
||||
110: TypePointer UniformConstant 7(float)
|
||||
111(blend): 110(ptr) Variable UniformConstant
|
||||
6: TypeFloat 32
|
||||
7: TypePointer Function 6(float)
|
||||
9: 6(float) Constant 1071971828
|
||||
10: TypeVector 6(float) 4
|
||||
11: TypePointer Function 10(fvec4)
|
||||
13: TypePointer UniformConstant 10(fvec4)
|
||||
14(u): 13(ptr) Variable UniformConstant
|
||||
27: TypeVector 6(float) 2
|
||||
28: TypePointer Input 27(fvec2)
|
||||
29(t): 28(ptr) Variable Input
|
||||
53: TypeBool
|
||||
54: TypePointer UniformConstant 53(bool)
|
||||
55(p): 54(ptr) Variable UniformConstant
|
||||
68: TypePointer Output 10(fvec4)
|
||||
69(gl_FragColor): 68(ptr) Variable Output
|
||||
80: TypePointer Function 27(fvec2)
|
||||
84: 6(float) Constant 0
|
||||
85: 6(float) Constant 1065353216
|
||||
86: 10(fvec4) ConstantComposite 84 84 84 85
|
||||
92: 6(float) Constant 3212836864
|
||||
103: 6(float) Constant 1079613850
|
||||
109: TypePointer UniformConstant 6(float)
|
||||
110(blend): 109(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(blendscale): 8(ptr) Variable Function
|
||||
13(w): 12(ptr) Variable Function
|
||||
17(w_dep): 12(ptr) Variable Function
|
||||
19(w_reorder): 12(ptr) Variable Function
|
||||
21(w2): 12(ptr) Variable Function
|
||||
23(w_flow): 12(ptr) Variable Function
|
||||
49(w_undef): 12(ptr) Variable Function
|
||||
82(c): 81(ptr) Variable Function
|
||||
84(rep): 12(ptr) Variable Function
|
||||
Store 9(blendscale) 10
|
||||
16: 11(fvec4) Load 15(u)
|
||||
Store 13(w) 16
|
||||
18: 11(fvec4) Load 15(u)
|
||||
Store 17(w_dep) 18
|
||||
20: 11(fvec4) Load 15(u)
|
||||
Store 19(w_reorder) 20
|
||||
22: 11(fvec4) Load 15(u)
|
||||
Store 21(w2) 22
|
||||
24: 11(fvec4) Load 15(u)
|
||||
Store 23(w_flow) 24
|
||||
25: 7(float) Load 9(blendscale)
|
||||
26: 11(fvec4) Load 19(w_reorder)
|
||||
27: 11(fvec4) CompositeInsert 25 26 2
|
||||
Store 19(w_reorder) 27
|
||||
31: 28(fvec2) Load 30(t)
|
||||
32: 11(fvec4) Load 13(w)
|
||||
33: 11(fvec4) VectorShuffle 32 31 0 5 2 4
|
||||
Store 13(w) 33
|
||||
34: 7(float) Load 9(blendscale)
|
||||
35: 11(fvec4) Load 19(w_reorder)
|
||||
36: 11(fvec4) CompositeInsert 34 35 0
|
||||
Store 19(w_reorder) 36
|
||||
37: 11(fvec4) Load 15(u)
|
||||
38: 11(fvec4) VectorShuffle 37 37 2 3 0 1
|
||||
Store 21(w2) 38
|
||||
39: 7(float) Load 9(blendscale)
|
||||
40: 11(fvec4) Load 19(w_reorder)
|
||||
41: 11(fvec4) CompositeInsert 39 40 1
|
||||
Store 19(w_reorder) 41
|
||||
42: 11(fvec4) Load 21(w2)
|
||||
43: 28(fvec2) VectorShuffle 42 42 0 2
|
||||
44: 11(fvec4) Load 17(w_dep)
|
||||
45: 11(fvec4) VectorShuffle 44 43 4 5 2 3
|
||||
Store 17(w_dep) 45
|
||||
46: 28(fvec2) Load 30(t)
|
||||
47: 11(fvec4) Load 17(w_dep)
|
||||
48: 11(fvec4) VectorShuffle 47 46 0 1 4 5
|
||||
Store 17(w_dep) 48
|
||||
50: 11(fvec4) Load 15(u)
|
||||
51: 28(fvec2) VectorShuffle 50 50 2 3
|
||||
52: 11(fvec4) Load 49(w_undef)
|
||||
53: 11(fvec4) VectorShuffle 52 51 4 5 2 3
|
||||
Store 49(w_undef) 53
|
||||
57: 54(bool) Load 56(p)
|
||||
SelectionMerge 59 None
|
||||
BranchConditional 57 58 64
|
||||
58: Label
|
||||
60: 28(fvec2) Load 30(t)
|
||||
61: 7(float) CompositeExtract 60 0
|
||||
62: 11(fvec4) Load 23(w_flow)
|
||||
63: 11(fvec4) CompositeInsert 61 62 0
|
||||
Store 23(w_flow) 63
|
||||
Branch 59
|
||||
64: Label
|
||||
65: 28(fvec2) Load 30(t)
|
||||
66: 7(float) CompositeExtract 65 1
|
||||
67: 11(fvec4) Load 23(w_flow)
|
||||
68: 11(fvec4) CompositeInsert 66 67 0
|
||||
Store 23(w_flow) 68
|
||||
Branch 59
|
||||
59: Label
|
||||
71: 11(fvec4) Load 19(w_reorder)
|
||||
72: 11(fvec4) Load 49(w_undef)
|
||||
73: 11(fvec4) Load 13(w)
|
||||
74: 11(fvec4) Load 21(w2)
|
||||
75: 11(fvec4) FMul 73 74
|
||||
76: 11(fvec4) Load 17(w_dep)
|
||||
77: 11(fvec4) FMul 75 76
|
||||
78: 11(fvec4) Load 23(w_flow)
|
||||
79: 11(fvec4) FMul 77 78
|
||||
80: 11(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 71 72 79
|
||||
Store 70(gl_FragColor) 80
|
||||
83: 28(fvec2) Load 30(t)
|
||||
Store 82(c) 83
|
||||
Store 84(rep) 87
|
||||
88: 28(fvec2) Load 82(c)
|
||||
89: 7(float) CompositeExtract 88 0
|
||||
90: 54(bool) FOrdLessThan 89 85
|
||||
SelectionMerge 92 None
|
||||
BranchConditional 90 91 92
|
||||
91: Label
|
||||
94: 28(fvec2) Load 82(c)
|
||||
95: 7(float) CompositeExtract 94 0
|
||||
96: 7(float) FMul 95 93
|
||||
97: 28(fvec2) Load 82(c)
|
||||
98: 28(fvec2) CompositeInsert 96 97 0
|
||||
Store 82(c) 98
|
||||
Branch 92
|
||||
92: Label
|
||||
99: 28(fvec2) Load 82(c)
|
||||
100: 7(float) CompositeExtract 99 0
|
||||
101: 54(bool) FOrdLessThanEqual 100 86
|
||||
SelectionMerge 103 None
|
||||
BranchConditional 101 102 103
|
||||
102: Label
|
||||
105: 11(fvec4) Load 84(rep)
|
||||
106: 11(fvec4) CompositeInsert 104 105 0
|
||||
Store 84(rep) 106
|
||||
Branch 103
|
||||
103: Label
|
||||
107: 11(fvec4) Load 84(rep)
|
||||
108: 11(fvec4) Load 70(gl_FragColor)
|
||||
109: 11(fvec4) FAdd 108 107
|
||||
Store 70(gl_FragColor) 109
|
||||
Branch 6
|
||||
6: Label
|
||||
8(blendscale): 7(ptr) Variable Function
|
||||
12(w): 11(ptr) Variable Function
|
||||
16(w_dep): 11(ptr) Variable Function
|
||||
18(w_reorder): 11(ptr) Variable Function
|
||||
20(w2): 11(ptr) Variable Function
|
||||
22(w_flow): 11(ptr) Variable Function
|
||||
48(w_undef): 11(ptr) Variable Function
|
||||
81(c): 80(ptr) Variable Function
|
||||
83(rep): 11(ptr) Variable Function
|
||||
Store 8(blendscale) 9
|
||||
15: 10(fvec4) Load 14(u)
|
||||
Store 12(w) 15
|
||||
17: 10(fvec4) Load 14(u)
|
||||
Store 16(w_dep) 17
|
||||
19: 10(fvec4) Load 14(u)
|
||||
Store 18(w_reorder) 19
|
||||
21: 10(fvec4) Load 14(u)
|
||||
Store 20(w2) 21
|
||||
23: 10(fvec4) Load 14(u)
|
||||
Store 22(w_flow) 23
|
||||
24: 6(float) Load 8(blendscale)
|
||||
25: 10(fvec4) Load 18(w_reorder)
|
||||
26: 10(fvec4) CompositeInsert 24 25 2
|
||||
Store 18(w_reorder) 26
|
||||
30: 27(fvec2) Load 29(t)
|
||||
31: 10(fvec4) Load 12(w)
|
||||
32: 10(fvec4) VectorShuffle 31 30 0 5 2 4
|
||||
Store 12(w) 32
|
||||
33: 6(float) Load 8(blendscale)
|
||||
34: 10(fvec4) Load 18(w_reorder)
|
||||
35: 10(fvec4) CompositeInsert 33 34 0
|
||||
Store 18(w_reorder) 35
|
||||
36: 10(fvec4) Load 14(u)
|
||||
37: 10(fvec4) VectorShuffle 36 36 2 3 0 1
|
||||
Store 20(w2) 37
|
||||
38: 6(float) Load 8(blendscale)
|
||||
39: 10(fvec4) Load 18(w_reorder)
|
||||
40: 10(fvec4) CompositeInsert 38 39 1
|
||||
Store 18(w_reorder) 40
|
||||
41: 10(fvec4) Load 20(w2)
|
||||
42: 27(fvec2) VectorShuffle 41 41 0 2
|
||||
43: 10(fvec4) Load 16(w_dep)
|
||||
44: 10(fvec4) VectorShuffle 43 42 4 5 2 3
|
||||
Store 16(w_dep) 44
|
||||
45: 27(fvec2) Load 29(t)
|
||||
46: 10(fvec4) Load 16(w_dep)
|
||||
47: 10(fvec4) VectorShuffle 46 45 0 1 4 5
|
||||
Store 16(w_dep) 47
|
||||
49: 10(fvec4) Load 14(u)
|
||||
50: 27(fvec2) VectorShuffle 49 49 2 3
|
||||
51: 10(fvec4) Load 48(w_undef)
|
||||
52: 10(fvec4) VectorShuffle 51 50 4 5 2 3
|
||||
Store 48(w_undef) 52
|
||||
56: 53(bool) Load 55(p)
|
||||
SelectionMerge 58 None
|
||||
BranchConditional 56 57 63
|
||||
57: Label
|
||||
59: 27(fvec2) Load 29(t)
|
||||
60: 6(float) CompositeExtract 59 0
|
||||
61: 10(fvec4) Load 22(w_flow)
|
||||
62: 10(fvec4) CompositeInsert 60 61 0
|
||||
Store 22(w_flow) 62
|
||||
Branch 58
|
||||
63: Label
|
||||
64: 27(fvec2) Load 29(t)
|
||||
65: 6(float) CompositeExtract 64 1
|
||||
66: 10(fvec4) Load 22(w_flow)
|
||||
67: 10(fvec4) CompositeInsert 65 66 0
|
||||
Store 22(w_flow) 67
|
||||
Branch 58
|
||||
58: Label
|
||||
70: 10(fvec4) Load 18(w_reorder)
|
||||
71: 10(fvec4) Load 48(w_undef)
|
||||
72: 10(fvec4) Load 12(w)
|
||||
73: 10(fvec4) Load 20(w2)
|
||||
74: 10(fvec4) FMul 72 73
|
||||
75: 10(fvec4) Load 16(w_dep)
|
||||
76: 10(fvec4) FMul 74 75
|
||||
77: 10(fvec4) Load 22(w_flow)
|
||||
78: 10(fvec4) FMul 76 77
|
||||
79: 10(fvec4) ExtInst 1(GLSL.std.450) 46(Mix) 70 71 78
|
||||
Store 69(gl_FragColor) 79
|
||||
82: 27(fvec2) Load 29(t)
|
||||
Store 81(c) 82
|
||||
Store 83(rep) 86
|
||||
87: 27(fvec2) Load 81(c)
|
||||
88: 6(float) CompositeExtract 87 0
|
||||
89: 53(bool) FOrdLessThan 88 84
|
||||
SelectionMerge 91 None
|
||||
BranchConditional 89 90 91
|
||||
90: Label
|
||||
93: 27(fvec2) Load 81(c)
|
||||
94: 6(float) CompositeExtract 93 0
|
||||
95: 6(float) FMul 94 92
|
||||
96: 27(fvec2) Load 81(c)
|
||||
97: 27(fvec2) CompositeInsert 95 96 0
|
||||
Store 81(c) 97
|
||||
Branch 91
|
||||
91: Label
|
||||
98: 27(fvec2) Load 81(c)
|
||||
99: 6(float) CompositeExtract 98 0
|
||||
100: 53(bool) FOrdLessThanEqual 99 85
|
||||
SelectionMerge 102 None
|
||||
BranchConditional 100 101 102
|
||||
101: Label
|
||||
104: 10(fvec4) Load 83(rep)
|
||||
105: 10(fvec4) CompositeInsert 103 104 0
|
||||
Store 83(rep) 105
|
||||
Branch 102
|
||||
102: Label
|
||||
106: 10(fvec4) Load 83(rep)
|
||||
107: 10(fvec4) Load 69(gl_FragColor)
|
||||
108: 10(fvec4) FAdd 107 106
|
||||
Store 69(gl_FragColor) 108
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue