[all-commits] [llvm/llvm-project] 6b6ae5: [AMDGPU] Save fp/bp after csr saves

Sebastian Neubauer via All-commits all-commits at lists.llvm.org
Tue Feb 2 08:18:28 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6b6ae583cf873debf06e982062fcc7982c8a184a
      https://github.com/llvm/llvm-project/commit/6b6ae583cf873debf06e982062fcc7982c8a184a
  Author: Sebastian Neubauer <sebastian.neubauer at amd.com>
  Date:   2021-02-02 (Tue, 02 Feb 2021)

  Changed paths:
    M llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
    M llvm/test/CodeGen/AMDGPU/callee-frame-setup.ll

  Log Message:
  -----------
  [AMDGPU] Save fp/bp after csr saves

Saving callee-save registers happens in whole wave mode. Exec is saved
to a free register, which can be reused to save the frame pointer.
Therefore, saving the fp needs to happen after saving csrs.

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


  Commit: 8b898b19a8cb90871fa85a6db924c61b9f22cfe6
      https://github.com/llvm/llvm-project/commit/8b898b19a8cb90871fa85a6db924c61b9f22cfe6
  Author: Sebastian Neubauer <sebastian.neubauer at amd.com>
  Date:   2021-02-02 (Tue, 02 Feb 2021)

  Changed paths:
    M llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
    M llvm/test/CodeGen/AMDGPU/GlobalISel/dynamic-alloca-uniform.ll
    M llvm/test/CodeGen/AMDGPU/GlobalISel/extractelement-stack-lower.ll
    M llvm/test/CodeGen/AMDGPU/GlobalISel/non-entry-alloca.ll
    M llvm/test/CodeGen/AMDGPU/callee-frame-setup.ll
    M llvm/test/CodeGen/AMDGPU/local-stack-alloc-block-sp-reference.ll
    M llvm/test/CodeGen/AMDGPU/non-entry-alloca.ll
    M llvm/test/CodeGen/AMDGPU/pei-scavenge-sgpr-carry-out.mir
    M llvm/test/CodeGen/AMDGPU/pei-scavenge-sgpr-gfx9.mir
    M llvm/test/CodeGen/AMDGPU/pei-scavenge-sgpr.mir
    M llvm/test/CodeGen/AMDGPU/pei-scavenge-vgpr-spill.mir
    M llvm/test/CodeGen/AMDGPU/stack-realign.ll

  Log Message:
  -----------
  [AMDGPU] Remove unused tmp register

The temporary register is only used to compute the frame pointer.
The frame pointer is overwritten and not used in between, so we
can reuse the frame pointer for the computation, saving one register.

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


Compare: https://github.com/llvm/llvm-project/compare/a2e791e39695...8b898b19a8cb


More information about the All-commits mailing list