20#define DEBUG_TYPE "loongarchtti"
43 case LoongArchRegisterClass::GPRRC:
46 case LoongArchRegisterClass::FPRRC:
47 return ST->hasBasicF() ? 32 : 0;
48 case LoongArchRegisterClass::VRRC:
49 return ST->hasExtLSX() ? 32 : 0;
57 return LoongArchRegisterClass::VRRC;
59 return LoongArchRegisterClass::GPRRC;
62 if ((ScalarTy->
isFloatTy() && ST->hasBasicF()) ||
64 return LoongArchRegisterClass::FPRRC;
67 return LoongArchRegisterClass::GPRRC;
76 case LoongArchRegisterClass::GPRRC:
77 return "LoongArch::GPRRC";
78 case LoongArchRegisterClass::FPRRC:
79 return "LoongArch::FPRRC";
80 case LoongArchRegisterClass::VRRC:
81 return "LoongArch::VRRC";
unsigned getMaxInterleaveFactor() const
unsigned getMaxInterleaveFactor(ElementCount VF)
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.