diff --git a/llvm/lib/Target/ARM/ARM.td b/llvm/lib/Target/ARM/ARM.td index ab57779b5800..1fb190ca1122 100644 --- a/llvm/lib/Target/ARM/ARM.td +++ b/llvm/lib/Target/ARM/ARM.td @@ -142,8 +142,7 @@ def ProcA9 : SubtargetFeature<"a9", "ARMProcFamily", "CortexA9", // FIXME: It has not been determined if A15 has these features. def ProcA15 : SubtargetFeature<"a15", "ARMProcFamily", "CortexA15", "Cortex-A15 ARM processors", - [FeatureVMLxForwarding, - FeatureT2XtPk, FeatureFP16, + [FeatureT2XtPk, FeatureFP16, FeatureAvoidPartialCPSR]>; class ProcNoItin Features> diff --git a/llvm/test/CodeGen/ARM/a15-mla.ll b/llvm/test/CodeGen/ARM/a15-mla.ll new file mode 100644 index 000000000000..25f6de4762d5 --- /dev/null +++ b/llvm/test/CodeGen/ARM/a15-mla.ll @@ -0,0 +1,12 @@ +; RUN: llc < %s -march=arm -float-abi=hard -mcpu=cortex-a15 -mattr=+neon,+neonfp | FileCheck %s + +; This test checks that the VMLxForwarting feature is disabled for A15. +; CHECK: fun_a +define <4 x i32> @fun_a(<4 x i32> %x, <4 x i32> %y) nounwind{ + %1 = add <4 x i32> %x, %y +; CHECK-NOT: vmul +; CHECK: vmla + %2 = mul <4 x i32> %1, %1 + %3 = add <4 x i32> %y, %2 + ret <4 x i32> %3 +}