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 vertex stage:
// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 91
// Id's are bound by 90
Source GLSL 120
Capability Shader
@ -13,109 +13,107 @@ Linked vertex stage:
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
Name 4 "main"
Name 10 "a"
Name 13 "v3"
Name 17 "m23"
Name 20 "b"
Name 23 "m32"
Name 29 "gl_Position"
Name 56 "v4"
Decorate 29(gl_Position) BuiltIn Position
Decorate 75 NoStaticUse
Decorate 79 NoStaticUse
Decorate 90 NoStaticUse
Name 9 "a"
Name 12 "v3"
Name 16 "m23"
Name 19 "b"
Name 22 "m32"
Name 28 "gl_Position"
Name 55 "v4"
Decorate 28(gl_Position) BuiltIn Position
Decorate 74 NoStaticUse
Decorate 78 NoStaticUse
Decorate 89 NoStaticUse
2: TypeVoid
3: TypeFunction 2
7: TypeFloat 32
8: TypeVector 7(float) 2
9: TypePointer Function 8(fvec2)
11: TypeVector 7(float) 3
12: TypePointer Input 11(fvec3)
13(v3): 12(ptr) Variable Input
15: TypeMatrix 11(fvec3) 2
16: TypePointer Function 15
21: TypeMatrix 8(fvec2) 3
22: TypePointer UniformConstant 21
23(m32): 22(ptr) Variable UniformConstant
27: TypeVector 7(float) 4
28: TypePointer Output 27(fvec4)
29(gl_Position): 28(ptr) Variable Output
32: TypeMatrix 11(fvec3) 3
36: 7(float) Constant 0
41: TypeMatrix 27(fvec4) 4
42: 7(float) Constant 1077936128
43: 7(float) Constant 1086324736
44: 27(fvec4) ConstantComposite 42 43 36 36
45: 7(float) Constant 1091567616
46: 7(float) Constant 1094713344
47: 27(fvec4) ConstantComposite 45 46 36 36
48: 7(float) Constant 1097859072
49: 7(float) Constant 1099956224
50: 27(fvec4) ConstantComposite 48 49 36 36
51: 7(float) Constant 1101529088
52: 7(float) Constant 1103101952
53: 27(fvec4) ConstantComposite 51 52 36 36
54: 41 ConstantComposite 44 47 50 53
55: TypePointer Input 27(fvec4)
56(v4): 55(ptr) Variable Input
60: 7(float) Constant 1112014848
61: 7(float) Constant 1121714176
62: 7(float) Constant 1126825984
63: 7(float) Constant 1130758144
64: 27(fvec4) ConstantComposite 60 61 62 63
66: 7(float) Constant 1106247680
67: 7(float) Constant 1114636288
68: 27(fvec4) ConstantComposite 66 67 36 36
70: 7(float) Constant 1101004800
71: 7(float) Constant 1092616192
72: 7(float) Constant 1084227584
73: 27(fvec4) ConstantComposite 70 71 43 72
75: 8(fvec2) ConstantComposite 71 70
76: TypeMatrix 27(fvec4) 2
77: 27(fvec4) ConstantComposite 42 36 36 36
78: 27(fvec4) ConstantComposite 36 42 36 36
79: 76 ConstantComposite 77 78
80: TypeMatrix 8(fvec2) 4
81: 7(float) Constant 1065353216
82: 7(float) Constant 1073741824
83: 8(fvec2) ConstantComposite 81 82
84: 7(float) Constant 1082130432
85: 8(fvec2) ConstantComposite 42 84
86: 8(fvec2) ConstantComposite 72 43
87: 7(float) Constant 1088421888
88: 7(float) Constant 1090519040
89: 8(fvec2) ConstantComposite 87 88
90: 80 ConstantComposite 83 85 86 89
6: TypeFloat 32
7: TypeVector 6(float) 2
8: TypePointer Function 7(fvec2)
10: TypeVector 6(float) 3
11: TypePointer Input 10(fvec3)
12(v3): 11(ptr) Variable Input
14: TypeMatrix 10(fvec3) 2
15: TypePointer Function 14
20: TypeMatrix 7(fvec2) 3
21: TypePointer UniformConstant 20
22(m32): 21(ptr) Variable UniformConstant
26: TypeVector 6(float) 4
27: TypePointer Output 26(fvec4)
28(gl_Position): 27(ptr) Variable Output
31: TypeMatrix 10(fvec3) 3
35: 6(float) Constant 0
40: TypeMatrix 26(fvec4) 4
41: 6(float) Constant 1077936128
42: 6(float) Constant 1086324736
43: 26(fvec4) ConstantComposite 41 42 35 35
44: 6(float) Constant 1091567616
45: 6(float) Constant 1094713344
46: 26(fvec4) ConstantComposite 44 45 35 35
47: 6(float) Constant 1097859072
48: 6(float) Constant 1099956224
49: 26(fvec4) ConstantComposite 47 48 35 35
50: 6(float) Constant 1101529088
51: 6(float) Constant 1103101952
52: 26(fvec4) ConstantComposite 50 51 35 35
53: 40 ConstantComposite 43 46 49 52
54: TypePointer Input 26(fvec4)
55(v4): 54(ptr) Variable Input
59: 6(float) Constant 1112014848
60: 6(float) Constant 1121714176
61: 6(float) Constant 1126825984
62: 6(float) Constant 1130758144
63: 26(fvec4) ConstantComposite 59 60 61 62
65: 6(float) Constant 1106247680
66: 6(float) Constant 1114636288
67: 26(fvec4) ConstantComposite 65 66 35 35
69: 6(float) Constant 1101004800
70: 6(float) Constant 1092616192
71: 6(float) Constant 1084227584
72: 26(fvec4) ConstantComposite 69 70 42 71
74: 7(fvec2) ConstantComposite 70 69
75: TypeMatrix 26(fvec4) 2
76: 26(fvec4) ConstantComposite 41 35 35 35
77: 26(fvec4) ConstantComposite 35 41 35 35
78: 75 ConstantComposite 76 77
79: TypeMatrix 7(fvec2) 4
80: 6(float) Constant 1065353216
81: 6(float) Constant 1073741824
82: 7(fvec2) ConstantComposite 80 81
83: 6(float) Constant 1082130432
84: 7(fvec2) ConstantComposite 41 83
85: 7(fvec2) ConstantComposite 71 42
86: 6(float) Constant 1088421888
87: 6(float) Constant 1090519040
88: 7(fvec2) ConstantComposite 86 87
89: 79 ConstantComposite 82 84 85 88
4(main): 2 Function None 3
5: Label
10(a): 9(ptr) Variable Function
17(m23): 16(ptr) Variable Function
20(b): 9(ptr) Variable Function
14: 11(fvec3) Load 13(v3)
18: 15 Load 17(m23)
19: 8(fvec2) VectorTimesMatrix 14 18
Store 10(a) 19
24: 21 Load 23(m32)
25: 11(fvec3) Load 13(v3)
26: 8(fvec2) MatrixTimesVector 24 25
Store 20(b) 26
30: 15 Load 17(m23)
31: 21 Load 23(m32)
33: 32 MatrixTimesMatrix 30 31
34: 11(fvec3) Load 13(v3)
35: 11(fvec3) MatrixTimesVector 33 34
37: 7(float) CompositeExtract 35 0
38: 7(float) CompositeExtract 35 1
39: 7(float) CompositeExtract 35 2
40: 27(fvec4) CompositeConstruct 37 38 39 36
57: 27(fvec4) Load 56(v4)
58: 27(fvec4) MatrixTimesVector 54 57
59: 27(fvec4) FAdd 40 58
65: 27(fvec4) FAdd 59 64
69: 27(fvec4) FAdd 65 68
74: 27(fvec4) FAdd 69 73
Store 29(gl_Position) 74
Branch 6
6: Label
9(a): 8(ptr) Variable Function
16(m23): 15(ptr) Variable Function
19(b): 8(ptr) Variable Function
13: 10(fvec3) Load 12(v3)
17: 14 Load 16(m23)
18: 7(fvec2) VectorTimesMatrix 13 17
Store 9(a) 18
23: 20 Load 22(m32)
24: 10(fvec3) Load 12(v3)
25: 7(fvec2) MatrixTimesVector 23 24
Store 19(b) 25
29: 14 Load 16(m23)
30: 20 Load 22(m32)
32: 31 MatrixTimesMatrix 29 30
33: 10(fvec3) Load 12(v3)
34: 10(fvec3) MatrixTimesVector 32 33
36: 6(float) CompositeExtract 34 0
37: 6(float) CompositeExtract 34 1
38: 6(float) CompositeExtract 34 2
39: 26(fvec4) CompositeConstruct 36 37 38 35
56: 26(fvec4) Load 55(v4)
57: 26(fvec4) MatrixTimesVector 53 56
58: 26(fvec4) FAdd 39 57
64: 26(fvec4) FAdd 58 63
68: 26(fvec4) FAdd 64 67
73: 26(fvec4) FAdd 68 72
Store 28(gl_Position) 73
Return
FunctionEnd