[PATCH] D95645: [AArch64][GlobalISel] Add a combine to fold away truncate in: G_ICMP EQ/NE (G_TRUNC(v), 0)
Jay Foad via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 29 02:58:48 PST 2021
foad added inline comments.
================
Comment at: llvm/lib/Target/AArch64/GISel/AArch64PreLegalizerCombiner.cpp:73
+ LLT LHSTy = MRI.getType(LHS);
+ if (!LHSTy.isScalar())
+ return false;
----------------
Is there any reason why this doesn't Just Work for vector types too?
================
Comment at: llvm/lib/Target/AArch64/GISel/AArch64PreLegalizerCombiner.cpp:80
+ if (!mi_match(LHS, MRI, m_GTrunc(m_Reg(WideReg))) ||
+ !mi_match(RHS, MRI, m_SpecificICst(0)))
+ return false;
----------------
There's also m_ZeroInt for this.
================
Comment at: llvm/lib/Target/AArch64/GISel/AArch64PreLegalizerCombiner.cpp:84
+ LLT WideTy = MRI.getType(WideReg);
+ if (KB->computeNumSignBits(WideReg) <=
+ WideTy.getSizeInBits() - LHSTy.getSizeInBits())
----------------
Could also do the optimisation if all the extended bits are known to be zero?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95645/new/
https://reviews.llvm.org/D95645
More information about the llvm-commits
mailing list