; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 298
; Schema: 0
               OpCapability Shader
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %main "main" %tint_symbol_1
               OpExecutionMode %main OriginUpperLeft
               OpName %tint_symbol_1 "tint_symbol_1"
               OpName %bitwise_i32 "bitwise_i32"
               OpName %s1 "s1"
               OpName %s2 "s2"
               OpName %v1 "v1"
               OpName %v2 "v2"
               OpName %bitwise_u32 "bitwise_u32"
               OpName %s1_0 "s1"
               OpName %s2_0 "s2"
               OpName %v1_0 "v1"
               OpName %v2_0 "v2"
               OpName %vector_scalar_f32 "vector_scalar_f32"
               OpName %v "v"
               OpName %s "s"
               OpName %r "r"
               OpName %vector_scalar_i32 "vector_scalar_i32"
               OpName %v_0 "v"
               OpName %s_0 "s"
               OpName %r_0 "r"
               OpName %vector_scalar_u32 "vector_scalar_u32"
               OpName %v_1 "v"
               OpName %s_1 "s"
               OpName %r_1 "r"
               OpName %scalar_vector_f32 "scalar_vector_f32"
               OpName %v_2 "v"
               OpName %s_2 "s"
               OpName %r_2 "r"
               OpName %scalar_vector_i32 "scalar_vector_i32"
               OpName %v_3 "v"
               OpName %s_3 "s"
               OpName %r_3 "r"
               OpName %scalar_vector_u32 "scalar_vector_u32"
               OpName %v_4 "v"
               OpName %s_4 "s"
               OpName %r_4 "r"
               OpName %matrix_matrix_f32 "matrix_matrix_f32"
               OpName %m34 "m34"
               OpName %m43 "m43"
               OpName %m33 "m33"
               OpName %m44 "m44"
               OpName %tint_symbol_2 "tint_symbol_2"
               OpName %tint_symbol "tint_symbol"
               OpName %main "main"
               OpDecorate %tint_symbol_1 Location 0
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
          %5 = OpConstantNull %v4float
%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %5
       %void = OpTypeVoid
          %6 = OpTypeFunction %void
        %int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
         %13 = OpConstantNull %int
      %v3int = OpTypeVector %int 3
%_ptr_Function_v3int = OpTypePointer Function %v3int
         %18 = OpConstantNull %v3int
       %uint = OpTypeInt 32 0
%_ptr_Function_uint = OpTypePointer Function %uint
         %43 = OpConstantNull %uint
     %v3uint = OpTypeVector %uint 3
%_ptr_Function_v3uint = OpTypePointer Function %v3uint
         %48 = OpConstantNull %v3uint
    %v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
         %73 = OpConstantNull %v3float
%_ptr_Function_float = OpTypePointer Function %float
         %76 = OpConstantNull %float
%mat3v4float = OpTypeMatrix %v4float 3
%_ptr_Function_mat3v4float = OpTypePointer Function %mat3v4float
        %244 = OpConstantNull %mat3v4float
%mat4v3float = OpTypeMatrix %v3float 4
%_ptr_Function_mat4v3float = OpTypePointer Function %mat4v3float
        %248 = OpConstantNull %mat4v3float
%mat3v3float = OpTypeMatrix %v3float 3
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
        %252 = OpConstantNull %mat3v3float
%mat4v4float = OpTypeMatrix %v4float 4
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
        %256 = OpConstantNull %mat4v4float
        %289 = OpTypeFunction %void %v4float
    %float_0 = OpConstant %float 0
        %297 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%bitwise_i32 = OpFunction %void None %6
          %9 = OpLabel
         %s1 = OpVariable %_ptr_Function_int Function %13
         %s2 = OpVariable %_ptr_Function_int Function %13
         %v1 = OpVariable %_ptr_Function_v3int Function %18
         %v2 = OpVariable %_ptr_Function_v3int Function %18
         %20 = OpLoad %int %s1
         %21 = OpLoad %int %s2
         %22 = OpBitwiseOr %int %20 %21
               OpStore %s1 %22
         %23 = OpLoad %int %s1
         %24 = OpLoad %int %s2
         %25 = OpBitwiseAnd %int %23 %24
               OpStore %s1 %25
         %26 = OpLoad %int %s1
         %27 = OpLoad %int %s2
         %28 = OpBitwiseXor %int %26 %27
               OpStore %s1 %28
         %29 = OpLoad %v3int %v1
         %30 = OpLoad %v3int %v2
         %31 = OpBitwiseOr %v3int %29 %30
               OpStore %v1 %31
         %32 = OpLoad %v3int %v1
         %33 = OpLoad %v3int %v2
         %34 = OpBitwiseAnd %v3int %32 %33
               OpStore %v1 %34
         %35 = OpLoad %v3int %v1
         %36 = OpLoad %v3int %v2
         %37 = OpBitwiseXor %v3int %35 %36
               OpStore %v1 %37
               OpReturn
               OpFunctionEnd
%bitwise_u32 = OpFunction %void None %6
         %39 = OpLabel
       %s1_0 = OpVariable %_ptr_Function_uint Function %43
       %s2_0 = OpVariable %_ptr_Function_uint Function %43
       %v1_0 = OpVariable %_ptr_Function_v3uint Function %48
       %v2_0 = OpVariable %_ptr_Function_v3uint Function %48
         %50 = OpLoad %uint %s1_0
         %51 = OpLoad %uint %s2_0
         %52 = OpBitwiseOr %uint %50 %51
               OpStore %s1_0 %52
         %53 = OpLoad %uint %s1_0
         %54 = OpLoad %uint %s2_0
         %55 = OpBitwiseAnd %uint %53 %54
               OpStore %s1_0 %55
         %56 = OpLoad %uint %s1_0
         %57 = OpLoad %uint %s2_0
         %58 = OpBitwiseXor %uint %56 %57
               OpStore %s1_0 %58
         %59 = OpLoad %v3uint %v1_0
         %60 = OpLoad %v3uint %v2_0
         %61 = OpBitwiseOr %v3uint %59 %60
               OpStore %v1_0 %61
         %62 = OpLoad %v3uint %v1_0
         %63 = OpLoad %v3uint %v2_0
         %64 = OpBitwiseAnd %v3uint %62 %63
               OpStore %v1_0 %64
         %65 = OpLoad %v3uint %v1_0
         %66 = OpLoad %v3uint %v2_0
         %67 = OpBitwiseXor %v3uint %65 %66
               OpStore %v1_0 %67
               OpReturn
               OpFunctionEnd
%vector_scalar_f32 = OpFunction %void None %6
         %69 = OpLabel
          %v = OpVariable %_ptr_Function_v3float Function %73
          %s = OpVariable %_ptr_Function_float Function %76
          %r = OpVariable %_ptr_Function_v3float Function %73
         %81 = OpVariable %_ptr_Function_v3float Function %73
         %86 = OpVariable %_ptr_Function_v3float Function %73
         %94 = OpVariable %_ptr_Function_v3float Function %73
         %78 = OpLoad %v3float %v
         %79 = OpLoad %float %s
         %82 = OpCompositeConstruct %v3float %79 %79 %79
         %80 = OpFAdd %v3float %78 %82
               OpStore %r %80
         %83 = OpLoad %v3float %v
         %84 = OpLoad %float %s
         %87 = OpCompositeConstruct %v3float %84 %84 %84
         %85 = OpFSub %v3float %83 %87
               OpStore %r %85
         %88 = OpLoad %v3float %v
         %89 = OpLoad %float %s
         %90 = OpVectorTimesScalar %v3float %88 %89
               OpStore %r %90
         %91 = OpLoad %v3float %v
         %92 = OpLoad %float %s
         %95 = OpCompositeConstruct %v3float %92 %92 %92
         %93 = OpFDiv %v3float %91 %95
               OpStore %r %93
               OpReturn
               OpFunctionEnd
%vector_scalar_i32 = OpFunction %void None %6
         %97 = OpLabel
        %v_0 = OpVariable %_ptr_Function_v3int Function %18
        %s_0 = OpVariable %_ptr_Function_int Function %13
        %r_0 = OpVariable %_ptr_Function_v3int Function %18
        %104 = OpVariable %_ptr_Function_v3int Function %18
        %109 = OpVariable %_ptr_Function_v3int Function %18
        %114 = OpVariable %_ptr_Function_v3int Function %18
        %119 = OpVariable %_ptr_Function_v3int Function %18
        %124 = OpVariable %_ptr_Function_v3int Function %18
        %101 = OpLoad %v3int %v_0
        %102 = OpLoad %int %s_0
        %105 = OpCompositeConstruct %v3int %102 %102 %102
        %103 = OpIAdd %v3int %101 %105
               OpStore %r_0 %103
        %106 = OpLoad %v3int %v_0
        %107 = OpLoad %int %s_0
        %110 = OpCompositeConstruct %v3int %107 %107 %107
        %108 = OpISub %v3int %106 %110
               OpStore %r_0 %108
        %111 = OpLoad %v3int %v_0
        %112 = OpLoad %int %s_0
        %115 = OpCompositeConstruct %v3int %112 %112 %112
        %113 = OpIMul %v3int %111 %115
               OpStore %r_0 %113
        %116 = OpLoad %v3int %v_0
        %117 = OpLoad %int %s_0
        %120 = OpCompositeConstruct %v3int %117 %117 %117
        %118 = OpSDiv %v3int %116 %120
               OpStore %r_0 %118
        %121 = OpLoad %v3int %v_0
        %122 = OpLoad %int %s_0
        %125 = OpCompositeConstruct %v3int %122 %122 %122
        %123 = OpSMod %v3int %121 %125
               OpStore %r_0 %123
               OpReturn
               OpFunctionEnd
%vector_scalar_u32 = OpFunction %void None %6
        %127 = OpLabel
        %v_1 = OpVariable %_ptr_Function_v3uint Function %48
        %s_1 = OpVariable %_ptr_Function_uint Function %43
        %r_1 = OpVariable %_ptr_Function_v3uint Function %48
        %134 = OpVariable %_ptr_Function_v3uint Function %48
        %139 = OpVariable %_ptr_Function_v3uint Function %48
        %144 = OpVariable %_ptr_Function_v3uint Function %48
        %149 = OpVariable %_ptr_Function_v3uint Function %48
        %154 = OpVariable %_ptr_Function_v3uint Function %48
        %131 = OpLoad %v3uint %v_1
        %132 = OpLoad %uint %s_1
        %135 = OpCompositeConstruct %v3uint %132 %132 %132
        %133 = OpIAdd %v3uint %131 %135
               OpStore %r_1 %133
        %136 = OpLoad %v3uint %v_1
        %137 = OpLoad %uint %s_1
        %140 = OpCompositeConstruct %v3uint %137 %137 %137
        %138 = OpISub %v3uint %136 %140
               OpStore %r_1 %138
        %141 = OpLoad %v3uint %v_1
        %142 = OpLoad %uint %s_1
        %145 = OpCompositeConstruct %v3uint %142 %142 %142
        %143 = OpIMul %v3uint %141 %145
               OpStore %r_1 %143
        %146 = OpLoad %v3uint %v_1
        %147 = OpLoad %uint %s_1
        %150 = OpCompositeConstruct %v3uint %147 %147 %147
        %148 = OpUDiv %v3uint %146 %150
               OpStore %r_1 %148
        %151 = OpLoad %v3uint %v_1
        %152 = OpLoad %uint %s_1
        %155 = OpCompositeConstruct %v3uint %152 %152 %152
        %153 = OpUMod %v3uint %151 %155
               OpStore %r_1 %153
               OpReturn
               OpFunctionEnd
%scalar_vector_f32 = OpFunction %void None %6
        %157 = OpLabel
        %v_2 = OpVariable %_ptr_Function_v3float Function %73
        %s_2 = OpVariable %_ptr_Function_float Function %76
        %r_2 = OpVariable %_ptr_Function_v3float Function %73
        %164 = OpVariable %_ptr_Function_v3float Function %73
        %169 = OpVariable %_ptr_Function_v3float Function %73
        %177 = OpVariable %_ptr_Function_v3float Function %73
        %161 = OpLoad %float %s_2
        %162 = OpLoad %v3float %v_2
        %165 = OpCompositeConstruct %v3float %161 %161 %161
        %163 = OpFAdd %v3float %165 %162
               OpStore %r_2 %163
        %166 = OpLoad %float %s_2
        %167 = OpLoad %v3float %v_2
        %170 = OpCompositeConstruct %v3float %166 %166 %166
        %168 = OpFSub %v3float %170 %167
               OpStore %r_2 %168
        %171 = OpLoad %float %s_2
        %172 = OpLoad %v3float %v_2
        %173 = OpVectorTimesScalar %v3float %172 %171
               OpStore %r_2 %173
        %174 = OpLoad %float %s_2
        %175 = OpLoad %v3float %v_2
        %178 = OpCompositeConstruct %v3float %174 %174 %174
        %176 = OpFDiv %v3float %178 %175
               OpStore %r_2 %176
               OpReturn
               OpFunctionEnd
%scalar_vector_i32 = OpFunction %void None %6
        %180 = OpLabel
        %v_3 = OpVariable %_ptr_Function_v3int Function %18
        %s_3 = OpVariable %_ptr_Function_int Function %13
        %r_3 = OpVariable %_ptr_Function_v3int Function %18
        %187 = OpVariable %_ptr_Function_v3int Function %18
        %192 = OpVariable %_ptr_Function_v3int Function %18
        %197 = OpVariable %_ptr_Function_v3int Function %18
        %202 = OpVariable %_ptr_Function_v3int Function %18
        %207 = OpVariable %_ptr_Function_v3int Function %18
        %184 = OpLoad %int %s_3
        %185 = OpLoad %v3int %v_3
        %188 = OpCompositeConstruct %v3int %184 %184 %184
        %186 = OpIAdd %v3int %188 %185
               OpStore %r_3 %186
        %189 = OpLoad %int %s_3
        %190 = OpLoad %v3int %v_3
        %193 = OpCompositeConstruct %v3int %189 %189 %189
        %191 = OpISub %v3int %193 %190
               OpStore %r_3 %191
        %194 = OpLoad %int %s_3
        %195 = OpLoad %v3int %v_3
        %198 = OpCompositeConstruct %v3int %194 %194 %194
        %196 = OpIMul %v3int %198 %195
               OpStore %r_3 %196
        %199 = OpLoad %int %s_3
        %200 = OpLoad %v3int %v_3
        %203 = OpCompositeConstruct %v3int %199 %199 %199
        %201 = OpSDiv %v3int %203 %200
               OpStore %r_3 %201
        %204 = OpLoad %int %s_3
        %205 = OpLoad %v3int %v_3
        %208 = OpCompositeConstruct %v3int %204 %204 %204
        %206 = OpSMod %v3int %208 %205
               OpStore %r_3 %206
               OpReturn
               OpFunctionEnd
%scalar_vector_u32 = OpFunction %void None %6
        %210 = OpLabel
        %v_4 = OpVariable %_ptr_Function_v3uint Function %48
        %s_4 = OpVariable %_ptr_Function_uint Function %43
        %r_4 = OpVariable %_ptr_Function_v3uint Function %48
        %217 = OpVariable %_ptr_Function_v3uint Function %48
        %222 = OpVariable %_ptr_Function_v3uint Function %48
        %227 = OpVariable %_ptr_Function_v3uint Function %48
        %232 = OpVariable %_ptr_Function_v3uint Function %48
        %237 = OpVariable %_ptr_Function_v3uint Function %48
        %214 = OpLoad %uint %s_4
        %215 = OpLoad %v3uint %v_4
        %218 = OpCompositeConstruct %v3uint %214 %214 %214
        %216 = OpIAdd %v3uint %218 %215
               OpStore %r_4 %216
        %219 = OpLoad %uint %s_4
        %220 = OpLoad %v3uint %v_4
        %223 = OpCompositeConstruct %v3uint %219 %219 %219
        %221 = OpISub %v3uint %223 %220
               OpStore %r_4 %221
        %224 = OpLoad %uint %s_4
        %225 = OpLoad %v3uint %v_4
        %228 = OpCompositeConstruct %v3uint %224 %224 %224
        %226 = OpIMul %v3uint %228 %225
               OpStore %r_4 %226
        %229 = OpLoad %uint %s_4
        %230 = OpLoad %v3uint %v_4
        %233 = OpCompositeConstruct %v3uint %229 %229 %229
        %231 = OpUDiv %v3uint %233 %230
               OpStore %r_4 %231
        %234 = OpLoad %uint %s_4
        %235 = OpLoad %v3uint %v_4
        %238 = OpCompositeConstruct %v3uint %234 %234 %234
        %236 = OpUMod %v3uint %238 %235
               OpStore %r_4 %236
               OpReturn
               OpFunctionEnd
%matrix_matrix_f32 = OpFunction %void None %6
        %240 = OpLabel
        %m34 = OpVariable %_ptr_Function_mat3v4float Function %244
        %m43 = OpVariable %_ptr_Function_mat4v3float Function %248
        %m33 = OpVariable %_ptr_Function_mat3v3float Function %252
        %m44 = OpVariable %_ptr_Function_mat4v4float Function %256
        %257 = OpLoad %mat3v4float %m34
        %258 = OpLoad %mat3v4float %m34
        %260 = OpCompositeExtract %v4float %257 0
        %261 = OpCompositeExtract %v4float %258 0
        %262 = OpFAdd %v4float %260 %261
        %263 = OpCompositeExtract %v4float %257 1
        %264 = OpCompositeExtract %v4float %258 1
        %265 = OpFAdd %v4float %263 %264
        %266 = OpCompositeExtract %v4float %257 2
        %267 = OpCompositeExtract %v4float %258 2
        %268 = OpFAdd %v4float %266 %267
        %269 = OpCompositeConstruct %mat3v4float %262 %265 %268
               OpStore %m34 %269
        %270 = OpLoad %mat3v4float %m34
        %271 = OpLoad %mat3v4float %m34
        %273 = OpCompositeExtract %v4float %270 0
        %274 = OpCompositeExtract %v4float %271 0
        %275 = OpFSub %v4float %273 %274
        %276 = OpCompositeExtract %v4float %270 1
        %277 = OpCompositeExtract %v4float %271 1
        %278 = OpFSub %v4float %276 %277
        %279 = OpCompositeExtract %v4float %270 2
        %280 = OpCompositeExtract %v4float %271 2
        %281 = OpFSub %v4float %279 %280
        %282 = OpCompositeConstruct %mat3v4float %275 %278 %281
               OpStore %m34 %282
        %283 = OpLoad %mat4v3float %m43
        %284 = OpLoad %mat3v4float %m34
        %285 = OpMatrixTimesMatrix %mat3v3float %283 %284
               OpStore %m33 %285
        %286 = OpLoad %mat3v4float %m34
        %287 = OpLoad %mat4v3float %m43
        %288 = OpMatrixTimesMatrix %mat4v4float %286 %287
               OpStore %m44 %288
               OpReturn
               OpFunctionEnd
%tint_symbol_2 = OpFunction %void None %289
%tint_symbol = OpFunctionParameter %v4float
        %292 = OpLabel
               OpStore %tint_symbol_1 %tint_symbol
               OpReturn
               OpFunctionEnd
       %main = OpFunction %void None %6
        %294 = OpLabel
        %295 = OpFunctionCall %void %tint_symbol_2 %297
               OpReturn
               OpFunctionEnd