Lines Matching refs:F16C

3 ; RUN: llc < %s -mtriple=i686-apple-darwin | FileCheck %s --check-prefix=X32-F16C
5 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=f16c | FileCheck %s --check-prefix=X64-F16C
22 ; X32-F16C-LABEL: half_to_float:
23 ; X32-F16C: ## %bb.0:
24 ; X32-F16C-NEXT: subl $12, %esp
25 ; X32-F16C-NEXT: .cfi_def_cfa_offset 16
26 ; X32-F16C-NEXT: movzwl _a, %eax
27 ; X32-F16C-NEXT: movl %eax, (%esp)
28 ; X32-F16C-NEXT: calll ___extendhfsf2
29 ; X32-F16C-NEXT: addl $12, %esp
30 ; X32-F16C-NEXT: retl
41 ; X64-F16C-LABEL: half_to_float:
42 ; X64-F16C: ## %bb.0:
43 ; X64-F16C-NEXT: movzwl {{.*}}(%rip), %eax
44 ; X64-F16C-NEXT: vmovd %eax, %xmm0
45 ; X64-F16C-NEXT: vcvtph2ps %xmm0, %xmm0
46 ; X64-F16C-NEXT: retq
63 ; X32-F16C-LABEL: half_to_double:
64 ; X32-F16C: ## %bb.0:
65 ; X32-F16C-NEXT: subl $12, %esp
66 ; X32-F16C-NEXT: .cfi_def_cfa_offset 16
67 ; X32-F16C-NEXT: movzwl _a, %eax
68 ; X32-F16C-NEXT: movl %eax, (%esp)
69 ; X32-F16C-NEXT: calll ___extendhfsf2
70 ; X32-F16C-NEXT: addl $12, %esp
71 ; X32-F16C-NEXT: retl
83 ; X64-F16C-LABEL: half_to_double:
84 ; X64-F16C: ## %bb.0:
85 ; X64-F16C-NEXT: movzwl {{.*}}(%rip), %eax
86 ; X64-F16C-NEXT: vmovd %eax, %xmm0
87 ; X64-F16C-NEXT: vcvtph2ps %xmm0, %xmm0
88 ; X64-F16C-NEXT: vcvtss2sd %xmm0, %xmm0, %xmm0
89 ; X64-F16C-NEXT: retq
106 ; X32-F16C-LABEL: half_to_fp80:
107 ; X32-F16C: ## %bb.0:
108 ; X32-F16C-NEXT: subl $12, %esp
109 ; X32-F16C-NEXT: .cfi_def_cfa_offset 16
110 ; X32-F16C-NEXT: movzwl _a, %eax
111 ; X32-F16C-NEXT: movl %eax, (%esp)
112 ; X32-F16C-NEXT: calll ___extendhfsf2
113 ; X32-F16C-NEXT: addl $12, %esp
114 ; X32-F16C-NEXT: retl
128 ; X64-F16C-LABEL: half_to_fp80:
129 ; X64-F16C: ## %bb.0:
130 ; X64-F16C-NEXT: movzwl {{.*}}(%rip), %eax
131 ; X64-F16C-NEXT: vmovd %eax, %xmm0
132 ; X64-F16C-NEXT: vcvtph2ps %xmm0, %xmm0
133 ; X64-F16C-NEXT: vmovss %xmm0, -{{[0-9]+}}(%rsp)
134 ; X64-F16C-NEXT: flds -{{[0-9]+}}(%rsp)
135 ; X64-F16C-NEXT: wait
136 ; X64-F16C-NEXT: retq
155 ; X32-F16C-LABEL: float_to_half:
156 ; X32-F16C: ## %bb.0:
157 ; X32-F16C-NEXT: subl $12, %esp
158 ; X32-F16C-NEXT: .cfi_def_cfa_offset 16
159 ; X32-F16C-NEXT: flds {{[0-9]+}}(%esp)
160 ; X32-F16C-NEXT: fstps (%esp)
161 ; X32-F16C-NEXT: wait
162 ; X32-F16C-NEXT: calll ___truncsfhf2
163 ; X32-F16C-NEXT: movw %ax, _a
164 ; X32-F16C-NEXT: addl $12, %esp
165 ; X32-F16C-NEXT: retl
176 ; X64-F16C-LABEL: float_to_half:
177 ; X64-F16C: ## %bb.0:
178 ; X64-F16C-NEXT: vxorps %xmm1, %xmm1, %xmm1
179 ; X64-F16C-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3]
180 ; X64-F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
181 ; X64-F16C-NEXT: vpextrw $0, %xmm0, {{.*}}(%rip)
182 ; X64-F16C-NEXT: retq
201 ; X32-F16C-LABEL: double_to_half:
202 ; X32-F16C: ## %bb.0:
203 ; X32-F16C-NEXT: subl $12, %esp
204 ; X32-F16C-NEXT: .cfi_def_cfa_offset 16
205 ; X32-F16C-NEXT: fldl {{[0-9]+}}(%esp)
206 ; X32-F16C-NEXT: fstpl (%esp)
207 ; X32-F16C-NEXT: wait
208 ; X32-F16C-NEXT: calll ___truncdfhf2
209 ; X32-F16C-NEXT: movw %ax, _a
210 ; X32-F16C-NEXT: addl $12, %esp
211 ; X32-F16C-NEXT: retl
222 ; X64-F16C-LABEL: double_to_half:
223 ; X64-F16C: ## %bb.0:
224 ; X64-F16C-NEXT: pushq %rax
225 ; X64-F16C-NEXT: .cfi_def_cfa_offset 16
226 ; X64-F16C-NEXT: callq ___truncdfhf2
227 ; X64-F16C-NEXT: movw %ax, {{.*}}(%rip)
228 ; X64-F16C-NEXT: popq %rax
229 ; X64-F16C-NEXT: retq
248 ; X32-F16C-LABEL: fp80_to_half:
249 ; X32-F16C: ## %bb.0:
250 ; X32-F16C-NEXT: subl $28, %esp
251 ; X32-F16C-NEXT: .cfi_def_cfa_offset 32
252 ; X32-F16C-NEXT: fldt {{[0-9]+}}(%esp)
253 ; X32-F16C-NEXT: fstpt (%esp)
254 ; X32-F16C-NEXT: wait
255 ; X32-F16C-NEXT: calll ___truncxfhf2
256 ; X32-F16C-NEXT: movw %ax, _a
257 ; X32-F16C-NEXT: addl $28, %esp
258 ; X32-F16C-NEXT: retl
272 ; X64-F16C-LABEL: fp80_to_half:
273 ; X64-F16C: ## %bb.0:
274 ; X64-F16C-NEXT: subq $24, %rsp
275 ; X64-F16C-NEXT: .cfi_def_cfa_offset 32
276 ; X64-F16C-NEXT: fldt {{[0-9]+}}(%rsp)
277 ; X64-F16C-NEXT: fstpt (%rsp)
278 ; X64-F16C-NEXT: wait
279 ; X64-F16C-NEXT: callq ___truncxfhf2
280 ; X64-F16C-NEXT: movw %ax, {{.*}}(%rip)
281 ; X64-F16C-NEXT: addq $24, %rsp
282 ; X64-F16C-NEXT: retq
310 ; X32-F16C-LABEL: add:
311 ; X32-F16C: ## %bb.0:
312 ; X32-F16C-NEXT: subl $12, %esp
313 ; X32-F16C-NEXT: .cfi_def_cfa_offset 16
314 ; X32-F16C-NEXT: movzwl _a, %eax
315 ; X32-F16C-NEXT: movl %eax, (%esp)
316 ; X32-F16C-NEXT: calll ___extendhfsf2
317 ; X32-F16C-NEXT: fstps {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Spill
318 ; X32-F16C-NEXT: wait
319 ; X32-F16C-NEXT: movzwl _b, %eax
320 ; X32-F16C-NEXT: movl %eax, (%esp)
321 ; X32-F16C-NEXT: calll ___extendhfsf2
322 ; X32-F16C-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) ## 4-byte Folded Reload
323 ; X32-F16C-NEXT: faddp %st, %st(1)
324 ; X32-F16C-NEXT: fstps (%esp)
325 ; X32-F16C-NEXT: wait
326 ; X32-F16C-NEXT: calll ___truncsfhf2
327 ; X32-F16C-NEXT: movw %ax, _c
328 ; X32-F16C-NEXT: addl $12, %esp
329 ; X32-F16C-NEXT: retl
346 ; X64-F16C-LABEL: add:
347 ; X64-F16C: ## %bb.0:
348 ; X64-F16C-NEXT: movzwl {{.*}}(%rip), %eax
349 ; X64-F16C-NEXT: vmovd %eax, %xmm0
350 ; X64-F16C-NEXT: vcvtph2ps %xmm0, %xmm0
351 ; X64-F16C-NEXT: movzwl {{.*}}(%rip), %eax
352 ; X64-F16C-NEXT: vmovd %eax, %xmm1
353 ; X64-F16C-NEXT: vcvtph2ps %xmm1, %xmm1
354 ; X64-F16C-NEXT: vaddss %xmm1, %xmm0, %xmm0
355 ; X64-F16C-NEXT: vxorps %xmm1, %xmm1, %xmm1
356 ; X64-F16C-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3]
357 ; X64-F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
358 ; X64-F16C-NEXT: vpextrw $0, %xmm0, {{.*}}(%rip)
359 ; X64-F16C-NEXT: retq