|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s |
3 |
| - |
4 |
| -define i32 @testmsws(float %x) { |
5 |
| -; CHECK-LABEL: testmsws: |
6 |
| -; CHECK: # %bb.0: # %entry |
7 |
| -; CHECK-NEXT: pushq %rax |
8 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 16 |
9 |
| -; CHECK-NEXT: callq llrintf |
10 |
| -; CHECK-NEXT: # kill: def $eax killed $eax killed $rax |
11 |
| -; CHECK-NEXT: popq %rcx |
12 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 8 |
13 |
| -; CHECK-NEXT: retq |
14 |
| -entry: |
15 |
| - %0 = tail call i64 @llvm.llrint.f32(float %x) |
16 |
| - %conv = trunc i64 %0 to i32 |
17 |
| - ret i32 %conv |
18 |
| -} |
| 2 | +; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s --check-prefix=X86 |
| 3 | +; RUN: llc < %s -mtriple=i686-unknown -mattr=sse2 | FileCheck %s --check-prefix=SSE2 |
| 4 | +; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefix=X64 |
19 | 5 |
|
20 | 6 | define i64 @testmsxs(float %x) {
|
21 |
| -; CHECK-LABEL: testmsxs: |
22 |
| -; CHECK: # %bb.0: # %entry |
23 |
| -; CHECK-NEXT: jmp llrintf # TAILCALL |
| 7 | +; X86-LABEL: testmsxs: |
| 8 | +; X86: # %bb.0: # %entry |
| 9 | +; X86-NEXT: pushl %eax |
| 10 | +; X86-NEXT: .cfi_def_cfa_offset 8 |
| 11 | +; X86-NEXT: flds {{[0-9]+}}(%esp) |
| 12 | +; X86-NEXT: fstps (%esp) |
| 13 | +; X86-NEXT: calll llrintf |
| 14 | +; X86-NEXT: popl %ecx |
| 15 | +; X86-NEXT: .cfi_def_cfa_offset 4 |
| 16 | +; X86-NEXT: retl |
| 17 | +; |
| 18 | +; SSE2-LABEL: testmsxs: |
| 19 | +; SSE2: # %bb.0: # %entry |
| 20 | +; SSE2-NEXT: pushl %eax |
| 21 | +; SSE2-NEXT: .cfi_def_cfa_offset 8 |
| 22 | +; SSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero |
| 23 | +; SSE2-NEXT: movss %xmm0, (%esp) |
| 24 | +; SSE2-NEXT: calll llrintf |
| 25 | +; SSE2-NEXT: popl %ecx |
| 26 | +; SSE2-NEXT: .cfi_def_cfa_offset 4 |
| 27 | +; SSE2-NEXT: retl |
| 28 | +; |
| 29 | +; X64-LABEL: testmsxs: |
| 30 | +; X64: # %bb.0: # %entry |
| 31 | +; X64-NEXT: jmp llrintf # TAILCALL |
24 | 32 | entry:
|
25 | 33 | %0 = tail call i64 @llvm.llrint.f32(float %x)
|
26 | 34 | ret i64 %0
|
27 | 35 | }
|
28 | 36 |
|
29 |
| -define i32 @testmswd(double %x) { |
30 |
| -; CHECK-LABEL: testmswd: |
31 |
| -; CHECK: # %bb.0: # %entry |
32 |
| -; CHECK-NEXT: pushq %rax |
33 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 16 |
34 |
| -; CHECK-NEXT: callq llrint |
35 |
| -; CHECK-NEXT: # kill: def $eax killed $eax killed $rax |
36 |
| -; CHECK-NEXT: popq %rcx |
37 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 8 |
38 |
| -; CHECK-NEXT: retq |
39 |
| -entry: |
40 |
| - %0 = tail call i64 @llvm.llrint.f64(double %x) |
41 |
| - %conv = trunc i64 %0 to i32 |
42 |
| - ret i32 %conv |
43 |
| -} |
44 |
| - |
45 | 37 | define i64 @testmsxd(double %x) {
|
46 |
| -; CHECK-LABEL: testmsxd: |
47 |
| -; CHECK: # %bb.0: # %entry |
48 |
| -; CHECK-NEXT: jmp llrint # TAILCALL |
| 38 | +; X86-LABEL: testmsxd: |
| 39 | +; X86: # %bb.0: # %entry |
| 40 | +; X86-NEXT: subl $8, %esp |
| 41 | +; X86-NEXT: .cfi_def_cfa_offset 12 |
| 42 | +; X86-NEXT: fldl {{[0-9]+}}(%esp) |
| 43 | +; X86-NEXT: fstpl (%esp) |
| 44 | +; X86-NEXT: calll llrint |
| 45 | +; X86-NEXT: addl $8, %esp |
| 46 | +; X86-NEXT: .cfi_def_cfa_offset 4 |
| 47 | +; X86-NEXT: retl |
| 48 | +; |
| 49 | +; SSE2-LABEL: testmsxd: |
| 50 | +; SSE2: # %bb.0: # %entry |
| 51 | +; SSE2-NEXT: subl $8, %esp |
| 52 | +; SSE2-NEXT: .cfi_def_cfa_offset 12 |
| 53 | +; SSE2-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero |
| 54 | +; SSE2-NEXT: movsd %xmm0, (%esp) |
| 55 | +; SSE2-NEXT: calll llrint |
| 56 | +; SSE2-NEXT: addl $8, %esp |
| 57 | +; SSE2-NEXT: .cfi_def_cfa_offset 4 |
| 58 | +; SSE2-NEXT: retl |
| 59 | +; |
| 60 | +; X64-LABEL: testmsxd: |
| 61 | +; X64: # %bb.0: # %entry |
| 62 | +; X64-NEXT: jmp llrint # TAILCALL |
49 | 63 | entry:
|
50 | 64 | %0 = tail call i64 @llvm.llrint.f64(double %x)
|
51 | 65 | ret i64 %0
|
52 | 66 | }
|
53 | 67 |
|
54 |
| -define dso_local i32 @testmswl(x86_fp80 %x) { |
55 |
| -; CHECK-LABEL: testmswl: |
56 |
| -; CHECK: # %bb.0: # %entry |
57 |
| -; CHECK-NEXT: subq $24, %rsp |
58 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 32 |
59 |
| -; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) |
60 |
| -; CHECK-NEXT: fstpt (%rsp) |
61 |
| -; CHECK-NEXT: callq llrintl |
62 |
| -; CHECK-NEXT: # kill: def $eax killed $eax killed $rax |
63 |
| -; CHECK-NEXT: addq $24, %rsp |
64 |
| -; CHECK-NEXT: .cfi_def_cfa_offset 8 |
65 |
| -; CHECK-NEXT: retq |
66 |
| -entry: |
67 |
| - %0 = tail call i64 @llvm.llrint.f80(x86_fp80 %x) |
68 |
| - %conv = trunc i64 %0 to i32 |
69 |
| - ret i32 %conv |
70 |
| -} |
71 |
| - |
72 |
| -define dso_local i64 @testmsll(x86_fp80 %x) { |
73 |
| -; CHECK-LABEL: testmsll: |
74 |
| -; CHECK: # %bb.0: # %entry |
75 |
| -; CHECK-NEXT: jmp llrintl # TAILCALL |
| 68 | +define i64 @testmsll(x86_fp80 %x) { |
| 69 | +; X86-LABEL: testmsll: |
| 70 | +; X86: # %bb.0: # %entry |
| 71 | +; X86-NEXT: subl $12, %esp |
| 72 | +; X86-NEXT: .cfi_def_cfa_offset 16 |
| 73 | +; X86-NEXT: fldt {{[0-9]+}}(%esp) |
| 74 | +; X86-NEXT: fstpt (%esp) |
| 75 | +; X86-NEXT: calll llrintl |
| 76 | +; X86-NEXT: addl $12, %esp |
| 77 | +; X86-NEXT: .cfi_def_cfa_offset 4 |
| 78 | +; X86-NEXT: retl |
| 79 | +; |
| 80 | +; SSE2-LABEL: testmsll: |
| 81 | +; SSE2: # %bb.0: # %entry |
| 82 | +; SSE2-NEXT: subl $12, %esp |
| 83 | +; SSE2-NEXT: .cfi_def_cfa_offset 16 |
| 84 | +; SSE2-NEXT: fldt {{[0-9]+}}(%esp) |
| 85 | +; SSE2-NEXT: fstpt (%esp) |
| 86 | +; SSE2-NEXT: calll llrintl |
| 87 | +; SSE2-NEXT: addl $12, %esp |
| 88 | +; SSE2-NEXT: .cfi_def_cfa_offset 4 |
| 89 | +; SSE2-NEXT: retl |
| 90 | +; |
| 91 | +; X64-LABEL: testmsll: |
| 92 | +; X64: # %bb.0: # %entry |
| 93 | +; X64-NEXT: jmp llrintl # TAILCALL |
76 | 94 | entry:
|
77 | 95 | %0 = tail call i64 @llvm.llrint.f80(x86_fp80 %x)
|
78 | 96 | ret i64 %0
|
|
0 commit comments