@@ -4497,7 +4497,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
44974497 // Copy a Predicate register by ORRing with itself.
44984498 if (AArch64::PPRRegClass.contains (DestReg) &&
44994499 AArch64::PPRRegClass.contains (SrcReg)) {
4500- assert (Subtarget.hasSVEorSME () && " Unexpected SVE register." );
4500+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
4501+ " Unexpected SVE register." );
45014502 BuildMI (MBB, I, DL, get (AArch64::ORR_PPzPP), DestReg)
45024503 .addReg (SrcReg) // Pg
45034504 .addReg (SrcReg)
@@ -4510,8 +4511,6 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
45104511 bool DestIsPNR = AArch64::PNRRegClass.contains (DestReg);
45114512 bool SrcIsPNR = AArch64::PNRRegClass.contains (SrcReg);
45124513 if (DestIsPNR || SrcIsPNR) {
4513- assert ((Subtarget.hasSVE2p1 () || Subtarget.hasSME2 ()) &&
4514- " Unexpected predicate-as-counter register." );
45154514 auto ToPPR = [](MCRegister R) -> MCRegister {
45164515 return (R - AArch64::PN0) + AArch64::P0;
45174516 };
@@ -4532,7 +4531,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
45324531 // Copy a Z register by ORRing with itself.
45334532 if (AArch64::ZPRRegClass.contains (DestReg) &&
45344533 AArch64::ZPRRegClass.contains (SrcReg)) {
4535- assert (Subtarget.hasSVEorSME () && " Unexpected SVE register." );
4534+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
4535+ " Unexpected SVE register." );
45364536 BuildMI (MBB, I, DL, get (AArch64::ORR_ZZZ), DestReg)
45374537 .addReg (SrcReg)
45384538 .addReg (SrcReg, getKillRegState (KillSrc));
@@ -4544,7 +4544,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
45444544 AArch64::ZPR2StridedOrContiguousRegClass.contains (DestReg)) &&
45454545 (AArch64::ZPR2RegClass.contains (SrcReg) ||
45464546 AArch64::ZPR2StridedOrContiguousRegClass.contains (SrcReg))) {
4547- assert (Subtarget.hasSVEorSME () && " Unexpected SVE register." );
4547+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
4548+ " Unexpected SVE register." );
45484549 static const unsigned Indices[] = {AArch64::zsub0, AArch64::zsub1};
45494550 copyPhysRegTuple (MBB, I, DL, DestReg, SrcReg, KillSrc, AArch64::ORR_ZZZ,
45504551 Indices);
@@ -4554,7 +4555,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
45544555 // Copy a Z register triple by copying the individual sub-registers.
45554556 if (AArch64::ZPR3RegClass.contains (DestReg) &&
45564557 AArch64::ZPR3RegClass.contains (SrcReg)) {
4557- assert (Subtarget.hasSVEorSME () && " Unexpected SVE register." );
4558+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
4559+ " Unexpected SVE register." );
45584560 static const unsigned Indices[] = {AArch64::zsub0, AArch64::zsub1,
45594561 AArch64::zsub2};
45604562 copyPhysRegTuple (MBB, I, DL, DestReg, SrcReg, KillSrc, AArch64::ORR_ZZZ,
@@ -4567,7 +4569,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
45674569 AArch64::ZPR4StridedOrContiguousRegClass.contains (DestReg)) &&
45684570 (AArch64::ZPR4RegClass.contains (SrcReg) ||
45694571 AArch64::ZPR4StridedOrContiguousRegClass.contains (SrcReg))) {
4570- assert (Subtarget.hasSVEorSME () && " Unexpected SVE register." );
4572+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
4573+ " Unexpected SVE register." );
45714574 static const unsigned Indices[] = {AArch64::zsub0, AArch64::zsub1,
45724575 AArch64::zsub2, AArch64::zsub3};
45734576 copyPhysRegTuple (MBB, I, DL, DestReg, SrcReg, KillSrc, AArch64::ORR_ZZZ,
@@ -4830,14 +4833,12 @@ void AArch64InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
48304833 Opc = AArch64::STRBui;
48314834 break ;
48324835 case 2 : {
4833- bool IsPNR = AArch64::PNRRegClass.hasSubClassEq (RC);
48344836 if (AArch64::FPR16RegClass.hasSubClassEq (RC))
48354837 Opc = AArch64::STRHui;
4836- else if (IsPNR || AArch64::PPRRegClass.hasSubClassEq (RC)) {
4837- assert (Subtarget.hasSVEorSME () &&
4838+ else if (AArch64::PNRRegClass.hasSubClassEq (RC) ||
4839+ AArch64::PPRRegClass.hasSubClassEq (RC)) {
4840+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
48384841 " Unexpected register store without SVE store instructions" );
4839- assert ((!IsPNR || Subtarget.hasSVE2p1 () || Subtarget.hasSME2 ()) &&
4840- " Unexpected register store without SVE2p1 or SME2" );
48414842 Opc = AArch64::STR_PXI;
48424843 StackID = TargetStackID::ScalableVector;
48434844 }
@@ -4886,7 +4887,7 @@ void AArch64InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
48864887 AArch64::sube64, AArch64::subo64, FI, MMO);
48874888 return ;
48884889 } else if (AArch64::ZPRRegClass.hasSubClassEq (RC)) {
4889- assert (Subtarget.hasSVEorSME () &&
4890+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
48904891 " Unexpected register store without SVE store instructions" );
48914892 Opc = AArch64::STR_ZXI;
48924893 StackID = TargetStackID::ScalableVector;
@@ -4910,7 +4911,7 @@ void AArch64InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
49104911 Offset = false ;
49114912 } else if (AArch64::ZPR2RegClass.hasSubClassEq (RC) ||
49124913 AArch64::ZPR2StridedOrContiguousRegClass.hasSubClassEq (RC)) {
4913- assert (Subtarget.hasSVEorSME () &&
4914+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
49144915 " Unexpected register store without SVE store instructions" );
49154916 Opc = AArch64::STR_ZZXI;
49164917 StackID = TargetStackID::ScalableVector;
@@ -4922,7 +4923,7 @@ void AArch64InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
49224923 Opc = AArch64::ST1Threev2d;
49234924 Offset = false ;
49244925 } else if (AArch64::ZPR3RegClass.hasSubClassEq (RC)) {
4925- assert (Subtarget.hasSVEorSME () &&
4926+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
49264927 " Unexpected register store without SVE store instructions" );
49274928 Opc = AArch64::STR_ZZZXI;
49284929 StackID = TargetStackID::ScalableVector;
@@ -4935,7 +4936,7 @@ void AArch64InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
49354936 Offset = false ;
49364937 } else if (AArch64::ZPR4RegClass.hasSubClassEq (RC) ||
49374938 AArch64::ZPR4StridedOrContiguousRegClass.hasSubClassEq (RC)) {
4938- assert (Subtarget.hasSVEorSME () &&
4939+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
49394940 " Unexpected register store without SVE store instructions" );
49404941 Opc = AArch64::STR_ZZZZXI;
49414942 StackID = TargetStackID::ScalableVector;
@@ -5008,10 +5009,8 @@ void AArch64InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
50085009 if (AArch64::FPR16RegClass.hasSubClassEq (RC))
50095010 Opc = AArch64::LDRHui;
50105011 else if (IsPNR || AArch64::PPRRegClass.hasSubClassEq (RC)) {
5011- assert (Subtarget.hasSVEorSME () &&
5012+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
50125013 " Unexpected register load without SVE load instructions" );
5013- assert ((!IsPNR || Subtarget.hasSVE2p1 () || Subtarget.hasSME2 ()) &&
5014- " Unexpected register load without SVE2p1 or SME2" );
50155014 if (IsPNR)
50165015 PNRReg = DestReg;
50175016 Opc = AArch64::LDR_PXI;
@@ -5062,7 +5061,7 @@ void AArch64InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
50625061 AArch64::subo64, FI, MMO);
50635062 return ;
50645063 } else if (AArch64::ZPRRegClass.hasSubClassEq (RC)) {
5065- assert (Subtarget.hasSVEorSME () &&
5064+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
50665065 " Unexpected register load without SVE load instructions" );
50675066 Opc = AArch64::LDR_ZXI;
50685067 StackID = TargetStackID::ScalableVector;
@@ -5086,7 +5085,7 @@ void AArch64InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
50865085 Offset = false ;
50875086 } else if (AArch64::ZPR2RegClass.hasSubClassEq (RC) ||
50885087 AArch64::ZPR2StridedOrContiguousRegClass.hasSubClassEq (RC)) {
5089- assert (Subtarget.hasSVEorSME () &&
5088+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
50905089 " Unexpected register load without SVE load instructions" );
50915090 Opc = AArch64::LDR_ZZXI;
50925091 StackID = TargetStackID::ScalableVector;
@@ -5098,7 +5097,7 @@ void AArch64InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
50985097 Opc = AArch64::LD1Threev2d;
50995098 Offset = false ;
51005099 } else if (AArch64::ZPR3RegClass.hasSubClassEq (RC)) {
5101- assert (Subtarget.hasSVEorSME () &&
5100+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
51025101 " Unexpected register load without SVE load instructions" );
51035102 Opc = AArch64::LDR_ZZZXI;
51045103 StackID = TargetStackID::ScalableVector;
@@ -5111,7 +5110,7 @@ void AArch64InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
51115110 Offset = false ;
51125111 } else if (AArch64::ZPR4RegClass.hasSubClassEq (RC) ||
51135112 AArch64::ZPR4StridedOrContiguousRegClass.hasSubClassEq (RC)) {
5114- assert (Subtarget.hasSVEorSME () &&
5113+ assert (Subtarget.isSVEorStreamingSVEAvailable () &&
51155114 " Unexpected register load without SVE load instructions" );
51165115 Opc = AArch64::LDR_ZZZZXI;
51175116 StackID = TargetStackID::ScalableVector;
0 commit comments