gem5
|
#include <fenv.h>
#include <cmath>
#include "arch/arm/insts/misc.hh"
#include "arch/arm/miscregs.hh"
Go to the source code of this file.
Classes | |
class | ArmISA::VfpMacroOp |
class | ArmISA::FpOp |
class | ArmISA::FpCondCompRegOp |
class | ArmISA::FpCondSelOp |
class | ArmISA::FpRegRegOp |
class | ArmISA::FpRegImmOp |
class | ArmISA::FpRegRegImmOp |
class | ArmISA::FpRegRegRegOp |
class | ArmISA::FpRegRegRegCondOp |
class | ArmISA::FpRegRegRegRegOp |
class | ArmISA::FpRegRegRegImmOp |
Namespaces | |
ArmISA | |
Typedefs | |
typedef int | ArmISA::VfpSavedState |
Enumerations | |
enum | ArmISA::VfpMicroMode { ArmISA::VfpNotAMicroop, ArmISA::VfpMicroop, ArmISA::VfpFirstMicroop, ArmISA::VfpLastMicroop } |
enum | ArmISA::FeExceptionBit { ArmISA::FeDivByZero = FE_DIVBYZERO, ArmISA::FeInexact = FE_INEXACT, ArmISA::FeInvalid = FE_INVALID, ArmISA::FeOverflow = FE_OVERFLOW, ArmISA::FeUnderflow = FE_UNDERFLOW, ArmISA::FeAllExceptions = FE_ALL_EXCEPT } |
enum | ArmISA::FeRoundingMode { ArmISA::FeRoundDown = FE_DOWNWARD, ArmISA::FeRoundNearest = FE_TONEAREST, ArmISA::FeRoundZero = FE_TOWARDZERO, ArmISA::FeRoundUpward = FE_UPWARD } |
enum | ArmISA::VfpRoundingMode { ArmISA::VfpRoundNearest = 0, ArmISA::VfpRoundUpward = 1, ArmISA::VfpRoundDown = 2, ArmISA::VfpRoundZero = 3, ArmISA::VfpRoundAway = 4 } |
Functions | |
template<class T > | |
static void | ArmISA::setVfpMicroFlags (VfpMicroMode mode, T &flags) |
static float | ArmISA::bitsToFp (uint64_t, float) |
static double | ArmISA::bitsToFp (uint64_t, double) |
static uint32_t | ArmISA::fpToBits (float) |
static uint64_t | ArmISA::fpToBits (double) |
template<class fpType > | |
static bool | ArmISA::flushToZero (fpType &op) |
template<class fpType > | |
static bool | ArmISA::flushToZero (fpType &op1, fpType &op2) |
template<class fpType > | |
static void | ArmISA::vfpFlushToZero (FPSCR &fpscr, fpType &op) |
template<class fpType > | |
static void | ArmISA::vfpFlushToZero (FPSCR &fpscr, fpType &op1, fpType &op2) |
template<class fpType > | |
static bool | ArmISA::isSnan (fpType val) |
VfpSavedState | ArmISA::prepFpState (uint32_t rMode) |
void | ArmISA::finishVfp (FPSCR &fpscr, VfpSavedState state, bool flush, FPSCR mask) |
template<class fpType > | |
fpType | ArmISA::fixDest (FPSCR fpscr, fpType val, fpType op1) |
template<class fpType > | |
fpType | ArmISA::fixDest (FPSCR fpscr, fpType val, fpType op1, fpType op2) |
template<class fpType > | |
fpType | ArmISA::fixDivDest (FPSCR fpscr, fpType val, fpType op1, fpType op2) |
float | ArmISA::fixFpDFpSDest (FPSCR fpscr, double val) |
double | ArmISA::fixFpSFpDDest (FPSCR fpscr, float val) |
uint16_t | ArmISA::vcvtFpSFpH (FPSCR &fpscr, bool flush, bool defaultNan, uint32_t rMode, bool ahp, float op) |
uint16_t | ArmISA::vcvtFpDFpH (FPSCR &fpscr, bool flush, bool defaultNan, uint32_t rMode, bool ahp, double op) |
float | ArmISA::vcvtFpHFpS (FPSCR &fpscr, bool defaultNan, bool ahp, uint16_t op) |
double | ArmISA::vcvtFpHFpD (FPSCR &fpscr, bool defaultNan, bool ahp, uint16_t op) |
static double | ArmISA::makeDouble (uint32_t low, uint32_t high) |
static uint32_t | ArmISA::lowFromDouble (double val) |
static uint32_t | ArmISA::highFromDouble (double val) |
static void | ArmISA::setFPExceptions (int exceptions) |
template<typename T > | |
uint64_t | ArmISA::vfpFpToFixed (T val, bool isSigned, uint8_t width, uint8_t imm, bool useRmode=true, VfpRoundingMode roundMode=VfpRoundZero, bool aarch64=false) |
float | ArmISA::vfpUFixedToFpS (bool flush, bool defaultNan, uint64_t val, uint8_t width, uint8_t imm) |
float | ArmISA::vfpSFixedToFpS (bool flush, bool defaultNan, int64_t val, uint8_t width, uint8_t imm) |
double | ArmISA::vfpUFixedToFpD (bool flush, bool defaultNan, uint64_t val, uint8_t width, uint8_t imm) |
double | ArmISA::vfpSFixedToFpD (bool flush, bool defaultNan, int64_t val, uint8_t width, uint8_t imm) |
float | ArmISA::fprSqrtEstimate (FPSCR &fpscr, float op) |
uint32_t | ArmISA::unsignedRSqrtEstimate (uint32_t op) |
float | ArmISA::fpRecipEstimate (FPSCR &fpscr, float op) |
uint32_t | ArmISA::unsignedRecipEstimate (uint32_t op) |
template<typename T > | |
static T | ArmISA::fpAdd (T a, T b) |
template<typename T > | |
static T | ArmISA::fpSub (T a, T b) |
static float | ArmISA::fpAddS (float a, float b) |
static double | ArmISA::fpAddD (double a, double b) |
static float | ArmISA::fpSubS (float a, float b) |
static double | ArmISA::fpSubD (double a, double b) |
static float | ArmISA::fpDivS (float a, float b) |
static double | ArmISA::fpDivD (double a, double b) |
template<typename T > | |
static T | ArmISA::fpDiv (T a, T b) |
template<typename T > | |
static T | ArmISA::fpMulX (T a, T b) |
template<typename T > | |
static T | ArmISA::fpMul (T a, T b) |
static float | ArmISA::fpMulS (float a, float b) |
static double | ArmISA::fpMulD (double a, double b) |
template<typename T > | |
static T | ArmISA::fpMulAdd (T op1, T op2, T addend) |
template<typename T > | |
static T | ArmISA::fpRIntX (T a, FPSCR &fpscr) |
template<typename T > | |
static T | ArmISA::fpMaxNum (T a, T b) |
template<typename T > | |
static T | ArmISA::fpMax (T a, T b) |
template<typename T > | |
static T | ArmISA::fpMinNum (T a, T b) |
template<typename T > | |
static T | ArmISA::fpMin (T a, T b) |
template<typename T > | |
static T | ArmISA::fpRSqrts (T a, T b) |
template<typename T > | |
static T | ArmISA::fpRecps (T a, T b) |
static float | ArmISA::fpRSqrtsS (float a, float b) |
static float | ArmISA::fpRecpsS (float a, float b) |
template<typename T > | |
static T | ArmISA::roundNEven (T a) |