1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -O2 -mtriple=x86_64-linux-android \
3 ; RUN: -enable-legalize-types-checking \
5 ; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu \
6 ; RUN: -enable-legalize-types-checking \
8 ; RUN: llc < %s -O2 -mtriple=i686-linux-gnu -mattr=+sse2 \
9 ; RUN: -enable-legalize-types-checking \
10 ; RUN: | FileCheck %s --check-prefix=X86
12 ; Check all soft floating point library function calls.
14 define fp128 @add(fp128 %x, fp128 %y) nounwind strictfp {
16 ; CHECK: # %bb.0: # %entry
17 ; CHECK-NEXT: pushq %rax
18 ; CHECK-NEXT: callq __addtf3@PLT
19 ; CHECK-NEXT: popq %rax
23 ; X86: # %bb.0: # %entry
24 ; X86-NEXT: pushl %edi
25 ; X86-NEXT: pushl %esi
26 ; X86-NEXT: subl $20, %esp
27 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
28 ; X86-NEXT: subl $12, %esp
29 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
30 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
31 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
32 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
33 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
34 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
35 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
36 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
37 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
38 ; X86-NEXT: pushl %eax
39 ; X86-NEXT: calll __addtf3
40 ; X86-NEXT: addl $44, %esp
41 ; X86-NEXT: movl (%esp), %eax
42 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
43 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
44 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
45 ; X86-NEXT: movl %edi, 8(%esi)
46 ; X86-NEXT: movl %edx, 12(%esi)
47 ; X86-NEXT: movl %eax, (%esi)
48 ; X86-NEXT: movl %ecx, 4(%esi)
49 ; X86-NEXT: movl %esi, %eax
50 ; X86-NEXT: addl $20, %esp
55 %add = call fp128 @llvm.experimental.constrained.fadd.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
59 define fp128 @sub(fp128 %x, fp128 %y) nounwind strictfp {
61 ; CHECK: # %bb.0: # %entry
62 ; CHECK-NEXT: pushq %rax
63 ; CHECK-NEXT: callq __subtf3@PLT
64 ; CHECK-NEXT: popq %rax
68 ; X86: # %bb.0: # %entry
69 ; X86-NEXT: pushl %edi
70 ; X86-NEXT: pushl %esi
71 ; X86-NEXT: subl $20, %esp
72 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
73 ; X86-NEXT: subl $12, %esp
74 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
75 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
76 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
77 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
78 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
79 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
80 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
81 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
82 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
83 ; X86-NEXT: pushl %eax
84 ; X86-NEXT: calll __subtf3
85 ; X86-NEXT: addl $44, %esp
86 ; X86-NEXT: movl (%esp), %eax
87 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
88 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
89 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
90 ; X86-NEXT: movl %edi, 8(%esi)
91 ; X86-NEXT: movl %edx, 12(%esi)
92 ; X86-NEXT: movl %eax, (%esi)
93 ; X86-NEXT: movl %ecx, 4(%esi)
94 ; X86-NEXT: movl %esi, %eax
95 ; X86-NEXT: addl $20, %esp
100 %sub = call fp128 @llvm.experimental.constrained.fsub.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
104 define fp128 @mul(fp128 %x, fp128 %y) nounwind strictfp {
106 ; CHECK: # %bb.0: # %entry
107 ; CHECK-NEXT: pushq %rax
108 ; CHECK-NEXT: callq __multf3@PLT
109 ; CHECK-NEXT: popq %rax
113 ; X86: # %bb.0: # %entry
114 ; X86-NEXT: pushl %edi
115 ; X86-NEXT: pushl %esi
116 ; X86-NEXT: subl $20, %esp
117 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
118 ; X86-NEXT: subl $12, %esp
119 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
120 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
121 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
122 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
123 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
124 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
125 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
126 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
127 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
128 ; X86-NEXT: pushl %eax
129 ; X86-NEXT: calll __multf3
130 ; X86-NEXT: addl $44, %esp
131 ; X86-NEXT: movl (%esp), %eax
132 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
133 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
134 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
135 ; X86-NEXT: movl %edi, 8(%esi)
136 ; X86-NEXT: movl %edx, 12(%esi)
137 ; X86-NEXT: movl %eax, (%esi)
138 ; X86-NEXT: movl %ecx, 4(%esi)
139 ; X86-NEXT: movl %esi, %eax
140 ; X86-NEXT: addl $20, %esp
141 ; X86-NEXT: popl %esi
142 ; X86-NEXT: popl %edi
145 %mul = call fp128 @llvm.experimental.constrained.fmul.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
149 define fp128 @div(fp128 %x, fp128 %y) nounwind strictfp {
151 ; CHECK: # %bb.0: # %entry
152 ; CHECK-NEXT: pushq %rax
153 ; CHECK-NEXT: callq __divtf3@PLT
154 ; CHECK-NEXT: popq %rax
158 ; X86: # %bb.0: # %entry
159 ; X86-NEXT: pushl %edi
160 ; X86-NEXT: pushl %esi
161 ; X86-NEXT: subl $20, %esp
162 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
163 ; X86-NEXT: subl $12, %esp
164 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
165 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
166 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
167 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
168 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
169 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
170 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
171 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
172 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
173 ; X86-NEXT: pushl %eax
174 ; X86-NEXT: calll __divtf3
175 ; X86-NEXT: addl $44, %esp
176 ; X86-NEXT: movl (%esp), %eax
177 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
178 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
179 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
180 ; X86-NEXT: movl %edi, 8(%esi)
181 ; X86-NEXT: movl %edx, 12(%esi)
182 ; X86-NEXT: movl %eax, (%esi)
183 ; X86-NEXT: movl %ecx, 4(%esi)
184 ; X86-NEXT: movl %esi, %eax
185 ; X86-NEXT: addl $20, %esp
186 ; X86-NEXT: popl %esi
187 ; X86-NEXT: popl %edi
190 %div = call fp128 @llvm.experimental.constrained.fdiv.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
194 define fp128 @fma(fp128 %x, fp128 %y, fp128 %z) nounwind strictfp {
196 ; CHECK: # %bb.0: # %entry
197 ; CHECK-NEXT: pushq %rax
198 ; CHECK-NEXT: callq fmal@PLT
199 ; CHECK-NEXT: popq %rax
203 ; X86: # %bb.0: # %entry
204 ; X86-NEXT: pushl %edi
205 ; X86-NEXT: pushl %esi
206 ; X86-NEXT: subl $20, %esp
207 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
208 ; X86-NEXT: subl $12, %esp
209 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
210 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
211 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
212 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
213 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
214 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
215 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
216 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
217 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
218 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
219 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
220 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
221 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
222 ; X86-NEXT: pushl %eax
223 ; X86-NEXT: calll fmal
224 ; X86-NEXT: addl $60, %esp
225 ; X86-NEXT: movl (%esp), %eax
226 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
227 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
228 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
229 ; X86-NEXT: movl %edi, 8(%esi)
230 ; X86-NEXT: movl %edx, 12(%esi)
231 ; X86-NEXT: movl %eax, (%esi)
232 ; X86-NEXT: movl %ecx, 4(%esi)
233 ; X86-NEXT: movl %esi, %eax
234 ; X86-NEXT: addl $20, %esp
235 ; X86-NEXT: popl %esi
236 ; X86-NEXT: popl %edi
239 %fma = call fp128 @llvm.experimental.constrained.fma.f128(fp128 %x, fp128 %y, fp128 %z, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
243 define fp128 @frem(fp128 %x, fp128 %y) nounwind strictfp {
245 ; CHECK: # %bb.0: # %entry
246 ; CHECK-NEXT: pushq %rax
247 ; CHECK-NEXT: callq fmodl@PLT
248 ; CHECK-NEXT: popq %rax
252 ; X86: # %bb.0: # %entry
253 ; X86-NEXT: pushl %edi
254 ; X86-NEXT: pushl %esi
255 ; X86-NEXT: subl $20, %esp
256 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
257 ; X86-NEXT: subl $12, %esp
258 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
259 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
260 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
261 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
262 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
263 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
264 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
265 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
266 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
267 ; X86-NEXT: pushl %eax
268 ; X86-NEXT: calll fmodl
269 ; X86-NEXT: addl $44, %esp
270 ; X86-NEXT: movl (%esp), %eax
271 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
272 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
273 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
274 ; X86-NEXT: movl %edi, 8(%esi)
275 ; X86-NEXT: movl %edx, 12(%esi)
276 ; X86-NEXT: movl %eax, (%esi)
277 ; X86-NEXT: movl %ecx, 4(%esi)
278 ; X86-NEXT: movl %esi, %eax
279 ; X86-NEXT: addl $20, %esp
280 ; X86-NEXT: popl %esi
281 ; X86-NEXT: popl %edi
284 %div = call fp128 @llvm.experimental.constrained.frem.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
288 define fp128 @ceil(fp128 %x) nounwind strictfp {
290 ; CHECK: # %bb.0: # %entry
291 ; CHECK-NEXT: pushq %rax
292 ; CHECK-NEXT: callq ceill@PLT
293 ; CHECK-NEXT: popq %rax
297 ; X86: # %bb.0: # %entry
298 ; X86-NEXT: pushl %edi
299 ; X86-NEXT: pushl %esi
300 ; X86-NEXT: subl $20, %esp
301 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
302 ; X86-NEXT: subl $12, %esp
303 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
304 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
305 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
306 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
307 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
308 ; X86-NEXT: pushl %eax
309 ; X86-NEXT: calll ceill
310 ; X86-NEXT: addl $28, %esp
311 ; X86-NEXT: movl (%esp), %eax
312 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
313 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
314 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
315 ; X86-NEXT: movl %edi, 8(%esi)
316 ; X86-NEXT: movl %edx, 12(%esi)
317 ; X86-NEXT: movl %eax, (%esi)
318 ; X86-NEXT: movl %ecx, 4(%esi)
319 ; X86-NEXT: movl %esi, %eax
320 ; X86-NEXT: addl $20, %esp
321 ; X86-NEXT: popl %esi
322 ; X86-NEXT: popl %edi
325 %ceil = call fp128 @llvm.experimental.constrained.ceil.f128(fp128 %x, metadata !"fpexcept.strict") #0
329 define fp128 @cos(fp128 %x) nounwind strictfp {
331 ; CHECK: # %bb.0: # %entry
332 ; CHECK-NEXT: pushq %rax
333 ; CHECK-NEXT: callq cosl@PLT
334 ; CHECK-NEXT: popq %rax
338 ; X86: # %bb.0: # %entry
339 ; X86-NEXT: pushl %edi
340 ; X86-NEXT: pushl %esi
341 ; X86-NEXT: subl $20, %esp
342 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
343 ; X86-NEXT: subl $12, %esp
344 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
345 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
346 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
347 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
348 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
349 ; X86-NEXT: pushl %eax
350 ; X86-NEXT: calll cosl
351 ; X86-NEXT: addl $28, %esp
352 ; X86-NEXT: movl (%esp), %eax
353 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
354 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
355 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
356 ; X86-NEXT: movl %edi, 8(%esi)
357 ; X86-NEXT: movl %edx, 12(%esi)
358 ; X86-NEXT: movl %eax, (%esi)
359 ; X86-NEXT: movl %ecx, 4(%esi)
360 ; X86-NEXT: movl %esi, %eax
361 ; X86-NEXT: addl $20, %esp
362 ; X86-NEXT: popl %esi
363 ; X86-NEXT: popl %edi
366 %cos = call fp128 @llvm.experimental.constrained.cos.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
370 define fp128 @exp(fp128 %x) nounwind strictfp {
372 ; CHECK: # %bb.0: # %entry
373 ; CHECK-NEXT: pushq %rax
374 ; CHECK-NEXT: callq expl@PLT
375 ; CHECK-NEXT: popq %rax
379 ; X86: # %bb.0: # %entry
380 ; X86-NEXT: pushl %edi
381 ; X86-NEXT: pushl %esi
382 ; X86-NEXT: subl $20, %esp
383 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
384 ; X86-NEXT: subl $12, %esp
385 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
386 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
387 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
388 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
389 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
390 ; X86-NEXT: pushl %eax
391 ; X86-NEXT: calll expl
392 ; X86-NEXT: addl $28, %esp
393 ; X86-NEXT: movl (%esp), %eax
394 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
395 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
396 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
397 ; X86-NEXT: movl %edi, 8(%esi)
398 ; X86-NEXT: movl %edx, 12(%esi)
399 ; X86-NEXT: movl %eax, (%esi)
400 ; X86-NEXT: movl %ecx, 4(%esi)
401 ; X86-NEXT: movl %esi, %eax
402 ; X86-NEXT: addl $20, %esp
403 ; X86-NEXT: popl %esi
404 ; X86-NEXT: popl %edi
407 %exp = call fp128 @llvm.experimental.constrained.exp.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
411 define fp128 @exp2(fp128 %x) nounwind strictfp {
413 ; CHECK: # %bb.0: # %entry
414 ; CHECK-NEXT: pushq %rax
415 ; CHECK-NEXT: callq exp2l@PLT
416 ; CHECK-NEXT: popq %rax
420 ; X86: # %bb.0: # %entry
421 ; X86-NEXT: pushl %edi
422 ; X86-NEXT: pushl %esi
423 ; X86-NEXT: subl $20, %esp
424 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
425 ; X86-NEXT: subl $12, %esp
426 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
427 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
428 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
429 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
430 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
431 ; X86-NEXT: pushl %eax
432 ; X86-NEXT: calll exp2l
433 ; X86-NEXT: addl $28, %esp
434 ; X86-NEXT: movl (%esp), %eax
435 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
436 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
437 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
438 ; X86-NEXT: movl %edi, 8(%esi)
439 ; X86-NEXT: movl %edx, 12(%esi)
440 ; X86-NEXT: movl %eax, (%esi)
441 ; X86-NEXT: movl %ecx, 4(%esi)
442 ; X86-NEXT: movl %esi, %eax
443 ; X86-NEXT: addl $20, %esp
444 ; X86-NEXT: popl %esi
445 ; X86-NEXT: popl %edi
448 %exp2 = call fp128 @llvm.experimental.constrained.exp2.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
452 define fp128 @floor(fp128 %x) nounwind strictfp {
453 ; CHECK-LABEL: floor:
454 ; CHECK: # %bb.0: # %entry
455 ; CHECK-NEXT: pushq %rax
456 ; CHECK-NEXT: callq floorl@PLT
457 ; CHECK-NEXT: popq %rax
461 ; X86: # %bb.0: # %entry
462 ; X86-NEXT: pushl %edi
463 ; X86-NEXT: pushl %esi
464 ; X86-NEXT: subl $20, %esp
465 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
466 ; X86-NEXT: subl $12, %esp
467 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
468 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
469 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
470 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
471 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
472 ; X86-NEXT: pushl %eax
473 ; X86-NEXT: calll floorl
474 ; X86-NEXT: addl $28, %esp
475 ; X86-NEXT: movl (%esp), %eax
476 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
477 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
478 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
479 ; X86-NEXT: movl %edi, 8(%esi)
480 ; X86-NEXT: movl %edx, 12(%esi)
481 ; X86-NEXT: movl %eax, (%esi)
482 ; X86-NEXT: movl %ecx, 4(%esi)
483 ; X86-NEXT: movl %esi, %eax
484 ; X86-NEXT: addl $20, %esp
485 ; X86-NEXT: popl %esi
486 ; X86-NEXT: popl %edi
489 %floor = call fp128 @llvm.experimental.constrained.floor.f128(fp128 %x, metadata !"fpexcept.strict") #0
493 define fp128 @log(fp128 %x) nounwind strictfp {
495 ; CHECK: # %bb.0: # %entry
496 ; CHECK-NEXT: pushq %rax
497 ; CHECK-NEXT: callq logl@PLT
498 ; CHECK-NEXT: popq %rax
502 ; X86: # %bb.0: # %entry
503 ; X86-NEXT: pushl %edi
504 ; X86-NEXT: pushl %esi
505 ; X86-NEXT: subl $20, %esp
506 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
507 ; X86-NEXT: subl $12, %esp
508 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
509 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
510 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
511 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
512 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
513 ; X86-NEXT: pushl %eax
514 ; X86-NEXT: calll logl
515 ; X86-NEXT: addl $28, %esp
516 ; X86-NEXT: movl (%esp), %eax
517 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
518 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
519 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
520 ; X86-NEXT: movl %edi, 8(%esi)
521 ; X86-NEXT: movl %edx, 12(%esi)
522 ; X86-NEXT: movl %eax, (%esi)
523 ; X86-NEXT: movl %ecx, 4(%esi)
524 ; X86-NEXT: movl %esi, %eax
525 ; X86-NEXT: addl $20, %esp
526 ; X86-NEXT: popl %esi
527 ; X86-NEXT: popl %edi
530 %log = call fp128 @llvm.experimental.constrained.log.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
534 define fp128 @log10(fp128 %x) nounwind strictfp {
535 ; CHECK-LABEL: log10:
536 ; CHECK: # %bb.0: # %entry
537 ; CHECK-NEXT: pushq %rax
538 ; CHECK-NEXT: callq log10l@PLT
539 ; CHECK-NEXT: popq %rax
543 ; X86: # %bb.0: # %entry
544 ; X86-NEXT: pushl %edi
545 ; X86-NEXT: pushl %esi
546 ; X86-NEXT: subl $20, %esp
547 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
548 ; X86-NEXT: subl $12, %esp
549 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
550 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
551 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
552 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
553 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
554 ; X86-NEXT: pushl %eax
555 ; X86-NEXT: calll log10l
556 ; X86-NEXT: addl $28, %esp
557 ; X86-NEXT: movl (%esp), %eax
558 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
559 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
560 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
561 ; X86-NEXT: movl %edi, 8(%esi)
562 ; X86-NEXT: movl %edx, 12(%esi)
563 ; X86-NEXT: movl %eax, (%esi)
564 ; X86-NEXT: movl %ecx, 4(%esi)
565 ; X86-NEXT: movl %esi, %eax
566 ; X86-NEXT: addl $20, %esp
567 ; X86-NEXT: popl %esi
568 ; X86-NEXT: popl %edi
571 %log10 = call fp128 @llvm.experimental.constrained.log10.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
575 define fp128 @log2(fp128 %x) nounwind strictfp {
577 ; CHECK: # %bb.0: # %entry
578 ; CHECK-NEXT: pushq %rax
579 ; CHECK-NEXT: callq log2l@PLT
580 ; CHECK-NEXT: popq %rax
584 ; X86: # %bb.0: # %entry
585 ; X86-NEXT: pushl %edi
586 ; X86-NEXT: pushl %esi
587 ; X86-NEXT: subl $20, %esp
588 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
589 ; X86-NEXT: subl $12, %esp
590 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
591 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
592 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
593 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
594 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
595 ; X86-NEXT: pushl %eax
596 ; X86-NEXT: calll log2l
597 ; X86-NEXT: addl $28, %esp
598 ; X86-NEXT: movl (%esp), %eax
599 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
600 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
601 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
602 ; X86-NEXT: movl %edi, 8(%esi)
603 ; X86-NEXT: movl %edx, 12(%esi)
604 ; X86-NEXT: movl %eax, (%esi)
605 ; X86-NEXT: movl %ecx, 4(%esi)
606 ; X86-NEXT: movl %esi, %eax
607 ; X86-NEXT: addl $20, %esp
608 ; X86-NEXT: popl %esi
609 ; X86-NEXT: popl %edi
612 %log2 = call fp128 @llvm.experimental.constrained.log2.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
616 define fp128 @maxnum(fp128 %x, fp128 %y) nounwind strictfp {
617 ; CHECK-LABEL: maxnum:
618 ; CHECK: # %bb.0: # %entry
619 ; CHECK-NEXT: pushq %rax
620 ; CHECK-NEXT: callq fmaxl@PLT
621 ; CHECK-NEXT: popq %rax
625 ; X86: # %bb.0: # %entry
626 ; X86-NEXT: pushl %edi
627 ; X86-NEXT: pushl %esi
628 ; X86-NEXT: subl $20, %esp
629 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
630 ; X86-NEXT: subl $12, %esp
631 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
632 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
633 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
634 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
635 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
636 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
637 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
638 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
639 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
640 ; X86-NEXT: pushl %eax
641 ; X86-NEXT: calll fmaxl
642 ; X86-NEXT: addl $44, %esp
643 ; X86-NEXT: movl (%esp), %eax
644 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
645 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
646 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
647 ; X86-NEXT: movl %edi, 8(%esi)
648 ; X86-NEXT: movl %edx, 12(%esi)
649 ; X86-NEXT: movl %eax, (%esi)
650 ; X86-NEXT: movl %ecx, 4(%esi)
651 ; X86-NEXT: movl %esi, %eax
652 ; X86-NEXT: addl $20, %esp
653 ; X86-NEXT: popl %esi
654 ; X86-NEXT: popl %edi
657 %maxnum = call fp128 @llvm.experimental.constrained.maxnum.f128(fp128 %x, fp128 %y, metadata !"fpexcept.strict") #0
661 define fp128 @minnum(fp128 %x, fp128 %y) nounwind strictfp {
662 ; CHECK-LABEL: minnum:
663 ; CHECK: # %bb.0: # %entry
664 ; CHECK-NEXT: pushq %rax
665 ; CHECK-NEXT: callq fminl@PLT
666 ; CHECK-NEXT: popq %rax
670 ; X86: # %bb.0: # %entry
671 ; X86-NEXT: pushl %edi
672 ; X86-NEXT: pushl %esi
673 ; X86-NEXT: subl $20, %esp
674 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
675 ; X86-NEXT: subl $12, %esp
676 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
677 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
678 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
679 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
680 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
681 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
682 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
683 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
684 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
685 ; X86-NEXT: pushl %eax
686 ; X86-NEXT: calll fminl
687 ; X86-NEXT: addl $44, %esp
688 ; X86-NEXT: movl (%esp), %eax
689 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
690 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
691 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
692 ; X86-NEXT: movl %edi, 8(%esi)
693 ; X86-NEXT: movl %edx, 12(%esi)
694 ; X86-NEXT: movl %eax, (%esi)
695 ; X86-NEXT: movl %ecx, 4(%esi)
696 ; X86-NEXT: movl %esi, %eax
697 ; X86-NEXT: addl $20, %esp
698 ; X86-NEXT: popl %esi
699 ; X86-NEXT: popl %edi
702 %minnum = call fp128 @llvm.experimental.constrained.minnum.f128(fp128 %x, fp128 %y, metadata !"fpexcept.strict") #0
706 define fp128 @nearbyint(fp128 %x) nounwind strictfp {
707 ; CHECK-LABEL: nearbyint:
708 ; CHECK: # %bb.0: # %entry
709 ; CHECK-NEXT: pushq %rax
710 ; CHECK-NEXT: callq nearbyintl@PLT
711 ; CHECK-NEXT: popq %rax
714 ; X86-LABEL: nearbyint:
715 ; X86: # %bb.0: # %entry
716 ; X86-NEXT: pushl %edi
717 ; X86-NEXT: pushl %esi
718 ; X86-NEXT: subl $20, %esp
719 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
720 ; X86-NEXT: subl $12, %esp
721 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
722 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
723 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
724 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
725 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
726 ; X86-NEXT: pushl %eax
727 ; X86-NEXT: calll nearbyintl
728 ; X86-NEXT: addl $28, %esp
729 ; X86-NEXT: movl (%esp), %eax
730 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
731 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
732 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
733 ; X86-NEXT: movl %edi, 8(%esi)
734 ; X86-NEXT: movl %edx, 12(%esi)
735 ; X86-NEXT: movl %eax, (%esi)
736 ; X86-NEXT: movl %ecx, 4(%esi)
737 ; X86-NEXT: movl %esi, %eax
738 ; X86-NEXT: addl $20, %esp
739 ; X86-NEXT: popl %esi
740 ; X86-NEXT: popl %edi
743 %nearbyint = call fp128 @llvm.experimental.constrained.nearbyint.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
747 define fp128 @pow(fp128 %x, fp128 %y) nounwind strictfp {
749 ; CHECK: # %bb.0: # %entry
750 ; CHECK-NEXT: pushq %rax
751 ; CHECK-NEXT: callq powl@PLT
752 ; CHECK-NEXT: popq %rax
756 ; X86: # %bb.0: # %entry
757 ; X86-NEXT: pushl %edi
758 ; X86-NEXT: pushl %esi
759 ; X86-NEXT: subl $20, %esp
760 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
761 ; X86-NEXT: subl $12, %esp
762 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
763 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
764 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
765 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
766 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
767 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
768 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
769 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
770 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
771 ; X86-NEXT: pushl %eax
772 ; X86-NEXT: calll powl
773 ; X86-NEXT: addl $44, %esp
774 ; X86-NEXT: movl (%esp), %eax
775 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
776 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
777 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
778 ; X86-NEXT: movl %edi, 8(%esi)
779 ; X86-NEXT: movl %edx, 12(%esi)
780 ; X86-NEXT: movl %eax, (%esi)
781 ; X86-NEXT: movl %ecx, 4(%esi)
782 ; X86-NEXT: movl %esi, %eax
783 ; X86-NEXT: addl $20, %esp
784 ; X86-NEXT: popl %esi
785 ; X86-NEXT: popl %edi
788 %pow = call fp128 @llvm.experimental.constrained.pow.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
792 define fp128 @powi(fp128 %x, i32 %y) nounwind strictfp {
794 ; CHECK: # %bb.0: # %entry
795 ; CHECK-NEXT: pushq %rax
796 ; CHECK-NEXT: callq __powitf2@PLT
797 ; CHECK-NEXT: popq %rax
801 ; X86: # %bb.0: # %entry
802 ; X86-NEXT: pushl %edi
803 ; X86-NEXT: pushl %esi
804 ; X86-NEXT: subl $20, %esp
805 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
806 ; X86-NEXT: subl $8, %esp
807 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
808 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
809 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
810 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
811 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
812 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
813 ; X86-NEXT: pushl %eax
814 ; X86-NEXT: calll __powitf2
815 ; X86-NEXT: addl $28, %esp
816 ; X86-NEXT: movl (%esp), %eax
817 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
818 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
819 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
820 ; X86-NEXT: movl %edi, 8(%esi)
821 ; X86-NEXT: movl %edx, 12(%esi)
822 ; X86-NEXT: movl %eax, (%esi)
823 ; X86-NEXT: movl %ecx, 4(%esi)
824 ; X86-NEXT: movl %esi, %eax
825 ; X86-NEXT: addl $20, %esp
826 ; X86-NEXT: popl %esi
827 ; X86-NEXT: popl %edi
830 %powi = call fp128 @llvm.experimental.constrained.powi.f128(fp128 %x, i32 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
834 define fp128 @rint(fp128 %x) nounwind strictfp {
836 ; CHECK: # %bb.0: # %entry
837 ; CHECK-NEXT: pushq %rax
838 ; CHECK-NEXT: callq rintl@PLT
839 ; CHECK-NEXT: popq %rax
843 ; X86: # %bb.0: # %entry
844 ; X86-NEXT: pushl %edi
845 ; X86-NEXT: pushl %esi
846 ; X86-NEXT: subl $20, %esp
847 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
848 ; X86-NEXT: subl $12, %esp
849 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
850 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
851 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
852 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
853 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
854 ; X86-NEXT: pushl %eax
855 ; X86-NEXT: calll rintl
856 ; X86-NEXT: addl $28, %esp
857 ; X86-NEXT: movl (%esp), %eax
858 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
859 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
860 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
861 ; X86-NEXT: movl %edi, 8(%esi)
862 ; X86-NEXT: movl %edx, 12(%esi)
863 ; X86-NEXT: movl %eax, (%esi)
864 ; X86-NEXT: movl %ecx, 4(%esi)
865 ; X86-NEXT: movl %esi, %eax
866 ; X86-NEXT: addl $20, %esp
867 ; X86-NEXT: popl %esi
868 ; X86-NEXT: popl %edi
871 %rint = call fp128 @llvm.experimental.constrained.rint.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
875 define fp128 @round(fp128 %x) nounwind strictfp {
876 ; CHECK-LABEL: round:
877 ; CHECK: # %bb.0: # %entry
878 ; CHECK-NEXT: pushq %rax
879 ; CHECK-NEXT: callq roundl@PLT
880 ; CHECK-NEXT: popq %rax
884 ; X86: # %bb.0: # %entry
885 ; X86-NEXT: pushl %edi
886 ; X86-NEXT: pushl %esi
887 ; X86-NEXT: subl $20, %esp
888 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
889 ; X86-NEXT: subl $12, %esp
890 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
891 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
892 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
893 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
894 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
895 ; X86-NEXT: pushl %eax
896 ; X86-NEXT: calll roundl
897 ; X86-NEXT: addl $28, %esp
898 ; X86-NEXT: movl (%esp), %eax
899 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
900 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
901 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
902 ; X86-NEXT: movl %edi, 8(%esi)
903 ; X86-NEXT: movl %edx, 12(%esi)
904 ; X86-NEXT: movl %eax, (%esi)
905 ; X86-NEXT: movl %ecx, 4(%esi)
906 ; X86-NEXT: movl %esi, %eax
907 ; X86-NEXT: addl $20, %esp
908 ; X86-NEXT: popl %esi
909 ; X86-NEXT: popl %edi
912 %round = call fp128 @llvm.experimental.constrained.round.f128(fp128 %x, metadata !"fpexcept.strict") #0
916 define fp128 @roundeven(fp128 %x) nounwind strictfp {
917 ; CHECK-LABEL: roundeven:
918 ; CHECK: # %bb.0: # %entry
919 ; CHECK-NEXT: pushq %rax
920 ; CHECK-NEXT: callq roundevenl@PLT
921 ; CHECK-NEXT: popq %rax
924 ; X86-LABEL: roundeven:
925 ; X86: # %bb.0: # %entry
926 ; X86-NEXT: pushl %edi
927 ; X86-NEXT: pushl %esi
928 ; X86-NEXT: subl $20, %esp
929 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
930 ; X86-NEXT: subl $12, %esp
931 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
932 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
933 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
934 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
935 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
936 ; X86-NEXT: pushl %eax
937 ; X86-NEXT: calll roundevenl
938 ; X86-NEXT: addl $28, %esp
939 ; X86-NEXT: movl (%esp), %eax
940 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
941 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
942 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
943 ; X86-NEXT: movl %edi, 8(%esi)
944 ; X86-NEXT: movl %edx, 12(%esi)
945 ; X86-NEXT: movl %eax, (%esi)
946 ; X86-NEXT: movl %ecx, 4(%esi)
947 ; X86-NEXT: movl %esi, %eax
948 ; X86-NEXT: addl $20, %esp
949 ; X86-NEXT: popl %esi
950 ; X86-NEXT: popl %edi
953 %roundeven = call fp128 @llvm.experimental.constrained.roundeven.f128(fp128 %x, metadata !"fpexcept.strict") #0
957 define fp128 @sin(fp128 %x) nounwind strictfp {
959 ; CHECK: # %bb.0: # %entry
960 ; CHECK-NEXT: pushq %rax
961 ; CHECK-NEXT: callq sinl@PLT
962 ; CHECK-NEXT: popq %rax
966 ; X86: # %bb.0: # %entry
967 ; X86-NEXT: pushl %edi
968 ; X86-NEXT: pushl %esi
969 ; X86-NEXT: subl $20, %esp
970 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
971 ; X86-NEXT: subl $12, %esp
972 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
973 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
974 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
975 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
976 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
977 ; X86-NEXT: pushl %eax
978 ; X86-NEXT: calll sinl
979 ; X86-NEXT: addl $28, %esp
980 ; X86-NEXT: movl (%esp), %eax
981 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
982 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
983 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
984 ; X86-NEXT: movl %edi, 8(%esi)
985 ; X86-NEXT: movl %edx, 12(%esi)
986 ; X86-NEXT: movl %eax, (%esi)
987 ; X86-NEXT: movl %ecx, 4(%esi)
988 ; X86-NEXT: movl %esi, %eax
989 ; X86-NEXT: addl $20, %esp
990 ; X86-NEXT: popl %esi
991 ; X86-NEXT: popl %edi
994 %sin = call fp128 @llvm.experimental.constrained.sin.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
998 define fp128 @sqrt(fp128 %x) nounwind strictfp {
1000 ; CHECK: # %bb.0: # %entry
1001 ; CHECK-NEXT: pushq %rax
1002 ; CHECK-NEXT: callq sqrtl@PLT
1003 ; CHECK-NEXT: popq %rax
1007 ; X86: # %bb.0: # %entry
1008 ; X86-NEXT: pushl %edi
1009 ; X86-NEXT: pushl %esi
1010 ; X86-NEXT: subl $20, %esp
1011 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
1012 ; X86-NEXT: subl $12, %esp
1013 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
1014 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1015 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1016 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1017 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1018 ; X86-NEXT: pushl %eax
1019 ; X86-NEXT: calll sqrtl
1020 ; X86-NEXT: addl $28, %esp
1021 ; X86-NEXT: movl (%esp), %eax
1022 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
1023 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
1024 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
1025 ; X86-NEXT: movl %edi, 8(%esi)
1026 ; X86-NEXT: movl %edx, 12(%esi)
1027 ; X86-NEXT: movl %eax, (%esi)
1028 ; X86-NEXT: movl %ecx, 4(%esi)
1029 ; X86-NEXT: movl %esi, %eax
1030 ; X86-NEXT: addl $20, %esp
1031 ; X86-NEXT: popl %esi
1032 ; X86-NEXT: popl %edi
1035 %sqrt = call fp128 @llvm.experimental.constrained.sqrt.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
1039 define fp128 @trunc(fp128 %x) nounwind strictfp {
1040 ; CHECK-LABEL: trunc:
1041 ; CHECK: # %bb.0: # %entry
1042 ; CHECK-NEXT: pushq %rax
1043 ; CHECK-NEXT: callq truncl@PLT
1044 ; CHECK-NEXT: popq %rax
1048 ; X86: # %bb.0: # %entry
1049 ; X86-NEXT: pushl %edi
1050 ; X86-NEXT: pushl %esi
1051 ; X86-NEXT: subl $20, %esp
1052 ; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
1053 ; X86-NEXT: subl $12, %esp
1054 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
1055 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1056 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1057 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1058 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1059 ; X86-NEXT: pushl %eax
1060 ; X86-NEXT: calll truncl
1061 ; X86-NEXT: addl $28, %esp
1062 ; X86-NEXT: movl (%esp), %eax
1063 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
1064 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
1065 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
1066 ; X86-NEXT: movl %edi, 8(%esi)
1067 ; X86-NEXT: movl %edx, 12(%esi)
1068 ; X86-NEXT: movl %eax, (%esi)
1069 ; X86-NEXT: movl %ecx, 4(%esi)
1070 ; X86-NEXT: movl %esi, %eax
1071 ; X86-NEXT: addl $20, %esp
1072 ; X86-NEXT: popl %esi
1073 ; X86-NEXT: popl %edi
1076 %trunc = call fp128 @llvm.experimental.constrained.trunc.f128(fp128 %x, metadata !"fpexcept.strict") #0
1080 define i32 @lrint(fp128 %x) nounwind strictfp {
1081 ; CHECK-LABEL: lrint:
1082 ; CHECK: # %bb.0: # %entry
1083 ; CHECK-NEXT: pushq %rax
1084 ; CHECK-NEXT: callq lrintl@PLT
1085 ; CHECK-NEXT: popq %rcx
1089 ; X86: # %bb.0: # %entry
1090 ; X86-NEXT: subl $12, %esp
1091 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1092 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1093 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1094 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1095 ; X86-NEXT: calll lrintl
1096 ; X86-NEXT: addl $28, %esp
1099 %rint = call i32 @llvm.experimental.constrained.lrint.i32.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
1103 define i64 @llrint(fp128 %x) nounwind strictfp {
1104 ; CHECK-LABEL: llrint:
1105 ; CHECK: # %bb.0: # %entry
1106 ; CHECK-NEXT: pushq %rax
1107 ; CHECK-NEXT: callq llrintl@PLT
1108 ; CHECK-NEXT: popq %rcx
1111 ; X86-LABEL: llrint:
1112 ; X86: # %bb.0: # %entry
1113 ; X86-NEXT: subl $12, %esp
1114 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1115 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1116 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1117 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1118 ; X86-NEXT: calll llrintl
1119 ; X86-NEXT: addl $28, %esp
1122 %rint = call i64 @llvm.experimental.constrained.llrint.i64.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0
1126 define i32 @lround(fp128 %x) nounwind strictfp {
1127 ; CHECK-LABEL: lround:
1128 ; CHECK: # %bb.0: # %entry
1129 ; CHECK-NEXT: pushq %rax
1130 ; CHECK-NEXT: callq lroundl@PLT
1131 ; CHECK-NEXT: popq %rcx
1134 ; X86-LABEL: lround:
1135 ; X86: # %bb.0: # %entry
1136 ; X86-NEXT: subl $12, %esp
1137 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1138 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1139 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1140 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1141 ; X86-NEXT: calll lroundl
1142 ; X86-NEXT: addl $28, %esp
1145 %round = call i32 @llvm.experimental.constrained.lround.i32.f128(fp128 %x, metadata !"fpexcept.strict") #0
1149 define i64 @llround(fp128 %x) nounwind strictfp {
1150 ; CHECK-LABEL: llround:
1151 ; CHECK: # %bb.0: # %entry
1152 ; CHECK-NEXT: pushq %rax
1153 ; CHECK-NEXT: callq llroundl@PLT
1154 ; CHECK-NEXT: popq %rcx
1157 ; X86-LABEL: llround:
1158 ; X86: # %bb.0: # %entry
1159 ; X86-NEXT: subl $12, %esp
1160 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1161 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1162 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1163 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1164 ; X86-NEXT: calll llroundl
1165 ; X86-NEXT: addl $28, %esp
1168 %round = call i64 @llvm.experimental.constrained.llround.i64.f128(fp128 %x, metadata !"fpexcept.strict") #0
1172 define i64 @cmp(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
1175 ; CHECK-NEXT: pushq %r14
1176 ; CHECK-NEXT: pushq %rbx
1177 ; CHECK-NEXT: pushq %rax
1178 ; CHECK-NEXT: movq %rsi, %rbx
1179 ; CHECK-NEXT: movq %rdi, %r14
1180 ; CHECK-NEXT: callq __eqtf2@PLT
1181 ; CHECK-NEXT: testl %eax, %eax
1182 ; CHECK-NEXT: cmovneq %rbx, %r14
1183 ; CHECK-NEXT: movq %r14, %rax
1184 ; CHECK-NEXT: addq $8, %rsp
1185 ; CHECK-NEXT: popq %rbx
1186 ; CHECK-NEXT: popq %r14
1191 ; X86-NEXT: subl $12, %esp
1192 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1193 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1194 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1195 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1196 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1197 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1198 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1199 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1200 ; X86-NEXT: calll __eqtf2
1201 ; X86-NEXT: addl $32, %esp
1202 ; X86-NEXT: testl %eax, %eax
1203 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
1204 ; X86-NEXT: leal {{[0-9]+}}(%esp), %ecx
1205 ; X86-NEXT: cmovel %eax, %ecx
1206 ; X86-NEXT: movl (%ecx), %eax
1207 ; X86-NEXT: movl 4(%ecx), %edx
1208 ; X86-NEXT: addl $12, %esp
1210 %cond = call i1 @llvm.experimental.constrained.fcmp.f128(
1213 metadata !"fpexcept.strict") #0
1214 %res = select i1 %cond, i64 %a, i64 %b
1218 define i64 @cmps(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
1219 ; CHECK-LABEL: cmps:
1221 ; CHECK-NEXT: pushq %r14
1222 ; CHECK-NEXT: pushq %rbx
1223 ; CHECK-NEXT: pushq %rax
1224 ; CHECK-NEXT: movq %rsi, %rbx
1225 ; CHECK-NEXT: movq %rdi, %r14
1226 ; CHECK-NEXT: callq __eqtf2@PLT
1227 ; CHECK-NEXT: testl %eax, %eax
1228 ; CHECK-NEXT: cmovneq %rbx, %r14
1229 ; CHECK-NEXT: movq %r14, %rax
1230 ; CHECK-NEXT: addq $8, %rsp
1231 ; CHECK-NEXT: popq %rbx
1232 ; CHECK-NEXT: popq %r14
1237 ; X86-NEXT: subl $12, %esp
1238 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1239 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1240 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1241 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1242 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1243 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1244 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1245 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1246 ; X86-NEXT: calll __eqtf2
1247 ; X86-NEXT: addl $32, %esp
1248 ; X86-NEXT: testl %eax, %eax
1249 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
1250 ; X86-NEXT: leal {{[0-9]+}}(%esp), %ecx
1251 ; X86-NEXT: cmovel %eax, %ecx
1252 ; X86-NEXT: movl (%ecx), %eax
1253 ; X86-NEXT: movl 4(%ecx), %edx
1254 ; X86-NEXT: addl $12, %esp
1256 %cond = call i1 @llvm.experimental.constrained.fcmps.f128(
1259 metadata !"fpexcept.strict") #0
1260 %res = select i1 %cond, i64 %a, i64 %b
1264 define i64 @cmp_ueq_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
1265 ; CHECK-LABEL: cmp_ueq_q:
1267 ; CHECK-NEXT: pushq %rbp
1268 ; CHECK-NEXT: pushq %r14
1269 ; CHECK-NEXT: pushq %rbx
1270 ; CHECK-NEXT: subq $32, %rsp
1271 ; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1272 ; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill
1273 ; CHECK-NEXT: movq %rsi, %rbx
1274 ; CHECK-NEXT: movq %rdi, %r14
1275 ; CHECK-NEXT: callq __eqtf2@PLT
1276 ; CHECK-NEXT: testl %eax, %eax
1277 ; CHECK-NEXT: sete %bpl
1278 ; CHECK-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload
1279 ; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1280 ; CHECK-NEXT: callq __unordtf2@PLT
1281 ; CHECK-NEXT: testl %eax, %eax
1282 ; CHECK-NEXT: setne %al
1283 ; CHECK-NEXT: orb %bpl, %al
1284 ; CHECK-NEXT: cmoveq %rbx, %r14
1285 ; CHECK-NEXT: movq %r14, %rax
1286 ; CHECK-NEXT: addq $32, %rsp
1287 ; CHECK-NEXT: popq %rbx
1288 ; CHECK-NEXT: popq %r14
1289 ; CHECK-NEXT: popq %rbp
1292 ; X86-LABEL: cmp_ueq_q:
1294 ; X86-NEXT: pushl %ebp
1295 ; X86-NEXT: pushl %ebx
1296 ; X86-NEXT: pushl %edi
1297 ; X86-NEXT: pushl %esi
1298 ; X86-NEXT: subl $12, %esp
1299 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp
1300 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
1301 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx
1302 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1303 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1304 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1305 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1306 ; X86-NEXT: pushl %ebx
1307 ; X86-NEXT: movl %ebx, %esi
1308 ; X86-NEXT: pushl %edi
1309 ; X86-NEXT: pushl %ebp
1310 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1311 ; X86-NEXT: calll __eqtf2
1312 ; X86-NEXT: addl $32, %esp
1313 ; X86-NEXT: testl %eax, %eax
1314 ; X86-NEXT: sete %bl
1315 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1316 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1317 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1318 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1319 ; X86-NEXT: pushl %esi
1320 ; X86-NEXT: pushl %edi
1321 ; X86-NEXT: pushl %ebp
1322 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1323 ; X86-NEXT: calll __unordtf2
1324 ; X86-NEXT: addl $32, %esp
1325 ; X86-NEXT: testl %eax, %eax
1326 ; X86-NEXT: setne %al
1327 ; X86-NEXT: orb %bl, %al
1328 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
1329 ; X86-NEXT: leal {{[0-9]+}}(%esp), %ecx
1330 ; X86-NEXT: cmovnel %eax, %ecx
1331 ; X86-NEXT: movl (%ecx), %eax
1332 ; X86-NEXT: movl 4(%ecx), %edx
1333 ; X86-NEXT: addl $12, %esp
1334 ; X86-NEXT: popl %esi
1335 ; X86-NEXT: popl %edi
1336 ; X86-NEXT: popl %ebx
1337 ; X86-NEXT: popl %ebp
1339 %cond = call i1 @llvm.experimental.constrained.fcmp.f128(
1342 metadata !"fpexcept.strict") #0
1343 %res = select i1 %cond, i64 %a, i64 %b
1347 define i64 @cmp_one_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
1348 ; CHECK-LABEL: cmp_one_q:
1350 ; CHECK-NEXT: pushq %rbp
1351 ; CHECK-NEXT: pushq %r14
1352 ; CHECK-NEXT: pushq %rbx
1353 ; CHECK-NEXT: subq $32, %rsp
1354 ; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1355 ; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill
1356 ; CHECK-NEXT: movq %rsi, %rbx
1357 ; CHECK-NEXT: movq %rdi, %r14
1358 ; CHECK-NEXT: callq __eqtf2@PLT
1359 ; CHECK-NEXT: testl %eax, %eax
1360 ; CHECK-NEXT: setne %bpl
1361 ; CHECK-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload
1362 ; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
1363 ; CHECK-NEXT: callq __unordtf2@PLT
1364 ; CHECK-NEXT: testl %eax, %eax
1365 ; CHECK-NEXT: sete %al
1366 ; CHECK-NEXT: testb %bpl, %al
1367 ; CHECK-NEXT: cmoveq %rbx, %r14
1368 ; CHECK-NEXT: movq %r14, %rax
1369 ; CHECK-NEXT: addq $32, %rsp
1370 ; CHECK-NEXT: popq %rbx
1371 ; CHECK-NEXT: popq %r14
1372 ; CHECK-NEXT: popq %rbp
1375 ; X86-LABEL: cmp_one_q:
1377 ; X86-NEXT: pushl %ebp
1378 ; X86-NEXT: pushl %ebx
1379 ; X86-NEXT: pushl %edi
1380 ; X86-NEXT: pushl %esi
1381 ; X86-NEXT: subl $12, %esp
1382 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ebp
1383 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edi
1384 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ebx
1385 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1386 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1387 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1388 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1389 ; X86-NEXT: pushl %ebx
1390 ; X86-NEXT: movl %ebx, %esi
1391 ; X86-NEXT: pushl %edi
1392 ; X86-NEXT: pushl %ebp
1393 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1394 ; X86-NEXT: calll __eqtf2
1395 ; X86-NEXT: addl $32, %esp
1396 ; X86-NEXT: testl %eax, %eax
1397 ; X86-NEXT: setne %bl
1398 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1399 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1400 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1401 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1402 ; X86-NEXT: pushl %esi
1403 ; X86-NEXT: pushl %edi
1404 ; X86-NEXT: pushl %ebp
1405 ; X86-NEXT: pushl {{[0-9]+}}(%esp)
1406 ; X86-NEXT: calll __unordtf2
1407 ; X86-NEXT: addl $32, %esp
1408 ; X86-NEXT: testl %eax, %eax
1409 ; X86-NEXT: sete %al
1410 ; X86-NEXT: testb %bl, %al
1411 ; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
1412 ; X86-NEXT: leal {{[0-9]+}}(%esp), %ecx
1413 ; X86-NEXT: cmovnel %eax, %ecx
1414 ; X86-NEXT: movl (%ecx), %eax
1415 ; X86-NEXT: movl 4(%ecx), %edx
1416 ; X86-NEXT: addl $12, %esp
1417 ; X86-NEXT: popl %esi
1418 ; X86-NEXT: popl %edi
1419 ; X86-NEXT: popl %ebx
1420 ; X86-NEXT: popl %ebp
1422 %cond = call i1 @llvm.experimental.constrained.fcmp.f128(
1425 metadata !"fpexcept.strict") #0
1426 %res = select i1 %cond, i64 %a, i64 %b
1430 attributes #0 = { nounwind strictfp }
1432 declare fp128 @llvm.experimental.constrained.fadd.f128(fp128, fp128, metadata, metadata)
1433 declare fp128 @llvm.experimental.constrained.fsub.f128(fp128, fp128, metadata, metadata)
1434 declare fp128 @llvm.experimental.constrained.fmul.f128(fp128, fp128, metadata, metadata)
1435 declare fp128 @llvm.experimental.constrained.fdiv.f128(fp128, fp128, metadata, metadata)
1436 declare fp128 @llvm.experimental.constrained.fma.f128(fp128, fp128, fp128, metadata, metadata)
1437 declare fp128 @llvm.experimental.constrained.frem.f128(fp128, fp128, metadata, metadata)
1438 declare fp128 @llvm.experimental.constrained.ceil.f128(fp128, metadata)
1439 declare fp128 @llvm.experimental.constrained.cos.f128(fp128, metadata, metadata)
1440 declare fp128 @llvm.experimental.constrained.exp.f128(fp128, metadata, metadata)
1441 declare fp128 @llvm.experimental.constrained.exp2.f128(fp128, metadata, metadata)
1442 declare fp128 @llvm.experimental.constrained.floor.f128(fp128, metadata)
1443 declare fp128 @llvm.experimental.constrained.log.f128(fp128, metadata, metadata)
1444 declare fp128 @llvm.experimental.constrained.log10.f128(fp128, metadata, metadata)
1445 declare fp128 @llvm.experimental.constrained.log2.f128(fp128, metadata, metadata)
1446 declare fp128 @llvm.experimental.constrained.maxnum.f128(fp128, fp128, metadata)
1447 declare fp128 @llvm.experimental.constrained.minnum.f128(fp128, fp128, metadata)
1448 declare fp128 @llvm.experimental.constrained.nearbyint.f128(fp128, metadata, metadata)
1449 declare fp128 @llvm.experimental.constrained.pow.f128(fp128, fp128, metadata, metadata)
1450 declare fp128 @llvm.experimental.constrained.powi.f128(fp128, i32, metadata, metadata)
1451 declare fp128 @llvm.experimental.constrained.rint.f128(fp128, metadata, metadata)
1452 declare fp128 @llvm.experimental.constrained.round.f128(fp128, metadata)
1453 declare fp128 @llvm.experimental.constrained.roundeven.f128(fp128, metadata)
1454 declare fp128 @llvm.experimental.constrained.sin.f128(fp128, metadata, metadata)
1455 declare fp128 @llvm.experimental.constrained.sqrt.f128(fp128, metadata, metadata)
1456 declare fp128 @llvm.experimental.constrained.trunc.f128(fp128, metadata)
1457 declare i32 @llvm.experimental.constrained.lrint.i32.f128(fp128, metadata, metadata)
1458 declare i64 @llvm.experimental.constrained.llrint.i64.f128(fp128, metadata, metadata)
1459 declare i32 @llvm.experimental.constrained.lround.i32.f128(fp128, metadata)
1460 declare i64 @llvm.experimental.constrained.llround.i64.f128(fp128, metadata)
1461 declare i1 @llvm.experimental.constrained.fcmp.f128(fp128, fp128, metadata, metadata)
1462 declare i1 @llvm.experimental.constrained.fcmps.f128(fp128, fp128, metadata, metadata)