Encoding:

POOL32F

010101

ft

fs

fd

fmt

MAX

000001011

POOL32F

010101

ft

fs

fd

fmt

MAXA

000101011

POOL32F

010101

ft

fs

fd

fmt

MIN

000000011

POOL32F

010101

ft

fs

fd

fmt

MINA

000100011

6

5

5

5

2

9

Format:

MAX.fmt MIN.fmt MAXA.fmt MINA.fmt 

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MAX.S fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MAX.D fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MAXA.S fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MAXA.D fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MIN.S fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MIN.D fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MINA.S fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

MINA.D fd,fs,ft

microMIPS32 Release 6

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

Purpose:

Scalar Floating-Point Max/Min/maxNumMag/minNumMag

Scalar Floating-Point Maximum

Scalar Floating-Point Minimum

Scalar Floating-Point argument with Maximum Absolute Value

Scalar Floating-Point argument with Minimum Absolute Value

Description:

MAX.fmt:  FPR[fd]= maxNum(FPR[fs],FPR[ft])
MIN.fmt:  FPR[fd]= minNum(FPR[fs],FPR[ft])
MAXA.fmt: FPR[fd]= maxNumMag(FPR[fs],FPR[ft])
MINA.fmt: FPR[fd]= minNumMag(FPR[fs],FPR[ft])

MAX.fmt writes the maximum value of the inputs fs and ft to the destination fd.

MIN.fmt writes the minimum value of the inputs fs and ft to the destination fd.

MAXA fmt takes input arguments fs and ft and writes the argument with the maximum absolute value to the destination fd.

MINA fmt takes input arguments fs and ft and writes the argument with the minimum absolute value to the destination fd.

The instructions MAX.fmt/MIN fmt/MAXA fmt/MINA.fmt correspond to the IEEE 754-2008 operations maxNum/ minNum/maxNumMag/minNumMag.

Numbers are preferred to NaNs: if one input is a NaN, but not both, the value of the numeric input is returned. If both are NaNs, the NaN in fs is returned.1

The scalar FPU instructions MAX fmt/MIN.fmt/MAXA fmt/MINA fmt correspond to the MSA instructions

FMAX.df/FMIN.df/FMAXA.df/FMINA.df.

Restrictions:

Data-dependent exceptions are possible as specified by the IEEE Standard for Floating-Point Arithmetic 754TM2008. See also the section "Special Cases", below.

Availability and Compatibility:

These instructions are introduced by and required as of Release 6.

Operation:

if not IsCoprocessorEnabled(1) 
   then SignalException(CoprocessorUnusable, 1) endif
if not IsFloatingPointImplemented(fmt)
   then SignalException(ReservedInstruction) endif
v1 = ValueFPR(fs,fmt)
v2 = ValueFPR(ft,fmt)
if SNaN(v1) or SNaN(v2) then
   then SignalException(InvalidOperand)  endif 
if NaN(v1) and NaN(v2)then
   ftmp = v1
elseif NaN(v1) then
   ftmp = v2
elseif NaN(v2) then
   ftmp = v1
else
   case instruction of
   FMAX.fmt:  ftmp = MaxFP.fmt(ValueFPR(fs,fmt),ValueFPR(ft,fmt))
   FMIN.fmt:  ftmp = MinFP.fmt(ValueFPR(fs,fmt),ValueFPR(ft,fmt))
   FMAXA.fmt: ftmp = MaxAbsoluteFP.fmt(ValueFPR(fs,fmt),ValueFPR(ft,fmt))
   FMINA.fmt: ftmp = MinAbsoluteFP.fmt(ValueFPR(fs,fmt),ValueFPR(ft,fmt))
   end case
endif
StoreFPR (fd, fmt, ftmp)
/* end of instruction */
function MaxFP(tt, ts, n)
   /* Returns the largest argument. */
endfunction MaxFP
function MinFP(tt, ts, n)
   /* Returns the smallest argument. */
endfunction MaxFP
function MaxAbsoluteFP(tt, ts, n)
   /* Returns the argument with largest absolute value.
      For equal absolute values, returns the largest argument.*/
endfunction MaxAbsoluteFP
function MinAbsoluteFP(tt, ts, n)
   /* Returns the argument with smallest absolute value.
      For equal absolute values, returns the smallest argument.*/
endfunction MinAbsoluteFP
function NaN(tt, ts, n)
   /* Returns true if the value is a NaN */
   return SNaN(value) or QNaN(value)
endfunction MinAbsoluteFP

Exceptions:

Coprocessor Unusable, Reserved Instruction

Floating Point Exceptions:

Unimplemented Operation, Invalid Operation