@@ -1345,40 +1345,29 @@ void VPWidenCastRecipe::execute(VPTransformState &State) {
13451345
13461346void VPWidenCastEVLRecipe::execute (VPTransformState &State) {
13471347 unsigned Opcode = getOpcode ();
1348- auto Inst = cast<CastInst>(getUnderlyingInstr ());
13491348 State.setDebugLocFrom (getDebugLoc ());
1350- assert (State. UF == 1 && " Expected only UF == 1 when vectorizing with "
1351- " explicit vector length. " );
1349+ Value *SrcVal = State. get ( getOperand ( 0 ));
1350+ VectorType *DsType = VectorType::get ( getResultType (), State. VF );
13521351
1353- if (Inst->isCast ()) {
1354- Value *SrcVal = State.get (getOperand (0 ), 0 );
1355- VectorType *DsType = VectorType::get (getResultType (), State.VF );
1356-
1357- IRBuilderBase &BuilderIR = State.Builder ;
1358- VectorBuilder Builder (BuilderIR);
1359- Value *Mask = BuilderIR.CreateVectorSplat (State.VF , BuilderIR.getTrue ());
1360- Builder.setMask (Mask).setEVL (State.get (getEVL (), 0 , /* NeedsScalar=*/ true ));
1361-
1362- Value *VPInst =
1363- Builder.createVectorInstruction (Opcode, DsType, {SrcVal}, " vp.cast" );
1352+ IRBuilderBase &BuilderIR = State.Builder ;
1353+ VectorBuilder Builder (BuilderIR);
1354+ Value *Mask = BuilderIR.CreateVectorSplat (State.VF , BuilderIR.getTrue ());
1355+ Builder.setMask (Mask).setEVL (State.get (getEVL (), /* NeedsScalar=*/ true ));
13641356
1365- if (VPInst) {
1366- if (auto *VecOp = dyn_cast<CastInst>(VPInst))
1367- VecOp->copyIRFlags (getUnderlyingInstr ());
1368- }
1357+ Value *VPInst =
1358+ Builder.createVectorInstruction (Opcode, DsType, {SrcVal}, " vp.cast" );
13691359
1370- State.set (this , VPInst, 0 );
1371- State.addMetadata (VPInst,
1372- dyn_cast_or_null<Instruction>(getUnderlyingValue ()));
1373- }
1360+ State.set (this , VPInst, 0 );
1361+ State.addMetadata (VPInst,
1362+ dyn_cast_or_null<Instruction>(getUnderlyingValue ()));
13741363}
13751364
13761365#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
13771366void VPWidenCastRecipe::print (raw_ostream &O, const Twine &Indent,
13781367 VPSlotTracker &SlotTracker) const {
13791368 O << Indent << " WIDEN-CAST " ;
13801369 printAsOperand (O, SlotTracker);
1381- O << " = " << Instruction::getOpcodeName (Opcode);
1370+ O << " = " << Instruction::getOpcodeName (Opcode) << " " ;
13821371 printFlags (O);
13831372 printOperands (O, SlotTracker);
13841373 O << " to " << *getResultType ();
0 commit comments