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:
John Kessenich 2015-09-14 20:58:02 -06:00
parent 5f5b205ce9
commit e770b3e6cf
74 changed files with 9648 additions and 9816 deletions

View file

@ -5,7 +5,7 @@ Linked fragment stage:
// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 53
// Id's are bound by 52
Source GLSL 130
Capability Shader
@ -14,69 +14,67 @@ Linked fragment stage:
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main"
Name 10 "texColor"
Name 15 "color"
Name 26 "inColor"
Name 36 "alpha"
Name 47 "gl_FragColor"
Name 52 "texSampler2D"
Decorate 47(gl_FragColor) BuiltIn FragColor
Decorate 52(texSampler2D) NoStaticUse
Name 9 "texColor"
Name 14 "color"
Name 25 "inColor"
Name 35 "alpha"
Name 46 "gl_FragColor"
Name 51 "texSampler2D"
Decorate 46(gl_FragColor) BuiltIn FragColor
Decorate 51(texSampler2D) NoStaticUse
2: TypeVoid
3: TypeFunction 2
7: TypeFloat 32
8: TypeVector 7(float) 4
9: TypePointer Function 8(fvec4)
11: TypeInt 32 0
12: 11(int) Constant 6
13: TypeArray 8(fvec4) 12
14: TypePointer UniformConstant 13
15(color): 14(ptr) Variable UniformConstant
16: TypeInt 32 1
17: 16(int) Constant 1
18: TypePointer UniformConstant 8(fvec4)
24: TypeVector 7(float) 3
25: TypePointer UniformConstant 24(fvec3)
26(inColor): 25(ptr) Variable UniformConstant
33: 11(int) Constant 16
34: TypeArray 7(float) 33
35: TypePointer UniformConstant 34
36(alpha): 35(ptr) Variable UniformConstant
37: 16(int) Constant 12
38: TypePointer UniformConstant 7(float)
46: TypePointer Output 8(fvec4)
47(gl_FragColor): 46(ptr) Variable Output
49: TypeImage 7(float) 2D sampled format:Unknown
50: TypeSampledImage 49
51: TypePointer UniformConstant 50
52(texSampler2D): 51(ptr) Variable UniformConstant
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeInt 32 0
11: 10(int) Constant 6
12: TypeArray 7(fvec4) 11
13: TypePointer UniformConstant 12
14(color): 13(ptr) Variable UniformConstant
15: TypeInt 32 1
16: 15(int) Constant 1
17: TypePointer UniformConstant 7(fvec4)
23: TypeVector 6(float) 3
24: TypePointer UniformConstant 23(fvec3)
25(inColor): 24(ptr) Variable UniformConstant
32: 10(int) Constant 16
33: TypeArray 6(float) 32
34: TypePointer UniformConstant 33
35(alpha): 34(ptr) Variable UniformConstant
36: 15(int) Constant 12
37: TypePointer UniformConstant 6(float)
45: TypePointer Output 7(fvec4)
46(gl_FragColor): 45(ptr) Variable Output
48: TypeImage 6(float) 2D sampled format:Unknown
49: TypeSampledImage 48
50: TypePointer UniformConstant 49
51(texSampler2D): 50(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
10(texColor): 9(ptr) Variable Function
19: 18(ptr) AccessChain 15(color) 17
20: 8(fvec4) Load 19
21: 18(ptr) AccessChain 15(color) 17
22: 8(fvec4) Load 21
23: 8(fvec4) FAdd 20 22
Store 10(texColor) 23
27: 24(fvec3) Load 26(inColor)
28: 8(fvec4) Load 10(texColor)
29: 24(fvec3) VectorShuffle 28 28 0 1 2
30: 24(fvec3) FAdd 29 27
31: 8(fvec4) Load 10(texColor)
32: 8(fvec4) VectorShuffle 31 30 4 5 6 3
Store 10(texColor) 32
39: 38(ptr) AccessChain 36(alpha) 37
40: 7(float) Load 39
41: 8(fvec4) Load 10(texColor)
42: 7(float) CompositeExtract 41 3
43: 7(float) FAdd 42 40
44: 8(fvec4) Load 10(texColor)
45: 8(fvec4) CompositeInsert 43 44 3
Store 10(texColor) 45
48: 8(fvec4) Load 10(texColor)
Store 47(gl_FragColor) 48
Branch 6
6: Label
9(texColor): 8(ptr) Variable Function
18: 17(ptr) AccessChain 14(color) 16
19: 7(fvec4) Load 18
20: 17(ptr) AccessChain 14(color) 16
21: 7(fvec4) Load 20
22: 7(fvec4) FAdd 19 21
Store 9(texColor) 22
26: 23(fvec3) Load 25(inColor)
27: 7(fvec4) Load 9(texColor)
28: 23(fvec3) VectorShuffle 27 27 0 1 2
29: 23(fvec3) FAdd 28 26
30: 7(fvec4) Load 9(texColor)
31: 7(fvec4) VectorShuffle 30 29 4 5 6 3
Store 9(texColor) 31
38: 37(ptr) AccessChain 35(alpha) 36
39: 6(float) Load 38
40: 7(fvec4) Load 9(texColor)
41: 6(float) CompositeExtract 40 3
42: 6(float) FAdd 41 39
43: 7(fvec4) Load 9(texColor)
44: 7(fvec4) CompositeInsert 42 43 3
Store 9(texColor) 44
47: 7(fvec4) Load 9(texColor)
Store 46(gl_FragColor) 47
Return
FunctionEnd