SmallVector<SDValue, 8> Chains;
SDLoc SL(Op);
+ unsigned BaseAlign = Load->getAlignment();
unsigned MemEltSize = MemEltVT.getStoreSize();
+
MachinePointerInfo SrcValue(Load->getMemOperand()->getValue());
for (unsigned i = 0; i < NumElts; ++i) {
Load->getChain(), Ptr,
SrcValue.getWithOffset(i * MemEltSize),
MemEltVT, Load->isVolatile(), Load->isNonTemporal(),
- Load->isInvariant(), Load->getAlignment());
+ Load->isInvariant(), MinAlign(BaseAlign, i * MemEltSize));
Loads.push_back(NewLoad.getValue(0));
Chains.push_back(NewLoad.getValue(1));
}
SmallVector<SDValue, 8> Chains;
+ unsigned BaseAlign = Store->getAlignment();
unsigned EltSize = MemEltVT.getStoreSize();
MachinePointerInfo SrcValue(Store->getMemOperand()->getValue());
DAG.getTruncStore(Store->getChain(), SL, Val, Ptr,
SrcValue.getWithOffset(i * EltSize),
MemEltVT, Store->isNonTemporal(), Store->isVolatile(),
- Store->getAlignment());
+ MinAlign(BaseAlign, i * EltSize));
Chains.push_back(NewStore);
}