|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -; RUN: llc < %s -mtriple=i686-apple-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X86 |
3 |
| -; RUN: llc < %s -mtriple=x86_64-apple-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X64 |
| 2 | +; RUN: llc < %s -mtriple=i686-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X86 |
| 3 | +; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X64 |
| 4 | +; RUN: llc < %s -mtriple=i686-windows -mattr=+sse2 | FileCheck %s --check-prefix=X86-WIN |
| 5 | +; RUN: llc < %s -mtriple=x86_64-windows -mattr=+sse2 | FileCheck %s --check-prefix=X64-WIN |
4 | 6 |
|
5 | 7 | ; Verify that we are using the efficient uitofp --> sitofp lowering illustrated
|
6 | 8 | ; by the compiler_rt implementation of __floatundisf.
|
@@ -42,6 +44,36 @@ define float @test(i64 %a) nounwind {
|
42 | 44 | ; X64-NEXT: cvtsi2ss %rdi, %xmm0
|
43 | 45 | ; X64-NEXT: addss %xmm0, %xmm0
|
44 | 46 | ; X64-NEXT: retq
|
| 47 | +; |
| 48 | +; X86-WIN-LABEL: test: |
| 49 | +; X86-WIN: # %bb.0: # %entry |
| 50 | +; X86-WIN-NEXT: pushl %ebp |
| 51 | +; X86-WIN-NEXT: movl %esp, %ebp |
| 52 | +; X86-WIN-NEXT: andl $-8, %esp |
| 53 | +; X86-WIN-NEXT: subl $8, %esp |
| 54 | +; X86-WIN-NEXT: pushl 12(%ebp) |
| 55 | +; X86-WIN-NEXT: pushl 8(%ebp) |
| 56 | +; X86-WIN-NEXT: calll ___floatundisf |
| 57 | +; X86-WIN-NEXT: addl $8, %esp |
| 58 | +; X86-WIN-NEXT: movl %ebp, %esp |
| 59 | +; X86-WIN-NEXT: popl %ebp |
| 60 | +; X86-WIN-NEXT: retl |
| 61 | +; |
| 62 | +; X64-WIN-LABEL: test: |
| 63 | +; X64-WIN: # %bb.0: # %entry |
| 64 | +; X64-WIN-NEXT: testq %rcx, %rcx |
| 65 | +; X64-WIN-NEXT: js .LBB0_1 |
| 66 | +; X64-WIN-NEXT: # %bb.2: # %entry |
| 67 | +; X64-WIN-NEXT: cvtsi2ss %rcx, %xmm0 |
| 68 | +; X64-WIN-NEXT: retq |
| 69 | +; X64-WIN-NEXT: .LBB0_1: |
| 70 | +; X64-WIN-NEXT: movq %rcx, %rax |
| 71 | +; X64-WIN-NEXT: shrq %rax |
| 72 | +; X64-WIN-NEXT: andl $1, %ecx |
| 73 | +; X64-WIN-NEXT: orq %rax, %rcx |
| 74 | +; X64-WIN-NEXT: cvtsi2ss %rcx, %xmm0 |
| 75 | +; X64-WIN-NEXT: addss %xmm0, %xmm0 |
| 76 | +; X64-WIN-NEXT: retq |
45 | 77 | entry:
|
46 | 78 | %b = uitofp i64 %a to float
|
47 | 79 | ret float %b
|
|
0 commit comments