50 #ifndef __ARCH_ARM_INSTS_FPLIB_HH__ 51 #define __ARCH_ARM_INSTS_FPLIB_HH__ 72 return (
FPRounding)((uint32_t)fpscr >> 22 & 3);
80 T
fplibAdd(T op1, T op2, FPSCR &fpscr);
83 int fplibCompare(T op1, T op2,
bool signal_nans, FPSCR &fpscr);
97 template <
class T1,
class T2>
101 T
fplibDiv(T op1, T op2, FPSCR &fpscr);
107 T
fplibMax(T op1, T op2, FPSCR &fpscr);
113 T
fplibMin(T op1, T op2, FPSCR &fpscr);
119 T
fplibMul(T op1, T op2, FPSCR &fpscr);
122 T
fplibMulAdd(T addend, T op1, T op2, FPSCR &fpscr);
155 T
fplibSub(T op1, T op2, FPSCR &fpscr);
166 template <
class T1,
class T2>
189 uint16_t
fplibAdd(uint16_t op1, uint16_t op2, FPSCR &fpscr);
191 uint32_t
fplibAdd(uint32_t op1, uint32_t op2, FPSCR &fpscr);
193 uint64_t
fplibAdd(uint64_t op1, uint64_t op2, FPSCR &fpscr);
195 int fplibCompare(uint16_t op1, uint16_t op2,
bool signal_nans, FPSCR &fpscr);
197 int fplibCompare(uint32_t op1, uint32_t op2,
bool signal_nans, FPSCR &fpscr);
199 int fplibCompare(uint64_t op1, uint64_t op2,
bool signal_nans, FPSCR &fpscr);
237 uint16_t
fplibDiv(uint16_t op1, uint16_t op2, FPSCR &fpscr);
239 uint32_t
fplibDiv(uint32_t op1, uint32_t op2, FPSCR &fpscr);
241 uint64_t
fplibDiv(uint64_t op1, uint64_t op2, FPSCR &fpscr);
249 uint16_t
fplibMax(uint16_t op1, uint16_t op2, FPSCR &fpscr);
251 uint32_t
fplibMax(uint32_t op1, uint32_t op2, FPSCR &fpscr);
253 uint64_t
fplibMax(uint64_t op1, uint64_t op2, FPSCR &fpscr);
255 uint16_t
fplibMaxNum(uint16_t op1, uint16_t op2, FPSCR &fpscr);
257 uint32_t
fplibMaxNum(uint32_t op1, uint32_t op2, FPSCR &fpscr);
259 uint64_t
fplibMaxNum(uint64_t op1, uint64_t op2, FPSCR &fpscr);
261 uint16_t
fplibMin(uint16_t op1, uint16_t op2, FPSCR &fpscr);
263 uint32_t
fplibMin(uint32_t op1, uint32_t op2, FPSCR &fpscr);
265 uint64_t
fplibMin(uint64_t op1, uint64_t op2, FPSCR &fpscr);
267 uint16_t
fplibMinNum(uint16_t op1, uint16_t op2, FPSCR &fpscr);
269 uint32_t
fplibMinNum(uint32_t op1, uint32_t op2, FPSCR &fpscr);
271 uint64_t
fplibMinNum(uint64_t op1, uint64_t op2, FPSCR &fpscr);
273 uint16_t
fplibMul(uint16_t op1, uint16_t op2, FPSCR &fpscr);
275 uint32_t
fplibMul(uint32_t op1, uint32_t op2, FPSCR &fpscr);
277 uint64_t
fplibMul(uint64_t op1, uint64_t op2, FPSCR &fpscr);
279 uint16_t
fplibMulAdd(uint16_t addend, uint16_t op1, uint16_t op2,
282 uint32_t
fplibMulAdd(uint32_t addend, uint32_t op1, uint32_t op2,
285 uint64_t
fplibMulAdd(uint64_t addend, uint64_t op1, uint64_t op2,
288 uint16_t
fplibMulX(uint16_t op1, uint16_t op2, FPSCR &fpscr);
290 uint32_t
fplibMulX(uint32_t op1, uint32_t op2, FPSCR &fpscr);
292 uint64_t
fplibMulX(uint64_t op1, uint64_t op2, FPSCR &fpscr);
324 uint16_t
fplibRecpX(uint16_t op, FPSCR &fpscr);
326 uint32_t
fplibRecpX(uint32_t op, FPSCR &fpscr);
328 uint64_t
fplibRecpX(uint64_t op, FPSCR &fpscr);
339 uint16_t
fplibScale(uint16_t op1, uint16_t op2, FPSCR &fpscr);
341 uint32_t
fplibScale(uint32_t op1, uint32_t op2, FPSCR &fpscr);
343 uint64_t
fplibScale(uint64_t op1, uint64_t op2, FPSCR &fpscr);
345 uint16_t
fplibSqrt(uint16_t op, FPSCR &fpscr);
347 uint32_t
fplibSqrt(uint32_t op, FPSCR &fpscr);
349 uint64_t
fplibSqrt(uint64_t op, FPSCR &fpscr);
351 uint16_t
fplibSub(uint16_t op1, uint16_t op2, FPSCR &fpscr);
353 uint32_t
fplibSub(uint32_t op1, uint32_t op2, FPSCR &fpscr);
355 uint64_t
fplibSub(uint64_t op1, uint64_t op2, FPSCR &fpscr);
357 uint16_t
fplibTrigMulAdd(uint8_t coeff_index, uint16_t op1, uint16_t op2,
360 uint32_t
fplibTrigMulAdd(uint8_t coeff_index, uint32_t op1, uint32_t op2,
363 uint64_t
fplibTrigMulAdd(uint8_t coeff_index, uint64_t op1, uint64_t op2,
366 uint16_t
fplibTrigSMul(uint16_t op1, uint16_t op2, FPSCR &fpscr);
368 uint32_t
fplibTrigSMul(uint32_t op1, uint32_t op2, FPSCR &fpscr);
370 uint64_t
fplibTrigSMul(uint64_t op1, uint64_t op2, FPSCR &fpscr);
372 uint16_t
fplibTrigSSel(uint16_t op1, uint16_t op2, FPSCR &fpscr);
374 uint32_t
fplibTrigSSel(uint32_t op1, uint32_t op2, FPSCR &fpscr);
376 uint64_t
fplibTrigSSel(uint64_t op1, uint64_t op2, FPSCR &fpscr);
uint16_t fplibAdd(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibExpA(uint16_t op)
uint16_t fplibFPToFixed(uint16_t op, int fbits, bool u, FPRounding rounding, FPSCR &fpscr)
bool fplibCompareGT(uint16_t a, uint16_t b, FPSCR &fpscr)
uint16_t fplibRoundInt(uint16_t op, FPRounding rounding, bool exact, FPSCR &fpscr)
uint16_t fplibRSqrtEstimate(uint16_t op, FPSCR &fpscr)
uint16_t fplibDefaultNaN()
Foating-point value for default NaN.
uint16_t fplibNeg(uint16_t op)
uint16_t fplibScale(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibMaxNum(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibMinNum(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint32_t fplibFPToFixedJS(uint64_t op, FPSCR &fpscr, bool is64, uint8_t &nz)
Floating-point JS convert to a signed integer, with rounding to zero.
uint16_t fplibMulX(uint16_t op1, uint16_t op2, FPSCR &fpscr)
bool fplibCompareEQ(uint16_t a, uint16_t b, FPSCR &fpscr)
uint16_t fplibRSqrtStepFused(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibConvert(uint32_t op, FPRounding rounding, FPSCR &fpscr)
static FPRounding FPCRRounding(FPSCR &fpscr)
uint16_t fplibRecpX(uint16_t op, FPSCR &fpscr)
uint16_t fplibMul(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibMin(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibRecipStepFused(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibRecipEstimate(uint16_t op, FPSCR &fpscr)
uint16_t fplibInfinity(int sgn)
Floating-point value for +/- infinity.
uint16_t fplibSub(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibAbs(uint16_t op)
uint16_t fplibFixedToFP(uint64_t op, int fbits, bool u, FPRounding rounding, FPSCR &fpscr)
Floating-point convert from fixed-point.
uint16_t fplibMax(uint16_t op1, uint16_t op2, FPSCR &fpscr)
bool fplibCompareGE(uint16_t a, uint16_t b, FPSCR &fpscr)
uint16_t fplibMulAdd(uint16_t addend, uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibTrigSMul(uint16_t op1, uint16_t op2, FPSCR &fpscr)
int fplibCompare(uint16_t op1, uint16_t op2, bool signal_nans, FPSCR &fpscr)
bool fplibCompareUN(uint16_t a, uint16_t b, FPSCR &fpscr)
uint16_t fplibSqrt(uint16_t op, FPSCR &fpscr)
uint16_t fplibDiv(uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibTrigMulAdd(uint8_t coeff_index, uint16_t op1, uint16_t op2, FPSCR &fpscr)
uint16_t fplibTrigSSel(uint16_t op1, uint16_t op2, FPSCR &fpscr)