aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/scalar-fp-to-i64.ll
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-01-19 10:01:25 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-01-19 10:01:25 +0000
commitd8e91e46262bc44006913e6796843909f1ac7bcd (patch)
tree7d0c143d9b38190e0fa0180805389da22cd834c5 /test/CodeGen/X86/scalar-fp-to-i64.ll
parentb7eb8e35e481a74962664b63dfb09483b200209a (diff)
downloadsrc-d8e91e46262bc44006913e6796843909f1ac7bcd.tar.gz
src-d8e91e46262bc44006913e6796843909f1ac7bcd.zip
Vendor import of llvm trunk r351319 (just before the release_80 branchvendor/llvm/llvm-trunk-r351319
Notes
Notes: svn path=/vendor/llvm/dist/; revision=343171 svn path=/vendor/llvm/llvm-trunk-r351319/; revision=343172; tag=vendor/llvm/llvm-trunk-r351319
Diffstat (limited to 'test/CodeGen/X86/scalar-fp-to-i64.ll')
-rw-r--r--test/CodeGen/X86/scalar-fp-to-i64.ll100
1 files changed, 37 insertions, 63 deletions
diff --git a/test/CodeGen/X86/scalar-fp-to-i64.ll b/test/CodeGen/X86/scalar-fp-to-i64.ll
index 77305f430346..7ed61f8fdc7d 100644
--- a/test/CodeGen/X86/scalar-fp-to-i64.ll
+++ b/test/CodeGen/X86/scalar-fp-to-i64.ll
@@ -1147,25 +1147,21 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
;
; SSE3_64_WIN-LABEL: x_to_u64:
; SSE3_64_WIN: # %bb.0:
-; SSE3_64_WIN-NEXT: subq $16, %rsp
+; SSE3_64_WIN-NEXT: pushq %rax
; SSE3_64_WIN-NEXT: fldt (%rcx)
; SSE3_64_WIN-NEXT: flds __real@{{.*}}(%rip)
; SSE3_64_WIN-NEXT: fld %st(1)
; SSE3_64_WIN-NEXT: fsub %st(1)
-; SSE3_64_WIN-NEXT: fisttpll {{[0-9]+}}(%rsp)
-; SSE3_64_WIN-NEXT: fld %st(1)
+; SSE3_64_WIN-NEXT: xorl %eax, %eax
+; SSE3_64_WIN-NEXT: fxch %st(1)
+; SSE3_64_WIN-NEXT: fucompi %st(2)
+; SSE3_64_WIN-NEXT: fcmovnbe %st(1), %st(0)
+; SSE3_64_WIN-NEXT: fstp %st(1)
; SSE3_64_WIN-NEXT: fisttpll (%rsp)
-; SSE3_64_WIN-NEXT: fucompi %st(1)
-; SSE3_64_WIN-NEXT: fstp %st(0)
-; SSE3_64_WIN-NEXT: jbe .LBB4_1
-; SSE3_64_WIN-NEXT: # %bb.2:
-; SSE3_64_WIN-NEXT: movq (%rsp), %rax
-; SSE3_64_WIN-NEXT: addq $16, %rsp
-; SSE3_64_WIN-NEXT: retq
-; SSE3_64_WIN-NEXT: .LBB4_1:
-; SSE3_64_WIN-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000
-; SSE3_64_WIN-NEXT: xorq {{[0-9]+}}(%rsp), %rax
-; SSE3_64_WIN-NEXT: addq $16, %rsp
+; SSE3_64_WIN-NEXT: setbe %al
+; SSE3_64_WIN-NEXT: shlq $63, %rax
+; SSE3_64_WIN-NEXT: xorq (%rsp), %rax
+; SSE3_64_WIN-NEXT: popq %rcx
; SSE3_64_WIN-NEXT: retq
;
; SSE3_64_LIN-LABEL: x_to_u64:
@@ -1174,17 +1170,14 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE3_64_LIN-NEXT: flds {{.*}}(%rip)
; SSE3_64_LIN-NEXT: fld %st(1)
; SSE3_64_LIN-NEXT: fsub %st(1)
+; SSE3_64_LIN-NEXT: xorl %eax, %eax
+; SSE3_64_LIN-NEXT: fxch %st(1)
+; SSE3_64_LIN-NEXT: fucompi %st(2)
+; SSE3_64_LIN-NEXT: fcmovnbe %st(1), %st(0)
+; SSE3_64_LIN-NEXT: fstp %st(1)
; SSE3_64_LIN-NEXT: fisttpll -{{[0-9]+}}(%rsp)
-; SSE3_64_LIN-NEXT: fld %st(1)
-; SSE3_64_LIN-NEXT: fisttpll -{{[0-9]+}}(%rsp)
-; SSE3_64_LIN-NEXT: fucompi %st(1)
-; SSE3_64_LIN-NEXT: fstp %st(0)
-; SSE3_64_LIN-NEXT: jbe .LBB4_1
-; SSE3_64_LIN-NEXT: # %bb.2:
-; SSE3_64_LIN-NEXT: movq -{{[0-9]+}}(%rsp), %rax
-; SSE3_64_LIN-NEXT: retq
-; SSE3_64_LIN-NEXT: .LBB4_1:
-; SSE3_64_LIN-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000
+; SSE3_64_LIN-NEXT: setbe %al
+; SSE3_64_LIN-NEXT: shlq $63, %rax
; SSE3_64_LIN-NEXT: xorq -{{[0-9]+}}(%rsp), %rax
; SSE3_64_LIN-NEXT: retq
;
@@ -1246,37 +1239,27 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
;
; SSE2_64_WIN-LABEL: x_to_u64:
; SSE2_64_WIN: # %bb.0:
-; SSE2_64_WIN-NEXT: subq $24, %rsp
+; SSE2_64_WIN-NEXT: subq $16, %rsp
; SSE2_64_WIN-NEXT: fldt (%rcx)
; SSE2_64_WIN-NEXT: flds __real@{{.*}}(%rip)
; SSE2_64_WIN-NEXT: fld %st(1)
; SSE2_64_WIN-NEXT: fsub %st(1)
+; SSE2_64_WIN-NEXT: xorl %eax, %eax
+; SSE2_64_WIN-NEXT: fxch %st(1)
+; SSE2_64_WIN-NEXT: fucompi %st(2)
+; SSE2_64_WIN-NEXT: fcmovnbe %st(1), %st(0)
+; SSE2_64_WIN-NEXT: fstp %st(1)
; SSE2_64_WIN-NEXT: fnstcw {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: movzwl {{[0-9]+}}(%rsp), %eax
+; SSE2_64_WIN-NEXT: movzwl {{[0-9]+}}(%rsp), %ecx
; SSE2_64_WIN-NEXT: movw $3199, {{[0-9]+}}(%rsp) # imm = 0xC7F
; SSE2_64_WIN-NEXT: fldcw {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: movw %ax, {{[0-9]+}}(%rsp)
+; SSE2_64_WIN-NEXT: movw %cx, {{[0-9]+}}(%rsp)
; SSE2_64_WIN-NEXT: fistpll {{[0-9]+}}(%rsp)
; SSE2_64_WIN-NEXT: fldcw {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: fnstcw {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: movzwl {{[0-9]+}}(%rsp), %eax
-; SSE2_64_WIN-NEXT: movw $3199, {{[0-9]+}}(%rsp) # imm = 0xC7F
-; SSE2_64_WIN-NEXT: fldcw {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: movw %ax, {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: fld %st(1)
-; SSE2_64_WIN-NEXT: fistpll {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: fldcw {{[0-9]+}}(%rsp)
-; SSE2_64_WIN-NEXT: fucompi %st(1)
-; SSE2_64_WIN-NEXT: fstp %st(0)
-; SSE2_64_WIN-NEXT: jbe .LBB4_1
-; SSE2_64_WIN-NEXT: # %bb.2:
-; SSE2_64_WIN-NEXT: movq {{[0-9]+}}(%rsp), %rax
-; SSE2_64_WIN-NEXT: addq $24, %rsp
-; SSE2_64_WIN-NEXT: retq
-; SSE2_64_WIN-NEXT: .LBB4_1:
-; SSE2_64_WIN-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000
+; SSE2_64_WIN-NEXT: setbe %al
+; SSE2_64_WIN-NEXT: shlq $63, %rax
; SSE2_64_WIN-NEXT: xorq {{[0-9]+}}(%rsp), %rax
-; SSE2_64_WIN-NEXT: addq $24, %rsp
+; SSE2_64_WIN-NEXT: addq $16, %rsp
; SSE2_64_WIN-NEXT: retq
;
; SSE2_64_LIN-LABEL: x_to_u64:
@@ -1285,29 +1268,20 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE2_64_LIN-NEXT: flds {{.*}}(%rip)
; SSE2_64_LIN-NEXT: fld %st(1)
; SSE2_64_LIN-NEXT: fsub %st(1)
+; SSE2_64_LIN-NEXT: xorl %eax, %eax
+; SSE2_64_LIN-NEXT: fxch %st(1)
+; SSE2_64_LIN-NEXT: fucompi %st(2)
+; SSE2_64_LIN-NEXT: fcmovnbe %st(1), %st(0)
+; SSE2_64_LIN-NEXT: fstp %st(1)
; SSE2_64_LIN-NEXT: fnstcw -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: movzwl -{{[0-9]+}}(%rsp), %eax
+; SSE2_64_LIN-NEXT: movzwl -{{[0-9]+}}(%rsp), %ecx
; SSE2_64_LIN-NEXT: movw $3199, -{{[0-9]+}}(%rsp) # imm = 0xC7F
; SSE2_64_LIN-NEXT: fldcw -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: movw %ax, -{{[0-9]+}}(%rsp)
+; SSE2_64_LIN-NEXT: movw %cx, -{{[0-9]+}}(%rsp)
; SSE2_64_LIN-NEXT: fistpll -{{[0-9]+}}(%rsp)
; SSE2_64_LIN-NEXT: fldcw -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: fnstcw -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: movzwl -{{[0-9]+}}(%rsp), %eax
-; SSE2_64_LIN-NEXT: movw $3199, -{{[0-9]+}}(%rsp) # imm = 0xC7F
-; SSE2_64_LIN-NEXT: fldcw -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: movw %ax, -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: fld %st(1)
-; SSE2_64_LIN-NEXT: fistpll -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: fldcw -{{[0-9]+}}(%rsp)
-; SSE2_64_LIN-NEXT: fucompi %st(1)
-; SSE2_64_LIN-NEXT: fstp %st(0)
-; SSE2_64_LIN-NEXT: jbe .LBB4_1
-; SSE2_64_LIN-NEXT: # %bb.2:
-; SSE2_64_LIN-NEXT: movq -{{[0-9]+}}(%rsp), %rax
-; SSE2_64_LIN-NEXT: retq
-; SSE2_64_LIN-NEXT: .LBB4_1:
-; SSE2_64_LIN-NEXT: movabsq $-9223372036854775808, %rax # imm = 0x8000000000000000
+; SSE2_64_LIN-NEXT: setbe %al
+; SSE2_64_LIN-NEXT: shlq $63, %rax
; SSE2_64_LIN-NEXT: xorq -{{[0-9]+}}(%rsp), %rax
; SSE2_64_LIN-NEXT: retq
;