Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -march=arm -mattr=+vfp2 | FileCheck %s |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 2 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 3 | define float @f(i32 %a) { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 4 | ;CHECK: f: |
Jim Grosbach | e516549 | 2009-11-09 00:11:35 +0000 | [diff] [blame] | 5 | ;CHECK: vmov |
6 | ;CHECK-NEXT: vcvt.f32.s32 | ||||
7 | ;CHECK-NEXT: vmov | ||||
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 8 | entry: |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 9 | %tmp = sitofp i32 %a to float ; <float> [#uses=1] |
10 | ret float %tmp | ||||
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 11 | } |
12 | |||||
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 13 | define double @g(i32 %a) { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 14 | ;CHECK: g: |
Jim Grosbach | e516549 | 2009-11-09 00:11:35 +0000 | [diff] [blame] | 15 | ;CHECK: vmov |
16 | ;CHECK-NEXT: vcvt.f64.s32 | ||||
17 | ;CHECK-NEXT: vmov | ||||
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 18 | entry: |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 19 | %tmp = sitofp i32 %a to double ; <double> [#uses=1] |
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 20 | ret double %tmp |
21 | } | ||||
22 | |||||
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 23 | define double @uint_to_double(i32 %a) { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 24 | ;CHECK: uint_to_double: |
Jim Grosbach | e516549 | 2009-11-09 00:11:35 +0000 | [diff] [blame] | 25 | ;CHECK: vmov |
26 | ;CHECK-NEXT: vcvt.f64.u32 | ||||
27 | ;CHECK-NEXT: vmov | ||||
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 28 | entry: |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 29 | %tmp = uitofp i32 %a to double ; <double> [#uses=1] |
30 | ret double %tmp | ||||
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 31 | } |
32 | |||||
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 33 | define float @uint_to_float(i32 %a) { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 34 | ;CHECK: uint_to_float: |
Jim Grosbach | e516549 | 2009-11-09 00:11:35 +0000 | [diff] [blame] | 35 | ;CHECK: vmov |
36 | ;CHECK-NEXT: vcvt.f32.u32 | ||||
37 | ;CHECK-NEXT: vmov | ||||
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 38 | entry: |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 39 | %tmp = uitofp i32 %a to float ; <float> [#uses=1] |
40 | ret float %tmp | ||||
Evan Cheng | 02b985c | 2007-01-19 09:20:23 +0000 | [diff] [blame] | 41 | } |
Rafael Espindola | 2718519 | 2006-09-29 21:20:16 +0000 | [diff] [blame] | 42 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 43 | define double @h(double* %v) { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 44 | ;CHECK: h: |
Jim Grosbach | e516549 | 2009-11-09 00:11:35 +0000 | [diff] [blame] | 45 | ;CHECK: vldr.64 |
46 | ;CHECK-NEXT: vmov | ||||
Rafael Espindola | 5aca927 | 2006-10-07 14:03:39 +0000 | [diff] [blame] | 47 | entry: |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 48 | %tmp = load double* %v ; <double> [#uses=1] |
49 | ret double %tmp | ||||
Rafael Espindola | 5aca927 | 2006-10-07 14:03:39 +0000 | [diff] [blame] | 50 | } |
51 | |||||
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 52 | define float @h2() { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 53 | ;CHECK: h2: |
Jim Grosbach | d4ef243 | 2010-09-17 20:21:03 +0000 | [diff] [blame] | 54 | ;CHECK: mov r0, #254, 10 |
Rafael Espindola | cd71da5 | 2006-10-03 17:27:58 +0000 | [diff] [blame] | 55 | entry: |
56 | ret float 1.000000e+00 | ||||
57 | } | ||||
Rafael Espindola | a284584 | 2006-10-05 16:48:49 +0000 | [diff] [blame] | 58 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 59 | define double @f2(double %a) { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 60 | ;CHECK: f2: |
Jim Grosbach | e516549 | 2009-11-09 00:11:35 +0000 | [diff] [blame] | 61 | ;CHECK-NOT: vmov |
Rafael Espindola | a284584 | 2006-10-05 16:48:49 +0000 | [diff] [blame] | 62 | ret double %a |
63 | } | ||||
Rafael Espindola | 4a408d4 | 2006-10-06 12:50:22 +0000 | [diff] [blame] | 64 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 65 | define void @f3() { |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 66 | ;CHECK: f3: |
Jim Grosbach | e516549 | 2009-11-09 00:11:35 +0000 | [diff] [blame] | 67 | ;CHECK-NOT: vmov |
Bob Wilson | e8e72be | 2009-10-09 17:20:46 +0000 | [diff] [blame] | 68 | ;CHECK: f4 |
Rafael Espindola | 614057b | 2006-10-06 19:10:05 +0000 | [diff] [blame] | 69 | entry: |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 70 | %tmp = call double @f5( ) ; <double> [#uses=1] |
71 | call void @f4( double %tmp ) | ||||
72 | ret void | ||||
Rafael Espindola | 4a408d4 | 2006-10-06 12:50:22 +0000 | [diff] [blame] | 73 | } |
Rafael Espindola | 614057b | 2006-10-06 19:10:05 +0000 | [diff] [blame] | 74 | |
Tanya Lattner | 6263f94 | 2008-02-17 20:02:20 +0000 | [diff] [blame] | 75 | declare void @f4(double) |
76 | |||||
77 | declare double @f5() | ||||
78 |