@@ -1345,40 +1345,29 @@ void VPWidenCastRecipe::execute(VPTransformState &State) {
1345
1345
1346
1346
void VPWidenCastEVLRecipe::execute (VPTransformState &State) {
1347
1347
unsigned Opcode = getOpcode ();
1348
- auto Inst = cast<CastInst>(getUnderlyingInstr ());
1349
1348
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 );
1352
1351
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 ));
1364
1356
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" );
1369
1359
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 ()));
1374
1363
}
1375
1364
1376
1365
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
1377
1366
void VPWidenCastRecipe::print (raw_ostream &O, const Twine &Indent,
1378
1367
VPSlotTracker &SlotTracker) const {
1379
1368
O << Indent << " WIDEN-CAST " ;
1380
1369
printAsOperand (O, SlotTracker);
1381
- O << " = " << Instruction::getOpcodeName (Opcode);
1370
+ O << " = " << Instruction::getOpcodeName (Opcode) << " " ;
1382
1371
printFlags (O);
1383
1372
printOperands (O, SlotTracker);
1384
1373
O << " to " << *getResultType ();
0 commit comments