blob: 09d0c9d9449ed6adfd20dc81e88cf9717dde0565 [file]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 1
; Bound: 75
; Schema: 0
OpCapability Shader
OpCapability Float16
OpCapability StorageBuffer16BitAccess
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main"
OpExecutionMode %main OriginUpperLeft
OpMemberName %data_block_tint_explicit_layout 0 "inner"
OpName %data_block_tint_explicit_layout "data_block_tint_explicit_layout"
OpName %main "main"
OpName %x "x"
OpName %start_byte_offset "start_byte_offset"
OpDecorate %_arr_v4uint_uint_2 ArrayStride 16
OpMemberDecorate %data_block_tint_explicit_layout 0 Offset 0
OpDecorate %data_block_tint_explicit_layout Block
OpDecorate %1 DescriptorSet 0
OpDecorate %1 Binding 0
OpDecorate %1 NonWritable
%uint = OpTypeInt 32 0
%v4uint = OpTypeVector %uint 4
%uint_2 = OpConstant %uint 2
%_arr_v4uint_uint_2 = OpTypeArray %v4uint %uint_2
%data_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_2
%_ptr_Uniform_data_block_tint_explicit_layout = OpTypePointer Uniform %data_block_tint_explicit_layout
%1 = OpVariable %_ptr_Uniform_data_block_tint_explicit_layout Uniform
%void = OpTypeVoid
%10 = OpTypeFunction %void
%half = OpTypeFloat 16
%v3half = OpTypeVector %half 3
%mat3v3half = OpTypeMatrix %v3half 3
%uint_0 = OpConstant %uint 0
%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint
%uint_1 = OpConstant %uint 1
%v2uint = OpTypeVector %uint 2
%v4half = OpTypeVector %half 4
%29 = OpTypeFunction %mat3v3half %uint
%uint_16 = OpConstant %uint 16
%uint_15 = OpConstant %uint 15
%bool = OpTypeBool
%v2bool = OpTypeVector %bool 2
%uint_8 = OpConstant %uint 8
%main = OpFunction %void None %10
%11 = OpLabel
%12 = OpFunctionCall %mat3v3half %16 %uint_0
%18 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %uint_1
%21 = OpLoad %v4uint %18 None
%22 = OpVectorShuffle %v2uint %21 %21 2 3
%25 = OpBitcast %v4half %22
%26 = OpVectorShuffle %v3half %25 %25 0 1 2
%x = OpMatrixTimesVector %v3half %12 %26
OpReturn
OpFunctionEnd
%16 = OpFunction %mat3v3half None %29
%start_byte_offset = OpFunctionParameter %uint
%30 = OpLabel
%31 = OpUDiv %uint %start_byte_offset %uint_16
%33 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %31
%34 = OpLoad %v4uint %33 None
%35 = OpBitwiseAnd %uint %start_byte_offset %uint_15
%37 = OpShiftRightLogical %uint %35 %uint_2
%38 = OpVectorShuffle %v2uint %34 %34 2 3
%39 = OpVectorShuffle %v2uint %34 %34 0 1
%40 = OpIEqual %bool %37 %uint_2
%43 = OpCompositeConstruct %v2bool %40 %40
%44 = OpSelect %v2uint %43 %38 %39
%45 = OpBitcast %v4half %44
%46 = OpVectorShuffle %v3half %45 %45 0 1 2
%47 = OpIAdd %uint %uint_8 %start_byte_offset
%49 = OpUDiv %uint %47 %uint_16
%50 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %49
%51 = OpLoad %v4uint %50 None
%52 = OpBitwiseAnd %uint %47 %uint_15
%53 = OpShiftRightLogical %uint %52 %uint_2
%54 = OpVectorShuffle %v2uint %51 %51 2 3
%55 = OpVectorShuffle %v2uint %51 %51 0 1
%56 = OpIEqual %bool %53 %uint_2
%57 = OpCompositeConstruct %v2bool %56 %56
%58 = OpSelect %v2uint %57 %54 %55
%59 = OpBitcast %v4half %58
%60 = OpVectorShuffle %v3half %59 %59 0 1 2
%61 = OpIAdd %uint %uint_16 %start_byte_offset
%62 = OpUDiv %uint %61 %uint_16
%63 = OpAccessChain %_ptr_Uniform_v4uint %1 %uint_0 %62
%64 = OpLoad %v4uint %63 None
%65 = OpBitwiseAnd %uint %61 %uint_15
%66 = OpShiftRightLogical %uint %65 %uint_2
%67 = OpVectorShuffle %v2uint %64 %64 2 3
%68 = OpVectorShuffle %v2uint %64 %64 0 1
%69 = OpIEqual %bool %66 %uint_2
%70 = OpCompositeConstruct %v2bool %69 %69
%71 = OpSelect %v2uint %70 %67 %68
%72 = OpBitcast %v4half %71
%73 = OpVectorShuffle %v3half %72 %72 0 1 2
%74 = OpCompositeConstruct %mat3v3half %46 %60 %73
OpReturnValue %74
OpFunctionEnd