FrameIndexSDNode *FI = dyn_cast<FrameIndexSDNode>(Dst);
if (FI && !MFI.isFixedObjectIndex(FI->getIndex()))
DstAlignCanChange = true;
- bool IsZeroVal =
- isa<ConstantSDNode>(Src) && cast<ConstantSDNode>(Src)->isZero();
+ bool IsZeroVal = isNullConstant(Src);
unsigned Limit = AlwaysInline ? ~0 : TLI.getMaxStoresPerMemset(OptSize);
if (!TLI.findOptimalMemOpLowering(
namespace {
static inline bool isNullConstantOrUndef(SDValue V) {
- if (V.isUndef())
- return true;
-
- ConstantSDNode *Const = dyn_cast<ConstantSDNode>(V);
- return Const != nullptr && Const->isZero();
+ return V.isUndef() || isNullConstant(V);
}
static inline bool getConstantValue(SDValue N, uint32_t &Out) {
unsigned SrcAS = ASC->getSrcAddressSpace();
unsigned DestAS = ASC->getDestAddressSpace();
- if (auto *ConstSrc = dyn_cast<ConstantSDNode>(Op.getOperand(0))) {
- if (SrcAS == AMDGPUAS::FLAT_ADDRESS && ConstSrc->isZero())
- return DAG.getConstant(TM.getNullPointerValue(DestAS), SL, VT);
- }
+ if (isNullConstant(Op.getOperand(0)) && SrcAS == AMDGPUAS::FLAT_ADDRESS)
+ return DAG.getConstant(TM.getNullPointerValue(DestAS), SL, VT);
return Op;
}