[llvm] [X86] combineGatherScatter - use FoldConstantArithmetic for truncation of constant build vectors (PR #136033)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 17 09:57:13 PDT 2025
https://github.com/RKSimon updated https://github.com/llvm/llvm-project/pull/136033
>From a05211dc8508a2b8f578f61750bec6601837cd34 Mon Sep 17 00:00:00 2001
From: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: Wed, 16 Apr 2025 22:13:30 +0100
Subject: [PATCH] [X86] combineGatherScatter - use FoldConstantArithmetic for
truncation of constant build vectors
No need to explicitly check with BuildVectorSDNode::isConstant - FoldConstantArithmetic can handle this, including through bitcasts etc.
---
llvm/lib/Target/X86/X86ISelLowering.cpp | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 3adeb4628eabf..024b653f78cb5 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -56529,16 +56529,13 @@ static SDValue combineGatherScatter(SDNode *N, SelectionDAG &DAG,
if (IndexWidth > 32 && DAG.ComputeNumSignBits(Index) > (IndexWidth - 32)) {
EVT NewVT = IndexVT.changeVectorElementType(MVT::i32);
- // FIXME: We could support more than just constant vectors, but we need to
+ // FIXME: We could support more than just constant fold, but we need to
// careful with costing. A truncate that can be optimized out would be
// fine. Otherwise we might only want to create a truncate if it avoids a
// split.
- if (auto *BV = dyn_cast<BuildVectorSDNode>(Index)) {
- if (BV->isConstant()) {
- Index = DAG.getNode(ISD::TRUNCATE, DL, NewVT, Index);
- return rebuildGatherScatter(GorS, Index, Base, Scale, DAG);
- }
- }
+ if (SDValue TruncIndex =
+ DAG.FoldConstantArithmetic(ISD::TRUNCATE, DL, NewVT, Index))
+ return rebuildGatherScatter(GorS, TruncIndex, Base, Scale, DAG);
// Shrink any sign/zero extends from 32 or smaller to larger than 32 if
// there are sufficient sign bits. Only do this before legalize types to
More information about the llvm-commits
mailing list