comparison test/CodeGen/AArch64/arm64-atomic.ll @ 83:60c9769439b8 LLVM3.7

LLVM 3.7
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Wed, 18 Feb 2015 14:55:36 +0900
parents 54457678186b
children afa8332a0e37
comparison
equal deleted inserted replaced
78:af83660cff7b 83:60c9769439b8
45 ret i32 %val 45 ret i32 %val
46 } 46 }
47 47
48 define i64 @fetch_and_nand_64(i64* %p) { 48 define i64 @fetch_and_nand_64(i64* %p) {
49 ; CHECK-LABEL: fetch_and_nand_64: 49 ; CHECK-LABEL: fetch_and_nand_64:
50 ; CHECK: [[LABEL:.?LBB[0-9]+_[0-9]+]]: 50 ; CHECK: mov x[[ADDR:[0-9]+]], x0
51 ; CHECK: ldaxr x[[DEST_REG:[0-9]+]], [x0] 51 ; CHECK: [[LABEL:.?LBB[0-9]+_[0-9]+]]:
52 ; CHECK: ldaxr x[[DEST_REG:[0-9]+]], [x[[ADDR]]]
52 ; CHECK: mvn w[[TMP_REG:[0-9]+]], w[[DEST_REG]] 53 ; CHECK: mvn w[[TMP_REG:[0-9]+]], w[[DEST_REG]]
53 ; CHECK: orr [[SCRATCH2_REG:x[0-9]+]], x[[TMP_REG]], #0xfffffffffffffff8 54 ; CHECK: orr [[SCRATCH2_REG:x[0-9]+]], x[[TMP_REG]], #0xfffffffffffffff8
54 ; CHECK: stlxr [[SCRATCH_REG:w[0-9]+]], [[SCRATCH2_REG]], [x0] 55 ; CHECK: stlxr [[SCRATCH_REG:w[0-9]+]], [[SCRATCH2_REG]], [x[[ADDR]]]
55 ; CHECK: cbnz [[SCRATCH_REG]], [[LABEL]] 56 ; CHECK: cbnz [[SCRATCH_REG]], [[LABEL]]
56 ; CHECK: mov x0, x[[DEST_REG]]
57 57
58 %val = atomicrmw nand i64* %p, i64 7 acq_rel 58 %val = atomicrmw nand i64* %p, i64 7 acq_rel
59 ret i64 %val 59 ret i64 %val
60 } 60 }
61 61
73 ret i32 %val 73 ret i32 %val
74 } 74 }
75 75
76 define i64 @fetch_and_or_64(i64* %p) { 76 define i64 @fetch_and_or_64(i64* %p) {
77 ; CHECK: fetch_and_or_64: 77 ; CHECK: fetch_and_or_64:
78 ; CHECK: [[LABEL:.?LBB[0-9]+_[0-9]+]]: 78 ; CHECK: mov x[[ADDR:[0-9]+]], x0
79 ; CHECK: ldxr [[DEST_REG:x[0-9]+]], [x0] 79 ; CHECK: [[LABEL:.?LBB[0-9]+_[0-9]+]]:
80 ; CHECK: ldxr [[DEST_REG:x[0-9]+]], [x[[ADDR]]]
80 ; CHECK: orr [[SCRATCH2_REG:x[0-9]+]], [[DEST_REG]], #0x7 81 ; CHECK: orr [[SCRATCH2_REG:x[0-9]+]], [[DEST_REG]], #0x7
81 ; CHECK: stxr [[SCRATCH_REG:w[0-9]+]], [[SCRATCH2_REG]], [x0] 82 ; CHECK: stxr [[SCRATCH_REG:w[0-9]+]], [[SCRATCH2_REG]], [x[[ADDR]]]
82 ; CHECK: cbnz [[SCRATCH_REG]], [[LABEL]] 83 ; CHECK: cbnz [[SCRATCH_REG]], [[LABEL]]
83 ; CHECK: mov x0, [[DEST_REG]]
84 %val = atomicrmw or i64* %p, i64 7 monotonic 84 %val = atomicrmw or i64* %p, i64 7 monotonic
85 ret i64 %val 85 ret i64 %val
86 } 86 }
87 87
88 define void @acquire_fence() { 88 define void @acquire_fence() {