This patch implements clang support for the ACLE special register intrinsics
authorLuke Cheeseman <luke.cheeseman@arm.com>
Mon, 15 Jun 2015 17:51:01 +0000 (17:51 +0000)
committerLuke Cheeseman <luke.cheeseman@arm.com>
Mon, 15 Jun 2015 17:51:01 +0000 (17:51 +0000)
commit59b2d8390941731fc0c02c16c8a523029d1bda64
treecbd45649dbd4867fc64dffee2abf6a9ee2894200
parent43b4d38944965a1cedc3bfce920778242f2faefd
This patch implements clang support for the ACLE special register intrinsics
in section 10.1, __arm_{w,r}sr{,p,64}.

This includes arm_acle.h definitions with builtins and codegen to support
these, the intrinsics are implemented by generating read/write_register calls
which get appropriately lowered in the backend based on the register string
provided. SemaChecking is also implemented to fault invalid parameters.

Differential Revision: http://reviews.llvm.org/D9697

llvm-svn: 239737
12 files changed:
clang/include/clang/Basic/BuiltinsAArch64.def
clang/include/clang/Basic/BuiltinsARM.def
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/include/clang/Sema/Sema.h
clang/lib/CodeGen/CGBuiltin.cpp
clang/lib/Headers/arm_acle.h
clang/lib/Sema/SemaChecking.cpp
clang/test/CodeGen/arm_acle.c
clang/test/CodeGen/builtins-arm.c
clang/test/CodeGen/builtins-arm64.c
clang/test/Sema/aarch64-special-register.c [new file with mode: 0644]
clang/test/Sema/arm-special-register.c [new file with mode: 0644]