2 %1 = OpExtInstImport "GLSL.std.450"
3 OpMemoryModel Logical GLSL450
4 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %sk_Clockwise
5 OpExecutionMode %_entrypoint_v OriginUpperLeft
6 OpName %sk_FragColor "sk_FragColor"
7 OpName %sk_Clockwise "sk_Clockwise"
8 OpName %_UniformBuffer "_UniformBuffer"
9 OpMemberName %_UniformBuffer 0 "I"
10 OpMemberName %_UniformBuffer 1 "N"
11 OpMemberName %_UniformBuffer 2 "colorGreen"
12 OpMemberName %_UniformBuffer 3 "colorRed"
13 OpName %_entrypoint_v "_entrypoint_v"
15 OpName %expectedX "expectedX"
16 OpName %expectedXY "expectedXY"
17 OpName %expectedXYZ "expectedXYZ"
18 OpName %expectedXYZW "expectedXYZW"
19 OpDecorate %sk_FragColor RelaxedPrecision
20 OpDecorate %sk_FragColor Location 0
21 OpDecorate %sk_FragColor Index 0
22 OpDecorate %sk_Clockwise BuiltIn FrontFacing
23 OpMemberDecorate %_UniformBuffer 0 Offset 0
24 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
25 OpMemberDecorate %_UniformBuffer 1 Offset 16
26 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
27 OpMemberDecorate %_UniformBuffer 2 Offset 32
28 OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision
29 OpMemberDecorate %_UniformBuffer 3 Offset 48
30 OpMemberDecorate %_UniformBuffer 3 RelaxedPrecision
31 OpDecorate %_UniformBuffer Block
32 OpDecorate %10 Binding 0
33 OpDecorate %10 DescriptorSet 0
34 OpDecorate %expectedX RelaxedPrecision
35 OpDecorate %expectedXY RelaxedPrecision
36 OpDecorate %expectedXYZ RelaxedPrecision
37 OpDecorate %expectedXYZW RelaxedPrecision
38 OpDecorate %48 RelaxedPrecision
39 OpDecorate %53 RelaxedPrecision
40 OpDecorate %54 RelaxedPrecision
41 OpDecorate %57 RelaxedPrecision
42 OpDecorate %58 RelaxedPrecision
43 OpDecorate %62 RelaxedPrecision
44 OpDecorate %64 RelaxedPrecision
45 OpDecorate %65 RelaxedPrecision
46 OpDecorate %67 RelaxedPrecision
47 OpDecorate %68 RelaxedPrecision
48 OpDecorate %75 RelaxedPrecision
49 OpDecorate %77 RelaxedPrecision
50 OpDecorate %78 RelaxedPrecision
51 OpDecorate %80 RelaxedPrecision
52 OpDecorate %81 RelaxedPrecision
53 OpDecorate %88 RelaxedPrecision
54 OpDecorate %90 RelaxedPrecision
55 OpDecorate %92 RelaxedPrecision
56 OpDecorate %116 RelaxedPrecision
57 OpDecorate %119 RelaxedPrecision
58 OpDecorate %120 RelaxedPrecision
59 %float = OpTypeFloat 32
60 %v4float = OpTypeVector %float 4
61 %_ptr_Output_v4float = OpTypePointer Output %v4float
62 %sk_FragColor = OpVariable %_ptr_Output_v4float Output
64 %_ptr_Input_bool = OpTypePointer Input %bool
65 %sk_Clockwise = OpVariable %_ptr_Input_bool Input
66 %_UniformBuffer = OpTypeStruct %v4float %v4float %v4float %v4float
67 %_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
68 %10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
70 %15 = OpTypeFunction %void
71 %float_0 = OpConstant %float 0
72 %v2float = OpTypeVector %float 2
73 %19 = OpConstantComposite %v2float %float_0 %float_0
74 %_ptr_Function_v2float = OpTypePointer Function %v2float
75 %23 = OpTypeFunction %v4float %_ptr_Function_v2float
76 %_ptr_Function_float = OpTypePointer Function %float
77 %float_n49 = OpConstant %float -49
78 %float_n169 = OpConstant %float -169
79 %float_202 = OpConstant %float 202
80 %32 = OpConstantComposite %v2float %float_n169 %float_202
81 %v3float = OpTypeVector %float 3
82 %_ptr_Function_v3float = OpTypePointer Function %v3float
83 %float_n379 = OpConstant %float -379
84 %float_454 = OpConstant %float 454
85 %float_n529 = OpConstant %float -529
86 %39 = OpConstantComposite %v3float %float_n379 %float_454 %float_n529
87 %_ptr_Function_v4float = OpTypePointer Function %v4float
88 %float_n699 = OpConstant %float -699
89 %float_838 = OpConstant %float 838
90 %float_n977 = OpConstant %float -977
91 %float_1116 = OpConstant %float 1116
92 %46 = OpConstantComposite %v4float %float_n699 %float_838 %float_n977 %float_1116
93 %false = OpConstantFalse %bool
94 %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
96 %int_0 = OpConstant %int 0
97 %int_1 = OpConstant %int 1
98 %v2bool = OpTypeVector %bool 2
99 %v3bool = OpTypeVector %bool 3
100 %v4bool = OpTypeVector %bool 4
101 %true = OpConstantTrue %bool
102 %int_2 = OpConstant %int 2
103 %int_3 = OpConstant %int 3
104 %_entrypoint_v = OpFunction %void None %15
106 %20 = OpVariable %_ptr_Function_v2float Function
108 %22 = OpFunctionCall %v4float %main %20
109 OpStore %sk_FragColor %22
112 %main = OpFunction %v4float None %23
113 %24 = OpFunctionParameter %_ptr_Function_v2float
115 %expectedX = OpVariable %_ptr_Function_float Function
116 %expectedXY = OpVariable %_ptr_Function_v2float Function
117 %expectedXYZ = OpVariable %_ptr_Function_v3float Function
118 %expectedXYZW = OpVariable %_ptr_Function_v4float Function
119 %110 = OpVariable %_ptr_Function_v4float Function
120 OpStore %expectedX %float_n49
121 OpStore %expectedXY %32
122 OpStore %expectedXYZ %39
123 OpStore %expectedXYZW %46
124 %49 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
125 %53 = OpLoad %v4float %49
126 %54 = OpCompositeExtract %float %53 0
127 %55 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
128 %57 = OpLoad %v4float %55
129 %58 = OpCompositeExtract %float %57 0
130 %48 = OpExtInst %float %1 Reflect %54 %58
131 %59 = OpFOrdEqual %bool %48 %float_n49
132 OpSelectionMerge %61 None
133 OpBranchConditional %59 %60 %61
135 %63 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
136 %64 = OpLoad %v4float %63
137 %65 = OpVectorShuffle %v2float %64 %64 0 1
138 %66 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
139 %67 = OpLoad %v4float %66
140 %68 = OpVectorShuffle %v2float %67 %67 0 1
141 %62 = OpExtInst %v2float %1 Reflect %65 %68
142 %69 = OpFOrdEqual %v2bool %62 %32
143 %71 = OpAll %bool %69
146 %72 = OpPhi %bool %false %25 %71 %60
147 OpSelectionMerge %74 None
148 OpBranchConditional %72 %73 %74
150 %76 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
151 %77 = OpLoad %v4float %76
152 %78 = OpVectorShuffle %v3float %77 %77 0 1 2
153 %79 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
154 %80 = OpLoad %v4float %79
155 %81 = OpVectorShuffle %v3float %80 %80 0 1 2
156 %75 = OpExtInst %v3float %1 Reflect %78 %81
157 %82 = OpFOrdEqual %v3bool %75 %39
158 %84 = OpAll %bool %82
161 %85 = OpPhi %bool %false %61 %84 %73
162 OpSelectionMerge %87 None
163 OpBranchConditional %85 %86 %87
165 %89 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
166 %90 = OpLoad %v4float %89
167 %91 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
168 %92 = OpLoad %v4float %91
169 %88 = OpExtInst %v4float %1 Reflect %90 %92
170 %93 = OpFOrdEqual %v4bool %88 %46
171 %95 = OpAll %bool %93
174 %96 = OpPhi %bool %false %74 %95 %86
175 OpSelectionMerge %98 None
176 OpBranchConditional %96 %97 %98
180 %100 = OpPhi %bool %false %87 %true %97
181 OpSelectionMerge %102 None
182 OpBranchConditional %100 %101 %102
186 %103 = OpPhi %bool %false %98 %true %101
187 OpSelectionMerge %105 None
188 OpBranchConditional %103 %104 %105
192 %106 = OpPhi %bool %false %102 %true %104
193 OpSelectionMerge %108 None
194 OpBranchConditional %106 %107 %108
198 %109 = OpPhi %bool %false %105 %true %107
199 OpSelectionMerge %113 None
200 OpBranchConditional %109 %111 %112
202 %114 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
203 %116 = OpLoad %v4float %114
207 %117 = OpAccessChain %_ptr_Uniform_v4float %10 %int_3
208 %119 = OpLoad %v4float %117
212 %120 = OpLoad %v4float %110