blob: 4e4ef722f97e67eb8124ac647b2aec3a9b7d94f5 [file] [log] [blame]
Bob Wilsone8e72be2009-10-09 17:20:46 +00001; RUN: llc < %s -march=arm -mattr=+vfp2 | FileCheck %s
Evan Cheng02b985c2007-01-19 09:20:23 +00002
Tanya Lattner6263f942008-02-17 20:02:20 +00003define float @f(i32 %a) {
Bob Wilsone8e72be2009-10-09 17:20:46 +00004;CHECK: f:
5;CHECK: fmsr
6;CHECK-NEXT: fsitos
7;CHECK-NEXT: fmrs
Evan Cheng02b985c2007-01-19 09:20:23 +00008entry:
Tanya Lattner6263f942008-02-17 20:02:20 +00009 %tmp = sitofp i32 %a to float ; <float> [#uses=1]
10 ret float %tmp
Evan Cheng02b985c2007-01-19 09:20:23 +000011}
12
Tanya Lattner6263f942008-02-17 20:02:20 +000013define double @g(i32 %a) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000014;CHECK: g:
15;CHECK: fmsr
16;CHECK-NEXT: fsitod
17;CHECK-NEXT: fmrrd
Evan Cheng02b985c2007-01-19 09:20:23 +000018entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000019 %tmp = sitofp i32 %a to double ; <double> [#uses=1]
Evan Cheng02b985c2007-01-19 09:20:23 +000020 ret double %tmp
21}
22
Tanya Lattner6263f942008-02-17 20:02:20 +000023define double @uint_to_double(i32 %a) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000024;CHECK: uint_to_double:
25;CHECK: fmsr
26;CHECK-NEXT: fuitod
27;CHECK-NEXT: fmrrd
Evan Cheng02b985c2007-01-19 09:20:23 +000028entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000029 %tmp = uitofp i32 %a to double ; <double> [#uses=1]
30 ret double %tmp
Evan Cheng02b985c2007-01-19 09:20:23 +000031}
32
Tanya Lattner6263f942008-02-17 20:02:20 +000033define float @uint_to_float(i32 %a) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000034;CHECK: uint_to_float:
35;CHECK: fmsr
36;CHECK-NEXT: fuitos
37;CHECK-NEXT: fmrs
Evan Cheng02b985c2007-01-19 09:20:23 +000038entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000039 %tmp = uitofp i32 %a to float ; <float> [#uses=1]
40 ret float %tmp
Evan Cheng02b985c2007-01-19 09:20:23 +000041}
Rafael Espindola27185192006-09-29 21:20:16 +000042
Tanya Lattner6263f942008-02-17 20:02:20 +000043define double @h(double* %v) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000044;CHECK: h:
45;CHECK: fldd
46;CHECK-NEXT: fmrrd
Rafael Espindola5aca9272006-10-07 14:03:39 +000047entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000048 %tmp = load double* %v ; <double> [#uses=1]
49 ret double %tmp
Rafael Espindola5aca9272006-10-07 14:03:39 +000050}
51
Tanya Lattner6263f942008-02-17 20:02:20 +000052define float @h2() {
Bob Wilsone8e72be2009-10-09 17:20:46 +000053;CHECK: h2:
54;CHECK: 1065353216
Rafael Espindolacd71da52006-10-03 17:27:58 +000055entry:
56 ret float 1.000000e+00
57}
Rafael Espindolaa2845842006-10-05 16:48:49 +000058
Tanya Lattner6263f942008-02-17 20:02:20 +000059define double @f2(double %a) {
Bob Wilsone8e72be2009-10-09 17:20:46 +000060;CHECK: f2:
61;CHECK-NOT: fmdrr
Rafael Espindolaa2845842006-10-05 16:48:49 +000062 ret double %a
63}
Rafael Espindola4a408d42006-10-06 12:50:22 +000064
Tanya Lattner6263f942008-02-17 20:02:20 +000065define void @f3() {
Bob Wilsone8e72be2009-10-09 17:20:46 +000066;CHECK: f3:
67;CHECK-NOT: fmdrr
68;CHECK: f4
Rafael Espindola614057b2006-10-06 19:10:05 +000069entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000070 %tmp = call double @f5( ) ; <double> [#uses=1]
71 call void @f4( double %tmp )
72 ret void
Rafael Espindola4a408d42006-10-06 12:50:22 +000073}
Rafael Espindola614057b2006-10-06 19:10:05 +000074
Tanya Lattner6263f942008-02-17 20:02:20 +000075declare void @f4(double)
76
77declare double @f5()
78