blob: 96676e462ffc8256cc75c1ba9ff3f2e00f5fc246 [file] [log] [blame]
Ben Claytonc0af5c52022-06-02 14:36:10 +00001; SPIR-V
2; Version: 1.3
3; Generator: Google Tint Compiler; 0
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +00004; Bound: 35
Ben Claytonc0af5c52022-06-02 14:36:10 +00005; Schema: 0
6 OpCapability Shader
7 OpMemoryModel Logical GLSL450
8 OpEntryPoint Fragment %fragment_main "fragment_main"
9 OpEntryPoint GLCompute %compute_main "compute_main"
10 OpExecutionMode %fragment_main OriginUpperLeft
11 OpExecutionMode %compute_main LocalSize 1 1 1
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000012 OpName %sb_rw_block "sb_rw_block"
13 OpMemberName %sb_rw_block 0 "inner"
Ben Claytonc0af5c52022-06-02 14:36:10 +000014 OpName %SB_RW "SB_RW"
15 OpMemberName %SB_RW 0 "arg_0"
16 OpName %sb_rw "sb_rw"
17 OpName %atomicCompareExchangeWeak_63d8e6 "atomicCompareExchangeWeak_63d8e6"
18 OpName %arg_1 "arg_1"
19 OpName %arg_2 "arg_2"
Ben Clayton47dd3012023-04-26 18:27:53 +000020 OpName %__atomic_compare_exchange_result_u32 "__atomic_compare_exchange_result_u32"
21 OpMemberName %__atomic_compare_exchange_result_u32 0 "old_value"
22 OpMemberName %__atomic_compare_exchange_result_u32 1 "exchanged"
Ben Claytonc0af5c52022-06-02 14:36:10 +000023 OpName %res "res"
24 OpName %fragment_main "fragment_main"
25 OpName %compute_main "compute_main"
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000026 OpDecorate %sb_rw_block Block
27 OpMemberDecorate %sb_rw_block 0 Offset 0
Ben Claytonc0af5c52022-06-02 14:36:10 +000028 OpMemberDecorate %SB_RW 0 Offset 0
29 OpDecorate %sb_rw DescriptorSet 0
30 OpDecorate %sb_rw Binding 0
Ben Clayton47dd3012023-04-26 18:27:53 +000031 OpMemberDecorate %__atomic_compare_exchange_result_u32 0 Offset 0
32 OpMemberDecorate %__atomic_compare_exchange_result_u32 1 Offset 4
Ben Claytonc0af5c52022-06-02 14:36:10 +000033 %uint = OpTypeInt 32 0
34 %SB_RW = OpTypeStruct %uint
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000035%sb_rw_block = OpTypeStruct %SB_RW
36%_ptr_StorageBuffer_sb_rw_block = OpTypePointer StorageBuffer %sb_rw_block
37 %sb_rw = OpVariable %_ptr_StorageBuffer_sb_rw_block StorageBuffer
Ben Claytonc0af5c52022-06-02 14:36:10 +000038 %void = OpTypeVoid
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000039 %6 = OpTypeFunction %void
Ben Claytonc0af5c52022-06-02 14:36:10 +000040 %uint_1 = OpConstant %uint 1
41%_ptr_Function_uint = OpTypePointer Function %uint
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000042 %13 = OpConstantNull %uint
Ben Claytonc0af5c52022-06-02 14:36:10 +000043 %bool = OpTypeBool
Ben Clayton47dd3012023-04-26 18:27:53 +000044%__atomic_compare_exchange_result_u32 = OpTypeStruct %uint %bool
Ben Claytonc0af5c52022-06-02 14:36:10 +000045 %uint_0 = OpConstant %uint 0
46%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
Ben Clayton47dd3012023-04-26 18:27:53 +000047%_ptr_Function___atomic_compare_exchange_result_u32 = OpTypePointer Function %__atomic_compare_exchange_result_u32
48 %28 = OpConstantNull %__atomic_compare_exchange_result_u32
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000049%atomicCompareExchangeWeak_63d8e6 = OpFunction %void None %6
50 %9 = OpLabel
51 %arg_1 = OpVariable %_ptr_Function_uint Function %13
52 %arg_2 = OpVariable %_ptr_Function_uint Function %13
Ben Clayton47dd3012023-04-26 18:27:53 +000053 %res = OpVariable %_ptr_Function___atomic_compare_exchange_result_u32 Function %28
Ben Claytonc0af5c52022-06-02 14:36:10 +000054 OpStore %arg_1 %uint_1
55 OpStore %arg_2 %uint_1
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000056 %21 = OpAccessChain %_ptr_StorageBuffer_uint %sb_rw %uint_0 %uint_0
57 %22 = OpLoad %uint %arg_2
58 %23 = OpLoad %uint %arg_1
59 %24 = OpAtomicCompareExchange %uint %21 %uint_1 %uint_0 %uint_0 %22 %23
60 %25 = OpIEqual %bool %24 %23
Ben Clayton47dd3012023-04-26 18:27:53 +000061 %15 = OpCompositeConstruct %__atomic_compare_exchange_result_u32 %24 %25
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000062 OpStore %res %15
Ben Claytonc0af5c52022-06-02 14:36:10 +000063 OpReturn
64 OpFunctionEnd
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000065%fragment_main = OpFunction %void None %6
66 %30 = OpLabel
67 %31 = OpFunctionCall %void %atomicCompareExchangeWeak_63d8e6
Ben Claytonc0af5c52022-06-02 14:36:10 +000068 OpReturn
69 OpFunctionEnd
Zhaoming Jiang6ab5d3c2022-11-02 02:25:38 +000070%compute_main = OpFunction %void None %6
71 %33 = OpLabel
72 %34 = OpFunctionCall %void %atomicCompareExchangeWeak_63d8e6
Ben Claytonc0af5c52022-06-02 14:36:10 +000073 OpReturn
74 OpFunctionEnd