glslang/Test/baseResults/spv.debugInfo.frag.out
Qingyuan Zheng a496a34b43 Sanitize debug source location tracking for implicit branch and return
This patch tries to attach debug location of a branch/return instruction to its predecessor or the closing brace. If none could be found, no debug info should be emitted.
2024-09-02 14:20:19 -04:00

426 lines
17 KiB
Plaintext

spv.debugInfo.frag
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 187
Capability Shader
2: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 5 "main" 30 104
ExecutionMode 5 OriginLowerLeft
1: String "spv.debugInfo.frag"
Source GLSL 450 1 "// OpModuleProcessed no-storage-format
// OpModuleProcessed resource-set-binding 3
// OpModuleProcessed auto-map-bindings
// OpModuleProcessed auto-map-locations
// OpModuleProcessed client opengl100
// OpModuleProcessed target-env opengl
// OpModuleProcessed relaxed-errors
// OpModuleProcessed suppress-warnings
// OpModuleProcessed hlsl-offsets
// OpModuleProcessed entry-point main
#line 1
#version 450
struct S {
int a;
};
uniform ubuf {
S s;
};
uniform sampler2D s2d;
layout(location = 0) in vec4 inv;
layout(location = 0) out vec4 outv;
vec4 foo(S s)
{
vec4 r = s.a * inv;
++r;
if (r.x > 3.0)
--r;
else
r *= 2;
return r;
}
float testBranch(float x, float y)
{
float result = 0;
bool b = x > 0;
// branch with load
if (b) {
result += 1;
}
else {
result -= 1;
}
// branch with expression
if (x > y) {
result += x - y;
}
// selection with load
result += b ?
1 : -1;
// selection with expression
result += x < y ?
y :
float(b);
return result;
}
void main()
{
outv = foo(s);
outv += testBranch(inv.x, inv.y);
outv += texture(s2d, vec2(0.5));
switch (s.a) {
case 10:
++outv;
break;
case 20:
outv = 2 * outv;
++outv;
break;
default:
--outv;
break;
}
for (int i = 0; i < 10; ++i)
outv *= 3.0;
outv.x < 10.0 ?
outv = sin(outv) :
outv = cos(outv);
}"
Name 5 "main"
Name 8 "S"
MemberName 8(S) 0 "a"
Name 14 "foo(struct-S-i11;"
Name 13 "s"
Name 20 "testBranch(f1;f1;"
Name 18 "x"
Name 19 "y"
Name 23 "r"
Name 30 "inv"
Name 56 "result"
Name 59 "b"
Name 104 "outv"
Name 105 "S"
MemberName 105(S) 0 "a"
Name 106 "ubuf"
MemberName 106(ubuf) 0 "s"
Name 108 ""
Name 109 "param"
Name 116 "param"
Name 120 "param"
Name 131 "s2d"
Name 161 "i"
Decorate 30(inv) Location 0
Decorate 104(outv) Location 0
MemberDecorate 105(S) 0 Offset 0
Decorate 106(ubuf) Block
MemberDecorate 106(ubuf) 0 Offset 0
Decorate 108 Binding 0
Decorate 108 DescriptorSet 3
Decorate 131(s2d) Location 0
Decorate 131(s2d) Binding 1
Decorate 131(s2d) DescriptorSet 3
3: TypeVoid
4: TypeFunction 3
7: TypeInt 32 1
8(S): TypeStruct 7(int)
9: TypePointer Function 8(S)
10: TypeFloat 32
11: TypeVector 10(float) 4
12: TypeFunction 11(fvec4) 9(ptr)
16: TypePointer Function 10(float)
17: TypeFunction 10(float) 16(ptr) 16(ptr)
22: TypePointer Function 11(fvec4)
24: 7(int) Constant 0
25: TypePointer Function 7(int)
29: TypePointer Input 11(fvec4)
30(inv): 29(ptr) Variable Input
34: 10(float) Constant 1065353216
37: TypeInt 32 0
38: 37(int) Constant 0
41: 10(float) Constant 1077936128
42: TypeBool
50: 10(float) Constant 1073741824
57: 10(float) Constant 0
58: TypePointer Function 42(bool)
81: 7(int) Constant 1
82: 7(int) Constant 4294967295
103: TypePointer Output 11(fvec4)
104(outv): 103(ptr) Variable Output
105(S): TypeStruct 7(int)
106(ubuf): TypeStruct 105(S)
107: TypePointer Uniform 106(ubuf)
108: 107(ptr) Variable Uniform
110: TypePointer Uniform 105(S)
117: TypePointer Input 10(float)
121: 37(int) Constant 1
128: TypeImage 10(float) 2D sampled format:Unknown
129: TypeSampledImage 128
130: TypePointer UniformConstant 129
131(s2d): 130(ptr) Variable UniformConstant
133: TypeVector 10(float) 2
134: 10(float) Constant 1056964608
135: 133(fvec2) ConstantComposite 134 134
139: TypePointer Uniform 7(int)
168: 7(int) Constant 10
174: TypePointer Output 10(float)
177: 10(float) Constant 1092616192
Line 1 58 11
5(main): 3 Function None 4
6: Label
109(param): 9(ptr) Variable Function
116(param): 16(ptr) Variable Function
120(param): 16(ptr) Variable Function
161(i): 25(ptr) Variable Function
179: 22(ptr) Variable Function
Line 1 60 0
111: 110(ptr) AccessChain 108 24
112: 105(S) Load 111
113: 7(int) CompositeExtract 112 0
114: 25(ptr) AccessChain 109(param) 24
Store 114 113
115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param)
Store 104(outv) 115
Line 1 61 0
118: 117(ptr) AccessChain 30(inv) 38
119: 10(float) Load 118
Store 116(param) 119
122: 117(ptr) AccessChain 30(inv) 121
123: 10(float) Load 122
Store 120(param) 123
124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param)
125: 11(fvec4) Load 104(outv)
126: 11(fvec4) CompositeConstruct 124 124 124 124
127: 11(fvec4) FAdd 125 126
Store 104(outv) 127
Line 1 62 0
132: 129 Load 131(s2d)
136: 11(fvec4) ImageSampleImplicitLod 132 135
137: 11(fvec4) Load 104(outv)
138: 11(fvec4) FAdd 137 136
Store 104(outv) 138
Line 1 64 0
140: 139(ptr) AccessChain 108 24 24
141: 7(int) Load 140
SelectionMerge 145 None
Switch 141 144
case 10: 142
case 20: 143
144: Label
Line 1 73 0
156: 11(fvec4) Load 104(outv)
157: 11(fvec4) CompositeConstruct 34 34 34 34
158: 11(fvec4) FSub 156 157
Store 104(outv) 158
Line 1 74 0
Branch 145
142: Label
Line 1 66 0
146: 11(fvec4) Load 104(outv)
147: 11(fvec4) CompositeConstruct 34 34 34 34
148: 11(fvec4) FAdd 146 147
Store 104(outv) 148
Line 1 67 0
Branch 145
143: Label
Line 1 69 0
150: 11(fvec4) Load 104(outv)
151: 11(fvec4) VectorTimesScalar 150 50
Store 104(outv) 151
Line 1 70 0
152: 11(fvec4) Load 104(outv)
153: 11(fvec4) CompositeConstruct 34 34 34 34
154: 11(fvec4) FAdd 152 153
Store 104(outv) 154
Line 1 71 0
Branch 145
145: Label
Line 1 77 0
Store 161(i) 24
Branch 162
162: Label
Line 1 77 0
LoopMerge 164 165 None
Branch 166
166: Label
Line 1 77 0
167: 7(int) Load 161(i)
169: 42(bool) SLessThan 167 168
BranchConditional 169 163 164
163: Label
Line 1 78 0
170: 11(fvec4) Load 104(outv)
171: 11(fvec4) VectorTimesScalar 170 41
Store 104(outv) 171
Branch 165
165: Label
Line 1 77 0
172: 7(int) Load 161(i)
173: 7(int) IAdd 172 81
Store 161(i) 173
Branch 162
164: Label
Line 1 80 0
175: 174(ptr) AccessChain 104(outv) 38
176: 10(float) Load 175
178: 42(bool) FOrdLessThan 176 177
SelectionMerge 181 None
BranchConditional 178 180 184
180: Label
Line 1 81 0
182: 11(fvec4) Load 104(outv)
183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182
Store 104(outv) 183
Store 179 183
Branch 181
184: Label
Line 1 82 0
185: 11(fvec4) Load 104(outv)
186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185
Store 104(outv) 186
Store 179 186
Branch 181
181: Label
Line 1 83 0
Return
FunctionEnd
Line 1 16 13
14(foo(struct-S-i11;): 11(fvec4) Function None 12
13(s): 9(ptr) FunctionParameter
15: Label
23(r): 22(ptr) Variable Function
Line 1 18 0
26: 25(ptr) AccessChain 13(s) 24
27: 7(int) Load 26
28: 10(float) ConvertSToF 27
31: 11(fvec4) Load 30(inv)
32: 11(fvec4) VectorTimesScalar 31 28
Store 23(r) 32
Line 1 19 0
33: 11(fvec4) Load 23(r)
35: 11(fvec4) CompositeConstruct 34 34 34 34
36: 11(fvec4) FAdd 33 35
Store 23(r) 36
Line 1 20 0
39: 16(ptr) AccessChain 23(r) 38
40: 10(float) Load 39
43: 42(bool) FOrdGreaterThan 40 41
SelectionMerge 45 None
BranchConditional 43 44 49
44: Label
Line 1 21 0
46: 11(fvec4) Load 23(r)
47: 11(fvec4) CompositeConstruct 34 34 34 34
48: 11(fvec4) FSub 46 47
Store 23(r) 48
Branch 45
49: Label
Line 1 23 0
51: 11(fvec4) Load 23(r)
52: 11(fvec4) VectorTimesScalar 51 50
Store 23(r) 52
Branch 45
45: Label
Line 1 25 0
53: 11(fvec4) Load 23(r)
ReturnValue 53
FunctionEnd
Line 1 28 34
20(testBranch(f1;f1;): 10(float) Function None 17
18(x): 16(ptr) FunctionParameter
19(y): 16(ptr) FunctionParameter
21: Label
56(result): 16(ptr) Variable Function
59(b): 58(ptr) Variable Function
90: 16(ptr) Variable Function
Line 1 30 0
Store 56(result) 57
Line 1 31 0
60: 10(float) Load 18(x)
61: 42(bool) FOrdGreaterThan 60 57
Store 59(b) 61
Line 1 34 0
62: 42(bool) Load 59(b)
SelectionMerge 64 None
BranchConditional 62 63 67
63: Label
Line 1 35 0
65: 10(float) Load 56(result)
66: 10(float) FAdd 65 34
Store 56(result) 66
Branch 64
67: Label
Line 1 38 0
68: 10(float) Load 56(result)
69: 10(float) FSub 68 34
Store 56(result) 69
Branch 64
64: Label
Line 1 42 0
70: 10(float) Load 18(x)
71: 10(float) Load 19(y)
72: 42(bool) FOrdGreaterThan 70 71
SelectionMerge 74 None
BranchConditional 72 73 74
73: Label
Line 1 43 0
75: 10(float) Load 18(x)
76: 10(float) Load 19(y)
77: 10(float) FSub 75 76
78: 10(float) Load 56(result)
79: 10(float) FAdd 78 77
Store 56(result) 79
Branch 74
74: Label
Line 1 47 0
80: 42(bool) Load 59(b)
83: 7(int) Select 80 81 82
84: 10(float) ConvertSToF 83
85: 10(float) Load 56(result)
86: 10(float) FAdd 85 84
Store 56(result) 86
Line 1 51 0
87: 10(float) Load 18(x)
88: 10(float) Load 19(y)
89: 42(bool) FOrdLessThan 87 88
SelectionMerge 92 None
BranchConditional 89 91 94
91: Label
Line 1 52 0
93: 10(float) Load 19(y)
Store 90 93
Branch 92
94: Label
Line 1 53 0
95: 42(bool) Load 59(b)
96: 10(float) Select 95 34 57
Store 90 96
Branch 92
92: Label
Line 1 53 0
97: 10(float) Load 90
Line 1 51 0
98: 10(float) Load 56(result)
99: 10(float) FAdd 98 97
Store 56(result) 99
Line 1 55 0
100: 10(float) Load 56(result)
ReturnValue 100
FunctionEnd