[llvm] [AArch64] canCreateUndefOrPoisonForTargetNode - AArch64ISD::MOVI opcodes can't create undef/poison (PR #149323)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 17 07:52:50 PDT 2025
================
@@ -30398,6 +30398,23 @@ bool AArch64TargetLowering::SimplifyDemandedBitsForTargetNode(
Op, OriginalDemandedBits, OriginalDemandedElts, Known, TLO, Depth);
}
+bool AArch64TargetLowering::canCreateUndefOrPoisonForTargetNode(
+ SDValue Op, const APInt &DemandedElts, const SelectionDAG &DAG,
+ bool PoisonOnly, bool ConsiderFlags, unsigned Depth) const {
+
+ // TODO: Add more target nodes.
+ switch (Op.getOpcode()) {
+ case AArch64ISD::MOVI:
+ case AArch64ISD::MOVIedit:
+ case AArch64ISD::MOVImsl:
+ case AArch64ISD::MOVIshift:
+ case AArch64ISD::MVNIshift:
----------------
RKSimon wrote:
In fact I think these can be put into a AArch64TargetLowering::isGuaranteedNotToBeUndefOrPoisonForTargetNode implementation, but this should have the same effect
https://github.com/llvm/llvm-project/pull/149323
More information about the llvm-commits
mailing list