| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s |
| |
| define half @maximum_half(half %x, half %y) nounwind { |
| ; CHECK-LABEL: maximum_half: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushl %esi |
| ; CHECK-NEXT: subl $12, %esp |
| ; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %esi |
| ; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: movl %eax, (%esp) |
| ; CHECK-NEXT: calll __extendhfsf2 |
| ; CHECK-NEXT: fsts {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill |
| ; CHECK-NEXT: movl %esi, (%esp) |
| ; CHECK-NEXT: fstps {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: calll __extendhfsf2 |
| ; CHECK-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload |
| ; CHECK-NEXT: cmpl $0, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: je .LBB0_2 |
| ; CHECK-NEXT: # %bb.1: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: .LBB0_2: |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: fucom %st(2) |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: ja .LBB0_4 |
| ; CHECK-NEXT: # %bb.3: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: .LBB0_4: |
| ; CHECK-NEXT: fstp %st(2) |
| ; CHECK-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}} |
| ; CHECK-NEXT: jp .LBB0_6 |
| ; CHECK-NEXT: # %bb.5: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: .LBB0_6: |
| ; CHECK-NEXT: fstp %st(2) |
| ; CHECK-NEXT: jne .LBB0_7 |
| ; CHECK-NEXT: # %bb.8: |
| ; CHECK-NEXT: jp .LBB0_11 |
| ; CHECK-NEXT: # %bb.9: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: jmp .LBB0_10 |
| ; CHECK-NEXT: .LBB0_7: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: .LBB0_10: |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: .LBB0_11: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fstps (%esp) |
| ; CHECK-NEXT: calll __truncsfhf2 |
| ; CHECK-NEXT: addl $12, %esp |
| ; CHECK-NEXT: popl %esi |
| ; CHECK-NEXT: retl |
| %res = call half @llvm.maximum.f16(half %x, half %y) |
| ret half %res |
| } |
| |
| define float @maximum_float(float %x, float %y) nounwind { |
| ; CHECK-LABEL: maximum_float: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushl %eax |
| ; CHECK-NEXT: flds {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fsts (%esp) |
| ; CHECK-NEXT: flds {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: cmpl $0, (%esp) |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: je .LBB1_2 |
| ; CHECK-NEXT: # %bb.1: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: .LBB1_2: |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: fucom %st(1) |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: ja .LBB1_4 |
| ; CHECK-NEXT: # %bb.3: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: .LBB1_4: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}} |
| ; CHECK-NEXT: jp .LBB1_6 |
| ; CHECK-NEXT: # %bb.5: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: .LBB1_6: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: jne .LBB1_7 |
| ; CHECK-NEXT: # %bb.8: |
| ; CHECK-NEXT: jp .LBB1_11 |
| ; CHECK-NEXT: # %bb.9: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: jmp .LBB1_10 |
| ; CHECK-NEXT: .LBB1_7: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: .LBB1_10: |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: .LBB1_11: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: popl %eax |
| ; CHECK-NEXT: retl |
| %res = call float @llvm.maximum.f32(float %x, float %y) |
| ret float %res |
| } |
| |
| define double @maximum_double(double %x, double %y) nounwind { |
| ; CHECK-LABEL: maximum_double: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: subl $8, %esp |
| ; CHECK-NEXT: fldl {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fldl {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fsts (%esp) |
| ; CHECK-NEXT: flds (%esp) |
| ; CHECK-NEXT: fstps {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: cmpl $0, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: je .LBB2_2 |
| ; CHECK-NEXT: # %bb.1: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: .LBB2_2: |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: fucom %st(2) |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: ja .LBB2_4 |
| ; CHECK-NEXT: # %bb.3: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: .LBB2_4: |
| ; CHECK-NEXT: fstp %st(2) |
| ; CHECK-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}} |
| ; CHECK-NEXT: jp .LBB2_6 |
| ; CHECK-NEXT: # %bb.5: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: .LBB2_6: |
| ; CHECK-NEXT: fstp %st(2) |
| ; CHECK-NEXT: jne .LBB2_7 |
| ; CHECK-NEXT: # %bb.8: |
| ; CHECK-NEXT: jp .LBB2_11 |
| ; CHECK-NEXT: # %bb.9: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: jmp .LBB2_10 |
| ; CHECK-NEXT: .LBB2_7: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: .LBB2_10: |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: .LBB2_11: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: addl $8, %esp |
| ; CHECK-NEXT: retl |
| %res = call double @llvm.maximum.f64(double %x, double %y) |
| ret double %res |
| } |
| |
| define fp128 @maximum_fp128(fp128 %x, fp128 %y) nounwind { |
| ; CHECK-LABEL: maximum_fp128: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushl %ebp |
| ; CHECK-NEXT: movl %esp, %ebp |
| ; CHECK-NEXT: pushl %ebx |
| ; CHECK-NEXT: pushl %edi |
| ; CHECK-NEXT: pushl %esi |
| ; CHECK-NEXT: andl $-16, %esp |
| ; CHECK-NEXT: subl $80, %esp |
| ; CHECK-NEXT: movl 8(%ebp), %esi |
| ; CHECK-NEXT: movl 36(%ebp), %edi |
| ; CHECK-NEXT: movl 40(%ebp), %ebx |
| ; CHECK-NEXT: movl 44(%ebp), %edx |
| ; CHECK-NEXT: movl 48(%ebp), %ecx |
| ; CHECK-NEXT: movl 52(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %ecx, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %edx, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %ebx, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %edi, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl 32(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl 28(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl 24(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: leal {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: movl %eax, (%esp) |
| ; CHECK-NEXT: calll fmaximuml |
| ; CHECK-NEXT: subl $4, %esp |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edi |
| ; CHECK-NEXT: movl %edi, 12(%esi) |
| ; CHECK-NEXT: movl %edx, 8(%esi) |
| ; CHECK-NEXT: movl %ecx, 4(%esi) |
| ; CHECK-NEXT: movl %eax, (%esi) |
| ; CHECK-NEXT: movl %esi, %eax |
| ; CHECK-NEXT: leal -12(%ebp), %esp |
| ; CHECK-NEXT: popl %esi |
| ; CHECK-NEXT: popl %edi |
| ; CHECK-NEXT: popl %ebx |
| ; CHECK-NEXT: popl %ebp |
| ; CHECK-NEXT: retl $4 |
| %res = call fp128 @llvm.maximum.f128(fp128 %x, fp128 %y) |
| ret fp128 %res |
| } |
| |
| define half @minimum_half(half %x, half %y) nounwind { |
| ; CHECK-LABEL: minimum_half: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushl %esi |
| ; CHECK-NEXT: subl $12, %esp |
| ; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %esi |
| ; CHECK-NEXT: movzwl {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: movl %eax, (%esp) |
| ; CHECK-NEXT: calll __extendhfsf2 |
| ; CHECK-NEXT: fsts {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill |
| ; CHECK-NEXT: movl %esi, (%esp) |
| ; CHECK-NEXT: fstps {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: calll __extendhfsf2 |
| ; CHECK-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload |
| ; CHECK-NEXT: xorl %eax, %eax |
| ; CHECK-NEXT: cmpl {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: jo .LBB4_2 |
| ; CHECK-NEXT: # %bb.1: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: .LBB4_2: |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: fucom %st(1) |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: ja .LBB4_4 |
| ; CHECK-NEXT: # %bb.3: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: .LBB4_4: |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: fucompp |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}} |
| ; CHECK-NEXT: jp .LBB4_6 |
| ; CHECK-NEXT: # %bb.5: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: .LBB4_6: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: jne .LBB4_7 |
| ; CHECK-NEXT: # %bb.8: |
| ; CHECK-NEXT: jp .LBB4_11 |
| ; CHECK-NEXT: # %bb.9: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: jmp .LBB4_10 |
| ; CHECK-NEXT: .LBB4_7: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: .LBB4_10: |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: .LBB4_11: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: fstps (%esp) |
| ; CHECK-NEXT: calll __truncsfhf2 |
| ; CHECK-NEXT: addl $12, %esp |
| ; CHECK-NEXT: popl %esi |
| ; CHECK-NEXT: retl |
| %res = call half @llvm.minimum.f16(half %x, half %y) |
| ret half %res |
| } |
| |
| define float @minimum_float(float %x, float %y) nounwind { |
| ; CHECK-LABEL: minimum_float: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushl %eax |
| ; CHECK-NEXT: flds {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fsts (%esp) |
| ; CHECK-NEXT: flds {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: xorl %eax, %eax |
| ; CHECK-NEXT: cmpl (%esp), %eax |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: jo .LBB5_2 |
| ; CHECK-NEXT: # %bb.1: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: .LBB5_2: |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: fucom %st(2) |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: fld %st(2) |
| ; CHECK-NEXT: ja .LBB5_4 |
| ; CHECK-NEXT: # %bb.3: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: .LBB5_4: |
| ; CHECK-NEXT: fxch %st(3) |
| ; CHECK-NEXT: fucompp |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}} |
| ; CHECK-NEXT: jp .LBB5_6 |
| ; CHECK-NEXT: # %bb.5: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: .LBB5_6: |
| ; CHECK-NEXT: fstp %st(2) |
| ; CHECK-NEXT: jne .LBB5_7 |
| ; CHECK-NEXT: # %bb.8: |
| ; CHECK-NEXT: jp .LBB5_11 |
| ; CHECK-NEXT: # %bb.9: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: jmp .LBB5_10 |
| ; CHECK-NEXT: .LBB5_7: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: .LBB5_10: |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: .LBB5_11: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: popl %eax |
| ; CHECK-NEXT: retl |
| %res = call float @llvm.minimum.f32(float %x, float %y) |
| ret float %res |
| } |
| |
| define double @minimum_double(double %x, double %y) nounwind { |
| ; CHECK-LABEL: minimum_double: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: subl $8, %esp |
| ; CHECK-NEXT: fldl {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fldl {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: fsts (%esp) |
| ; CHECK-NEXT: flds (%esp) |
| ; CHECK-NEXT: fstps {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: xorl %eax, %eax |
| ; CHECK-NEXT: cmpl {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: jo .LBB6_2 |
| ; CHECK-NEXT: # %bb.1: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: .LBB6_2: |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: fucom %st(1) |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: fld %st(1) |
| ; CHECK-NEXT: ja .LBB6_4 |
| ; CHECK-NEXT: # %bb.3: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fld %st(0) |
| ; CHECK-NEXT: .LBB6_4: |
| ; CHECK-NEXT: fxch %st(2) |
| ; CHECK-NEXT: fucompp |
| ; CHECK-NEXT: fnstsw %ax |
| ; CHECK-NEXT: # kill: def $ah killed $ah killed $ax |
| ; CHECK-NEXT: sahf |
| ; CHECK-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}} |
| ; CHECK-NEXT: jp .LBB6_6 |
| ; CHECK-NEXT: # %bb.5: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: .LBB6_6: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: jne .LBB6_7 |
| ; CHECK-NEXT: # %bb.8: |
| ; CHECK-NEXT: jp .LBB6_11 |
| ; CHECK-NEXT: # %bb.9: |
| ; CHECK-NEXT: fstp %st(0) |
| ; CHECK-NEXT: jmp .LBB6_10 |
| ; CHECK-NEXT: .LBB6_7: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: .LBB6_10: |
| ; CHECK-NEXT: fldz |
| ; CHECK-NEXT: fxch %st(1) |
| ; CHECK-NEXT: .LBB6_11: |
| ; CHECK-NEXT: fstp %st(1) |
| ; CHECK-NEXT: addl $8, %esp |
| ; CHECK-NEXT: retl |
| %res = call double @llvm.minimum.f64(double %x, double %y) |
| ret double %res |
| } |
| |
| define fp128 @minimum_fp128(fp128 %x, fp128 %y) nounwind { |
| ; CHECK-LABEL: minimum_fp128: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushl %ebp |
| ; CHECK-NEXT: movl %esp, %ebp |
| ; CHECK-NEXT: pushl %ebx |
| ; CHECK-NEXT: pushl %edi |
| ; CHECK-NEXT: pushl %esi |
| ; CHECK-NEXT: andl $-16, %esp |
| ; CHECK-NEXT: subl $80, %esp |
| ; CHECK-NEXT: movl 8(%ebp), %esi |
| ; CHECK-NEXT: movl 36(%ebp), %edi |
| ; CHECK-NEXT: movl 40(%ebp), %ebx |
| ; CHECK-NEXT: movl 44(%ebp), %edx |
| ; CHECK-NEXT: movl 48(%ebp), %ecx |
| ; CHECK-NEXT: movl 52(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %ecx, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %edx, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %ebx, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl %edi, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl 32(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl 28(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: movl 24(%ebp), %eax |
| ; CHECK-NEXT: movl %eax, {{[0-9]+}}(%esp) |
| ; CHECK-NEXT: leal {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: movl %eax, (%esp) |
| ; CHECK-NEXT: calll fminimuml |
| ; CHECK-NEXT: subl $4, %esp |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx |
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edi |
| ; CHECK-NEXT: movl %edi, 12(%esi) |
| ; CHECK-NEXT: movl %edx, 8(%esi) |
| ; CHECK-NEXT: movl %ecx, 4(%esi) |
| ; CHECK-NEXT: movl %eax, (%esi) |
| ; CHECK-NEXT: movl %esi, %eax |
| ; CHECK-NEXT: leal -12(%ebp), %esp |
| ; CHECK-NEXT: popl %esi |
| ; CHECK-NEXT: popl %edi |
| ; CHECK-NEXT: popl %ebx |
| ; CHECK-NEXT: popl %ebp |
| ; CHECK-NEXT: retl $4 |
| %res = call fp128 @llvm.minimum.f128(fp128 %x, fp128 %y) |
| ret fp128 %res |
| } |