Skip to content

Commit 959d184

Browse files
committed
[VP] Refactoring some functions in ExpandVectorPredication.NFC
1 parent e855fea commit 959d184

File tree

1 file changed

+26
-90
lines changed

1 file changed

+26
-90
lines changed

llvm/lib/CodeGen/ExpandVectorPredication.cpp

Lines changed: 26 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,7 @@ struct CachingVPExpander {
176176
VPIntrinsic &PI);
177177

178178
/// Lower this VP int call to a unpredicated int call.
179-
Value *expandPredicationToIntCall(IRBuilder<> &Builder, VPIntrinsic &PI,
180-
unsigned UnpredicatedIntrinsicID);
179+
Value *expandPredicationToIntCall(IRBuilder<> &Builder, VPIntrinsic &PI);
181180

182181
/// Lower this VP fp call to a unpredicated fp call.
183182
Value *expandPredicationToFPCall(IRBuilder<> &Builder, VPIntrinsic &PI,
@@ -288,33 +287,19 @@ CachingVPExpander::expandPredicationInBinaryOperator(IRBuilder<> &Builder,
288287
return NewBinOp;
289288
}
290289

291-
Value *CachingVPExpander::expandPredicationToIntCall(
292-
IRBuilder<> &Builder, VPIntrinsic &VPI, unsigned UnpredicatedIntrinsicID) {
293-
switch (UnpredicatedIntrinsicID) {
294-
case Intrinsic::abs:
295-
case Intrinsic::smax:
296-
case Intrinsic::smin:
297-
case Intrinsic::umax:
298-
case Intrinsic::umin: {
299-
Value *Op0 = VPI.getOperand(0);
300-
Value *Op1 = VPI.getOperand(1);
301-
Value *NewOp = Builder.CreateIntrinsic(
302-
UnpredicatedIntrinsicID, {VPI.getType()}, {Op0, Op1},
303-
/*FMFSource=*/nullptr, VPI.getName());
304-
replaceOperation(*NewOp, VPI);
305-
return NewOp;
306-
}
307-
case Intrinsic::bswap:
308-
case Intrinsic::bitreverse: {
309-
Value *Op = VPI.getOperand(0);
310-
Value *NewOp =
311-
Builder.CreateIntrinsic(UnpredicatedIntrinsicID, {VPI.getType()}, {Op},
312-
/*FMFSource=*/nullptr, VPI.getName());
313-
replaceOperation(*NewOp, VPI);
314-
return NewOp;
315-
}
290+
Value *CachingVPExpander::expandPredicationToIntCall(IRBuilder<> &Builder,
291+
VPIntrinsic &VPI) {
292+
std::optional<unsigned> FID = VPI.getFunctionalIntrinsicID();
293+
if (!FID)
294+
return nullptr;
295+
SmallVector<Value *, 2> Argument;
296+
for (unsigned i = 0; i < VPI.getNumOperands() - 2; i++) {
297+
Argument.push_back(VPI.getOperand(i));
316298
}
317-
return nullptr;
299+
Value *NewOp = Builder.CreateIntrinsic(FID.value(), {VPI.getType()}, Argument,
300+
/*FMFSource=*/nullptr, VPI.getName());
301+
replaceOperation(*NewOp, VPI);
302+
return NewOp;
318303
}
319304

320305
Value *CachingVPExpander::expandPredicationToFPCall(
@@ -324,20 +309,15 @@ Value *CachingVPExpander::expandPredicationToFPCall(
324309

325310
switch (UnpredicatedIntrinsicID) {
326311
case Intrinsic::fabs:
327-
case Intrinsic::sqrt: {
328-
Value *Op0 = VPI.getOperand(0);
329-
Value *NewOp =
330-
Builder.CreateIntrinsic(UnpredicatedIntrinsicID, {VPI.getType()}, {Op0},
331-
/*FMFSource=*/nullptr, VPI.getName());
332-
replaceOperation(*NewOp, VPI);
333-
return NewOp;
334-
}
312+
case Intrinsic::sqrt:
335313
case Intrinsic::maxnum:
336314
case Intrinsic::minnum: {
337-
Value *Op0 = VPI.getOperand(0);
338-
Value *Op1 = VPI.getOperand(1);
315+
SmallVector<Value *, 2> Argument;
316+
for (unsigned i = 0; i < VPI.getNumOperands() - 2; i++) {
317+
Argument.push_back(VPI.getOperand(i));
318+
}
339319
Value *NewOp = Builder.CreateIntrinsic(
340-
UnpredicatedIntrinsicID, {VPI.getType()}, {Op0, Op1},
320+
UnpredicatedIntrinsicID, {VPI.getType()}, Argument,
341321
/*FMFSource=*/nullptr, VPI.getName());
342322
replaceOperation(*NewOp, VPI);
343323
return NewOp;
@@ -439,56 +419,13 @@ CachingVPExpander::expandPredicationInReduction(IRBuilder<> &Builder,
439419

440420
Value *CachingVPExpander::expandPredicationToCastIntrinsic(IRBuilder<> &Builder,
441421
VPIntrinsic &VPI) {
442-
Value *CastOp = nullptr;
443-
switch (VPI.getIntrinsicID()) {
444-
default:
445-
llvm_unreachable("Not a VP cast intrinsic");
446-
case Intrinsic::vp_sext:
447-
CastOp =
448-
Builder.CreateSExt(VPI.getOperand(0), VPI.getType(), VPI.getName());
449-
break;
450-
case Intrinsic::vp_zext:
451-
CastOp =
452-
Builder.CreateZExt(VPI.getOperand(0), VPI.getType(), VPI.getName());
453-
break;
454-
case Intrinsic::vp_trunc:
455-
CastOp =
456-
Builder.CreateTrunc(VPI.getOperand(0), VPI.getType(), VPI.getName());
457-
break;
458-
case Intrinsic::vp_inttoptr:
459-
CastOp =
460-
Builder.CreateIntToPtr(VPI.getOperand(0), VPI.getType(), VPI.getName());
461-
break;
462-
case Intrinsic::vp_ptrtoint:
463-
CastOp =
464-
Builder.CreatePtrToInt(VPI.getOperand(0), VPI.getType(), VPI.getName());
465-
break;
466-
case Intrinsic::vp_fptosi:
467-
CastOp =
468-
Builder.CreateFPToSI(VPI.getOperand(0), VPI.getType(), VPI.getName());
469-
break;
422+
Intrinsic::ID VPID = VPI.getIntrinsicID();
423+
unsigned CastOpcode = VPIntrinsic::getFunctionalOpcodeForVP(VPID).value();
424+
assert(Instruction::isCast(CastOpcode));
425+
Value *CastOp =
426+
Builder.CreateCast(Instruction::CastOps(CastOpcode), VPI.getOperand(0),
427+
VPI.getType(), VPI.getName());
470428

471-
case Intrinsic::vp_fptoui:
472-
CastOp =
473-
Builder.CreateFPToUI(VPI.getOperand(0), VPI.getType(), VPI.getName());
474-
break;
475-
case Intrinsic::vp_sitofp:
476-
CastOp =
477-
Builder.CreateSIToFP(VPI.getOperand(0), VPI.getType(), VPI.getName());
478-
break;
479-
case Intrinsic::vp_uitofp:
480-
CastOp =
481-
Builder.CreateUIToFP(VPI.getOperand(0), VPI.getType(), VPI.getName());
482-
break;
483-
case Intrinsic::vp_fptrunc:
484-
CastOp =
485-
Builder.CreateFPTrunc(VPI.getOperand(0), VPI.getType(), VPI.getName());
486-
break;
487-
case Intrinsic::vp_fpext:
488-
CastOp =
489-
Builder.CreateFPExt(VPI.getOperand(0), VPI.getType(), VPI.getName());
490-
break;
491-
}
492429
replaceOperation(*CastOp, VPI);
493430
return CastOp;
494431
}
@@ -673,8 +610,7 @@ Value *CachingVPExpander::expandPredication(VPIntrinsic &VPI) {
673610
case Intrinsic::vp_umin:
674611
case Intrinsic::vp_bswap:
675612
case Intrinsic::vp_bitreverse:
676-
return expandPredicationToIntCall(Builder, VPI,
677-
VPI.getFunctionalIntrinsicID().value());
613+
return expandPredicationToIntCall(Builder, VPI);
678614
case Intrinsic::vp_fabs:
679615
case Intrinsic::vp_sqrt:
680616
case Intrinsic::vp_maxnum:

0 commit comments

Comments
 (0)