[llvm] [AArch64][GlobalISel] Don't let debug instructions change register classes (PR #228078)
Aochang Liu via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 2 06:38:08 PDT 2026
https://github.com/HelloWorldU updated https://github.com/llvm/llvm-project/pull/228078
>From 64bcaeb8beee8eec1f8efd315df0c9af1f95166b Mon Sep 17 00:00:00 2001
From: HelloWorldU <asd001liu at gmail.com>
Date: Thu, 1 Oct 2026 16:27:02 +0800
Subject: [PATCH 1/2] [AArch64][GlobalISel] Don't let debug instructions change
register classes
selectDebugInstr constrains its vreg operands to the smallest class for
their bank, before their defs are selected. With -g, a vreg copied from
a GPR64all vreg thus ends up in GPR64, the redundant COPY is no longer
removed, and the code differs from -g0.
Skip vregs with non-debug uses; only debug-only vregs still need a class
from here. Constraining to the widest class instead is not enough, since
a PHI keeps a class already assigned to its def.
Fixes #227628
Assisted-by: Claude Opus 5.5
---
.../GISel/AArch64InstructionSelector.cpp | 5 ++
.../AArch64/GlobalISel/select-dbg-value.mir | 64 +++++++++++++++++++
.../AArch64/GlobalISel/select-hint.mir | 4 +-
3 files changed, 71 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp b/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
index 22c0e3a3a462d4..20a6256de43dd9 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
@@ -903,6 +903,11 @@ static bool selectDebugInstr(MachineInstr &I, MachineRegisterInfo &MRI,
const TargetRegisterClass *RC =
dyn_cast<const TargetRegisterClass *>(RegClassOrBank);
if (!RC) {
+ // Debug instructions are selected before the defs of their operands.
+ // Leave vregs with non-debug uses to their defs and users, so that
+ // debug info does not change the class they get.
+ if (!MRI.use_nodbg_empty(Reg))
+ continue;
const RegisterBank &RB = *cast<const RegisterBank *>(RegClassOrBank);
RC = getRegClassForTypeOnBank(Ty, RB);
if (!RC) {
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
index b28ebbb90a79c6..fe497c3ce0fb26 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
@@ -15,6 +15,9 @@
ret void
}
+ define void @test_dbg_value_copy() { ret void }
+ define void @test_dbg_value_phi() { ret void }
+
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
!llvm.dbg.cu = !{!0}
@@ -70,3 +73,64 @@ body: |
%1:gpr(i64) = G_ZEXT %0:gpr(i32)
DBG_VALUE %1(i64), $noreg, !7, !DIExpression(), debug-location !9
...
+
+# The DBG_VALUE must not narrow the class of %1, otherwise the redundant COPY
+# from %0 is kept.
+---
+name: test_dbg_value_copy
+legalized: true
+regBankSelected: true
+body: |
+ bb.0:
+ liveins: $x0
+ ; CHECK-LABEL: name: test_dbg_value_copy
+ ; CHECK: liveins: $x0
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64all = COPY $x0
+ ; CHECK-NEXT: DBG_VALUE [[COPY]], $noreg, !7, !DIExpression(), debug-location !9
+ ; CHECK-NEXT: $x0 = COPY [[COPY]]
+ %0:gpr(p0) = COPY $x0
+ %1:gpr(p0) = COPY %0(p0)
+ DBG_VALUE %1(p0), $noreg, !7, !DIExpression(), debug-location !9
+ $x0 = COPY %1(p0)
+...
+
+# A PHI keeps any class already assigned to its def, so the DBG_VALUE must not
+# assign one, not even the widest.
+---
+name: test_dbg_value_phi
+legalized: true
+regBankSelected: true
+tracksRegLiveness: true
+body: |
+ ; CHECK-LABEL: name: test_dbg_value_phi
+ ; CHECK: bb.0:
+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
+ ; CHECK-NEXT: liveins: $w0, $x1, $x2
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64all = COPY $x1
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64all = COPY $x2
+ ; CHECK-NEXT: TBNZW [[COPY]], 0, %bb.2
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.1:
+ ; CHECK-NEXT: successors: %bb.2(0x80000000)
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.2:
+ ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr64 = PHI [[COPY1]], %bb.0, [[COPY2]], %bb.1
+ ; CHECK-NEXT: DBG_VALUE [[PHI]], $noreg, !7, !DIExpression(), debug-location !9
+ ; CHECK-NEXT: $x0 = COPY [[PHI]]
+ bb.0:
+ liveins: $w0, $x1, $x2
+ %0:gpr(i32) = COPY $w0
+ %1:gpr(i64) = COPY $x1
+ %2:gpr(i64) = COPY $x2
+ G_BRCOND %0, %bb.2
+
+ bb.1:
+
+ bb.2:
+ %3:gpr(i64) = G_PHI %1(i64), %bb.0, %2(i64), %bb.1
+ DBG_VALUE %3(i64), $noreg, !7, !DIExpression(), debug-location !9
+ $x0 = COPY %3(i64)
+...
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-hint.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-hint.mir
index d7efa669bf35ca..3d8d5741905074 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-hint.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-hint.mir
@@ -16,7 +16,7 @@ body: |
; CHECK-LABEL: name: assert_zext_gpr
; CHECK: liveins: $w0, $w1
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: %copy:gpr32 = COPY $w0
+ ; CHECK-NEXT: %copy:gpr32all = COPY $w0
; CHECK-NEXT: $w1 = COPY %copy
; CHECK-NEXT: RET_ReallyLR implicit $w1
%copy:gpr(i32) = COPY $w0
@@ -104,7 +104,7 @@ body: |
; CHECK-LABEL: name: assert_sext_gpr
; CHECK: liveins: $w0, $w1
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: %copy:gpr32 = COPY $w0
+ ; CHECK-NEXT: %copy:gpr32all = COPY $w0
; CHECK-NEXT: $w1 = COPY %copy
; CHECK-NEXT: RET_ReallyLR implicit $w1
%copy:gpr(i32) = COPY $w0
>From 761cd508cbef9df6b97f7505e17432866cd4f8d4 Mon Sep 17 00:00:00 2001
From: HelloWorldU <asd001liu at gmail.com>
Date: Fri, 2 Oct 2026 13:32:51 +0800
Subject: [PATCH 2/2] [AArch64][GlobalISel] Use the widest class for debug
operands and PHIs
Replace the use check in selectDebugInstr with the widest class, so that
debug instructions never narrow the class of their operands. PHIs keep a
class already set on their def, so default them to the widest class too.
This changes -O0 register assignment in the atomics tests; in
arm64-atomic.ll, the i8 atomicrmw loops get 1-3 extra movs.
Assisted-by: Claude Opus 5.5
---
.../GISel/AArch64InstructionSelector.cpp | 13 +-
.../AArch64/Atomics/aarch64-atomicrmw-lse2.ll | 1520 ++++++++---------
.../Atomics/aarch64-atomicrmw-lse2_lse128.ll | 160 +-
.../aarch64-atomicrmw-outline_atomics.ll | 320 ++--
.../AArch64/Atomics/aarch64-atomicrmw-rcpc.ll | 1520 ++++++++---------
.../Atomics/aarch64-atomicrmw-rcpc3.ll | 1520 ++++++++---------
.../Atomics/aarch64-atomicrmw-v8_1a.ll | 160 +-
.../AArch64/Atomics/aarch64-atomicrmw-v8a.ll | 1520 ++++++++---------
.../AArch64/GlobalISel/arm64-atomic.ll | 353 ++--
.../irtranslator-hoisted-constants.ll | 2 +-
.../GlobalISel/preselect-process-phis.mir | 6 +-
.../AArch64/GlobalISel/select-dbg-value.mir | 8 +-
.../GlobalISel/select-jump-table-brjt.mir | 2 +-
.../CodeGen/AArch64/GlobalISel/select-phi.mir | 4 +-
.../GlobalISel/select-unreachable-blocks.mir | 2 +-
llvm/test/CodeGen/AArch64/pr48188.ll | 16 +-
llvm/test/DebugInfo/AArch64/debug-reg-bank.ll | 2 +-
17 files changed, 3579 insertions(+), 3549 deletions(-)
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp b/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
index 20a6256de43dd9..76fef0e9905eb5 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
@@ -903,13 +903,10 @@ static bool selectDebugInstr(MachineInstr &I, MachineRegisterInfo &MRI,
const TargetRegisterClass *RC =
dyn_cast<const TargetRegisterClass *>(RegClassOrBank);
if (!RC) {
- // Debug instructions are selected before the defs of their operands.
- // Leave vregs with non-debug uses to their defs and users, so that
- // debug info does not change the class they get.
- if (!MRI.use_nodbg_empty(Reg))
- continue;
const RegisterBank &RB = *cast<const RegisterBank *>(RegClassOrBank);
- RC = getRegClassForTypeOnBank(Ty, RB);
+ // Debug instructions are selected before the defs of their operands.
+ // Use the widest class so that they do not narrow the class those get.
+ RC = getRegClassForTypeOnBank(Ty, RB, /*GetAllRegSet=*/true);
if (!RC) {
LLVM_DEBUG(
dbgs() << "Warning: DBG_VALUE operand has unexpected size/bank\n");
@@ -2601,7 +2598,9 @@ bool AArch64InstructionSelector::select(MachineInstr &I) {
return false;
}
const RegisterBank &RB = *cast<const RegisterBank *>(RegClassOrBank);
- DefRC = getRegClassForTypeOnBank(DefTy, RB);
+ // Like COPY, use the widest class, which matches what a debug use
+ // may already have set.
+ DefRC = getRegClassForTypeOnBank(DefTy, RB, /*GetAllRegSet=*/true);
if (!DefRC) {
LLVM_DEBUG(dbgs() << "PHI operand has unexpected size/bank\n");
return false;
diff --git a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2.ll b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2.ll
index dfce1fbe0d30f1..8fc5eaff9d36ae 100644
--- a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2.ll
+++ b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2.ll
@@ -5,11 +5,11 @@
define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -20,11 +20,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -35,11 +35,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_release:
; -O1: ldxrb w0, [x8]
@@ -50,11 +50,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -65,11 +65,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -380,11 +380,11 @@ define dso_local i128 @atomicrmw_xchg_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -395,11 +395,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -410,11 +410,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_release:
; -O1: ldxrb w0, [x8]
@@ -425,11 +425,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -440,11 +440,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -595,12 +595,12 @@ define dso_local i128 @atomicrmw_xchg_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -612,12 +612,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -629,12 +629,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -646,12 +646,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -663,12 +663,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1025,12 +1025,12 @@ define dso_local i128 @atomicrmw_add_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1042,12 +1042,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1059,12 +1059,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1076,12 +1076,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1093,12 +1093,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1110,7 +1110,7 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_monotonic:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_monotonic:
@@ -1122,7 +1122,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acquire:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acquire:
@@ -1134,7 +1134,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_release:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_release:
@@ -1146,7 +1146,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
@@ -1158,7 +1158,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
@@ -1360,12 +1360,12 @@ define dso_local i128 @atomicrmw_add_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1377,12 +1377,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1394,12 +1394,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -1411,12 +1411,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1428,12 +1428,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1785,12 +1785,12 @@ define dso_local i128 @atomicrmw_sub_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1802,12 +1802,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1819,12 +1819,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1836,12 +1836,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1853,12 +1853,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1870,7 +1870,7 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
@@ -1882,7 +1882,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acquire:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acquire:
@@ -1894,7 +1894,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_release:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_release:
@@ -1906,7 +1906,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
@@ -1918,7 +1918,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
@@ -2115,12 +2115,12 @@ define dso_local i128 @atomicrmw_sub_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2132,12 +2132,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2149,12 +2149,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2166,12 +2166,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2183,12 +2183,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2550,12 +2550,12 @@ define dso_local i128 @atomicrmw_and_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2567,12 +2567,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2584,12 +2584,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -2601,12 +2601,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2618,12 +2618,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2635,7 +2635,7 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_monotonic:
@@ -2647,7 +2647,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acquire:
@@ -2659,7 +2659,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_release:
@@ -2671,7 +2671,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
@@ -2683,7 +2683,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
@@ -2890,13 +2890,13 @@ define dso_local i128 @atomicrmw_and_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2909,13 +2909,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2928,13 +2928,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2947,13 +2947,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2966,13 +2966,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3385,13 +3385,13 @@ define dso_local i128 @atomicrmw_nand_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3404,13 +3404,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3423,13 +3423,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -3442,13 +3442,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3461,13 +3461,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3480,7 +3480,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3494,7 +3494,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %valu
define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3508,7 +3508,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3522,7 +3522,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3536,7 +3536,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3785,12 +3785,12 @@ define dso_local i128 @atomicrmw_nand_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3802,12 +3802,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3819,12 +3819,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -3836,12 +3836,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3853,12 +3853,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4220,12 +4220,12 @@ define dso_local i128 @atomicrmw_or_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4237,12 +4237,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4254,12 +4254,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -4271,12 +4271,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4288,12 +4288,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4305,7 +4305,7 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_monotonic:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_monotonic:
@@ -4317,7 +4317,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acquire:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acquire:
@@ -4329,7 +4329,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_release:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_release:
@@ -4341,7 +4341,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
@@ -4353,7 +4353,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
@@ -4560,12 +4560,12 @@ define dso_local i128 @atomicrmw_or_i128_unaligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4577,12 +4577,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4594,12 +4594,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -4611,12 +4611,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4628,12 +4628,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4995,12 +4995,12 @@ define dso_local i128 @atomicrmw_xor_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -5012,12 +5012,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -5029,12 +5029,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -5046,12 +5046,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -5063,12 +5063,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -5080,7 +5080,7 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
@@ -5092,7 +5092,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acquire:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acquire:
@@ -5104,7 +5104,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_release:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_release:
@@ -5116,7 +5116,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
@@ -5128,7 +5128,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
@@ -5335,14 +5335,14 @@ define dso_local i128 @atomicrmw_xor_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5356,14 +5356,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5377,14 +5377,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -5398,14 +5398,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5419,14 +5419,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -5865,14 +5865,14 @@ define dso_local i128 @atomicrmw_max_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5886,14 +5886,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5907,14 +5907,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -5928,14 +5928,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5949,14 +5949,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6300,14 +6300,14 @@ define dso_local i128 @atomicrmw_max_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6321,14 +6321,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6342,14 +6342,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -6363,14 +6363,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6384,14 +6384,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6830,14 +6830,14 @@ define dso_local i128 @atomicrmw_min_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6851,14 +6851,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6872,14 +6872,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -6893,14 +6893,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6914,14 +6914,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -7265,14 +7265,14 @@ define dso_local i128 @atomicrmw_min_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7286,14 +7286,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7307,14 +7307,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -7328,14 +7328,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7349,14 +7349,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -7790,14 +7790,14 @@ define dso_local i128 @atomicrmw_umax_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7811,14 +7811,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7832,14 +7832,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -7853,14 +7853,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7874,14 +7874,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8220,14 +8220,14 @@ define dso_local i128 @atomicrmw_umax_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8241,14 +8241,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8262,14 +8262,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -8283,14 +8283,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8304,14 +8304,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8745,14 +8745,14 @@ define dso_local i128 @atomicrmw_umin_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8766,14 +8766,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8787,14 +8787,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -8808,14 +8808,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8829,14 +8829,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
diff --git a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2_lse128.ll b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2_lse128.ll
index a939581680ab09..6808d7d388dd95 100644
--- a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2_lse128.ll
+++ b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lse2_lse128.ll
@@ -640,7 +640,7 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_monotonic:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_monotonic:
@@ -652,7 +652,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acquire:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acquire:
@@ -664,7 +664,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_release:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_release:
@@ -676,7 +676,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
@@ -688,7 +688,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
@@ -1155,7 +1155,7 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
@@ -1167,7 +1167,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acquire:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acquire:
@@ -1179,7 +1179,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_release:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_release:
@@ -1191,7 +1191,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
@@ -1203,7 +1203,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
@@ -1670,7 +1670,7 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_monotonic:
@@ -1682,7 +1682,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acquire:
@@ -1694,7 +1694,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_release:
@@ -1706,7 +1706,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
@@ -1718,7 +1718,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
@@ -1925,11 +1925,11 @@ define dso_local i128 @atomicrmw_and_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_monotonic:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_monotonic:
; -O1: and w10, w8, w1
@@ -1942,11 +1942,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acquire:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casab w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casab w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acquire:
; -O1: and w10, w8, w1
@@ -1959,11 +1959,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_release:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: caslb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: caslb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_release:
; -O1: and w10, w8, w1
@@ -1976,11 +1976,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
; -O1: and w10, w8, w1
@@ -1993,11 +1993,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
; -O1: and w10, w8, w1
@@ -2370,11 +2370,11 @@ define dso_local i128 @atomicrmw_nand_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
; -O1: and w10, w8, w1
@@ -2387,11 +2387,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acquire:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casab w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casab w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acquire:
; -O1: and w10, w8, w1
@@ -2404,11 +2404,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_release:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: caslb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: caslb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_release:
; -O1: and w10, w8, w1
@@ -2421,11 +2421,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
; -O1: and w10, w8, w1
@@ -2438,11 +2438,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
; -O1: and w10, w8, w1
@@ -2455,7 +2455,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2469,7 +2469,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %valu
define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2483,7 +2483,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2497,7 +2497,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2511,7 +2511,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2985,7 +2985,7 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_monotonic:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_monotonic:
@@ -2997,7 +2997,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acquire:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acquire:
@@ -3009,7 +3009,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_release:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_release:
@@ -3021,7 +3021,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
@@ -3033,7 +3033,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
@@ -3515,7 +3515,7 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
@@ -3527,7 +3527,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acquire:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acquire:
@@ -3539,7 +3539,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_release:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_release:
@@ -3551,7 +3551,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
@@ -3563,7 +3563,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
diff --git a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-outline_atomics.ll b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-outline_atomics.ll
index f91e54be0bca64..f0419ef353c978 100644
--- a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-outline_atomics.ll
+++ b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-outline_atomics.ll
@@ -650,7 +650,7 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_monotonic:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_monotonic:
@@ -662,7 +662,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acquire:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acquire:
@@ -674,7 +674,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_release:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_release:
@@ -686,7 +686,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
@@ -698,7 +698,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
@@ -1255,7 +1255,7 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
@@ -1267,7 +1267,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acquire:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acquire:
@@ -1279,7 +1279,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_release:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_release:
@@ -1291,7 +1291,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
@@ -1303,7 +1303,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
@@ -1890,7 +1890,7 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_monotonic:
@@ -1902,7 +1902,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acquire:
@@ -1914,7 +1914,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_release:
@@ -1926,7 +1926,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
@@ -1938,7 +1938,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
@@ -2145,7 +2145,7 @@ define dso_local i128 @atomicrmw_and_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_monotonic:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
@@ -2162,7 +2162,7 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acquire:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
@@ -2179,7 +2179,7 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_release:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
@@ -2196,7 +2196,7 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
@@ -2213,7 +2213,7 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
@@ -2580,7 +2580,7 @@ define dso_local i128 @atomicrmw_nand_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
@@ -2597,7 +2597,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acquire:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
@@ -2614,7 +2614,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_release:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
@@ -2631,7 +2631,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
@@ -2648,7 +2648,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
-; -O0: and w8, w0, w8
+; -O0: and w8, w8, w9
; -O0: mvn w1, w8
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
@@ -2665,7 +2665,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2679,7 +2679,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %valu
define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2693,7 +2693,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2707,7 +2707,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2721,7 +2721,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3235,7 +3235,7 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_monotonic:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_monotonic:
@@ -3247,7 +3247,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acquire:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acquire:
@@ -3259,7 +3259,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_release:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_release:
@@ -3271,7 +3271,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
@@ -3283,7 +3283,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
@@ -3755,7 +3755,7 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
@@ -3767,7 +3767,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acquire:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acquire:
@@ -3779,7 +3779,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_release:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_release:
@@ -3791,7 +3791,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
@@ -3803,7 +3803,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
@@ -4010,9 +4010,9 @@ define dso_local i128 @atomicrmw_xor_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_monotonic:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4029,9 +4029,9 @@ define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acquire:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4048,9 +4048,9 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_release:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4067,9 +4067,9 @@ define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acq_rel:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4086,9 +4086,9 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_seq_cst:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4480,9 +4480,9 @@ define dso_local i128 @atomicrmw_max_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_monotonic:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4499,9 +4499,9 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acquire:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4518,9 +4518,9 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_release:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4537,9 +4537,9 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4556,9 +4556,9 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, gt
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, gt
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4905,9 +4905,9 @@ define dso_local i128 @atomicrmw_max_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_monotonic:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4924,9 +4924,9 @@ define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acquire:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4943,9 +4943,9 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_release:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4962,9 +4962,9 @@ define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acq_rel:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -4981,9 +4981,9 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_seq_cst:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5375,9 +5375,9 @@ define dso_local i128 @atomicrmw_min_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_monotonic:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5394,9 +5394,9 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acquire:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5413,9 +5413,9 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_release:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5432,9 +5432,9 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5451,9 +5451,9 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w0
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w1, w0, w8, le
+; -O0: sxtb w10, w8
+; -O0: subs w10, w10, w9, sxtb
+; -O0: csel w1, w8, w9, le
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5800,9 +5800,9 @@ define dso_local i128 @atomicrmw_min_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_monotonic:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5819,9 +5819,9 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acquire:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5838,9 +5838,9 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_release:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5857,9 +5857,9 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -5876,9 +5876,9 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6265,9 +6265,9 @@ define dso_local i128 @atomicrmw_umax_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6284,9 +6284,9 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acquire:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6303,9 +6303,9 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_release:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6322,9 +6322,9 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6341,9 +6341,9 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, hi
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, hi
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6685,9 +6685,9 @@ define dso_local i128 @atomicrmw_umax_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_monotonic:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6704,9 +6704,9 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acquire:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6723,9 +6723,9 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_release:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6742,9 +6742,9 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -6761,9 +6761,9 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -7150,9 +7150,9 @@ define dso_local i128 @atomicrmw_umin_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_relax
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -7169,9 +7169,9 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acquire:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_acq
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -7188,9 +7188,9 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_release:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -7207,9 +7207,9 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
@@ -7226,9 +7226,9 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
-; -O0: and w9, w0, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w1, w0, w8, ls
+; -O0: and w10, w8, #0xff
+; -O0: subs w10, w10, w9, uxtb
+; -O0: csel w1, w8, w9, ls
; -O0: bl __aarch64_cas1_acq_rel
; -O0: and w8, w0, #0xff
; -O0: subs w8, w8, w9, uxtb
diff --git a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc.ll b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc.ll
index 22bfedb7adaa4c..83a46b4f694ded 100644
--- a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc.ll
+++ b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc.ll
@@ -5,11 +5,11 @@
define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -20,11 +20,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -35,11 +35,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_release:
; -O1: ldxrb w0, [x8]
@@ -50,11 +50,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -65,11 +65,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -380,11 +380,11 @@ define dso_local i128 @atomicrmw_xchg_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -395,11 +395,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -410,11 +410,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_release:
; -O1: ldxrb w0, [x8]
@@ -425,11 +425,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -440,11 +440,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -595,12 +595,12 @@ define dso_local i128 @atomicrmw_xchg_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -612,12 +612,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -629,12 +629,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -646,12 +646,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -663,12 +663,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1025,12 +1025,12 @@ define dso_local i128 @atomicrmw_add_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1042,12 +1042,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1059,12 +1059,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1076,12 +1076,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1093,12 +1093,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1110,7 +1110,7 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_monotonic:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_monotonic:
@@ -1122,7 +1122,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acquire:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acquire:
@@ -1134,7 +1134,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_release:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_release:
@@ -1146,7 +1146,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
@@ -1158,7 +1158,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
@@ -1360,12 +1360,12 @@ define dso_local i128 @atomicrmw_add_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1377,12 +1377,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1394,12 +1394,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -1411,12 +1411,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1428,12 +1428,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1785,12 +1785,12 @@ define dso_local i128 @atomicrmw_sub_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1802,12 +1802,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1819,12 +1819,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1836,12 +1836,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1853,12 +1853,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1870,7 +1870,7 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
@@ -1882,7 +1882,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acquire:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acquire:
@@ -1894,7 +1894,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_release:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_release:
@@ -1906,7 +1906,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
@@ -1918,7 +1918,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
@@ -2115,12 +2115,12 @@ define dso_local i128 @atomicrmw_sub_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2132,12 +2132,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2149,12 +2149,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2166,12 +2166,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2183,12 +2183,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2550,12 +2550,12 @@ define dso_local i128 @atomicrmw_and_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2567,12 +2567,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2584,12 +2584,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -2601,12 +2601,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2618,12 +2618,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2635,7 +2635,7 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_monotonic:
@@ -2647,7 +2647,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acquire:
@@ -2659,7 +2659,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_release:
@@ -2671,7 +2671,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
@@ -2683,7 +2683,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
@@ -2890,13 +2890,13 @@ define dso_local i128 @atomicrmw_and_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2909,13 +2909,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2928,13 +2928,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2947,13 +2947,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2966,13 +2966,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3385,13 +3385,13 @@ define dso_local i128 @atomicrmw_nand_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3404,13 +3404,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3423,13 +3423,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -3442,13 +3442,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3461,13 +3461,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3480,7 +3480,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3494,7 +3494,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %valu
define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3508,7 +3508,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3522,7 +3522,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3536,7 +3536,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3785,12 +3785,12 @@ define dso_local i128 @atomicrmw_nand_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3802,12 +3802,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3819,12 +3819,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -3836,12 +3836,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3853,12 +3853,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4220,12 +4220,12 @@ define dso_local i128 @atomicrmw_or_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4237,12 +4237,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4254,12 +4254,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -4271,12 +4271,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4288,12 +4288,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4305,7 +4305,7 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_monotonic:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_monotonic:
@@ -4317,7 +4317,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acquire:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acquire:
@@ -4329,7 +4329,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_release:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_release:
@@ -4341,7 +4341,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
@@ -4353,7 +4353,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
@@ -4560,12 +4560,12 @@ define dso_local i128 @atomicrmw_or_i128_unaligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4577,12 +4577,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4594,12 +4594,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -4611,12 +4611,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4628,12 +4628,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4995,12 +4995,12 @@ define dso_local i128 @atomicrmw_xor_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -5012,12 +5012,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -5029,12 +5029,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -5046,12 +5046,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -5063,12 +5063,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -5080,7 +5080,7 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
@@ -5092,7 +5092,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acquire:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acquire:
@@ -5104,7 +5104,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_release:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_release:
@@ -5116,7 +5116,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
@@ -5128,7 +5128,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
@@ -5335,14 +5335,14 @@ define dso_local i128 @atomicrmw_xor_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5356,14 +5356,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5377,14 +5377,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -5398,14 +5398,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5419,14 +5419,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -5865,14 +5865,14 @@ define dso_local i128 @atomicrmw_max_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5886,14 +5886,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5907,14 +5907,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -5928,14 +5928,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5949,14 +5949,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6300,14 +6300,14 @@ define dso_local i128 @atomicrmw_max_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6321,14 +6321,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6342,14 +6342,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -6363,14 +6363,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6384,14 +6384,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6830,14 +6830,14 @@ define dso_local i128 @atomicrmw_min_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6851,14 +6851,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6872,14 +6872,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -6893,14 +6893,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6914,14 +6914,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -7265,14 +7265,14 @@ define dso_local i128 @atomicrmw_min_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7286,14 +7286,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7307,14 +7307,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -7328,14 +7328,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7349,14 +7349,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -7790,14 +7790,14 @@ define dso_local i128 @atomicrmw_umax_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7811,14 +7811,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7832,14 +7832,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -7853,14 +7853,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7874,14 +7874,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8220,14 +8220,14 @@ define dso_local i128 @atomicrmw_umax_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8241,14 +8241,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8262,14 +8262,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -8283,14 +8283,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8304,14 +8304,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8745,14 +8745,14 @@ define dso_local i128 @atomicrmw_umin_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8766,14 +8766,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8787,14 +8787,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -8808,14 +8808,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8829,14 +8829,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
diff --git a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc3.ll b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc3.ll
index 2b2ca83652df9c..f2106cc094ea5a 100644
--- a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc3.ll
+++ b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc3.ll
@@ -5,11 +5,11 @@
define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -20,11 +20,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -35,11 +35,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_release:
; -O1: ldxrb w0, [x8]
@@ -50,11 +50,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -65,11 +65,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -380,11 +380,11 @@ define dso_local i128 @atomicrmw_xchg_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -395,11 +395,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -410,11 +410,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_release:
; -O1: ldxrb w0, [x8]
@@ -425,11 +425,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -440,11 +440,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -595,12 +595,12 @@ define dso_local i128 @atomicrmw_xchg_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -612,12 +612,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -629,12 +629,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -646,12 +646,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -663,12 +663,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1025,12 +1025,12 @@ define dso_local i128 @atomicrmw_add_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1042,12 +1042,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1059,12 +1059,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1076,12 +1076,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1093,12 +1093,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1110,7 +1110,7 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_monotonic:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_monotonic:
@@ -1122,7 +1122,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acquire:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acquire:
@@ -1134,7 +1134,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_release:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_release:
@@ -1146,7 +1146,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
@@ -1158,7 +1158,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
@@ -1360,12 +1360,12 @@ define dso_local i128 @atomicrmw_add_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1377,12 +1377,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1394,12 +1394,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -1411,12 +1411,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1428,12 +1428,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1785,12 +1785,12 @@ define dso_local i128 @atomicrmw_sub_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1802,12 +1802,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1819,12 +1819,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1836,12 +1836,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1853,12 +1853,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1870,7 +1870,7 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
@@ -1882,7 +1882,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acquire:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acquire:
@@ -1894,7 +1894,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_release:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_release:
@@ -1906,7 +1906,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
@@ -1918,7 +1918,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
@@ -2115,12 +2115,12 @@ define dso_local i128 @atomicrmw_sub_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2132,12 +2132,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2149,12 +2149,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2166,12 +2166,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2183,12 +2183,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2550,12 +2550,12 @@ define dso_local i128 @atomicrmw_and_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2567,12 +2567,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2584,12 +2584,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -2601,12 +2601,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2618,12 +2618,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2635,7 +2635,7 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_monotonic:
@@ -2647,7 +2647,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acquire:
@@ -2659,7 +2659,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_release:
@@ -2671,7 +2671,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
@@ -2683,7 +2683,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
@@ -2890,13 +2890,13 @@ define dso_local i128 @atomicrmw_and_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2909,13 +2909,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2928,13 +2928,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2947,13 +2947,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2966,13 +2966,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3385,13 +3385,13 @@ define dso_local i128 @atomicrmw_nand_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3404,13 +3404,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3423,13 +3423,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -3442,13 +3442,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3461,13 +3461,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3480,7 +3480,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3494,7 +3494,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %valu
define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3508,7 +3508,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3522,7 +3522,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3536,7 +3536,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3785,12 +3785,12 @@ define dso_local i128 @atomicrmw_nand_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3802,12 +3802,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3819,12 +3819,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -3836,12 +3836,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3853,12 +3853,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4220,12 +4220,12 @@ define dso_local i128 @atomicrmw_or_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4237,12 +4237,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4254,12 +4254,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -4271,12 +4271,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4288,12 +4288,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4305,7 +4305,7 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_monotonic:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_monotonic:
@@ -4317,7 +4317,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acquire:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acquire:
@@ -4329,7 +4329,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_release:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_release:
@@ -4341,7 +4341,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
@@ -4353,7 +4353,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
@@ -4560,12 +4560,12 @@ define dso_local i128 @atomicrmw_or_i128_unaligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4577,12 +4577,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4594,12 +4594,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -4611,12 +4611,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4628,12 +4628,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4995,12 +4995,12 @@ define dso_local i128 @atomicrmw_xor_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -5012,12 +5012,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -5029,12 +5029,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -5046,12 +5046,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -5063,12 +5063,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -5080,7 +5080,7 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
@@ -5092,7 +5092,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acquire:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acquire:
@@ -5104,7 +5104,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_release:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_release:
@@ -5116,7 +5116,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
@@ -5128,7 +5128,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
@@ -5335,14 +5335,14 @@ define dso_local i128 @atomicrmw_xor_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5356,14 +5356,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5377,14 +5377,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -5398,14 +5398,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5419,14 +5419,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -5865,14 +5865,14 @@ define dso_local i128 @atomicrmw_max_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5886,14 +5886,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5907,14 +5907,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -5928,14 +5928,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5949,14 +5949,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6300,14 +6300,14 @@ define dso_local i128 @atomicrmw_max_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6321,14 +6321,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6342,14 +6342,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -6363,14 +6363,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6384,14 +6384,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6830,14 +6830,14 @@ define dso_local i128 @atomicrmw_min_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6851,14 +6851,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6872,14 +6872,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -6893,14 +6893,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6914,14 +6914,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -7265,14 +7265,14 @@ define dso_local i128 @atomicrmw_min_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7286,14 +7286,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7307,14 +7307,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -7328,14 +7328,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7349,14 +7349,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -7790,14 +7790,14 @@ define dso_local i128 @atomicrmw_umax_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7811,14 +7811,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7832,14 +7832,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -7853,14 +7853,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7874,14 +7874,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8220,14 +8220,14 @@ define dso_local i128 @atomicrmw_umax_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8241,14 +8241,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8262,14 +8262,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -8283,14 +8283,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8304,14 +8304,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8745,14 +8745,14 @@ define dso_local i128 @atomicrmw_umin_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8766,14 +8766,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8787,14 +8787,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -8808,14 +8808,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8829,14 +8829,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
diff --git a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8_1a.ll b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8_1a.ll
index 2066946da96b19..3dae433bff17cc 100644
--- a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8_1a.ll
+++ b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8_1a.ll
@@ -670,7 +670,7 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_monotonic:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_monotonic:
@@ -682,7 +682,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acquire:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acquire:
@@ -694,7 +694,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_release:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_release:
@@ -706,7 +706,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
@@ -718,7 +718,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
@@ -1185,7 +1185,7 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
@@ -1197,7 +1197,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acquire:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acquire:
@@ -1209,7 +1209,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_release:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_release:
@@ -1221,7 +1221,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
@@ -1233,7 +1233,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
@@ -1730,7 +1730,7 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_monotonic:
@@ -1742,7 +1742,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acquire:
@@ -1754,7 +1754,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_release:
@@ -1766,7 +1766,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
@@ -1778,7 +1778,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
@@ -1985,11 +1985,11 @@ define dso_local i128 @atomicrmw_and_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_monotonic:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_monotonic:
; -O1: and w10, w8, w1
@@ -2002,11 +2002,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acquire:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casab w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casab w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acquire:
; -O1: and w10, w8, w1
@@ -2019,11 +2019,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_release:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: caslb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: caslb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_release:
; -O1: and w10, w8, w1
@@ -2036,11 +2036,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
; -O1: and w10, w8, w1
@@ -2053,11 +2053,11 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
; -O1: and w10, w8, w1
@@ -2430,11 +2430,11 @@ define dso_local i128 @atomicrmw_nand_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
; -O1: and w10, w8, w1
@@ -2447,11 +2447,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acquire:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casab w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casab w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acquire:
; -O1: and w10, w8, w1
@@ -2464,11 +2464,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_release:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: caslb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: caslb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_release:
; -O1: and w10, w8, w1
@@ -2481,11 +2481,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
; -O1: and w10, w8, w1
@@ -2498,11 +2498,11 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
-; -O0: and w8, w10, w8
-; -O0: mvn w9, w8
-; -O0: casalb w8, w9, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w8, w8, w11
+; -O0: mvn w8, w8
+; -O0: casalb w0, w8, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
; -O1: and w10, w8, w1
@@ -2515,7 +2515,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2529,7 +2529,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %valu
define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2543,7 +2543,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2557,7 +2557,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -2571,7 +2571,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3095,7 +3095,7 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_monotonic:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_monotonic:
@@ -3107,7 +3107,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acquire:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acquire:
@@ -3119,7 +3119,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_release:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_release:
@@ -3131,7 +3131,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
@@ -3143,7 +3143,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
@@ -3625,7 +3625,7 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
@@ -3637,7 +3637,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acquire:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acquire:
@@ -3649,7 +3649,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_release:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_release:
@@ -3661,7 +3661,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
@@ -3673,7 +3673,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
diff --git a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8a.ll b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8a.ll
index 8f4b30bd906385..ca203c8b1e43cd 100644
--- a/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8a.ll
+++ b/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8a.ll
@@ -5,11 +5,11 @@
define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -20,11 +20,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -35,11 +35,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_release:
; -O1: ldxrb w0, [x8]
@@ -50,11 +50,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -65,11 +65,11 @@ define dso_local i8 @atomicrmw_xchg_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_aligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -380,11 +380,11 @@ define dso_local i128 @atomicrmw_xchg_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_monotonic:
; -O1: ldxrb w0, [x8]
@@ -395,11 +395,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acquire:
; -O1: ldaxrb w0, [x8]
@@ -410,11 +410,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_release:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_release:
; -O1: ldxrb w0, [x8]
@@ -425,11 +425,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_acq_rel:
; -O1: ldaxrb w0, [x8]
@@ -440,11 +440,11 @@ define dso_local i8 @atomicrmw_xchg_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xchg_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xchg_i8_unaligned_seq_cst:
; -O1: ldaxrb w0, [x8]
@@ -595,12 +595,12 @@ define dso_local i128 @atomicrmw_xchg_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -612,12 +612,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -629,12 +629,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -646,12 +646,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -663,12 +663,12 @@ define dso_local i8 @atomicrmw_add_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_aligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1025,12 +1025,12 @@ define dso_local i128 @atomicrmw_add_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_monotonic:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1042,12 +1042,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acquire:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1059,12 +1059,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_release:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1076,12 +1076,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1093,12 +1093,12 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
-; -O0: add w12, w8, w10, uxth
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: add w12, w8, w11, uxth
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_add_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1110,7 +1110,7 @@ define dso_local i8 @atomicrmw_add_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_monotonic:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_monotonic:
@@ -1122,7 +1122,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acquire:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acquire:
@@ -1134,7 +1134,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_release:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_release:
@@ -1146,7 +1146,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_acq_rel:
@@ -1158,7 +1158,7 @@ define dso_local i16 @atomicrmw_add_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_add_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
-; -O0: add w8, w8, w9, uxth
+; -O0: add w8, w8, w10, uxth
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_add_i16_unaligned_seq_cst:
@@ -1360,12 +1360,12 @@ define dso_local i128 @atomicrmw_add_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1377,12 +1377,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1394,12 +1394,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -1411,12 +1411,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1428,12 +1428,12 @@ define dso_local i8 @atomicrmw_sub_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1785,12 +1785,12 @@ define dso_local i128 @atomicrmw_sub_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -1802,12 +1802,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acquire:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -1819,12 +1819,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_release:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -1836,12 +1836,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -1853,12 +1853,12 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
-; -O0: subs w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: subs w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_sub_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -1870,7 +1870,7 @@ define dso_local i8 @atomicrmw_sub_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_monotonic:
@@ -1882,7 +1882,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acquire:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acquire:
@@ -1894,7 +1894,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_release:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_release:
@@ -1906,7 +1906,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_acq_rel:
@@ -1918,7 +1918,7 @@ define dso_local i16 @atomicrmw_sub_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_sub_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
-; -O0: subs w8, w9, w8
+; -O0: subs w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_sub_i16_unaligned_seq_cst:
@@ -2115,12 +2115,12 @@ define dso_local i128 @atomicrmw_sub_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2132,12 +2132,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2149,12 +2149,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2166,12 +2166,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2183,12 +2183,12 @@ define dso_local i8 @atomicrmw_and_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_aligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2550,12 +2550,12 @@ define dso_local i128 @atomicrmw_and_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_monotonic:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2567,12 +2567,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acquire:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2584,12 +2584,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_release:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -2601,12 +2601,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2618,12 +2618,12 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
-; -O0: and w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_and_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -2635,7 +2635,7 @@ define dso_local i8 @atomicrmw_and_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_monotonic:
@@ -2647,7 +2647,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acquire:
@@ -2659,7 +2659,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_release:
@@ -2671,7 +2671,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_acq_rel:
@@ -2683,7 +2683,7 @@ define dso_local i16 @atomicrmw_and_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_and_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_and_i16_unaligned_seq_cst:
@@ -2890,13 +2890,13 @@ define dso_local i128 @atomicrmw_and_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -2909,13 +2909,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -2928,13 +2928,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -2947,13 +2947,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -2966,13 +2966,13 @@ define dso_local i8 @atomicrmw_nand_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3385,13 +3385,13 @@ define dso_local i128 @atomicrmw_nand_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3404,13 +3404,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acquire:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3423,13 +3423,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_release:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -3442,13 +3442,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3461,13 +3461,13 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
-; -O0: and w8, w10, w8
+; -O0: and w8, w8, w11
; -O0: mvn w12, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_nand_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -3480,7 +3480,7 @@ define dso_local i8 @atomicrmw_nand_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_monotonic:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3494,7 +3494,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_monotonic(ptr %ptr, i16 %valu
define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acquire:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3508,7 +3508,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_release:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3522,7 +3522,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_acq_rel:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3536,7 +3536,7 @@ define dso_local i16 @atomicrmw_nand_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_nand_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_nand_i16_unaligned_seq_cst:
-; -O0: and w8, w9, w8
+; -O0: and w8, w8, w10
; -O0: mvn w8, w8
; -O0: bl __atomic_compare_exchange
;
@@ -3785,12 +3785,12 @@ define dso_local i128 @atomicrmw_nand_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -3802,12 +3802,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -3819,12 +3819,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -3836,12 +3836,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -3853,12 +3853,12 @@ define dso_local i8 @atomicrmw_or_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_aligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4220,12 +4220,12 @@ define dso_local i128 @atomicrmw_or_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_monotonic:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4237,12 +4237,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acquire:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4254,12 +4254,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_release:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -4271,12 +4271,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4288,12 +4288,12 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
-; -O0: orr w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: orr w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_or_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4305,7 +4305,7 @@ define dso_local i8 @atomicrmw_or_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_monotonic:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_monotonic:
@@ -4317,7 +4317,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_monotonic(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acquire:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acquire:
@@ -4329,7 +4329,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acquire(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_release:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_release:
@@ -4341,7 +4341,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_release(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_acq_rel:
@@ -4353,7 +4353,7 @@ define dso_local i16 @atomicrmw_or_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
define dso_local i16 @atomicrmw_or_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
-; -O0: orr w8, w9, w8
+; -O0: orr w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_or_i16_unaligned_seq_cst:
@@ -4560,12 +4560,12 @@ define dso_local i128 @atomicrmw_or_i128_unaligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -4577,12 +4577,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -4594,12 +4594,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_release:
; -O1: ldxrb w8, [x0]
@@ -4611,12 +4611,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -4628,12 +4628,12 @@ define dso_local i8 @atomicrmw_xor_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_aligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -4995,12 +4995,12 @@ define dso_local i128 @atomicrmw_xor_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_monotonic:
; -O1: ldxrb w8, [x0]
@@ -5012,12 +5012,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acquire:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acquire:
; -O1: ldaxrb w8, [x0]
@@ -5029,12 +5029,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_release:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_release:
; -O1: ldxrb w8, [x0]
@@ -5046,12 +5046,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_acq_rel:
; -O1: ldaxrb w8, [x0]
@@ -5063,12 +5063,12 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
-; -O0: eor w12, w10, w8
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: eor w12, w8, w11
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_xor_i8_unaligned_seq_cst:
; -O1: ldaxrb w8, [x0]
@@ -5080,7 +5080,7 @@ define dso_local i8 @atomicrmw_xor_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_monotonic:
@@ -5092,7 +5092,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_monotonic(ptr %ptr, i16 %value
define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acquire:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acquire:
@@ -5104,7 +5104,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acquire(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_release:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_release:
@@ -5116,7 +5116,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_release(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_acq_rel:
@@ -5128,7 +5128,7 @@ define dso_local i16 @atomicrmw_xor_i16_unaligned_acq_rel(ptr %ptr, i16 %value)
define dso_local i16 @atomicrmw_xor_i16_unaligned_seq_cst(ptr %ptr, i16 %value) {
; -O0-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
-; -O0: eor w8, w9, w8
+; -O0: eor w8, w8, w10
; -O0: bl __atomic_compare_exchange
;
; -O1-LABEL: atomicrmw_xor_i16_unaligned_seq_cst:
@@ -5335,14 +5335,14 @@ define dso_local i128 @atomicrmw_xor_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5356,14 +5356,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5377,14 +5377,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -5398,14 +5398,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5419,14 +5419,14 @@ define dso_local i8 @atomicrmw_max_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -5865,14 +5865,14 @@ define dso_local i128 @atomicrmw_max_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -5886,14 +5886,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -5907,14 +5907,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -5928,14 +5928,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -5949,14 +5949,14 @@ define dso_local i8 @atomicrmw_max_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_max_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, gt
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, gt
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_max_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6300,14 +6300,14 @@ define dso_local i128 @atomicrmw_max_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6321,14 +6321,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6342,14 +6342,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_release:
; -O1: ldxrb w9, [x0]
@@ -6363,14 +6363,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6384,14 +6384,14 @@ define dso_local i8 @atomicrmw_min_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_aligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_aligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -6830,14 +6830,14 @@ define dso_local i128 @atomicrmw_min_i128_aligned_seq_cst(ptr %ptr, i128 %value)
define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_monotonic:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_monotonic:
; -O1: ldxrb w9, [x0]
@@ -6851,14 +6851,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acquire:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acquire:
; -O1: ldaxrb w9, [x0]
@@ -6872,14 +6872,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_release:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_release:
; -O1: ldxrb w9, [x0]
@@ -6893,14 +6893,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_acq_rel:
; -O1: ldaxrb w9, [x0]
@@ -6914,14 +6914,14 @@ define dso_local i8 @atomicrmw_min_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_min_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
-; -O0: sxtb w9, w10
-; -O0: subs w9, w9, w8, sxtb
-; -O0: csel w12, w10, w8, le
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: sxtb w12, w8
+; -O0: subs w12, w12, w11, sxtb
+; -O0: csel w12, w8, w11, le
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_min_i8_unaligned_seq_cst:
; -O1: ldaxrb w9, [x0]
@@ -7265,14 +7265,14 @@ define dso_local i128 @atomicrmw_min_i128_unaligned_seq_cst(ptr %ptr, i128 %valu
define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7286,14 +7286,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7307,14 +7307,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -7328,14 +7328,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7349,14 +7349,14 @@ define dso_local i8 @atomicrmw_umax_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -7790,14 +7790,14 @@ define dso_local i128 @atomicrmw_umax_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -7811,14 +7811,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -7832,14 +7832,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -7853,14 +7853,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -7874,14 +7874,14 @@ define dso_local i8 @atomicrmw_umax_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umax_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, hi
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, hi
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umax_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8220,14 +8220,14 @@ define dso_local i128 @atomicrmw_umax_i128_unaligned_seq_cst(ptr %ptr, i128 %val
define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8241,14 +8241,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_monotonic(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8262,14 +8262,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_release:
; -O1: and w9, w1, #0xff
@@ -8283,14 +8283,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8304,14 +8304,14 @@ define dso_local i8 @atomicrmw_umin_i8_aligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_aligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_aligned_seq_cst:
; -O1: and w9, w1, #0xff
@@ -8745,14 +8745,14 @@ define dso_local i128 @atomicrmw_umin_i128_aligned_seq_cst(ptr %ptr, i128 %value
define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_monotonic:
; -O1: and w9, w1, #0xff
@@ -8766,14 +8766,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_monotonic(ptr %ptr, i8 %value)
define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acquire:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acquire:
; -O1: and w9, w1, #0xff
@@ -8787,14 +8787,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acquire(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_release:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_release:
; -O1: and w9, w1, #0xff
@@ -8808,14 +8808,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_release(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_acq_rel:
; -O1: and w9, w1, #0xff
@@ -8829,14 +8829,14 @@ define dso_local i8 @atomicrmw_umin_i8_unaligned_acq_rel(ptr %ptr, i8 %value) {
define dso_local i8 @atomicrmw_umin_i8_unaligned_seq_cst(ptr %ptr, i8 %value) {
; -O0-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
-; -O0: and w9, w10, #0xff
-; -O0: subs w9, w9, w8, uxtb
-; -O0: csel w12, w10, w8, ls
-; -O0: ldaxrb w8, [x11]
-; -O0: cmp w8, w10, uxtb
-; -O0: stlxrb w9, w12, [x11]
-; -O0: and w9, w8, #0xff
-; -O0: subs w9, w9, w10, uxtb
+; -O0: and w12, w8, #0xff
+; -O0: subs w12, w12, w11, uxtb
+; -O0: csel w12, w8, w11, ls
+; -O0: ldaxrb w0, [x10]
+; -O0: cmp w0, w11, uxtb
+; -O0: stlxrb w8, w12, [x10]
+; -O0: and w8, w0, #0xff
+; -O0: subs w8, w8, w9, uxtb
;
; -O1-LABEL: atomicrmw_umin_i8_unaligned_seq_cst:
; -O1: and w9, w1, #0xff
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
index 6da7795f8b5e81..d0319da92fd0ca 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
@@ -2195,32 +2195,34 @@ define i8 @atomicrmw_add_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB30_1
; CHECK-NOLSE-O0-NEXT: LBB30_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB30_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: add w12, w8, w10, uxth
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
+; CHECK-NOLSE-O0-NEXT: add w12, w8, w11, uxth
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB30_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB30_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB30_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB30_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB30_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB30_2
; CHECK-NOLSE-O0-NEXT: LBB30_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB30_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB30_5
; CHECK-NOLSE-O0-NEXT: b LBB30_1
; CHECK-NOLSE-O0-NEXT: LBB30_5: ; %atomicrmw.end
@@ -2287,31 +2289,32 @@ define i8 @atomicrmw_xchg_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB31_1
; CHECK-NOLSE-O0-NEXT: LBB31_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB31_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
; CHECK-NOLSE-O0-NEXT: ldr w12, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB31_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB31_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB31_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB31_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB31_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB31_2
; CHECK-NOLSE-O0-NEXT: LBB31_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB31_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB31_5
; CHECK-NOLSE-O0-NEXT: b LBB31_1
; CHECK-NOLSE-O0-NEXT: LBB31_5: ; %atomicrmw.end
@@ -2379,32 +2382,34 @@ define i8 @atomicrmw_sub_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB32_1
; CHECK-NOLSE-O0-NEXT: LBB32_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB32_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: subs w12, w10, w8
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: subs w12, w8, w11
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB32_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB32_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB32_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB32_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB32_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB32_2
; CHECK-NOLSE-O0-NEXT: LBB32_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB32_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB32_5
; CHECK-NOLSE-O0-NEXT: b LBB32_1
; CHECK-NOLSE-O0-NEXT: LBB32_5: ; %atomicrmw.end
@@ -2476,32 +2481,34 @@ define i8 @atomicrmw_and_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB33_1
; CHECK-NOLSE-O0-NEXT: LBB33_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB33_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: and w12, w10, w8
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: and w12, w8, w11
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB33_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB33_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB33_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB33_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB33_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB33_2
; CHECK-NOLSE-O0-NEXT: LBB33_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB33_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB33_5
; CHECK-NOLSE-O0-NEXT: b LBB33_1
; CHECK-NOLSE-O0-NEXT: LBB33_5: ; %atomicrmw.end
@@ -2573,32 +2580,34 @@ define i8 @atomicrmw_or_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB34_1
; CHECK-NOLSE-O0-NEXT: LBB34_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB34_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: orr w12, w10, w8
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: orr w12, w8, w11
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB34_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB34_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB34_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB34_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB34_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB34_2
; CHECK-NOLSE-O0-NEXT: LBB34_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB34_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB34_5
; CHECK-NOLSE-O0-NEXT: b LBB34_1
; CHECK-NOLSE-O0-NEXT: LBB34_5: ; %atomicrmw.end
@@ -2666,32 +2675,34 @@ define i8 @atomicrmw_xor_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB35_1
; CHECK-NOLSE-O0-NEXT: LBB35_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB35_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: eor w12, w10, w8
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: eor w12, w8, w11
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB35_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB35_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB35_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB35_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB35_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB35_2
; CHECK-NOLSE-O0-NEXT: LBB35_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB35_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB35_5
; CHECK-NOLSE-O0-NEXT: b LBB35_1
; CHECK-NOLSE-O0-NEXT: LBB35_5: ; %atomicrmw.end
@@ -2762,34 +2773,37 @@ define i8 @atomicrmw_min_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB36_1
; CHECK-NOLSE-O0-NEXT: LBB36_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB36_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: sxtb w9, w10
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w8, sxtb
-; CHECK-NOLSE-O0-NEXT: csel w12, w10, w8, le
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: sxtb w12, w8
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: subs w12, w12, w11, sxtb
+; CHECK-NOLSE-O0-NEXT: csel w12, w8, w11, le
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB36_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB36_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB36_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB36_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB36_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB36_2
; CHECK-NOLSE-O0-NEXT: LBB36_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB36_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB36_5
; CHECK-NOLSE-O0-NEXT: b LBB36_1
; CHECK-NOLSE-O0-NEXT: LBB36_5: ; %atomicrmw.end
@@ -2813,11 +2827,13 @@ define i8 @atomicrmw_min_i8(ptr %ptr, i8 %rhs) {
; CHECK-OUTLINE-O0-NEXT: ; =>This Inner Loop Header: Depth=1
; CHECK-OUTLINE-O0-NEXT: ldr w0, [sp, #28] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: ldr x2, [sp, #16] ; 8-byte Reload
-; CHECK-OUTLINE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
+; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #24] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #8] ; 4-byte Spill
-; CHECK-OUTLINE-O0-NEXT: sxtb w9, w0
-; CHECK-OUTLINE-O0-NEXT: subs w9, w9, w8, sxtb
-; CHECK-OUTLINE-O0-NEXT: csel w1, w0, w8, le
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: sxtb w10, w8
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: subs w10, w10, w9, sxtb
+; CHECK-OUTLINE-O0-NEXT: csel w1, w8, w9, le
; CHECK-OUTLINE-O0-NEXT: bl ___aarch64_cas1_acq
; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #8] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
@@ -2880,34 +2896,37 @@ define i8 @atomicrmw_max_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB37_1
; CHECK-NOLSE-O0-NEXT: LBB37_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB37_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: sxtb w9, w10
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w8, sxtb
-; CHECK-NOLSE-O0-NEXT: csel w12, w10, w8, gt
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: sxtb w12, w8
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: subs w12, w12, w11, sxtb
+; CHECK-NOLSE-O0-NEXT: csel w12, w8, w11, gt
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB37_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB37_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB37_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB37_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB37_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB37_2
; CHECK-NOLSE-O0-NEXT: LBB37_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB37_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB37_5
; CHECK-NOLSE-O0-NEXT: b LBB37_1
; CHECK-NOLSE-O0-NEXT: LBB37_5: ; %atomicrmw.end
@@ -2931,11 +2950,13 @@ define i8 @atomicrmw_max_i8(ptr %ptr, i8 %rhs) {
; CHECK-OUTLINE-O0-NEXT: ; =>This Inner Loop Header: Depth=1
; CHECK-OUTLINE-O0-NEXT: ldr w0, [sp, #28] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: ldr x2, [sp, #16] ; 8-byte Reload
-; CHECK-OUTLINE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
+; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #24] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #8] ; 4-byte Spill
-; CHECK-OUTLINE-O0-NEXT: sxtb w9, w0
-; CHECK-OUTLINE-O0-NEXT: subs w9, w9, w8, sxtb
-; CHECK-OUTLINE-O0-NEXT: csel w1, w0, w8, gt
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: sxtb w10, w8
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: subs w10, w10, w9, sxtb
+; CHECK-OUTLINE-O0-NEXT: csel w1, w8, w9, gt
; CHECK-OUTLINE-O0-NEXT: bl ___aarch64_cas1_rel
; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #8] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
@@ -3000,34 +3021,37 @@ define i8 @atomicrmw_umin_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB38_1
; CHECK-NOLSE-O0-NEXT: LBB38_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB38_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: and w9, w10, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w8, uxtb
-; CHECK-NOLSE-O0-NEXT: csel w12, w10, w8, ls
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: and w12, w8, #0xff
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: subs w12, w12, w11, uxtb
+; CHECK-NOLSE-O0-NEXT: csel w12, w8, w11, ls
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB38_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB38_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB38_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB38_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB38_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB38_2
; CHECK-NOLSE-O0-NEXT: LBB38_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB38_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB38_5
; CHECK-NOLSE-O0-NEXT: b LBB38_1
; CHECK-NOLSE-O0-NEXT: LBB38_5: ; %atomicrmw.end
@@ -3051,11 +3075,13 @@ define i8 @atomicrmw_umin_i8(ptr %ptr, i8 %rhs) {
; CHECK-OUTLINE-O0-NEXT: ; =>This Inner Loop Header: Depth=1
; CHECK-OUTLINE-O0-NEXT: ldr w0, [sp, #28] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: ldr x2, [sp, #16] ; 8-byte Reload
-; CHECK-OUTLINE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
+; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #24] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #8] ; 4-byte Spill
-; CHECK-OUTLINE-O0-NEXT: and w9, w0, #0xff
-; CHECK-OUTLINE-O0-NEXT: subs w9, w9, w8, uxtb
-; CHECK-OUTLINE-O0-NEXT: csel w1, w0, w8, ls
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: and w10, w8, #0xff
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: subs w10, w10, w9, uxtb
+; CHECK-OUTLINE-O0-NEXT: csel w1, w8, w9, ls
; CHECK-OUTLINE-O0-NEXT: bl ___aarch64_cas1_acq_rel
; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #8] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
@@ -3120,34 +3146,37 @@ define i8 @atomicrmw_umax_i8(ptr %ptr, i8 %rhs) {
; CHECK-NOLSE-O0-NEXT: .cfi_def_cfa_offset 32
; CHECK-NOLSE-O0-NEXT: str x0, [sp, #16] ; 8-byte Spill
; CHECK-NOLSE-O0-NEXT: str w1, [sp, #24] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: ldrb w8, [x0]
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: ldrb w0, [x0]
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b LBB39_1
; CHECK-NOLSE-O0-NEXT: LBB39_1: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; =>This Loop Header: Depth=1
; CHECK-NOLSE-O0-NEXT: ; Child Loop BB39_2 Depth 2
-; CHECK-NOLSE-O0-NEXT: ldr w10, [sp, #28] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
-; CHECK-NOLSE-O0-NEXT: and w9, w10, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w8, uxtb
-; CHECK-NOLSE-O0-NEXT: csel w12, w10, w8, hi
+; CHECK-NOLSE-O0-NEXT: ldr w9, [sp, #28] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr x10, [sp, #16] ; 8-byte Reload
+; CHECK-NOLSE-O0-NEXT: ldr w11, [sp, #24] ; 4-byte Reload
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: and w12, w8, #0xff
+; CHECK-NOLSE-O0-NEXT: mov w8, w9
+; CHECK-NOLSE-O0-NEXT: subs w12, w12, w11, uxtb
+; CHECK-NOLSE-O0-NEXT: csel w12, w8, w11, hi
+; CHECK-NOLSE-O0-NEXT: mov w11, w9
; CHECK-NOLSE-O0-NEXT: LBB39_2: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; Parent Loop BB39_1 Depth=1
; CHECK-NOLSE-O0-NEXT: ; => This Inner Loop Header: Depth=2
-; CHECK-NOLSE-O0-NEXT: ldaxrb w8, [x11]
-; CHECK-NOLSE-O0-NEXT: cmp w8, w10, uxtb
+; CHECK-NOLSE-O0-NEXT: ldaxrb w0, [x10]
+; CHECK-NOLSE-O0-NEXT: cmp w0, w11, uxtb
; CHECK-NOLSE-O0-NEXT: b.ne LBB39_4
; CHECK-NOLSE-O0-NEXT: ; %bb.3: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB39_2 Depth=2
-; CHECK-NOLSE-O0-NEXT: stlxrb w9, w12, [x11]
-; CHECK-NOLSE-O0-NEXT: cbnz w9, LBB39_2
+; CHECK-NOLSE-O0-NEXT: stlxrb w8, w12, [x10]
+; CHECK-NOLSE-O0-NEXT: cbnz w8, LBB39_2
; CHECK-NOLSE-O0-NEXT: LBB39_4: ; %atomicrmw.start
; CHECK-NOLSE-O0-NEXT: ; in Loop: Header=BB39_1 Depth=1
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #12] ; 4-byte Spill
-; CHECK-NOLSE-O0-NEXT: and w9, w8, #0xff
-; CHECK-NOLSE-O0-NEXT: subs w9, w9, w10, uxtb
-; CHECK-NOLSE-O0-NEXT: str w8, [sp, #28] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
+; CHECK-NOLSE-O0-NEXT: and w8, w0, #0xff
+; CHECK-NOLSE-O0-NEXT: subs w8, w8, w9, uxtb
+; CHECK-NOLSE-O0-NEXT: str w0, [sp, #28] ; 4-byte Spill
; CHECK-NOLSE-O0-NEXT: b.eq LBB39_5
; CHECK-NOLSE-O0-NEXT: b LBB39_1
; CHECK-NOLSE-O0-NEXT: LBB39_5: ; %atomicrmw.end
@@ -3171,11 +3200,13 @@ define i8 @atomicrmw_umax_i8(ptr %ptr, i8 %rhs) {
; CHECK-OUTLINE-O0-NEXT: ; =>This Inner Loop Header: Depth=1
; CHECK-OUTLINE-O0-NEXT: ldr w0, [sp, #28] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: ldr x2, [sp, #16] ; 8-byte Reload
-; CHECK-OUTLINE-O0-NEXT: ldr w8, [sp, #24] ; 4-byte Reload
+; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #24] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #8] ; 4-byte Spill
-; CHECK-OUTLINE-O0-NEXT: and w9, w0, #0xff
-; CHECK-OUTLINE-O0-NEXT: subs w9, w9, w8, uxtb
-; CHECK-OUTLINE-O0-NEXT: csel w1, w0, w8, hi
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: and w10, w8, #0xff
+; CHECK-OUTLINE-O0-NEXT: mov w8, w0
+; CHECK-OUTLINE-O0-NEXT: subs w10, w10, w9, uxtb
+; CHECK-OUTLINE-O0-NEXT: csel w1, w8, w9, hi
; CHECK-OUTLINE-O0-NEXT: bl ___aarch64_cas1_relax
; CHECK-OUTLINE-O0-NEXT: ldr w9, [sp, #8] ; 4-byte Reload
; CHECK-OUTLINE-O0-NEXT: str w0, [sp, #12] ; 4-byte Spill
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-hoisted-constants.ll b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-hoisted-constants.ll
index bc6a4a3febf769..7442fe7911d20a 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-hoisted-constants.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-hoisted-constants.ll
@@ -81,7 +81,7 @@ define i32 @test(i32 %a, i1 %c) {
; POSTSELECTION-NEXT: B %bb.2
; POSTSELECTION-NEXT: {{ $}}
; POSTSELECTION-NEXT: bb.2.common.ret:
- ; POSTSELECTION-NEXT: [[PHI:%[0-9]+]]:gpr32 = PHI %7, %bb.3, [[COPY2]], %bb.1
+ ; POSTSELECTION-NEXT: [[PHI:%[0-9]+]]:gpr32all = PHI %7, %bb.3, [[COPY2]], %bb.1
; POSTSELECTION-NEXT: $w0 = COPY [[PHI]]
; POSTSELECTION-NEXT: RET_ReallyLR implicit $w0
; POSTSELECTION-NEXT: {{ $}}
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/preselect-process-phis.mir b/llvm/test/CodeGen/AArch64/GlobalISel/preselect-process-phis.mir
index 53f61d6abe47dd..7b342cd3a34bf4 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/preselect-process-phis.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/preselect-process-phis.mir
@@ -163,9 +163,9 @@ body: |
; CHECK-NEXT: successors: %bb.5(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: %fp_phi:fpr16 = PHI %fpr, %bb.3, [[COPY1]], %bb.2
- ; CHECK-NEXT: %gp_phi1:gpr32 = PHI %gpr_1, %bb.3, %gpr_2, %bb.2
- ; CHECK-NEXT: %gp_phi2:gpr32 = PHI %gpr_1, %bb.3, %gpr_2, %bb.2
- ; CHECK-NEXT: %gp_phi3:gpr32 = PHI %gpr_1, %bb.3, %gpr_2, %bb.2
+ ; CHECK-NEXT: %gp_phi1:gpr32all = PHI %gpr_1, %bb.3, %gpr_2, %bb.2
+ ; CHECK-NEXT: %gp_phi2:gpr32all = PHI %gpr_1, %bb.3, %gpr_2, %bb.2
+ ; CHECK-NEXT: %gp_phi3:gpr32all = PHI %gpr_1, %bb.3, %gpr_2, %bb.2
; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:fpr32 = SUBREG_TO_REG %fp_phi, %subreg.hsub
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32all = COPY [[SUBREG_TO_REG]]
; CHECK-NEXT: {{ $}}
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
index fe497c3ce0fb26..de338fbc1c1b49 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-dbg-value.mir
@@ -68,7 +68,7 @@ body: |
; CHECK-LABEL: name: test_dbg_value_dead
; CHECK: liveins: $w0
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: DBG_VALUE %1:gpr64, $noreg, !7, !DIExpression(), debug-location !9
+ ; CHECK-NEXT: DBG_VALUE %1:gpr64all, $noreg, !7, !DIExpression(), debug-location !9
%0:gpr(i32) = COPY $w0
%1:gpr(i64) = G_ZEXT %0:gpr(i32)
DBG_VALUE %1(i64), $noreg, !7, !DIExpression(), debug-location !9
@@ -95,8 +95,8 @@ body: |
$x0 = COPY %1(p0)
...
-# A PHI keeps any class already assigned to its def, so the DBG_VALUE must not
-# assign one, not even the widest.
+# A PHI keeps a class already set on its def, so the class it picks otherwise
+# must match the one the DBG_VALUE sets.
---
name: test_dbg_value_phi
legalized: true
@@ -117,7 +117,7 @@ body: |
; CHECK-NEXT: successors: %bb.2(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
- ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr64 = PHI [[COPY1]], %bb.0, [[COPY2]], %bb.1
+ ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr64all = PHI [[COPY1]], %bb.0, [[COPY2]], %bb.1
; CHECK-NEXT: DBG_VALUE [[PHI]], $noreg, !7, !DIExpression(), debug-location !9
; CHECK-NEXT: $x0 = COPY [[PHI]]
bb.0:
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir
index 2648955875f18e..f267efcaee820e 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-jump-table-brjt.mir
@@ -87,7 +87,7 @@ body: |
; CHECK-NEXT: [[MADDWrrr:%[0-9]+]]:gpr32 = nsw MADDWrrr [[COPY]], [[MOVi32imm]], $wzr
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4.return:
- ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr32 = PHI [[MADDWrrr]], %bb.3, [[ADDWri]], %bb.2, [[COPY1]], %bb.0, [[COPY2]], %bb.1
+ ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr32all = PHI [[MADDWrrr]], %bb.3, [[ADDWri]], %bb.2, [[COPY1]], %bb.0, [[COPY2]], %bb.1
; CHECK-NEXT: $w0 = COPY [[PHI]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.1.entry:
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-phi.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-phi.mir
index c71de4c1a68315..af4786081191f6 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-phi.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-phi.mir
@@ -53,7 +53,7 @@ body: |
successors: %bb.2.case1(0x40000000), %bb.3.case2(0x40000000)
liveins: $w0
; CHECK-LABEL: name: test_phi
- ; CHECK: [[RES:%.*]]:gpr32 = PHI
+ ; CHECK: [[RES:%.*]]:gpr32all = PHI
%0(i32) = COPY $w0
%1(i32) = G_CONSTANT i32 0
@@ -114,7 +114,7 @@ body: |
bb.2:
- ; CHECK: %{{[0-9]+}}:gpr64 = PHI %{{[0-9]+}}, %bb.0, %{{[0-9]+}}, %bb.1
+ ; CHECK: %{{[0-9]+}}:gpr64all = PHI %{{[0-9]+}}, %bb.0, %{{[0-9]+}}, %bb.1
%3(p0) = G_PHI %0(p0), %bb.0, %1(p0), %bb.1
$x0 = COPY %3(p0)
RET_ReallyLR implicit $x0
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-unreachable-blocks.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-unreachable-blocks.mir
index f4f98bc4a1e178..50a46499a5e44e 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-unreachable-blocks.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-unreachable-blocks.mir
@@ -29,7 +29,7 @@ body: |
; CHECK-NEXT: [[ADDWri:%[0-9]+]]:gpr32sp = ADDWri [[COPY]], 2, 0
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
- ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr32 = PHI [[ADDWri]], %bb.2
+ ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr32all = PHI [[ADDWri]], %bb.2
; CHECK-NEXT: $w0 = COPY [[PHI]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.1:
diff --git a/llvm/test/CodeGen/AArch64/pr48188.ll b/llvm/test/CodeGen/AArch64/pr48188.ll
index 836690c1e7f0d3..2745dd90e85e55 100644
--- a/llvm/test/CodeGen/AArch64/pr48188.ll
+++ b/llvm/test/CodeGen/AArch64/pr48188.ll
@@ -7,17 +7,17 @@ define void @test() nounwind {
; GISEL-LABEL: test:
; GISEL: // %bb.0: // %entry
; GISEL-NEXT: sub sp, sp, #16
-; GISEL-NEXT: mov x8, xzr
-; GISEL-NEXT: mov x9, x8
-; GISEL-NEXT: str x9, [sp] // 8-byte Spill
-; GISEL-NEXT: str x8, [sp, #8] // 8-byte Spill
+; GISEL-NEXT: mov x0, xzr
+; GISEL-NEXT: mov x1, x0
+; GISEL-NEXT: str x1, [sp] // 8-byte Spill
+; GISEL-NEXT: str x0, [sp, #8] // 8-byte Spill
; GISEL-NEXT: b .LBB0_1
; GISEL-NEXT: .LBB0_1: // %loop
; GISEL-NEXT: // =>This Inner Loop Header: Depth=1
-; GISEL-NEXT: ldr x8, [sp, #8] // 8-byte Reload
-; GISEL-NEXT: ldr x9, [sp] // 8-byte Reload
-; GISEL-NEXT: str x9, [sp] // 8-byte Spill
-; GISEL-NEXT: str x8, [sp, #8] // 8-byte Spill
+; GISEL-NEXT: ldr x0, [sp, #8] // 8-byte Reload
+; GISEL-NEXT: ldr x1, [sp] // 8-byte Reload
+; GISEL-NEXT: str x1, [sp] // 8-byte Spill
+; GISEL-NEXT: str x0, [sp, #8] // 8-byte Spill
; GISEL-NEXT: b .LBB0_1
;
; SDAG-LABEL: test:
diff --git a/llvm/test/DebugInfo/AArch64/debug-reg-bank.ll b/llvm/test/DebugInfo/AArch64/debug-reg-bank.ll
index 19c33b34f4a39f..15fd84be1beaf5 100644
--- a/llvm/test/DebugInfo/AArch64/debug-reg-bank.ll
+++ b/llvm/test/DebugInfo/AArch64/debug-reg-bank.ll
@@ -6,7 +6,7 @@ define void @foo(i32 %n) !dbg !7 {
; CHECK: bb.1.entry:
; CHECK-NEXT: liveins: $w0
; CHECK-NEXT: {{ $}}
- ; CHECK-NEXT: DBG_VALUE %2:gpr32, $noreg, !12, !DIExpression(), debug-location !19
+ ; CHECK-NEXT: DBG_VALUE %2:gpr32all, $noreg, !12, !DIExpression(), debug-location !19
; CHECK-NEXT: RET_ReallyLR debug-location !20
entry:
%m = mul i32 %n, 13
More information about the llvm-commits
mailing list