dawn-cmake/test/samples/compute_boids.wgsl.expected.spvasm
Ben Clayton d1232670ae test: Generate expected output for all tests
The expected output is far from perfect, and the generated HLSL and MSL
isn't even validated yet, so may be incorrect.

However, by committing the generated output, we get clear examples of
the currently generated output of each backend. As we land fixes and
improvements to each backend, the presubmits will require us to update
the expected test output, and so code reviews will include diffs of
each backend's generated output.

Change-Id: I5c2a9e5b796d0ab75b3ec4c7f8ad00a0a2ab166f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/51224
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2021-05-18 09:24:18 +00:00

444 lines
19 KiB
Plaintext

; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 279
; Schema: 0
OpCapability Shader
%40 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vert_main "vert_main" %tint_pointsize %tint_symbol_1 %tint_symbol_2 %tint_symbol %tint_symbol_4
OpEntryPoint Fragment %frag_main "frag_main" %tint_symbol_7
OpEntryPoint GLCompute %comp_main "comp_main" %tint_symbol_9
OpExecutionMode %frag_main OriginUpperLeft
OpExecutionMode %comp_main LocalSize 1 1 1
OpName %tint_pointsize "tint_pointsize"
OpName %tint_symbol "tint_symbol"
OpName %tint_symbol_1 "tint_symbol_1"
OpName %tint_symbol_2 "tint_symbol_2"
OpName %tint_symbol_4 "tint_symbol_4"
OpName %tint_symbol_7 "tint_symbol_7"
OpName %SimParams "SimParams"
OpMemberName %SimParams 0 "deltaT"
OpMemberName %SimParams 1 "rule1Distance"
OpMemberName %SimParams 2 "rule2Distance"
OpMemberName %SimParams 3 "rule3Distance"
OpMemberName %SimParams 4 "rule1Scale"
OpMemberName %SimParams 5 "rule2Scale"
OpMemberName %SimParams 6 "rule3Scale"
OpName %params "params"
OpName %Particles "Particles"
OpMemberName %Particles 0 "particles"
OpName %Particle "Particle"
OpMemberName %Particle 0 "pos"
OpMemberName %Particle 1 "vel"
OpName %particlesA "particlesA"
OpName %particlesB "particlesB"
OpName %tint_symbol_9 "tint_symbol_9"
OpName %tint_symbol_5 "tint_symbol_5"
OpName %tint_symbol_3 "tint_symbol_3"
OpName %vert_main "vert_main"
OpName %angle "angle"
OpName %pos "pos"
OpName %tint_symbol_8 "tint_symbol_8"
OpName %tint_symbol_6 "tint_symbol_6"
OpName %frag_main "frag_main"
OpName %comp_main "comp_main"
OpName %index "index"
OpName %vPos "vPos"
OpName %vVel "vVel"
OpName %cMass "cMass"
OpName %cVel "cVel"
OpName %colVel "colVel"
OpName %cMassCount "cMassCount"
OpName %cVelCount "cVelCount"
OpName %pos_0 "pos"
OpName %vel "vel"
OpName %i "i"
OpDecorate %tint_pointsize BuiltIn PointSize
OpDecorate %tint_symbol Location 0
OpDecorate %tint_symbol_1 Location 1
OpDecorate %tint_symbol_2 Location 2
OpDecorate %tint_symbol_4 BuiltIn Position
OpDecorate %tint_symbol_7 Location 0
OpDecorate %SimParams Block
OpMemberDecorate %SimParams 0 Offset 0
OpMemberDecorate %SimParams 1 Offset 4
OpMemberDecorate %SimParams 2 Offset 8
OpMemberDecorate %SimParams 3 Offset 12
OpMemberDecorate %SimParams 4 Offset 16
OpMemberDecorate %SimParams 5 Offset 20
OpMemberDecorate %SimParams 6 Offset 24
OpDecorate %params Binding 0
OpDecorate %params DescriptorSet 0
OpDecorate %Particles Block
OpMemberDecorate %Particles 0 Offset 0
OpMemberDecorate %Particle 0 Offset 0
OpMemberDecorate %Particle 1 Offset 8
OpDecorate %_arr_Particle_uint_5 ArrayStride 16
OpDecorate %particlesA Binding 1
OpDecorate %particlesA DescriptorSet 0
OpDecorate %particlesB Binding 2
OpDecorate %particlesB DescriptorSet 0
OpDecorate %tint_symbol_9 BuiltIn GlobalInvocationId
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%tint_symbol = OpVariable %_ptr_Input_v2float Input
%tint_symbol_1 = OpVariable %_ptr_Input_v2float Input
%tint_symbol_2 = OpVariable %_ptr_Input_v2float Input
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%13 = OpConstantNull %v4float
%tint_symbol_4 = OpVariable %_ptr_Output_v4float Output %13
%tint_symbol_7 = OpVariable %_ptr_Output_v4float Output %13
%SimParams = OpTypeStruct %float %float %float %float %float %float %float
%_ptr_Uniform_SimParams = OpTypePointer Uniform %SimParams
%params = OpVariable %_ptr_Uniform_SimParams Uniform
%Particle = OpTypeStruct %v2float %v2float
%uint = OpTypeInt 32 0
%uint_5 = OpConstant %uint 5
%_arr_Particle_uint_5 = OpTypeArray %Particle %uint_5
%Particles = OpTypeStruct %_arr_Particle_uint_5
%_ptr_StorageBuffer_Particles = OpTypePointer StorageBuffer %Particles
%particlesA = OpVariable %_ptr_StorageBuffer_Particles StorageBuffer
%particlesB = OpVariable %_ptr_StorageBuffer_Particles StorageBuffer
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%tint_symbol_9 = OpVariable %_ptr_Input_v3uint Input
%void = OpTypeVoid
%29 = OpTypeFunction %void %v4float
%34 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%uint_0 = OpConstant %uint 0
%_ptr_Input_float = OpTypePointer Input %float
%uint_1 = OpConstant %uint 1
%_ptr_Function_float = OpTypePointer Function %float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%75 = OpConstantNull %v2float
%float_0 = OpConstant %float 0
%90 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%_ptr_Input_uint = OpTypePointer Input %uint
%_ptr_Function_uint = OpTypePointer Function %uint
%98 = OpConstantNull %uint
%bool = OpTypeBool
%_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float
%113 = OpConstantComposite %v2float %float_0 %float_0
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_Function_int = OpTypePointer Function %int
%121 = OpConstantNull %int
%_ptr_Uniform_float = OpTypePointer Uniform %float
%int_1 = OpConstant %int 1
%uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3
%uint_4 = OpConstant %uint 4
%uint_6 = OpConstant %uint 6
%float_0_100000001 = OpConstant %float 0.100000001
%float_n1 = OpConstant %float -1
%tint_symbol_5 = OpFunction %void None %29
%tint_symbol_3 = OpFunctionParameter %v4float
%33 = OpLabel
OpStore %tint_symbol_4 %tint_symbol_3
OpReturn
OpFunctionEnd
%vert_main = OpFunction %void None %34
%36 = OpLabel
%angle = OpVariable %_ptr_Function_float Function %4
%pos = OpVariable %_ptr_Function_v2float Function %75
OpStore %tint_pointsize %float_1
%43 = OpAccessChain %_ptr_Input_float %tint_symbol_1 %uint_0
%44 = OpLoad %float %43
%46 = OpAccessChain %_ptr_Input_float %tint_symbol_1 %uint_1
%47 = OpLoad %float %46
%39 = OpExtInst %float %40 Atan2 %44 %47
%38 = OpFNegate %float %39
OpStore %angle %38
%50 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_0
%51 = OpLoad %float %50
%53 = OpLoad %float %angle
%52 = OpExtInst %float %40 Cos %53
%54 = OpFMul %float %51 %52
%55 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_1
%56 = OpLoad %float %55
%58 = OpLoad %float %angle
%57 = OpExtInst %float %40 Sin %58
%59 = OpFMul %float %56 %57
%60 = OpFSub %float %54 %59
%61 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_0
%62 = OpLoad %float %61
%64 = OpLoad %float %angle
%63 = OpExtInst %float %40 Sin %64
%65 = OpFMul %float %62 %63
%66 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_1
%67 = OpLoad %float %66
%69 = OpLoad %float %angle
%68 = OpExtInst %float %40 Cos %69
%70 = OpFMul %float %67 %68
%71 = OpFAdd %float %65 %70
%72 = OpCompositeConstruct %v2float %60 %71
OpStore %pos %72
%77 = OpLoad %v2float %pos
%78 = OpLoad %v2float %tint_symbol
%79 = OpFAdd %v2float %77 %78
%80 = OpCompositeExtract %float %79 0
%81 = OpCompositeExtract %float %79 1
%83 = OpCompositeConstruct %v4float %80 %81 %float_0 %float_1
%76 = OpFunctionCall %void %tint_symbol_5 %83
OpReturn
OpFunctionEnd
%tint_symbol_8 = OpFunction %void None %29
%tint_symbol_6 = OpFunctionParameter %v4float
%86 = OpLabel
OpStore %tint_symbol_7 %tint_symbol_6
OpReturn
OpFunctionEnd
%frag_main = OpFunction %void None %34
%88 = OpLabel
%89 = OpFunctionCall %void %tint_symbol_8 %90
OpReturn
OpFunctionEnd
%comp_main = OpFunction %void None %34
%92 = OpLabel
%index = OpVariable %_ptr_Function_uint Function %98
%vPos = OpVariable %_ptr_Function_v2float Function %75
%vVel = OpVariable %_ptr_Function_v2float Function %75
%cMass = OpVariable %_ptr_Function_v2float Function %75
%cVel = OpVariable %_ptr_Function_v2float Function %75
%colVel = OpVariable %_ptr_Function_v2float Function %75
%cMassCount = OpVariable %_ptr_Function_int Function %121
%cVelCount = OpVariable %_ptr_Function_int Function %121
%pos_0 = OpVariable %_ptr_Function_v2float Function %75
%vel = OpVariable %_ptr_Function_v2float Function %75
%i = OpVariable %_ptr_Function_uint Function %98
%94 = OpAccessChain %_ptr_Input_uint %tint_symbol_9 %uint_0
%95 = OpLoad %uint %94
OpStore %index %95
%99 = OpLoad %uint %index
%100 = OpUGreaterThanEqual %bool %99 %uint_5
OpSelectionMerge %102 None
OpBranchConditional %100 %103 %102
%103 = OpLabel
OpReturn
%102 = OpLabel
%104 = OpLoad %uint %index
%106 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %104 %uint_0
%107 = OpLoad %v2float %106
OpStore %vPos %107
%109 = OpLoad %uint %index
%110 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %109 %uint_1
%111 = OpLoad %v2float %110
OpStore %vVel %111
OpStore %cMass %113
OpStore %cVel %113
OpStore %colVel %113
OpStore %cMassCount %int_0
OpStore %cVelCount %int_0
OpStore %i %uint_0
OpBranch %126
%126 = OpLabel
OpLoopMerge %127 %128 None
OpBranch %129
%129 = OpLabel
%131 = OpLoad %uint %i
%132 = OpULessThan %bool %131 %uint_5
%130 = OpLogicalNot %bool %132
OpSelectionMerge %133 None
OpBranchConditional %130 %134 %133
%134 = OpLabel
OpBranch %127
%133 = OpLabel
%135 = OpLoad %uint %i
%136 = OpLoad %uint %index
%137 = OpIEqual %bool %135 %136
OpSelectionMerge %138 None
OpBranchConditional %137 %139 %138
%139 = OpLabel
OpBranch %128
%138 = OpLabel
%140 = OpLoad %uint %i
%141 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %140 %uint_0
%142 = OpLoad %v2float %141
%143 = OpVectorShuffle %v2float %142 %142 0 1
OpStore %pos_0 %143
%144 = OpLoad %uint %i
%145 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %144 %uint_1
%146 = OpLoad %v2float %145
%147 = OpVectorShuffle %v2float %146 %146 0 1
OpStore %vel %147
%149 = OpLoad %v2float %pos_0
%150 = OpLoad %v2float %vPos
%148 = OpExtInst %float %40 Distance %149 %150
%152 = OpAccessChain %_ptr_Uniform_float %params %uint_1
%153 = OpLoad %float %152
%154 = OpFOrdLessThan %bool %148 %153
OpSelectionMerge %155 None
OpBranchConditional %154 %156 %155
%156 = OpLabel
%157 = OpLoad %v2float %cMass
%158 = OpLoad %v2float %pos_0
%159 = OpFAdd %v2float %157 %158
OpStore %cMass %159
%160 = OpLoad %int %cMassCount
%162 = OpIAdd %int %160 %int_1
OpStore %cMassCount %162
OpBranch %155
%155 = OpLabel
%164 = OpLoad %v2float %pos_0
%165 = OpLoad %v2float %vPos
%163 = OpExtInst %float %40 Distance %164 %165
%167 = OpAccessChain %_ptr_Uniform_float %params %uint_2
%168 = OpLoad %float %167
%169 = OpFOrdLessThan %bool %163 %168
OpSelectionMerge %170 None
OpBranchConditional %169 %171 %170
%171 = OpLabel
%172 = OpLoad %v2float %colVel
%173 = OpLoad %v2float %pos_0
%174 = OpLoad %v2float %vPos
%175 = OpFSub %v2float %173 %174
%176 = OpFSub %v2float %172 %175
OpStore %colVel %176
OpBranch %170
%170 = OpLabel
%178 = OpLoad %v2float %pos_0
%179 = OpLoad %v2float %vPos
%177 = OpExtInst %float %40 Distance %178 %179
%181 = OpAccessChain %_ptr_Uniform_float %params %uint_3
%182 = OpLoad %float %181
%183 = OpFOrdLessThan %bool %177 %182
OpSelectionMerge %184 None
OpBranchConditional %183 %185 %184
%185 = OpLabel
%186 = OpLoad %v2float %cVel
%187 = OpLoad %v2float %vel
%188 = OpFAdd %v2float %186 %187
OpStore %cVel %188
%189 = OpLoad %int %cVelCount
%190 = OpIAdd %int %189 %int_1
OpStore %cVelCount %190
OpBranch %184
%184 = OpLabel
OpBranch %128
%128 = OpLabel
%191 = OpLoad %uint %i
%192 = OpIAdd %uint %191 %uint_1
OpStore %i %192
OpBranch %126
%127 = OpLabel
%193 = OpLoad %int %cMassCount
%194 = OpSGreaterThan %bool %193 %int_0
OpSelectionMerge %195 None
OpBranchConditional %194 %196 %195
%196 = OpLabel
%197 = OpLoad %v2float %cMass
%199 = OpLoad %int %cMassCount
%198 = OpConvertSToF %float %199
%201 = OpLoad %int %cMassCount
%200 = OpConvertSToF %float %201
%202 = OpCompositeConstruct %v2float %198 %200
%203 = OpFDiv %v2float %197 %202
%204 = OpLoad %v2float %vPos
%205 = OpFSub %v2float %203 %204
OpStore %cMass %205
OpBranch %195
%195 = OpLabel
%206 = OpLoad %int %cVelCount
%207 = OpSGreaterThan %bool %206 %int_0
OpSelectionMerge %208 None
OpBranchConditional %207 %209 %208
%209 = OpLabel
%210 = OpLoad %v2float %cVel
%212 = OpLoad %int %cVelCount
%211 = OpConvertSToF %float %212
%214 = OpLoad %int %cVelCount
%213 = OpConvertSToF %float %214
%215 = OpCompositeConstruct %v2float %211 %213
%216 = OpFDiv %v2float %210 %215
OpStore %cVel %216
OpBranch %208
%208 = OpLabel
%217 = OpLoad %v2float %vVel
%218 = OpLoad %v2float %cMass
%220 = OpAccessChain %_ptr_Uniform_float %params %uint_4
%221 = OpLoad %float %220
%222 = OpVectorTimesScalar %v2float %218 %221
%223 = OpFAdd %v2float %217 %222
%224 = OpLoad %v2float %colVel
%225 = OpAccessChain %_ptr_Uniform_float %params %uint_5
%226 = OpLoad %float %225
%227 = OpVectorTimesScalar %v2float %224 %226
%228 = OpFAdd %v2float %223 %227
%229 = OpLoad %v2float %cVel
%231 = OpAccessChain %_ptr_Uniform_float %params %uint_6
%232 = OpLoad %float %231
%233 = OpVectorTimesScalar %v2float %229 %232
%234 = OpFAdd %v2float %228 %233
OpStore %vVel %234
%236 = OpLoad %v2float %vVel
%235 = OpExtInst %v2float %40 Normalize %236
%239 = OpLoad %v2float %vVel
%238 = OpExtInst %float %40 Length %239
%237 = OpExtInst %float %40 NClamp %238 %float_0 %float_0_100000001
%241 = OpVectorTimesScalar %v2float %235 %237
OpStore %vVel %241
%242 = OpLoad %v2float %vPos
%243 = OpLoad %v2float %vVel
%244 = OpAccessChain %_ptr_Uniform_float %params %uint_0
%245 = OpLoad %float %244
%246 = OpVectorTimesScalar %v2float %243 %245
%247 = OpFAdd %v2float %242 %246
OpStore %vPos %247
%248 = OpAccessChain %_ptr_Function_float %vPos %uint_0
%249 = OpLoad %float %248
%251 = OpFOrdLessThan %bool %249 %float_n1
OpSelectionMerge %252 None
OpBranchConditional %251 %253 %252
%253 = OpLabel
%254 = OpAccessChain %_ptr_Function_float %vPos %uint_0
OpStore %254 %float_1
OpBranch %252
%252 = OpLabel
%255 = OpAccessChain %_ptr_Function_float %vPos %uint_0
%256 = OpLoad %float %255
%257 = OpFOrdGreaterThan %bool %256 %float_1
OpSelectionMerge %258 None
OpBranchConditional %257 %259 %258
%259 = OpLabel
%260 = OpAccessChain %_ptr_Function_float %vPos %uint_0
OpStore %260 %float_n1
OpBranch %258
%258 = OpLabel
%261 = OpAccessChain %_ptr_Function_float %vPos %uint_1
%262 = OpLoad %float %261
%263 = OpFOrdLessThan %bool %262 %float_n1
OpSelectionMerge %264 None
OpBranchConditional %263 %265 %264
%265 = OpLabel
%266 = OpAccessChain %_ptr_Function_float %vPos %uint_1
OpStore %266 %float_1
OpBranch %264
%264 = OpLabel
%267 = OpAccessChain %_ptr_Function_float %vPos %uint_1
%268 = OpLoad %float %267
%269 = OpFOrdGreaterThan %bool %268 %float_1
OpSelectionMerge %270 None
OpBranchConditional %269 %271 %270
%271 = OpLabel
%272 = OpAccessChain %_ptr_Function_float %vPos %uint_1
OpStore %272 %float_n1
OpBranch %270
%270 = OpLabel
%273 = OpLoad %uint %index
%274 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesB %uint_0 %273 %uint_0
%275 = OpLoad %v2float %vPos
OpStore %274 %275
%276 = OpLoad %uint %index
%277 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesB %uint_0 %276 %uint_1
%278 = OpLoad %v2float %vVel
OpStore %277 %278
OpReturn
OpFunctionEnd