gem5  v20.1.0.0
Classes | Namespaces | Typedefs | Enumerations | Functions
vfp.hh File Reference
#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)
 
FPSCR ArmISA::fpStandardFPSCRValue (const FPSCR &fpscr)
 
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)
 

Generated on Wed Sep 30 2020 14:02:18 for gem5 by doxygen 1.8.17