Skip to content

Commit c8c271a

Browse files
committed
[X86] Add additional fp min/max libcall tests (NFC)
1 parent 500e39d commit c8c271a

File tree

1 file changed

+115
-55
lines changed

1 file changed

+115
-55
lines changed

llvm/test/CodeGen/X86/fminimum-fmaximum-i686.ll

Lines changed: 115 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
; 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
33

44
define half @maximum_half(half %x, half %y) nounwind {
55
; CHECK-LABEL: maximum_half:
66
; CHECK: # %bb.0:
77
; CHECK-NEXT: pushl %esi
8-
; CHECK-NEXT: subl $16, %esp
8+
; CHECK-NEXT: subl $24, %esp
99
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %esi
1010
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %eax
1111
; CHECK-NEXT: movl %eax, (%esp)
@@ -74,7 +74,7 @@ define half @maximum_half(half %x, half %y) nounwind {
7474
; CHECK-NEXT: fstp %st(1)
7575
; CHECK-NEXT: fstps (%esp)
7676
; CHECK-NEXT: calll __truncsfhf2
77-
; CHECK-NEXT: addl $16, %esp
77+
; CHECK-NEXT: addl $24, %esp
7878
; CHECK-NEXT: popl %esi
7979
; CHECK-NEXT: retl
8080
%res = call half @llvm.maximum.f16(half %x, half %y)
@@ -154,12 +154,9 @@ define float @maximum_float(float %x, float %y) nounwind {
154154
define double @maximum_double(double %x, double %y) nounwind {
155155
; CHECK-LABEL: maximum_double:
156156
; 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)
163160
; CHECK-NEXT: fstl {{[0-9]+}}(%esp)
164161
; CHECK-NEXT: fxch %st(1)
165162
; CHECK-NEXT: fstl (%esp)
@@ -218,8 +215,7 @@ define double @maximum_double(double %x, double %y) nounwind {
218215
; CHECK-NEXT: fxch %st(1)
219216
; CHECK-NEXT: .LBB2_13:
220217
; CHECK-NEXT: fstp %st(1)
221-
; CHECK-NEXT: movl %ebp, %esp
222-
; CHECK-NEXT: popl %ebp
218+
; CHECK-NEXT: addl $20, %esp
223219
; CHECK-NEXT: retl
224220
%res = call double @llvm.maximum.f64(double %x, double %y)
225221
ret double %res
@@ -228,25 +224,23 @@ define double @maximum_double(double %x, double %y) nounwind {
228224
define fp128 @maximum_fp128(fp128 %x, fp128 %y) nounwind {
229225
; CHECK-LABEL: maximum_fp128:
230226
; CHECK: # %bb.0:
231-
; CHECK-NEXT: pushl %ebp
232-
; CHECK-NEXT: movl %esp, %ebp
233227
; CHECK-NEXT: pushl %edi
234228
; 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)
247241
; CHECK-NEXT: pushl %eax
248242
; CHECK-NEXT: calll fmaximuml
249-
; CHECK-NEXT: addl $32, %esp
243+
; CHECK-NEXT: addl $44, %esp
250244
; CHECK-NEXT: movl (%esp), %eax
251245
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
252246
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx
@@ -256,10 +250,9 @@ define fp128 @maximum_fp128(fp128 %x, fp128 %y) nounwind {
256250
; CHECK-NEXT: movl %ecx, 4(%esi)
257251
; CHECK-NEXT: movl %eax, (%esi)
258252
; CHECK-NEXT: movl %esi, %eax
259-
; CHECK-NEXT: leal -8(%ebp), %esp
253+
; CHECK-NEXT: addl $20, %esp
260254
; CHECK-NEXT: popl %esi
261255
; CHECK-NEXT: popl %edi
262-
; CHECK-NEXT: popl %ebp
263256
; CHECK-NEXT: retl $4
264257
%res = call fp128 @llvm.maximum.f128(fp128 %x, fp128 %y)
265258
ret fp128 %res
@@ -269,7 +262,7 @@ define half @minimum_half(half %x, half %y) nounwind {
269262
; CHECK-LABEL: minimum_half:
270263
; CHECK: # %bb.0:
271264
; CHECK-NEXT: pushl %esi
272-
; CHECK-NEXT: subl $16, %esp
265+
; CHECK-NEXT: subl $24, %esp
273266
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %esi
274267
; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %eax
275268
; CHECK-NEXT: movl %eax, (%esp)
@@ -338,7 +331,7 @@ define half @minimum_half(half %x, half %y) nounwind {
338331
; CHECK-NEXT: fstp %st(0)
339332
; CHECK-NEXT: fstps (%esp)
340333
; CHECK-NEXT: calll __truncsfhf2
341-
; CHECK-NEXT: addl $16, %esp
334+
; CHECK-NEXT: addl $24, %esp
342335
; CHECK-NEXT: popl %esi
343336
; CHECK-NEXT: retl
344337
%res = call half @llvm.minimum.f16(half %x, half %y)
@@ -418,12 +411,9 @@ define float @minimum_float(float %x, float %y) nounwind {
418411
define double @minimum_double(double %x, double %y) nounwind {
419412
; CHECK-LABEL: minimum_double:
420413
; 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)
427417
; CHECK-NEXT: fstl {{[0-9]+}}(%esp)
428418
; CHECK-NEXT: fxch %st(1)
429419
; CHECK-NEXT: fstl (%esp)
@@ -482,8 +472,7 @@ define double @minimum_double(double %x, double %y) nounwind {
482472
; CHECK-NEXT: fldz
483473
; CHECK-NEXT: .LBB6_13:
484474
; CHECK-NEXT: fstp %st(0)
485-
; CHECK-NEXT: movl %ebp, %esp
486-
; CHECK-NEXT: popl %ebp
475+
; CHECK-NEXT: addl $20, %esp
487476
; CHECK-NEXT: retl
488477
%res = call double @llvm.minimum.f64(double %x, double %y)
489478
ret double %res
@@ -492,25 +481,23 @@ define double @minimum_double(double %x, double %y) nounwind {
492481
define fp128 @minimum_fp128(fp128 %x, fp128 %y) nounwind {
493482
; CHECK-LABEL: minimum_fp128:
494483
; CHECK: # %bb.0:
495-
; CHECK-NEXT: pushl %ebp
496-
; CHECK-NEXT: movl %esp, %ebp
497484
; CHECK-NEXT: pushl %edi
498485
; 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)
511498
; CHECK-NEXT: pushl %eax
512499
; CHECK-NEXT: calll fminimuml
513-
; CHECK-NEXT: addl $32, %esp
500+
; CHECK-NEXT: addl $44, %esp
514501
; CHECK-NEXT: movl (%esp), %eax
515502
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
516503
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx
@@ -520,11 +507,84 @@ define fp128 @minimum_fp128(fp128 %x, fp128 %y) nounwind {
520507
; CHECK-NEXT: movl %ecx, 4(%esi)
521508
; CHECK-NEXT: movl %eax, (%esi)
522509
; CHECK-NEXT: movl %esi, %eax
523-
; CHECK-NEXT: leal -8(%ebp), %esp
510+
; CHECK-NEXT: addl $20, %esp
524511
; CHECK-NEXT: popl %esi
525512
; CHECK-NEXT: popl %edi
526-
; CHECK-NEXT: popl %ebp
527513
; CHECK-NEXT: retl $4
528514
%res = call fp128 @llvm.minimum.f128(fp128 %x, fp128 %y)
529515
ret fp128 %res
530516
}
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

Comments
 (0)