@@ -161,8 +161,6 @@ bool matchREV(MachineInstr &MI, MachineRegisterInfo &MRI,
161161 Register Dst = MI.getOperand (0 ).getReg ();
162162 Register Src = MI.getOperand (1 ).getReg ();
163163 LLT Ty = MRI.getType (Dst);
164- if (Ty.isScalableVector ())
165- return false ;
166164 unsigned EltSize = Ty.getScalarSizeInBits ();
167165
168166 // Element size for a rev cannot be 64.
@@ -198,10 +196,7 @@ bool matchTRN(MachineInstr &MI, MachineRegisterInfo &MRI,
198196 unsigned WhichResult;
199197 ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
200198 Register Dst = MI.getOperand (0 ).getReg ();
201- LLT DstTy = MRI.getType (Dst);
202- if (DstTy.isScalableVector ())
203- return false ;
204- unsigned NumElts = DstTy.getNumElements ();
199+ unsigned NumElts = MRI.getType (Dst).getNumElements ();
205200 if (!isTRNMask (ShuffleMask, NumElts, WhichResult))
206201 return false ;
207202 unsigned Opc = (WhichResult == 0 ) ? AArch64::G_TRN1 : AArch64::G_TRN2;
@@ -222,10 +217,7 @@ bool matchUZP(MachineInstr &MI, MachineRegisterInfo &MRI,
222217 unsigned WhichResult;
223218 ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
224219 Register Dst = MI.getOperand (0 ).getReg ();
225- LLT DstTy = MRI.getType (Dst);
226- if (DstTy.isScalableVector ())
227- return false ;
228- unsigned NumElts = DstTy.getNumElements ();
220+ unsigned NumElts = MRI.getType (Dst).getNumElements ();
229221 if (!isUZPMask (ShuffleMask, NumElts, WhichResult))
230222 return false ;
231223 unsigned Opc = (WhichResult == 0 ) ? AArch64::G_UZP1 : AArch64::G_UZP2;
@@ -241,10 +233,7 @@ bool matchZip(MachineInstr &MI, MachineRegisterInfo &MRI,
241233 unsigned WhichResult;
242234 ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
243235 Register Dst = MI.getOperand (0 ).getReg ();
244- LLT DstTy = MRI.getType (Dst);
245- if (DstTy.isScalableVector ())
246- return false ;
247- unsigned NumElts = DstTy.getNumElements ();
236+ unsigned NumElts = MRI.getType (Dst).getNumElements ();
248237 if (!isZIPMask (ShuffleMask, NumElts, WhichResult))
249238 return false ;
250239 unsigned Opc = (WhichResult == 0 ) ? AArch64::G_ZIP1 : AArch64::G_ZIP2;
@@ -299,10 +288,7 @@ bool matchDupFromBuildVector(int Lane, MachineInstr &MI,
299288 MachineRegisterInfo &MRI,
300289 ShuffleVectorPseudo &MatchInfo) {
301290 assert (Lane >= 0 && " Expected positive lane?" );
302- LLT Op1Ty = MRI.getType (MI.getOperand (1 ).getReg ());
303- if (Op1Ty.isScalableVector ())
304- return false ;
305- int NumElements = Op1Ty.getNumElements ();
291+ int NumElements = MRI.getType (MI.getOperand (1 ).getReg ()).getNumElements ();
306292 // Test if the LHS is a BUILD_VECTOR. If it is, then we can just reference the
307293 // lane's definition directly.
308294 auto *BuildVecMI =
@@ -340,8 +326,6 @@ bool matchDup(MachineInstr &MI, MachineRegisterInfo &MRI,
340326// Check if an EXT instruction can handle the shuffle mask when the vector
341327// sources of the shuffle are the same.
342328bool isSingletonExtMask (ArrayRef<int > M, LLT Ty) {
343- if (Ty.isScalableVector ())
344- return false ;
345329 unsigned NumElts = Ty.getNumElements ();
346330
347331 // Assume that the first shuffle index is not UNDEF. Fail if it is.
@@ -373,17 +357,12 @@ bool matchEXT(MachineInstr &MI, MachineRegisterInfo &MRI,
373357 assert (MI.getOpcode () == TargetOpcode::G_SHUFFLE_VECTOR);
374358 Register Dst = MI.getOperand (0 ).getReg ();
375359 LLT DstTy = MRI.getType (Dst);
376- if (DstTy.isScalableVector ())
377- return false ;
378360 Register V1 = MI.getOperand (1 ).getReg ();
379361 Register V2 = MI.getOperand (2 ).getReg ();
380362 auto Mask = MI.getOperand (3 ).getShuffleMask ();
381363 uint64_t Imm;
382364 auto ExtInfo = getExtMask (Mask, DstTy.getNumElements ());
383- LLT V1Ty = MRI.getType (V1);
384- if (V1Ty.isScalableVector ())
385- return false ;
386- uint64_t ExtFactor = V1Ty.getScalarSizeInBits () / 8 ;
365+ uint64_t ExtFactor = MRI.getType (V1).getScalarSizeInBits () / 8 ;
387366
388367 if (!ExtInfo) {
389368 if (!getOpcodeDef<GImplicitDef>(V2, MRI) ||
@@ -444,8 +423,6 @@ void applyNonConstInsert(MachineInstr &MI, MachineRegisterInfo &MRI,
444423
445424 Register Offset = Insert.getIndexReg ();
446425 LLT VecTy = MRI.getType (Insert.getReg (0 ));
447- if (VecTy.isScalableVector ())
448- return ;
449426 LLT EltTy = MRI.getType (Insert.getElementReg ());
450427 LLT IdxTy = MRI.getType (Insert.getIndexReg ());
451428
@@ -496,10 +473,7 @@ bool matchINS(MachineInstr &MI, MachineRegisterInfo &MRI,
496473 assert (MI.getOpcode () == TargetOpcode::G_SHUFFLE_VECTOR);
497474 ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
498475 Register Dst = MI.getOperand (0 ).getReg ();
499- LLT DstTy = MRI.getType (Dst);
500- if (DstTy.isScalableVector ())
501- return false ;
502- int NumElts = DstTy.getNumElements ();
476+ int NumElts = MRI.getType (Dst).getNumElements ();
503477 auto DstIsLeftAndDstLane = isINSMask (ShuffleMask, NumElts);
504478 if (!DstIsLeftAndDstLane)
505479 return false ;
@@ -548,8 +522,6 @@ bool isVShiftRImm(Register Reg, MachineRegisterInfo &MRI, LLT Ty,
548522 if (!Cst)
549523 return false ;
550524 Cnt = *Cst;
551- if (Ty.isScalableVector ())
552- return false ;
553525 int64_t ElementBits = Ty.getScalarSizeInBits ();
554526 return Cnt >= 1 && Cnt <= ElementBits;
555527}
@@ -726,8 +698,6 @@ bool matchDupLane(MachineInstr &MI, MachineRegisterInfo &MRI,
726698 Register Src1Reg = MI.getOperand (1 ).getReg ();
727699 const LLT SrcTy = MRI.getType (Src1Reg);
728700 const LLT DstTy = MRI.getType (MI.getOperand (0 ).getReg ());
729- if (SrcTy.isScalableVector ())
730- return false ;
731701
732702 auto LaneIdx = getSplatIndex (MI);
733703 if (!LaneIdx)
@@ -804,8 +774,6 @@ bool matchScalarizeVectorUnmerge(MachineInstr &MI, MachineRegisterInfo &MRI) {
804774 auto &Unmerge = cast<GUnmerge>(MI);
805775 Register Src1Reg = Unmerge.getReg (Unmerge.getNumOperands () - 1 );
806776 const LLT SrcTy = MRI.getType (Src1Reg);
807- if (SrcTy.isScalableVector ())
808- return false ;
809777 if (SrcTy.getSizeInBits () != 128 && SrcTy.getSizeInBits () != 64 )
810778 return false ;
811779 return SrcTy.isVector () && !SrcTy.isScalable () &&
@@ -1019,10 +987,7 @@ bool matchLowerVectorFCMP(MachineInstr &MI, MachineRegisterInfo &MRI,
1019987 if (!DstTy.isVector () || !ST.hasNEON ())
1020988 return false ;
1021989 Register LHS = MI.getOperand (2 ).getReg ();
1022- LLT LHSTy = MRI.getType (LHS);
1023- if (LHSTy.isScalableVector ())
1024- return false ;
1025- unsigned EltSize = LHSTy.getScalarSizeInBits ();
990+ unsigned EltSize = MRI.getType (LHS).getScalarSizeInBits ();
1026991 if (EltSize == 16 && !ST.hasFullFP16 ())
1027992 return false ;
1028993 if (EltSize != 16 && EltSize != 32 && EltSize != 64 )
@@ -1218,7 +1183,7 @@ bool matchExtMulToMULL(MachineInstr &MI, MachineRegisterInfo &MRI) {
12181183 MachineInstr *I1 = getDefIgnoringCopies (MI.getOperand (1 ).getReg (), MRI);
12191184 MachineInstr *I2 = getDefIgnoringCopies (MI.getOperand (2 ).getReg (), MRI);
12201185
1221- if (DstTy.isFixedVector ()) {
1186+ if (DstTy.isVector ()) {
12221187 // If the source operands were EXTENDED before, then {U/S}MULL can be used
12231188 unsigned I1Opc = I1->getOpcode ();
12241189 unsigned I2Opc = I2->getOpcode ();
0 commit comments