dawn-cmake/test/array/assign_to_storage_var.wgsl.expected.spvasm
James Price 94ac078990 writer/msl: Wrap each array type in a struct
This allows them to be used in various places that WGSL allows, such
as function return types and parameters, and as the type of the RHS of
an assignment.

Fixed: tint:814
Fixed: tint:820
Change-Id: Idb6a901b9a34e96bb9733cc158191e7b3bafaa0e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/52844
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-06-02 17:23:03 +00:00

135 lines
6.6 KiB
Plaintext

; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 74
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %unused_entry_point "unused_entry_point"
OpExecutionMode %unused_entry_point LocalSize 1 1 1
OpName %src_private "src_private"
OpName %src_workgroup "src_workgroup"
OpName %S "S"
OpMemberName %S 0 "arr"
OpName %src_uniform "src_uniform"
OpName %src_storage "src_storage"
OpName %dst "dst"
OpName %S_nested "S_nested"
OpMemberName %S_nested 0 "arr"
OpName %dst_nested "dst_nested"
OpName %unused_entry_point "unused_entry_point"
OpName %ret_arr "ret_arr"
OpName %ret_struct_arr "ret_struct_arr"
OpName %foo "foo"
OpName %src_param "src_param"
OpName %src_function "src_function"
OpName %src_nested "src_nested"
OpDecorate %_arr_int_uint_4 ArrayStride 16
OpDecorate %S Block
OpMemberDecorate %S 0 Offset 0
OpDecorate %src_uniform DescriptorSet 0
OpDecorate %src_uniform Binding 0
OpDecorate %src_storage DescriptorSet 0
OpDecorate %src_storage Binding 1
OpDecorate %dst DescriptorSet 0
OpDecorate %dst Binding 2
OpDecorate %S_nested Block
OpMemberDecorate %S_nested 0 Offset 0
OpDecorate %_arr_int_uint_2 ArrayStride 4
OpDecorate %_arr__arr_int_uint_2_uint_3 ArrayStride 8
OpDecorate %_arr__arr__arr_int_uint_2_uint_3_uint_4 ArrayStride 24
OpDecorate %dst_nested DescriptorSet 0
OpDecorate %dst_nested Binding 3
%int = OpTypeInt 32 1
%uint = OpTypeInt 32 0
%uint_4 = OpConstant %uint 4
%_arr_int_uint_4 = OpTypeArray %int %uint_4
%_ptr_Private__arr_int_uint_4 = OpTypePointer Private %_arr_int_uint_4
%7 = OpConstantNull %_arr_int_uint_4
%src_private = OpVariable %_ptr_Private__arr_int_uint_4 Private %7
%_ptr_Workgroup__arr_int_uint_4 = OpTypePointer Workgroup %_arr_int_uint_4
%src_workgroup = OpVariable %_ptr_Workgroup__arr_int_uint_4 Workgroup
%S = OpTypeStruct %_arr_int_uint_4
%_ptr_Uniform_S = OpTypePointer Uniform %S
%src_uniform = OpVariable %_ptr_Uniform_S Uniform
%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
%src_storage = OpVariable %_ptr_StorageBuffer_S StorageBuffer
%dst = OpVariable %_ptr_StorageBuffer_S StorageBuffer
%uint_2 = OpConstant %uint 2
%_arr_int_uint_2 = OpTypeArray %int %uint_2
%uint_3 = OpConstant %uint 3
%_arr__arr_int_uint_2_uint_3 = OpTypeArray %_arr_int_uint_2 %uint_3
%_arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypeArray %_arr__arr_int_uint_2_uint_3 %uint_4
%S_nested = OpTypeStruct %_arr__arr__arr_int_uint_2_uint_3_uint_4
%_ptr_StorageBuffer_S_nested = OpTypePointer StorageBuffer %S_nested
%dst_nested = OpVariable %_ptr_StorageBuffer_S_nested StorageBuffer
%void = OpTypeVoid
%24 = OpTypeFunction %void
%28 = OpTypeFunction %_arr_int_uint_4
%31 = OpTypeFunction %S
%34 = OpConstantNull %S
%35 = OpTypeFunction %void %_arr_int_uint_4
%_ptr_Function__arr_int_uint_4 = OpTypePointer Function %_arr_int_uint_4
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer__arr_int_uint_4 = OpTypePointer StorageBuffer %_arr_int_uint_4
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%int_3 = OpConstant %int 3
%47 = OpConstantComposite %_arr_int_uint_4 %int_1 %int_2 %int_3 %int_3
%_ptr_Uniform__arr_int_uint_4 = OpTypePointer Uniform %_arr_int_uint_4
%_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer Function %_arr__arr__arr_int_uint_2_uint_3_uint_4
%70 = OpConstantNull %_arr__arr__arr_int_uint_2_uint_3_uint_4
%_ptr_StorageBuffer__arr__arr__arr_int_uint_2_uint_3_uint_4 = OpTypePointer StorageBuffer %_arr__arr__arr_int_uint_2_uint_3_uint_4
%unused_entry_point = OpFunction %void None %24
%27 = OpLabel
OpReturn
OpFunctionEnd
%ret_arr = OpFunction %_arr_int_uint_4 None %28
%30 = OpLabel
OpReturnValue %7
OpFunctionEnd
%ret_struct_arr = OpFunction %S None %31
%33 = OpLabel
OpReturnValue %34
OpFunctionEnd
%foo = OpFunction %void None %35
%src_param = OpFunctionParameter %_arr_int_uint_4
%38 = OpLabel
%src_function = OpVariable %_ptr_Function__arr_int_uint_4 Function %7
%src_nested = OpVariable %_ptr_Function__arr__arr__arr_int_uint_2_uint_3_uint_4 Function %70
%43 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
OpStore %43 %47
%48 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
OpStore %48 %src_param
%49 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
%50 = OpFunctionCall %_arr_int_uint_4 %ret_arr
OpStore %49 %50
%51 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
OpStore %51 %7
%52 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
%53 = OpLoad %_arr_int_uint_4 %src_function
OpStore %52 %53
%54 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
%55 = OpLoad %_arr_int_uint_4 %src_private
OpStore %54 %55
%56 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
%57 = OpLoad %_arr_int_uint_4 %src_workgroup
OpStore %56 %57
%58 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
%59 = OpFunctionCall %S %ret_struct_arr
%60 = OpCompositeExtract %_arr_int_uint_4 %59 0
OpStore %58 %60
%61 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
%63 = OpAccessChain %_ptr_Uniform__arr_int_uint_4 %src_uniform %uint_0
%64 = OpLoad %_arr_int_uint_4 %63
OpStore %61 %64
%65 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %dst %uint_0
%66 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_4 %src_storage %uint_0
%67 = OpLoad %_arr_int_uint_4 %66
OpStore %65 %67
%72 = OpAccessChain %_ptr_StorageBuffer__arr__arr__arr_int_uint_2_uint_3_uint_4 %dst_nested %uint_0
%73 = OpLoad %_arr__arr__arr_int_uint_2_uint_3_uint_4 %src_nested
OpStore %72 %73
OpReturn
OpFunctionEnd