@@ -1424,40 +1424,29 @@ void VPWidenCastRecipe::execute(VPTransformState &State) {
1424
1424
1425
1425
void VPWidenCastEVLRecipe::execute (VPTransformState &State) {
1426
1426
unsigned Opcode = getOpcode ();
1427
- auto Inst = cast<CastInst>(getUnderlyingInstr ());
1428
1427
State.setDebugLocFrom (getDebugLoc ());
1429
- assert (State. UF == 1 && " Expected only UF == 1 when vectorizing with "
1430
- " explicit vector length. " );
1428
+ Value *SrcVal = State. get ( getOperand ( 0 ));
1429
+ VectorType *DsType = VectorType::get ( getResultType (), State. VF );
1431
1430
1432
- if (Inst->isCast ()) {
1433
- Value *SrcVal = State.get (getOperand (0 ), 0 );
1434
- VectorType *DsType = VectorType::get (getResultType (), State.VF );
1435
-
1436
- IRBuilderBase &BuilderIR = State.Builder ;
1437
- VectorBuilder Builder (BuilderIR);
1438
- Value *Mask = BuilderIR.CreateVectorSplat (State.VF , BuilderIR.getTrue ());
1439
- Builder.setMask (Mask).setEVL (State.get (getEVL (), 0 , /* NeedsScalar=*/ true ));
1440
-
1441
- Value *VPInst =
1442
- Builder.createVectorInstruction (Opcode, DsType, {SrcVal}, " vp.cast" );
1431
+ IRBuilderBase &BuilderIR = State.Builder ;
1432
+ VectorBuilder Builder (BuilderIR);
1433
+ Value *Mask = BuilderIR.CreateVectorSplat (State.VF , BuilderIR.getTrue ());
1434
+ Builder.setMask (Mask).setEVL (State.get (getEVL (), /* NeedsScalar=*/ true ));
1443
1435
1444
- if (VPInst) {
1445
- if (auto *VecOp = dyn_cast<CastInst>(VPInst))
1446
- VecOp->copyIRFlags (getUnderlyingInstr ());
1447
- }
1436
+ Value *VPInst =
1437
+ Builder.createVectorInstruction (Opcode, DsType, {SrcVal}, " vp.cast" );
1448
1438
1449
- State.set (this , VPInst, 0 );
1450
- State.addMetadata (VPInst,
1451
- dyn_cast_or_null<Instruction>(getUnderlyingValue ()));
1452
- }
1439
+ State.set (this , VPInst, 0 );
1440
+ State.addMetadata (VPInst,
1441
+ dyn_cast_or_null<Instruction>(getUnderlyingValue ()));
1453
1442
}
1454
1443
1455
1444
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
1456
1445
void VPWidenCastRecipe::print (raw_ostream &O, const Twine &Indent,
1457
1446
VPSlotTracker &SlotTracker) const {
1458
1447
O << Indent << " WIDEN-CAST " ;
1459
1448
printAsOperand (O, SlotTracker);
1460
- O << " = " << Instruction::getOpcodeName (Opcode);
1449
+ O << " = " << Instruction::getOpcodeName (Opcode) << " " ;
1461
1450
printFlags (O);
1462
1451
printOperands (O, SlotTracker);
1463
1452
O << " to " << *getResultType ();
0 commit comments