20#define DEBUG_TYPE "loongarchtti"
29 if (!ST->hasExpAutoVec())
45 case LoongArchRegisterClass::GPRRC:
48 case LoongArchRegisterClass::FPRRC:
49 return ST->hasBasicF() ? 32 : 0;
50 case LoongArchRegisterClass::VRRC:
51 return ST->hasExtLSX() ? 32 : 0;
59 return LoongArchRegisterClass::VRRC;
61 return LoongArchRegisterClass::GPRRC;
64 if ((ScalarTy->
isFloatTy() && ST->hasBasicF()) ||
66 return LoongArchRegisterClass::FPRRC;
69 return LoongArchRegisterClass::GPRRC;
74 case LoongArchRegisterClass::GPRRC:
75 return "LoongArch::GPRRC";
76 case LoongArchRegisterClass::FPRRC:
77 return "LoongArch::FPRRC";
78 case LoongArchRegisterClass::VRRC:
79 return "LoongArch::VRRC";
unsigned getRegisterClassForType(bool Vector, Type *Ty=nullptr) const
unsigned getNumberOfRegisters(unsigned ClassID) const
TypeSize getRegisterBitWidth(TargetTransformInfo::RegisterKind K) const
const char * getRegisterClassName(unsigned ClassID) const
static constexpr TypeSize getFixed(ScalarTy ExactSize)
The instances of the Type class are immutable: once they are created, they are never changed.
bool isFloatTy() const
Return true if this is 'float', a 32-bit IEEE fp type.
bool isDoubleTy() const
Return true if this is 'double', a 64-bit IEEE fp type.
Type * getScalarType() const
If this is a vector type, return the element type, otherwise return 'this'.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
This is an optimization pass for GlobalISel generic memory operations.