[PATCH] D93154: GlobalISel: remove assert that memcpy Src and Dst addrspace must be identical
Jameson Nash via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 11 22:03:54 PST 2020
vtjnash created this revision.
Herald added subscribers: hiraditya, rovka.
vtjnash requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
The LangRef does not require these arguments to have the same type.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D93154
Files:
llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
Index: llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
===================================================================
--- llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
+++ llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
@@ -1240,7 +1240,6 @@
// of that value loaded. This can result in a sequence of loads and stores
// mixed types, depending on what the target specifies as good types to use.
unsigned CurrOffset = 0;
- LLT PtrTy = MRI.getType(Src);
unsigned Size = KnownLen;
for (auto CopyTy : MemOps) {
// Issuing an unaligned load / store pair that overlaps with the previous
@@ -1258,15 +1257,20 @@
Register LoadPtr = Src;
Register Offset;
if (CurrOffset != 0) {
- Offset = MIB.buildConstant(LLT::scalar(PtrTy.getSizeInBits()), CurrOffset)
- .getReg(0);
- LoadPtr = MIB.buildPtrAdd(PtrTy, Src, Offset).getReg(0);
+ LLT LoadTy = MRI.getType(Src);
+ Offset =
+ MIB.buildConstant(LLT::scalar(LoadTy.getSizeInBits()), CurrOffset)
+ .getReg(0);
+ LoadPtr = MIB.buildPtrAdd(LoadTy, Src, Offset).getReg(0);
}
auto LdVal = MIB.buildLoad(CopyTy, LoadPtr, *LoadMMO);
// Create the store.
- Register StorePtr =
- CurrOffset == 0 ? Dst : MIB.buildPtrAdd(PtrTy, Dst, Offset).getReg(0);
+ Register StorePtr = Dst;
+ if (CurrOffset != 0) {
+ LLT StoreTy = MRI.getType(Dst);
+ StorePtr = MIB.buildPtrAdd(StoreTy, Dst, Offset).getReg(0);
+ }
MIB.buildStore(LdVal, StorePtr, *StoreMMO);
CurrOffset += CopyTy.getSizeInBytes();
Size -= CopyTy.getSizeInBytes();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93154.311363.patch
Type: text/x-patch
Size: 1613 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201212/961e4a12/attachment.bin>
More information about the llvm-commits
mailing list