[AArch64] Add support for Transactional Memory Extension (TME)
authorMomchil Velikov <momchil.velikov@arm.com>
Wed, 17 Jul 2019 13:23:27 +0000 (13:23 +0000)
committerMomchil Velikov <momchil.velikov@arm.com>
Wed, 17 Jul 2019 13:23:27 +0000 (13:23 +0000)
commit4b8da3a503e434ddbc08ecf66582475765f449bc
tree1a35c3ec28ad30ad65c7916467a703b8f249e33f
parent2889fe67691b4220e31bbf8c78b63474c973f26c
[AArch64] Add support for Transactional Memory Extension (TME)

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)

Patch by Javed Absar and Momchil Velikov

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

llvm-svn: 366322
25 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-tcancel-arg.cpp [new file with mode: 0644]
clang/test/CodeGen/aarch64-tme.c [new file with mode: 0644]
clang/test/Sema/aarch64-tme-errors.c [new file with mode: 0644]
clang/test/Sema/aarch64-tme-tcancel-const-error.c [new file with mode: 0644]
clang/test/Sema/aarch64-tme-tcancel-range-error.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-tcancel.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/tme-tcommit.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/tme-tstart.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/tme-ttest.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