[all-commits] [llvm/llvm-project] 843131: [AMDGPU] Stop replacing amdgcn.ballot(1) with amdg...

Jay Foad via All-commits all-commits at lists.llvm.org
Fri Jun 16 09:18:05 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 84313162bf79a4c16ad3edd2a2e6accad569a907
      https://github.com/llvm/llvm-project/commit/84313162bf79a4c16ad3edd2a2e6accad569a907
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2023-06-16 (Fri, 16 Jun 2023)

  Changed paths:
    M llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
    M llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll

  Log Message:
  -----------
  [AMDGPU] Stop replacing amdgcn.ballot(1) with amdgcn.s.getreg(exec)

Rationale:
- It does not enable any further IR simplifications.
- It does not improve the generated code since the isel lowering of
  ballot also has special cases for 0 and 1.
- getreg is "too powerful" since it can read from many different
  registers, so its intrinsic properties have to be set very
  conservatively.

There is also a correctness problem that getreg can read from exec but
it is currently not marked as convergent.

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




More information about the All-commits mailing list