Skip to content

Commit b1a51d6

Browse files
Simplify Align and AS assignment
1 parent dfc3bb5 commit b1a51d6

File tree

1 file changed

+17
-20
lines changed

1 file changed

+17
-20
lines changed

llvm/include/llvm/CodeGen/BasicTTIImpl.h

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1697,29 +1697,23 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
16971697
if (FOp) {
16981698
// TODO: Support other kinds of Intrinsics (i.e. reductions)
16991699
if (ICA.getID() == Intrinsic::vp_load) {
1700-
Align Alignment = isa_and_nonnull<VPIntrinsic>(ICA.getInst())
1701-
? cast<VPIntrinsic>(ICA.getInst())
1702-
->getPointerAlignment()
1703-
.valueOrOne()
1704-
: Align(1);
1705-
unsigned AS = ICA.getArgs().size() >= 1 &&
1706-
isa<PointerType>(ICA.getArgs()[0]->getType())
1707-
? cast<PointerType>(ICA.getArgs()[0]->getType())
1708-
->getAddressSpace()
1709-
: 0;
1700+
Align Alignment;
1701+
if (auto *VPI = dyn_cast_or_null<VPIntrinsic>(ICA.getInst()))
1702+
Alignment = VPI->getPointerAlignment().valueOrOne();
1703+
unsigned AS = 0;
1704+
if (ICA.getArgs().size() > 1)
1705+
if (auto PtrTy = dyn_cast<PointerType>(ICA.getArgs()[0]->getType()))
1706+
AS = PtrTy->getAddressSpace();
17101707
return thisT()->getMemoryOpCost(*FOp, ICA.getReturnType(), Alignment,
17111708
AS, CostKind);
17121709
} else if (ICA.getID() == Intrinsic::vp_store) {
1713-
Align Alignment = isa_and_nonnull<VPIntrinsic>(ICA.getInst())
1714-
? cast<VPIntrinsic>(ICA.getInst())
1715-
->getPointerAlignment()
1716-
.valueOrOne()
1717-
: Align(1);
1718-
unsigned AS = ICA.getArgs().size() >= 2 &&
1719-
isa<PointerType>(ICA.getArgs()[1]->getType())
1720-
? cast<PointerType>(ICA.getArgs()[1]->getType())
1721-
->getAddressSpace()
1722-
: 0;
1710+
Align Alignment;
1711+
if (auto *VPI = dyn_cast_or_null<VPIntrinsic>(ICA.getInst()))
1712+
Alignment = VPI->getPointerAlignment().valueOrOne();
1713+
unsigned AS = 0;
1714+
if (ICA.getArgs().size() >= 2)
1715+
if (auto PtrTy = dyn_cast<PointerType>(ICA.getArgs()[1]->getType()))
1716+
AS = PtrTy->getAddressSpace();
17231717
return thisT()->getMemoryOpCost(*FOp, Args[0]->getType(), Alignment,
17241718
AS, CostKind);
17251719
} else if (VPBinOpIntrinsic::isVPBinOp(ICA.getID())) {
@@ -1732,6 +1726,9 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
17321726
VPIntrinsic::getFunctionalIntrinsicIDForVP(ICA.getID());
17331727
if (FID) {
17341728
// Non-vp version will have same Args/Tys except mask and vector length.
1729+
assert(ICA.getArgs().size() >= 2 && ICA.getArgTypes().size() >= 2 &&
1730+
"Expected VPIntrinsic to have Mask and Vector Length args and "
1731+
"types");
17351732
ArrayRef<const Value *> NewArgs(ICA.getArgs().begin(),
17361733
ICA.getArgs().end() - 2);
17371734
ArrayRef<Type *> NewTys(ICA.getArgTypes().begin(),

0 commit comments

Comments
 (0)