[all-commits] [llvm/llvm-project] 5b3251: [AMDGPU] Do not use undef on indirect source

Stanislav Mekhanoshin via All-commits all-commits at lists.llvm.org
Thu Jul 30 10:50:46 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 5b32518f96ca79d3b3c1d60940c3a6764e500c1e
      https://github.com/llvm/llvm-project/commit/5b32518f96ca79d3b3c1d60940c3a6764e500c1e
  Author: Stanislav Mekhanoshin <Stanislav.Mekhanoshin at amd.com>
  Date:   2020-07-30 (Thu, 30 Jul 2020)

  Changed paths:
    M llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
    M llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
    M llvm/lib/Target/AMDGPU/SIISelLowering.cpp
    M llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-extract-vector-elt.mir
    M llvm/test/CodeGen/AMDGPU/indirect-addressing-term.ll

  Log Message:
  -----------
  [AMDGPU] Do not use undef on indirect source

We are using undef on the indirect move source subreg and then
using implicit super-reg. This creates a problem in RA when
Greedy decides to split the register. It reassigns the implicit
super-reg but does not bother to change undef source because
it is really does not matter. The fix is to stop lying to RA and
drop undef flag.

This has also hit a problem in SIFoldOperands as it can fold
immediate into an indirect move since there is no undef flag
anymore. That results in multiple test failures, so added the
check for this case.

Differential Revision: https://reviews.llvm.org/D84899




More information about the All-commits mailing list