[all-commits] [llvm/llvm-project] 44cdf7: [AtomicExpand] Merge cmpxchg success and failure o...

Eli Friedman via All-commits all-commits at lists.llvm.org
Thu Jun 3 11:36:21 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 44cdf771fe12ca528403cec9e6a8438b5107133b
      https://github.com/llvm/llvm-project/commit/44cdf771fe12ca528403cec9e6a8438b5107133b
  Author: Eli Friedman <efriedma at quicinc.com>
  Date:   2021-06-03 (Thu, 03 Jun 2021)

  Changed paths:
    M llvm/include/llvm/IR/Instructions.h
    M llvm/lib/CodeGen/AtomicExpandPass.cpp
    M llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic-128.ll
    M llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
    M llvm/test/CodeGen/PowerPC/atomics-regression.ll
    M llvm/test/CodeGen/RISCV/atomic-cmpxchg.ll

  Log Message:
  -----------
  [AtomicExpand] Merge cmpxchg success and failure ordering when appropriate.

If we're not emitting separate fences for the success/failure cases, we
need to pass the merged ordering to the target so it can emit the
correct instructions.

For the PowerPC testcase, we end up with extra fences, but that seems
like an improvement over missing fences.  If someone wants to improve
that, the PowerPC backed could be taught to emit the fences after isel,
instead of depending on fences emitted by AtomicExpand.

Fixes https://bugs.llvm.org/show_bug.cgi?id=33332 .

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




More information about the All-commits mailing list