From 2ae92e19ebed028885c8bca2d73ea5c741537b98 Mon Sep 17 00:00:00 2001 From: "Chenbing.Zheng" Date: Thu, 24 Feb 2022 03:49:58 +0000 Subject: [PATCH] [RISCV][NFC] Add helper function isVectorConfigInstr to reduce Repeated code. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D119924 --- llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp | 22 +++++++++----------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp index bd7ba322d758..f564af38f2d7 100644 --- a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp +++ b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp @@ -447,6 +447,12 @@ char RISCVInsertVSETVLI::ID = 0; INITIALIZE_PASS(RISCVInsertVSETVLI, DEBUG_TYPE, RISCV_INSERT_VSETVLI_NAME, false, false) +static bool isVectorConfigInstr(const MachineInstr &MI) { + return MI.getOpcode() == RISCV::PseudoVSETVLI || + MI.getOpcode() == RISCV::PseudoVSETVLIX0 || + MI.getOpcode() == RISCV::PseudoVSETIVLI; +} + static MachineInstr *elideCopies(MachineInstr *MI, const MachineRegisterInfo *MRI) { while (true) { @@ -655,9 +661,7 @@ bool RISCVInsertVSETVLI::needVSETVLI(const VSETVLIInfo &Require, Require.getAVLReg().isVirtual() && !CurInfo.hasSEWLMULRatioOnly() && CurInfo.hasCompatibleVTYPE(Require, /*Strict*/ false)) { if (MachineInstr *DefMI = MRI->getVRegDef(Require.getAVLReg())) { - if (DefMI->getOpcode() == RISCV::PseudoVSETVLI || - DefMI->getOpcode() == RISCV::PseudoVSETVLIX0 || - DefMI->getOpcode() == RISCV::PseudoVSETIVLI) { + if (isVectorConfigInstr(*DefMI)) { VSETVLIInfo DefInfo = getInfoForVSETVLI(*DefMI); if (DefInfo.hasSameAVL(CurInfo) && DefInfo.hasSameVTYPE(CurInfo)) return false; @@ -870,9 +874,7 @@ bool RISCVInsertVSETVLI::computeVLVTYPEChanges(const MachineBasicBlock &MBB) { BlockData &BBInfo = BlockInfo[MBB.getNumber()]; for (const MachineInstr &MI : MBB) { // If this is an explicit VSETVLI or VSETIVLI, update our state. - if (MI.getOpcode() == RISCV::PseudoVSETVLI || - MI.getOpcode() == RISCV::PseudoVSETVLIX0 || - MI.getOpcode() == RISCV::PseudoVSETIVLI) { + if (isVectorConfigInstr(MI)) { HadVectorOp = true; BBInfo.Change = getInfoForVSETVLI(MI); continue; @@ -983,9 +985,7 @@ bool RISCVInsertVSETVLI::needVSETVLIPHI(const VSETVLIInfo &Require, // We need the PHI input to the be the output of a VSET(I)VLI. MachineInstr *DefMI = MRI->getVRegDef(InReg); - if (!DefMI || (DefMI->getOpcode() != RISCV::PseudoVSETVLI && - DefMI->getOpcode() != RISCV::PseudoVSETVLIX0 && - DefMI->getOpcode() != RISCV::PseudoVSETIVLI)) + if (!DefMI || !isVectorConfigInstr(*DefMI)) return true; // We found a VSET(I)VLI make sure it matches the output of the @@ -1008,9 +1008,7 @@ void RISCVInsertVSETVLI::emitVSETVLIs(MachineBasicBlock &MBB) { for (MachineInstr &MI : MBB) { // If this is an explicit VSETVLI or VSETIVLI, update our state. - if (MI.getOpcode() == RISCV::PseudoVSETVLI || - MI.getOpcode() == RISCV::PseudoVSETVLIX0 || - MI.getOpcode() == RISCV::PseudoVSETIVLI) { + if (isVectorConfigInstr(MI)) { // Conservatively, mark the VL and VTYPE as live. assert(MI.getOperand(3).getReg() == RISCV::VL && MI.getOperand(4).getReg() == RISCV::VTYPE &&