Skip to content

Commit 8f84295

Browse files
authored
[ExpandVectorPredication] Keep the original value name when expanding predicated instructions. (#157943)
This makes it easier to follow a value through the pass. If we pass the original name to the create function, a number will be added as a suffix since the original name is still used until it is replaced.
1 parent 4644099 commit 8f84295

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

llvm/lib/CodeGen/ExpandVectorPredication.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ static void transferDecorations(Value &NewVal, VPIntrinsic &VPI) {
111111
/// OldVP gets erased.
112112
static void replaceOperation(Value &NewOp, VPIntrinsic &OldOp) {
113113
transferDecorations(NewOp, OldOp);
114+
115+
if (isa<Instruction>(NewOp) && !NewOp.hasName() && OldOp.hasName())
116+
NewOp.takeName(&OldOp);
117+
114118
OldOp.replaceAllUsesWith(&NewOp);
115119
OldOp.eraseFromParent();
116120
}
@@ -253,7 +257,7 @@ bool CachingVPExpander::expandPredicationInBinaryOperator(IRBuilder<> &Builder,
253257
}
254258
}
255259

256-
Value *NewBinOp = Builder.CreateBinOp(OC, Op0, Op1, VPI.getName());
260+
Value *NewBinOp = Builder.CreateBinOp(OC, Op0, Op1);
257261

258262
replaceOperation(*NewBinOp, VPI);
259263
return true;
@@ -268,8 +272,8 @@ bool CachingVPExpander::expandPredicationToIntCall(IRBuilder<> &Builder,
268272
for (unsigned i = 0; i < VPI.getNumOperands() - 3; i++) {
269273
Argument.push_back(VPI.getOperand(i));
270274
}
271-
Value *NewOp = Builder.CreateIntrinsic(FID.value(), {VPI.getType()}, Argument,
272-
/*FMFSource=*/nullptr, VPI.getName());
275+
Value *NewOp =
276+
Builder.CreateIntrinsic(FID.value(), {VPI.getType()}, Argument);
273277
replaceOperation(*NewOp, VPI);
274278
return true;
275279
}
@@ -288,9 +292,8 @@ bool CachingVPExpander::expandPredicationToFPCall(
288292
for (unsigned i = 0; i < VPI.getNumOperands() - 3; i++) {
289293
Argument.push_back(VPI.getOperand(i));
290294
}
291-
Value *NewOp = Builder.CreateIntrinsic(
292-
UnpredicatedIntrinsicID, {VPI.getType()}, Argument,
293-
/*FMFSource=*/nullptr, VPI.getName());
295+
Value *NewOp = Builder.CreateIntrinsic(UnpredicatedIntrinsicID,
296+
{VPI.getType()}, Argument);
294297
replaceOperation(*NewOp, VPI);
295298
return true;
296299
}
@@ -305,10 +308,9 @@ bool CachingVPExpander::expandPredicationToFPCall(
305308
VPI.getModule(), UnpredicatedIntrinsicID, {VPI.getType()});
306309
Value *NewOp;
307310
if (Intrinsic::isConstrainedFPIntrinsic(UnpredicatedIntrinsicID))
308-
NewOp =
309-
Builder.CreateConstrainedFPCall(Fn, {Op0, Op1, Op2}, VPI.getName());
311+
NewOp = Builder.CreateConstrainedFPCall(Fn, {Op0, Op1, Op2});
310312
else
311-
NewOp = Builder.CreateCall(Fn, {Op0, Op1, Op2}, VPI.getName());
313+
NewOp = Builder.CreateCall(Fn, {Op0, Op1, Op2});
312314
replaceOperation(*NewOp, VPI);
313315
return true;
314316
}
@@ -393,9 +395,8 @@ bool CachingVPExpander::expandPredicationToCastIntrinsic(IRBuilder<> &Builder,
393395
Intrinsic::ID VPID = VPI.getIntrinsicID();
394396
unsigned CastOpcode = VPIntrinsic::getFunctionalOpcodeForVP(VPID).value();
395397
assert(Instruction::isCast(CastOpcode));
396-
Value *CastOp =
397-
Builder.CreateCast(Instruction::CastOps(CastOpcode), VPI.getOperand(0),
398-
VPI.getType(), VPI.getName());
398+
Value *CastOp = Builder.CreateCast(Instruction::CastOps(CastOpcode),
399+
VPI.getOperand(0), VPI.getType());
399400

400401
replaceOperation(*CastOp, VPI);
401402
return true;
@@ -454,8 +455,8 @@ bool CachingVPExpander::expandPredicationInMemoryIntrinsic(IRBuilder<> &Builder,
454455
auto *ElementType = cast<VectorType>(VPI.getType())->getElementType();
455456
NewMemoryInst = Builder.CreateMaskedGather(
456457
VPI.getType(), PtrParam,
457-
AlignOpt.value_or(DL.getPrefTypeAlign(ElementType)), MaskParam, nullptr,
458-
VPI.getName());
458+
AlignOpt.value_or(DL.getPrefTypeAlign(ElementType)), MaskParam,
459+
nullptr);
459460
break;
460461
}
461462
}
@@ -577,15 +578,15 @@ bool CachingVPExpander::expandPredication(VPIntrinsic &VPI) {
577578
default:
578579
break;
579580
case Intrinsic::vp_fneg: {
580-
Value *NewNegOp = Builder.CreateFNeg(VPI.getOperand(0), VPI.getName());
581+
Value *NewNegOp = Builder.CreateFNeg(VPI.getOperand(0));
581582
replaceOperation(*NewNegOp, VPI);
582583
return NewNegOp;
583584
}
584585
case Intrinsic::vp_select:
585586
case Intrinsic::vp_merge: {
586587
assert(maySpeculateLanes(VPI) || VPI.canIgnoreVectorLengthParam());
587588
Value *NewSelectOp = Builder.CreateSelect(
588-
VPI.getOperand(0), VPI.getOperand(1), VPI.getOperand(2), VPI.getName());
589+
VPI.getOperand(0), VPI.getOperand(1), VPI.getOperand(2));
589590
replaceOperation(*NewSelectOp, VPI);
590591
return NewSelectOp;
591592
}

0 commit comments

Comments
 (0)