[AArch64] Add support for Transactional Memory Extension (TME)
authorMomchil Velikov <momchil.velikov@arm.com>
Wed, 31 Jul 2019 12:52:17 +0000 (12:52 +0000)
committerMomchil Velikov <momchil.velikov@arm.com>
Wed, 31 Jul 2019 12:52:17 +0000 (12:52 +0000)
commita36d31478c182903523e04eb271bbf102bfab2cc
tree539202f6d2252095f3a51767560e7bdf1753db98
parent10dd2965b74d294f2b588e155f2faca8bf27cc74
[AArch64] Add support for Transactional Memory Extension (TME)

Re-commit r366322 after some fixes

TME is a future architecture technology, documented in

  https://developer.arm.com/architectures/cpu-architecture/a-profile/exploration-tools
  https://developer.arm.com/docs/ddi0601/a

More about the future architectures:

  https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/new-technologies-for-the-arm-a-profile-architecture

This patch adds support for the TME instructions TSTART, TTEST, TCOMMIT, and
TCANCEL and the target feature/arch extension "tme".

It also implements TME builtin functions, defined in ACLE Q2 2019
(https://developer.arm.com/docs/101028/latest)

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

Patch by Javed Absar and Momchil Velikov

llvm-svn: 367428
20 files changed:
clang/include/clang/Basic/BuiltinsAArch64.def
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/AArch64.h
clang/lib/Headers/arm_acle.h
clang/lib/Sema/SemaChecking.cpp
clang/test/CodeGen/aarch64-tme.cpp [new file with mode: 0644]
clang/test/Sema/aarch64-tme-errors.c [new file with mode: 0644]
clang/test/Sema/aarch64-tme-tcancel-errors.c [new file with mode: 0644]
llvm/include/llvm/IR/IntrinsicsAArch64.td
llvm/include/llvm/Support/AArch64TargetParser.def
llvm/include/llvm/Support/AArch64TargetParser.h
llvm/lib/Target/AArch64/AArch64.td
llvm/lib/Target/AArch64/AArch64InstrFormats.td
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/lib/Target/AArch64/AArch64Subtarget.h
llvm/test/CodeGen/AArch64/tme.ll [new file with mode: 0644]
llvm/test/MC/AArch64/tme-error.s [new file with mode: 0644]
llvm/test/MC/AArch64/tme.s [new file with mode: 0644]
llvm/test/MC/Disassembler/AArch64/tme.txt [new file with mode: 0644]
llvm/unittests/Support/TargetParserTest.cpp