diff options
author | Jay Foad <jay.foad@amd.com> | 2020-07-08 14:13:32 +0100 |
---|---|---|
committer | Jay Foad <jay.foad@amd.com> | 2020-07-17 11:44:10 +0100 |
commit | 760af7a0743278b6dd7782b177f4d6d086c726e0 (patch) | |
tree | b0de8ca998f50d276a548d0fbbd3693536902668 /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | |
parent | 1cfb207737cc347baeb55999bd2cbd46fb5d9309 (diff) | |
download | llvm-760af7a0743278b6dd7782b177f4d6d086c726e0.zip llvm-760af7a0743278b6dd7782b177f4d6d086c726e0.tar.gz llvm-760af7a0743278b6dd7782b177f4d6d086c726e0.tar.bz2 |
[AMDGPU] Avoid splitting FLAT offsets in unsafe ways
As explained in the comment:
// For a FLAT instruction the hardware decides whether to access
// global/scratch/shared memory based on the high bits of vaddr,
// ignoring the offset field, so we have to ensure that when we add
// remainder to vaddr it still points into the same underlying object.
// The easiest way to do that is to make sure that we split the offset
// into two pieces that are both >= 0 or both <= 0.
In particular FLAT (as opposed to SCRATCH and GLOBAL) instructions have
an unsigned immediate offset field, so we can't use it to help split a
negative offset.
Differential Revision: https://reviews.llvm.org/D83394
Diffstat (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp')
0 files changed, 0 insertions, 0 deletions