@@ -503,30 +503,32 @@ bool RISCVVectorPeephole::foldVMV_V_V(MachineInstr &MI) {
503503 if (getSEWLMULRatio (MI) != getSEWLMULRatio (*Src))
504504 return false ;
505505
506- // Src needs to have the same passthru as VMV_V_V
507- MachineOperand &SrcPassthru = Src->getOperand (1 );
508- if (SrcPassthru.getReg () != RISCV::NoRegister &&
509- SrcPassthru.getReg () != Passthru.getReg ())
510- return false ;
506+ if (Passthru.getReg () != RISCV::NoRegister) {
507+ // Src needs to have the same passthru as VMV_V_V
508+ MachineOperand &SrcPassthru = Src->getOperand (1 );
509+ if (SrcPassthru.getReg () != RISCV::NoRegister &&
510+ SrcPassthru.getReg () != Passthru.getReg ())
511+ return false ;
511512
512- // Src VL will have already been reduced if legal (see tryToReduceVL),
513- // so we don't need to handle a smaller source VL here. However, the
514- // user's VL may be larger
515- MachineOperand &SrcVL = Src->getOperand (RISCVII::getVLOpNum (Src->getDesc ()));
516- if (!isVLKnownLE (SrcVL, MI.getOperand (3 )))
517- return false ;
513+ // Src VL will have already been reduced if legal (see tryToReduceVL),
514+ // so we don't need to handle a smaller source VL here. However, the
515+ // user's VL may be larger
516+ MachineOperand &SrcVL = Src->getOperand (RISCVII::getVLOpNum (Src->getDesc ()));
517+ if (!isVLKnownLE (SrcVL, MI.getOperand (3 )))
518+ return false ;
518519
519- // If the new passthru doesn't dominate Src, try to move Src so it does.
520- if (!ensureDominates (Passthru, *Src))
521- return false ;
520+ // If the new passthru doesn't dominate Src, try to move Src so it does.
521+ if (!ensureDominates (Passthru, *Src))
522+ return false ;
522523
523- if (SrcPassthru.getReg () != Passthru.getReg ()) {
524- SrcPassthru.setReg (Passthru.getReg ());
525- // If Src is masked then its passthru needs to be in VRNoV0.
526- if (Passthru.getReg () != RISCV::NoRegister)
527- MRI->constrainRegClass (Passthru.getReg (),
528- TII->getRegClass (Src->getDesc (), 1 , TRI,
529- *Src->getParent ()->getParent ()));
524+ if (SrcPassthru.getReg () != Passthru.getReg ()) {
525+ SrcPassthru.setReg (Passthru.getReg ());
526+ // If Src is masked then its passthru needs to be in VRNoV0.
527+ if (Passthru.getReg () != RISCV::NoRegister)
528+ MRI->constrainRegClass (Passthru.getReg (),
529+ TII->getRegClass (Src->getDesc (), 1 , TRI,
530+ *Src->getParent ()->getParent ()));
531+ }
530532 }
531533
532534 // Use a conservative tu,mu policy, RISCVInsertVSETVLI will relax it if
0 commit comments