Mercurial > hg > CbC > CbC_llvm
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 } |