[ARM] Cortex-R8 support
authorAlexandros Lamprineas <alexandros.lamprineas@arm.com>
Thu, 10 Mar 2016 17:38:41 +0000 (17:38 +0000)
committerAlexandros Lamprineas <alexandros.lamprineas@arm.com>
Thu, 10 Mar 2016 17:38:41 +0000 (17:38 +0000)
This patch adds Cortex-R8 to Target Parser and TableGen.
It also adds CodeGen tests for the build attributes.

Patch by Pablo Barrio.

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

llvm-svn: 263132

llvm/include/llvm/Support/ARMTargetParser.def
llvm/lib/Target/ARM/ARM.td
llvm/test/CodeGen/ARM/build-attributes.ll

index 6f2f86e0db25e49475f488f9c8ee2b7d5743450b..7fe4fd262daeadcfb2656b072fb8901e4c9c5b08 100644 (file)
@@ -209,6 +209,8 @@ ARM_CPU_NAME("cortex-r5", AK_ARMV7R, FK_VFPV3_D16, false,
              (AEK_MP | AEK_HWDIVARM))
 ARM_CPU_NAME("cortex-r7", AK_ARMV7R, FK_VFPV3_D16_FP16, false,
              (AEK_MP | AEK_HWDIVARM))
+ARM_CPU_NAME("cortex-r8", AK_ARMV7R, FK_VFPV3_D16_FP16, false,
+             (AEK_MP | AEK_HWDIVARM))
 ARM_CPU_NAME("sc300", AK_ARMV7M, FK_NONE, false, AEK_NONE)
 ARM_CPU_NAME("cortex-m3", AK_ARMV7M, FK_NONE, true, AEK_NONE)
 ARM_CPU_NAME("cortex-m4", AK_ARMV7EM, FK_FPV4_SP_D16, true, AEK_NONE)
index fa6e6c71a1df6e65441a01cf00395cacba5af817..b92e941bf029e5dcf8303f364ac718d6f3ebdb1e 100644 (file)
@@ -627,6 +627,18 @@ def : ProcessorModel<"cortex-r7",   CortexA8Model,      [ARMv7r, ProcR7,
                                                          FeatureAvoidPartialCPSR,
                                                          FeatureT2XtPk]>;
 
+def : ProcessorModel<"cortex-r8",   CortexA8Model,      [ARMv7r,
+                                                         FeatureHasRAS,
+                                                         FeatureVFP3,
+                                                         FeatureD16,
+                                                         FeatureFP16,
+                                                         FeatureMP,
+                                                         FeatureSlowFPBrcc,
+                                                         FeatureHWDivARM,
+                                                         FeatureHasSlowFPVMLx,
+                                                         FeatureAvoidPartialCPSR,
+                                                         FeatureT2XtPk]>;
+
 def : ProcNoItin<"cortex-m3",                           [ARMv7m]>;
 def : ProcNoItin<"sc300",                               [ARMv7m]>;
 
index 6b1b59dcac26e115fcf9820895a3dec0b2163ebd..cd843ecc34ca1131e221868e1d7fa74837fe6a8d 100644 (file)
 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 | FileCheck %s --check-prefix=CORTEX-R7
 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R7-FAST
 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r7 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
+; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8 | FileCheck %s --check-prefix=CORTEX-R8
+; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-R8-FAST
+; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r8 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35 | FileCheck %s --check-prefix=CORTEX-A35
 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35  -enable-unsafe-fp-math -disable-fp-elim -enable-no-infs-fp-math -enable-no-nans-fp-math -fp-contract=fast | FileCheck %s --check-prefix=CORTEX-A35-FAST
 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a35 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
 ; CORTEX-R7-FAST-NOT:  .eabi_attribute 22
 ; CORTEX-R7-FAST:  .eabi_attribute 23, 1
 
+; CORTEX-R8:  .cpu cortex-r8
+; CORTEX-R8:  .eabi_attribute 6, 10
+; CORTEX-R8:  .eabi_attribute 7, 82
+; CORTEX-R8:  .eabi_attribute 8, 1
+; CORTEX-R8:  .eabi_attribute 9, 2
+; CORTEX-R8:  .fpu vfpv3-d16-fp16
+; CORTEX-R8-NOT:   .eabi_attribute 19
+;; We default to IEEE 754 compliance
+; CORTEX-R8:  .eabi_attribute 20, 1
+; CORTEX-R8:  .eabi_attribute 21, 1
+; CORTEX-R8-NOT:  .eabi_attribute 22
+; CORTEX-R8:  .eabi_attribute 23, 3
+; CORTEX-R8:  .eabi_attribute 24, 1
+; CORTEX-R8:  .eabi_attribute 25, 1
+; CORTEX-R8-NOT:  .eabi_attribute 28
+; CORTEX-R8:  .eabi_attribute 36, 1
+; CORTEX-R8:  .eabi_attribute 38, 1
+; CORTEX-R8:  .eabi_attribute 42, 1
+; CORTEX-R8:  .eabi_attribute 44, 2
+; CORTEX-R8-NOT:  .eabi_attribute 68
+
+; CORTEX-R8-FAST-NOT:   .eabi_attribute 19
+;; The R8 has the VFPv3 FP unit, which always flushes preserving sign.
+; CORTEX-R8-FAST:  .eabi_attribute 20, 2
+; CORTEX-R8-FAST-NOT:  .eabi_attribute 21
+; CORTEX-R8-FAST-NOT:  .eabi_attribute 22
+; CORTEX-R8-FAST:  .eabi_attribute 23, 1
+
 ; CORTEX-A35:  .cpu cortex-a35
 ; CORTEX-A35:  .eabi_attribute 6, 14
 ; CORTEX-A35:  .eabi_attribute 7, 65