blob: 4d0128bcaad697e1d866c60c7fdfb0644b970ea5 [file] [log] [blame]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 274
; Schema: 0
OpCapability Shader
OpCapability Float16
OpCapability UniformAndStorageBuffer16BitAccess
OpCapability StorageBuffer16BitAccess
OpCapability StorageInputOutput16
OpCapability Sampled1D
OpCapability ImageQuery
%71 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %value_1 %vertex_point_size
OpEntryPoint Fragment %fragment_main "fragment_main"
OpEntryPoint GLCompute %rgba32uintin "rgba32uintin"
OpEntryPoint Vertex %vs_main "vs_main" %position_1 %color_1 %quad_pos_1 %position_2 %color_2 %quad_pos_2 %vertex_point_size_1
OpEntryPoint GLCompute %simulate "simulate" %GlobalInvocationID_1
OpEntryPoint GLCompute %export_level "export_level" %coord_1
OpExecutionMode %fragment_main OriginUpperLeft
OpExecutionMode %rgba32uintin LocalSize 1 1 1
OpExecutionMode %simulate LocalSize 64 1 1
OpExecutionMode %export_level LocalSize 64 1 1
OpName %value_1 "value_1"
OpName %vertex_point_size "vertex_point_size"
OpName %position_1 "position_1"
OpName %color_1 "color_1"
OpName %quad_pos_1 "quad_pos_1"
OpName %position_2 "position_2"
OpName %color_2 "color_2"
OpName %quad_pos_2 "quad_pos_2"
OpName %vertex_point_size_1 "vertex_point_size_1"
OpName %GlobalInvocationID_1 "GlobalInvocationID_1"
OpName %coord_1 "coord_1"
OpName %rand_seed "rand_seed"
OpName %render_params_block "render_params_block"
OpMemberName %render_params_block 0 "inner"
OpName %RenderParams "RenderParams"
OpMemberName %RenderParams 0 "modelViewProjectionMatrix"
OpMemberName %RenderParams 1 "right"
OpMemberName %RenderParams 2 "up"
OpName %render_params "render_params"
OpName %sim_params_block "sim_params_block"
OpMemberName %sim_params_block 0 "inner"
OpName %SimulationParams "SimulationParams"
OpMemberName %SimulationParams 0 "deltaTime"
OpMemberName %SimulationParams 1 "seed"
OpName %sim_params "sim_params"
OpName %Particles "Particles"
OpMemberName %Particles 0 "particles"
OpName %Particle "Particle"
OpMemberName %Particle 0 "position"
OpMemberName %Particle 1 "lifetime"
OpMemberName %Particle 2 "color"
OpMemberName %Particle 3 "velocity"
OpName %data "data"
OpName %texture "texture"
OpName %ubo_block "ubo_block"
OpMemberName %ubo_block 0 "inner"
OpName %UBO "UBO"
OpMemberName %UBO 0 "width"
OpName %ubo "ubo"
OpName %Buffer "Buffer"
OpMemberName %Buffer 0 "weights"
OpName %buf_in "buf_in"
OpName %buf_out "buf_out"
OpName %tex_in "tex_in"
OpName %tex_out "tex_out"
OpName %asinh_468a48 "asinh_468a48"
OpName %arg_0 "arg_0"
OpName %res "res"
OpName %vertex_main_inner "vertex_main_inner"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %rgba32uintin "rgba32uintin"
OpName %VertexOutput "VertexOutput"
OpMemberName %VertexOutput 0 "position"
OpMemberName %VertexOutput 1 "color"
OpMemberName %VertexOutput 2 "quad_pos"
OpName %VertexInput "VertexInput"
OpMemberName %VertexInput 0 "position"
OpMemberName %VertexInput 1 "color"
OpMemberName %VertexInput 2 "quad_pos"
OpName %vs_main_inner "vs_main_inner"
OpName %in "in"
OpName %quad_pos "quad_pos"
OpName %position "position"
OpName %out "out"
OpName %vs_main "vs_main"
OpName %assign_and_preserve_padding_data_particles_X "assign_and_preserve_padding_data_particles_X"
OpName %dest "dest"
OpName %value "value"
OpName %simulate_inner "simulate_inner"
OpName %GlobalInvocationID "GlobalInvocationID"
OpName %particle "particle"
OpName %simulate "simulate"
OpName %export_level_inner "export_level_inner"
OpName %coord "coord"
OpName %export_level "export_level"
OpDecorate %value_1 BuiltIn Position
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %position_1 Location 0
OpDecorate %color_1 Location 1
OpDecorate %quad_pos_1 Location 2
OpDecorate %position_2 BuiltIn Position
OpDecorate %color_2 Location 0
OpDecorate %quad_pos_2 Location 1
OpDecorate %vertex_point_size_1 BuiltIn PointSize
OpDecorate %GlobalInvocationID_1 BuiltIn GlobalInvocationId
OpDecorate %coord_1 BuiltIn GlobalInvocationId
OpDecorate %render_params_block Block
OpMemberDecorate %render_params_block 0 Offset 0
OpMemberDecorate %RenderParams 0 Offset 0
OpMemberDecorate %RenderParams 0 ColMajor
OpMemberDecorate %RenderParams 0 MatrixStride 16
OpMemberDecorate %RenderParams 1 Offset 64
OpMemberDecorate %RenderParams 2 Offset 80
OpDecorate %render_params NonWritable
OpDecorate %render_params Binding 5
OpDecorate %render_params DescriptorSet 0
OpDecorate %sim_params_block Block
OpMemberDecorate %sim_params_block 0 Offset 0
OpMemberDecorate %SimulationParams 0 Offset 0
OpMemberDecorate %SimulationParams 1 Offset 16
OpDecorate %sim_params NonWritable
OpDecorate %sim_params Binding 0
OpDecorate %sim_params DescriptorSet 0
OpDecorate %Particles Block
OpMemberDecorate %Particles 0 Offset 0
OpMemberDecorate %Particle 0 Offset 0
OpMemberDecorate %Particle 1 Offset 12
OpMemberDecorate %Particle 2 Offset 16
OpMemberDecorate %Particle 3 Offset 32
OpDecorate %_runtimearr_Particle ArrayStride 48
OpDecorate %data Binding 1
OpDecorate %data DescriptorSet 0
OpDecorate %texture Binding 2
OpDecorate %texture DescriptorSet 0
OpDecorate %ubo_block Block
OpMemberDecorate %ubo_block 0 Offset 0
OpMemberDecorate %UBO 0 Offset 0
OpDecorate %ubo NonWritable
OpDecorate %ubo Binding 3
OpDecorate %ubo DescriptorSet 0
OpDecorate %Buffer Block
OpMemberDecorate %Buffer 0 Offset 0
OpDecorate %_runtimearr_float ArrayStride 4
OpDecorate %buf_in NonWritable
OpDecorate %buf_in Binding 4
OpDecorate %buf_in DescriptorSet 0
OpDecorate %buf_out Binding 5
OpDecorate %buf_out DescriptorSet 0
OpDecorate %tex_in Binding 6
OpDecorate %tex_in DescriptorSet 0
OpDecorate %tex_out NonReadable
OpDecorate %tex_out Binding 7
OpDecorate %tex_out DescriptorSet 0
OpMemberDecorate %VertexOutput 0 Offset 0
OpMemberDecorate %VertexOutput 1 Offset 16
OpMemberDecorate %VertexOutput 2 Offset 32
OpMemberDecorate %VertexInput 0 Offset 0
OpMemberDecorate %VertexInput 1 Offset 16
OpMemberDecorate %VertexInput 2 Offset 32
OpDecorate %_arr_uint_uint_1 ArrayStride 4
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5 = OpConstantNull %v4float
%value_1 = OpVariable %_ptr_Output_v4float Output %5
%_ptr_Output_float = OpTypePointer Output %float
%8 = OpConstantNull %float
%vertex_point_size = OpVariable %_ptr_Output_float Output %8
%v3float = OpTypeVector %float 3
%_ptr_Input_v3float = OpTypePointer Input %v3float
%position_1 = OpVariable %_ptr_Input_v3float Input
%_ptr_Input_v4float = OpTypePointer Input %v4float
%color_1 = OpVariable %_ptr_Input_v4float Input
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%quad_pos_1 = OpVariable %_ptr_Input_v2float Input
%position_2 = OpVariable %_ptr_Output_v4float Output %5
%color_2 = OpVariable %_ptr_Output_v4float Output %5
%_ptr_Output_v2float = OpTypePointer Output %v2float
%21 = OpConstantNull %v2float
%quad_pos_2 = OpVariable %_ptr_Output_v2float Output %21
%vertex_point_size_1 = OpVariable %_ptr_Output_float Output %8
%uint = OpTypeInt 32 0
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%GlobalInvocationID_1 = OpVariable %_ptr_Input_v3uint Input
%coord_1 = OpVariable %_ptr_Input_v3uint Input
%_ptr_Private_v2float = OpTypePointer Private %v2float
%rand_seed = OpVariable %_ptr_Private_v2float Private %21
%mat4v4float = OpTypeMatrix %v4float 4
%RenderParams = OpTypeStruct %mat4v4float %v3float %v3float
%render_params_block = OpTypeStruct %RenderParams
%_ptr_Uniform_render_params_block = OpTypePointer Uniform %render_params_block
%render_params = OpVariable %_ptr_Uniform_render_params_block Uniform
%SimulationParams = OpTypeStruct %float %v4float
%sim_params_block = OpTypeStruct %SimulationParams
%_ptr_Uniform_sim_params_block = OpTypePointer Uniform %sim_params_block
%sim_params = OpVariable %_ptr_Uniform_sim_params_block Uniform
%Particle = OpTypeStruct %v3float %float %v4float %v2float
%_runtimearr_Particle = OpTypeRuntimeArray %Particle
%Particles = OpTypeStruct %_runtimearr_Particle
%_ptr_StorageBuffer_Particles = OpTypePointer StorageBuffer %Particles
%data = OpVariable %_ptr_StorageBuffer_Particles StorageBuffer
%46 = OpTypeImage %float 1D 0 0 0 1 Unknown
%_ptr_UniformConstant_46 = OpTypePointer UniformConstant %46
%texture = OpVariable %_ptr_UniformConstant_46 UniformConstant
%UBO = OpTypeStruct %uint
%ubo_block = OpTypeStruct %UBO
%_ptr_Uniform_ubo_block = OpTypePointer Uniform %ubo_block
%ubo = OpVariable %_ptr_Uniform_ubo_block Uniform
%_runtimearr_float = OpTypeRuntimeArray %float
%Buffer = OpTypeStruct %_runtimearr_float
%_ptr_StorageBuffer_Buffer = OpTypePointer StorageBuffer %Buffer
%buf_in = OpVariable %_ptr_StorageBuffer_Buffer StorageBuffer
%buf_out = OpVariable %_ptr_StorageBuffer_Buffer StorageBuffer
%58 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_UniformConstant_58 = OpTypePointer UniformConstant %58
%tex_in = OpVariable %_ptr_UniformConstant_58 UniformConstant
%61 = OpTypeImage %float 2D 0 0 0 2 Rgba8
%_ptr_UniformConstant_61 = OpTypePointer UniformConstant %61
%tex_out = OpVariable %_ptr_UniformConstant_61 UniformConstant
%void = OpTypeVoid
%62 = OpTypeFunction %void
%half = OpTypeFloat 16
%67 = OpConstantNull %half
%_ptr_Function_half = OpTypePointer Function %half
%74 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1
%VertexOutput = OpTypeStruct %v4float %v4float %v2float
%VertexInput = OpTypeStruct %v3float %v4float %v2float
%88 = OpTypeFunction %VertexOutput %VertexInput
%mat2v3float = OpTypeMatrix %v3float 2
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%uint_2 = OpConstant %uint 2
%_ptr_Function_v3float = OpTypePointer Function %v3float
%108 = OpConstantNull %v3float
%float_0_00999999978 = OpConstant %float 0.00999999978
%_ptr_Function_VertexOutput = OpTypePointer Function %VertexOutput
%119 = OpConstantNull %VertexOutput
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
%147 = OpTypeFunction %void %_arr_uint_uint_1 %Particle
%int = OpTypeInt 32 1
%154 = OpConstantNull %int
%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%_ptr_StorageBuffer_v4float = OpTypePointer StorageBuffer %v4float
%uint_3 = OpConstant %uint 3
%_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float
%172 = OpTypeFunction %void %v3uint
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%v2uint = OpTypeVector %uint 2
%_ptr_StorageBuffer_Particle = OpTypePointer StorageBuffer %Particle
%_ptr_Function_Particle = OpTypePointer Function %Particle
%194 = OpConstantNull %Particle
%bool = OpTypeBool
%v2bool = OpTypeVector %bool 2
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
%uint_31 = OpConstant %uint 31
%232 = OpConstantNull %uint
%253 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%float_4 = OpConstant %float 4
%v2int = OpTypeVector %int 2
%asinh_468a48 = OpFunction %void None %62
%65 = OpLabel
%arg_0 = OpVariable %_ptr_Function_half Function %67
%res = OpVariable %_ptr_Function_half Function %67
OpStore %arg_0 %67
%72 = OpLoad %half %arg_0
%70 = OpExtInst %half %71 Asinh %72
OpStore %res %70
OpReturn
OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %74
%76 = OpLabel
%77 = OpFunctionCall %void %asinh_468a48
OpReturnValue %5
OpFunctionEnd
%vertex_main = OpFunction %void None %62
%79 = OpLabel
%80 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value_1 %80
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %62
%83 = OpLabel
%84 = OpFunctionCall %void %asinh_468a48
OpReturn
OpFunctionEnd
%rgba32uintin = OpFunction %void None %62
%86 = OpLabel
%87 = OpFunctionCall %void %asinh_468a48
OpReturn
OpFunctionEnd
%vs_main_inner = OpFunction %VertexOutput None %88
%in = OpFunctionParameter %VertexInput
%93 = OpLabel
%quad_pos = OpVariable %_ptr_Function_v3float Function %108
%113 = OpVariable %_ptr_Function_v3float Function %108
%position = OpVariable %_ptr_Function_v3float Function %108
%out = OpVariable %_ptr_Function_VertexOutput Function %119
%98 = OpAccessChain %_ptr_Uniform_v3float %render_params %uint_0 %uint_1
%99 = OpLoad %v3float %98
%101 = OpAccessChain %_ptr_Uniform_v3float %render_params %uint_0 %uint_2
%102 = OpLoad %v3float %101
%103 = OpCompositeConstruct %mat2v3float %99 %102
%104 = OpCompositeExtract %v2float %in 2
%105 = OpMatrixTimesVector %v3float %103 %104
OpStore %quad_pos %105
%109 = OpCompositeExtract %v3float %in 0
%110 = OpLoad %v3float %quad_pos
%114 = OpCompositeConstruct %v3float %float_0_00999999978 %float_0_00999999978 %float_0_00999999978
%112 = OpFAdd %v3float %110 %114
%115 = OpFSub %v3float %109 %112
OpStore %position %115
%121 = OpAccessChain %_ptr_Function_v4float %out %uint_0
%123 = OpAccessChain %_ptr_Uniform_mat4v4float %render_params %uint_0 %uint_0
%124 = OpLoad %mat4v4float %123
%125 = OpLoad %v3float %position
%126 = OpCompositeExtract %float %125 0
%127 = OpCompositeExtract %float %125 1
%128 = OpCompositeExtract %float %125 2
%129 = OpCompositeConstruct %v4float %126 %127 %128 %float_1
%130 = OpMatrixTimesVector %v4float %124 %129
OpStore %121 %130
%131 = OpAccessChain %_ptr_Function_v4float %out %uint_1
%132 = OpCompositeExtract %v4float %in 1
OpStore %131 %132
%134 = OpAccessChain %_ptr_Function_v2float %out %uint_2
%135 = OpCompositeExtract %v2float %in 2
OpStore %134 %135
%136 = OpLoad %VertexOutput %out
OpReturnValue %136
OpFunctionEnd
%vs_main = OpFunction %void None %62
%138 = OpLabel
%140 = OpLoad %v3float %position_1
%141 = OpLoad %v4float %color_1
%142 = OpLoad %v2float %quad_pos_1
%143 = OpCompositeConstruct %VertexInput %140 %141 %142
%139 = OpFunctionCall %VertexOutput %vs_main_inner %143
%144 = OpCompositeExtract %v4float %139 0
OpStore %position_2 %144
%145 = OpCompositeExtract %v4float %139 1
OpStore %color_2 %145
%146 = OpCompositeExtract %v2float %139 2
OpStore %quad_pos_2 %146
OpStore %vertex_point_size_1 %float_1
OpReturn
OpFunctionEnd
%assign_and_preserve_padding_data_particles_X = OpFunction %void None %147
%dest = OpFunctionParameter %_arr_uint_uint_1
%value = OpFunctionParameter %Particle
%152 = OpLabel
%155 = OpCompositeExtract %uint %dest 0
%157 = OpAccessChain %_ptr_StorageBuffer_v3float %data %uint_0 %155 %uint_0
%158 = OpCompositeExtract %v3float %value 0
OpStore %157 %158
%159 = OpCompositeExtract %uint %dest 0
%161 = OpAccessChain %_ptr_StorageBuffer_float %data %uint_0 %159 %uint_1
%162 = OpCompositeExtract %float %value 1
OpStore %161 %162
%163 = OpCompositeExtract %uint %dest 0
%165 = OpAccessChain %_ptr_StorageBuffer_v4float %data %uint_0 %163 %uint_2
%166 = OpCompositeExtract %v4float %value 2
OpStore %165 %166
%167 = OpCompositeExtract %uint %dest 0
%170 = OpAccessChain %_ptr_StorageBuffer_v2float %data %uint_0 %167 %uint_3
%171 = OpCompositeExtract %v2float %value 3
OpStore %170 %171
OpReturn
OpFunctionEnd
%simulate_inner = OpFunction %void None %172
%GlobalInvocationID = OpFunctionParameter %v3uint
%175 = OpLabel
%particle = OpVariable %_ptr_Function_Particle Function %194
%177 = OpAccessChain %_ptr_Uniform_v4float %sim_params %uint_0 %uint_1
%178 = OpLoad %v4float %177
%179 = OpVectorShuffle %v2float %178 %178 0 1
%182 = OpVectorShuffle %v2uint %GlobalInvocationID %GlobalInvocationID 0 1
%180 = OpConvertUToF %v2float %182
%183 = OpFMul %v2float %179 %180
%184 = OpAccessChain %_ptr_Uniform_v4float %sim_params %uint_0 %uint_1
%185 = OpLoad %v4float %184
%186 = OpVectorShuffle %v2float %185 %185 2 3
%187 = OpFMul %v2float %183 %186
OpStore %rand_seed %187
%188 = OpCompositeExtract %uint %GlobalInvocationID 0
%190 = OpAccessChain %_ptr_StorageBuffer_Particle %data %uint_0 %188
%191 = OpLoad %Particle %190
OpStore %particle %191
%196 = OpCompositeConstruct %_arr_uint_uint_1 %188
%197 = OpLoad %Particle %particle
%195 = OpFunctionCall %void %assign_and_preserve_padding_data_particles_X %196 %197
OpReturn
OpFunctionEnd
%simulate = OpFunction %void None %62
%199 = OpLabel
%201 = OpLoad %v3uint %GlobalInvocationID_1
%200 = OpFunctionCall %void %simulate_inner %201
OpReturn
OpFunctionEnd
%export_level_inner = OpFunction %void None %172
%coord = OpFunctionParameter %v3uint
%204 = OpLabel
%263 = OpVariable %_ptr_Function_v4float Function %5
%207 = OpVectorShuffle %v2uint %coord %coord 0 1
%210 = OpLoad %61 %tex_out
%209 = OpImageQuerySize %v2uint %210
%211 = OpULessThan %v2bool %207 %209
%205 = OpAll %bool %211
OpSelectionMerge %213 None
OpBranchConditional %205 %214 %213
%214 = OpLabel
%215 = OpCompositeExtract %uint %coord 0
%216 = OpCompositeExtract %uint %coord 1
%218 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
%219 = OpLoad %uint %218
%220 = OpIMul %uint %216 %219
%222 = OpBitwiseAnd %uint %220 %uint_31
%223 = OpShiftLeftLogical %uint %215 %222
%224 = OpCompositeExtract %uint %coord 0
%225 = OpISub %uint %224 %uint_2
%226 = OpCompositeExtract %uint %coord 1
%227 = OpShiftRightLogical %uint %226 %uint_2
%228 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
%229 = OpLoad %uint %228
%230 = OpIMul %uint %227 %229
%231 = OpIAdd %uint %225 %230
%233 = OpShiftLeftLogical %uint %231 %232
%234 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %233
%235 = OpLoad %float %234
%236 = OpIAdd %uint %231 %uint_1
%237 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %236
%238 = OpLoad %float %237
%239 = OpIAdd %uint %231 %uint_1
%240 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
%241 = OpLoad %uint %240
%242 = OpIAdd %uint %239 %241
%243 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %242
%244 = OpLoad %float %243
%245 = OpIAdd %uint %231 %uint_1
%246 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
%247 = OpLoad %uint %246
%248 = OpIAdd %uint %245 %247
%249 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %248
%250 = OpLoad %float %249
%252 = OpCompositeConstruct %v4float %235 %238 %244 %250
%251 = OpDot %float %252 %253
%254 = OpAccessChain %_ptr_StorageBuffer_float %buf_out %uint_0 %223
%256 = OpFRem %float %251 %float_4
OpStore %254 %256
%257 = OpFMul %float %235 %238
%258 = OpFDiv %float %235 %238
%259 = OpFAdd %float %258 %244
%260 = OpCompositeConstruct %v4float %235 %257 %259 %251
%261 = OpExtInst %float %71 NMax %251 %8
%264 = OpCompositeConstruct %v4float %261 %261 %261 %261
%262 = OpFAdd %v4float %260 %264
%266 = OpLoad %61 %tex_out
%269 = OpVectorShuffle %v2uint %coord %coord 0 1
%267 = OpBitcast %v2int %269
OpImageWrite %266 %267 %262
OpBranch %213
%213 = OpLabel
OpReturn
OpFunctionEnd
%export_level = OpFunction %void None %62
%271 = OpLabel
%273 = OpLoad %v3uint %coord_1
%272 = OpFunctionCall %void %export_level_inner %273
OpReturn
OpFunctionEnd