1 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64
5 define void @sitofp_single_i64(i64 %a, float %b) nounwind ssp {
7 ; ELF64: sitofp_single_i64
8 %b.addr = alloca float, align 4
9 %conv = sitofp i64 %a to float
13 store float %conv, float* %b.addr, align 4
17 define void @sitofp_single_i32(i32 %a, float %b) nounwind ssp {
19 ; ELF64: sitofp_single_i32
20 %b.addr = alloca float, align 4
21 %conv = sitofp i32 %a to float
25 store float %conv, float* %b.addr, align 4
29 define void @sitofp_single_i16(i16 %a, float %b) nounwind ssp {
31 ; ELF64: sitofp_single_i16
32 %b.addr = alloca float, align 4
33 %conv = sitofp i16 %a to float
38 store float %conv, float* %b.addr, align 4
42 define void @sitofp_single_i8(i8 %a) nounwind ssp {
44 ; ELF64: sitofp_single_i8
45 %b.addr = alloca float, align 4
46 %conv = sitofp i8 %a to float
51 store float %conv, float* %b.addr, align 4
55 define void @sitofp_double_i32(i32 %a, double %b) nounwind ssp {
57 ; ELF64: sitofp_double_i32
58 %b.addr = alloca double, align 8
59 %conv = sitofp i32 %a to double
63 store double %conv, double* %b.addr, align 8
67 define void @sitofp_double_i64(i64 %a, double %b) nounwind ssp {
69 ; ELF64: sitofp_double_i64
70 %b.addr = alloca double, align 8
71 %conv = sitofp i64 %a to double
75 store double %conv, double* %b.addr, align 8
79 define void @sitofp_double_i16(i16 %a, double %b) nounwind ssp {
81 ; ELF64: sitofp_double_i16
82 %b.addr = alloca double, align 8
83 %conv = sitofp i16 %a to double
88 store double %conv, double* %b.addr, align 8
92 define void @sitofp_double_i8(i8 %a, double %b) nounwind ssp {
94 ; ELF64: sitofp_double_i8
95 %b.addr = alloca double, align 8
96 %conv = sitofp i8 %a to double
101 store double %conv, double* %b.addr, align 8
107 define void @uitofp_single_i64(i64 %a, float %b) nounwind ssp {
109 ; ELF64: uitofp_single_i64
110 %b.addr = alloca float, align 4
111 %conv = uitofp i64 %a to float
115 store float %conv, float* %b.addr, align 4
119 define void @uitofp_single_i32(i32 %a, float %b) nounwind ssp {
121 ; ELF64: uitofp_single_i32
122 %b.addr = alloca float, align 4
123 %conv = uitofp i32 %a to float
127 store float %conv, float* %b.addr, align 4
131 define void @uitofp_single_i16(i16 %a, float %b) nounwind ssp {
133 ; ELF64: uitofp_single_i16
134 %b.addr = alloca float, align 4
135 %conv = uitofp i16 %a to float
136 ; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 48
140 store float %conv, float* %b.addr, align 4
144 define void @uitofp_single_i8(i8 %a) nounwind ssp {
146 ; ELF64: uitofp_single_i8
147 %b.addr = alloca float, align 4
148 %conv = uitofp i8 %a to float
149 ; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 56
153 store float %conv, float* %b.addr, align 4
157 define void @uitofp_double_i64(i64 %a, double %b) nounwind ssp {
159 ; ELF64: uitofp_double_i64
160 %b.addr = alloca double, align 8
161 %conv = uitofp i64 %a to double
165 store double %conv, double* %b.addr, align 8
169 define void @uitofp_double_i32(i32 %a, double %b) nounwind ssp {
171 ; ELF64: uitofp_double_i32
172 %b.addr = alloca double, align 8
173 %conv = uitofp i32 %a to double
177 store double %conv, double* %b.addr, align 8
181 define void @uitofp_double_i16(i16 %a, double %b) nounwind ssp {
183 ; ELF64: uitofp_double_i16
184 %b.addr = alloca double, align 8
185 %conv = uitofp i16 %a to double
186 ; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 48
190 store double %conv, double* %b.addr, align 8
194 define void @uitofp_double_i8(i8 %a, double %b) nounwind ssp {
196 ; ELF64: uitofp_double_i8
197 %b.addr = alloca double, align 8
198 %conv = uitofp i8 %a to double
199 ; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 56
203 store double %conv, double* %b.addr, align 8
209 define void @fptosi_float_i32(float %a) nounwind ssp {
211 ; ELF64: fptosi_float_i32
212 %b.addr = alloca i32, align 4
213 %conv = fptosi float %a to i32
217 store i32 %conv, i32* %b.addr, align 4
221 define void @fptosi_float_i64(float %a) nounwind ssp {
223 ; ELF64: fptosi_float_i64
224 %b.addr = alloca i64, align 4
225 %conv = fptosi float %a to i64
229 store i64 %conv, i64* %b.addr, align 4
233 define void @fptosi_double_i32(double %a) nounwind ssp {
235 ; ELF64: fptosi_double_i32
236 %b.addr = alloca i32, align 8
237 %conv = fptosi double %a to i32
241 store i32 %conv, i32* %b.addr, align 8
245 define void @fptosi_double_i64(double %a) nounwind ssp {
247 ; ELF64: fptosi_double_i64
248 %b.addr = alloca i64, align 8
249 %conv = fptosi double %a to i64
253 store i64 %conv, i64* %b.addr, align 8
259 define void @fptoui_float_i32(float %a) nounwind ssp {
261 ; ELF64: fptoui_float_i32
262 %b.addr = alloca i32, align 4
263 %conv = fptoui float %a to i32
267 store i32 %conv, i32* %b.addr, align 4
271 define void @fptoui_float_i64(float %a) nounwind ssp {
273 ; ELF64: fptoui_float_i64
274 %b.addr = alloca i64, align 4
275 %conv = fptoui float %a to i64
279 store i64 %conv, i64* %b.addr, align 4
283 define void @fptoui_double_i32(double %a) nounwind ssp {
285 ; ELF64: fptoui_double_i32
286 %b.addr = alloca i32, align 8
287 %conv = fptoui double %a to i32
291 store i32 %conv, i32* %b.addr, align 8
295 define void @fptoui_double_i64(double %a) nounwind ssp {
297 ; ELF64: fptoui_double_i64
298 %b.addr = alloca i64, align 8
299 %conv = fptoui double %a to i64
303 store i64 %conv, i64* %b.addr, align 8