glslang/Test/baseResults/spv.earlyReturnDiscard.frag.out
John Kessenich e770b3e6cf 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.
2015-09-14 21:08:58 -06:00

179 lines
8.4 KiB
Plaintext
Executable File

spv.earlyReturnDiscard.frag
Linked fragment stage:
// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 111
Source GLSL 110
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 13 "color2"
Name 15 "otherColor"
Name 18 "c"
Name 21 "d"
Name 27 "bigColor"
Name 32 "smallColor"
Name 38 "minimum"
Name 52 "threshhold"
Name 63 "threshhold2"
Name 77 "b"
Name 106 "gl_FragColor"
Name 110 "threshhold3"
Decorate 11(BaseColor) Smooth
Decorate 18(c) Smooth
Decorate 106(gl_FragColor) BuiltIn FragColor
Decorate 110(threshhold3) NoStaticUse
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
14: TypePointer UniformConstant 7(fvec4)
15(otherColor): 14(ptr) Variable UniformConstant
17: TypePointer Input 6(float)
18(c): 17(ptr) Variable Input
20: TypePointer UniformConstant 6(float)
21(d): 20(ptr) Variable UniformConstant
23: TypeBool
27(bigColor): 14(ptr) Variable UniformConstant
32(smallColor): 14(ptr) Variable UniformConstant
38(minimum): 20(ptr) Variable UniformConstant
46: 6(float) Constant 1065353216
52(threshhold): 20(ptr) Variable UniformConstant
63(threshhold2): 20(ptr) Variable UniformConstant
76: TypePointer UniformConstant 23(bool)
77(b): 76(ptr) Variable UniformConstant
105: TypePointer Output 7(fvec4)
106(gl_FragColor): 105(ptr) Variable Output
110(threshhold3): 20(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(color): 8(ptr) Variable Function
13(color2): 8(ptr) Variable Function
12: 7(fvec4) Load 11(BaseColor)
Store 9(color) 12
16: 7(fvec4) Load 15(otherColor)
Store 13(color2) 16
19: 6(float) Load 18(c)
22: 6(float) Load 21(d)
24: 23(bool) FOrdGreaterThan 19 22
SelectionMerge 26 None
BranchConditional 24 25 31
25: Label
28: 7(fvec4) Load 27(bigColor)
29: 7(fvec4) Load 9(color)
30: 7(fvec4) FAdd 29 28
Store 9(color) 30
Branch 26
31: Label
33: 7(fvec4) Load 32(smallColor)
34: 7(fvec4) Load 9(color)
35: 7(fvec4) FAdd 34 33
Store 9(color) 35
Branch 26
26: Label
36: 7(fvec4) Load 9(color)
37: 6(float) CompositeExtract 36 2
39: 6(float) Load 38(minimum)
40: 23(bool) FOrdLessThan 37 39
SelectionMerge 42 None
BranchConditional 40 41 42
41: Label
Return
42: Label
44: 7(fvec4) Load 9(color)
45: 6(float) CompositeExtract 44 2
47: 6(float) FAdd 45 46
48: 7(fvec4) Load 9(color)
49: 7(fvec4) CompositeInsert 47 48 2
Store 9(color) 49
50: 7(fvec4) Load 9(color)
51: 6(float) CompositeExtract 50 2
53: 6(float) Load 52(threshhold)
54: 23(bool) FOrdGreaterThan 51 53
SelectionMerge 56 None
BranchConditional 54 55 56
55: Label
Kill
56: Label
58: 7(fvec4) Load 9(color)
59: 7(fvec4) CompositeConstruct 46 46 46 46
60: 7(fvec4) FAdd 58 59
Store 9(color) 60
61: 7(fvec4) Load 9(color)
62: 6(float) CompositeExtract 61 3
64: 6(float) Load 63(threshhold2)
65: 23(bool) FOrdGreaterThan 62 64
SelectionMerge 67 None
BranchConditional 65 66 98
66: Label
68: 7(fvec4) Load 9(color)
69: 6(float) CompositeExtract 68 2
70: 6(float) Load 63(threshhold2)
71: 23(bool) FOrdGreaterThan 69 70
SelectionMerge 73 None
BranchConditional 71 72 75
72: Label
Return
75: Label
78: 23(bool) Load 77(b)
SelectionMerge 80 None
BranchConditional 78 79 86
79: Label
81: 7(fvec4) Load 9(color)
82: 6(float) CompositeExtract 81 2
83: 6(float) FAdd 82 46
84: 7(fvec4) Load 9(color)
85: 7(fvec4) CompositeInsert 83 84 2
Store 9(color) 85
Branch 80
86: Label
87: 7(fvec4) Load 9(color)
88: 6(float) CompositeExtract 87 0
89: 6(float) Load 38(minimum)
90: 23(bool) FOrdLessThan 88 89
SelectionMerge 92 None
BranchConditional 90 91 94
91: Label
Kill
94: Label
95: 7(fvec4) Load 9(color)
96: 7(fvec4) CompositeConstruct 46 46 46 46
97: 7(fvec4) FAdd 95 96
Store 9(color) 97
Branch 92
92: Label
Branch 80
80: Label
Branch 73
73: Label
Branch 67
98: Label
99: 23(bool) Load 77(b)
SelectionMerge 101 None
BranchConditional 99 100 103
100: Label
Kill
103: Label
Return
101: Label
Branch 67
67: Label
107: 7(fvec4) Load 9(color)
108: 7(fvec4) Load 13(color2)
109: 7(fvec4) FMul 107 108
Store 106(gl_FragColor) 109
Return
FunctionEnd