Don't remove SPIR-V blocks before codegen.

A removed block releases its instructions, so Module::idToInstruction
suddenly contains dangling references.  The original motivation for
block removal was to skip some unreachable blocks, but that's already
achieved by InReadableOrder.cpp.

Also updated stale comments.
This commit is contained in:
Dejan Mircevski
2016-01-19 21:13:38 -05:00
parent 33782795d9
commit ed55bcd9f8
17 changed files with 1233 additions and 1252 deletions

View File

@@ -5,12 +5,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 112
// Id's are bound by 114
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 23 57 59 71
EntryPoint Fragment 4 "main" 23 59 61 73
ExecutionMode 4 OriginLowerLeft
Source ESSL 300
Name 4 "main"
@@ -19,29 +19,29 @@ Linked fragment stage:
Name 19 "boolfun(vb2;"
Name 18 "bv2"
Name 23 "highfin"
Name 36 "sum"
Name 38 "uniform_medium"
Name 40 "uniform_high"
Name 46 "uniform_low"
Name 51 "arg1"
Name 53 "arg2"
Name 55 "d"
Name 57 "lowfin"
Name 59 "mediumfin"
Name 63 "global_highp"
Name 67 "local_highp"
Name 71 "mediumfout"
Name 102 "ub2"
Name 103 "param"
Decorate 36(sum) RelaxedPrecision
Decorate 38(uniform_medium) RelaxedPrecision
Decorate 46(uniform_low) RelaxedPrecision
Decorate 51(arg1) RelaxedPrecision
Decorate 53(arg2) RelaxedPrecision
Decorate 55(d) RelaxedPrecision
Decorate 57(lowfin) RelaxedPrecision
Decorate 59(mediumfin) RelaxedPrecision
Decorate 71(mediumfout) RelaxedPrecision
Name 38 "sum"
Name 40 "uniform_medium"
Name 42 "uniform_high"
Name 48 "uniform_low"
Name 53 "arg1"
Name 55 "arg2"
Name 57 "d"
Name 59 "lowfin"
Name 61 "mediumfin"
Name 65 "global_highp"
Name 69 "local_highp"
Name 73 "mediumfout"
Name 104 "ub2"
Name 105 "param"
Decorate 38(sum) RelaxedPrecision
Decorate 40(uniform_medium) RelaxedPrecision
Decorate 48(uniform_low) RelaxedPrecision
Decorate 53(arg1) RelaxedPrecision
Decorate 55(arg2) RelaxedPrecision
Decorate 57(d) RelaxedPrecision
Decorate 59(lowfin) RelaxedPrecision
Decorate 61(mediumfin) RelaxedPrecision
Decorate 73(mediumfout) RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -56,105 +56,105 @@ Linked fragment stage:
21: TypeVector 6(float) 4
22: TypePointer Input 21(fvec4)
23(highfin): 22(ptr) Variable Input
28: 14(bool) ConstantFalse
29: 14(bool) ConstantTrue
30: 15(bvec2) ConstantComposite 28 29
34: TypeInt 32 1
35: TypePointer Function 34(int)
37: TypePointer UniformConstant 34(int)
38(uniform_medium): 37(ptr) Variable UniformConstant
40(uniform_high): 37(ptr) Variable UniformConstant
46(uniform_low): 37(ptr) Variable UniformConstant
50: TypePointer Function 6(float)
52: 6(float) Constant 1078774989
54: 6(float) Constant 1232730691
56: TypePointer Input 6(float)
57(lowfin): 56(ptr) Variable Input
59(mediumfin): 56(ptr) Variable Input
62: TypePointer Private 6(float)
63(global_highp): 62(ptr) Variable Private
66: TypePointer Function 21(fvec4)
70: TypePointer Output 21(fvec4)
71(mediumfout): 70(ptr) Variable Output
80: 34(int) Constant 4
82: TypeVector 34(int) 2
90: TypeInt 32 0
91: 90(int) Constant 0
101: TypePointer UniformConstant 15(bvec2)
102(ub2): 101(ptr) Variable UniformConstant
109: 6(float) Constant 1065353216
29: 14(bool) ConstantFalse
30: 14(bool) ConstantTrue
31: 15(bvec2) ConstantComposite 29 30
36: TypeInt 32 1
37: TypePointer Function 36(int)
39: TypePointer UniformConstant 36(int)
40(uniform_medium): 39(ptr) Variable UniformConstant
42(uniform_high): 39(ptr) Variable UniformConstant
48(uniform_low): 39(ptr) Variable UniformConstant
52: TypePointer Function 6(float)
54: 6(float) Constant 1078774989
56: 6(float) Constant 1232730691
58: TypePointer Input 6(float)
59(lowfin): 58(ptr) Variable Input
61(mediumfin): 58(ptr) Variable Input
64: TypePointer Private 6(float)
65(global_highp): 64(ptr) Variable Private
68: TypePointer Function 21(fvec4)
72: TypePointer Output 21(fvec4)
73(mediumfout): 72(ptr) Variable Output
82: 36(int) Constant 4
84: TypeVector 36(int) 2
92: TypeInt 32 0
93: 92(int) Constant 0
103: TypePointer UniformConstant 15(bvec2)
104(ub2): 103(ptr) Variable UniformConstant
111: 6(float) Constant 1065353216
4(main): 2 Function None 3
5: Label
36(sum): 35(ptr) Variable Function
51(arg1): 50(ptr) Variable Function
53(arg2): 50(ptr) Variable Function
55(d): 50(ptr) Variable Function
67(local_highp): 66(ptr) Variable Function
103(param): 16(ptr) Variable Function
39: 34(int) Load 38(uniform_medium)
41: 34(int) Load 40(uniform_high)
42: 34(int) IAdd 39 41
Store 36(sum) 42
43: 34(int) Load 40(uniform_high)
44: 34(int) Load 36(sum)
45: 34(int) IAdd 44 43
Store 36(sum) 45
47: 34(int) Load 46(uniform_low)
48: 34(int) Load 36(sum)
49: 34(int) IAdd 48 47
Store 36(sum) 49
Store 51(arg1) 52
Store 53(arg2) 54
58: 6(float) Load 57(lowfin)
60: 6(float) Load 59(mediumfin)
61: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 58 60
Store 55(d) 61
64: 21(fvec4) Load 23(highfin)
65: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 64
Store 63(global_highp) 65
68: 6(float) Load 63(global_highp)
69: 21(fvec4) CompositeConstruct 68 68 68 68
Store 67(local_highp) 69
72: 6(float) Load 55(d)
73: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 72
74: 21(fvec4) CompositeConstruct 73 73 73 73
75: 6(float) Load 53(arg2)
38(sum): 37(ptr) Variable Function
53(arg1): 52(ptr) Variable Function
55(arg2): 52(ptr) Variable Function
57(d): 52(ptr) Variable Function
69(local_highp): 68(ptr) Variable Function
105(param): 16(ptr) Variable Function
41: 36(int) Load 40(uniform_medium)
43: 36(int) Load 42(uniform_high)
44: 36(int) IAdd 41 43
Store 38(sum) 44
45: 36(int) Load 42(uniform_high)
46: 36(int) Load 38(sum)
47: 36(int) IAdd 46 45
Store 38(sum) 47
49: 36(int) Load 48(uniform_low)
50: 36(int) Load 38(sum)
51: 36(int) IAdd 50 49
Store 38(sum) 51
Store 53(arg1) 54
Store 55(arg2) 56
60: 6(float) Load 59(lowfin)
62: 6(float) Load 61(mediumfin)
63: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 60 62
Store 57(d) 63
66: 21(fvec4) Load 23(highfin)
67: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 66
Store 65(global_highp) 67
70: 6(float) Load 65(global_highp)
71: 21(fvec4) CompositeConstruct 70 70 70 70
Store 69(local_highp) 71
74: 6(float) Load 57(d)
75: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 74
76: 21(fvec4) CompositeConstruct 75 75 75 75
77: 21(fvec4) FAdd 74 76
78: 21(fvec4) Load 67(local_highp)
79: 21(fvec4) FAdd 77 78
Store 71(mediumfout) 79
81: 34(int) Load 46(uniform_low)
83: 82(ivec2) CompositeConstruct 81 81
84: 34(int) Load 40(uniform_high)
85: 82(ivec2) CompositeConstruct 84 84
86: 82(ivec2) IMul 83 85
87: 34(int) Load 40(uniform_high)
88: 82(ivec2) CompositeConstruct 87 87
89: 82(ivec2) IAdd 86 88
92: 34(int) CompositeExtract 89 0
93: 34(int) IAdd 80 92
94: 34(int) Load 36(sum)
95: 34(int) IAdd 94 93
Store 36(sum) 95
96: 34(int) Load 36(sum)
97: 6(float) ConvertSToF 96
98: 21(fvec4) CompositeConstruct 97 97 97 97
99: 21(fvec4) Load 71(mediumfout)
100: 21(fvec4) FAdd 99 98
Store 71(mediumfout) 100
104: 15(bvec2) Load 102(ub2)
Store 103(param) 104
105: 14(bool) FunctionCall 19(boolfun(vb2;) 103(param)
SelectionMerge 107 None
BranchConditional 105 106 107
106: Label
108: 21(fvec4) Load 71(mediumfout)
110: 21(fvec4) CompositeConstruct 109 109 109 109
111: 21(fvec4) FAdd 108 110
Store 71(mediumfout) 111
Branch 107
107: Label
77: 6(float) Load 55(arg2)
78: 21(fvec4) CompositeConstruct 77 77 77 77
79: 21(fvec4) FAdd 76 78
80: 21(fvec4) Load 69(local_highp)
81: 21(fvec4) FAdd 79 80
Store 73(mediumfout) 81
83: 36(int) Load 48(uniform_low)
85: 84(ivec2) CompositeConstruct 83 83
86: 36(int) Load 42(uniform_high)
87: 84(ivec2) CompositeConstruct 86 86
88: 84(ivec2) IMul 85 87
89: 36(int) Load 42(uniform_high)
90: 84(ivec2) CompositeConstruct 89 89
91: 84(ivec2) IAdd 88 90
94: 36(int) CompositeExtract 91 0
95: 36(int) IAdd 82 94
96: 36(int) Load 38(sum)
97: 36(int) IAdd 96 95
Store 38(sum) 97
98: 36(int) Load 38(sum)
99: 6(float) ConvertSToF 98
100: 21(fvec4) CompositeConstruct 99 99 99 99
101: 21(fvec4) Load 73(mediumfout)
102: 21(fvec4) FAdd 101 100
Store 73(mediumfout) 102
106: 15(bvec2) Load 104(ub2)
Store 105(param) 106
107: 14(bool) FunctionCall 19(boolfun(vb2;) 105(param)
SelectionMerge 109 None
BranchConditional 107 108 109
108: Label
110: 21(fvec4) Load 73(mediumfout)
112: 21(fvec4) CompositeConstruct 111 111 111 111
113: 21(fvec4) FAdd 110 112
Store 73(mediumfout) 113
Branch 109
109: Label
Return
FunctionEnd
12(foo(vf3;): 9(fvec2) Function None 10
@@ -167,8 +167,8 @@ Linked fragment stage:
19(boolfun(vb2;): 14(bool) Function None 17
18(bv2): 16(ptr) FunctionParameter
20: Label
27: 15(bvec2) Load 18(bv2)
31: 15(bvec2) LogicalEqual 27 30
32: 14(bool) All 31
ReturnValue 32
28: 15(bvec2) Load 18(bv2)
32: 15(bvec2) LogicalEqual 28 31
33: 14(bool) All 32
ReturnValue 33
FunctionEnd