[PATCH] D77082: [AMDGPU] Handle SMRD signed offset immediate
Austin Kerbow via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 1 10:26:30 PDT 2020
kerbowa added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp:1798
- if (Gen == AMDGPUSubtarget::SEA_ISLANDS) {
- EncodedOffset =
- AMDGPU::getSMRDEncodedLiteralOffset32(*Subtarget, ByteOffset);
- if (EncodedOffset) {
- Offset = CurDAG->getTargetConstant(*EncodedOffset, SL, MVT::i32);
- return true;
- }
+ if (!CurDAG->SignBitIsZero(ByteOffsetNode))
+ return false;
----------------
arsenm wrote:
> The GlobalISel patch seems to be missing this part?
I think it's handled here?
AMDGPUInstructionSelector.cpp:2876
if (!GEPInfo.Imm || **GEPInfo.Imm < 0** || !isUInt<32>(GEPInfo.Imm))
================
Comment at: llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h:650
+/// S_LOAD instructions have a signed offset, on other subtargets it is
+/// unsigned. S_BUFFER has an unsigned offset for all subtargets.
Optional<int64_t> getSMRDEncodedOffset(const MCSubtargetInfo &ST,
----------------
arsenm wrote:
> Ugh, is this really different between the buffer and non-buffer forms?
Apparently, yes. An alternative would be to disallow negative offsets entirely.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77082/new/
https://reviews.llvm.org/D77082
More information about the llvm-commits
mailing list