Commit Graph

40 Commits

Author SHA1 Message Date
Javed Absar bd95f43992 [ARM]: Add Cortex-R52 target
This patch adds Cortex-R52, the new ARM real-time processor.
Cortex-R52 implements the ARMv8-R architecture.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283543 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-07 12:08:41 +00:00
Sjoerd Meijer 6b8549a24b Add a few missing Clang regression tests for Cortex-A53, Cortex-A57, Cortex-A72
Differential Revision: http://reviews.llvm.org/D20908


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271636 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 08:47:56 +00:00
Sjoerd Meijer 91c93d95f1 This adds target support and tests for Cortex-A73
Differential Revision: http://reviews.llvm.org/D20864


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271507 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-02 10:48:37 +00:00
Chris Bieneman 1ec71b33de [Clang][Darwin] Define __ARM_DWARF_EH__ for WatchABI
Summary: The Darwin armv7k ABI uses Dwarf EH, so we need to set the OS define correctly. Without this the gcc_personality fails to build.

Reviewers: t.p.northover

Subscribers: aemerson, cfe-commits, rengolin

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@268078 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-29 17:53:00 +00:00
Tim Northover 669ff4cf63 Add accidentally dropped test to r267880.
Forgot "git add".

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267881 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-28 14:01:49 +00:00
James Y Knight 2f6140b53b Clean up a couple more preprocessor tests to use match-full-lines.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265187 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 21:33:20 +00:00
Artyom Skrobov f0dc7673d0 Combine identical check-prefixes in Clang test/Preprocessor/arm-target-features.c
Reviewers: rengolin, t.p.northover

Subscribers: aemerson, cfe-commits, rengolin

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264155 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-23 13:32:33 +00:00
Renato Golin aaebf32f3f [ARM] Clang tests for ARM Cortex-A32 support
Patch by Sam Parker.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263957 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-21 17:29:51 +00:00
Pablo Barrio 9c1825952c Add more ARM Cortex-R8 regression tests to Clang.
Summary:
This patch adds Clang tests for Cortex-R8 related to FP capabilities and
hardware integer divide.

Reviewers: rengolin, bsmith

Subscribers: aemerson, cfe-commits, rengolin

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263632 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-16 10:21:04 +00:00
Pablo Barrio 68d2fde045 Test commit - Remove some trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263574 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-15 19:03:09 +00:00
Bradley Smith dd4c4d4e50 [ARM] Add Clang targeting for ARMv8-M Baseline/Mainline
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262619 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-03 13:52:22 +00:00
Oliver Stannard aba1af8a47 [ARM] Add command-line options for ARMv8.2-A
This allows ARMv8.2-A to be targeted either by using "armv8.2a" in the
triple, or by using -march=armv8.2-a (or the alias -march=armv8.2a).

The FP16 extension can be enabled with the "+fp16" suffix to the -march
or -mcpu option. This is consistent with the AArch64 option, rather than
the usual ARM option of -mfpu. We have agreed with the team which will
be upstreaming this to GCC that we want to use this new option format
for new architecture extensions for both ARM and AArch64.

Most of the work for this was done by the TargetParser patch in llvm.

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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260533 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 16:05:52 +00:00
Alexandros Lamprineas 3b1c04bd7b ARM v8.1a adds Advanced SIMD instructions for Rounding Double Multiply
Add/Subtract.

The following instructions are added to AArch32 instruction set:

- VQRDMLAH: Vector Saturating Rounding Doubling Multiply Accumulate
            Returning High Half
- VQRDMLSH: Vector Saturating Rounding Doubling Multiply Subtract
            Returning High Half

The following instructions are added to AArch64 instruction set:

- SQRDMLAH: Signed Saturating Rounding Doubling Multiply Accumulate
            Returning High Half
- SQRDMLSH: Signed Saturating Rounding Doubling Multiply Subtract
            Returning High Half

This patch adds intrinsic and ACLE macro support for these instructions,
as well as corresponding tests.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@254250 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-29 10:43:59 +00:00
Tim Northover 56c5241273 Support watchOS and tvOS driver options
This patch should add support for almost all command-line options and
driver tinkering necessary to produce a correct "clang -cc1"
invocation for watchOS and tvOS.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@251706 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 16:30:27 +00:00
Richard Barton dfc9e8f212 Fix __ARM_FP value for sp-only FPUs with Half-precision
The logic for parsing FP capabilities to set __ARM_FP was mistakenly removing
the Half-Precision capability when handling fp-only-sp resulting in a value
of 0x4. Section 6.5.1 of ACLE states that for such FP architectures the value
should be 0x6

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250888 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-21 10:03:55 +00:00
Alexandros Lamprineas 3f4b1e4c59 Implement ACLE 2.0 macros of chapters 6.6 and 6.7 for [ARM] and [Aarch64] targets.
Differential Revision: http://reviews.llvm.org/D12633

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249140 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-02 14:56:37 +00:00
Oliver Stannard 7b8d166854 [ARM] Allow passing/returning of __fp16 arguments
The ACLE (ARM C Language Extensions) 2.0 allows the __fp16 type to be
used as a functon argument or return type (ACLE 1.1 did not).

The current public release of the AAPCS (2.09) states that __fp16 values
should be converted to single-precision before being passed or returned,
but AAPCS 2.10 (to be released shortly) changes this, so that they are
passed in the least-significant 16 bits of either a GPR (for base AAPCS)
or a single-precision register (for AAPCS-VFP). This does not change how
arguments are passed if they get passed on the stack.

This patch brings clang up to compliance with the latest versions of
both of these specs.

We can now set the __ARM_FP16_ARGS ACLE predefine, and we have always
been able to set the __ARM_FP16_FORMAT_IEEE predefine (we do not support
the alternative format).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246764 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 12:40:58 +00:00
Oliver Stannard 4880d582bd Revert 246755 as it breaks buildbots
Original commit message:
[ARM] Allow passing/returning of __fp16 arguments

The ACLE (ARM C Language Extensions) 2.0 allows the __fp16 type to be
used as a functon argument or return type (ACLE 1.1 did not).

The current public release of the AAPCS (2.09) states that __fp16 values
should be converted to single-precision before being passed or returned,
but AAPCS 2.10 (to be released shortly) changes this, so that they are
passed in the least-significant 16 bits of either a GPR (for base AAPCS)
or a single-precision register (for AAPCS-VFP). This does not change how
arguments are passed if they get passed on the stack.

This patch brings clang up to compliance with the latest versions of
both of these specs.

We can now set the __ARM_FP16_ARGS ACLE predefine, and we have always
been able to set the __ARM_FP16_FORMAT_IEEE predefine (we do not support
the alternative format).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246760 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 11:46:24 +00:00
Oliver Stannard 2998469baf [ARM] Allow passing/returning of __fp16 arguments
The ACLE (ARM C Language Extensions) 2.0 allows the __fp16 type to be
used as a functon argument or return type (ACLE 1.1 did not).

The current public release of the AAPCS (2.09) states that __fp16 values
should be converted to single-precision before being passed or returned,
but AAPCS 2.10 (to be released shortly) changes this, so that they are
passed in the least-significant 16 bits of either a GPR (for base AAPCS)
or a single-precision register (for AAPCS-VFP). This does not change how
arguments are passed if they get passed on the stack.

This patch brings clang up to compliance with the latest versions of
both of these specs.

We can now set the __ARM_FP16_ARGS ACLE predefine, and we have always
been able to set the __ARM_FP16_FORMAT_IEEE predefine (we do not support
the alternative format).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246755 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 09:34:53 +00:00
Tim Northover e9fc86435e ARM: actually define __ARM_ARCH_7S__ for the armv7s slice
We ended up with the wrong predefine after the recent TargetParser shuffle, and
I accidentally solidified it with a test. This should fix it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242841 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-21 21:47:33 +00:00
John Brawn dd9bf939b7 [ARM] Use TargetParser to determine FPU subtarget features
The main effect of this is to fix anomalies where certain -mfpu options didn't
disable everything that they should causing strange behaviour when combined
with -mcpu or -march values that themselves enabled fpu subtarget features,
e.g. -mfpu=fpv5-dp-d16 with -march=armv7em previously behaved the same as
-mfpu=fpv5-sp-d16 due to fp-only-sp not being disabled.

Invalid -mfpu options now also give an error, which is consistent with the
handling of the .fpu directive.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239152 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-05 13:34:11 +00:00
Tim Northover f102f777ae ARM: fix ACLE predefine for iOS's "-arch armv7s".
We were getting "#define __ARM_ARCH_7 -S__ 1" which is really not a good idea.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238614 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-29 21:28:25 +00:00
Vladimir Sukharev b1e6d16339 [ARM] Add v8.1a architecture
Add support for ARMv8.1a architecture. 

Briefly it is described on http://community.arm.com/groups/processors/blog/2014/12/02/the-armv8-a-architecture-and-its-ongoing-development

Reviewers: 	jmolloy, rengolin

Subscribers: cfe-commits

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@237349 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-14 08:25:18 +00:00
Javed Absar 16eb22d1df [ARM] add support for Cortex-R4/R4F
Adds ARM Cortex-R4 and R4F support and tests in Clang. Though Cortex-R4
support was present, the support for hwdiv in thumb-mode was not defined
or tested properly. This has also been added.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234488 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-09 14:12:10 +00:00
Bradley Smith 10300321f9 [ARM] Add missing M/R class CPUs
Add some of the missing M and R class Cortex CPUs, namely:

Cortex-M0+ (called Cortex-M0plus for GCC compatibility)
Cortex-M1
SC000
SC300
Cortex-R5


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229661 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-18 10:34:48 +00:00
Sergey Dmitrouk 2285ade936 [ARM] Define __ARM_FEATURE_DSP macro for CPUs that have DSP instructions
Summary:
This resolves [[ http://llvm.org/bugs/show_bug.cgi?id=17391 | PR17391 ]].

GCC's sources were used as a guide (couldn't find much information in ARM documentation).

Reviewers: doug.gregor, asl

Reviewed By: asl

Subscribers: asl, aemerson, cfe-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222741 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-25 08:57:36 +00:00
Renato Golin cf732d1468 Adds support for the Cortex-A17 processor to Clang
Patch by Matthew Wahab.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219607 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-13 10:22:48 +00:00
Oliver Stannard 3a8811e15f [ARM] Add support for Cortex-M7, FPv5-SP and FPv5-DP
The Cortex-M7 has 3 options for its FPU: none, FPv5-SP-D16 and
FPv5-DP-D16. FPv5 has the same instructions as FP-ARMv8, so it can be
modeled using the same target feature, and all double-precision
operations are already disabled by the fp-only-sp target features.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@218748 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-01 09:03:02 +00:00
James Molloy 04fdc2f8ec [ARM] Add ACLE predefines: maxmin, rounding and h/w integer division
Patch by Assad Hashmi!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217760 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-15 11:25:38 +00:00
Saleem Abdulrasool af3883a244 test: add missed file in previous commit
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210992 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-15 18:48:41 +00:00
Nico Rieck 263f145643 Fix broken CHECK lines
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201477 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-16 07:29:41 +00:00
Bradley Smith f35eeda5f4 [ARM] Add ACLE enum/wchar size predefines
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@199642 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-20 10:52:00 +00:00
Ana Pazos 69a9e166e0 Added support for mcpu krait
- krait processor currently modeled with the same features as A9.
- Krait processor additionally has VFP4 (fused multiply add/sub)
and hardware division features enabled.
- krait has currently the same Schedule model as A9
- krait cpu flag is not recognized by the GNU assembler yet,
it is replaced with march=armv7-a to avoid a lower march
from being used.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196618 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-06 22:43:17 +00:00
Amara Emerson 1a89f581d9 [ARM] Enable FeatureMP for Cortex-A5 by default.
Patch by Oliver Stannard.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195641 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-25 13:18:59 +00:00
Richard Barton 4e74fdcd05 Add support for Cortex-A12.
Patch by Oliver Stannard!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195449 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-22 11:53:28 +00:00
Artyom Skrobov ddc8047cd5 [ARM] add basic support for Cortex-A7 and VFPv4 to Clang
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195359 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-21 14:04:38 +00:00
Bernard Ogden 909f35a884 ARM: Add -m[no-]crc to dis/enable CRC subtargetfeature from clang
Allow users to disable or enable CRC subtarget feature.

Differential Revision: http://llvm-reviews.chandlerc.com/D2037

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193600 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-29 09:47:51 +00:00
Bernard Ogden f779e65390 Add driver support for FP, SIMD and crypto defaults.
Although we wire up a bit for v8fp for macro setting
purposes, we don't set a macro yet. Need to ask list
about that.

Change-Id: Ic9819593ce00882fbec72757ffccc6f0b18160a0

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193367 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-24 18:32:51 +00:00
Silviu Baranga c6c9cf4b18 Set the default hardware division features for ARM cpus. Also set it as default for A32 armv8.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193075 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-21 10:59:33 +00:00
Joey Gouly 520ec1e553 [ARMv8] Add builtins for CRC instructions.
Patch by Bradley Smith!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190931 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-18 10:07:09 +00:00