aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
diff options
context:
space:
mode:
authorJay Foad <jay.foad@amd.com>2020-07-08 14:13:32 +0100
committerJay Foad <jay.foad@amd.com>2020-07-17 11:44:10 +0100
commit760af7a0743278b6dd7782b177f4d6d086c726e0 (patch)
treeb0de8ca998f50d276a548d0fbbd3693536902668 /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
parent1cfb207737cc347baeb55999bd2cbd46fb5d9309 (diff)
downloadllvm-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