blob: acb4bb906e7022649dc680adea8126fa869fae4c [file] [log] [blame]
Michael Kupersteina01a5ee2015-11-10 17:37:49 +00001; RUN: llc -mtriple=i386-pc-linux < %s | FileCheck %s
2; RUN: llc -mtriple=x86_64-pc-linux < %s | FileCheck %s
Michael Kupersteinb34de722015-11-04 11:17:53 +00003
4; Function Attrs: nounwind
Michael Kupersteina01a5ee2015-11-10 17:37:49 +00005; CHECK-LABEL: s64_to_d:
6; CHECK: call{{l|q}} __floatdidf
7define double @s64_to_d(i64 %n) #0 {
Michael Kupersteinb34de722015-11-04 11:17:53 +00008entry:
9 %conv = sitofp i64 %n to double
10 ret double %conv
11}
12
Michael Kupersteina01a5ee2015-11-10 17:37:49 +000013; CHECK-LABEL: s64_to_f:
14; CHECK: call{{l|q}} __floatdisf
15define float @s64_to_f(i64 %n) #0 {
16entry:
17 %conv = sitofp i64 %n to float
18 ret float %conv
19}
20
21; CHECK-LABEL: s32_to_d:
22; CHECK: call{{l|q}} __floatsidf
23define double @s32_to_d(i32 %n) #0 {
24entry:
25 %conv = sitofp i32 %n to double
26 ret double %conv
27}
28
29; CHECK-LABEL: s32_to_f:
30; CHECK: call{{l|q}} __floatsisf
31define float @s32_to_f(i32 %n) #0 {
32entry:
33 %conv = sitofp i32 %n to float
34 ret float %conv
35}
36
37; CHECK-LABEL: u64_to_d:
38; CHECK: call{{l|q}} __floatundidf
39define double @u64_to_d(i64 %n) #0 {
40entry:
41 %conv = uitofp i64 %n to double
42 ret double %conv
43}
44
45; CHECK-LABEL: u64_to_f:
46; CHECK: call{{l|q}} __floatundisf
47define float @u64_to_f(i64 %n) #0 {
48entry:
49 %conv = uitofp i64 %n to float
50 ret float %conv
51}
52
53; CHECK-LABEL: u32_to_d:
54; CHECK: call{{l|q}} __floatunsidf
55define double @u32_to_d(i32 %n) #0 {
56entry:
57 %conv = uitofp i32 %n to double
58 ret double %conv
59}
60
61; CHECK-LABEL: u32_to_f:
62; CHECK: call{{l|q}} __floatunsisf
63define float @u32_to_f(i32 %n) #0 {
64entry:
65 %conv = uitofp i32 %n to float
66 ret float %conv
67}
68
69; CHECK-LABEL: d_to_s64:
70; CHECK: call{{l|q}} __fixdfdi
71define i64 @d_to_s64(double %n) #0 {
72entry:
73 %conv = fptosi double %n to i64
74 ret i64 %conv
75}
76
77; CHECK-LABEL: d_to_s32:
78; CHECK: call{{l|q}} __fixdfsi
79define i32 @d_to_s32(double %n) #0 {
80entry:
81 %conv = fptosi double %n to i32
82 ret i32 %conv
83}
84
85; CHECK-LABEL: f_to_s64:
86; CHECK: call{{l|q}} __fixsfdi
87define i64 @f_to_s64(float %n) #0 {
88entry:
89 %conv = fptosi float %n to i64
90 ret i64 %conv
91}
92
93; CHECK-LABEL: f_to_s32:
94; CHECK: call{{l|q}} __fixsfsi
95define i32 @f_to_s32(float %n) #0 {
96entry:
97 %conv = fptosi float %n to i32
98 ret i32 %conv
99}
100
101; CHECK-LABEL: d_to_u64:
102; CHECK: call{{l|q}} __fixunsdfdi
103define i64 @d_to_u64(double %n) #0 {
104entry:
105 %conv = fptoui double %n to i64
106 ret i64 %conv
107}
108
109; CHECK-LABEL: d_to_u32:
110; CHECK: call{{l|q}} __fixunsdfsi
111define i32 @d_to_u32(double %n) #0 {
112entry:
113 %conv = fptoui double %n to i32
114 ret i32 %conv
115}
116
117; CHECK-LABEL: f_to_u64:
118; CHECK: call{{l|q}} __fixunssfdi
119define i64 @f_to_u64(float %n) #0 {
120entry:
121 %conv = fptoui float %n to i64
122 ret i64 %conv
123}
124
125; CHECK-LABEL: f_to_u32:
126; CHECK: call{{l|q}} __fixunssfsi
127define i32 @f_to_u32(float %n) #0 {
128entry:
129 %conv = fptoui float %n to i32
130 ret i32 %conv
131}
132
Michael Kuperstein801ee742015-12-15 12:55:50 +0000133; CHECK-LABEL: f_to_s8:
134; CHECK: call{{l|q}} __fixsfsi
135define i8 @f_to_s8(float %f, i8 %i) #0 {
136entry:
137 %conv = fptosi float %f to i8
138 %add = add i8 %conv, %i
139 ret i8 %add
140}
141
142; CHECK-LABEL: f_to_u8:
143; CHECK: call{{l|q}} __fixunssfsi
144define i8 @f_to_u8(float %f, i8 %i) #0 {
145entry:
146 %conv = fptoui float %f to i8
147 %add = add i8 %conv, %i
148 ret i8 %add
149}
150
151; CHECK-LABEL: f_to_s16:
152; CHECK: call{{l|q}} __fixsfsi
153define i16 @f_to_s16(float %f, i16 %i) #0 {
154entry:
155 %conv = fptosi float %f to i16
156 %add = add i16 %conv, %i
157 ret i16 %add
158}
159
160; CHECK-LABEL: f_to_u16:
161; CHECK: call{{l|q}} __fixunssfsi
162define i16 @f_to_u16(float %f, i16 %i) #0 {
163entry:
164 %conv = fptoui float %f to i16
165 %add = add i16 %conv, %i
166 ret i16 %add
167}
168
Michael Kupersteinb34de722015-11-04 11:17:53 +0000169attributes #0 = { nounwind "use-soft-float"="true" }