Skip to content

Commit 39bc8d6

Browse files
committed
fixup! Check tuple register class using TSFlags
1 parent fdf8242 commit 39bc8d6

File tree

1 file changed

+13
-36
lines changed

1 file changed

+13
-36
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,44 +1413,21 @@ static bool isTupleInsertInstr(const MachineInstr &MI,
14131413
return false;
14141414

14151415
const TargetRegisterClass *DstRC = MRI.getRegClass(MI.getOperand(0).getReg());
1416-
// Check whether it was lowered with the correct subreg index.
1416+
if (!RISCVRI::isVRegClass(DstRC->TSFlags))
1417+
return false;
1418+
unsigned NF = RISCVRI::getNF(DstRC->TSFlags);
1419+
if (NF < 2)
1420+
return false;
1421+
1422+
// Check whether INSERT_SUBREG was lowered with the correct subreg index.
1423+
auto VLMul = RISCVRI::getLMul(DstRC->TSFlags);
1424+
[[maybe_unused]] auto [LMul, IsFractional] = RISCVVType::decodeVLMUL(VLMul);
1425+
assert(!IsFractional && "unexpected LMUL for tuple register classes");
14171426
[[maybe_unused]] const TargetRegisterInfo *TRI = MRI.getTargetRegisterInfo();
14181427
[[maybe_unused]] unsigned SubRegIdx = MI.getOperand(3).getImm();
1419-
switch (DstRC->getID()) {
1420-
case RISCV::VRN2M1RegClassID:
1421-
case RISCV::VRN2M1NoV0RegClassID:
1422-
case RISCV::VRN3M1RegClassID:
1423-
case RISCV::VRN3M1NoV0RegClassID:
1424-
case RISCV::VRN4M1RegClassID:
1425-
case RISCV::VRN4M1NoV0RegClassID:
1426-
case RISCV::VRN5M1RegClassID:
1427-
case RISCV::VRN5M1NoV0RegClassID:
1428-
case RISCV::VRN6M1RegClassID:
1429-
case RISCV::VRN6M1NoV0RegClassID:
1430-
case RISCV::VRN7M1RegClassID:
1431-
case RISCV::VRN7M1NoV0RegClassID:
1432-
case RISCV::VRN8M1RegClassID:
1433-
case RISCV::VRN8M1NoV0RegClassID:
1434-
assert(TRI->getSubRegIdxSize(SubRegIdx) == RISCV::RVVBitsPerBlock &&
1435-
"unexpected subreg index for VRM1 sub-register");
1436-
return true;
1437-
case RISCV::VRN2M2RegClassID:
1438-
case RISCV::VRN2M2NoV0RegClassID:
1439-
case RISCV::VRN3M2RegClassID:
1440-
case RISCV::VRN3M2NoV0RegClassID:
1441-
case RISCV::VRN4M2RegClassID:
1442-
case RISCV::VRN4M2NoV0RegClassID:
1443-
assert(TRI->getSubRegIdxSize(SubRegIdx) == RISCV::RVVBitsPerBlock * 2 &&
1444-
"unexpected subreg index for VRM2 sub-register");
1445-
return true;
1446-
case RISCV::VRN2M4RegClassID:
1447-
case RISCV::VRN2M4NoV0RegClassID:
1448-
assert(TRI->getSubRegIdxSize(SubRegIdx) == RISCV::RVVBitsPerBlock * 4 &&
1449-
"unexpected subreg index for VRM4 sub-register");
1450-
return true;
1451-
default:
1452-
return false;
1453-
}
1428+
assert(TRI->getSubRegIdxSize(SubRegIdx) == RISCV::RVVBitsPerBlock * LMul &&
1429+
"unexpected subreg index of tuple register class");
1430+
return true;
14541431
}
14551432

14561433
static bool isSegmentedStoreInstr(const MachineInstr &MI) {

0 commit comments

Comments
 (0)