1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s | opt -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: verify-uselistorder %s 3*9880d681SAndroid Build Coastguard Worker; Basic smoke test for atomic operations. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @f(i32* %x) { 6*9880d681SAndroid Build Coastguard Worker ; CHECK: load atomic i32, i32* %x unordered, align 4 7*9880d681SAndroid Build Coastguard Worker load atomic i32, i32* %x unordered, align 4 8*9880d681SAndroid Build Coastguard Worker ; CHECK: load atomic volatile i32, i32* %x singlethread acquire, align 4 9*9880d681SAndroid Build Coastguard Worker load atomic volatile i32, i32* %x singlethread acquire, align 4 10*9880d681SAndroid Build Coastguard Worker ; CHECK: store atomic i32 3, i32* %x release, align 4 11*9880d681SAndroid Build Coastguard Worker store atomic i32 3, i32* %x release, align 4 12*9880d681SAndroid Build Coastguard Worker ; CHECK: store atomic volatile i32 3, i32* %x singlethread monotonic, align 4 13*9880d681SAndroid Build Coastguard Worker store atomic volatile i32 3, i32* %x singlethread monotonic, align 4 14*9880d681SAndroid Build Coastguard Worker ; CHECK: cmpxchg i32* %x, i32 1, i32 0 singlethread monotonic monotonic 15*9880d681SAndroid Build Coastguard Worker cmpxchg i32* %x, i32 1, i32 0 singlethread monotonic monotonic 16*9880d681SAndroid Build Coastguard Worker ; CHECK: cmpxchg volatile i32* %x, i32 0, i32 1 acq_rel acquire 17*9880d681SAndroid Build Coastguard Worker cmpxchg volatile i32* %x, i32 0, i32 1 acq_rel acquire 18*9880d681SAndroid Build Coastguard Worker ; CHECK: cmpxchg i32* %x, i32 42, i32 0 acq_rel monotonic 19*9880d681SAndroid Build Coastguard Worker cmpxchg i32* %x, i32 42, i32 0 acq_rel monotonic 20*9880d681SAndroid Build Coastguard Worker ; CHECK: cmpxchg weak i32* %x, i32 13, i32 0 seq_cst monotonic 21*9880d681SAndroid Build Coastguard Worker cmpxchg weak i32* %x, i32 13, i32 0 seq_cst monotonic 22*9880d681SAndroid Build Coastguard Worker ; CHECK: atomicrmw add i32* %x, i32 10 seq_cst 23*9880d681SAndroid Build Coastguard Worker atomicrmw add i32* %x, i32 10 seq_cst 24*9880d681SAndroid Build Coastguard Worker ; CHECK: atomicrmw volatile xchg i32* %x, i32 10 monotonic 25*9880d681SAndroid Build Coastguard Worker atomicrmw volatile xchg i32* %x, i32 10 monotonic 26*9880d681SAndroid Build Coastguard Worker ; CHECK: fence singlethread release 27*9880d681SAndroid Build Coastguard Worker fence singlethread release 28*9880d681SAndroid Build Coastguard Worker ; CHECK: fence seq_cst 29*9880d681SAndroid Build Coastguard Worker fence seq_cst 30*9880d681SAndroid Build Coastguard Worker ret void 31*9880d681SAndroid Build Coastguard Worker} 32