summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/divide-by-constant.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/divide-by-constant.ll')
-rw-r--r--llvm/test/CodeGen/X86/divide-by-constant.ll54
1 files changed, 26 insertions, 28 deletions
diff --git a/llvm/test/CodeGen/X86/divide-by-constant.ll b/llvm/test/CodeGen/X86/divide-by-constant.ll
index 00a0e31ea0d..9fbef11f87b 100644
--- a/llvm/test/CodeGen/X86/divide-by-constant.ll
+++ b/llvm/test/CodeGen/X86/divide-by-constant.ll
@@ -95,8 +95,8 @@ define i32 @test5(i32 %A) nounwind {
; X32: # %bb.0:
; X32-NEXT: movl $365384439, %eax # imm = 0x15C752F7
; X32-NEXT: mull {{[0-9]+}}(%esp)
-; X32-NEXT: shrl $27, %edx
; X32-NEXT: movl %edx, %eax
+; X32-NEXT: shrl $27, %eax
; X32-NEXT: retl
;
; X64-LABEL: test5:
@@ -217,9 +217,9 @@ define i32 @testsize1(i32 %x) minsize nounwind {
;
; X64-LABEL: testsize1:
; X64: # %bb.0: # %entry
+; X64-NEXT: movl %edi, %eax
; X64-NEXT: pushq $32
; X64-NEXT: popq %rcx
-; X64-NEXT: movl %edi, %eax
; X64-NEXT: cltd
; X64-NEXT: idivl %ecx
; X64-NEXT: retq
@@ -240,9 +240,9 @@ define i32 @testsize2(i32 %x) minsize nounwind {
;
; X64-LABEL: testsize2:
; X64: # %bb.0: # %entry
+; X64-NEXT: movl %edi, %eax
; X64-NEXT: pushq $33
; X64-NEXT: popq %rcx
-; X64-NEXT: movl %edi, %eax
; X64-NEXT: cltd
; X64-NEXT: idivl %ecx
; X64-NEXT: retq
@@ -260,8 +260,8 @@ define i32 @testsize3(i32 %x) minsize nounwind {
;
; X64-LABEL: testsize3:
; X64: # %bb.0: # %entry
-; X64-NEXT: shrl $5, %edi
; X64-NEXT: movl %edi, %eax
+; X64-NEXT: shrl $5, %eax
; X64-NEXT: retq
entry:
%div = udiv i32 %x, 32
@@ -280,10 +280,10 @@ define i32 @testsize4(i32 %x) minsize nounwind {
;
; X64-LABEL: testsize4:
; X64: # %bb.0: # %entry
+; X64-NEXT: movl %edi, %eax
; X64-NEXT: pushq $33
; X64-NEXT: popq %rcx
; X64-NEXT: xorl %edx, %edx
-; X64-NEXT: movl %edi, %eax
; X64-NEXT: divl %ecx
; X64-NEXT: retq
entry:
@@ -311,38 +311,36 @@ define i64 @PR23590(i64 %x) nounwind {
;
; X64-FAST-LABEL: PR23590:
; X64-FAST: # %bb.0: # %entry
-; X64-FAST-NEXT: movq %rdi, %rcx
-; X64-FAST-NEXT: movabsq $6120523590596543007, %rdx # imm = 0x54F077C718E7C21F
+; X64-FAST-NEXT: movabsq $6120523590596543007, %rcx # imm = 0x54F077C718E7C21F
; X64-FAST-NEXT: movq %rdi, %rax
-; X64-FAST-NEXT: mulq %rdx
+; X64-FAST-NEXT: mulq %rcx
; X64-FAST-NEXT: shrq $12, %rdx
; X64-FAST-NEXT: imulq $12345, %rdx, %rax # imm = 0x3039
-; X64-FAST-NEXT: subq %rax, %rcx
-; X64-FAST-NEXT: movabsq $2635249153387078803, %rdx # imm = 0x2492492492492493
-; X64-FAST-NEXT: movq %rcx, %rax
-; X64-FAST-NEXT: mulq %rdx
-; X64-FAST-NEXT: subq %rdx, %rcx
-; X64-FAST-NEXT: shrq %rcx
-; X64-FAST-NEXT: leaq (%rcx,%rdx), %rax
+; X64-FAST-NEXT: subq %rax, %rdi
+; X64-FAST-NEXT: movabsq $2635249153387078803, %rcx # imm = 0x2492492492492493
+; X64-FAST-NEXT: movq %rdi, %rax
+; X64-FAST-NEXT: mulq %rcx
+; X64-FAST-NEXT: subq %rdx, %rdi
+; X64-FAST-NEXT: shrq %rdi
+; X64-FAST-NEXT: leaq (%rdi,%rdx), %rax
; X64-FAST-NEXT: shrq $2, %rax
; X64-FAST-NEXT: retq
;
; X64-SLOW-LABEL: PR23590:
; X64-SLOW: # %bb.0: # %entry
-; X64-SLOW-NEXT: movq %rdi, %rcx
-; X64-SLOW-NEXT: movabsq $6120523590596543007, %rdx # imm = 0x54F077C718E7C21F
+; X64-SLOW-NEXT: movabsq $6120523590596543007, %rcx # imm = 0x54F077C718E7C21F
; X64-SLOW-NEXT: movq %rdi, %rax
-; X64-SLOW-NEXT: mulq %rdx
+; X64-SLOW-NEXT: mulq %rcx
; X64-SLOW-NEXT: shrq $12, %rdx
; X64-SLOW-NEXT: imulq $12345, %rdx, %rax # imm = 0x3039
-; X64-SLOW-NEXT: subq %rax, %rcx
-; X64-SLOW-NEXT: imulq $613566757, %rcx, %rax # imm = 0x24924925
+; X64-SLOW-NEXT: subq %rax, %rdi
+; X64-SLOW-NEXT: imulq $613566757, %rdi, %rax # imm = 0x24924925
; X64-SLOW-NEXT: shrq $32, %rax
-; X64-SLOW-NEXT: subl %eax, %ecx
-; X64-SLOW-NEXT: shrl %ecx
-; X64-SLOW-NEXT: addl %eax, %ecx
-; X64-SLOW-NEXT: shrl $2, %ecx
-; X64-SLOW-NEXT: movq %rcx, %rax
+; X64-SLOW-NEXT: subl %eax, %edi
+; X64-SLOW-NEXT: shrl %edi
+; X64-SLOW-NEXT: addl %eax, %edi
+; X64-SLOW-NEXT: shrl $2, %edi
+; X64-SLOW-NEXT: movq %rdi, %rax
; X64-SLOW-NEXT: retq
entry:
%rem = urem i64 %x, 12345
@@ -390,10 +388,10 @@ define { i64, i32 } @PR38622(i64) nounwind {
; X64-NEXT: shrq $11, %rax
; X64-NEXT: movabsq $4835703278458517, %rcx # imm = 0x112E0BE826D695
; X64-NEXT: mulq %rcx
-; X64-NEXT: shrq $9, %rdx
-; X64-NEXT: imull $-294967296, %edx, %eax # imm = 0xEE6B2800
-; X64-NEXT: subl %eax, %edi
; X64-NEXT: movq %rdx, %rax
+; X64-NEXT: shrq $9, %rax
+; X64-NEXT: imull $-294967296, %eax, %ecx # imm = 0xEE6B2800
+; X64-NEXT: subl %ecx, %edi
; X64-NEXT: movl %edi, %edx
; X64-NEXT: retq
%2 = udiv i64 %0, 4000000000
OpenPOWER on IntegriCloud