blob: 3f02eafb44a221ecb9dc7f460ae8245b6b77a0ff [file] [log] [blame]
Eric Christopherc93217372011-06-30 00:48:30 +00001; RUN: llc < %s -march=x86-64 | FileCheck %s
2
3; rdar://9692967
4
Eric Christophera8a56f72011-07-01 23:04:38 +00005define void @t1(i64* %p, i32 %b) nounwind {
Eric Christopherc93217372011-06-30 00:48:30 +00006entry:
7 %p.addr = alloca i64*, align 8
8 store i64* %p, i64** %p.addr, align 8
9 %tmp = load i64** %p.addr, align 8
Eric Christophera8a56f72011-07-01 23:04:38 +000010; CHECK: t1:
11; CHECK: movl $2147483648, %eax
Eric Christopherc93217372011-06-30 00:48:30 +000012; CHECK: lock
Eric Christopher2eca9d52011-07-02 04:06:41 +000013; CHECK-NEXT: orq %r{{.*}}, (%r{{.*}})
Eli Friedmana486cb92011-09-26 23:15:09 +000014 %0 = atomicrmw or i64* %tmp, i64 2147483648 seq_cst
Eric Christopherc93217372011-06-30 00:48:30 +000015 ret void
16}
Eric Christophera8a56f72011-07-01 23:04:38 +000017
18define void @t2(i64* %p, i32 %b) nounwind {
19entry:
20 %p.addr = alloca i64*, align 8
21 store i64* %p, i64** %p.addr, align 8
22 %tmp = load i64** %p.addr, align 8
Eric Christophera8a56f72011-07-01 23:04:38 +000023; CHECK: t2:
Eric Christophera8a56f72011-07-01 23:04:38 +000024; CHECK: lock
Eric Christopher2eca9d52011-07-02 04:06:41 +000025; CHECK-NEXT: orq $2147483644, (%r{{.*}})
Eli Friedmana486cb92011-09-26 23:15:09 +000026 %0 = atomicrmw or i64* %tmp, i64 2147483644 seq_cst
Eric Christophera8a56f72011-07-01 23:04:38 +000027 ret void
28}