1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2
- ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s
2
+ ; RUN: llc < %s -mtriple=i686-unknown-linux-gnu | FileCheck %s
3
3
4
4
define half @maximum_half (half %x , half %y ) nounwind {
5
5
; CHECK-LABEL: maximum_half:
6
6
; CHECK: # %bb.0:
7
7
; CHECK-NEXT: pushl %esi
8
- ; CHECK-NEXT: subl $16 , %esp
8
+ ; CHECK-NEXT: subl $24 , %esp
9
9
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %esi
10
10
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %eax
11
11
; CHECK-NEXT: movl %eax, (%esp)
@@ -74,7 +74,7 @@ define half @maximum_half(half %x, half %y) nounwind {
74
74
; CHECK-NEXT: fstp %st(1)
75
75
; CHECK-NEXT: fstps (%esp)
76
76
; CHECK-NEXT: calll __truncsfhf2
77
- ; CHECK-NEXT: addl $16 , %esp
77
+ ; CHECK-NEXT: addl $24 , %esp
78
78
; CHECK-NEXT: popl %esi
79
79
; CHECK-NEXT: retl
80
80
%res = call half @llvm.maximum.f16 (half %x , half %y )
@@ -154,12 +154,9 @@ define float @maximum_float(float %x, float %y) nounwind {
154
154
define double @maximum_double (double %x , double %y ) nounwind {
155
155
; CHECK-LABEL: maximum_double:
156
156
; CHECK: # %bb.0:
157
- ; CHECK-NEXT: pushl %ebp
158
- ; CHECK-NEXT: movl %esp, %ebp
159
- ; CHECK-NEXT: andl $-8, %esp
160
- ; CHECK-NEXT: subl $16, %esp
161
- ; CHECK-NEXT: fldl 16(%ebp)
162
- ; CHECK-NEXT: fldl 8(%ebp)
157
+ ; CHECK-NEXT: subl $20, %esp
158
+ ; CHECK-NEXT: fldl {{[0-9]+}}(%esp)
159
+ ; CHECK-NEXT: fldl {{[0-9]+}}(%esp)
163
160
; CHECK-NEXT: fstl {{[0-9]+}}(%esp)
164
161
; CHECK-NEXT: fxch %st(1)
165
162
; CHECK-NEXT: fstl (%esp)
@@ -218,8 +215,7 @@ define double @maximum_double(double %x, double %y) nounwind {
218
215
; CHECK-NEXT: fxch %st(1)
219
216
; CHECK-NEXT: .LBB2_13:
220
217
; CHECK-NEXT: fstp %st(1)
221
- ; CHECK-NEXT: movl %ebp, %esp
222
- ; CHECK-NEXT: popl %ebp
218
+ ; CHECK-NEXT: addl $20, %esp
223
219
; CHECK-NEXT: retl
224
220
%res = call double @llvm.maximum.f64 (double %x , double %y )
225
221
ret double %res
@@ -228,25 +224,23 @@ define double @maximum_double(double %x, double %y) nounwind {
228
224
define fp128 @maximum_fp128 (fp128 %x , fp128 %y ) nounwind {
229
225
; CHECK-LABEL: maximum_fp128:
230
226
; CHECK: # %bb.0:
231
- ; CHECK-NEXT: pushl %ebp
232
- ; CHECK-NEXT: movl %esp, %ebp
233
227
; CHECK-NEXT: pushl %edi
234
228
; CHECK-NEXT: pushl %esi
235
- ; CHECK-NEXT: andl $-16 , %esp
236
- ; CHECK-NEXT: subl $16 , %esp
237
- ; CHECK-NEXT: movl 8(%ebp) , %esi
238
- ; CHECK-NEXT: movl %esp, %eax
239
- ; CHECK-NEXT: pushl 40(%ebp )
240
- ; CHECK-NEXT: pushl 36(%ebp )
241
- ; CHECK-NEXT: pushl 32(%ebp )
242
- ; CHECK-NEXT: pushl 28(%ebp )
243
- ; CHECK-NEXT: pushl 24(%ebp )
244
- ; CHECK-NEXT: pushl 20(%ebp )
245
- ; CHECK-NEXT: pushl 16(%ebp )
246
- ; CHECK-NEXT: pushl 12(%ebp )
229
+ ; CHECK-NEXT: subl $20 , %esp
230
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp) , %esi
231
+ ; CHECK-NEXT: subl $12 , %esp
232
+ ; CHECK-NEXT: leal {{[0-9]+}}( %esp) , %eax
233
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
234
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
235
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
236
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
237
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
238
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
239
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
240
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
247
241
; CHECK-NEXT: pushl %eax
248
242
; CHECK-NEXT: calll fmaximuml
249
- ; CHECK-NEXT: addl $32 , %esp
243
+ ; CHECK-NEXT: addl $44 , %esp
250
244
; CHECK-NEXT: movl (%esp), %eax
251
245
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
252
246
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx
@@ -256,10 +250,9 @@ define fp128 @maximum_fp128(fp128 %x, fp128 %y) nounwind {
256
250
; CHECK-NEXT: movl %ecx, 4(%esi)
257
251
; CHECK-NEXT: movl %eax, (%esi)
258
252
; CHECK-NEXT: movl %esi, %eax
259
- ; CHECK-NEXT: leal -8(%ebp) , %esp
253
+ ; CHECK-NEXT: addl $20 , %esp
260
254
; CHECK-NEXT: popl %esi
261
255
; CHECK-NEXT: popl %edi
262
- ; CHECK-NEXT: popl %ebp
263
256
; CHECK-NEXT: retl $4
264
257
%res = call fp128 @llvm.maximum.f128 (fp128 %x , fp128 %y )
265
258
ret fp128 %res
@@ -269,7 +262,7 @@ define half @minimum_half(half %x, half %y) nounwind {
269
262
; CHECK-LABEL: minimum_half:
270
263
; CHECK: # %bb.0:
271
264
; CHECK-NEXT: pushl %esi
272
- ; CHECK-NEXT: subl $16 , %esp
265
+ ; CHECK-NEXT: subl $24 , %esp
273
266
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %esi
274
267
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %eax
275
268
; CHECK-NEXT: movl %eax, (%esp)
@@ -338,7 +331,7 @@ define half @minimum_half(half %x, half %y) nounwind {
338
331
; CHECK-NEXT: fstp %st(0)
339
332
; CHECK-NEXT: fstps (%esp)
340
333
; CHECK-NEXT: calll __truncsfhf2
341
- ; CHECK-NEXT: addl $16 , %esp
334
+ ; CHECK-NEXT: addl $24 , %esp
342
335
; CHECK-NEXT: popl %esi
343
336
; CHECK-NEXT: retl
344
337
%res = call half @llvm.minimum.f16 (half %x , half %y )
@@ -418,12 +411,9 @@ define float @minimum_float(float %x, float %y) nounwind {
418
411
define double @minimum_double (double %x , double %y ) nounwind {
419
412
; CHECK-LABEL: minimum_double:
420
413
; CHECK: # %bb.0:
421
- ; CHECK-NEXT: pushl %ebp
422
- ; CHECK-NEXT: movl %esp, %ebp
423
- ; CHECK-NEXT: andl $-8, %esp
424
- ; CHECK-NEXT: subl $16, %esp
425
- ; CHECK-NEXT: fldl 16(%ebp)
426
- ; CHECK-NEXT: fldl 8(%ebp)
414
+ ; CHECK-NEXT: subl $20, %esp
415
+ ; CHECK-NEXT: fldl {{[0-9]+}}(%esp)
416
+ ; CHECK-NEXT: fldl {{[0-9]+}}(%esp)
427
417
; CHECK-NEXT: fstl {{[0-9]+}}(%esp)
428
418
; CHECK-NEXT: fxch %st(1)
429
419
; CHECK-NEXT: fstl (%esp)
@@ -482,8 +472,7 @@ define double @minimum_double(double %x, double %y) nounwind {
482
472
; CHECK-NEXT: fldz
483
473
; CHECK-NEXT: .LBB6_13:
484
474
; CHECK-NEXT: fstp %st(0)
485
- ; CHECK-NEXT: movl %ebp, %esp
486
- ; CHECK-NEXT: popl %ebp
475
+ ; CHECK-NEXT: addl $20, %esp
487
476
; CHECK-NEXT: retl
488
477
%res = call double @llvm.minimum.f64 (double %x , double %y )
489
478
ret double %res
@@ -492,25 +481,23 @@ define double @minimum_double(double %x, double %y) nounwind {
492
481
define fp128 @minimum_fp128 (fp128 %x , fp128 %y ) nounwind {
493
482
; CHECK-LABEL: minimum_fp128:
494
483
; CHECK: # %bb.0:
495
- ; CHECK-NEXT: pushl %ebp
496
- ; CHECK-NEXT: movl %esp, %ebp
497
484
; CHECK-NEXT: pushl %edi
498
485
; CHECK-NEXT: pushl %esi
499
- ; CHECK-NEXT: andl $-16 , %esp
500
- ; CHECK-NEXT: subl $16 , %esp
501
- ; CHECK-NEXT: movl 8(%ebp) , %esi
502
- ; CHECK-NEXT: movl %esp, %eax
503
- ; CHECK-NEXT: pushl 40(%ebp )
504
- ; CHECK-NEXT: pushl 36(%ebp )
505
- ; CHECK-NEXT: pushl 32(%ebp )
506
- ; CHECK-NEXT: pushl 28(%ebp )
507
- ; CHECK-NEXT: pushl 24(%ebp )
508
- ; CHECK-NEXT: pushl 20(%ebp )
509
- ; CHECK-NEXT: pushl 16(%ebp )
510
- ; CHECK-NEXT: pushl 12(%ebp )
486
+ ; CHECK-NEXT: subl $20 , %esp
487
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp) , %esi
488
+ ; CHECK-NEXT: subl $12 , %esp
489
+ ; CHECK-NEXT: leal {{[0-9]+}}( %esp) , %eax
490
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
491
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
492
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
493
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
494
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
495
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
496
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
497
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp )
511
498
; CHECK-NEXT: pushl %eax
512
499
; CHECK-NEXT: calll fminimuml
513
- ; CHECK-NEXT: addl $32 , %esp
500
+ ; CHECK-NEXT: addl $44 , %esp
514
501
; CHECK-NEXT: movl (%esp), %eax
515
502
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
516
503
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx
@@ -520,11 +507,84 @@ define fp128 @minimum_fp128(fp128 %x, fp128 %y) nounwind {
520
507
; CHECK-NEXT: movl %ecx, 4(%esi)
521
508
; CHECK-NEXT: movl %eax, (%esi)
522
509
; CHECK-NEXT: movl %esi, %eax
523
- ; CHECK-NEXT: leal -8(%ebp) , %esp
510
+ ; CHECK-NEXT: addl $20 , %esp
524
511
; CHECK-NEXT: popl %esi
525
512
; CHECK-NEXT: popl %edi
526
- ; CHECK-NEXT: popl %ebp
527
513
; CHECK-NEXT: retl $4
528
514
%res = call fp128 @llvm.minimum.f128 (fp128 %x , fp128 %y )
529
515
ret fp128 %res
530
516
}
517
+
518
+ define fp128 @maximumnum_fp128 (fp128 %x , fp128 %y ) nounwind {
519
+ ; CHECK-LABEL: maximumnum_fp128:
520
+ ; CHECK: # %bb.0:
521
+ ; CHECK-NEXT: pushl %edi
522
+ ; CHECK-NEXT: pushl %esi
523
+ ; CHECK-NEXT: subl $20, %esp
524
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %esi
525
+ ; CHECK-NEXT: subl $12, %esp
526
+ ; CHECK-NEXT: leal {{[0-9]+}}(%esp), %eax
527
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
528
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
529
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
530
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
531
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
532
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
533
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
534
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
535
+ ; CHECK-NEXT: pushl %eax
536
+ ; CHECK-NEXT: calll fmaximum_numl
537
+ ; CHECK-NEXT: addl $44, %esp
538
+ ; CHECK-NEXT: movl (%esp), %eax
539
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
540
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx
541
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edi
542
+ ; CHECK-NEXT: movl %edi, 12(%esi)
543
+ ; CHECK-NEXT: movl %edx, 8(%esi)
544
+ ; CHECK-NEXT: movl %ecx, 4(%esi)
545
+ ; CHECK-NEXT: movl %eax, (%esi)
546
+ ; CHECK-NEXT: movl %esi, %eax
547
+ ; CHECK-NEXT: addl $20, %esp
548
+ ; CHECK-NEXT: popl %esi
549
+ ; CHECK-NEXT: popl %edi
550
+ ; CHECK-NEXT: retl $4
551
+ %res = call fp128 @llvm.maximumnum.f128 (fp128 %x , fp128 %y )
552
+ ret fp128 %res
553
+ }
554
+
555
+ define fp128 @minimumnum_fp128 (fp128 %x , fp128 %y ) nounwind {
556
+ ; CHECK-LABEL: minimumnum_fp128:
557
+ ; CHECK: # %bb.0:
558
+ ; CHECK-NEXT: pushl %edi
559
+ ; CHECK-NEXT: pushl %esi
560
+ ; CHECK-NEXT: subl $20, %esp
561
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %esi
562
+ ; CHECK-NEXT: subl $12, %esp
563
+ ; CHECK-NEXT: leal {{[0-9]+}}(%esp), %eax
564
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
565
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
566
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
567
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
568
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
569
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
570
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
571
+ ; CHECK-NEXT: pushl {{[0-9]+}}(%esp)
572
+ ; CHECK-NEXT: pushl %eax
573
+ ; CHECK-NEXT: calll fminimum_numl
574
+ ; CHECK-NEXT: addl $44, %esp
575
+ ; CHECK-NEXT: movl (%esp), %eax
576
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
577
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx
578
+ ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edi
579
+ ; CHECK-NEXT: movl %edi, 12(%esi)
580
+ ; CHECK-NEXT: movl %edx, 8(%esi)
581
+ ; CHECK-NEXT: movl %ecx, 4(%esi)
582
+ ; CHECK-NEXT: movl %eax, (%esi)
583
+ ; CHECK-NEXT: movl %esi, %eax
584
+ ; CHECK-NEXT: addl $20, %esp
585
+ ; CHECK-NEXT: popl %esi
586
+ ; CHECK-NEXT: popl %edi
587
+ ; CHECK-NEXT: retl $4
588
+ %res = call fp128 @llvm.minimumnum.f128 (fp128 %x , fp128 %y )
589
+ ret fp128 %res
590
+ }
0 commit comments