| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 1 |
| ; Bound: 574 |
| ; Schema: 0 |
| OpCapability Shader |
| %262 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint GLCompute %main "main" |
| OpExecutionMode %main LocalSize 1 1 1 |
| OpMemberName %ub_block_tint_explicit_layout 0 "inner" |
| OpName %ub_block_tint_explicit_layout "ub_block_tint_explicit_layout" |
| OpMemberName %s_block 0 "inner" |
| OpName %s_block "s_block" |
| OpName %main "main" |
| OpName %scalar_f32 "scalar_f32" |
| OpName %scalar_i32 "scalar_i32" |
| OpName %scalar_u32 "scalar_u32" |
| OpName %vec2_f32 "vec2_f32" |
| OpName %vec2_i32 "vec2_i32" |
| OpName %vec2_u32 "vec2_u32" |
| OpName %vec3_f32 "vec3_f32" |
| OpName %vec3_i32 "vec3_i32" |
| OpName %vec3_u32 "vec3_u32" |
| OpName %vec4_f32 "vec4_f32" |
| OpName %vec4_i32 "vec4_i32" |
| OpName %vec4_u32 "vec4_u32" |
| OpName %mat2x2_f32 "mat2x2_f32" |
| OpName %mat2x3_f32 "mat2x3_f32" |
| OpName %mat2x4_f32 "mat2x4_f32" |
| OpName %mat3x2_f32 "mat3x2_f32" |
| OpName %mat3x3_f32 "mat3x3_f32" |
| OpName %mat3x4_f32 "mat3x4_f32" |
| OpName %mat4x2_f32 "mat4x2_f32" |
| OpName %mat4x3_f32 "mat4x3_f32" |
| OpName %mat4x4_f32 "mat4x4_f32" |
| OpName %arr2_vec3_f32 "arr2_vec3_f32" |
| OpMemberName %Inner 0 "scalar_i32" |
| OpMemberName %Inner 1 "scalar_f32" |
| OpName %Inner "Inner" |
| OpName %struct_inner "struct_inner" |
| OpName %array_struct_inner "array_struct_inner" |
| OpName %tint_f32_to_i32 "tint_f32_to_i32" |
| OpName %value "value" |
| OpName %start_byte_offset "start_byte_offset" |
| OpName %a "a" |
| OpName %start_byte_offset_0 "start_byte_offset" |
| OpName %start_byte_offset_1 "start_byte_offset" |
| OpName %a_0 "a" |
| OpName %start_byte_offset_2 "start_byte_offset" |
| OpName %start_byte_offset_3 "start_byte_offset" |
| OpName %start_byte_offset_4 "start_byte_offset" |
| OpName %start_byte_offset_5 "start_byte_offset" |
| OpName %start_byte_offset_6 "start_byte_offset" |
| OpName %start_byte_offset_7 "start_byte_offset" |
| OpName %start_byte_offset_8 "start_byte_offset" |
| OpName %start_byte_offset_9 "start_byte_offset" |
| OpName %start_byte_offset_10 "start_byte_offset" |
| OpDecorate %_arr_v4uint_uint_44 ArrayStride 16 |
| OpMemberDecorate %ub_block_tint_explicit_layout 0 Offset 0 |
| OpDecorate %ub_block_tint_explicit_layout Block |
| OpDecorate %1 DescriptorSet 0 |
| OpDecorate %1 Binding 0 |
| OpDecorate %1 NonWritable |
| OpMemberDecorate %s_block 0 Offset 0 |
| OpDecorate %s_block Block |
| OpDecorate %8 DescriptorSet 0 |
| OpDecorate %8 Binding 1 |
| OpDecorate %8 Coherent |
| %uint = OpTypeInt 32 0 |
| %v4uint = OpTypeVector %uint 4 |
| %uint_44 = OpConstant %uint 44 |
| %_arr_v4uint_uint_44 = OpTypeArray %v4uint %uint_44 |
| %ub_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_44 |
| %_ptr_Uniform_ub_block_tint_explicit_layout = OpTypePointer Uniform %ub_block_tint_explicit_layout |
| %1 = OpVariable %_ptr_Uniform_ub_block_tint_explicit_layout Uniform |
| %int = OpTypeInt 32 1 |
| %s_block = OpTypeStruct %int |
| %_ptr_StorageBuffer_s_block = OpTypePointer StorageBuffer %s_block |
| %8 = OpVariable %_ptr_StorageBuffer_s_block StorageBuffer |
| %void = OpTypeVoid |
| %14 = OpTypeFunction %void |
| %_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint |
| %uint_0 = OpConstant %uint 0 |
| %float = OpTypeFloat 32 |
| %uint_1 = OpConstant %uint 1 |
| %v2uint = OpTypeVector %uint 2 |
| %v2float = OpTypeVector %float 2 |
| %v2int = OpTypeVector %int 2 |
| %uint_2 = OpConstant %uint 2 |
| %uint_3 = OpConstant %uint 3 |
| %v3uint = OpTypeVector %uint 3 |
| %v3float = OpTypeVector %float 3 |
| %uint_4 = OpConstant %uint 4 |
| %v3int = OpTypeVector %int 3 |
| %uint_5 = OpConstant %uint 5 |
| %uint_6 = OpConstant %uint 6 |
| %v4float = OpTypeVector %float 4 |
| %uint_7 = OpConstant %uint 7 |
| %v4int = OpTypeVector %int 4 |
| %uint_8 = OpConstant %uint 8 |
| %mat2v2float = OpTypeMatrix %v2float 2 |
| %uint_144 = OpConstant %uint 144 |
| %mat2v3float = OpTypeMatrix %v3float 2 |
| %uint_160 = OpConstant %uint 160 |
| %mat2v4float = OpTypeMatrix %v4float 2 |
| %uint_192 = OpConstant %uint 192 |
| %mat3v2float = OpTypeMatrix %v2float 3 |
| %uint_224 = OpConstant %uint 224 |
| %mat3v3float = OpTypeMatrix %v3float 3 |
| %uint_256 = OpConstant %uint 256 |
| %mat3v4float = OpTypeMatrix %v4float 3 |
| %uint_304 = OpConstant %uint 304 |
| %mat4v2float = OpTypeMatrix %v2float 4 |
| %uint_352 = OpConstant %uint 352 |
| %mat4v3float = OpTypeMatrix %v3float 4 |
| %uint_384 = OpConstant %uint 384 |
| %mat4v4float = OpTypeMatrix %v4float 4 |
| %uint_448 = OpConstant %uint 448 |
| %_arr_v3float_uint_2 = OpTypeArray %v3float %uint_2 |
| %uint_512 = OpConstant %uint 512 |
| %Inner = OpTypeStruct %int %float |
| %uint_544 = OpConstant %uint 544 |
| %_arr_Inner_uint_4 = OpTypeArray %Inner %uint_4 |
| %uint_576 = OpConstant %uint 576 |
| %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int |
| %259 = OpTypeFunction %int %float |
| %float_n2_14748365e_09 = OpConstant %float -2.14748365e+09 |
| %float_2_14748352e_09 = OpConstant %float 2.14748352e+09 |
| %267 = OpTypeFunction %_arr_Inner_uint_4 %uint |
| %_ptr_Function__arr_Inner_uint_4 = OpTypePointer Function %_arr_Inner_uint_4 |
| %271 = OpConstantNull %_arr_Inner_uint_4 |
| %bool = OpTypeBool |
| %uint_32 = OpConstant %uint 32 |
| %_ptr_Function_Inner = OpTypePointer Function %Inner |
| %291 = OpTypeFunction %Inner %uint |
| %uint_16 = OpConstant %uint 16 |
| %uint_15 = OpConstant %uint 15 |
| %312 = OpTypeFunction %_arr_v3float_uint_2 %uint |
| %_ptr_Function__arr_v3float_uint_2 = OpTypePointer Function %_arr_v3float_uint_2 |
| %316 = OpConstantNull %_arr_v3float_uint_2 |
| %_ptr_Function_v3float = OpTypePointer Function %v3float |
| %338 = OpTypeFunction %mat4v4float %uint |
| %uint_48 = OpConstant %uint 48 |
| %362 = OpTypeFunction %mat4v3float %uint |
| %389 = OpTypeFunction %mat4v2float %uint |
| %v2bool = OpTypeVector %bool 2 |
| %uint_24 = OpConstant %uint 24 |
| %442 = OpTypeFunction %mat3v4float %uint |
| %460 = OpTypeFunction %mat3v3float %uint |
| %481 = OpTypeFunction %mat3v2float %uint |
| %520 = OpTypeFunction %mat2v4float %uint |
| %533 = OpTypeFunction %mat2v3float %uint |
| %548 = OpTypeFunction %mat2v2float %uint |
| %main = OpFunction %void None %14 |
| %15 = OpLabel |
| %16 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_0 |
| %19 = OpLoad %v4uint %16 None |
| %20 = OpCompositeExtract %uint %19 0 |
| %scalar_f32 = OpBitcast %float %20 |
| %23 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_0 |
| %24 = OpLoad %v4uint %23 None |
| %25 = OpCompositeExtract %uint %24 1 |
| %scalar_i32 = OpBitcast %int %25 |
| %27 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_0 |
| %28 = OpLoad %v4uint %27 None |
| %scalar_u32 = OpCompositeExtract %uint %28 2 |
| %30 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_1 |
| %32 = OpLoad %v4uint %30 None |
| %33 = OpVectorShuffle %v2uint %32 %32 0 1 |
| %vec2_f32 = OpBitcast %v2float %33 |
| %37 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_1 |
| %38 = OpLoad %v4uint %37 None |
| %39 = OpVectorShuffle %v2uint %38 %38 2 3 |
| %vec2_i32 = OpBitcast %v2int %39 |
| %42 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_2 |
| %44 = OpLoad %v4uint %42 None |
| %vec2_u32 = OpVectorShuffle %v2uint %44 %44 0 1 |
| %46 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_3 |
| %48 = OpLoad %v4uint %46 None |
| %49 = OpVectorShuffle %v3uint %48 %48 0 1 2 |
| %vec3_f32 = OpBitcast %v3float %49 |
| %53 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_4 |
| %55 = OpLoad %v4uint %53 None |
| %56 = OpVectorShuffle %v3uint %55 %55 0 1 2 |
| %vec3_i32 = OpBitcast %v3int %56 |
| %59 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_5 |
| %61 = OpLoad %v4uint %59 None |
| %vec3_u32 = OpVectorShuffle %v3uint %61 %61 0 1 2 |
| %63 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_6 |
| %65 = OpLoad %v4uint %63 None |
| %vec4_f32 = OpBitcast %v4float %65 |
| %68 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_7 |
| %70 = OpLoad %v4uint %68 None |
| %vec4_i32 = OpBitcast %v4int %70 |
| %73 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_8 |
| %vec4_u32 = OpLoad %v4uint %73 None |
| %mat2x2_f32 = OpFunctionCall %mat2v2float %78 %uint_144 |
| %mat2x3_f32 = OpFunctionCall %mat2v3float %82 %uint_160 |
| %mat2x4_f32 = OpFunctionCall %mat2v4float %86 %uint_192 |
| %mat3x2_f32 = OpFunctionCall %mat3v2float %90 %uint_224 |
| %mat3x3_f32 = OpFunctionCall %mat3v3float %94 %uint_256 |
| %mat3x4_f32 = OpFunctionCall %mat3v4float %98 %uint_304 |
| %mat4x2_f32 = OpFunctionCall %mat4v2float %102 %uint_352 |
| %mat4x3_f32 = OpFunctionCall %mat4v3float %106 %uint_384 |
| %mat4x4_f32 = OpFunctionCall %mat4v4float %110 %uint_448 |
| %arr2_vec3_f32 = OpFunctionCall %_arr_v3float_uint_2 %114 %uint_512 |
| %struct_inner = OpFunctionCall %Inner %118 %uint_544 |
| %array_struct_inner = OpFunctionCall %_arr_Inner_uint_4 %122 %uint_576 |
| %124 = OpFunctionCall %int %tint_f32_to_i32 %scalar_f32 |
| %126 = OpBitcast %uint %124 |
| %127 = OpBitcast %uint %scalar_i32 |
| %128 = OpIAdd %uint %126 %127 |
| %129 = OpBitcast %int %128 |
| %130 = OpBitcast %int %scalar_u32 |
| %131 = OpBitcast %uint %129 |
| %132 = OpBitcast %uint %130 |
| %133 = OpIAdd %uint %131 %132 |
| %134 = OpBitcast %int %133 |
| %135 = OpCompositeExtract %float %vec2_f32 0 |
| %136 = OpFunctionCall %int %tint_f32_to_i32 %135 |
| %137 = OpBitcast %uint %134 |
| %138 = OpBitcast %uint %136 |
| %139 = OpIAdd %uint %137 %138 |
| %140 = OpBitcast %int %139 |
| %141 = OpCompositeExtract %int %vec2_i32 0 |
| %142 = OpBitcast %uint %140 |
| %143 = OpBitcast %uint %141 |
| %144 = OpIAdd %uint %142 %143 |
| %145 = OpBitcast %int %144 |
| %146 = OpCompositeExtract %uint %vec2_u32 0 |
| %147 = OpBitcast %int %146 |
| %148 = OpBitcast %uint %145 |
| %149 = OpBitcast %uint %147 |
| %150 = OpIAdd %uint %148 %149 |
| %151 = OpBitcast %int %150 |
| %152 = OpCompositeExtract %float %vec3_f32 1 |
| %153 = OpFunctionCall %int %tint_f32_to_i32 %152 |
| %154 = OpBitcast %uint %151 |
| %155 = OpBitcast %uint %153 |
| %156 = OpIAdd %uint %154 %155 |
| %157 = OpBitcast %int %156 |
| %158 = OpCompositeExtract %int %vec3_i32 1 |
| %159 = OpBitcast %uint %157 |
| %160 = OpBitcast %uint %158 |
| %161 = OpIAdd %uint %159 %160 |
| %162 = OpBitcast %int %161 |
| %163 = OpCompositeExtract %uint %vec3_u32 1 |
| %164 = OpBitcast %int %163 |
| %165 = OpBitcast %uint %162 |
| %166 = OpBitcast %uint %164 |
| %167 = OpIAdd %uint %165 %166 |
| %168 = OpBitcast %int %167 |
| %169 = OpCompositeExtract %float %vec4_f32 2 |
| %170 = OpFunctionCall %int %tint_f32_to_i32 %169 |
| %171 = OpBitcast %uint %168 |
| %172 = OpBitcast %uint %170 |
| %173 = OpIAdd %uint %171 %172 |
| %174 = OpBitcast %int %173 |
| %175 = OpCompositeExtract %int %vec4_i32 2 |
| %176 = OpBitcast %uint %174 |
| %177 = OpBitcast %uint %175 |
| %178 = OpIAdd %uint %176 %177 |
| %179 = OpBitcast %int %178 |
| %180 = OpCompositeExtract %uint %vec4_u32 2 |
| %181 = OpBitcast %int %180 |
| %182 = OpBitcast %uint %179 |
| %183 = OpBitcast %uint %181 |
| %184 = OpIAdd %uint %182 %183 |
| %185 = OpBitcast %int %184 |
| %186 = OpCompositeExtract %float %mat2x2_f32 0 0 |
| %187 = OpFunctionCall %int %tint_f32_to_i32 %186 |
| %188 = OpBitcast %uint %185 |
| %189 = OpBitcast %uint %187 |
| %190 = OpIAdd %uint %188 %189 |
| %191 = OpBitcast %int %190 |
| %192 = OpCompositeExtract %float %mat2x3_f32 0 0 |
| %193 = OpFunctionCall %int %tint_f32_to_i32 %192 |
| %194 = OpBitcast %uint %191 |
| %195 = OpBitcast %uint %193 |
| %196 = OpIAdd %uint %194 %195 |
| %197 = OpBitcast %int %196 |
| %198 = OpCompositeExtract %float %mat2x4_f32 0 0 |
| %199 = OpFunctionCall %int %tint_f32_to_i32 %198 |
| %200 = OpBitcast %uint %197 |
| %201 = OpBitcast %uint %199 |
| %202 = OpIAdd %uint %200 %201 |
| %203 = OpBitcast %int %202 |
| %204 = OpCompositeExtract %float %mat3x2_f32 0 0 |
| %205 = OpFunctionCall %int %tint_f32_to_i32 %204 |
| %206 = OpBitcast %uint %203 |
| %207 = OpBitcast %uint %205 |
| %208 = OpIAdd %uint %206 %207 |
| %209 = OpBitcast %int %208 |
| %210 = OpCompositeExtract %float %mat3x3_f32 0 0 |
| %211 = OpFunctionCall %int %tint_f32_to_i32 %210 |
| %212 = OpBitcast %uint %209 |
| %213 = OpBitcast %uint %211 |
| %214 = OpIAdd %uint %212 %213 |
| %215 = OpBitcast %int %214 |
| %216 = OpCompositeExtract %float %mat3x4_f32 0 0 |
| %217 = OpFunctionCall %int %tint_f32_to_i32 %216 |
| %218 = OpBitcast %uint %215 |
| %219 = OpBitcast %uint %217 |
| %220 = OpIAdd %uint %218 %219 |
| %221 = OpBitcast %int %220 |
| %222 = OpCompositeExtract %float %mat4x2_f32 0 0 |
| %223 = OpFunctionCall %int %tint_f32_to_i32 %222 |
| %224 = OpBitcast %uint %221 |
| %225 = OpBitcast %uint %223 |
| %226 = OpIAdd %uint %224 %225 |
| %227 = OpBitcast %int %226 |
| %228 = OpCompositeExtract %float %mat4x3_f32 0 0 |
| %229 = OpFunctionCall %int %tint_f32_to_i32 %228 |
| %230 = OpBitcast %uint %227 |
| %231 = OpBitcast %uint %229 |
| %232 = OpIAdd %uint %230 %231 |
| %233 = OpBitcast %int %232 |
| %234 = OpCompositeExtract %float %mat4x4_f32 0 0 |
| %235 = OpFunctionCall %int %tint_f32_to_i32 %234 |
| %236 = OpBitcast %uint %233 |
| %237 = OpBitcast %uint %235 |
| %238 = OpIAdd %uint %236 %237 |
| %239 = OpBitcast %int %238 |
| %240 = OpCompositeExtract %float %arr2_vec3_f32 0 0 |
| %241 = OpFunctionCall %int %tint_f32_to_i32 %240 |
| %242 = OpBitcast %uint %239 |
| %243 = OpBitcast %uint %241 |
| %244 = OpIAdd %uint %242 %243 |
| %245 = OpBitcast %int %244 |
| %246 = OpCompositeExtract %int %struct_inner 0 |
| %247 = OpBitcast %uint %245 |
| %248 = OpBitcast %uint %246 |
| %249 = OpIAdd %uint %247 %248 |
| %250 = OpBitcast %int %249 |
| %251 = OpCompositeExtract %int %array_struct_inner 0 0 |
| %252 = OpBitcast %uint %250 |
| %253 = OpBitcast %uint %251 |
| %254 = OpIAdd %uint %252 %253 |
| %255 = OpBitcast %int %254 |
| %256 = OpAccessChain %_ptr_StorageBuffer_int %8 %uint_0 |
| OpStore %256 %255 None |
| OpReturn |
| OpFunctionEnd |
| %tint_f32_to_i32 = OpFunction %int None %259 |
| %value = OpFunctionParameter %float |
| %260 = OpLabel |
| %261 = OpExtInst %float %262 NClamp %value %float_n2_14748365e_09 %float_2_14748352e_09 |
| %265 = OpConvertFToS %int %261 |
| OpReturnValue %265 |
| OpFunctionEnd |
| %122 = OpFunction %_arr_Inner_uint_4 None %267 |
| %start_byte_offset = OpFunctionParameter %uint |
| %268 = OpLabel |
| %a = OpVariable %_ptr_Function__arr_Inner_uint_4 Function |
| OpStore %a %271 |
| OpBranch %272 |
| %272 = OpLabel |
| OpBranch %275 |
| %275 = OpLabel |
| %277 = OpPhi %uint %uint_0 %272 %278 %274 |
| OpLoopMerge %276 %274 None |
| OpBranch %273 |
| %273 = OpLabel |
| %280 = OpUGreaterThanEqual %bool %277 %uint_4 |
| OpSelectionMerge %282 None |
| OpBranchConditional %280 %283 %282 |
| %283 = OpLabel |
| OpBranch %276 |
| %282 = OpLabel |
| %284 = OpIMul %uint %277 %uint_32 |
| %286 = OpIAdd %uint %start_byte_offset %284 |
| %287 = OpAccessChain %_ptr_Function_Inner %a %277 |
| %289 = OpFunctionCall %Inner %118 %286 |
| OpStore %287 %289 None |
| OpBranch %274 |
| %274 = OpLabel |
| %278 = OpIAdd %uint %277 %uint_1 |
| OpBranch %275 |
| %276 = OpLabel |
| %279 = OpLoad %_arr_Inner_uint_4 %a None |
| OpReturnValue %279 |
| OpFunctionEnd |
| %118 = OpFunction %Inner None %291 |
| %start_byte_offset_0 = OpFunctionParameter %uint |
| %292 = OpLabel |
| %293 = OpUDiv %uint %start_byte_offset_0 %uint_16 |
| %295 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %293 |
| %296 = OpBitwiseAnd %uint %start_byte_offset_0 %uint_15 |
| %298 = OpShiftRightLogical %uint %296 %uint_2 |
| %299 = OpLoad %v4uint %295 None |
| %300 = OpVectorExtractDynamic %uint %299 %298 |
| %301 = OpBitcast %int %300 |
| %302 = OpIAdd %uint %uint_16 %start_byte_offset_0 |
| %303 = OpUDiv %uint %302 %uint_16 |
| %304 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %303 |
| %305 = OpBitwiseAnd %uint %302 %uint_15 |
| %306 = OpShiftRightLogical %uint %305 %uint_2 |
| %307 = OpLoad %v4uint %304 None |
| %308 = OpVectorExtractDynamic %uint %307 %306 |
| %309 = OpBitcast %float %308 |
| %310 = OpCompositeConstruct %Inner %301 %309 |
| OpReturnValue %310 |
| OpFunctionEnd |
| %114 = OpFunction %_arr_v3float_uint_2 None %312 |
| %start_byte_offset_1 = OpFunctionParameter %uint |
| %313 = OpLabel |
| %a_0 = OpVariable %_ptr_Function__arr_v3float_uint_2 Function |
| OpStore %a_0 %316 |
| OpBranch %317 |
| %317 = OpLabel |
| OpBranch %320 |
| %320 = OpLabel |
| %322 = OpPhi %uint %uint_0 %317 %323 %319 |
| OpLoopMerge %321 %319 None |
| OpBranch %318 |
| %318 = OpLabel |
| %325 = OpUGreaterThanEqual %bool %322 %uint_2 |
| OpSelectionMerge %326 None |
| OpBranchConditional %325 %327 %326 |
| %327 = OpLabel |
| OpBranch %321 |
| %326 = OpLabel |
| %328 = OpIMul %uint %322 %uint_16 |
| %329 = OpIAdd %uint %start_byte_offset_1 %328 |
| %330 = OpAccessChain %_ptr_Function_v3float %a_0 %322 |
| %332 = OpUDiv %uint %329 %uint_16 |
| %333 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %332 |
| %334 = OpLoad %v4uint %333 None |
| %335 = OpVectorShuffle %v3uint %334 %334 0 1 2 |
| %336 = OpBitcast %v3float %335 |
| OpStore %330 %336 None |
| OpBranch %319 |
| %319 = OpLabel |
| %323 = OpIAdd %uint %322 %uint_1 |
| OpBranch %320 |
| %321 = OpLabel |
| %324 = OpLoad %_arr_v3float_uint_2 %a_0 None |
| OpReturnValue %324 |
| OpFunctionEnd |
| %110 = OpFunction %mat4v4float None %338 |
| %start_byte_offset_2 = OpFunctionParameter %uint |
| %339 = OpLabel |
| %340 = OpUDiv %uint %start_byte_offset_2 %uint_16 |
| %341 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %340 |
| %342 = OpLoad %v4uint %341 None |
| %343 = OpBitcast %v4float %342 |
| %344 = OpIAdd %uint %uint_16 %start_byte_offset_2 |
| %345 = OpUDiv %uint %344 %uint_16 |
| %346 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %345 |
| %347 = OpLoad %v4uint %346 None |
| %348 = OpBitcast %v4float %347 |
| %349 = OpIAdd %uint %uint_32 %start_byte_offset_2 |
| %350 = OpUDiv %uint %349 %uint_16 |
| %351 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %350 |
| %352 = OpLoad %v4uint %351 None |
| %353 = OpBitcast %v4float %352 |
| %354 = OpIAdd %uint %uint_48 %start_byte_offset_2 |
| %356 = OpUDiv %uint %354 %uint_16 |
| %357 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %356 |
| %358 = OpLoad %v4uint %357 None |
| %359 = OpBitcast %v4float %358 |
| %360 = OpCompositeConstruct %mat4v4float %343 %348 %353 %359 |
| OpReturnValue %360 |
| OpFunctionEnd |
| %106 = OpFunction %mat4v3float None %362 |
| %start_byte_offset_3 = OpFunctionParameter %uint |
| %363 = OpLabel |
| %364 = OpUDiv %uint %start_byte_offset_3 %uint_16 |
| %365 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %364 |
| %366 = OpLoad %v4uint %365 None |
| %367 = OpVectorShuffle %v3uint %366 %366 0 1 2 |
| %368 = OpBitcast %v3float %367 |
| %369 = OpIAdd %uint %uint_16 %start_byte_offset_3 |
| %370 = OpUDiv %uint %369 %uint_16 |
| %371 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %370 |
| %372 = OpLoad %v4uint %371 None |
| %373 = OpVectorShuffle %v3uint %372 %372 0 1 2 |
| %374 = OpBitcast %v3float %373 |
| %375 = OpIAdd %uint %uint_32 %start_byte_offset_3 |
| %376 = OpUDiv %uint %375 %uint_16 |
| %377 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %376 |
| %378 = OpLoad %v4uint %377 None |
| %379 = OpVectorShuffle %v3uint %378 %378 0 1 2 |
| %380 = OpBitcast %v3float %379 |
| %381 = OpIAdd %uint %uint_48 %start_byte_offset_3 |
| %382 = OpUDiv %uint %381 %uint_16 |
| %383 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %382 |
| %384 = OpLoad %v4uint %383 None |
| %385 = OpVectorShuffle %v3uint %384 %384 0 1 2 |
| %386 = OpBitcast %v3float %385 |
| %387 = OpCompositeConstruct %mat4v3float %368 %374 %380 %386 |
| OpReturnValue %387 |
| OpFunctionEnd |
| %102 = OpFunction %mat4v2float None %389 |
| %start_byte_offset_4 = OpFunctionParameter %uint |
| %390 = OpLabel |
| %391 = OpUDiv %uint %start_byte_offset_4 %uint_16 |
| %392 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %391 |
| %393 = OpLoad %v4uint %392 None |
| %394 = OpBitwiseAnd %uint %start_byte_offset_4 %uint_15 |
| %395 = OpShiftRightLogical %uint %394 %uint_2 |
| %396 = OpVectorShuffle %v2uint %393 %393 2 3 |
| %397 = OpVectorShuffle %v2uint %393 %393 0 1 |
| %398 = OpIEqual %bool %395 %uint_2 |
| %400 = OpCompositeConstruct %v2bool %398 %398 |
| %401 = OpSelect %v2uint %400 %396 %397 |
| %402 = OpBitcast %v2float %401 |
| %403 = OpIAdd %uint %uint_8 %start_byte_offset_4 |
| %404 = OpUDiv %uint %403 %uint_16 |
| %405 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %404 |
| %406 = OpLoad %v4uint %405 None |
| %407 = OpBitwiseAnd %uint %403 %uint_15 |
| %408 = OpShiftRightLogical %uint %407 %uint_2 |
| %409 = OpVectorShuffle %v2uint %406 %406 2 3 |
| %410 = OpVectorShuffle %v2uint %406 %406 0 1 |
| %411 = OpIEqual %bool %408 %uint_2 |
| %412 = OpCompositeConstruct %v2bool %411 %411 |
| %413 = OpSelect %v2uint %412 %409 %410 |
| %414 = OpBitcast %v2float %413 |
| %415 = OpIAdd %uint %uint_16 %start_byte_offset_4 |
| %416 = OpUDiv %uint %415 %uint_16 |
| %417 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %416 |
| %418 = OpLoad %v4uint %417 None |
| %419 = OpBitwiseAnd %uint %415 %uint_15 |
| %420 = OpShiftRightLogical %uint %419 %uint_2 |
| %421 = OpVectorShuffle %v2uint %418 %418 2 3 |
| %422 = OpVectorShuffle %v2uint %418 %418 0 1 |
| %423 = OpIEqual %bool %420 %uint_2 |
| %424 = OpCompositeConstruct %v2bool %423 %423 |
| %425 = OpSelect %v2uint %424 %421 %422 |
| %426 = OpBitcast %v2float %425 |
| %427 = OpIAdd %uint %uint_24 %start_byte_offset_4 |
| %429 = OpUDiv %uint %427 %uint_16 |
| %430 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %429 |
| %431 = OpLoad %v4uint %430 None |
| %432 = OpBitwiseAnd %uint %427 %uint_15 |
| %433 = OpShiftRightLogical %uint %432 %uint_2 |
| %434 = OpVectorShuffle %v2uint %431 %431 2 3 |
| %435 = OpVectorShuffle %v2uint %431 %431 0 1 |
| %436 = OpIEqual %bool %433 %uint_2 |
| %437 = OpCompositeConstruct %v2bool %436 %436 |
| %438 = OpSelect %v2uint %437 %434 %435 |
| %439 = OpBitcast %v2float %438 |
| %440 = OpCompositeConstruct %mat4v2float %402 %414 %426 %439 |
| OpReturnValue %440 |
| OpFunctionEnd |
| %98 = OpFunction %mat3v4float None %442 |
| %start_byte_offset_5 = OpFunctionParameter %uint |
| %443 = OpLabel |
| %444 = OpUDiv %uint %start_byte_offset_5 %uint_16 |
| %445 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %444 |
| %446 = OpLoad %v4uint %445 None |
| %447 = OpBitcast %v4float %446 |
| %448 = OpIAdd %uint %uint_16 %start_byte_offset_5 |
| %449 = OpUDiv %uint %448 %uint_16 |
| %450 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %449 |
| %451 = OpLoad %v4uint %450 None |
| %452 = OpBitcast %v4float %451 |
| %453 = OpIAdd %uint %uint_32 %start_byte_offset_5 |
| %454 = OpUDiv %uint %453 %uint_16 |
| %455 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %454 |
| %456 = OpLoad %v4uint %455 None |
| %457 = OpBitcast %v4float %456 |
| %458 = OpCompositeConstruct %mat3v4float %447 %452 %457 |
| OpReturnValue %458 |
| OpFunctionEnd |
| %94 = OpFunction %mat3v3float None %460 |
| %start_byte_offset_6 = OpFunctionParameter %uint |
| %461 = OpLabel |
| %462 = OpUDiv %uint %start_byte_offset_6 %uint_16 |
| %463 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %462 |
| %464 = OpLoad %v4uint %463 None |
| %465 = OpVectorShuffle %v3uint %464 %464 0 1 2 |
| %466 = OpBitcast %v3float %465 |
| %467 = OpIAdd %uint %uint_16 %start_byte_offset_6 |
| %468 = OpUDiv %uint %467 %uint_16 |
| %469 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %468 |
| %470 = OpLoad %v4uint %469 None |
| %471 = OpVectorShuffle %v3uint %470 %470 0 1 2 |
| %472 = OpBitcast %v3float %471 |
| %473 = OpIAdd %uint %uint_32 %start_byte_offset_6 |
| %474 = OpUDiv %uint %473 %uint_16 |
| %475 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %474 |
| %476 = OpLoad %v4uint %475 None |
| %477 = OpVectorShuffle %v3uint %476 %476 0 1 2 |
| %478 = OpBitcast %v3float %477 |
| %479 = OpCompositeConstruct %mat3v3float %466 %472 %478 |
| OpReturnValue %479 |
| OpFunctionEnd |
| %90 = OpFunction %mat3v2float None %481 |
| %start_byte_offset_7 = OpFunctionParameter %uint |
| %482 = OpLabel |
| %483 = OpUDiv %uint %start_byte_offset_7 %uint_16 |
| %484 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %483 |
| %485 = OpLoad %v4uint %484 None |
| %486 = OpBitwiseAnd %uint %start_byte_offset_7 %uint_15 |
| %487 = OpShiftRightLogical %uint %486 %uint_2 |
| %488 = OpVectorShuffle %v2uint %485 %485 2 3 |
| %489 = OpVectorShuffle %v2uint %485 %485 0 1 |
| %490 = OpIEqual %bool %487 %uint_2 |
| %491 = OpCompositeConstruct %v2bool %490 %490 |
| %492 = OpSelect %v2uint %491 %488 %489 |
| %493 = OpBitcast %v2float %492 |
| %494 = OpIAdd %uint %uint_8 %start_byte_offset_7 |
| %495 = OpUDiv %uint %494 %uint_16 |
| %496 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %495 |
| %497 = OpLoad %v4uint %496 None |
| %498 = OpBitwiseAnd %uint %494 %uint_15 |
| %499 = OpShiftRightLogical %uint %498 %uint_2 |
| %500 = OpVectorShuffle %v2uint %497 %497 2 3 |
| %501 = OpVectorShuffle %v2uint %497 %497 0 1 |
| %502 = OpIEqual %bool %499 %uint_2 |
| %503 = OpCompositeConstruct %v2bool %502 %502 |
| %504 = OpSelect %v2uint %503 %500 %501 |
| %505 = OpBitcast %v2float %504 |
| %506 = OpIAdd %uint %uint_16 %start_byte_offset_7 |
| %507 = OpUDiv %uint %506 %uint_16 |
| %508 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %507 |
| %509 = OpLoad %v4uint %508 None |
| %510 = OpBitwiseAnd %uint %506 %uint_15 |
| %511 = OpShiftRightLogical %uint %510 %uint_2 |
| %512 = OpVectorShuffle %v2uint %509 %509 2 3 |
| %513 = OpVectorShuffle %v2uint %509 %509 0 1 |
| %514 = OpIEqual %bool %511 %uint_2 |
| %515 = OpCompositeConstruct %v2bool %514 %514 |
| %516 = OpSelect %v2uint %515 %512 %513 |
| %517 = OpBitcast %v2float %516 |
| %518 = OpCompositeConstruct %mat3v2float %493 %505 %517 |
| OpReturnValue %518 |
| OpFunctionEnd |
| %86 = OpFunction %mat2v4float None %520 |
| %start_byte_offset_8 = OpFunctionParameter %uint |
| %521 = OpLabel |
| %522 = OpUDiv %uint %start_byte_offset_8 %uint_16 |
| %523 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %522 |
| %524 = OpLoad %v4uint %523 None |
| %525 = OpBitcast %v4float %524 |
| %526 = OpIAdd %uint %uint_16 %start_byte_offset_8 |
| %527 = OpUDiv %uint %526 %uint_16 |
| %528 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %527 |
| %529 = OpLoad %v4uint %528 None |
| %530 = OpBitcast %v4float %529 |
| %531 = OpCompositeConstruct %mat2v4float %525 %530 |
| OpReturnValue %531 |
| OpFunctionEnd |
| %82 = OpFunction %mat2v3float None %533 |
| %start_byte_offset_9 = OpFunctionParameter %uint |
| %534 = OpLabel |
| %535 = OpUDiv %uint %start_byte_offset_9 %uint_16 |
| %536 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %535 |
| %537 = OpLoad %v4uint %536 None |
| %538 = OpVectorShuffle %v3uint %537 %537 0 1 2 |
| %539 = OpBitcast %v3float %538 |
| %540 = OpIAdd %uint %uint_16 %start_byte_offset_9 |
| %541 = OpUDiv %uint %540 %uint_16 |
| %542 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %541 |
| %543 = OpLoad %v4uint %542 None |
| %544 = OpVectorShuffle %v3uint %543 %543 0 1 2 |
| %545 = OpBitcast %v3float %544 |
| %546 = OpCompositeConstruct %mat2v3float %539 %545 |
| OpReturnValue %546 |
| OpFunctionEnd |
| %78 = OpFunction %mat2v2float None %548 |
| %start_byte_offset_10 = OpFunctionParameter %uint |
| %549 = OpLabel |
| %550 = OpUDiv %uint %start_byte_offset_10 %uint_16 |
| %551 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %550 |
| %552 = OpLoad %v4uint %551 None |
| %553 = OpBitwiseAnd %uint %start_byte_offset_10 %uint_15 |
| %554 = OpShiftRightLogical %uint %553 %uint_2 |
| %555 = OpVectorShuffle %v2uint %552 %552 2 3 |
| %556 = OpVectorShuffle %v2uint %552 %552 0 1 |
| %557 = OpIEqual %bool %554 %uint_2 |
| %558 = OpCompositeConstruct %v2bool %557 %557 |
| %559 = OpSelect %v2uint %558 %555 %556 |
| %560 = OpBitcast %v2float %559 |
| %561 = OpIAdd %uint %uint_8 %start_byte_offset_10 |
| %562 = OpUDiv %uint %561 %uint_16 |
| %563 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %562 |
| %564 = OpLoad %v4uint %563 None |
| %565 = OpBitwiseAnd %uint %561 %uint_15 |
| %566 = OpShiftRightLogical %uint %565 %uint_2 |
| %567 = OpVectorShuffle %v2uint %564 %564 2 3 |
| %568 = OpVectorShuffle %v2uint %564 %564 0 1 |
| %569 = OpIEqual %bool %566 %uint_2 |
| %570 = OpCompositeConstruct %v2bool %569 %569 |
| %571 = OpSelect %v2uint %570 %567 %568 |
| %572 = OpBitcast %v2float %571 |
| %573 = OpCompositeConstruct %mat2v2float %560 %572 |
| OpReturnValue %573 |
| OpFunctionEnd |