[llvm] [AArch64][GlobalISel] Do not run the Localizer at -O0 (PR #177359)

David Green via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 22 09:22:34 PST 2026


https://github.com/davemgreen updated https://github.com/llvm/llvm-project/pull/177359

>From a4f85e8797fdff6bcc808364796e4b4c4b3b86df Mon Sep 17 00:00:00 2001
From: David Green <david.green at arm.com>
Date: Thu, 22 Jan 2026 17:22:19 +0000
Subject: [PATCH] [AArch64][GlobalISel] Do not run the Localizer at -O0

We have reports of this pass adding causing some severe compile time
regressions, in the order of ~30x. It should not be necessary at -O0 so disable
from the pipeline for the time being.
---
 bolt/test/AArch64/jmp-table-unsupported.s     |   2 +-
 .../Target/AArch64/AArch64TargetMachine.cpp   |   1 -
 .../AArch64/GlobalISel/arm64-atomic.ll        |   4 +-
 .../atomic-anyextending-load-crash.ll         |   4 +-
 .../AArch64/GlobalISel/invoke-region.ll       |  14 +-
 .../AArch64/GlobalISel/legalize-exceptions.ll |   9 +-
 .../AArch64/GlobalISel/localizer-arm64-tti.ll | 446 ++++++++++--------
 .../localizer-propagate-debug-loc.mir         |  37 +-
 .../GlobalISel/select-fp-anyext-crash.ll      |  22 +-
 .../GlobalISel/translate-constant-dag.ll      |  45 +-
 llvm/test/CodeGen/AArch64/O0-pipeline.ll      |   2 -
 .../CodeGen/AArch64/aarch64-fastcc-stackup.ll |   2 +-
 llvm/test/CodeGen/AArch64/cpa-globalisel.ll   | 166 +++----
 llvm/test/CodeGen/AArch64/phi-dbg.ll          |   2 +-
 llvm/test/CodeGen/AArch64/popcount.ll         |  38 +-
 llvm/test/CodeGen/AArch64/pr92062.ll          |   2 +-
 llvm/test/CodeGen/AArch64/vararg.ll           |  16 +-
 .../CodeGen/AArch64/win64_vararg_float.ll     |  12 +-
 .../CodeGen/AArch64/win64_vararg_float_cc.ll  |  12 +-
 llvm/test/Other/print-changed-machine.ll      |   2 +-
 20 files changed, 453 insertions(+), 385 deletions(-)

diff --git a/bolt/test/AArch64/jmp-table-unsupported.s b/bolt/test/AArch64/jmp-table-unsupported.s
index 1228149430449..ad0f7cef838af 100644
--- a/bolt/test/AArch64/jmp-table-unsupported.s
+++ b/bolt/test/AArch64/jmp-table-unsupported.s
@@ -101,7 +101,7 @@ SECTIONS {
 # JT-OBJDUMP-NORMAL: <handleOptionJumpTable>:
 # JT-OBJDUMP-NORMAL:  adrp
 # JT-OBJDUMP-NORMAL-NEXT:  add
-# JT-OBJDUMP-NORMAL-NEXT:  ldr
+# JT-OBJDUMP-NORMAL:  ldr
 # JT-OBJDUMP-NORMAL-NEXT:  blr
 
 # RUN: llvm-bolt %t/jt_type_normal.exe --dyno-stats \
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
index 3aba866458830..3716f7e20c141 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
@@ -735,7 +735,6 @@ bool AArch64PassConfig::addIRTranslator() {
 void AArch64PassConfig::addPreLegalizeMachineIR() {
   if (getOptLevel() == CodeGenOptLevel::None) {
     addPass(createAArch64O0PreLegalizerCombiner());
-    addPass(new Localizer());
   } else {
     addPass(createAArch64PreLegalizerCombiner());
     addPass(new Localizer());
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
index 123df841402fc..8e7858696c96a 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
@@ -760,6 +760,8 @@ define i32 @fetch_and_or(ptr %p) #0 {
 ; CHECK-NOLSE-O0:       ; %bb.0:
 ; CHECK-NOLSE-O0-NEXT:    sub sp, sp, #32
 ; CHECK-NOLSE-O0-NEXT:    str x0, [sp, #16] ; 8-byte Spill
+; CHECK-NOLSE-O0-NEXT:    mov w8, #5 ; =0x5
+; CHECK-NOLSE-O0-NEXT:    str w8, [sp, #24] ; 4-byte Spill
 ; CHECK-NOLSE-O0-NEXT:    ldr w8, [x0]
 ; CHECK-NOLSE-O0-NEXT:    str w8, [sp, #28] ; 4-byte Spill
 ; CHECK-NOLSE-O0-NEXT:    b LBB8_1
@@ -768,7 +770,7 @@ define i32 @fetch_and_or(ptr %p) #0 {
 ; CHECK-NOLSE-O0-NEXT:    ; Child Loop BB8_2 Depth 2
 ; CHECK-NOLSE-O0-NEXT:    ldr w8, [sp, #28] ; 4-byte Reload
 ; CHECK-NOLSE-O0-NEXT:    ldr x11, [sp, #16] ; 8-byte Reload
-; CHECK-NOLSE-O0-NEXT:    mov w9, #5 ; =0x5
+; CHECK-NOLSE-O0-NEXT:    ldr w9, [sp, #24] ; 4-byte Reload
 ; CHECK-NOLSE-O0-NEXT:    orr w12, w8, w9
 ; CHECK-NOLSE-O0-NEXT:  LBB8_2: ; %atomicrmw.start
 ; CHECK-NOLSE-O0-NEXT:    ; Parent Loop BB8_1 Depth=1
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/atomic-anyextending-load-crash.ll b/llvm/test/CodeGen/AArch64/GlobalISel/atomic-anyextending-load-crash.ll
index a3d57f05d9c60..2fa022d06da1f 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/atomic-anyextending-load-crash.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/atomic-anyextending-load-crash.ll
@@ -11,10 +11,10 @@ define void @test(ptr %0) {
 ; CHECK-NEXT:    .cfi_def_cfa_offset 144
 ; CHECK-NEXT:    .cfi_offset w30, -8
 ; CHECK-NEXT:    .cfi_offset w29, -16
-; CHECK-NEXT:    ldar w8, [x0]
-; CHECK-NEXT:    str w8, [sp, #116] ; 4-byte Spill
 ; CHECK-NEXT:    mov x8, #0 ; =0x0
 ; CHECK-NEXT:    str x8, [sp, #120] ; 8-byte Spill
+; CHECK-NEXT:    ldar w9, [x0]
+; CHECK-NEXT:    str w9, [sp, #116] ; 4-byte Spill
 ; CHECK-NEXT:    blr x8
 ; CHECK-NEXT:    ldr w11, [sp, #116] ; 4-byte Reload
 ; CHECK-NEXT:    ldr x8, [sp, #120] ; 8-byte Reload
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/invoke-region.ll b/llvm/test/CodeGen/AArch64/GlobalISel/invoke-region.ll
index 39ad002a0763f..efb04571817e7 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/invoke-region.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/invoke-region.ll
@@ -12,10 +12,10 @@ define i1 @test_lpad_phi_widen_into_pred() personality ptr @__gxx_personality_v0
   ; CHECK: bb.1 (%ir-block.0):
   ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global_var
   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
-  ; CHECK-NEXT:   G_STORE [[C]](s32), [[GV]](p0) :: (store (s32) into @global_var)
+  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global_var
   ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
+  ; CHECK-NEXT:   G_STORE [[C]](s32), [[GV]](p0) :: (store (s32) into @global_var)
   ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 1
   ; CHECK-NEXT:   G_INVOKE_REGION_START
   ; CHECK-NEXT:   EH_LABEL <mcsymbol >
@@ -31,8 +31,7 @@ define i1 @test_lpad_phi_widen_into_pred() personality ptr @__gxx_personality_v0
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C1]](s32), %bb.1
   ; CHECK-NEXT:   EH_LABEL <mcsymbol >
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global_var
-  ; CHECK-NEXT:   G_STORE [[PHI]](s32), [[GV1]](p0) :: (store (s32) into @global_var)
+  ; CHECK-NEXT:   G_STORE [[PHI]](s32), [[GV]](p0) :: (store (s32) into @global_var)
   ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
   ; CHECK-NEXT:   G_BR %bb.3
   ; CHECK-NEXT: {{  $}}
@@ -67,12 +66,12 @@ define i1 @test_lpad_phi_widen_into_pred_ext(ptr %ptr) personality ptr @__gxx_pe
   ; CHECK-NEXT:   liveins: $x0
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global_var
   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
+  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global_var
+  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
   ; CHECK-NEXT:   G_STORE [[C]](s32), [[GV]](p0) :: (store (s32) into @global_var)
   ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p0) :: (load (s8) from %ir.ptr)
   ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s8) = G_ASSERT_ZEXT [[LOAD]], 1
-  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[ASSERT_ZEXT]](s8)
   ; CHECK-NEXT:   G_INVOKE_REGION_START
   ; CHECK-NEXT:   EH_LABEL <mcsymbol >
@@ -88,8 +87,7 @@ define i1 @test_lpad_phi_widen_into_pred_ext(ptr %ptr) personality ptr @__gxx_pe
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C1]](s32), %bb.1
   ; CHECK-NEXT:   EH_LABEL <mcsymbol >
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global_var
-  ; CHECK-NEXT:   G_STORE [[PHI]](s32), [[GV1]](p0) :: (store (s32) into @global_var)
+  ; CHECK-NEXT:   G_STORE [[PHI]](s32), [[GV]](p0) :: (store (s32) into @global_var)
   ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
   ; CHECK-NEXT:   G_BR %bb.3
   ; CHECK-NEXT: {{  $}}
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-exceptions.ll b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-exceptions.ll
index f7550ceb2799a..1fe8b258687cd 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-exceptions.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-exceptions.ll
@@ -13,10 +13,12 @@ define void @bar() personality ptr @__gxx_personality_v0 {
   ; CHECK: bb.1 (%ir-block.0):
   ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
   ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
+  ; CHECK-NEXT:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.exn.slot
+  ; CHECK-NEXT:   [[FRAME_INDEX1:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.1.ehselector.slot
   ; CHECK-NEXT:   G_INVOKE_REGION_START
   ; CHECK-NEXT:   EH_LABEL <mcsymbol >
   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
-  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
   ; CHECK-NEXT:   $w0 = COPY [[C]](s32)
   ; CHECK-NEXT:   BL @foo, csr_darwin_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit-def $w0
   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
@@ -32,9 +34,7 @@ define void @bar() personality ptr @__gxx_personality_v0 {
   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
   ; CHECK-NEXT:   [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY1]](p0)
   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[PTRTOINT]](s64)
-  ; CHECK-NEXT:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.exn.slot
   ; CHECK-NEXT:   G_STORE [[COPY]](p0), [[FRAME_INDEX]](p0) :: (store (p0) into %ir.exn.slot)
-  ; CHECK-NEXT:   [[FRAME_INDEX1:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.1.ehselector.slot
   ; CHECK-NEXT:   G_STORE [[TRUNC]](s32), [[FRAME_INDEX1]](p0) :: (store (s32) into %ir.ehselector.slot)
   ; CHECK-NEXT:   G_BR %bb.4
   ; CHECK-NEXT: {{  $}}
@@ -42,8 +42,7 @@ define void @bar() personality ptr @__gxx_personality_v0 {
   ; CHECK-NEXT:   RET_ReallyLR
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.4.eh.resume:
-  ; CHECK-NEXT:   [[FRAME_INDEX2:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.exn.slot
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX2]](p0) :: (dereferenceable load (p0) from %ir.exn.slot)
+  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (dereferenceable load (p0) from %ir.exn.slot)
   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
   ; CHECK-NEXT:   $x0 = COPY [[LOAD]](p0)
   ; CHECK-NEXT:   BL @_Unwind_Resume, csr_darwin_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/localizer-arm64-tti.ll b/llvm/test/CodeGen/AArch64/GlobalISel/localizer-arm64-tti.ll
index c4e07de265edd..dd86bc2cb8d76 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/localizer-arm64-tti.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/localizer-arm64-tti.ll
@@ -16,40 +16,49 @@ target triple = "arm64-apple-ios5.0.0"
 
 define i32 @foo() {
   ; CHECK-LABEL: name: foo
-  ; CHECK: bb.1.entry:
-  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2
-  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3
-  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-  ; CHECK-NEXT:   [[GV2:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV2]](p0) :: (dereferenceable load (s32) from @var1)
-  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
-  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](s32), [[C3]]
-  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
-  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.3
-  ; CHECK-NEXT:   G_BR %bb.2
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.2.if.then:
-  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV3:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2
-  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
-  ; CHECK-NEXT:   G_STORE [[C5]](s32), [[GV3]](p0) :: (store (s32) into @var2)
-  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
-  ; CHECK-NEXT:   [[GV4:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1
-  ; CHECK-NEXT:   G_STORE [[C6]](s32), [[GV4]](p0) :: (store (s32) into @var1)
-  ; CHECK-NEXT:   [[GV5:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3
-  ; CHECK-NEXT:   G_STORE [[C5]](s32), [[GV5]](p0) :: (store (s32) into @var3)
-  ; CHECK-NEXT:   G_STORE [[C6]](s32), [[GV4]](p0) :: (store (s32) into @var1)
-  ; CHECK-NEXT:   G_BR %bb.3
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.3.if.end:
-  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-  ; CHECK-NEXT:   $w0 = COPY [[C7]](s32)
-  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
+  ; CHECK: bb.0.entry:
+  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $sp = frame-setup SUBXri $sp, 48, 0
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset <mcsymbol >48
+  ; CHECK-NEXT:   $x8 = ADRP target-flags(aarch64-page, aarch64-got) @var1
+  ; CHECK-NEXT:   renamable $x8 = LDRXui killed $x8, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var1
+  ; CHECK-NEXT:   STRXui $x8, $sp, 0 :: (store (s64) into %stack.5)
+  ; CHECK-NEXT:   renamable $w9 = MOVZWi 2, 0
+  ; CHECK-NEXT:   STRWui killed $w9, $sp, 3 :: (store (s32) into %stack.4)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var2
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var2
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 2 :: (store (s64) into %stack.3)
+  ; CHECK-NEXT:   renamable $w9 = MOVZWi 3, 0
+  ; CHECK-NEXT:   STRWui killed $w9, $sp, 7 :: (store (s32) into %stack.2)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var3
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var3
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 4 :: (store (s64) into %stack.1)
+  ; CHECK-NEXT:   $w9 = ORRWrs $wzr, $wzr, 0
+  ; CHECK-NEXT:   STRWui killed $w9, $sp, 11 :: (store (s32) into %stack.0)
+  ; CHECK-NEXT:   renamable $w8 = LDRWui renamable $x8, 0 :: (dereferenceable load (s32) from @var1)
+  ; CHECK-NEXT:   dead renamable $w8 = SUBSWri killed renamable $w8, 1, 0, implicit-def $nzcv
+  ; CHECK-NEXT:   Bcc 1, %bb.2, implicit killed $nzcv
+  ; CHECK-NEXT:   B %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1.if.then:
+  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $w8 = LDRWui $sp, 7 :: (load (s32) from %stack.2)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 0 :: (load (s64) from %stack.5)
+  ; CHECK-NEXT:   $w10 = LDRWui $sp, 3 :: (load (s32) from %stack.4)
+  ; CHECK-NEXT:   $x11 = LDRXui $sp, 4 :: (load (s64) from %stack.1)
+  ; CHECK-NEXT:   $x12 = LDRXui $sp, 2 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   STRWui renamable $w10, renamable $x12, 0 :: (store (s32) into @var2)
+  ; CHECK-NEXT:   STRWui renamable $w8, renamable $x9, 0 :: (store (s32) into @var1)
+  ; CHECK-NEXT:   STRWui renamable $w10, renamable $x11, 0 :: (store (s32) into @var3)
+  ; CHECK-NEXT:   STRWui renamable $w8, renamable $x9, 0 :: (store (s32) into @var1)
+  ; CHECK-NEXT:   B %bb.2
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2.if.end:
+  ; CHECK-NEXT:   $w0 = LDRWui $sp, 11 :: (load (s32) from %stack.0)
+  ; CHECK-NEXT:   $sp = frame-destroy ADDXri $sp, 48, 0
+  ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
 entry:
   %0 = load i32, ptr @var1, align 4
   %cmp = icmp eq i32 %0, 1
@@ -75,32 +84,46 @@ if.end:
 ; we don't localize into the middle of a call sequence instead.
 define i32 @darwin_tls() {
   ; CHECK-LABEL: name: darwin_tls
-  ; CHECK: bb.1.entry:
-  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @tls_gv
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2
-  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-  ; CHECK-NEXT:   [[GV2:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV2]](p0) :: (dereferenceable load (s32) from @var1)
-  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
-  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](s32), [[C1]]
-  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
-  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.3
-  ; CHECK-NEXT:   G_BR %bb.2
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.2.if.then:
-  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @tls_gv)
-  ; CHECK-NEXT:   [[GV3:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2
-  ; CHECK-NEXT:   G_STORE [[LOAD1]](s32), [[GV3]](p0) :: (store (s32) into @var2)
-  ; CHECK-NEXT:   G_BR %bb.3
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.3.if.end:
-  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-  ; CHECK-NEXT:   $w0 = COPY [[C3]](s32)
-  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
+  ; CHECK: bb.0.entry:
+  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
+  ; CHECK-NEXT:   liveins: $lr
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $sp = frame-setup SUBXri $sp, 48, 0
+  ; CHECK-NEXT:   frame-setup STPXi killed $fp, killed $lr, $sp, 4 :: (store (s64) into %stack.4), (store (s64) into %stack.3)
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 48
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $w30, -8
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $w29, -16
+  ; CHECK-NEXT:   $x8 = ADRP target-flags(aarch64-page, aarch64-got) @var1
+  ; CHECK-NEXT:   renamable $x8 = LDRXui killed $x8, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var1
+  ; CHECK-NEXT:   $x0 = ADRP target-flags(aarch64-page, aarch64-tls) @tls_gv
+  ; CHECK-NEXT:   renamable $x0 = LDRXui killed $x0, target-flags(aarch64-pageoff, aarch64-nc, aarch64-tls) @tls_gv
+  ; CHECK-NEXT:   renamable $x9 = LDRXui renamable $x0, 0
+  ; CHECK-NEXT:   BLR killed renamable $x9, csr_darwin_aarch64_tls, implicit-def dead $lr, implicit $sp, implicit killed $x0, implicit-def $x0
+  ; CHECK-NEXT:   STRXui killed $x0, $sp, 1 :: (store (s64) into %stack.2)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var2
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var2
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 2 :: (store (s64) into %stack.1)
+  ; CHECK-NEXT:   $w9 = ORRWrs $wzr, $wzr, 0
+  ; CHECK-NEXT:   STRWui killed $w9, $sp, 7 :: (store (s32) into %stack.0)
+  ; CHECK-NEXT:   renamable $w8 = LDRWui killed renamable $x8, 0 :: (dereferenceable load (s32) from @var1)
+  ; CHECK-NEXT:   dead renamable $w8 = SUBSWri killed renamable $w8, 1, 0, implicit-def $nzcv
+  ; CHECK-NEXT:   Bcc 1, %bb.2, implicit killed $nzcv
+  ; CHECK-NEXT:   B %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1.if.then:
+  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 2 :: (load (s64) from %stack.1)
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 1 :: (load (s64) from %stack.2)
+  ; CHECK-NEXT:   renamable $w8 = LDRWui renamable $x8, 0 :: (dereferenceable load (s32) from @tls_gv)
+  ; CHECK-NEXT:   STRWui killed renamable $w8, renamable $x9, 0 :: (store (s32) into @var2)
+  ; CHECK-NEXT:   B %bb.2
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2.if.end:
+  ; CHECK-NEXT:   $w0 = LDRWui $sp, 7 :: (load (s32) from %stack.0)
+  ; CHECK-NEXT:   $fp, $lr = frame-destroy LDPXi $sp, 4 :: (load (s64) from %stack.4), (load (s64) from %stack.3)
+  ; CHECK-NEXT:   $sp = frame-destroy ADDXri $sp, 48, 0
+  ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
 entry:
   %0 = load i32, ptr @var1, align 4
   %cmp = icmp eq i32 %0, 1
@@ -117,42 +140,53 @@ if.end:
 
 define i32 @imm_cost_too_large_cost_of_2() {
   ; CHECK-LABEL: name: imm_cost_too_large_cost_of_2
-  ; CHECK: bb.1.entry:
-  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.4(0x40000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3
-  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-  ; CHECK-NEXT:   [[GV2:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV2]](p0) :: (dereferenceable load (s32) from @var1)
-  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2228259
-  ; CHECK-NEXT:   [[CONSTANT_FOLD_BARRIER:%[0-9]+]]:_(s32) = G_CONSTANT_FOLD_BARRIER [[C1]]
-  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
-  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](s32), [[C2]]
-  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
-  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.4
-  ; CHECK-NEXT:   G_BR %bb.2
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.2.if.then:
+  ; CHECK: bb.0.entry:
+  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.3(0x40000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $sp = frame-setup SUBXri $sp, 48, 0
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset <mcsymbol >48
+  ; CHECK-NEXT:   $x8 = ADRP target-flags(aarch64-page, aarch64-got) @var1
+  ; CHECK-NEXT:   renamable $x8 = LDRXui killed $x8, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var1
+  ; CHECK-NEXT:   STRXui $x8, $sp, 1 :: (store (s64) into %stack.4)
+  ; CHECK-NEXT:   renamable $w9 = MOVZWi 65501, 0
+  ; CHECK-NEXT:   renamable $w9 = MOVKWi $w9, 65501, 16
+  ; CHECK-NEXT:   STRWui killed $w9, $sp, 5 :: (store (s32) into %stack.3)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var2
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var2
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 3 :: (store (s64) into %stack.2)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var3
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var3
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 4 :: (store (s64) into %stack.1)
+  ; CHECK-NEXT:   $w9 = ORRWrs $wzr, $wzr, 0
+  ; CHECK-NEXT:   STRWui killed $w9, $sp, 11 :: (store (s32) into %stack.0)
+  ; CHECK-NEXT:   renamable $w8 = LDRWui renamable $x8, 0 :: (dereferenceable load (s32) from @var1)
+  ; CHECK-NEXT:   dead renamable $w8 = SUBSWri killed renamable $w8, 1, 0, implicit-def $nzcv
+  ; CHECK-NEXT:   Bcc 1, %bb.3, implicit killed $nzcv
+  ; CHECK-NEXT:   B %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1.if.then:
+  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $w8 = LDRWui $sp, 5 :: (load (s32) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 3 :: (load (s64) from %stack.2)
+  ; CHECK-NEXT:   STRWui renamable $w8, renamable $x9, 0 :: (store (s32) into @var2)
+  ; CHECK-NEXT:   B %bb.2
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2.if.then2:
   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV3:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2
-  ; CHECK-NEXT:   G_STORE [[CONSTANT_FOLD_BARRIER]](s32), [[GV3]](p0) :: (store (s32) into @var2)
-  ; CHECK-NEXT:   G_BR %bb.3
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.3.if.then2:
-  ; CHECK-NEXT:   successors: %bb.4(0x80000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV4:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1
-  ; CHECK-NEXT:   G_STORE [[CONSTANT_FOLD_BARRIER]](s32), [[GV4]](p0) :: (store (s32) into @var1)
-  ; CHECK-NEXT:   G_BR %bb.4
+  ; CHECK-NEXT:   $w8 = LDRWui $sp, 5 :: (load (s32) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 1 :: (load (s64) from %stack.4)
+  ; CHECK-NEXT:   STRWui renamable $w8, renamable $x9, 0 :: (store (s32) into @var1)
+  ; CHECK-NEXT:   B %bb.3
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.4.if.end:
-  ; CHECK-NEXT:   [[GV5:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3
-  ; CHECK-NEXT:   G_STORE [[CONSTANT_FOLD_BARRIER]](s32), [[GV5]](p0) :: (store (s32) into @var3)
-  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-  ; CHECK-NEXT:   $w0 = COPY [[C4]](s32)
-  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
+  ; CHECK-NEXT: bb.3.if.end:
+  ; CHECK-NEXT:   $w0 = LDRWui $sp, 11 :: (load (s32) from %stack.0)
+  ; CHECK-NEXT:   $w8 = LDRWui $sp, 5 :: (load (s32) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 4 :: (load (s64) from %stack.1)
+  ; CHECK-NEXT:   STRWui killed renamable $w8, killed renamable $x9, 0 :: (store (s32) into @var3)
+  ; CHECK-NEXT:   $sp = frame-destroy ADDXri $sp, 48, 0
+  ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
 entry:
   %0 = load i32, ptr @var1, align 4
   %cst1 = bitcast i32 -2228259 to i32
@@ -174,42 +208,53 @@ if.end:
 
 define i64 @imm_cost_too_large_cost_of_4() {
   ; CHECK-LABEL: name: imm_cost_too_large_cost_of_4
-  ; CHECK: bb.1.entry:
-  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.4(0x40000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2_64
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3_64
-  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK-NEXT:   [[GV2:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1_64
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[GV2]](p0) :: (dereferenceable load (s64) from @var1_64, align 4)
-  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -2228259
-  ; CHECK-NEXT:   [[CONSTANT_FOLD_BARRIER:%[0-9]+]]:_(s64) = G_CONSTANT_FOLD_BARRIER [[C1]]
-  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
-  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](s64), [[C2]]
-  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
-  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.4
-  ; CHECK-NEXT:   G_BR %bb.2
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.2.if.then:
+  ; CHECK: bb.0.entry:
+  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.3(0x40000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $sp = frame-setup SUBXri $sp, 48, 0
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset <mcsymbol >48
+  ; CHECK-NEXT:   $x8 = ADRP target-flags(aarch64-page, aarch64-got) @var1_64
+  ; CHECK-NEXT:   renamable $x8 = LDRXui killed $x8, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var1_64
+  ; CHECK-NEXT:   STRXui $x8, $sp, 1 :: (store (s64) into %stack.4)
+  ; CHECK-NEXT:   renamable $x9 = MOVNXi 34, 0
+  ; CHECK-NEXT:   renamable $x9 = MOVKXi $x9, 65501, 16
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 2 :: (store (s64) into %stack.3)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var2_64
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var2_64
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 3 :: (store (s64) into %stack.2)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var3_64
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var3_64
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 4 :: (store (s64) into %stack.1)
+  ; CHECK-NEXT:   $x9 = ORRXrs $xzr, $xzr, 0
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 5 :: (store (s64) into %stack.0)
+  ; CHECK-NEXT:   renamable $x8 = LDRXui renamable $x8, 0 :: (dereferenceable load (s64) from @var1_64, align 4)
+  ; CHECK-NEXT:   dead renamable $x8 = SUBSXri killed renamable $x8, 1, 0, implicit-def $nzcv
+  ; CHECK-NEXT:   Bcc 1, %bb.3, implicit killed $nzcv
+  ; CHECK-NEXT:   B %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1.if.then:
+  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 2 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 3 :: (load (s64) from %stack.2)
+  ; CHECK-NEXT:   STRXui renamable $x8, renamable $x9, 0 :: (store (s64) into @var2_64)
+  ; CHECK-NEXT:   B %bb.2
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2.if.then2:
   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV3:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2_64
-  ; CHECK-NEXT:   G_STORE [[CONSTANT_FOLD_BARRIER]](s64), [[GV3]](p0) :: (store (s64) into @var2_64)
-  ; CHECK-NEXT:   G_BR %bb.3
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.3.if.then2:
-  ; CHECK-NEXT:   successors: %bb.4(0x80000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV4:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1_64
-  ; CHECK-NEXT:   G_STORE [[CONSTANT_FOLD_BARRIER]](s64), [[GV4]](p0) :: (store (s64) into @var1_64)
-  ; CHECK-NEXT:   G_BR %bb.4
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 2 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 1 :: (load (s64) from %stack.4)
+  ; CHECK-NEXT:   STRXui renamable $x8, renamable $x9, 0 :: (store (s64) into @var1_64)
+  ; CHECK-NEXT:   B %bb.3
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.4.if.end:
-  ; CHECK-NEXT:   [[GV5:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3_64
-  ; CHECK-NEXT:   G_STORE [[CONSTANT_FOLD_BARRIER]](s64), [[GV5]](p0) :: (store (s64) into @var3_64)
-  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK-NEXT:   $x0 = COPY [[C4]](s64)
-  ; CHECK-NEXT:   RET_ReallyLR implicit $x0
+  ; CHECK-NEXT: bb.3.if.end:
+  ; CHECK-NEXT:   $x0 = LDRXui $sp, 5 :: (load (s64) from %stack.0)
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 2 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 4 :: (load (s64) from %stack.1)
+  ; CHECK-NEXT:   STRXui killed renamable $x8, killed renamable $x9, 0 :: (store (s64) into @var3_64)
+  ; CHECK-NEXT:   $sp = frame-destroy ADDXri $sp, 48, 0
+  ; CHECK-NEXT:   RET undef $lr, implicit killed $x0
 entry:
   %0 = load i64, ptr @var1_64, align 4
   %cst1 = bitcast i64 -2228259 to i64
@@ -231,42 +276,56 @@ if.end:
 
 define i64 @f64_imm_cost_too_high(double %a) {
   ; CHECK-LABEL: name: f64_imm_cost_too_high
-  ; CHECK: bb.1.entry:
-  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.4(0x40000000)
+  ; CHECK: bb.0.entry:
+  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.3(0x40000000)
   ; CHECK-NEXT:   liveins: $d0
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 1.000000e-02
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2_64
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3_64
-  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK-NEXT:   [[GV2:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1_64
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[GV2]](p0) :: (dereferenceable load (s64) from @var1_64, align 4)
-  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
-  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](s64), [[C2]]
-  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
-  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.4
-  ; CHECK-NEXT:   G_BR %bb.2
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.2.if.then:
+  ; CHECK-NEXT:   $sp = frame-setup SUBXri $sp, 48, 0
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset <mcsymbol >48
+  ; CHECK-NEXT:   $x8 = ADRP target-flags(aarch64-page, aarch64-got) @var1_64
+  ; CHECK-NEXT:   renamable $x8 = LDRXui killed $x8, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var1_64
+  ; CHECK-NEXT:   STRXui $x8, $sp, 1 :: (store (s64) into %stack.4)
+  ; CHECK-NEXT:   renamable $x9 = MOVZXi 5243, 0
+  ; CHECK-NEXT:   renamable $x9 = MOVKXi $x9, 18350, 16
+  ; CHECK-NEXT:   renamable $x9 = MOVKXi $x9, 31457, 32
+  ; CHECK-NEXT:   renamable $x9 = MOVKXi $x9, 16260, 48
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 2 :: (store (s64) into %stack.3)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var2_64
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var2_64
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 3 :: (store (s64) into %stack.2)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var3_64
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var3_64
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 4 :: (store (s64) into %stack.1)
+  ; CHECK-NEXT:   $x9 = ORRXrs $xzr, $xzr, 0
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 5 :: (store (s64) into %stack.0)
+  ; CHECK-NEXT:   renamable $x8 = LDRXui renamable $x8, 0 :: (dereferenceable load (s64) from @var1_64, align 4)
+  ; CHECK-NEXT:   dead renamable $x8 = SUBSXri killed renamable $x8, 1, 0, implicit-def $nzcv
+  ; CHECK-NEXT:   Bcc 1, %bb.3, implicit killed $nzcv
+  ; CHECK-NEXT:   B %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1.if.then:
+  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 2 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 3 :: (load (s64) from %stack.2)
+  ; CHECK-NEXT:   STRXui renamable $x8, renamable $x9, 0 :: (store (s64) into @var2_64)
+  ; CHECK-NEXT:   B %bb.2
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2.if.then2:
   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV3:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2_64
-  ; CHECK-NEXT:   G_STORE [[C]](s64), [[GV3]](p0) :: (store (s64) into @var2_64)
-  ; CHECK-NEXT:   G_BR %bb.3
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.3.if.then2:
-  ; CHECK-NEXT:   successors: %bb.4(0x80000000)
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 2 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 1 :: (load (s64) from %stack.4)
+  ; CHECK-NEXT:   STRXui renamable $x8, renamable $x9, 0 :: (store (s64) into @var1_64)
+  ; CHECK-NEXT:   B %bb.3
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV4:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1_64
-  ; CHECK-NEXT:   G_STORE [[C]](s64), [[GV4]](p0) :: (store (s64) into @var1_64)
-  ; CHECK-NEXT:   G_BR %bb.4
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.4.if.end:
-  ; CHECK-NEXT:   [[GV5:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3_64
-  ; CHECK-NEXT:   G_STORE [[C]](s64), [[GV5]](p0) :: (store (s64) into @var3_64)
-  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK-NEXT:   $x0 = COPY [[C4]](s64)
-  ; CHECK-NEXT:   RET_ReallyLR implicit $x0
+  ; CHECK-NEXT: bb.3.if.end:
+  ; CHECK-NEXT:   $x0 = LDRXui $sp, 5 :: (load (s64) from %stack.0)
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 2 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   $x9 = LDRXui $sp, 4 :: (load (s64) from %stack.1)
+  ; CHECK-NEXT:   STRXui killed renamable $x8, killed renamable $x9, 0 :: (store (s64) into @var3_64)
+  ; CHECK-NEXT:   $sp = frame-destroy ADDXri $sp, 48, 0
+  ; CHECK-NEXT:   RET undef $lr, implicit killed $x0
 entry:
   %0 = load i64, ptr @var1_64, align 4
   %cmp = icmp eq i64 %0, 1
@@ -287,45 +346,48 @@ if.end:
 
 define i64 @f64_imm_cheap(double %a) {
   ; CHECK-LABEL: name: f64_imm_cheap
-  ; CHECK: bb.1.entry:
-  ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.4(0x40000000)
+  ; CHECK: bb.0.entry:
+  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.3(0x40000000)
   ; CHECK-NEXT:   liveins: $d0
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00
-  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2_64
-  ; CHECK-NEXT:   [[GV1:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3_64
-  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK-NEXT:   [[GV2:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1_64
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[GV2]](p0) :: (dereferenceable load (s64) from @var1_64, align 4)
-  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
-  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[LOAD]](s64), [[C2]]
-  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
-  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.4
-  ; CHECK-NEXT:   G_BR %bb.2
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.2.if.then:
+  ; CHECK-NEXT:   $sp = frame-setup SUBXri $sp, 32, 0
+  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset <mcsymbol >32
+  ; CHECK-NEXT:   $x8 = ADRP target-flags(aarch64-page, aarch64-got) @var1_64
+  ; CHECK-NEXT:   renamable $x8 = LDRXui killed $x8, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var1_64
+  ; CHECK-NEXT:   STRXui $x8, $sp, 0 :: (store (s64) into %stack.3)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var2_64
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var2_64
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 1 :: (store (s64) into %stack.2)
+  ; CHECK-NEXT:   $x9 = ADRP target-flags(aarch64-page, aarch64-got) @var3_64
+  ; CHECK-NEXT:   renamable $x9 = LDRXui killed $x9, target-flags(aarch64-pageoff, aarch64-got, aarch64-nc) @var3_64
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 2 :: (store (s64) into %stack.1)
+  ; CHECK-NEXT:   $x9 = ORRXrs $xzr, $xzr, 0
+  ; CHECK-NEXT:   STRXui killed $x9, $sp, 3 :: (store (s64) into %stack.0)
+  ; CHECK-NEXT:   renamable $x8 = LDRXui renamable $x8, 0 :: (dereferenceable load (s64) from @var1_64, align 4)
+  ; CHECK-NEXT:   dead renamable $x8 = SUBSXri killed renamable $x8, 1, 0, implicit-def $nzcv
+  ; CHECK-NEXT:   Bcc 1, %bb.3, implicit killed $nzcv
+  ; CHECK-NEXT:   B %bb.1
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.1.if.then:
+  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 1 :: (load (s64) from %stack.2)
+  ; CHECK-NEXT:   STRXui $xzr, renamable $x8, 0 :: (store (s64) into @var2_64)
+  ; CHECK-NEXT:   B %bb.2
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.2.if.then2:
   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[GV3:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var2_64
-  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00
-  ; CHECK-NEXT:   G_STORE [[C4]](s64), [[GV3]](p0) :: (store (s64) into @var2_64)
-  ; CHECK-NEXT:   G_BR %bb.3
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.3.if.then2:
-  ; CHECK-NEXT:   successors: %bb.4(0x80000000)
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00
-  ; CHECK-NEXT:   [[GV4:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var1_64
-  ; CHECK-NEXT:   G_STORE [[C5]](s64), [[GV4]](p0) :: (store (s64) into @var1_64)
-  ; CHECK-NEXT:   G_BR %bb.4
-  ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT: bb.4.if.end:
-  ; CHECK-NEXT:   [[GV5:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @var3_64
-  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00
-  ; CHECK-NEXT:   G_STORE [[C6]](s64), [[GV5]](p0) :: (store (s64) into @var3_64)
-  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK-NEXT:   $x0 = COPY [[C7]](s64)
-  ; CHECK-NEXT:   RET_ReallyLR implicit $x0
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 0 :: (load (s64) from %stack.3)
+  ; CHECK-NEXT:   STRXui $xzr, renamable $x8, 0 :: (store (s64) into @var1_64)
+  ; CHECK-NEXT:   B %bb.3
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT: bb.3.if.end:
+  ; CHECK-NEXT:   $x0 = LDRXui $sp, 3 :: (load (s64) from %stack.0)
+  ; CHECK-NEXT:   $x8 = LDRXui $sp, 2 :: (load (s64) from %stack.1)
+  ; CHECK-NEXT:   STRXui $xzr, killed renamable $x8, 0 :: (store (s64) into @var3_64)
+  ; CHECK-NEXT:   $sp = frame-destroy ADDXri $sp, 32, 0
+  ; CHECK-NEXT:   RET undef $lr, implicit killed $x0
 entry:
   %0 = load i64, ptr @var1_64, align 4
   %cmp = icmp eq i64 %0, 1
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/localizer-propagate-debug-loc.mir b/llvm/test/CodeGen/AArch64/GlobalISel/localizer-propagate-debug-loc.mir
index 903bf27cef105..16e7cfa284a59 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/localizer-propagate-debug-loc.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/localizer-propagate-debug-loc.mir
@@ -1,6 +1,5 @@
 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
-# RUN: llc -O0 %s -global-isel -start-before localizer \
-# RUN:    -stop-after localizer -o - | FileCheck --check-prefix=CHECK %s
+# RUN: llc -O0 %s -global-isel -run-pass=localizer -o - | FileCheck --check-prefix=CHECK %s
 --- |
   target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
   target triple = "arm64-apple-macosx12.0.0"
@@ -76,12 +75,12 @@ body:             |
   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT:   [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 3
-  ; CHECK-NEXT:   [[ADRP:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @C,  debug-location !DILocation(line: 0, scope: !18)
-  ; CHECK-NEXT:   [[ADD_LOW:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP]](p0), target-flags(aarch64-pageoff, aarch64-nc) @C,  debug-location !DILocation(line: 0, scope: !18)
-  ; CHECK-NEXT:   [[ADRP1:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @B,  debug-location !DILocation(line: 0, scope: !14)
-  ; CHECK-NEXT:   [[ADD_LOW1:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP1]](p0), target-flags(aarch64-pageoff, aarch64-nc) @B,  debug-location !DILocation(line: 0, scope: !14)
-  ; CHECK-NEXT:   [[ADRP2:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @A,  debug-location !DILocation(line: 0, scope: !11)
-  ; CHECK-NEXT:   [[ADD_LOW2:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP2]](p0), target-flags(aarch64-pageoff, aarch64-nc) @A,  debug-location !DILocation(line: 0, scope: !11)
+  ; CHECK-NEXT:   [[ADRP:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @C, debug-location !DILocation(line: 0, scope: !18)
+  ; CHECK-NEXT:   [[ADD_LOW:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP]](p0), target-flags(aarch64-pageoff, aarch64-nc) @C, debug-location !DILocation(line: 0, scope: !18)
+  ; CHECK-NEXT:   [[ADRP1:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @B, debug-location !DILocation(line: 0, scope: !14)
+  ; CHECK-NEXT:   [[ADD_LOW1:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP1]](p0), target-flags(aarch64-pageoff, aarch64-nc) @B, debug-location !DILocation(line: 0, scope: !14)
+  ; CHECK-NEXT:   [[ADRP2:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @A, debug-location !DILocation(line: 0, scope: !11)
+  ; CHECK-NEXT:   [[ADD_LOW2:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP2]](p0), target-flags(aarch64-pageoff, aarch64-nc) @A, debug-location !DILocation(line: 0, scope: !11)
   ; CHECK-NEXT:   [[FRAME_INDEX:%[0-9]+]]:gpr(p0) = G_FRAME_INDEX %stack.0
   ; CHECK-NEXT:   [[C1:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0
   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr(s32) = COPY [[C1]](s32)
@@ -94,9 +93,9 @@ body:             |
   ; CHECK-NEXT: bb.1:
   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[ADRP3:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @A,  debug-location !10
-  ; CHECK-NEXT:   [[ADD_LOW3:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP3]](p0), target-flags(aarch64-pageoff, aarch64-nc) @A,  debug-location !10
-  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[ADD_LOW3]](p0),  debug-location !10 :: (dereferenceable load (s32))
+  ; CHECK-NEXT:   [[ADRP3:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @A, debug-location !10
+  ; CHECK-NEXT:   [[ADD_LOW3:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP3]](p0), target-flags(aarch64-pageoff, aarch64-nc) @A, debug-location !10
+  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[ADD_LOW3]](p0), debug-location !10 :: (dereferenceable load (s32))
   ; CHECK-NEXT:   [[FRAME_INDEX1:%[0-9]+]]:gpr(p0) = G_FRAME_INDEX %stack.0
   ; CHECK-NEXT:   G_STORE [[LOAD]](s32), [[FRAME_INDEX1]](p0) :: (volatile store (s32) into %ir.1)
   ; CHECK-NEXT:   G_BR %bb.5
@@ -114,22 +113,22 @@ body:             |
   ; CHECK-NEXT: bb.3:
   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[ADRP4:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @B,  debug-location !DILocation(line: 0, scope: !14)
-  ; CHECK-NEXT:   [[ADD_LOW4:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP4]](p0), target-flags(aarch64-pageoff, aarch64-nc) @B,  debug-location !DILocation(line: 0, scope: !14)
-  ; CHECK-NEXT:   [[LOAD1:%[0-9]+]]:gpr(s32) = G_LOAD [[ADD_LOW4]](p0),  debug-location !13 :: (dereferenceable load (s32))
+  ; CHECK-NEXT:   [[ADRP4:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @B, debug-location !DILocation(line: 0, scope: !14)
+  ; CHECK-NEXT:   [[ADD_LOW4:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP4]](p0), target-flags(aarch64-pageoff, aarch64-nc) @B, debug-location !DILocation(line: 0, scope: !14)
+  ; CHECK-NEXT:   [[LOAD1:%[0-9]+]]:gpr(s32) = G_LOAD [[ADD_LOW4]](p0), debug-location !13 :: (dereferenceable load (s32))
   ; CHECK-NEXT:   [[FRAME_INDEX2:%[0-9]+]]:gpr(p0) = G_FRAME_INDEX %stack.0
   ; CHECK-NEXT:   G_STORE [[LOAD1]](s32), [[FRAME_INDEX2]](p0) :: (volatile store (s32) into %ir.1)
-  ; CHECK-NEXT:   [[LOAD2:%[0-9]+]]:gpr(s32) = G_LOAD [[ADD_LOW4]](p0),  debug-location !16 :: (dereferenceable load (s32))
+  ; CHECK-NEXT:   [[LOAD2:%[0-9]+]]:gpr(s32) = G_LOAD [[ADD_LOW4]](p0), debug-location !16 :: (dereferenceable load (s32))
   ; CHECK-NEXT:   G_STORE [[LOAD2]](s32), [[FRAME_INDEX2]](p0) :: (volatile store (s32) into %ir.1)
   ; CHECK-NEXT:   G_BR %bb.5
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.4:
   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
   ; CHECK-NEXT: {{  $}}
-  ; CHECK-NEXT:   [[ADRP5:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @C,  debug-location !17
-  ; CHECK-NEXT:   [[ADD_LOW5:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP5]](p0), target-flags(aarch64-pageoff, aarch64-nc) @C,  debug-location !17
-  ; CHECK-NEXT:   [[C5:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 3,  debug-location !17
-  ; CHECK-NEXT:   G_STORE [[C5]](s32), [[ADD_LOW5]](p0),  debug-location !17 :: (store (s32) into @C)
+  ; CHECK-NEXT:   [[ADRP5:%[0-9]+]]:gpr64(p0) = ADRP target-flags(aarch64-page) @C, debug-location !17
+  ; CHECK-NEXT:   [[ADD_LOW5:%[0-9]+]]:gpr(p0) = G_ADD_LOW [[ADRP5]](p0), target-flags(aarch64-pageoff, aarch64-nc) @C, debug-location !17
+  ; CHECK-NEXT:   [[C5:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 3, debug-location !17
+  ; CHECK-NEXT:   G_STORE [[C5]](s32), [[ADD_LOW5]](p0), debug-location !17 :: (store (s32) into @C)
   ; CHECK-NEXT:   G_BR %bb.5
   ; CHECK-NEXT: {{  $}}
   ; CHECK-NEXT: bb.5:
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-anyext-crash.ll b/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-anyext-crash.ll
index a63636e666e8f..4b57ef1d2d24f 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-anyext-crash.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-fp-anyext-crash.ll
@@ -13,19 +13,19 @@ define i32 @test() {
 ; CHECK-NEXT:    .cfi_def_cfa_offset 80
 ; CHECK-NEXT:    .cfi_offset w30, -8
 ; CHECK-NEXT:    .cfi_offset w29, -16
+; CHECK-NEXT:    mov x9, #0 ; =0x0
 ; CHECK-NEXT:    mov x8, #0 ; =0x0
-; CHECK-NEXT:    ldr s0, [x8]
+; CHECK-NEXT:    mov w10, #0 ; =0x0
+; CHECK-NEXT:    str w10, [sp, #60] ; 4-byte Spill
+; CHECK-NEXT:    ldr s0, [x9]
 ; CHECK-NEXT:    ; kill: def $d0 killed $s0
-; CHECK-NEXT:    mov x8, sp
-; CHECK-NEXT:    mov w9, #0 ; =0x0
-; CHECK-NEXT:    str w9, [sp, #60] ; 4-byte Spill
-; CHECK-NEXT:    str xzr, [x8]
-; CHECK-NEXT:    str xzr, [x8, #8]
-; CHECK-NEXT:    str xzr, [x8, #16]
-; CHECK-NEXT:    str xzr, [x8, #24]
-; CHECK-NEXT:    str d0, [x8, #32]
-; CHECK-NEXT:    str xzr, [x8, #40]
-; CHECK-NEXT:    mov x8, #0 ; =0x0
+; CHECK-NEXT:    mov x9, sp
+; CHECK-NEXT:    str xzr, [x9]
+; CHECK-NEXT:    str xzr, [x9, #8]
+; CHECK-NEXT:    str xzr, [x9, #16]
+; CHECK-NEXT:    str xzr, [x9, #24]
+; CHECK-NEXT:    str d0, [x9, #32]
+; CHECK-NEXT:    str xzr, [x9, #40]
 ; CHECK-NEXT:    mov x0, x8
 ; CHECK-NEXT:    blr x8
 ; CHECK-NEXT:    ldr w0, [sp, #60] ; 4-byte Reload
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/translate-constant-dag.ll b/llvm/test/CodeGen/AArch64/GlobalISel/translate-constant-dag.ll
index 9a025aa35b874..ece0a3d8e8a48 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/translate-constant-dag.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/translate-constant-dag.ll
@@ -6,28 +6,29 @@
 define void @test_const(ptr %dst) {
   ; CHECK-LABEL: name: test_const
   ; CHECK: bb.1.entry:
-  ; CHECK:   liveins: $x0
-  ; CHECK:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
-  ; CHECK:   [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 10
-  ; CHECK:   STRBBui [[MOVi32imm]], [[COPY]], 0 :: (store (s8) into %ir.dst)
-  ; CHECK:   [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 20
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 1 :: (store (s8) into %ir.dst + 1)
-  ; CHECK:   STRBBui [[MOVi32imm]], [[COPY]], 2 :: (store (s8) into %ir.dst + 2)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 3 :: (store (s8) into %ir.dst + 3)
-  ; CHECK:   [[MOVi32imm2:%[0-9]+]]:gpr32 = MOVi32imm 50
-  ; CHECK:   STRBBui [[MOVi32imm2]], [[COPY]], 4 :: (store (s8) into %ir.dst + 4)
-  ; CHECK:   STRBBui [[MOVi32imm]], [[COPY]], 5 :: (store (s8) into %ir.dst + 5)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 6 :: (store (s8) into %ir.dst + 6)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 7 :: (store (s8) into %ir.dst + 7)
-  ; CHECK:   STRBBui [[MOVi32imm]], [[COPY]], 0 :: (store (s8) into %ir.dst)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 1 :: (store (s8) into %ir.dst + 1)
-  ; CHECK:   STRBBui [[MOVi32imm]], [[COPY]], 2 :: (store (s8) into %ir.dst + 2)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 3 :: (store (s8) into %ir.dst + 3)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 4 :: (store (s8) into %ir.dst + 4)
-  ; CHECK:   STRBBui [[MOVi32imm]], [[COPY]], 5 :: (store (s8) into %ir.dst + 5)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 6 :: (store (s8) into %ir.dst + 6)
-  ; CHECK:   STRBBui [[MOVi32imm1]], [[COPY]], 7 :: (store (s8) into %ir.dst + 7)
-  ; CHECK:   RET_ReallyLR
+  ; CHECK-NEXT:   liveins: $x0
+  ; CHECK-NEXT: {{  $}}
+  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
+  ; CHECK-NEXT:   [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 10
+  ; CHECK-NEXT:   [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 20
+  ; CHECK-NEXT:   [[MOVi32imm2:%[0-9]+]]:gpr32 = MOVi32imm 50
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm]], [[COPY]], 0 :: (store (s8) into %ir.dst)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 1 :: (store (s8) into %ir.dst + 1)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm]], [[COPY]], 2 :: (store (s8) into %ir.dst + 2)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 3 :: (store (s8) into %ir.dst + 3)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm2]], [[COPY]], 4 :: (store (s8) into %ir.dst + 4)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm]], [[COPY]], 5 :: (store (s8) into %ir.dst + 5)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 6 :: (store (s8) into %ir.dst + 6)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 7 :: (store (s8) into %ir.dst + 7)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm]], [[COPY]], 0 :: (store (s8) into %ir.dst)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 1 :: (store (s8) into %ir.dst + 1)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm]], [[COPY]], 2 :: (store (s8) into %ir.dst + 2)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 3 :: (store (s8) into %ir.dst + 3)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 4 :: (store (s8) into %ir.dst + 4)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm]], [[COPY]], 5 :: (store (s8) into %ir.dst + 5)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 6 :: (store (s8) into %ir.dst + 6)
+  ; CHECK-NEXT:   STRBBui [[MOVi32imm1]], [[COPY]], 7 :: (store (s8) into %ir.dst + 7)
+  ; CHECK-NEXT:   RET_ReallyLR
 entry:
  %updated = insertvalue
    ; Check that we're visiting constants with shared parts
diff --git a/llvm/test/CodeGen/AArch64/O0-pipeline.ll b/llvm/test/CodeGen/AArch64/O0-pipeline.ll
index cc0655b31d892..7d742c697f51b 100644
--- a/llvm/test/CodeGen/AArch64/O0-pipeline.ll
+++ b/llvm/test/CodeGen/AArch64/O0-pipeline.ll
@@ -41,9 +41,7 @@
 ; CHECK-NEXT:       IRTranslator
 ; CHECK-NEXT:       Analysis for ComputingKnownBits
 ; CHECK-NEXT:       AArch64O0PreLegalizerCombiner
-; CHECK-NEXT:       Localizer
 ; CHECK-NEXT:       Analysis containing CSE Info
-; CHECK-NEXT:       Analysis for ComputingKnownBits
 ; CHECK-NEXT:       Legalizer
 ; CHECK-NEXT:       AArch64PostLegalizerLowering
 ; CHECK-NEXT:       RegBankSelect
diff --git a/llvm/test/CodeGen/AArch64/aarch64-fastcc-stackup.ll b/llvm/test/CodeGen/AArch64/aarch64-fastcc-stackup.ll
index 3cfe10ed8a83d..f279485c2a4a6 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-fastcc-stackup.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-fastcc-stackup.ll
@@ -24,8 +24,8 @@ define fastcc i64 @baz() {
 ; CHECK-NEXT:    str x30, [sp, #16] // 8-byte Spill
 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
 ; CHECK-NEXT:    .cfi_offset w30, -16
-; CHECK-NEXT:    mov x8, sp
 ; CHECK-NEXT:    mov x7, xzr
+; CHECK-NEXT:    mov x8, sp
 ; CHECK-NEXT:    str xzr, [x8]
 ; CHECK-NEXT:    mov x0, x7
 ; CHECK-NEXT:    mov x1, x7
diff --git a/llvm/test/CodeGen/AArch64/cpa-globalisel.ll b/llvm/test/CodeGen/AArch64/cpa-globalisel.ll
index 5cad4c0db02db..20f00b52cafbf 100644
--- a/llvm/test/CodeGen/AArch64/cpa-globalisel.ll
+++ b/llvm/test/CodeGen/AArch64/cpa-globalisel.ll
@@ -51,16 +51,16 @@ entry:
 define void @maddpt1(i32 %pos, ptr %val) {
 ; CHECK-CPA-O0-LABEL: maddpt1:
 ; CHECK-CPA-O0:       // %bb.0: // %entry
+; CHECK-CPA-O0-NEXT:    adrp x10, array2
+; CHECK-CPA-O0-NEXT:    add x10, x10, :lo12:array2
+; CHECK-CPA-O0-NEXT:    mov w8, #48 // =0x30
+; CHECK-CPA-O0-NEXT:    mov w2, w8
 ; CHECK-CPA-O0-NEXT:    // implicit-def: $x8
 ; CHECK-CPA-O0-NEXT:    mov w8, w0
 ; CHECK-CPA-O0-NEXT:    sxtw x8, w8
 ; CHECK-CPA-O0-NEXT:    mov w9, #48 // =0x30
 ; CHECK-CPA-O0-NEXT:    // kill: def $x9 killed $w9
-; CHECK-CPA-O0-NEXT:    adrp x10, array2
-; CHECK-CPA-O0-NEXT:    add x10, x10, :lo12:array2
 ; CHECK-CPA-O0-NEXT:    maddpt x0, x8, x9, x10
-; CHECK-CPA-O0-NEXT:    mov w8, #48 // =0x30
-; CHECK-CPA-O0-NEXT:    mov w2, w8
 ; CHECK-CPA-O0-NEXT:    b memcpy
 ;
 ; CHECK-CPA-O3-LABEL: maddpt1:
@@ -84,9 +84,9 @@ define void @maddpt1(i32 %pos, ptr %val) {
 ; CHECK-NOCPA-O0-NEXT:    adrp x9, array2
 ; CHECK-NOCPA-O0-NEXT:    add x9, x9, :lo12:array2
 ; CHECK-NOCPA-O0-NEXT:    mov w8, #48 // =0x30
-; CHECK-NOCPA-O0-NEXT:    smaddl x0, w0, w8, x9
-; CHECK-NOCPA-O0-NEXT:    mov w8, #48 // =0x30
 ; CHECK-NOCPA-O0-NEXT:    mov w2, w8
+; CHECK-NOCPA-O0-NEXT:    mov w8, #48 // =0x30
+; CHECK-NOCPA-O0-NEXT:    smaddl x0, w0, w8, x9
 ; CHECK-NOCPA-O0-NEXT:    b memcpy
 ;
 ; CHECK-NOCPA-O3-LABEL: maddpt1:
@@ -112,22 +112,22 @@ entry:
 define void @msubpt1(i32 %index, i32 %elem) {
 ; CHECK-CPA-O0-LABEL: msubpt1:
 ; CHECK-CPA-O0:       // %bb.0: // %entry
-; CHECK-CPA-O0-NEXT:    // implicit-def: $x8
-; CHECK-CPA-O0-NEXT:    mov w8, w0
-; CHECK-CPA-O0-NEXT:    sxtw x10, w8
-; CHECK-CPA-O0-NEXT:    mov w8, #48 // =0x30
-; CHECK-CPA-O0-NEXT:    mov w9, w8
-; CHECK-CPA-O0-NEXT:    mov w8, #288 // =0x120
-; CHECK-CPA-O0-NEXT:    mov w11, w8
 ; CHECK-CPA-O0-NEXT:    adrp x8, array2
 ; CHECK-CPA-O0-NEXT:    add x8, x8, :lo12:array2
-; CHECK-CPA-O0-NEXT:    addpt x11, x8, x11
-; CHECK-CPA-O0-NEXT:    msubpt x0, x9, x10, x11
-; CHECK-CPA-O0-NEXT:    mov w9, #48 // =0x30
-; CHECK-CPA-O0-NEXT:    mov w2, w9
+; CHECK-CPA-O0-NEXT:    mov w9, #288 // =0x120
+; CHECK-CPA-O0-NEXT:    // kill: def $x9 killed $w9
+; CHECK-CPA-O0-NEXT:    addpt x10, x8, x9
 ; CHECK-CPA-O0-NEXT:    mov w9, #96 // =0x60
 ; CHECK-CPA-O0-NEXT:    // kill: def $x9 killed $w9
 ; CHECK-CPA-O0-NEXT:    addpt x1, x8, x9
+; CHECK-CPA-O0-NEXT:    mov w8, #48 // =0x30
+; CHECK-CPA-O0-NEXT:    mov w2, w8
+; CHECK-CPA-O0-NEXT:    // implicit-def: $x8
+; CHECK-CPA-O0-NEXT:    mov w8, w0
+; CHECK-CPA-O0-NEXT:    sxtw x9, w8
+; CHECK-CPA-O0-NEXT:    mov w8, #48 // =0x30
+; CHECK-CPA-O0-NEXT:    // kill: def $x8 killed $w8
+; CHECK-CPA-O0-NEXT:    msubpt x0, x8, x9, x10
 ; CHECK-CPA-O0-NEXT:    b memcpy
 ;
 ; CHECK-CPA-O3-LABEL: msubpt1:
@@ -148,19 +148,19 @@ define void @msubpt1(i32 %index, i32 %elem) {
 ;
 ; CHECK-NOCPA-O0-LABEL: msubpt1:
 ; CHECK-NOCPA-O0:       // %bb.0: // %entry
-; CHECK-NOCPA-O0-NEXT:    // implicit-def: $x8
-; CHECK-NOCPA-O0-NEXT:    mov w8, w0
-; CHECK-NOCPA-O0-NEXT:    sxtw x8, w8
-; CHECK-NOCPA-O0-NEXT:    mov w9, #48 // =0x30
-; CHECK-NOCPA-O0-NEXT:    // kill: def $x9 killed $w9
-; CHECK-NOCPA-O0-NEXT:    mneg x10, x8, x9
-; CHECK-NOCPA-O0-NEXT:    adrp x8, array2
-; CHECK-NOCPA-O0-NEXT:    add x8, x8, :lo12:array2
-; CHECK-NOCPA-O0-NEXT:    add x9, x8, #288
-; CHECK-NOCPA-O0-NEXT:    add x0, x9, x10
+; CHECK-NOCPA-O0-NEXT:    adrp x9, array2
+; CHECK-NOCPA-O0-NEXT:    add x9, x9, :lo12:array2
+; CHECK-NOCPA-O0-NEXT:    add x8, x9, #288
+; CHECK-NOCPA-O0-NEXT:    add x1, x9, #96
 ; CHECK-NOCPA-O0-NEXT:    mov w9, #48 // =0x30
 ; CHECK-NOCPA-O0-NEXT:    mov w2, w9
-; CHECK-NOCPA-O0-NEXT:    add x1, x8, #96
+; CHECK-NOCPA-O0-NEXT:    // implicit-def: $x9
+; CHECK-NOCPA-O0-NEXT:    mov w9, w0
+; CHECK-NOCPA-O0-NEXT:    sxtw x9, w9
+; CHECK-NOCPA-O0-NEXT:    mov w10, #48 // =0x30
+; CHECK-NOCPA-O0-NEXT:    // kill: def $x10 killed $w10
+; CHECK-NOCPA-O0-NEXT:    mneg x9, x9, x10
+; CHECK-NOCPA-O0-NEXT:    add x0, x8, x9
 ; CHECK-NOCPA-O0-NEXT:    b memcpy
 ;
 ; CHECK-NOCPA-O3-LABEL: msubpt1:
@@ -190,14 +190,14 @@ entry:
 define void @subpt1(i32 %index, i32 %elem) {
 ; CHECK-CPA-O0-LABEL: subpt1:
 ; CHECK-CPA-O0:       // %bb.0: // %entry
-; CHECK-CPA-O0-NEXT:    mov w8, #-16 // =0xfffffff0
-; CHECK-CPA-O0-NEXT:    smull x9, w0, w8
-; CHECK-CPA-O0-NEXT:    adrp x8, array
-; CHECK-CPA-O0-NEXT:    add x8, x8, :lo12:array
-; CHECK-CPA-O0-NEXT:    ldr q0, [x8, #32]
-; CHECK-CPA-O0-NEXT:    mov w10, #96 // =0x60
-; CHECK-CPA-O0-NEXT:    // kill: def $x10 killed $w10
-; CHECK-CPA-O0-NEXT:    addpt x8, x8, x10
+; CHECK-CPA-O0-NEXT:    adrp x10, array
+; CHECK-CPA-O0-NEXT:    add x10, x10, :lo12:array
+; CHECK-CPA-O0-NEXT:    mov w8, #96 // =0x60
+; CHECK-CPA-O0-NEXT:    // kill: def $x8 killed $w8
+; CHECK-CPA-O0-NEXT:    addpt x8, x10, x8
+; CHECK-CPA-O0-NEXT:    mov w9, #-16 // =0xfffffff0
+; CHECK-CPA-O0-NEXT:    smull x9, w0, w9
+; CHECK-CPA-O0-NEXT:    ldr q0, [x10, #32]
 ; CHECK-CPA-O0-NEXT:    str q0, [x8, x9, lsl #4]
 ; CHECK-CPA-O0-NEXT:    ret
 ;
@@ -214,12 +214,12 @@ define void @subpt1(i32 %index, i32 %elem) {
 ;
 ; CHECK-NOCPA-O0-LABEL: subpt1:
 ; CHECK-NOCPA-O0:       // %bb.0: // %entry
-; CHECK-NOCPA-O0-NEXT:    mov w8, #-16 // =0xfffffff0
-; CHECK-NOCPA-O0-NEXT:    smull x9, w0, w8
-; CHECK-NOCPA-O0-NEXT:    adrp x8, array
-; CHECK-NOCPA-O0-NEXT:    add x8, x8, :lo12:array
-; CHECK-NOCPA-O0-NEXT:    ldr q0, [x8, #32]
-; CHECK-NOCPA-O0-NEXT:    add x8, x8, #96
+; CHECK-NOCPA-O0-NEXT:    adrp x10, array
+; CHECK-NOCPA-O0-NEXT:    add x10, x10, :lo12:array
+; CHECK-NOCPA-O0-NEXT:    add x8, x10, #96
+; CHECK-NOCPA-O0-NEXT:    mov w9, #-16 // =0xfffffff0
+; CHECK-NOCPA-O0-NEXT:    smull x9, w0, w9
+; CHECK-NOCPA-O0-NEXT:    ldr q0, [x10, #32]
 ; CHECK-NOCPA-O0-NEXT:    str q0, [x8, x9, lsl #4]
 ; CHECK-NOCPA-O0-NEXT:    ret
 ;
@@ -244,14 +244,14 @@ entry:
 define void @subpt2(i32 %index, i32 %elem) {
 ; CHECK-CPA-O0-LABEL: subpt2:
 ; CHECK-CPA-O0:       // %bb.0: // %entry
-; CHECK-CPA-O0-NEXT:    mov x8, xzr
-; CHECK-CPA-O0-NEXT:    subs x9, x8, w0, sxtw
-; CHECK-CPA-O0-NEXT:    adrp x8, array
-; CHECK-CPA-O0-NEXT:    add x8, x8, :lo12:array
-; CHECK-CPA-O0-NEXT:    ldr q0, [x8, #32]
-; CHECK-CPA-O0-NEXT:    mov w10, #96 // =0x60
-; CHECK-CPA-O0-NEXT:    // kill: def $x10 killed $w10
-; CHECK-CPA-O0-NEXT:    addpt x8, x8, x10
+; CHECK-CPA-O0-NEXT:    mov x9, xzr
+; CHECK-CPA-O0-NEXT:    adrp x10, array
+; CHECK-CPA-O0-NEXT:    add x10, x10, :lo12:array
+; CHECK-CPA-O0-NEXT:    mov w8, #96 // =0x60
+; CHECK-CPA-O0-NEXT:    // kill: def $x8 killed $w8
+; CHECK-CPA-O0-NEXT:    addpt x8, x10, x8
+; CHECK-CPA-O0-NEXT:    subs x9, x9, w0, sxtw
+; CHECK-CPA-O0-NEXT:    ldr q0, [x10, #32]
 ; CHECK-CPA-O0-NEXT:    str q0, [x8, x9, lsl #4]
 ; CHECK-CPA-O0-NEXT:    ret
 ;
@@ -268,12 +268,12 @@ define void @subpt2(i32 %index, i32 %elem) {
 ;
 ; CHECK-NOCPA-O0-LABEL: subpt2:
 ; CHECK-NOCPA-O0:       // %bb.0: // %entry
-; CHECK-NOCPA-O0-NEXT:    mov x8, xzr
-; CHECK-NOCPA-O0-NEXT:    subs x9, x8, w0, sxtw
-; CHECK-NOCPA-O0-NEXT:    adrp x8, array
-; CHECK-NOCPA-O0-NEXT:    add x8, x8, :lo12:array
-; CHECK-NOCPA-O0-NEXT:    ldr q0, [x8, #32]
-; CHECK-NOCPA-O0-NEXT:    add x8, x8, #96
+; CHECK-NOCPA-O0-NEXT:    mov x9, xzr
+; CHECK-NOCPA-O0-NEXT:    adrp x10, array
+; CHECK-NOCPA-O0-NEXT:    add x10, x10, :lo12:array
+; CHECK-NOCPA-O0-NEXT:    add x8, x10, #96
+; CHECK-NOCPA-O0-NEXT:    subs x9, x9, w0, sxtw
+; CHECK-NOCPA-O0-NEXT:    ldr q0, [x10, #32]
 ; CHECK-NOCPA-O0-NEXT:    str q0, [x8, x9, lsl #4]
 ; CHECK-NOCPA-O0-NEXT:    ret
 ;
@@ -644,31 +644,35 @@ entry:
 define hidden void @multidim() {
 ; CHECK-CPA-O0-LABEL: multidim:
 ; CHECK-CPA-O0:       // %bb.0: // %entry
-; CHECK-CPA-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
-; CHECK-CPA-O0-NEXT:    .cfi_def_cfa_offset 16
+; CHECK-CPA-O0-NEXT:    sub sp, sp, #32
+; CHECK-CPA-O0-NEXT:    str x30, [sp, #16] // 8-byte Spill
+; CHECK-CPA-O0-NEXT:    .cfi_def_cfa_offset 32
 ; CHECK-CPA-O0-NEXT:    .cfi_offset w30, -16
-; CHECK-CPA-O0-NEXT:    adrp x8, b
-; CHECK-CPA-O0-NEXT:    ldrh w9, [x8, :lo12:b]
-; CHECK-CPA-O0-NEXT:    mov w10, w9
-; CHECK-CPA-O0-NEXT:    ldrh w8, [x8, :lo12:b]
-; CHECK-CPA-O0-NEXT:    add w9, w8, #1
-; CHECK-CPA-O0-NEXT:    mov w8, #2 // =0x2
-; CHECK-CPA-O0-NEXT:    mov w11, w8
+; CHECK-CPA-O0-NEXT:    adrp x9, b
 ; CHECK-CPA-O0-NEXT:    adrp x8, a
 ; CHECK-CPA-O0-NEXT:    add x8, x8, :lo12:a
-; CHECK-CPA-O0-NEXT:    addpt x8, x8, x11
+; CHECK-CPA-O0-NEXT:    mov w10, #2 // =0x2
+; CHECK-CPA-O0-NEXT:    // kill: def $x10 killed $w10
+; CHECK-CPA-O0-NEXT:    addpt x8, x8, x10
+; CHECK-CPA-O0-NEXT:    adrp x10, .L.str
+; CHECK-CPA-O0-NEXT:    add x10, x10, :lo12:.L.str
+; CHECK-CPA-O0-NEXT:    str x10, [sp, #8] // 8-byte Spill
+; CHECK-CPA-O0-NEXT:    ldrh w10, [x9, :lo12:b]
+; CHECK-CPA-O0-NEXT:    // kill: def $x10 killed $w10
 ; CHECK-CPA-O0-NEXT:    addpt x8, x8, x10, lsl #1
+; CHECK-CPA-O0-NEXT:    ldrh w9, [x9, :lo12:b]
+; CHECK-CPA-O0-NEXT:    add w9, w9, #1
 ; CHECK-CPA-O0-NEXT:    ldrb w8, [x8, w9, sxtw]
 ; CHECK-CPA-O0-NEXT:    uxtb w8, w8
 ; CHECK-CPA-O0-NEXT:    cbz w8, .LBB14_2
 ; CHECK-CPA-O0-NEXT:    b .LBB14_1
 ; CHECK-CPA-O0-NEXT:  .LBB14_1:
-; CHECK-CPA-O0-NEXT:    adrp x0, .L.str
-; CHECK-CPA-O0-NEXT:    add x0, x0, :lo12:.L.str
+; CHECK-CPA-O0-NEXT:    ldr x0, [sp, #8] // 8-byte Reload
 ; CHECK-CPA-O0-NEXT:    bl printf
 ; CHECK-CPA-O0-NEXT:    b .LBB14_2
 ; CHECK-CPA-O0-NEXT:  .LBB14_2:
-; CHECK-CPA-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
+; CHECK-CPA-O0-NEXT:    ldr x30, [sp, #16] // 8-byte Reload
+; CHECK-CPA-O0-NEXT:    add sp, sp, #32
 ; CHECK-CPA-O0-NEXT:    ret
 ;
 ; CHECK-CPA-O3-LABEL: multidim:
@@ -695,29 +699,33 @@ define hidden void @multidim() {
 ;
 ; CHECK-NOCPA-O0-LABEL: multidim:
 ; CHECK-NOCPA-O0:       // %bb.0: // %entry
-; CHECK-NOCPA-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
-; CHECK-NOCPA-O0-NEXT:    .cfi_def_cfa_offset 16
+; CHECK-NOCPA-O0-NEXT:    sub sp, sp, #32
+; CHECK-NOCPA-O0-NEXT:    str x30, [sp, #16] // 8-byte Spill
+; CHECK-NOCPA-O0-NEXT:    .cfi_def_cfa_offset 32
 ; CHECK-NOCPA-O0-NEXT:    .cfi_offset w30, -16
-; CHECK-NOCPA-O0-NEXT:    adrp x8, b
-; CHECK-NOCPA-O0-NEXT:    ldrh w9, [x8, :lo12:b]
-; CHECK-NOCPA-O0-NEXT:    mov w10, w9
-; CHECK-NOCPA-O0-NEXT:    ldrh w8, [x8, :lo12:b]
-; CHECK-NOCPA-O0-NEXT:    add w9, w8, #1
+; CHECK-NOCPA-O0-NEXT:    adrp x9, b
 ; CHECK-NOCPA-O0-NEXT:    adrp x8, a
 ; CHECK-NOCPA-O0-NEXT:    add x8, x8, :lo12:a
 ; CHECK-NOCPA-O0-NEXT:    add x8, x8, #2
+; CHECK-NOCPA-O0-NEXT:    adrp x10, .L.str
+; CHECK-NOCPA-O0-NEXT:    add x10, x10, :lo12:.L.str
+; CHECK-NOCPA-O0-NEXT:    str x10, [sp, #8] // 8-byte Spill
+; CHECK-NOCPA-O0-NEXT:    ldrh w10, [x9, :lo12:b]
+; CHECK-NOCPA-O0-NEXT:    // kill: def $x10 killed $w10
 ; CHECK-NOCPA-O0-NEXT:    add x8, x8, x10, lsl #1
+; CHECK-NOCPA-O0-NEXT:    ldrh w9, [x9, :lo12:b]
+; CHECK-NOCPA-O0-NEXT:    add w9, w9, #1
 ; CHECK-NOCPA-O0-NEXT:    ldrb w8, [x8, w9, sxtw]
 ; CHECK-NOCPA-O0-NEXT:    uxtb w8, w8
 ; CHECK-NOCPA-O0-NEXT:    cbz w8, .LBB14_2
 ; CHECK-NOCPA-O0-NEXT:    b .LBB14_1
 ; CHECK-NOCPA-O0-NEXT:  .LBB14_1:
-; CHECK-NOCPA-O0-NEXT:    adrp x0, .L.str
-; CHECK-NOCPA-O0-NEXT:    add x0, x0, :lo12:.L.str
+; CHECK-NOCPA-O0-NEXT:    ldr x0, [sp, #8] // 8-byte Reload
 ; CHECK-NOCPA-O0-NEXT:    bl printf
 ; CHECK-NOCPA-O0-NEXT:    b .LBB14_2
 ; CHECK-NOCPA-O0-NEXT:  .LBB14_2:
-; CHECK-NOCPA-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
+; CHECK-NOCPA-O0-NEXT:    ldr x30, [sp, #16] // 8-byte Reload
+; CHECK-NOCPA-O0-NEXT:    add sp, sp, #32
 ; CHECK-NOCPA-O0-NEXT:    ret
 ;
 ; CHECK-NOCPA-O3-LABEL: multidim:
diff --git a/llvm/test/CodeGen/AArch64/phi-dbg.ll b/llvm/test/CodeGen/AArch64/phi-dbg.ll
index 4f7c005f8026f..28465c3a556a2 100644
--- a/llvm/test/CodeGen/AArch64/phi-dbg.ll
+++ b/llvm/test/CodeGen/AArch64/phi-dbg.ll
@@ -28,8 +28,8 @@ bb2:
   call void @llvm.dbg.value(metadata i32 12, i64 0, metadata !15, metadata !13), !dbg !16
   br label %bb3, !dbg !20
 
-; CHECK: bb.2.bb2:
 ; CHECK:  [[REG0:%[0-9]+]]:gpr32 = MOVi32imm 12
+; CHECK: bb.2.bb2:
 ; CHECK:  [[PHIREG:%[0-9]+]]:gpr32 = COPY [[REG0]]
 
 bb3:
diff --git a/llvm/test/CodeGen/AArch64/popcount.ll b/llvm/test/CodeGen/AArch64/popcount.ll
index 5a759b0be06ac..85242a1d78f39 100644
--- a/llvm/test/CodeGen/AArch64/popcount.ll
+++ b/llvm/test/CodeGen/AArch64/popcount.ll
@@ -772,26 +772,27 @@ Entry:
 define i32 @ctpop_into_extract(ptr %p) {
 ; CHECKO0-LABEL: ctpop_into_extract:
 ; CHECKO0:       // %bb.0:
-; CHECKO0-NEXT:    mov w8, #-1 // =0xffffffff
+; CHECKO0-NEXT:    mov x8, x0
+; CHECKO0-NEXT:    mov w9, #-1 // =0xffffffff
 ; CHECKO0-NEXT:    // implicit-def: $d2
-; CHECKO0-NEXT:    fmov s2, w8
-; CHECKO0-NEXT:    ldr d0, [x0]
+; CHECKO0-NEXT:    fmov s2, w9
+; CHECKO0-NEXT:    mov w0, wzr
+; CHECKO0-NEXT:    ldr d0, [x8]
 ; CHECKO0-NEXT:    fmov s1, s0
-; CHECKO0-NEXT:    fmov w8, s1
-; CHECKO0-NEXT:    fmov s1, w8
+; CHECKO0-NEXT:    fmov w9, s1
+; CHECKO0-NEXT:    fmov s1, w9
 ; CHECKO0-NEXT:    // kill: def $d1 killed $s1
 ; CHECKO0-NEXT:    cnt v1.8b, v1.8b
 ; CHECKO0-NEXT:    uaddlv h1, v1.8b
 ; CHECKO0-NEXT:    // kill: def $q1 killed $h1
 ; CHECKO0-NEXT:    // kill: def $s1 killed $s1 killed $q1
-; CHECKO0-NEXT:    fmov w8, s1
+; CHECKO0-NEXT:    fmov w9, s1
 ; CHECKO0-NEXT:    // implicit-def: $q1
 ; CHECKO0-NEXT:    fmov d1, d2
-; CHECKO0-NEXT:    mov v1.s[1], w8
+; CHECKO0-NEXT:    mov v1.s[1], w9
 ; CHECKO0-NEXT:    // kill: def $d1 killed $d1 killed $q1
 ; CHECKO0-NEXT:    sub v0.2s, v0.2s, v1.2s
-; CHECKO0-NEXT:    str d0, [x0]
-; CHECKO0-NEXT:    mov w0, wzr
+; CHECKO0-NEXT:    str d0, [x8]
 ; CHECKO0-NEXT:    ret
 ;
 ; NEON-LABEL: ctpop_into_extract:
@@ -871,26 +872,27 @@ define i32 @ctpop_into_extract(ptr %p) {
 ;
 ; GISELO0-LABEL: ctpop_into_extract:
 ; GISELO0:       // %bb.0:
-; GISELO0-NEXT:    mov w8, #-1 // =0xffffffff
+; GISELO0-NEXT:    mov x8, x0
+; GISELO0-NEXT:    mov w9, #-1 // =0xffffffff
 ; GISELO0-NEXT:    // implicit-def: $d2
-; GISELO0-NEXT:    fmov s2, w8
-; GISELO0-NEXT:    ldr d0, [x0]
+; GISELO0-NEXT:    fmov s2, w9
+; GISELO0-NEXT:    mov w0, wzr
+; GISELO0-NEXT:    ldr d0, [x8]
 ; GISELO0-NEXT:    fmov s1, s0
-; GISELO0-NEXT:    fmov w8, s1
-; GISELO0-NEXT:    fmov s1, w8
+; GISELO0-NEXT:    fmov w9, s1
+; GISELO0-NEXT:    fmov s1, w9
 ; GISELO0-NEXT:    // kill: def $d1 killed $s1
 ; GISELO0-NEXT:    cnt v1.8b, v1.8b
 ; GISELO0-NEXT:    uaddlv h1, v1.8b
 ; GISELO0-NEXT:    // kill: def $q1 killed $h1
 ; GISELO0-NEXT:    // kill: def $s1 killed $s1 killed $q1
-; GISELO0-NEXT:    fmov w8, s1
+; GISELO0-NEXT:    fmov w9, s1
 ; GISELO0-NEXT:    // implicit-def: $q1
 ; GISELO0-NEXT:    fmov d1, d2
-; GISELO0-NEXT:    mov v1.s[1], w8
+; GISELO0-NEXT:    mov v1.s[1], w9
 ; GISELO0-NEXT:    // kill: def $d1 killed $d1 killed $q1
 ; GISELO0-NEXT:    sub v0.2s, v0.2s, v1.2s
-; GISELO0-NEXT:    str d0, [x0]
-; GISELO0-NEXT:    mov w0, wzr
+; GISELO0-NEXT:    str d0, [x8]
 ; GISELO0-NEXT:    ret
   %1 = load <2 x i32>, ptr %p, align 4
   %2 = extractelement <2 x i32> %1, i64 0
diff --git a/llvm/test/CodeGen/AArch64/pr92062.ll b/llvm/test/CodeGen/AArch64/pr92062.ll
index 6111ee0fbe18f..c6f8922cc2a48 100644
--- a/llvm/test/CodeGen/AArch64/pr92062.ll
+++ b/llvm/test/CodeGen/AArch64/pr92062.ll
@@ -10,8 +10,8 @@ define void @foo() {
 ; CHECK:       // %bb.0: // %bb
 ; CHECK-NEXT:    adrp x8, :got:p
 ; CHECK-NEXT:    ldr x8, [x8, :got_lo12:p]
-; CHECK-NEXT:    ldr x8, [x8]
 ; CHECK-NEXT:    mov x9, xzr
+; CHECK-NEXT:    ldr x8, [x8]
 ; CHECK-NEXT:    str x8, [x9]
 ; CHECK-NEXT:    ret
 bb:
diff --git a/llvm/test/CodeGen/AArch64/vararg.ll b/llvm/test/CodeGen/AArch64/vararg.ll
index 291eee2ddf706..33ac571b6d4c1 100644
--- a/llvm/test/CodeGen/AArch64/vararg.ll
+++ b/llvm/test/CodeGen/AArch64/vararg.ll
@@ -86,6 +86,8 @@ define i64 @vararg(...) #0 {
 ; CHECK-GI-NEXT:    str q5, [sp, #96]
 ; CHECK-GI-NEXT:    str q6, [sp, #112]
 ; CHECK-GI-NEXT:    str q7, [sp, #128]
+; CHECK-GI-NEXT:    mov w8, #1 // =0x1
+; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    add x9, sp, #8
 ; CHECK-GI-NEXT:    add x8, x29, #16
 ; CHECK-GI-NEXT:    str x8, [x9]
@@ -97,8 +99,6 @@ define i64 @vararg(...) #0 {
 ; CHECK-GI-NEXT:    str w8, [x9, #24]
 ; CHECK-GI-NEXT:    mov w8, #-128 // =0xffffff80
 ; CHECK-GI-NEXT:    str w8, [x9, #28]
-; CHECK-GI-NEXT:    mov w8, #1 // =0x1
-; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    .cfi_def_cfa wsp, 224
 ; CHECK-GI-NEXT:    ldp x29, x30, [sp, #208] // 16-byte Folded Reload
 ; CHECK-GI-NEXT:    add sp, sp, #224
@@ -171,6 +171,8 @@ define i64 @vararg_many_gpr(i64 %a1, i64 %a2, i64 %a3, i64 %a4, i64 %a5, i64 %a6
 ; CHECK-GI-NEXT:    str q5, [sp, #96]
 ; CHECK-GI-NEXT:    str q6, [sp, #112]
 ; CHECK-GI-NEXT:    str q7, [sp, #128]
+; CHECK-GI-NEXT:    mov w8, #1 // =0x1
+; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    add x9, sp, #8
 ; CHECK-GI-NEXT:    add x8, x29, #16
 ; CHECK-GI-NEXT:    str x8, [x9]
@@ -182,8 +184,6 @@ define i64 @vararg_many_gpr(i64 %a1, i64 %a2, i64 %a3, i64 %a4, i64 %a5, i64 %a6
 ; CHECK-GI-NEXT:    str w8, [x9, #24]
 ; CHECK-GI-NEXT:    mov w8, #-128 // =0xffffff80
 ; CHECK-GI-NEXT:    str w8, [x9, #28]
-; CHECK-GI-NEXT:    mov w8, #1 // =0x1
-; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    .cfi_def_cfa wsp, 176
 ; CHECK-GI-NEXT:    ldp x29, x30, [sp, #160] // 16-byte Folded Reload
 ; CHECK-GI-NEXT:    add sp, sp, #176
@@ -256,6 +256,8 @@ define i64 @vararg_many_float(float %a1, float %a2, float %a3, float %a4, float
 ; CHECK-GI-NEXT:    str x6, [sp, #80]
 ; CHECK-GI-NEXT:    str x7, [sp, #88]
 ; CHECK-GI-NEXT:    str q7, [sp, #16]
+; CHECK-GI-NEXT:    mov w8, #1 // =0x1
+; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    add x9, sp, #8
 ; CHECK-GI-NEXT:    add x8, x29, #16
 ; CHECK-GI-NEXT:    str x8, [x9]
@@ -267,8 +269,6 @@ define i64 @vararg_many_float(float %a1, float %a2, float %a3, float %a4, float
 ; CHECK-GI-NEXT:    str w8, [x9, #24]
 ; CHECK-GI-NEXT:    mov w8, #-16 // =0xfffffff0
 ; CHECK-GI-NEXT:    str w8, [x9, #28]
-; CHECK-GI-NEXT:    mov w8, #1 // =0x1
-; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    .cfi_def_cfa wsp, 112
 ; CHECK-GI-NEXT:    ldp x29, x30, [sp, #96] // 16-byte Folded Reload
 ; CHECK-GI-NEXT:    add sp, sp, #112
@@ -351,6 +351,8 @@ define i64 @gpr1_fpr1(i32 %i, float %f, ...) #0 {
 ; CHECK-GI-NEXT:    str q5, [sp, #80]
 ; CHECK-GI-NEXT:    str q6, [sp, #96]
 ; CHECK-GI-NEXT:    str q7, [sp, #112]
+; CHECK-GI-NEXT:    mov w8, #1 // =0x1
+; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    add x9, sp, #8
 ; CHECK-GI-NEXT:    add x8, x29, #16
 ; CHECK-GI-NEXT:    str x8, [x9]
@@ -362,8 +364,6 @@ define i64 @gpr1_fpr1(i32 %i, float %f, ...) #0 {
 ; CHECK-GI-NEXT:    str w8, [x9, #24]
 ; CHECK-GI-NEXT:    mov w8, #-112 // =0xffffff90
 ; CHECK-GI-NEXT:    str w8, [x9, #28]
-; CHECK-GI-NEXT:    mov w8, #1 // =0x1
-; CHECK-GI-NEXT:    mov w0, w8
 ; CHECK-GI-NEXT:    .cfi_def_cfa wsp, 208
 ; CHECK-GI-NEXT:    ldp x29, x30, [sp, #192] // 16-byte Folded Reload
 ; CHECK-GI-NEXT:    add sp, sp, #208
diff --git a/llvm/test/CodeGen/AArch64/win64_vararg_float.ll b/llvm/test/CodeGen/AArch64/win64_vararg_float.ll
index a99b29fa3bef9..d3f9b45c6b687 100644
--- a/llvm/test/CodeGen/AArch64/win64_vararg_float.ll
+++ b/llvm/test/CodeGen/AArch64/win64_vararg_float.ll
@@ -118,12 +118,12 @@ define void @call_f_va() nounwind {
 ;
 ; GISEL-LABEL: call_f_va:
 ; GISEL:       // %bb.0: // %entry
-; GISEL-NEXT:    fmov s0, #1.00000000
-; GISEL-NEXT:    fmov w0, s0
+; GISEL-NEXT:    fmov s1, #1.00000000
 ; GISEL-NEXT:    mov w1, #2 // =0x2
 ; GISEL-NEXT:    fmov d0, #3.00000000
-; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    mov w3, #4 // =0x4
+; GISEL-NEXT:    fmov w0, s1
+; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    b other_f_va_fn
 entry:
   tail call void (float, i32, ...) @other_f_va_fn(float 1.000000e+00, i32 2, double 3.000000e+00, i32 4)
@@ -151,12 +151,12 @@ define void @call_d_va() nounwind {
 ;
 ; GISEL-LABEL: call_d_va:
 ; GISEL:       // %bb.0: // %entry
-; GISEL-NEXT:    fmov d0, #1.00000000
-; GISEL-NEXT:    fmov x0, d0
+; GISEL-NEXT:    fmov d1, #1.00000000
 ; GISEL-NEXT:    mov w1, #2 // =0x2
 ; GISEL-NEXT:    fmov d0, #3.00000000
-; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    mov w3, #4 // =0x4
+; GISEL-NEXT:    fmov x0, d1
+; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    b other_d_va_fn
 entry:
   tail call void (double, i32, ...) @other_d_va_fn(double 1.000000e+00, i32 2, double 3.000000e+00, i32 4)
diff --git a/llvm/test/CodeGen/AArch64/win64_vararg_float_cc.ll b/llvm/test/CodeGen/AArch64/win64_vararg_float_cc.ll
index 029d2da43b691..049cee9341417 100644
--- a/llvm/test/CodeGen/AArch64/win64_vararg_float_cc.ll
+++ b/llvm/test/CodeGen/AArch64/win64_vararg_float_cc.ll
@@ -138,12 +138,12 @@ define void @call_f_va() nounwind {
 ; GISEL-LABEL: call_f_va:
 ; GISEL:       // %bb.0: // %entry
 ; GISEL-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
-; GISEL-NEXT:    fmov s0, #1.00000000
-; GISEL-NEXT:    fmov w0, s0
+; GISEL-NEXT:    fmov s1, #1.00000000
 ; GISEL-NEXT:    mov w1, #2 // =0x2
 ; GISEL-NEXT:    fmov d0, #3.00000000
-; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    mov w3, #4 // =0x4
+; GISEL-NEXT:    fmov w0, s1
+; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    bl other_f_va_fn
 ; GISEL-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
 ; GISEL-NEXT:    ret
@@ -180,12 +180,12 @@ define void @call_d_va() nounwind {
 ; GISEL-LABEL: call_d_va:
 ; GISEL:       // %bb.0: // %entry
 ; GISEL-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
-; GISEL-NEXT:    fmov d0, #1.00000000
-; GISEL-NEXT:    fmov x0, d0
+; GISEL-NEXT:    fmov d1, #1.00000000
 ; GISEL-NEXT:    mov w1, #2 // =0x2
 ; GISEL-NEXT:    fmov d0, #3.00000000
-; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    mov w3, #4 // =0x4
+; GISEL-NEXT:    fmov x0, d1
+; GISEL-NEXT:    fmov x2, d0
 ; GISEL-NEXT:    bl other_d_va_fn
 ; GISEL-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
 ; GISEL-NEXT:    ret
diff --git a/llvm/test/Other/print-changed-machine.ll b/llvm/test/Other/print-changed-machine.ll
index 98ba95d8af626..4e28beff51d1e 100644
--- a/llvm/test/Other/print-changed-machine.ll
+++ b/llvm/test/Other/print-changed-machine.ll
@@ -22,7 +22,7 @@
 
 ; QUIET:         *** IR Dump After IRTranslator (irtranslator) on foo ***
 ; QUIET-NOT:     ***
-; QUIET:         *** IR Dump After Localizer (localizer) on foo ***
+; QUIET:         *** IR Dump After Legalizer (legalizer) on foo ***
 
 ; RUN: llc -filetype=null -mtriple=aarch64 -O0 -print-changed -filter-passes=irtranslator,legalizer %s 2>&1 | \
 ; RUN:   FileCheck %s --check-prefixes=VERBOSE-FILTER



More information about the llvm-commits mailing list