[llvm] [DAG] Enable bitcast STLF for Constant/Undef (PR #172523)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 24 02:41:34 PST 2026
================
@@ -20612,8 +20612,29 @@ SDValue DAGCombiner::ForwardStoreValueToDirectLoad(LoadSDNode *LD) {
break;
if (STMemType != LDMemType) {
// TODO: Support vectors? This requires extract_subvector/bitcast.
- if (!STMemType.isVector() && !LDMemType.isVector() &&
- STMemType.isInteger() && LDMemType.isInteger())
+ if (LdMemSize == StMemSize) {
+ if (DAG.isConstantValueOfAnyType(Val) && isTypeLegal(STMemType))
+ Val = DAG.getBitcast(LDMemType, Val);
+ else
+ break;
+ } else if (LDMemType.isVector()) {
+ EVT EltVT = LDMemType.getVectorElementType();
+ uint64_t EltSize = EltVT.getFixedSizeInBits();
+ uint64_t StSize = StMemSize.getFixedValue();
+
+ if (StSize % EltSize != 0)
+ break;
+
+ EVT InterVT =
+ EVT::getVectorVT(*DAG.getContext(), EltVT, StSize / EltSize);
+ if (!isTypeLegal(InterVT) ||
----------------
arsenm wrote:
Type legal check is probably redundant
https://github.com/llvm/llvm-project/pull/172523
More information about the llvm-commits
mailing list