[all-commits] [llvm/llvm-project] 843c61: [AArch64] Fix i128 cmpxchg using ldxp/stxp.
Eli Friedman via All-commits
all-commits at lists.llvm.org
Tue Jul 20 12:38:31 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 843c61405881acdac1727c3a1ca4f36156611753
https://github.com/llvm/llvm-project/commit/843c61405881acdac1727c3a1ca4f36156611753
Author: Eli Friedman <efriedma at quicinc.com>
Date: 2021-07-20 (Tue, 20 Jul 2021)
Changed paths:
M llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
M llvm/lib/Target/AArch64/AArch64InstrAtomics.td
M llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
M llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic-128.ll
M llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmpxchg-128.mir
M llvm/test/CodeGen/AArch64/arm64-atomic-128.ll
M llvm/test/CodeGen/AArch64/atomicrmw-O0.ll
Log Message:
-----------
[AArch64] Fix i128 cmpxchg using ldxp/stxp.
Basically two parts to this fix:
1. Stop using AtomicExpand to expand cmpxchg i128
2. Fix AArch64ExpandPseudoInsts to use a correct expansion.
>From ARM architecture reference:
To atomically load two 64-bit quantities, perform a Load-Exclusive
pair/Store-Exclusive pair sequence of reading and writing the same value
for which the Store-Exclusive pair succeeds, and use the read values
from the Load-Exclusive pair.
Fixes https://bugs.llvm.org/show_bug.cgi?id=51102
Differential Revision: https://reviews.llvm.org/D106039
More information about the All-commits
mailing list