Mercurial > hg > CbC > CbC_llvm
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() { |