this repo has no description
at fixPythonPipStalling 47 lines 1.5 kB view raw
1/* 2 * e_minmax.s 3 * LibmV5 4 * 5 * Created by Ian Ollmann on 8/19/05. 6 * Copyright 2005 Apple Computer. All rights reserved. 7 * 8 */ 9 10#include <machine/asm.h> 11#include "abi.h" 12 13// long double fminl( long double a, long double b ) 14ENTRY( fminl ) 15 fldt FIRST_ARG_OFFSET(STACKP) // {a} 16 fldt SECOND_ARG_OFFSET(STACKP) // {b,a} 17 fucomi %ST(0), %ST // test b is NaN 18 fcmovu %ST(1), %ST(0) // if( b is NaN) b = a 19 fucomi %ST(1), %ST // b > a 20 fcmovnb %ST(1), %ST(0) 21 fstp %ST(1) 22 ret 23 24// long double fmaxl( long double a, long double b ) 25ENTRY( fmaxl ) 26 fldt FIRST_ARG_OFFSET(STACKP) // {a} 27 fldt SECOND_ARG_OFFSET(STACKP) // {b,a} 28 fucomi %ST(0), %ST // test b is NaN 29 fcmovu %ST(1), %ST(0) // if( b is NaN) b = a 30 fld %ST(1) // {a, b, a} 31 fucomip %ST(1), %ST // a >= b 32 fcmovnb %ST(1), %ST(0) 33 fstp %ST(1) 34 ret 35 36// long double fdiml( long double a, long double b ) 37ENTRY( fdiml ) 38 fldz // {0} 39 fldt FIRST_ARG_OFFSET(STACKP) // {a, 0} 40 fldt SECOND_ARG_OFFSET(STACKP) // {b, a, 0} 41 fucomi %ST(1), %ST // {b, a, 0} b >= a and not NaN 42 fcmovnb %ST(2), %ST(0) // {b or 0, a, 0 } 43 fxch // {a, b or 0, 0 } 44 fcmovnb %ST(2), %ST(0) // {a or 0, b or 0, 0 } 45 fsubp // {result, 0 } 46 fstp %ST(1) // {result} 47 ret