Lines Matching defs:RegKind
67 enum class RegKind {
90 StringMap<std::pair<RegKind, unsigned>> RegisterReqs;
166 unsigned matchRegisterNameAlias(StringRef Name, RegKind Kind);
233 unsigned getNumRegsForRegKind(RegKind K);
248 RegKind MatchKind);
277 template <RegKind RK>
281 template <RegKind VectorKind>
384 RegKind Kind;
424 RegKind RegisterKind;
1216 return Kind == k_Register && Reg.Kind == RegKind::Scalar;
1220 return Kind == k_Register && Reg.Kind == RegKind::NeonVector;
1224 return Kind == k_Register && Reg.Kind == RegKind::NeonVector &&
1232 return Kind == k_Register && Reg.Kind == RegKind::NeonVector &&
1241 RegKind RK;
1249 RK = RegKind::SVEPredicateAsCounter;
1260 RegKind RK;
1265 RK = RegKind::SVEDataVector;
1273 RK = RegKind::SVEPredicateVector;
1284 return Kind == k_Register && Reg.Kind == RegKind::Scalar &&
1290 if (Kind != k_Register || Reg.Kind != RegKind::SVEPredicateVector)
1301 if (Kind != k_Register || (Reg.Kind != RegKind::SVEPredicateAsCounter &&
1302 Reg.Kind != RegKind::SVEPredicateVector))
1315 if (Kind != k_Register || Reg.Kind != RegKind::SVEPredicateAsCounter)
1326 if (Kind != k_Register || Reg.Kind != RegKind::SVEDataVector)
1359 return Kind == k_Register && Reg.Kind == RegKind::Scalar &&
1364 return Kind == k_Register && Reg.Kind == RegKind::Scalar &&
1369 return Kind == k_Register && Reg.Kind == RegKind::Scalar &&
1375 return Kind == k_Register && Reg.Kind == RegKind::Scalar &&
1381 return Kind == k_Register && Reg.Kind == RegKind::Scalar &&
1404 return Kind == k_Register && Reg.Kind == RegKind::Scalar &&
1410 if (Kind != k_Register || Reg.Kind != RegKind::Scalar)
1421 template <RegKind VectorKind, unsigned NumRegs>
1428 template <RegKind VectorKind, unsigned NumRegs, unsigned NumElements,
1444 template <RegKind VectorKind, unsigned NumRegs, unsigned NumElements,
1456 template <RegKind VectorKind, unsigned NumRegs, unsigned Stride,
2263 CreateReg(unsigned RegNum, RegKind Kind, SMLoc S, SMLoc E, MCContext &Ctx,
2282 CreateVectorReg(unsigned RegNum, RegKind Kind, unsigned ElementWidth,
2287 assert((Kind == RegKind::NeonVector || Kind == RegKind::SVEDataVector ||
2288 Kind == RegKind::SVEPredicateVector ||
2289 Kind == RegKind::SVEPredicateAsCounter) &&
2300 RegKind RegisterKind, SMLoc S, SMLoc E, MCContext &Ctx) {
2678 RegKind VectorKind) {
2682 case RegKind::NeonVector:
2709 case RegKind::SVEPredicateAsCounter:
2710 case RegKind::SVEPredicateVector:
2711 case RegKind::SVEDataVector:
2712 case RegKind::Matrix:
2723 llvm_unreachable("Unsupported RegKind");
2732 static bool isValidVectorKind(StringRef Suffix, RegKind VectorKind) {
2949 RegKind Kind) {
2952 return Kind == RegKind::SVEDataVector ? RegNum : 0;
2955 return Kind == RegKind::SVEPredicateVector ? RegNum : 0;
2958 return Kind == RegKind::SVEPredicateAsCounter ? RegNum : 0;
2961 return Kind == RegKind::NeonVector ? RegNum : 0;
2964 return Kind == RegKind::Matrix ? RegNum : 0;
2967 return Kind == RegKind::LookupTable ? AArch64::ZT0 : 0;
2969 // The parsed register must be of RegKind Scalar
2971 return (Kind == RegKind::Scalar) ? RegNum : 0;
2981 return Kind == RegKind::Scalar ? RegNum : 0;
2997 unsigned AArch64AsmParser::getNumRegsForRegKind(RegKind K) {
2999 case RegKind::Scalar:
3000 case RegKind::NeonVector:
3001 case RegKind::SVEDataVector:
3003 case RegKind::Matrix:
3004 case RegKind::SVEPredicateVector:
3005 case RegKind::SVEPredicateAsCounter:
3007 case RegKind::LookupTable:
3010 llvm_unreachable("Unsupported RegKind");
3022 unsigned Reg = matchRegisterNameAlias(lowerCase, RegKind::Scalar);
3199 RegNum, RegKind::Scalar, StartLoc, getLoc(), getContext()));
3527 parseVectorKind(Name.drop_front(DotPosition), RegKind::Matrix);
3546 unsigned Reg = matchRegisterNameAlias(Name, RegKind::Matrix);
3563 const auto &KindRes = parseVectorKind(Tail, RegKind::Matrix);
4121 ParseStatus Res = tryParseVectorRegister(Reg, Kind, RegKind::NeonVector);
4125 const auto &KindRes = parseVectorKind(Kind, RegKind::NeonVector);
4131 AArch64Operand::CreateVectorReg(Reg, RegKind::NeonVector, ElementWidth,
4170 RegKind MatchKind) {
4201 tryParseSVEPredicateVector<RegKind::SVEPredicateAsCounter>(Operands);
4203 Status = tryParseSVEPredicateVector<RegKind::SVEPredicateVector>(Operands);
4208 template <RegKind RK>
4229 if (RK == RegKind::SVEPredicateAsCounter) {
4256 if (RK == RegKind::SVEPredicateAsCounter && Pred != "z")
4259 if (RK == RegKind::SVEPredicateVector && Pred != "z" && Pred != "m")
4381 parseVectorKind(Tail, RegKind::Matrix);
4470 template <RegKind VectorKind>
4596 auto ParseRes = tryParseVectorList<RegKind::NeonVector>(Operands, true);
4613 RegNum, RegKind::Scalar, StartLoc, getLoc(), getContext()));
4628 RegNum, RegKind::Scalar, StartLoc, getLoc(), getContext()));
4637 unsigned RegNum = matchRegisterNameAlias(Name, RegKind::LookupTable);
4643 RegNum, RegKind::LookupTable, StartLoc, getLoc(), getContext()));
4682 RegNum, RegKind::Scalar, StartLoc, getLoc(), getContext(), EqTy));
4697 RegNum, RegKind::Scalar, StartLoc, Ext->getEndLoc(), getContext(), EqTy,
6293 RegWidth == 32 ? AArch64::WZR : AArch64::XZR, RegKind::Scalar,
6455 Operands[2] = AArch64Operand::CreateReg(Reg, RegKind::Scalar,
6471 Operands[2] = AArch64Operand::CreateReg(Reg, RegKind::Scalar,
6488 Operands[1] = AArch64Operand::CreateReg(Reg, RegKind::Scalar,
7208 RegKind RegisterKind = RegKind::Scalar;
7214 RegisterKind = RegKind::NeonVector;
7215 ParseRes = tryParseVectorRegister(RegNum, Kind, RegKind::NeonVector);
7226 RegisterKind = RegKind::SVEDataVector;
7228 tryParseVectorRegister(RegNum, Kind, RegKind::SVEDataVector);
7240 RegisterKind = RegKind::SVEPredicateVector;
7241 ParseRes = tryParseVectorRegister(RegNum, Kind, RegKind::SVEPredicateVector);
7929 Operands.push_back(AArch64Operand::CreateReg(Pair, RegKind::Scalar, S,
7943 tryParseVectorRegister(RegNum, Kind, RegKind::SVEDataVector);
7951 const auto &KindRes = parseVectorKind(Kind, RegKind::SVEDataVector);
7960 RegNum, RegKind::SVEDataVector, ElementWidth, S, S, getContext()));
7979 RegNum, RegKind::SVEDataVector, ElementWidth, S, Ext->getEndLoc(),
8068 AArch64Operand::CreateReg(X8Reg, RegKind::Scalar, SS, getLoc(), ctx));