Skip to content

Commit bd592b1

Browse files
committed
[RISCV] Minor cleanups to lowerInterleaveIntrinsicToStore and lowerDeinterleaveIntrinsicToLoad. NFC
-Reduce the scope of some variables. -Use getArgOperand instead of getOperand to get intrinsic operands. -Use initialize_list instead of a SmallVector. -Remove wide VectorType variable that is only used to check fixed vs scalable. We can use the narrow VectorType for that.
1 parent 3d04695 commit bd592b1

File tree

1 file changed

+22
-28
lines changed

1 file changed

+22
-28
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21464,26 +21464,22 @@ bool RISCVTargetLowering::lowerDeinterleaveIntrinsicToLoad(
2146421464

2146521465
const unsigned Factor = 2;
2146621466

21467-
VectorType *VTy = cast<VectorType>(DI->getOperand(0)->getType());
2146821467
VectorType *ResVTy = cast<VectorType>(DI->getType()->getContainedType(0));
2146921468
const DataLayout &DL = LI->getDataLayout();
2147021469

2147121470
if (!isLegalInterleavedAccessType(ResVTy, Factor, LI->getAlign(),
2147221471
LI->getPointerAddressSpace(), DL))
2147321472
return false;
2147421473

21475-
Function *VlsegNFunc;
21476-
Value *VL, *Return;
21474+
Value *Return;
2147721475
Type *XLenTy = Type::getIntNTy(LI->getContext(), Subtarget.getXLen());
21478-
SmallVector<Value *, 10> Ops;
2147921476

21480-
if (auto *FVTy = dyn_cast<FixedVectorType>(VTy)) {
21481-
VlsegNFunc = Intrinsic::getDeclaration(
21477+
if (auto *FVTy = dyn_cast<FixedVectorType>(ResVTy)) {
21478+
Function *VlsegNFunc = Intrinsic::getDeclaration(
2148221479
LI->getModule(), FixedVlsegIntrIds[Factor - 2],
2148321480
{ResVTy, LI->getPointerOperandType(), XLenTy});
21484-
VL = ConstantInt::get(XLenTy, FVTy->getNumElements());
21485-
Ops.append({LI->getPointerOperand(), VL});
21486-
Return = Builder.CreateCall(VlsegNFunc, Ops);
21481+
Value *VL = ConstantInt::get(XLenTy, FVTy->getNumElements());
21482+
Return = Builder.CreateCall(VlsegNFunc, {LI->getPointerOperand(), VL});
2148721483
} else {
2148821484
static const Intrinsic::ID IntrIds[] = {
2148921485
Intrinsic::riscv_vlseg2, Intrinsic::riscv_vlseg3,
@@ -21499,13 +21495,13 @@ bool RISCVTargetLowering::lowerDeinterleaveIntrinsicToLoad(
2149921495
NumElts * SEW / 8),
2150021496
Factor);
2150121497

21502-
VlsegNFunc = Intrinsic::getDeclaration(LI->getModule(), IntrIds[Factor - 2],
21503-
{VecTupTy, XLenTy});
21504-
VL = Constant::getAllOnesValue(XLenTy);
21498+
Function *VlsegNFunc = Intrinsic::getDeclaration(
21499+
LI->getModule(), IntrIds[Factor - 2], {VecTupTy, XLenTy});
21500+
Value *VL = Constant::getAllOnesValue(XLenTy);
2150521501

21506-
Ops.append({PoisonValue::get(VecTupTy), LI->getPointerOperand(), VL,
21507-
ConstantInt::get(XLenTy, Log2_64(SEW))});
21508-
Value *Vlseg = Builder.CreateCall(VlsegNFunc, Ops);
21502+
Value *Vlseg = Builder.CreateCall(
21503+
VlsegNFunc, {PoisonValue::get(VecTupTy), LI->getPointerOperand(), VL,
21504+
ConstantInt::get(XLenTy, Log2_64(SEW))});
2150921505

2151021506
SmallVector<Type *, 2> AggrTypes{Factor, ResVTy};
2151121507
Return = PoisonValue::get(StructType::get(LI->getContext(), AggrTypes));
@@ -21535,24 +21531,21 @@ bool RISCVTargetLowering::lowerInterleaveIntrinsicToStore(
2153521531

2153621532
const unsigned Factor = 2;
2153721533

21538-
VectorType *VTy = cast<VectorType>(II->getType());
21539-
VectorType *InVTy = cast<VectorType>(II->getOperand(0)->getType());
21534+
VectorType *InVTy = cast<VectorType>(II->getArgOperand(0)->getType());
2154021535
const DataLayout &DL = SI->getDataLayout();
2154121536

2154221537
if (!isLegalInterleavedAccessType(InVTy, Factor, SI->getAlign(),
2154321538
SI->getPointerAddressSpace(), DL))
2154421539
return false;
2154521540

21546-
Function *VssegNFunc;
21547-
Value *VL;
2154821541
Type *XLenTy = Type::getIntNTy(SI->getContext(), Subtarget.getXLen());
2154921542

21550-
if (auto *FVTy = dyn_cast<FixedVectorType>(VTy)) {
21551-
VssegNFunc = Intrinsic::getDeclaration(
21543+
if (auto *FVTy = dyn_cast<FixedVectorType>(InVTy)) {
21544+
Function *VssegNFunc = Intrinsic::getDeclaration(
2155221545
SI->getModule(), FixedVssegIntrIds[Factor - 2],
2155321546
{InVTy, SI->getPointerOperandType(), XLenTy});
21554-
VL = ConstantInt::get(XLenTy, FVTy->getNumElements());
21555-
Builder.CreateCall(VssegNFunc, {II->getOperand(0), II->getOperand(1),
21547+
Value *VL = ConstantInt::get(XLenTy, FVTy->getNumElements());
21548+
Builder.CreateCall(VssegNFunc, {II->getArgOperand(0), II->getArgOperand(1),
2155621549
SI->getPointerOperand(), VL});
2155721550
} else {
2155821551
static const Intrinsic::ID IntrIds[] = {
@@ -21569,17 +21562,18 @@ bool RISCVTargetLowering::lowerInterleaveIntrinsicToStore(
2156921562
NumElts * SEW / 8),
2157021563
Factor);
2157121564

21572-
VssegNFunc = Intrinsic::getDeclaration(SI->getModule(), IntrIds[Factor - 2],
21573-
{VecTupTy, XLenTy});
21565+
Function *VssegNFunc = Intrinsic::getDeclaration(
21566+
SI->getModule(), IntrIds[Factor - 2], {VecTupTy, XLenTy});
2157421567

21575-
VL = Constant::getAllOnesValue(XLenTy);
21568+
Value *VL = Constant::getAllOnesValue(XLenTy);
2157621569

2157721570
Function *VecInsertFunc = Intrinsic::getDeclaration(
2157821571
SI->getModule(), Intrinsic::riscv_tuple_insert, {VecTupTy, InVTy});
2157921572
Value *StoredVal = PoisonValue::get(VecTupTy);
2158021573
for (unsigned i = 0; i < Factor; ++i)
21581-
StoredVal = Builder.CreateCall(
21582-
VecInsertFunc, {StoredVal, II->getOperand(i), Builder.getInt32(i)});
21574+
StoredVal =
21575+
Builder.CreateCall(VecInsertFunc, {StoredVal, II->getArgOperand(i),
21576+
Builder.getInt32(i)});
2158321577

2158421578
Builder.CreateCall(VssegNFunc, {StoredVal, SI->getPointerOperand(), VL,
2158521579
ConstantInt::get(XLenTy, Log2_64(SEW))});

0 commit comments

Comments
 (0)