49 #ifndef __ARCH_ARM_INSTS_FPLIB_HH__
50 #define __ARCH_ARM_INSTS_FPLIB_HH__
71 return (
FPRounding)((uint32_t)fpscr >> 22 & 3);
79 T
fplibAdd(T op1, T op2, FPSCR &fpscr);
82 int fplibCompare(T op1, T op2,
bool signal_nans, FPSCR &fpscr);
93 template <
class T1,
class T2>
97 T
fplibDiv(T op1, T op2, FPSCR &fpscr);
100 T
fplibMax(T op1, T op2, FPSCR &fpscr);
106 T
fplibMin(T op1, T op2, FPSCR &fpscr);
112 T
fplibMul(T op1, T op2, FPSCR &fpscr);
115 T
fplibMulAdd(T addend, T op1, T op2, FPSCR &fpscr);
145 T
fplibSub(T op1, T op2, FPSCR &fpscr);
147 template <
class T1,
class T2>
160 uint32_t
fplibAdd(uint32_t op1, uint32_t op2, FPSCR &fpscr);
162 uint64_t
fplibAdd(uint64_t op1, uint64_t op2, FPSCR &fpscr);
164 int fplibCompare(uint32_t op1, uint32_t op2,
bool signal_nans, FPSCR &fpscr);
166 int fplibCompare(uint64_t op1, uint64_t op2,
bool signal_nans, FPSCR &fpscr);
192 uint32_t
fplibDiv(uint32_t op1, uint32_t op2, FPSCR &fpscr);
194 uint64_t
fplibDiv(uint64_t op1, uint64_t op2, FPSCR &fpscr);
196 uint32_t
fplibMax(uint32_t op1, uint32_t op2, FPSCR &fpscr);
198 uint64_t
fplibMax(uint64_t op1, uint64_t op2, FPSCR &fpscr);
200 uint32_t
fplibMaxNum(uint32_t op1, uint32_t op2, FPSCR &fpscr);
202 uint64_t
fplibMaxNum(uint64_t op1, uint64_t op2, FPSCR &fpscr);
204 uint32_t
fplibMin(uint32_t op1, uint32_t op2, FPSCR &fpscr);
206 uint64_t
fplibMin(uint64_t op1, uint64_t op2, FPSCR &fpscr);
208 uint32_t
fplibMinNum(uint32_t op1, uint32_t op2, FPSCR &fpscr);
210 uint64_t
fplibMinNum(uint64_t op1, uint64_t op2, FPSCR &fpscr);
212 uint32_t
fplibMul(uint32_t op1, uint32_t op2, FPSCR &fpscr);
214 uint64_t
fplibMul(uint64_t op1, uint64_t op2, FPSCR &fpscr);
216 uint32_t
fplibMulAdd(uint32_t addend, uint32_t op1, uint32_t op2,
219 uint64_t
fplibMulAdd(uint64_t addend, uint64_t op1, uint64_t op2,
222 uint32_t
fplibMulX(uint32_t op1, uint32_t op2, FPSCR &fpscr);
224 uint64_t
fplibMulX(uint64_t op1, uint64_t op2, FPSCR &fpscr);
260 uint32_t
fplibSub(uint32_t op1, uint32_t op2, FPSCR &fpscr);
262 uint64_t
fplibSub(uint64_t op1, uint64_t op2, FPSCR &fpscr);
uint32_t fplibFPToFixed(uint32_t op, int fbits, bool u, FPRounding rounding, FPSCR &fpscr)
uint32_t fplibMax(uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibRecpX(uint32_t op, FPSCR &fpscr)
uint32_t fplibRoundInt(uint32_t op, FPRounding rounding, bool exact, FPSCR &fpscr)
uint32_t fplibSub(uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibMaxNum(uint32_t op1, uint32_t op2, FPSCR &fpscr)
int fplibCompare(uint32_t op1, uint32_t op2, bool signal_nans, FPSCR &fpscr)
uint16_t fplibConvert(uint32_t op, FPRounding rounding, FPSCR &fpscr)
static FPRounding FPCRRounding(FPSCR &fpscr)
uint32_t fplibRecipEstimate(uint32_t op, FPSCR &fpscr)
uint32_t fplibDiv(uint32_t op1, uint32_t op2, FPSCR &fpscr)
bool fplibCompareGE(uint32_t a, uint32_t b, FPSCR &fpscr)
uint32_t fplibNeg(uint32_t op)
uint32_t fplibSqrt(uint32_t op, FPSCR &fpscr)
uint32_t fplibMulAdd(uint32_t addend, uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibAbs(uint32_t op)
uint32_t fplibRecipStepFused(uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibAdd(uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibRSqrtStepFused(uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibRSqrtEstimate(uint32_t op, FPSCR &fpscr)
uint32_t fplibMin(uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibMinNum(uint32_t op1, uint32_t op2, FPSCR &fpscr)
bool fplibCompareGT(uint32_t a, uint32_t b, FPSCR &fpscr)
uint32_t fplibMulX(uint32_t op1, uint32_t op2, FPSCR &fpscr)
uint32_t fplibMul(uint32_t op1, uint32_t op2, FPSCR &fpscr)
bool fplibCompareEQ(uint32_t a, uint32_t b, FPSCR &fpscr)
uint32_t fplibFixedToFP(uint64_t op, int fbits, bool u, FPRounding rounding, FPSCR &fpscr)
Floating-point convert from fixed-point.