wgpu/naga/tests/out/spv/atomicCompareExchange.spvasm
2023-10-25 14:25:04 -04:00

204 lines
4.7 KiB
Plaintext

; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 124
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %18 "test_atomic_compare_exchange_i32"
OpEntryPoint GLCompute %77 "test_atomic_compare_exchange_u32"
OpExecutionMode %18 LocalSize 1 1 1
OpExecutionMode %77 LocalSize 1 1 1
OpDecorate %5 ArrayStride 4
OpDecorate %7 ArrayStride 4
OpMemberDecorate %9 0 Offset 0
OpMemberDecorate %9 1 Offset 4
OpMemberDecorate %10 0 Offset 0
OpMemberDecorate %10 1 Offset 4
OpDecorate %11 DescriptorSet 0
OpDecorate %11 Binding 0
OpDecorate %12 Block
OpMemberDecorate %12 0 Offset 0
OpDecorate %14 DescriptorSet 0
OpDecorate %14 Binding 1
OpDecorate %15 Block
OpMemberDecorate %15 0 Offset 0
%2 = OpTypeVoid
%3 = OpTypeInt 32 0
%4 = OpTypeInt 32 1
%6 = OpConstant %3 128
%5 = OpTypeArray %4 %6
%7 = OpTypeArray %3 %6
%8 = OpTypeBool
%9 = OpTypeStruct %4 %8
%10 = OpTypeStruct %3 %8
%12 = OpTypeStruct %5
%13 = OpTypePointer StorageBuffer %12
%11 = OpVariable %13 StorageBuffer
%15 = OpTypeStruct %7
%16 = OpTypePointer StorageBuffer %15
%14 = OpVariable %16 StorageBuffer
%19 = OpTypeFunction %2
%20 = OpTypePointer StorageBuffer %5
%21 = OpConstant %3 0
%23 = OpConstantFalse %8
%24 = OpTypeFloat 32
%25 = OpConstant %24 1.0
%26 = OpConstant %3 1
%28 = OpTypePointer Function %3
%30 = OpTypePointer Function %4
%31 = OpConstantNull %4
%33 = OpTypePointer Function %8
%34 = OpConstantNull %8
%47 = OpTypePointer StorageBuffer %4
%50 = OpConstant %4 1
%51 = OpConstant %3 64
%78 = OpTypePointer StorageBuffer %7
%82 = OpConstantNull %3
%84 = OpConstantNull %8
%97 = OpTypePointer StorageBuffer %3
%18 = OpFunction %2 None %19
%17 = OpLabel
%27 = OpVariable %28 Function %21
%29 = OpVariable %30 Function %31
%32 = OpVariable %33 Function %34
%22 = OpAccessChain %20 %11 %21
OpBranch %35
%35 = OpLabel
OpBranch %36
%36 = OpLabel
OpLoopMerge %37 %39 None
OpBranch %38
%38 = OpLabel
%40 = OpLoad %3 %27
%41 = OpULessThan %8 %40 %6
OpSelectionMerge %42 None
OpBranchConditional %41 %42 %43
%43 = OpLabel
OpBranch %37
%42 = OpLabel
OpBranch %44
%44 = OpLabel
%46 = OpLoad %3 %27
%48 = OpAccessChain %47 %22 %46
%49 = OpAtomicLoad %4 %48 %50 %51
OpStore %29 %49
OpStore %32 %23
OpBranch %52
%52 = OpLabel
OpLoopMerge %53 %55 None
OpBranch %54
%54 = OpLabel
%56 = OpLoad %8 %32
%57 = OpLogicalNot %8 %56
OpSelectionMerge %58 None
OpBranchConditional %57 %58 %59
%59 = OpLabel
OpBranch %53
%58 = OpLabel
OpBranch %60
%60 = OpLabel
%62 = OpLoad %4 %29
%63 = OpBitcast %24 %62
%64 = OpFAdd %24 %63 %25
%65 = OpBitcast %4 %64
%66 = OpLoad %3 %27
%67 = OpLoad %4 %29
%69 = OpAccessChain %47 %22 %66
%70 = OpAtomicCompareExchange %4 %69 %50 %51 %51 %65 %67
%71 = OpIEqual %8 %70 %67
%68 = OpCompositeConstruct %9 %70 %71
%72 = OpCompositeExtract %4 %68 0
OpStore %29 %72
%73 = OpCompositeExtract %8 %68 1
OpStore %32 %73
OpBranch %61
%61 = OpLabel
OpBranch %55
%55 = OpLabel
OpBranch %52
%53 = OpLabel
OpBranch %45
%45 = OpLabel
OpBranch %39
%39 = OpLabel
%74 = OpLoad %3 %27
%75 = OpIAdd %3 %74 %26
OpStore %27 %75
OpBranch %36
%37 = OpLabel
OpReturn
OpFunctionEnd
%77 = OpFunction %2 None %19
%76 = OpLabel
%80 = OpVariable %28 Function %21
%81 = OpVariable %28 Function %82
%83 = OpVariable %33 Function %84
%79 = OpAccessChain %78 %14 %21
OpBranch %85
%85 = OpLabel
OpBranch %86
%86 = OpLabel
OpLoopMerge %87 %89 None
OpBranch %88
%88 = OpLabel
%90 = OpLoad %3 %80
%91 = OpULessThan %8 %90 %6
OpSelectionMerge %92 None
OpBranchConditional %91 %92 %93
%93 = OpLabel
OpBranch %87
%92 = OpLabel
OpBranch %94
%94 = OpLabel
%96 = OpLoad %3 %80
%98 = OpAccessChain %97 %79 %96
%99 = OpAtomicLoad %3 %98 %50 %51
OpStore %81 %99
OpStore %83 %23
OpBranch %100
%100 = OpLabel
OpLoopMerge %101 %103 None
OpBranch %102
%102 = OpLabel
%104 = OpLoad %8 %83
%105 = OpLogicalNot %8 %104
OpSelectionMerge %106 None
OpBranchConditional %105 %106 %107
%107 = OpLabel
OpBranch %101
%106 = OpLabel
OpBranch %108
%108 = OpLabel
%110 = OpLoad %3 %81
%111 = OpBitcast %24 %110
%112 = OpFAdd %24 %111 %25
%113 = OpBitcast %3 %112
%114 = OpLoad %3 %80
%115 = OpLoad %3 %81
%117 = OpAccessChain %97 %79 %114
%118 = OpAtomicCompareExchange %3 %117 %50 %51 %51 %113 %115
%119 = OpIEqual %8 %118 %115
%116 = OpCompositeConstruct %10 %118 %119
%120 = OpCompositeExtract %3 %116 0
OpStore %81 %120
%121 = OpCompositeExtract %8 %116 1
OpStore %83 %121
OpBranch %109
%109 = OpLabel
OpBranch %103
%103 = OpLabel
OpBranch %100
%101 = OpLabel
OpBranch %95
%95 = OpLabel
OpBranch %89
%89 = OpLabel
%122 = OpLoad %3 %80
%123 = OpIAdd %3 %122 %26
OpStore %80 %123
OpBranch %86
%87 = OpLabel
OpReturn
OpFunctionEnd