include "AArch64Schedule.td"
+class ProcNoItin<string Name, list<SubtargetFeature> Features>
+ : Processor<Name, NoItineraries, Features>;
+
def : Processor<"generic", GenericItineraries, [FeatureFPARMv8]>;
+def : ProcNoItin<"cortex-a53", [FeatureFPARMv8,
+ FeatureNEON,
+ FeatureCrypto]>;
+
+def : ProcNoItin<"cortex-a57", [FeatureFPARMv8,
+ FeatureNEON,
+ FeatureCrypto]>;
+
//===----------------------------------------------------------------------===//
// Register File Description
//===----------------------------------------------------------------------===//
--- /dev/null
+; This tests that llc accepts all valid AArch64 CPUs
+
+; RUN: llc < %s -march=aarch64 -mcpu=generic 2>&1 | FileCheck %s
+; RUN: llc < %s -march=aarch64 -mcpu=cortex-a53 2>&1 | FileCheck %s
+; RUN: llc < %s -march=aarch64 -mcpu=cortex-a57 2>&1 | FileCheck %s
+; RUN: llc < %s -march=aarch64 -mcpu=invalidcpu 2>&1 | FileCheck %s --check-prefix=INVALID
+
+; CHECK-NOT: {{.*}} is not a recognized processor for this target
+; INVALID: {{.*}} is not a recognized processor for this target
+
+define i32 @f(i64 %z) {
+ ret i32 0
+}