97 lines · plain
1; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}3 4; CHECK-DAG: %[[#Long:]] = OpTypeInt 64 05; CHECK-COUNT-9: %[[#]] = OpAtomicExchange %[[#Long]] %[[#]] %[[#]] %[[#]] %[[#]]6 7%Type1 = type { i64 }8%Type2 = type { ptr addrspace(4) }9 10define linkonce_odr dso_local spir_func void @f1() {11entry:12 %a = alloca %Type1, align 813 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)14 %p = ptrtoint ptr addrspace(4) %a.ascast to i6415 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePyN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEy(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 3)16 ret void17}18 19define linkonce_odr dso_local spir_func void @f2() {20entry:21 %a = alloca %Type1, align 822 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)23 %p = ptrtoint ptr addrspace(4) %a.ascast to i6424 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePxN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEx(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 3)25 ret void26}27 28define linkonce_odr dso_local spir_func void @f3() {29entry:30 %a = alloca %Type1, align 831 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)32 %p = ptrtoint ptr addrspace(4) %a.ascast to i6433 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePmN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEm(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 3)34 ret void35}36 37define linkonce_odr dso_local spir_func void @f4() {38entry:39 %a = alloca %Type1, align 840 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)41 %p = ptrtoint ptr addrspace(4) %a.ascast to i6442 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePlN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEl(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 3)43 ret void44}45 46 47define linkonce_odr dso_local spir_func void @f5() {48entry:49 %a = alloca %Type2, align 850 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)51 %p = ptrtoint ptr addrspace(4) %a.ascast to i6452 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePmN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEm(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 %p)53 ret void54}55 56define linkonce_odr dso_local spir_func void @f6() {57entry:58 %a = alloca %Type2, align 859 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)60 %p = ptrtoint ptr addrspace(4) %a.ascast to i6461 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePmN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEm(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 %p)62 ret void63}64 65define linkonce_odr dso_local spir_func void @f7() {66entry:67 %a = alloca %Type2, align 868 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)69 %p = ptrtoint ptr addrspace(4) %a.ascast to i6470 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePmN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEm(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 %p)71 ret void72}73 74define linkonce_odr dso_local spir_func void @f8() {75entry:76 %a = alloca %Type2, align 877 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)78 %p = ptrtoint ptr addrspace(4) %a.ascast to i6479 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePmN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEm(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 %p)80 ret void81}82 83; Function Attrs: convergent mustprogress norecurse nounwind84define linkonce_odr dso_local spir_func void @f9() {85entry:86 %a = alloca %Type2, align 887 %a.ascast = addrspacecast ptr %a to ptr addrspace(4)88 %p = ptrtoint ptr addrspace(4) %a.ascast to i6489 %res = call spir_func i64 @_Z22__spirv_AtomicExchangePmN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEm(ptr addrspace(4) %a.ascast, i32 0, i32 912, i64 %p)90 ret void91}92 93declare dso_local spir_func i64 @_Z22__spirv_AtomicExchangePyN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEy(ptr addrspace(4), i32, i32, i64)94declare dso_local spir_func i64 @_Z22__spirv_AtomicExchangePxN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEx(ptr addrspace(4), i32, i32, i64)95declare dso_local spir_func i64 @_Z22__spirv_AtomicExchangePmN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEm(ptr addrspace(4), i32, i32, i64)96declare dso_local spir_func i64 @_Z22__spirv_AtomicExchangePlN5__spv5Scope4FlagENS0_19MemorySemanticsMask4FlagEl(ptr addrspace(4), i32, i32, i64)97