forked from OSchip/llvm-project
[AArch64]: Add support for Cortex-A35
Adds support for the new Cortex-A35 ARMv8-A core. llvm-svn: 254503
This commit is contained in:
parent
fcf334b824
commit
8b5dc2c94e
|
@ -208,6 +208,7 @@ 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)
|
||||
ARM_CPU_NAME("cortex-m7", AK_ARMV7EM, FK_FPV5_D16, false, AEK_NONE)
|
||||
ARM_CPU_NAME("cortex-a35", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, AEK_CRC)
|
||||
ARM_CPU_NAME("cortex-a53", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, true, AEK_CRC)
|
||||
ARM_CPU_NAME("cortex-a57", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, AEK_CRC)
|
||||
ARM_CPU_NAME("cortex-a72", AK_ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, AEK_CRC)
|
||||
|
|
|
@ -91,6 +91,14 @@ include "AArch64SchedA53.td"
|
|||
include "AArch64SchedA57.td"
|
||||
include "AArch64SchedCyclone.td"
|
||||
|
||||
def ProcA35 : SubtargetFeature<"a35", "ARMProcFamily", "CortexA35",
|
||||
"Cortex-A35 ARM processors",
|
||||
[FeatureFPARMv8,
|
||||
FeatureNEON,
|
||||
FeatureCrypto,
|
||||
FeatureCRC,
|
||||
FeaturePerfMon]>;
|
||||
|
||||
def ProcA53 : SubtargetFeature<"a53", "ARMProcFamily", "CortexA53",
|
||||
"Cortex-A53 ARM processors",
|
||||
[FeatureFPARMv8,
|
||||
|
@ -121,6 +129,8 @@ def : ProcessorModel<"generic", NoSchedModel, [FeatureFPARMv8,
|
|||
FeatureCRC,
|
||||
FeaturePerfMon]>;
|
||||
|
||||
// FIXME: Cortex-A35 is currently modelled as a Cortex-A53
|
||||
def : ProcessorModel<"cortex-a35", CortexA53Model, [ProcA35]>;
|
||||
def : ProcessorModel<"cortex-a53", CortexA53Model, [ProcA53]>;
|
||||
def : ProcessorModel<"cortex-a57", CortexA57Model, [ProcA57]>;
|
||||
// FIXME: Cortex-A72 is currently modelled as an Cortex-A57.
|
||||
|
|
|
@ -33,7 +33,7 @@ class Triple;
|
|||
|
||||
class AArch64Subtarget : public AArch64GenSubtargetInfo {
|
||||
protected:
|
||||
enum ARMProcFamilyEnum {Others, CortexA53, CortexA57, Cyclone};
|
||||
enum ARMProcFamilyEnum {Others, CortexA35, CortexA53, CortexA57, Cyclone};
|
||||
|
||||
/// ARMProcFamily - ARM processor family: Cortex-A53, Cortex-A57, and others.
|
||||
ARMProcFamilyEnum ARMProcFamily;
|
||||
|
|
|
@ -238,6 +238,8 @@ def ProcA15 : SubtargetFeature<"a15", "ARMProcFamily", "CortexA15",
|
|||
"Cortex-A15 ARM processors", []>;
|
||||
def ProcA17 : SubtargetFeature<"a17", "ARMProcFamily", "CortexA17",
|
||||
"Cortex-A17 ARM processors", []>;
|
||||
def ProcA35 : SubtargetFeature<"a35", "ARMProcFamily", "CortexA35",
|
||||
"Cortex-A35 ARM processors", []>;
|
||||
def ProcA53 : SubtargetFeature<"a53", "ARMProcFamily", "CortexA53",
|
||||
"Cortex-A53 ARM processors", []>;
|
||||
def ProcA57 : SubtargetFeature<"a57", "ARMProcFamily", "CortexA57",
|
||||
|
@ -603,6 +605,13 @@ def : ProcNoItin<"cortex-m7", [ARMv7em,
|
|||
FeatureD16]>;
|
||||
|
||||
|
||||
def : ProcNoItin<"cortex-a35", [ARMv8a, ProcA35,
|
||||
FeatureHWDiv,
|
||||
FeatureHWDivARM,
|
||||
FeatureT2XtPk,
|
||||
FeatureCrypto,
|
||||
FeatureCRC]>;
|
||||
|
||||
def : ProcNoItin<"cortex-a53", [ARMv8a, ProcA53,
|
||||
FeatureHWDiv,
|
||||
FeatureHWDivARM,
|
||||
|
|
|
@ -43,8 +43,8 @@ class ARMSubtarget : public ARMGenSubtargetInfo {
|
|||
protected:
|
||||
enum ARMProcFamilyEnum {
|
||||
Others, CortexA5, CortexA7, CortexA8, CortexA9, CortexA12, CortexA15,
|
||||
CortexA17, CortexR4, CortexR4F, CortexR5, CortexR7, CortexA53, CortexA57,
|
||||
CortexA72, Krait, Swift
|
||||
CortexA17, CortexR4, CortexR4F, CortexR5, CortexR7, CortexA35, CortexA53,
|
||||
CortexA57, CortexA72, Krait, Swift
|
||||
};
|
||||
enum ARMProcClassEnum {
|
||||
None, AClass, RClass, MClass
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
|
||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=generic 2>&1 | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a35 2>&1 | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a53 2>&1 | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a57 2>&1 | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=arm64-unknown-unknown -mcpu=cortex-a72 2>&1 | FileCheck %s
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a35 -o - %s | FileCheck %s
|
||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a57 -o - %s | FileCheck %s
|
||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a53 -o - %s | FileCheck %s
|
||||
; RUN: llc -mtriple=aarch64-linux-gnuabi -mcpu=cortex-a72 -o - %s | FileCheck %s
|
||||
|
|
|
@ -96,6 +96,9 @@
|
|||
; 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=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
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 | FileCheck %s --check-prefix=CORTEX-A53
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -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-A53-FAST
|
||||
; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 -enable-sign-dependent-rounding-fp-math | FileCheck %s --check-prefix=DYN-ROUNDING
|
||||
|
@ -129,6 +132,8 @@
|
|||
; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||
; RUN: llc < %s -mtriple=armv8.1a-none-linux-gnueabi | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||
; ARMv8a (AArch32)
|
||||
; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a35 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||
; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a35 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||
; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||
; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a57 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN
|
||||
; RUN: llc < %s -mtriple=armv8-none-linux-gnueabi -mcpu=cortex-a72 | FileCheck %s --check-prefix=NO-STRICT-ALIGN
|
||||
|
@ -1113,6 +1118,36 @@
|
|||
; CORTEX-R7-FAST-NOT: .eabi_attribute 22
|
||||
; CORTEX-R7-FAST: .eabi_attribute 23, 1
|
||||
|
||||
; CORTEX-A35: .cpu cortex-a35
|
||||
; CORTEX-A35: .eabi_attribute 6, 14
|
||||
; CORTEX-A35: .eabi_attribute 7, 65
|
||||
; CORTEX-A35: .eabi_attribute 8, 1
|
||||
; CORTEX-A35: .eabi_attribute 9, 2
|
||||
; CORTEX-A35: .fpu crypto-neon-fp-armv8
|
||||
; CORTEX-A35: .eabi_attribute 12, 3
|
||||
; CORTEX-A35-NOT: .eabi_attribute 19
|
||||
;; We default to IEEE 754 compliance
|
||||
; CORTEX-A35: .eabi_attribute 20, 1
|
||||
; CORTEX-A35: .eabi_attribute 21, 1
|
||||
; CORTEX-A35-NOT: .eabi_attribute 22
|
||||
; CORTEX-A35: .eabi_attribute 23, 3
|
||||
; CORTEX-A35: .eabi_attribute 24, 1
|
||||
; CORTEX-A35: .eabi_attribute 25, 1
|
||||
; CORTEX-A35-NOT: .eabi_attribute 27
|
||||
; CORTEX-A35-NOT: .eabi_attribute 28
|
||||
; CORTEX-A35: .eabi_attribute 36, 1
|
||||
; CORTEX-A35: .eabi_attribute 38, 1
|
||||
; CORTEX-A35: .eabi_attribute 42, 1
|
||||
; CORTEX-A35-NOT: .eabi_attribute 44
|
||||
; CORTEX-A35: .eabi_attribute 68, 3
|
||||
|
||||
; CORTEX-A35-FAST-NOT: .eabi_attribute 19
|
||||
;; The A35 has the ARMv8 FP unit, which always flushes preserving sign.
|
||||
; CORTEX-A35-FAST: .eabi_attribute 20, 2
|
||||
; CORTEX-A35-FAST-NOT: .eabi_attribute 21
|
||||
; CORTEX-A35-FAST-NOT: .eabi_attribute 22
|
||||
; CORTEX-A35-FAST: .eabi_attribute 23, 1
|
||||
|
||||
; CORTEX-A53: .cpu cortex-a53
|
||||
; CORTEX-A53: .eabi_attribute 6, 14
|
||||
; CORTEX-A53: .eabi_attribute 7, 65
|
||||
|
|
Loading…
Reference in New Issue