OSDN Git Service

[AARCH64][LSE] Preliminary support for ARMv8.1 LSE Atomics.
authorChristof Douma <Christof.Douma@arm.com>
Wed, 21 Jun 2017 10:58:31 +0000 (10:58 +0000)
committerChristof Douma <Christof.Douma@arm.com>
Wed, 21 Jun 2017 10:58:31 +0000 (10:58 +0000)
commit39ca2eff5a995d875ef888e2a07467252a25e1ad
treeb87d41d366dd54f5c6deda8b960ccfbf8267e302
parent84aab6f9f06262c177369360d81832577eead2e9
[AARCH64][LSE] Preliminary support for ARMv8.1 LSE Atomics.

Implemented support to AArch64 codegen for ARMv8.1 Large System
Extensions atomic instructions. Where supported, these instructions can
provide atomic operations with higher performance.

Currently supported operations include: fetch_add, fetch_or, fetch_xor,
fetch_smin, fetch_min/max (signed and unsigned), swap, and
compare_exchange.

This implementation implies sequential-consistency ordering, more
relaxed ordering is under development.

Subtarget->hasLSE is currently supported for Cavium ThunderX2T99.

Patch by Ananth Jasty.

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

Change-Id: I82f6d3d64255622791ceb0715b7ab9f4dc4d4b2c

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305893 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
lib/Target/AArch64/AArch64ISelLowering.cpp
lib/Target/AArch64/AArch64InstrAtomics.td