@@ -161,8 +161,6 @@ bool matchREV(MachineInstr &MI, MachineRegisterInfo &MRI,
161
161
Register Dst = MI.getOperand (0 ).getReg ();
162
162
Register Src = MI.getOperand (1 ).getReg ();
163
163
LLT Ty = MRI.getType (Dst);
164
- if (Ty.isScalableVector ())
165
- return false ;
166
164
unsigned EltSize = Ty.getScalarSizeInBits ();
167
165
168
166
// Element size for a rev cannot be 64.
@@ -198,10 +196,7 @@ bool matchTRN(MachineInstr &MI, MachineRegisterInfo &MRI,
198
196
unsigned WhichResult;
199
197
ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
200
198
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 ();
205
200
if (!isTRNMask (ShuffleMask, NumElts, WhichResult))
206
201
return false ;
207
202
unsigned Opc = (WhichResult == 0 ) ? AArch64::G_TRN1 : AArch64::G_TRN2;
@@ -222,10 +217,7 @@ bool matchUZP(MachineInstr &MI, MachineRegisterInfo &MRI,
222
217
unsigned WhichResult;
223
218
ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
224
219
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 ();
229
221
if (!isUZPMask (ShuffleMask, NumElts, WhichResult))
230
222
return false ;
231
223
unsigned Opc = (WhichResult == 0 ) ? AArch64::G_UZP1 : AArch64::G_UZP2;
@@ -241,10 +233,7 @@ bool matchZip(MachineInstr &MI, MachineRegisterInfo &MRI,
241
233
unsigned WhichResult;
242
234
ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
243
235
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 ();
248
237
if (!isZIPMask (ShuffleMask, NumElts, WhichResult))
249
238
return false ;
250
239
unsigned Opc = (WhichResult == 0 ) ? AArch64::G_ZIP1 : AArch64::G_ZIP2;
@@ -299,10 +288,7 @@ bool matchDupFromBuildVector(int Lane, MachineInstr &MI,
299
288
MachineRegisterInfo &MRI,
300
289
ShuffleVectorPseudo &MatchInfo) {
301
290
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 ();
306
292
// Test if the LHS is a BUILD_VECTOR. If it is, then we can just reference the
307
293
// lane's definition directly.
308
294
auto *BuildVecMI =
@@ -340,8 +326,6 @@ bool matchDup(MachineInstr &MI, MachineRegisterInfo &MRI,
340
326
// Check if an EXT instruction can handle the shuffle mask when the vector
341
327
// sources of the shuffle are the same.
342
328
bool isSingletonExtMask (ArrayRef<int > M, LLT Ty) {
343
- if (Ty.isScalableVector ())
344
- return false ;
345
329
unsigned NumElts = Ty.getNumElements ();
346
330
347
331
// Assume that the first shuffle index is not UNDEF. Fail if it is.
@@ -373,17 +357,12 @@ bool matchEXT(MachineInstr &MI, MachineRegisterInfo &MRI,
373
357
assert (MI.getOpcode () == TargetOpcode::G_SHUFFLE_VECTOR);
374
358
Register Dst = MI.getOperand (0 ).getReg ();
375
359
LLT DstTy = MRI.getType (Dst);
376
- if (DstTy.isScalableVector ())
377
- return false ;
378
360
Register V1 = MI.getOperand (1 ).getReg ();
379
361
Register V2 = MI.getOperand (2 ).getReg ();
380
362
auto Mask = MI.getOperand (3 ).getShuffleMask ();
381
363
uint64_t Imm;
382
364
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 ;
387
366
388
367
if (!ExtInfo) {
389
368
if (!getOpcodeDef<GImplicitDef>(V2, MRI) ||
@@ -444,8 +423,6 @@ void applyNonConstInsert(MachineInstr &MI, MachineRegisterInfo &MRI,
444
423
445
424
Register Offset = Insert.getIndexReg ();
446
425
LLT VecTy = MRI.getType (Insert.getReg (0 ));
447
- if (VecTy.isScalableVector ())
448
- return ;
449
426
LLT EltTy = MRI.getType (Insert.getElementReg ());
450
427
LLT IdxTy = MRI.getType (Insert.getIndexReg ());
451
428
@@ -496,10 +473,7 @@ bool matchINS(MachineInstr &MI, MachineRegisterInfo &MRI,
496
473
assert (MI.getOpcode () == TargetOpcode::G_SHUFFLE_VECTOR);
497
474
ArrayRef<int > ShuffleMask = MI.getOperand (3 ).getShuffleMask ();
498
475
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 ();
503
477
auto DstIsLeftAndDstLane = isINSMask (ShuffleMask, NumElts);
504
478
if (!DstIsLeftAndDstLane)
505
479
return false ;
@@ -548,8 +522,6 @@ bool isVShiftRImm(Register Reg, MachineRegisterInfo &MRI, LLT Ty,
548
522
if (!Cst)
549
523
return false ;
550
524
Cnt = *Cst;
551
- if (Ty.isScalableVector ())
552
- return false ;
553
525
int64_t ElementBits = Ty.getScalarSizeInBits ();
554
526
return Cnt >= 1 && Cnt <= ElementBits;
555
527
}
@@ -726,8 +698,6 @@ bool matchDupLane(MachineInstr &MI, MachineRegisterInfo &MRI,
726
698
Register Src1Reg = MI.getOperand (1 ).getReg ();
727
699
const LLT SrcTy = MRI.getType (Src1Reg);
728
700
const LLT DstTy = MRI.getType (MI.getOperand (0 ).getReg ());
729
- if (SrcTy.isScalableVector ())
730
- return false ;
731
701
732
702
auto LaneIdx = getSplatIndex (MI);
733
703
if (!LaneIdx)
@@ -804,8 +774,6 @@ bool matchScalarizeVectorUnmerge(MachineInstr &MI, MachineRegisterInfo &MRI) {
804
774
auto &Unmerge = cast<GUnmerge>(MI);
805
775
Register Src1Reg = Unmerge.getReg (Unmerge.getNumOperands () - 1 );
806
776
const LLT SrcTy = MRI.getType (Src1Reg);
807
- if (SrcTy.isScalableVector ())
808
- return false ;
809
777
if (SrcTy.getSizeInBits () != 128 && SrcTy.getSizeInBits () != 64 )
810
778
return false ;
811
779
return SrcTy.isVector () && !SrcTy.isScalable () &&
@@ -1019,10 +987,7 @@ bool matchLowerVectorFCMP(MachineInstr &MI, MachineRegisterInfo &MRI,
1019
987
if (!DstTy.isVector () || !ST.hasNEON ())
1020
988
return false ;
1021
989
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 ();
1026
991
if (EltSize == 16 && !ST.hasFullFP16 ())
1027
992
return false ;
1028
993
if (EltSize != 16 && EltSize != 32 && EltSize != 64 )
@@ -1218,7 +1183,7 @@ bool matchExtMulToMULL(MachineInstr &MI, MachineRegisterInfo &MRI) {
1218
1183
MachineInstr *I1 = getDefIgnoringCopies (MI.getOperand (1 ).getReg (), MRI);
1219
1184
MachineInstr *I2 = getDefIgnoringCopies (MI.getOperand (2 ).getReg (), MRI);
1220
1185
1221
- if (DstTy.isFixedVector ()) {
1186
+ if (DstTy.isVector ()) {
1222
1187
// If the source operands were EXTENDED before, then {U/S}MULL can be used
1223
1188
unsigned I1Opc = I1->getOpcode ();
1224
1189
unsigned I2Opc = I2->getOpcode ();
0 commit comments