[llvm] [DAG] visitEXTRACT_VECTOR_ELT - constant fold legal fp imm values (PR #74304)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 7 03:24:39 PST 2023
================
@@ -22243,6 +22243,19 @@ SDValue DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) {
unsigned NumElts = VecVT.getVectorNumElements();
unsigned VecEltBitWidth = VecVT.getScalarSizeInBits();
+ // See if the extracted element is constant, in which case fold it if its
+ // a legal fp immediate.
+ if (IndexC && ScalarVT.isFloatingPoint()) {
+ APInt EltMask = APInt::getOneBitSet(NumElts, IndexC->getZExtValue());
+ KnownBits KnownElt = DAG.computeKnownBits(VecOp, EltMask);
+ if (KnownElt.isConstant()) {
----------------
RKSimon wrote:
Its to handle bitcasts of vector data (e.g. <2 x i32>), which don't get folded away if we have multiple uses
https://github.com/llvm/llvm-project/pull/74304
More information about the llvm-commits
mailing list