aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineCopyPropagation.cpp
diff options
context:
space:
mode:
authorKrzysztof Drewniak <Krzysztof.Drewniak@amd.com>2025-01-20 09:33:35 -0800
committerGitHub <noreply@github.com>2025-01-20 11:33:35 -0600
commit3805355ef69a33fc6b32e4a4de0ad3ef22584c65 (patch)
tree7b85291243c4fee291e14dad21199c5d6ba3e845 /llvm/lib/CodeGen/MachineCopyPropagation.cpp
parent9cbd705e32bbb869c897696f4a6659f2ce00b64a (diff)
downloadllvm-3805355ef69a33fc6b32e4a4de0ad3ef22584c65.zip
llvm-3805355ef69a33fc6b32e4a4de0ad3ef22584c65.tar.gz
llvm-3805355ef69a33fc6b32e4a4de0ad3ef22584c65.tar.bz2
[AMDGPU] Handle natively unsupported types in addrspace(7) lowering (#110572)
The current lowering for ptr addrspace(7) assumed that the instruction selector can handle arbtrary LLVM types, which is not the case. Code generation can't deal with - Values that aren't 8, 16, 32, 64, 96, or 128 bits long - Aggregates (this commit only handles arrays of scalars, more may come) - Vectors of more than one byte - 3-word values that aren't a vector of 3 32-bit values (for axample, a <6 x half>) This commit adds a buffer contents type legalizer that adds the needed bitcasts, zero-extensions, and splits into subcompnents needed to convert a load or store operation into one that can be successfully lowered through code generation. In the long run, some of the involved bitcasts (though potentially not the buffer operation splitting) ought to be handled by the instruction legalizer, but SelectionDAG makes this difficult. It also takes advantage of the new `nuw` flag on `getelementptr` when lowering GEPs to offset additions. We don't currently plumb through `nsw` on GEPs since that should likely be a separate change and would require declaring what we mean by "the address" in the context of the GEP guarantees.
Diffstat (limited to 'llvm/lib/CodeGen/MachineCopyPropagation.cpp')
0 files changed, 0 insertions, 0 deletions