[PATCH] D133421: [AArch64] break non-temporal loads over 256 into 256-loads and a smaller load
Zain Jaffal via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 8 08:15:57 PDT 2022
zjaffal marked 7 inline comments as done.
zjaffal added inline comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:17825
+ SmallVector<SDValue, 4> LoadOps;
+ if (MemVT.getSizeInBits() <= 256 || MemVT.getSizeInBits() % 256 == 0 ||
+ 256 % MemVT.getScalarSizeInBits() != 0)
----------------
fhahn wrote:
> We should also only do this for non-temporal loads.
Checks are added now for non-temporal loads
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:17836
+ SDValue NewPtr =
+ DAG.getMemBasePlusOffset(Ptr, TypeSize::Fixed(PtrOffset), DL, Flags);
+ Align NewAlign = commonAlignment(LD->getAlign(), PtrOffset);
----------------
fhahn wrote:
> I don't think that's correct, you are passing the offset in bits, but I think it should be in bytes.
>
> Looking at some of the test changes, the offsets of the loads are wrong, e.g. ` ldnp q0, q2, [x0, #256]`.
This should be fixed now
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133421/new/
https://reviews.llvm.org/D133421
More information about the llvm-commits
mailing list