comparison test/CodeGen/X86/uint_to_fp-2.ll @ 83:60c9769439b8 LLVM3.7

LLVM 3.7
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Wed, 18 Feb 2015 14:55:36 +0900
parents 95c75e76d11b
children 1172e4bd9c6f
comparison
equal deleted inserted replaced
78:af83660cff7b 83:60c9769439b8
1 ; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s 1 ; RUN: llc < %s -mtriple=i386-unknown-unknown -march=x86 -mattr=+sse2 | FileCheck %s
2 2
3 ; rdar://6504833 3 ; rdar://6504833
4 define float @test1(i32 %x) nounwind readnone { 4 define float @test1(i32 %x) nounwind readnone {
5 ; CHECK: test1 5 ; CHECK-LABEL: test1:
6 ; CHECK: movd 6 ; CHECK: # BB#0: # %entry
7 ; CHECK: orps 7 ; CHECK-NEXT: pushl %eax
8 ; CHECK: subsd 8 ; CHECK-NEXT: movsd .LCPI0_0, %xmm0
9 ; CHECK: cvtsd2ss 9 ; CHECK-NEXT: movd {{[0-9]+}}(%esp), %xmm1
10 ; CHECK: movss 10 ; CHECK-NEXT: orpd %xmm0, %xmm1
11 ; CHECK: flds 11 ; CHECK-NEXT: subsd %xmm0, %xmm1
12 ; CHECK: ret 12 ; CHECK-NEXT: xorps %xmm0, %xmm0
13 ; CHECK-NEXT: cvtsd2ss %xmm1, %xmm0
14 ; CHECK-NEXT: movss %xmm0, (%esp)
15 ; CHECK-NEXT: flds (%esp)
16 ; CHECK-NEXT: popl %eax
17 ; CHECK-NEXT: retl
13 entry: 18 entry:
14 %0 = uitofp i32 %x to float 19 %0 = uitofp i32 %x to float
15 ret float %0 20 ret float %0
16 } 21 }
17 22
18 ; PR10802 23 ; PR10802
19 define float @test2(<4 x i32> %x) nounwind readnone ssp { 24 define float @test2(<4 x i32> %x) nounwind readnone ssp {
20 ; CHECK: test2 25 ; CHECK-LABEL: test2:
21 ; CHECK: xorps [[ZERO:%xmm[0-9]+]] 26 ; CHECK: # BB#0: # %entry
22 ; CHECK: movss {{.*}}, [[ZERO]] 27 ; CHECK-NEXT: pushl %eax
23 ; CHECK: orps 28 ; CHECK-NEXT: xorps %xmm1, %xmm1
24 ; CHECK: subsd 29 ; CHECK-NEXT: movss %xmm0, %xmm1
25 ; CHECK: cvtsd2ss 30 ; CHECK-NEXT: movsd .LCPI1_0, %xmm0
26 ; CHECK: movss 31 ; CHECK-NEXT: orps %xmm0, %xmm1
27 ; CHECK: flds 32 ; CHECK-NEXT: subsd %xmm0, %xmm1
28 ; CHECK: ret 33 ; CHECK-NEXT: xorps %xmm0, %xmm0
34 ; CHECK-NEXT: cvtsd2ss %xmm1, %xmm0
35 ; CHECK-NEXT: movss %xmm0, (%esp)
36 ; CHECK-NEXT: flds (%esp)
37 ; CHECK-NEXT: popl %eax
38 ; CHECK-NEXT: retl
29 entry: 39 entry:
30 %vecext = extractelement <4 x i32> %x, i32 0 40 %vecext = extractelement <4 x i32> %x, i32 0
31 %conv = uitofp i32 %vecext to float 41 %conv = uitofp i32 %vecext to float
32 ret float %conv 42 ret float %conv
33 } 43 }