1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor 5 OpExecutionMode %_entrypoint_v OriginUpperLeft 6 OpName %sk_FragColor "sk_FragColor" 7 OpName %_UniformBuffer "_UniformBuffer" 8 OpMemberName %_UniformBuffer 0 "colorGreen" 9 OpMemberName %_UniformBuffer 1 "colorRed" 10 OpMemberName %_UniformBuffer 2 "testMatrix2x2" 11 OpMemberName %_UniformBuffer 3 "testMatrix3x3" 12 OpMemberName %_UniformBuffer 4 "testInputs" 13 OpName %_entrypoint_v "_entrypoint_v" 14 OpName %main "main" 15 OpDecorate %sk_FragColor RelaxedPrecision 16 OpDecorate %sk_FragColor Location 0 17 OpDecorate %sk_FragColor Index 0 18 OpMemberDecorate %_UniformBuffer 0 Offset 0 19 OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 20 OpMemberDecorate %_UniformBuffer 1 Offset 16 21 OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 22 OpMemberDecorate %_UniformBuffer 2 Offset 32 23 OpMemberDecorate %_UniformBuffer 2 ColMajor 24 OpMemberDecorate %_UniformBuffer 2 MatrixStride 16 25 OpMemberDecorate %_UniformBuffer 3 Offset 64 26 OpMemberDecorate %_UniformBuffer 3 ColMajor 27 OpMemberDecorate %_UniformBuffer 3 MatrixStride 16 28 OpMemberDecorate %_UniformBuffer 4 Offset 112 29 OpMemberDecorate %_UniformBuffer 4 RelaxedPrecision 30 OpDecorate %_UniformBuffer Block 31 OpDecorate %7 Binding 0 32 OpDecorate %7 DescriptorSet 0 33 OpDecorate %117 RelaxedPrecision 34 OpDecorate %121 RelaxedPrecision 35 OpDecorate %157 RelaxedPrecision 36 OpDecorate %173 RelaxedPrecision 37 OpDecorate %201 RelaxedPrecision 38 OpDecorate %203 RelaxedPrecision 39 OpDecorate %204 RelaxedPrecision 40 %float = OpTypeFloat 32 41 %v4float = OpTypeVector %float 4 42%_ptr_Output_v4float = OpTypePointer Output %v4float 43%sk_FragColor = OpVariable %_ptr_Output_v4float Output 44 %v2float = OpTypeVector %float 2 45%mat2v2float = OpTypeMatrix %v2float 2 46 %v3float = OpTypeVector %float 3 47%mat3v3float = OpTypeMatrix %v3float 3 48%_UniformBuffer = OpTypeStruct %v4float %v4float %mat2v2float %mat3v3float %v4float 49%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 50 %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 51 %void = OpTypeVoid 52 %16 = OpTypeFunction %void 53 %float_0 = OpConstant %float 0 54 %19 = OpConstantComposite %v2float %float_0 %float_0 55%_ptr_Function_v2float = OpTypePointer Function %v2float 56 %23 = OpTypeFunction %v4float %_ptr_Function_v2float 57 %bool = OpTypeBool 58 %false = OpConstantFalse %bool 59%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 60 %int = OpTypeInt 32 1 61 %int_2 = OpConstant %int 2 62 %int_0 = OpConstant %int 0 63%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float 64 %int_1 = OpConstant %int 1 65 %float_3 = OpConstant %float 3 66 %float_6 = OpConstant %float 6 67 %float_4 = OpConstant %float 4 68 %float_8 = OpConstant %float 8 69 %45 = OpConstantComposite %v2float %float_3 %float_6 70 %46 = OpConstantComposite %v2float %float_4 %float_8 71 %47 = OpConstantComposite %mat2v2float %45 %46 72 %v2bool = OpTypeVector %bool 2 73%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float 74 %int_3 = OpConstant %int 3 75%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float 76 %float_12 = OpConstant %float 12 77 %float_5 = OpConstant %float 5 78 %float_10 = OpConstant %float 10 79 %float_15 = OpConstant %float 15 80 %float_18 = OpConstant %float 18 81 %73 = OpConstantComposite %v3float %float_4 %float_8 %float_12 82 %74 = OpConstantComposite %v3float %float_5 %float_10 %float_15 83 %75 = OpConstantComposite %v3float %float_6 %float_12 %float_18 84 %76 = OpConstantComposite %mat3v3float %73 %74 %75 85 %v3bool = OpTypeVector %bool 3 86%mat3v2float = OpTypeMatrix %v2float 3 87 %100 = OpConstantComposite %v2float %float_5 %float_10 88 %101 = OpConstantComposite %v2float %float_6 %float_12 89 %102 = OpConstantComposite %mat3v2float %46 %100 %101 90%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 91 %int_4 = OpConstant %int 4 92 %float_1 = OpConstant %float 1 93 %float_2 = OpConstant %float 2 94 %124 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_2 95%mat4v4float = OpTypeMatrix %v4float 4 96%float_n1_25 = OpConstant %float -1.25 97 %float_0_75 = OpConstant %float 0.75 98 %float_2_25 = OpConstant %float 2.25 99 %float_n2_5 = OpConstant %float -2.5 100 %float_1_5 = OpConstant %float 1.5 101 %float_4_5 = OpConstant %float 4.5 102 %132 = OpConstantComposite %v4float %float_n1_25 %float_0 %float_0_75 %float_2_25 103 %133 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 104 %134 = OpConstantComposite %v4float %float_n2_5 %float_0 %float_1_5 %float_4_5 105 %135 = OpConstantComposite %mat4v4float %132 %133 %133 %134 106 %v4bool = OpTypeVector %bool 4 107 %158 = OpConstantComposite %v2float %float_1 %float_2 108%mat2v4float = OpTypeMatrix %v4float 2 109 %160 = OpConstantComposite %mat2v4float %132 %134 110%mat4v2float = OpTypeMatrix %v2float 4 111 %175 = OpConstantComposite %v2float %float_n1_25 %float_n2_5 112 %176 = OpConstantComposite %v2float %float_0_75 %float_1_5 113 %177 = OpConstantComposite %v2float %float_2_25 %float_4_5 114 %178 = OpConstantComposite %mat4v2float %175 %19 %176 %177 115%_ptr_Function_v4float = OpTypePointer Function %v4float 116%_entrypoint_v = OpFunction %void None %16 117 %17 = OpLabel 118 %20 = OpVariable %_ptr_Function_v2float Function 119 OpStore %20 %19 120 %22 = OpFunctionCall %v4float %main %20 121 OpStore %sk_FragColor %22 122 OpReturn 123 OpFunctionEnd 124 %main = OpFunction %v4float None %23 125 %24 = OpFunctionParameter %_ptr_Function_v2float 126 %25 = OpLabel 127 %195 = OpVariable %_ptr_Function_v4float Function 128 %29 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 129 %34 = OpAccessChain %_ptr_Uniform_v2float %29 %int_0 130 %36 = OpLoad %v2float %34 131 %37 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 132 %39 = OpAccessChain %_ptr_Uniform_v2float %37 %int_1 133 %40 = OpLoad %v2float %39 134 %28 = OpOuterProduct %mat2v2float %36 %40 135 %49 = OpCompositeExtract %v2float %28 0 136 %50 = OpFOrdEqual %v2bool %49 %45 137 %51 = OpAll %bool %50 138 %52 = OpCompositeExtract %v2float %28 1 139 %53 = OpFOrdEqual %v2bool %52 %46 140 %54 = OpAll %bool %53 141 %55 = OpLogicalAnd %bool %51 %54 142 OpSelectionMerge %57 None 143 OpBranchConditional %55 %56 %57 144 %56 = OpLabel 145 %59 = OpAccessChain %_ptr_Uniform_mat3v3float %7 %int_3 146 %62 = OpAccessChain %_ptr_Uniform_v3float %59 %int_0 147 %64 = OpLoad %v3float %62 148 %65 = OpAccessChain %_ptr_Uniform_mat3v3float %7 %int_3 149 %66 = OpAccessChain %_ptr_Uniform_v3float %65 %int_1 150 %67 = OpLoad %v3float %66 151 %58 = OpOuterProduct %mat3v3float %64 %67 152 %78 = OpCompositeExtract %v3float %58 0 153 %79 = OpFOrdEqual %v3bool %78 %73 154 %80 = OpAll %bool %79 155 %81 = OpCompositeExtract %v3float %58 1 156 %82 = OpFOrdEqual %v3bool %81 %74 157 %83 = OpAll %bool %82 158 %84 = OpLogicalAnd %bool %80 %83 159 %85 = OpCompositeExtract %v3float %58 2 160 %86 = OpFOrdEqual %v3bool %85 %75 161 %87 = OpAll %bool %86 162 %88 = OpLogicalAnd %bool %84 %87 163 OpBranch %57 164 %57 = OpLabel 165 %89 = OpPhi %bool %false %25 %88 %56 166 OpSelectionMerge %91 None 167 OpBranchConditional %89 %90 %91 168 %90 = OpLabel 169 %93 = OpAccessChain %_ptr_Uniform_mat2v2float %7 %int_2 170 %94 = OpAccessChain %_ptr_Uniform_v2float %93 %int_0 171 %95 = OpLoad %v2float %94 172 %96 = OpAccessChain %_ptr_Uniform_mat3v3float %7 %int_3 173 %97 = OpAccessChain %_ptr_Uniform_v3float %96 %int_1 174 %98 = OpLoad %v3float %97 175 %92 = OpOuterProduct %mat3v2float %95 %98 176 %103 = OpCompositeExtract %v2float %92 0 177 %104 = OpFOrdEqual %v2bool %103 %46 178 %105 = OpAll %bool %104 179 %106 = OpCompositeExtract %v2float %92 1 180 %107 = OpFOrdEqual %v2bool %106 %100 181 %108 = OpAll %bool %107 182 %109 = OpLogicalAnd %bool %105 %108 183 %110 = OpCompositeExtract %v2float %92 2 184 %111 = OpFOrdEqual %v2bool %110 %101 185 %112 = OpAll %bool %111 186 %113 = OpLogicalAnd %bool %109 %112 187 OpBranch %91 188 %91 = OpLabel 189 %114 = OpPhi %bool %false %57 %113 %90 190 OpSelectionMerge %116 None 191 OpBranchConditional %114 %115 %116 192 %115 = OpLabel 193 %118 = OpAccessChain %_ptr_Uniform_v4float %7 %int_4 194 %121 = OpLoad %v4float %118 195 %117 = OpOuterProduct %mat4v4float %121 %124 196 %137 = OpCompositeExtract %v4float %117 0 197 %138 = OpFOrdEqual %v4bool %137 %132 198 %139 = OpAll %bool %138 199 %140 = OpCompositeExtract %v4float %117 1 200 %141 = OpFOrdEqual %v4bool %140 %133 201 %142 = OpAll %bool %141 202 %143 = OpLogicalAnd %bool %139 %142 203 %144 = OpCompositeExtract %v4float %117 2 204 %145 = OpFOrdEqual %v4bool %144 %133 205 %146 = OpAll %bool %145 206 %147 = OpLogicalAnd %bool %143 %146 207 %148 = OpCompositeExtract %v4float %117 3 208 %149 = OpFOrdEqual %v4bool %148 %134 209 %150 = OpAll %bool %149 210 %151 = OpLogicalAnd %bool %147 %150 211 OpBranch %116 212 %116 = OpLabel 213 %152 = OpPhi %bool %false %91 %151 %115 214 OpSelectionMerge %154 None 215 OpBranchConditional %152 %153 %154 216 %153 = OpLabel 217 %156 = OpAccessChain %_ptr_Uniform_v4float %7 %int_4 218 %157 = OpLoad %v4float %156 219 %155 = OpOuterProduct %mat2v4float %157 %158 220 %161 = OpCompositeExtract %v4float %155 0 221 %162 = OpFOrdEqual %v4bool %161 %132 222 %163 = OpAll %bool %162 223 %164 = OpCompositeExtract %v4float %155 1 224 %165 = OpFOrdEqual %v4bool %164 %134 225 %166 = OpAll %bool %165 226 %167 = OpLogicalAnd %bool %163 %166 227 OpBranch %154 228 %154 = OpLabel 229 %168 = OpPhi %bool %false %116 %167 %153 230 OpSelectionMerge %170 None 231 OpBranchConditional %168 %169 %170 232 %169 = OpLabel 233 %172 = OpAccessChain %_ptr_Uniform_v4float %7 %int_4 234 %173 = OpLoad %v4float %172 235 %171 = OpOuterProduct %mat4v2float %158 %173 236 %179 = OpCompositeExtract %v2float %171 0 237 %180 = OpFOrdEqual %v2bool %179 %175 238 %181 = OpAll %bool %180 239 %182 = OpCompositeExtract %v2float %171 1 240 %183 = OpFOrdEqual %v2bool %182 %19 241 %184 = OpAll %bool %183 242 %185 = OpLogicalAnd %bool %181 %184 243 %186 = OpCompositeExtract %v2float %171 2 244 %187 = OpFOrdEqual %v2bool %186 %176 245 %188 = OpAll %bool %187 246 %189 = OpLogicalAnd %bool %185 %188 247 %190 = OpCompositeExtract %v2float %171 3 248 %191 = OpFOrdEqual %v2bool %190 %177 249 %192 = OpAll %bool %191 250 %193 = OpLogicalAnd %bool %189 %192 251 OpBranch %170 252 %170 = OpLabel 253 %194 = OpPhi %bool %false %154 %193 %169 254 OpSelectionMerge %199 None 255 OpBranchConditional %194 %197 %198 256 %197 = OpLabel 257 %200 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0 258 %201 = OpLoad %v4float %200 259 OpStore %195 %201 260 OpBranch %199 261 %198 = OpLabel 262 %202 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1 263 %203 = OpLoad %v4float %202 264 OpStore %195 %203 265 OpBranch %199 266 %199 = OpLabel 267 %204 = OpLoad %v4float %195 268 OpReturnValue %204 269 OpFunctionEnd 270