[llvm] a390c99 - [X86] Improve selection of the mov instruction in FrameLowering

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 3 11:13:07 PST 2022


Author: Erik Desjardins
Date: 2022-01-03T11:10:16-08:00
New Revision: a390c9905d4d1e7a7437fc1ab57f720c06618d79

URL: https://github.com/llvm/llvm-project/commit/a390c9905d4d1e7a7437fc1ab57f720c06618d79
DIFF: https://github.com/llvm/llvm-project/commit/a390c9905d4d1e7a7437fc1ab57f720c06618d79.diff

LOG: [X86] Improve selection of the mov instruction in FrameLowering

MOV64ri results in a significantly longer encoding, and use of this
operator is fairly avoidable as we can always check the size of the
immediate we're using.

This is an updated version of D99045.

Co-authored-by: Simonas Kazlauskas <git at kazlauskas.me>

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D116458

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86FrameLowering.cpp
    llvm/test/CodeGen/X86/segmented-stacks-dynamic.ll
    llvm/test/CodeGen/X86/segmented-stacks.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp
index 0a7aea4678094..82cd060f1c7ff 100644
--- a/llvm/lib/Target/X86/X86FrameLowering.cpp
+++ b/llvm/lib/Target/X86/X86FrameLowering.cpp
@@ -149,6 +149,17 @@ static unsigned getLEArOpcode(bool IsLP64) {
   return IsLP64 ? X86::LEA64r : X86::LEA32r;
 }
 
+static unsigned getMOVriOpcode(bool Use64BitReg, int64_t Imm) {
+  if (Use64BitReg) {
+    if (isUInt<32>(Imm))
+      return X86::MOV32ri64;
+    if (isInt<32>(Imm))
+      return X86::MOV64ri32;
+    return X86::MOV64ri;
+  }
+  return X86::MOV32ri;
+}
+
 static bool isEAXLiveIn(MachineBasicBlock &MBB) {
   for (MachineBasicBlock::RegisterMaskPair RegMask : MBB.liveins()) {
     unsigned Reg = RegMask.PhysReg;
@@ -237,11 +248,10 @@ void X86FrameLowering::emitSPUpdate(MachineBasicBlock &MBB,
     else
       Reg = TRI->findDeadCallerSavedReg(MBB, MBBI);
 
-    unsigned MovRIOpc = Is64Bit ? X86::MOV64ri : X86::MOV32ri;
     unsigned AddSubRROpc =
         isSub ? getSUBrrOpcode(Is64Bit) : getADDrrOpcode(Is64Bit);
     if (Reg) {
-      BuildMI(MBB, MBBI, DL, TII.get(MovRIOpc), Reg)
+      BuildMI(MBB, MBBI, DL, TII.get(getMOVriOpcode(Is64Bit, Offset)), Reg)
           .addImm(Offset)
           .setMIFlag(Flag);
       MachineInstr *MI = BuildMI(MBB, MBBI, DL, TII.get(AddSubRROpc), StackPtr)
@@ -267,7 +277,7 @@ void X86FrameLowering::emitSPUpdate(MachineBasicBlock &MBB,
         Offset = -(Offset - SlotSize);
       else
         Offset = Offset + SlotSize;
-      BuildMI(MBB, MBBI, DL, TII.get(MovRIOpc), Rax)
+      BuildMI(MBB, MBBI, DL, TII.get(getMOVriOpcode(Is64Bit, Offset)), Rax)
           .addImm(Offset)
           .setMIFlag(Flag);
       MachineInstr *MI = BuildMI(MBB, MBBI, DL, TII.get(X86::ADD64rr), Rax)
@@ -1705,19 +1715,9 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF,
       // Handle the 64-bit Windows ABI case where we need to call __chkstk.
       // Function prologue is responsible for adjusting the stack pointer.
       int64_t Alloc = isEAXAlive ? NumBytes - 8 : NumBytes;
-      if (isUInt<32>(Alloc)) {
-        BuildMI(MBB, MBBI, DL, TII.get(X86::MOV32ri), X86::EAX)
-            .addImm(Alloc)
-            .setMIFlag(MachineInstr::FrameSetup);
-      } else if (isInt<32>(Alloc)) {
-        BuildMI(MBB, MBBI, DL, TII.get(X86::MOV64ri32), X86::RAX)
-            .addImm(Alloc)
-            .setMIFlag(MachineInstr::FrameSetup);
-      } else {
-        BuildMI(MBB, MBBI, DL, TII.get(X86::MOV64ri), X86::RAX)
-            .addImm(Alloc)
-            .setMIFlag(MachineInstr::FrameSetup);
-      }
+      BuildMI(MBB, MBBI, DL, TII.get(getMOVriOpcode(Is64Bit, Alloc)), X86::RAX)
+          .addImm(Alloc)
+          .setMIFlag(MachineInstr::FrameSetup);
     } else {
       // Allocate NumBytes-4 bytes on stack in case of isEAXAlive.
       // We'll also use 4 already allocated bytes for EAX.
@@ -2944,15 +2944,16 @@ void X86FrameLowering::adjustForSegmentedStacks(
     const unsigned Reg10 = IsLP64 ? X86::R10 : X86::R10D;
     const unsigned Reg11 = IsLP64 ? X86::R11 : X86::R11D;
     const unsigned MOVrr = IsLP64 ? X86::MOV64rr : X86::MOV32rr;
-    const unsigned MOVri = IsLP64 ? X86::MOV64ri : X86::MOV32ri;
 
     if (IsNested)
       BuildMI(allocMBB, DL, TII.get(MOVrr), RegAX).addReg(Reg10);
 
-    BuildMI(allocMBB, DL, TII.get(MOVri), Reg10)
-      .addImm(StackSize);
-    BuildMI(allocMBB, DL, TII.get(MOVri), Reg11)
-      .addImm(X86FI->getArgumentStackSize());
+    BuildMI(allocMBB, DL, TII.get(getMOVriOpcode(IsLP64, StackSize)), Reg10)
+        .addImm(StackSize);
+    BuildMI(allocMBB, DL,
+            TII.get(getMOVriOpcode(IsLP64, X86FI->getArgumentStackSize())),
+            Reg11)
+        .addImm(X86FI->getArgumentStackSize());
   } else {
     BuildMI(allocMBB, DL, TII.get(X86::PUSHi32))
       .addImm(X86FI->getArgumentStackSize());

diff  --git a/llvm/test/CodeGen/X86/segmented-stacks-dynamic.ll b/llvm/test/CodeGen/X86/segmented-stacks-dynamic.ll
index 4f9c2d77d171e..60e0092060fd8 100644
--- a/llvm/test/CodeGen/X86/segmented-stacks-dynamic.ll
+++ b/llvm/test/CodeGen/X86/segmented-stacks-dynamic.ll
@@ -118,8 +118,8 @@ define i32 @test_basic(i32 %l) #0 {
 ; X64-NEXT:  .LBB0_1:
 ; X64-NEXT:    .cfi_restore %rbx
 ; X64-NEXT:    .cfi_restore %rbp
-; X64-NEXT:    movabsq $24, %r10
-; X64-NEXT:    movabsq $0, %r11
+; X64-NEXT:    movl $24, %r10d
+; X64-NEXT:    movl $0, %r11d
 ; X64-NEXT:    callq __morestack
 ; X64-NEXT:    retq
 ; X64-NEXT:    jmp .LBB0_2

diff  --git a/llvm/test/CodeGen/X86/segmented-stacks.ll b/llvm/test/CodeGen/X86/segmented-stacks.ll
index 627825c78e276..f9dcc9faf831a 100644
--- a/llvm/test/CodeGen/X86/segmented-stacks.ll
+++ b/llvm/test/CodeGen/X86/segmented-stacks.ll
@@ -72,8 +72,8 @@ define void @test_basic() #0 {
 ; X64-Linux-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:  .LBB0_1:
-; X64-Linux-NEXT:    movabsq $40, %r10
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $40, %r10d
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    jmp .LBB0_2
@@ -93,8 +93,8 @@ define void @test_basic() #0 {
 ; X64-Linux-Large-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:  .LBB0_1:
-; X64-Linux-Large-NEXT:    movabsq $40, %r10
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $40, %r10d
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    jmp .LBB0_2
@@ -153,8 +153,8 @@ define void @test_basic() #0 {
 ; X64-Darwin-NEXT:    addq $40, %rsp
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:  LBB0_1:
-; X64-Darwin-NEXT:    movabsq $40, %r10
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $40, %r10d
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    jmp LBB0_2
@@ -196,8 +196,8 @@ define void @test_basic() #0 {
 ; X64-FreeBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:  .LBB0_1:
-; X64-FreeBSD-NEXT:    movabsq $40, %r10
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $40, %r10d
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    jmp .LBB0_2
@@ -239,8 +239,8 @@ define void @test_basic() #0 {
 ; X64-DFlyBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:  .LBB0_1:
-; X64-DFlyBSD-NEXT:    movabsq $40, %r10
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $40, %r10d
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    jmp .LBB0_2
@@ -260,8 +260,8 @@ define void @test_basic() #0 {
 ; X64-MinGW-NEXT:    addq $72, %rsp
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:  .LBB0_1:
-; X64-MinGW-NEXT:    movabsq $72, %r10
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $72, %r10d
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    jmp .LBB0_2
@@ -332,8 +332,8 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
 ; X64-Linux-NEXT:  .LBB1_1:
 ; X64-Linux-NEXT:    .cfi_restore %rbx
 ; X64-Linux-NEXT:    movq %r10, %rax
-; X64-Linux-NEXT:    movabsq $56, %r10
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $56, %r10d
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    movq %rax, %r10
@@ -364,8 +364,8 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
 ; X64-Linux-Large-NEXT:  .LBB1_1:
 ; X64-Linux-Large-NEXT:    .cfi_restore %rbx
 ; X64-Linux-Large-NEXT:    movq %r10, %rax
-; X64-Linux-Large-NEXT:    movabsq $56, %r10
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $56, %r10d
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    movq %rax, %r10
@@ -451,8 +451,8 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:  LBB1_1:
 ; X64-Darwin-NEXT:    movq %r10, %rax
-; X64-Darwin-NEXT:    movabsq $56, %r10
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $56, %r10d
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    movq %rax, %r10
@@ -515,8 +515,8 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
 ; X64-FreeBSD-NEXT:  .LBB1_1:
 ; X64-FreeBSD-NEXT:    .cfi_restore %rbx
 ; X64-FreeBSD-NEXT:    movq %r10, %rax
-; X64-FreeBSD-NEXT:    movabsq $56, %r10
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $56, %r10d
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    movq %rax, %r10
@@ -580,8 +580,8 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
 ; X64-DFlyBSD-NEXT:  .LBB1_1:
 ; X64-DFlyBSD-NEXT:    .cfi_restore %rbx
 ; X64-DFlyBSD-NEXT:    movq %r10, %rax
-; X64-DFlyBSD-NEXT:    movabsq $56, %r10
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $56, %r10d
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    movq %rax, %r10
@@ -608,8 +608,8 @@ define i32 @test_nested(i32 * nest %closure, i32 %other) #0 {
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:  .LBB1_1:
 ; X64-MinGW-NEXT:    movq %r10, %rax
-; X64-MinGW-NEXT:    movabsq $88, %r10
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $88, %r10d
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    movq %rax, %r10
@@ -662,8 +662,8 @@ define void @test_large() #0 {
 ; X64-Linux-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:  .LBB2_1:
-; X64-Linux-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    jmp .LBB2_2
@@ -684,8 +684,8 @@ define void @test_large() #0 {
 ; X64-Linux-Large-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:  .LBB2_1:
-; X64-Linux-Large-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    jmp .LBB2_2
@@ -747,8 +747,8 @@ define void @test_large() #0 {
 ; X64-Darwin-NEXT:    addq $40008, %rsp ## imm = 0x9C48
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:  LBB2_1:
-; X64-Darwin-NEXT:    movabsq $40008, %r10 ## imm = 0x9C48
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $40008, %r10d ## imm = 0x9C48
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    jmp LBB2_2
@@ -793,8 +793,8 @@ define void @test_large() #0 {
 ; X64-FreeBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:  .LBB2_1:
-; X64-FreeBSD-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    jmp .LBB2_2
@@ -838,8 +838,8 @@ define void @test_large() #0 {
 ; X64-DFlyBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:  .LBB2_1:
-; X64-DFlyBSD-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    jmp .LBB2_2
@@ -862,8 +862,8 @@ define void @test_large() #0 {
 ; X64-MinGW-NEXT:    addq $40040, %rsp # imm = 0x9C68
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:  .LBB2_1:
-; X64-MinGW-NEXT:    movabsq $40040, %r10 # imm = 0x9C68
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $40040, %r10d # imm = 0x9C68
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    jmp .LBB2_2
@@ -911,8 +911,8 @@ define fastcc void @test_fastcc() #0 {
 ; X64-Linux-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:  .LBB3_1:
-; X64-Linux-NEXT:    movabsq $40, %r10
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $40, %r10d
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    jmp .LBB3_2
@@ -932,8 +932,8 @@ define fastcc void @test_fastcc() #0 {
 ; X64-Linux-Large-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:  .LBB3_1:
-; X64-Linux-Large-NEXT:    movabsq $40, %r10
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $40, %r10d
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    jmp .LBB3_2
@@ -992,8 +992,8 @@ define fastcc void @test_fastcc() #0 {
 ; X64-Darwin-NEXT:    addq $40, %rsp
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:  LBB3_1:
-; X64-Darwin-NEXT:    movabsq $40, %r10
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $40, %r10d
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    jmp LBB3_2
@@ -1035,8 +1035,8 @@ define fastcc void @test_fastcc() #0 {
 ; X64-FreeBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:  .LBB3_1:
-; X64-FreeBSD-NEXT:    movabsq $40, %r10
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $40, %r10d
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    jmp .LBB3_2
@@ -1078,8 +1078,8 @@ define fastcc void @test_fastcc() #0 {
 ; X64-DFlyBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:  .LBB3_1:
-; X64-DFlyBSD-NEXT:    movabsq $40, %r10
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $40, %r10d
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    jmp .LBB3_2
@@ -1099,8 +1099,8 @@ define fastcc void @test_fastcc() #0 {
 ; X64-MinGW-NEXT:    addq $72, %rsp
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:  .LBB3_1:
-; X64-MinGW-NEXT:    movabsq $72, %r10
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $72, %r10d
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    jmp .LBB3_2
@@ -1150,8 +1150,8 @@ define fastcc void @test_fastcc_large() #0 {
 ; X64-Linux-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:  .LBB4_1:
-; X64-Linux-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    jmp .LBB4_2
@@ -1172,8 +1172,8 @@ define fastcc void @test_fastcc_large() #0 {
 ; X64-Linux-Large-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:  .LBB4_1:
-; X64-Linux-Large-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    jmp .LBB4_2
@@ -1235,8 +1235,8 @@ define fastcc void @test_fastcc_large() #0 {
 ; X64-Darwin-NEXT:    addq $40008, %rsp ## imm = 0x9C48
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:  LBB4_1:
-; X64-Darwin-NEXT:    movabsq $40008, %r10 ## imm = 0x9C48
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $40008, %r10d ## imm = 0x9C48
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    jmp LBB4_2
@@ -1281,8 +1281,8 @@ define fastcc void @test_fastcc_large() #0 {
 ; X64-FreeBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:  .LBB4_1:
-; X64-FreeBSD-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    jmp .LBB4_2
@@ -1326,8 +1326,8 @@ define fastcc void @test_fastcc_large() #0 {
 ; X64-DFlyBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:  .LBB4_1:
-; X64-DFlyBSD-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    jmp .LBB4_2
@@ -1350,8 +1350,8 @@ define fastcc void @test_fastcc_large() #0 {
 ; X64-MinGW-NEXT:    addq $40040, %rsp # imm = 0x9C68
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:  .LBB4_1:
-; X64-MinGW-NEXT:    movabsq $40040, %r10 # imm = 0x9C68
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $40040, %r10d # imm = 0x9C68
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    jmp .LBB4_2
@@ -1403,8 +1403,8 @@ define fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 {
 ; X64-Linux-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:  .LBB5_1:
-; X64-Linux-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    jmp .LBB5_2
@@ -1425,8 +1425,8 @@ define fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 {
 ; X64-Linux-Large-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:  .LBB5_1:
-; X64-Linux-Large-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    jmp .LBB5_2
@@ -1490,8 +1490,8 @@ define fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 {
 ; X64-Darwin-NEXT:    addq $40008, %rsp ## imm = 0x9C48
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:  LBB5_1:
-; X64-Darwin-NEXT:    movabsq $40008, %r10 ## imm = 0x9C48
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $40008, %r10d ## imm = 0x9C48
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    jmp LBB5_2
@@ -1536,8 +1536,8 @@ define fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 {
 ; X64-FreeBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:  .LBB5_1:
-; X64-FreeBSD-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    jmp .LBB5_2
@@ -1581,8 +1581,8 @@ define fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 {
 ; X64-DFlyBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:  .LBB5_1:
-; X64-DFlyBSD-NEXT:    movabsq $40008, %r10 # imm = 0x9C48
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $40008, %r10d # imm = 0x9C48
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    jmp .LBB5_2
@@ -1605,8 +1605,8 @@ define fastcc void @test_fastcc_large_with_ecx_arg(i32 %a) #0 {
 ; X64-MinGW-NEXT:    addq $40040, %rsp # imm = 0x9C68
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:  .LBB5_1:
-; X64-MinGW-NEXT:    movabsq $40040, %r10 # imm = 0x9C68
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $40040, %r10d # imm = 0x9C68
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    jmp .LBB5_2
@@ -1737,8 +1737,8 @@ define i32 @test_sibling_call_empty_frame(i32 %x) #0 {
 ; X64-Linux-NEXT:  # %bb.2:
 ; X64-Linux-NEXT:    jmp callee at PLT # TAILCALL
 ; X64-Linux-NEXT:  .LBB8_1:
-; X64-Linux-NEXT:    movabsq $0, %r10
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $0, %r10d
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    jmp callee at PLT # TAILCALL
@@ -1751,8 +1751,8 @@ define i32 @test_sibling_call_empty_frame(i32 %x) #0 {
 ; X64-Linux-Large-NEXT:    movabsq $callee, %rax
 ; X64-Linux-Large-NEXT:    jmpq *%rax # TAILCALL
 ; X64-Linux-Large-NEXT:  .LBB8_1:
-; X64-Linux-Large-NEXT:    movabsq $0, %r10
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $0, %r10d
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    movabsq $callee, %rax
@@ -1792,8 +1792,8 @@ define i32 @test_sibling_call_empty_frame(i32 %x) #0 {
 ; X64-Darwin-NEXT:  ## %bb.2:
 ; X64-Darwin-NEXT:    jmp _callee ## TAILCALL
 ; X64-Darwin-NEXT:  LBB8_1:
-; X64-Darwin-NEXT:    movabsq $0, %r10
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $0, %r10d
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    jmp _callee ## TAILCALL
@@ -1818,8 +1818,8 @@ define i32 @test_sibling_call_empty_frame(i32 %x) #0 {
 ; X64-FreeBSD-NEXT:  # %bb.2:
 ; X64-FreeBSD-NEXT:    jmp callee at PLT # TAILCALL
 ; X64-FreeBSD-NEXT:  .LBB8_1:
-; X64-FreeBSD-NEXT:    movabsq $0, %r10
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $0, %r10d
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    jmp callee at PLT # TAILCALL
@@ -1844,8 +1844,8 @@ define i32 @test_sibling_call_empty_frame(i32 %x) #0 {
 ; X64-DFlyBSD-NEXT:  # %bb.2:
 ; X64-DFlyBSD-NEXT:    jmp callee at PLT # TAILCALL
 ; X64-DFlyBSD-NEXT:  .LBB8_1:
-; X64-DFlyBSD-NEXT:    movabsq $0, %r10
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $0, %r10d
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    jmp callee at PLT # TAILCALL
@@ -1857,8 +1857,8 @@ define i32 @test_sibling_call_empty_frame(i32 %x) #0 {
 ; X64-MinGW-NEXT:  # %bb.2:
 ; X64-MinGW-NEXT:    jmp callee # TAILCALL
 ; X64-MinGW-NEXT:  .LBB8_1:
-; X64-MinGW-NEXT:    movabsq $0, %r10
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $0, %r10d
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    jmp callee # TAILCALL
@@ -1910,8 +1910,8 @@ define i32 @test_nested_unused(i32 * nest %unused) #0 {
 ; X64-Linux-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:  .LBB9_1:
-; X64-Linux-NEXT:    movabsq $40, %r10
-; X64-Linux-NEXT:    movabsq $0, %r11
+; X64-Linux-NEXT:    movl $40, %r10d
+; X64-Linux-NEXT:    movl $0, %r11d
 ; X64-Linux-NEXT:    callq __morestack
 ; X64-Linux-NEXT:    retq
 ; X64-Linux-NEXT:    jmp .LBB9_2
@@ -1932,8 +1932,8 @@ define i32 @test_nested_unused(i32 * nest %unused) #0 {
 ; X64-Linux-Large-NEXT:    .cfi_def_cfa_offset 8
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:  .LBB9_1:
-; X64-Linux-Large-NEXT:    movabsq $40, %r10
-; X64-Linux-Large-NEXT:    movabsq $0, %r11
+; X64-Linux-Large-NEXT:    movl $40, %r10d
+; X64-Linux-Large-NEXT:    movl $0, %r11d
 ; X64-Linux-Large-NEXT:    callq *__morestack_addr(%rip)
 ; X64-Linux-Large-NEXT:    retq
 ; X64-Linux-Large-NEXT:    jmp .LBB9_2
@@ -1995,8 +1995,8 @@ define i32 @test_nested_unused(i32 * nest %unused) #0 {
 ; X64-Darwin-NEXT:    addq $40, %rsp
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:  LBB9_1:
-; X64-Darwin-NEXT:    movabsq $40, %r10
-; X64-Darwin-NEXT:    movabsq $0, %r11
+; X64-Darwin-NEXT:    movl $40, %r10d
+; X64-Darwin-NEXT:    movl $0, %r11d
 ; X64-Darwin-NEXT:    callq ___morestack
 ; X64-Darwin-NEXT:    retq
 ; X64-Darwin-NEXT:    jmp LBB9_2
@@ -2042,8 +2042,8 @@ define i32 @test_nested_unused(i32 * nest %unused) #0 {
 ; X64-FreeBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:  .LBB9_1:
-; X64-FreeBSD-NEXT:    movabsq $40, %r10
-; X64-FreeBSD-NEXT:    movabsq $0, %r11
+; X64-FreeBSD-NEXT:    movl $40, %r10d
+; X64-FreeBSD-NEXT:    movl $0, %r11d
 ; X64-FreeBSD-NEXT:    callq __morestack
 ; X64-FreeBSD-NEXT:    retq
 ; X64-FreeBSD-NEXT:    jmp .LBB9_2
@@ -2089,8 +2089,8 @@ define i32 @test_nested_unused(i32 * nest %unused) #0 {
 ; X64-DFlyBSD-NEXT:    .cfi_def_cfa_offset 8
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:  .LBB9_1:
-; X64-DFlyBSD-NEXT:    movabsq $40, %r10
-; X64-DFlyBSD-NEXT:    movabsq $0, %r11
+; X64-DFlyBSD-NEXT:    movl $40, %r10d
+; X64-DFlyBSD-NEXT:    movl $0, %r11d
 ; X64-DFlyBSD-NEXT:    callq __morestack
 ; X64-DFlyBSD-NEXT:    retq
 ; X64-DFlyBSD-NEXT:    jmp .LBB9_2
@@ -2110,8 +2110,8 @@ define i32 @test_nested_unused(i32 * nest %unused) #0 {
 ; X64-MinGW-NEXT:    addq $72, %rsp
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:  .LBB9_1:
-; X64-MinGW-NEXT:    movabsq $72, %r10
-; X64-MinGW-NEXT:    movabsq $32, %r11
+; X64-MinGW-NEXT:    movl $72, %r10d
+; X64-MinGW-NEXT:    movl $32, %r11d
 ; X64-MinGW-NEXT:    callq __morestack
 ; X64-MinGW-NEXT:    retq
 ; X64-MinGW-NEXT:    jmp .LBB9_2


        


More information about the llvm-commits mailing list