[llvm] [AMDGPU] Enable unaligned scratch accesses (PR #110219)
Fabian Ritter via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 30 05:55:26 PDT 2024
================
@@ -1831,26 +1831,17 @@ bool SITargetLowering::allowsMisalignedMemoryAccessesImpl(
Subtarget->hasUnalignedDSAccessEnabled();
}
- if (AddrSpace == AMDGPUAS::PRIVATE_ADDRESS) {
- bool AlignedBy4 = Alignment >= Align(4);
- if (IsFast)
- *IsFast = AlignedBy4;
-
- return AlignedBy4 ||
- Subtarget->enableFlatScratch() ||
- Subtarget->hasUnalignedScratchAccess();
- }
-
// FIXME: We have to be conservative here and assume that flat operations
// will access scratch. If we had access to the IR function, then we
// could determine if any private memory was used in the function.
- if (AddrSpace == AMDGPUAS::FLAT_ADDRESS &&
- !Subtarget->hasUnalignedScratchAccess()) {
+ if (AddrSpace == AMDGPUAS::PRIVATE_ADDRESS ||
+ AddrSpace == AMDGPUAS::FLAT_ADDRESS) {
bool AlignedBy4 = Alignment >= Align(4);
if (IsFast)
*IsFast = AlignedBy4;
- return AlignedBy4;
+ return AlignedBy4 || Subtarget->enableFlatScratch() ||
----------------
ritter-x2a wrote:
Do you mean (1) that `Subtarget->enableFlatScratch()` should be dropped from the OR, or (2) that it should become `(Subtarget->enableFlatScratch() && Subtarget->hasUnalignedAccessMode())` (i.e., it would then depend on whether the mode bit is set, but would not require the UnalignedScratchAccess feature)?
https://github.com/llvm/llvm-project/pull/110219
More information about the llvm-commits
mailing list