[llvm] [X86] Rewrite MOVUPD to MOVUPS in X86FixupInstTuning (PR #217676)

Wiktor Ludwichowski via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 24 06:52:08 PDT 2026


https://github.com/AlnandoFeronso updated https://github.com/llvm/llvm-project/pull/217676

>From 11a5d309cea4e8d994e06eb77a0766c71d131c32 Mon Sep 17 00:00:00 2001
From: "Ludwichowski, Wiktor" <wiktor.ludwichowski at intel.com>
Date: Thu, 20 Aug 2026 16:20:56 +0200
Subject: [PATCH 1/2] Add pass processing movupd to movups

---
 llvm/lib/Target/X86/X86FixupInstTuning.cpp   | 18 ++++++
 llvm/test/CodeGen/X86/inst-tuning-movupd.mir | 64 ++++++++++++++++++++
 2 files changed, 82 insertions(+)
 create mode 100644 llvm/test/CodeGen/X86/inst-tuning-movupd.mir

diff --git a/llvm/lib/Target/X86/X86FixupInstTuning.cpp b/llvm/lib/Target/X86/X86FixupInstTuning.cpp
index 621fd35a03cd5..b21846f5df004 100644
--- a/llvm/lib/Target/X86/X86FixupInstTuning.cpp
+++ b/llvm/lib/Target/X86/X86FixupInstTuning.cpp
@@ -255,6 +255,18 @@ bool X86FixupInstTuningImpl::processInstruction(
     return ProcessUNPCKToIntDomain(NewOpc);
   };
 
+  // MOVUPS takes 1 less byte of code size. Only replace when
+  // there is no move domain-delay penalty on the target.
+  auto ProcessMOVUPDToMOVUPS = [&](unsigned NewOpc) -> bool {
+    if (!ST->hasNoDomainDelayMov() ||
+        !NewOpcPreferable(NewOpc, /*ReplaceInTie*/ true))
+      return false;
+    LLVM_DEBUG(dbgs() << "Replacing: " << MI);
+    MI.setDesc(TII->get(NewOpc));
+    LLVM_DEBUG(dbgs() << "     With: " << MI);
+    return true;
+  };
+
   // If we're permuting the lower halves of the 256-bit registers, use a
   // subvector insertion instead.
   auto ProcessVPERM2x128ToVINSERT128 = [&](unsigned InsertOpc) -> bool {
@@ -697,6 +709,12 @@ bool X86FixupInstTuningImpl::processInstruction(
     return ProcessShiftLeftToAdd(X86::VPADDQZ256rr);
   case X86::VPSLLQZri:
     return ProcessShiftLeftToAdd(X86::VPADDQZrr);
+  case X86::MOVUPDrr:
+    return ProcessMOVUPDToMOVUPS(X86::MOVUPSrr);
+  case X86::MOVUPDrm:
+    return ProcessMOVUPDToMOVUPS(X86::MOVUPSrm);
+  case X86::MOVUPDmr:
+    return ProcessMOVUPDToMOVUPS(X86::MOVUPSmr);
 
   default:
     return false;
diff --git a/llvm/test/CodeGen/X86/inst-tuning-movupd.mir b/llvm/test/CodeGen/X86/inst-tuning-movupd.mir
new file mode 100644
index 0000000000000..916ebb8e94a01
--- /dev/null
+++ b/llvm/test/CodeGen/X86/inst-tuning-movupd.mir
@@ -0,0 +1,64 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc %s -mtriple=x86_64-- -mattr=+no-bypass-delay-mov -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefix=MOV
+# RUN: llc %s -mtriple=x86_64-- -mattr=-no-bypass-delay-mov -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefix=NODELAY
+
+---
+name:            movupd_rr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0
+    ; MOV-LABEL: name: movupd_rr
+    ; MOV: liveins: $xmm0
+    ; MOV-NEXT: {{  $}}
+    ; MOV-NEXT: renamable $xmm1 = MOVUPSrr killed renamable $xmm0
+    ; MOV-NEXT: RET64 implicit $xmm1
+    ;
+    ; NODELAY-LABEL: name: movupd_rr
+    ; NODELAY: liveins: $xmm0
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: renamable $xmm1 = MOVUPDrr killed renamable $xmm0
+    ; NODELAY-NEXT: RET64 implicit $xmm1
+    renamable $xmm1 = MOVUPDrr killed renamable $xmm0
+    RET64 implicit $xmm1
+...
+---
+name:            vmovupd_rr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0
+    ; MOV-LABEL: name: vmovupd_rr
+    ; MOV: liveins: $xmm0
+    ; MOV-NEXT: {{  $}}
+    ; MOV-NEXT: renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
+    ; MOV-NEXT: RET64 implicit $xmm1
+    ;
+    ; NODELAY-LABEL: name: vmovupd_rr
+    ; NODELAY: liveins: $xmm0
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
+    ; NODELAY-NEXT: RET64 implicit $xmm1
+    renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
+    RET64 implicit $xmm1
+...
+---
+name:            vmovupd_ymm
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $ymm0
+    ; MOV-LABEL: name: vmovupd_ymm
+    ; MOV: liveins: $ymm0
+    ; MOV-NEXT: {{  $}}
+    ; MOV-NEXT: renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
+    ; MOV-NEXT: RET64 implicit $ymm1
+    ;
+    ; NODELAY-LABEL: name: vmovupd_ymm
+    ; NODELAY: liveins: $ymm0
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
+    ; NODELAY-NEXT: RET64 implicit $ymm1
+    renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
+    RET64 implicit $ymm1
+...

>From 199d8b3f7478e93040e2937a4751b935d57b3bb2 Mon Sep 17 00:00:00 2001
From: "Ludwichowski, Wiktor" <wiktor.ludwichowski at intel.com>
Date: Mon, 24 Aug 2026 15:48:35 +0200
Subject: [PATCH 2/2] fiexed tests, added movapd case

---
 llvm/lib/Target/X86/X86FixupInstTuning.cpp    |  23 ++-
 llvm/test/CodeGen/X86/2011-10-21-widen-cmp.ll |   6 +-
 llvm/test/CodeGen/X86/break-false-dep.ll      |   4 +-
 llvm/test/CodeGen/X86/inst-tuning-movpd.mir   | 180 ++++++++++++++++++
 llvm/test/CodeGen/X86/inst-tuning-movupd.mir  |  64 -------
 llvm/test/CodeGen/X86/sink-hoist.ll           |   4 +-
 6 files changed, 202 insertions(+), 79 deletions(-)
 create mode 100644 llvm/test/CodeGen/X86/inst-tuning-movpd.mir
 delete mode 100644 llvm/test/CodeGen/X86/inst-tuning-movupd.mir

diff --git a/llvm/lib/Target/X86/X86FixupInstTuning.cpp b/llvm/lib/Target/X86/X86FixupInstTuning.cpp
index b21846f5df004..c8b0dbf597223 100644
--- a/llvm/lib/Target/X86/X86FixupInstTuning.cpp
+++ b/llvm/lib/Target/X86/X86FixupInstTuning.cpp
@@ -255,11 +255,12 @@ bool X86FixupInstTuningImpl::processInstruction(
     return ProcessUNPCKToIntDomain(NewOpc);
   };
 
-  // MOVUPS takes 1 less byte of code size. Only replace when
-  // there is no move domain-delay penalty on the target.
-  auto ProcessMOVUPDToMOVUPS = [&](unsigned NewOpc) -> bool {
-    if (!ST->hasNoDomainDelayMov() ||
-        !NewOpcPreferable(NewOpc, /*ReplaceInTie*/ true))
+  // MOVUPS/MOVAPS takes 1 less byte of code size. Only replace when
+  // there is no move domain-delay penalty on the target, or -Oz is set.
+  auto ProcessMOVPDToMOVPS = [&](unsigned NewOpc) -> bool {
+    assert(NewOpcPreferable(NewOpc) &&
+           "MOVUPS/MOVAPS should be preferred over MOVUPD/MOVAPD");
+    if (!ST->hasNoDomainDelayMov() && !MF.getFunction().hasMinSize())
       return false;
     LLVM_DEBUG(dbgs() << "Replacing: " << MI);
     MI.setDesc(TII->get(NewOpc));
@@ -710,11 +711,17 @@ bool X86FixupInstTuningImpl::processInstruction(
   case X86::VPSLLQZri:
     return ProcessShiftLeftToAdd(X86::VPADDQZrr);
   case X86::MOVUPDrr:
-    return ProcessMOVUPDToMOVUPS(X86::MOVUPSrr);
+    return ProcessMOVPDToMOVPS(X86::MOVUPSrr);
   case X86::MOVUPDrm:
-    return ProcessMOVUPDToMOVUPS(X86::MOVUPSrm);
+    return ProcessMOVPDToMOVPS(X86::MOVUPSrm);
   case X86::MOVUPDmr:
-    return ProcessMOVUPDToMOVUPS(X86::MOVUPSmr);
+    return ProcessMOVPDToMOVPS(X86::MOVUPSmr);
+  case X86::MOVAPDrr:
+    return ProcessMOVPDToMOVPS(X86::MOVAPSrr);
+  case X86::MOVAPDrm:
+    return ProcessMOVPDToMOVPS(X86::MOVAPSrm);
+  case X86::MOVAPDmr:
+    return ProcessMOVPDToMOVPS(X86::MOVAPSmr);
 
   default:
     return false;
diff --git a/llvm/test/CodeGen/X86/2011-10-21-widen-cmp.ll b/llvm/test/CodeGen/X86/2011-10-21-widen-cmp.ll
index f3f541af4bd13..87ef44a9408c0 100644
--- a/llvm/test/CodeGen/X86/2011-10-21-widen-cmp.ll
+++ b/llvm/test/CodeGen/X86/2011-10-21-widen-cmp.ll
@@ -23,11 +23,11 @@ entry:
 define void @cmp_2_doubles(<2 x double> %a, <2 x double> %b, <2 x double> %c) {
 ; CHECK-LABEL: cmp_2_doubles:
 ; CHECK:       # %bb.0: # %entry
-; CHECK-NEXT:    movapd %xmm0, %xmm3
+; CHECK-NEXT:    movaps %xmm0, %xmm3
 ; CHECK-NEXT:    cmpordpd %xmm2, %xmm2
-; CHECK-NEXT:    movapd %xmm2, %xmm0
+; CHECK-NEXT:    movaps %xmm2, %xmm0
 ; CHECK-NEXT:    blendvpd %xmm0, %xmm3, %xmm1
-; CHECK-NEXT:    movapd %xmm1, (%rax)
+; CHECK-NEXT:    movaps %xmm1, (%rax)
 ; CHECK-NEXT:    retq
 entry:
   %0 = fcmp oeq <2 x double> %c, %c
diff --git a/llvm/test/CodeGen/X86/break-false-dep.ll b/llvm/test/CodeGen/X86/break-false-dep.ll
index 6943622fac7f2..38199607ca6fd 100644
--- a/llvm/test/CodeGen/X86/break-false-dep.ll
+++ b/llvm/test/CodeGen/X86/break-false-dep.ll
@@ -1318,7 +1318,7 @@ define dso_local void @loopclearance2(ptr nocapture %y, ptr %x, double %c1, doub
 ; SSE-LINUX-NEXT:    leaq 1(%rax), %r8
 ; SSE-LINUX-NEXT:    xorps %xmm4, %xmm4
 ; SSE-LINUX-NEXT:    cvtsi2sd %r8, %xmm4
-; SSE-LINUX-NEXT:    movapd %xmm0, %xmm5
+; SSE-LINUX-NEXT:    movaps %xmm0, %xmm5
 ; SSE-LINUX-NEXT:    subsd %xmm4, %xmm5
 ; SSE-LINUX-NEXT:    mulsd %xmm1, %xmm5
 ; SSE-LINUX-NEXT:    leaq -1(%rcx), %r9
@@ -1390,7 +1390,7 @@ define dso_local void @loopclearance2(ptr nocapture %y, ptr %x, double %c1, doub
 ; SSE-WIN-NEXT:    leaq 1(%r8), %r10
 ; SSE-WIN-NEXT:    xorps %xmm4, %xmm4
 ; SSE-WIN-NEXT:    cvtsi2sd %r10, %xmm4
-; SSE-WIN-NEXT:    movapd %xmm2, %xmm5
+; SSE-WIN-NEXT:    movaps %xmm2, %xmm5
 ; SSE-WIN-NEXT:    subsd %xmm4, %xmm5
 ; SSE-WIN-NEXT:    mulsd %xmm3, %xmm5
 ; SSE-WIN-NEXT:    leaq -1(%r9), %r11
diff --git a/llvm/test/CodeGen/X86/inst-tuning-movpd.mir b/llvm/test/CodeGen/X86/inst-tuning-movpd.mir
new file mode 100644
index 0000000000000..1001d7ebeae5d
--- /dev/null
+++ b/llvm/test/CodeGen/X86/inst-tuning-movpd.mir
@@ -0,0 +1,180 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc %s -mtriple=x86_64-- -mattr=+no-bypass-delay-mov -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=CHECK,NODELAY
+# RUN: llc %s -mtriple=x86_64-- -mattr=-no-bypass-delay-mov -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=CHECK,DELAY
+
+---
+name:            movupd_rr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0
+    ; NODELAY-LABEL: name: movupd_rr
+    ; NODELAY: liveins: $xmm0
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: renamable $xmm1 = MOVUPSrr killed renamable $xmm0
+    ; NODELAY-NEXT: RET64 implicit $xmm1
+    ;
+    ; DELAY-LABEL: name: movupd_rr
+    ; DELAY: liveins: $xmm0
+    ; DELAY-NEXT: {{  $}}
+    ; DELAY-NEXT: renamable $xmm1 = MOVUPDrr killed renamable $xmm0
+    ; DELAY-NEXT: RET64 implicit $xmm1
+    renamable $xmm1 = MOVUPDrr killed renamable $xmm0
+    RET64 implicit $xmm1
+...
+---
+name:            movupd_rm
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; NODELAY-LABEL: name: movupd_rm
+    ; NODELAY: liveins: $rdi
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: renamable $xmm0 = MOVUPSrm killed renamable $rdi, 1, $noreg, 0, $noreg
+    ; NODELAY-NEXT: RET64 implicit $xmm0
+    ;
+    ; DELAY-LABEL: name: movupd_rm
+    ; DELAY: liveins: $rdi
+    ; DELAY-NEXT: {{  $}}
+    ; DELAY-NEXT: renamable $xmm0 = MOVUPDrm killed renamable $rdi, 1, $noreg, 0, $noreg
+    ; DELAY-NEXT: RET64 implicit $xmm0
+    renamable $xmm0 = MOVUPDrm killed renamable $rdi, 1, $noreg, 0, $noreg
+    RET64 implicit $xmm0
+...
+---
+name:            movupd_mr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $rdi, $xmm0
+    ; NODELAY-LABEL: name: movupd_mr
+    ; NODELAY: liveins: $rdi, $xmm0
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: MOVUPSmr killed renamable $rdi, 1, $noreg, 0, $noreg, killed renamable $xmm0
+    ; NODELAY-NEXT: RET64
+    ;
+    ; DELAY-LABEL: name: movupd_mr
+    ; DELAY: liveins: $rdi, $xmm0
+    ; DELAY-NEXT: {{  $}}
+    ; DELAY-NEXT: MOVUPDmr killed renamable $rdi, 1, $noreg, 0, $noreg, killed renamable $xmm0
+    ; DELAY-NEXT: RET64
+    MOVUPDmr killed renamable $rdi, 1, $noreg, 0, $noreg, killed renamable $xmm0
+    RET64
+...
+---
+name:            movapd_rr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0
+    ; NODELAY-LABEL: name: movapd_rr
+    ; NODELAY: liveins: $xmm0
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: renamable $xmm1 = MOVAPSrr killed renamable $xmm0
+    ; NODELAY-NEXT: RET64 implicit $xmm1
+    ;
+    ; DELAY-LABEL: name: movapd_rr
+    ; DELAY: liveins: $xmm0
+    ; DELAY-NEXT: {{  $}}
+    ; DELAY-NEXT: renamable $xmm1 = MOVAPDrr killed renamable $xmm0
+    ; DELAY-NEXT: RET64 implicit $xmm1
+    renamable $xmm1 = MOVAPDrr killed renamable $xmm0
+    RET64 implicit $xmm1
+...
+---
+name:            movapd_rm
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $rdi
+    ; NODELAY-LABEL: name: movapd_rm
+    ; NODELAY: liveins: $rdi
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: renamable $xmm0 = MOVAPSrm killed renamable $rdi, 1, $noreg, 0, $noreg
+    ; NODELAY-NEXT: RET64 implicit $xmm0
+    ;
+    ; DELAY-LABEL: name: movapd_rm
+    ; DELAY: liveins: $rdi
+    ; DELAY-NEXT: {{  $}}
+    ; DELAY-NEXT: renamable $xmm0 = MOVAPDrm killed renamable $rdi, 1, $noreg, 0, $noreg
+    ; DELAY-NEXT: RET64 implicit $xmm0
+    renamable $xmm0 = MOVAPDrm killed renamable $rdi, 1, $noreg, 0, $noreg
+    RET64 implicit $xmm0
+...
+---
+name:            movapd_mr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $rdi, $xmm0
+    ; NODELAY-LABEL: name: movapd_mr
+    ; NODELAY: liveins: $rdi, $xmm0
+    ; NODELAY-NEXT: {{  $}}
+    ; NODELAY-NEXT: MOVAPSmr killed renamable $rdi, 1, $noreg, 0, $noreg, killed renamable $xmm0
+    ; NODELAY-NEXT: RET64
+    ;
+    ; DELAY-LABEL: name: movapd_mr
+    ; DELAY: liveins: $rdi, $xmm0
+    ; DELAY-NEXT: {{  $}}
+    ; DELAY-NEXT: MOVAPDmr killed renamable $rdi, 1, $noreg, 0, $noreg, killed renamable $xmm0
+    ; DELAY-NEXT: RET64
+    MOVAPDmr killed renamable $rdi, 1, $noreg, 0, $noreg, killed renamable $xmm0
+    RET64
+...
+---
+name:            vmovupd_rr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0
+    ; CHECK-LABEL: name: vmovupd_rr
+    ; CHECK: liveins: $xmm0
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
+    ; CHECK-NEXT: RET64 implicit $xmm1
+    renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
+    RET64 implicit $xmm1
+...
+---
+name:            vmovupd_ymm
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $ymm0
+    ; CHECK-LABEL: name: vmovupd_ymm
+    ; CHECK: liveins: $ymm0
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
+    ; CHECK-NEXT: RET64 implicit $ymm1
+    renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
+    RET64 implicit $ymm1
+...
+---
+name:            vmovapd_rr
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $xmm0
+    ; CHECK-LABEL: name: vmovapd_rr
+    ; CHECK: liveins: $xmm0
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: renamable $xmm1 = VMOVAPDrr killed renamable $xmm0
+    ; CHECK-NEXT: RET64 implicit $xmm1
+    renamable $xmm1 = VMOVAPDrr killed renamable $xmm0
+    RET64 implicit $xmm1
+...
+---
+name:            vmovapd_ymm
+tracksRegLiveness: true
+body:             |
+  bb.0:
+    liveins: $ymm0
+    ; CHECK-LABEL: name: vmovapd_ymm
+    ; CHECK: liveins: $ymm0
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: renamable $ymm1 = VMOVAPDYrr killed renamable $ymm0
+    ; CHECK-NEXT: RET64 implicit $ymm1
+    renamable $ymm1 = VMOVAPDYrr killed renamable $ymm0
+    RET64 implicit $ymm1
+...
diff --git a/llvm/test/CodeGen/X86/inst-tuning-movupd.mir b/llvm/test/CodeGen/X86/inst-tuning-movupd.mir
deleted file mode 100644
index 916ebb8e94a01..0000000000000
--- a/llvm/test/CodeGen/X86/inst-tuning-movupd.mir
+++ /dev/null
@@ -1,64 +0,0 @@
-# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
-# RUN: llc %s -mtriple=x86_64-- -mattr=+no-bypass-delay-mov -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefix=MOV
-# RUN: llc %s -mtriple=x86_64-- -mattr=-no-bypass-delay-mov -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefix=NODELAY
-
----
-name:            movupd_rr
-tracksRegLiveness: true
-body:             |
-  bb.0:
-    liveins: $xmm0
-    ; MOV-LABEL: name: movupd_rr
-    ; MOV: liveins: $xmm0
-    ; MOV-NEXT: {{  $}}
-    ; MOV-NEXT: renamable $xmm1 = MOVUPSrr killed renamable $xmm0
-    ; MOV-NEXT: RET64 implicit $xmm1
-    ;
-    ; NODELAY-LABEL: name: movupd_rr
-    ; NODELAY: liveins: $xmm0
-    ; NODELAY-NEXT: {{  $}}
-    ; NODELAY-NEXT: renamable $xmm1 = MOVUPDrr killed renamable $xmm0
-    ; NODELAY-NEXT: RET64 implicit $xmm1
-    renamable $xmm1 = MOVUPDrr killed renamable $xmm0
-    RET64 implicit $xmm1
-...
----
-name:            vmovupd_rr
-tracksRegLiveness: true
-body:             |
-  bb.0:
-    liveins: $xmm0
-    ; MOV-LABEL: name: vmovupd_rr
-    ; MOV: liveins: $xmm0
-    ; MOV-NEXT: {{  $}}
-    ; MOV-NEXT: renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
-    ; MOV-NEXT: RET64 implicit $xmm1
-    ;
-    ; NODELAY-LABEL: name: vmovupd_rr
-    ; NODELAY: liveins: $xmm0
-    ; NODELAY-NEXT: {{  $}}
-    ; NODELAY-NEXT: renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
-    ; NODELAY-NEXT: RET64 implicit $xmm1
-    renamable $xmm1 = VMOVUPDrr killed renamable $xmm0
-    RET64 implicit $xmm1
-...
----
-name:            vmovupd_ymm
-tracksRegLiveness: true
-body:             |
-  bb.0:
-    liveins: $ymm0
-    ; MOV-LABEL: name: vmovupd_ymm
-    ; MOV: liveins: $ymm0
-    ; MOV-NEXT: {{  $}}
-    ; MOV-NEXT: renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
-    ; MOV-NEXT: RET64 implicit $ymm1
-    ;
-    ; NODELAY-LABEL: name: vmovupd_ymm
-    ; NODELAY: liveins: $ymm0
-    ; NODELAY-NEXT: {{  $}}
-    ; NODELAY-NEXT: renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
-    ; NODELAY-NEXT: RET64 implicit $ymm1
-    renamable $ymm1 = VMOVUPDYrr killed renamable $ymm0
-    RET64 implicit $ymm1
-...
diff --git a/llvm/test/CodeGen/X86/sink-hoist.ll b/llvm/test/CodeGen/X86/sink-hoist.ll
index a5777ac4a27e8..58323e663b2cb 100644
--- a/llvm/test/CodeGen/X86/sink-hoist.ll
+++ b/llvm/test/CodeGen/X86/sink-hoist.ll
@@ -9,7 +9,7 @@
 ; CHECK-NEXT: testb $1, %dil
 ; CHECK-NEXT: jne
 ; CHECK-NEXT: divsd
-; CHECK-NEXT: movapd
+; CHECK-NEXT: movaps
 ; CHECK-NEXT: ret
 ; CHECK:      divsd
 
@@ -28,7 +28,7 @@ define double @foo(double %x, double %y, i1 %c) nounwind {
 ; CHECK-NEXT: testb $1, %dil
 ; CHECK-NEXT: je
 ; CHECK:      divsd
-; CHECK:      movapd
+; CHECK:      movaps
 ; CHECK:      ret
 define double @split(double %x, double %y, i1 %c) nounwind {
   %a = fdiv double %x, 3.2



More information about the llvm-commits mailing list