Index: lib/Target/ARM/ARM.td =================================================================== --- lib/Target/ARM/ARM.td +++ lib/Target/ARM/ARM.td @@ -951,6 +951,7 @@ FeatureVFPOnlySP, FeatureD16, FeaturePrefLoopAlign32, + FeatureHasSlowFPVMLx, FeatureHasNoBranchPredictor]>; def : ProcNoItin<"cortex-m7", [ARMv7em, @@ -966,6 +967,7 @@ FeatureD16, FeatureVFPOnlySP, FeaturePrefLoopAlign32, + FeatureHasSlowFPVMLx, FeatureHasNoBranchPredictor]>; def : ProcNoItin<"cortex-a32", [ARMv8a, Index: test/CodeGen/ARM/fmacs.ll =================================================================== --- test/CodeGen/ARM/fmacs.ll +++ test/CodeGen/ARM/fmacs.ll @@ -3,6 +3,8 @@ ; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a8 %s -o - | FileCheck %s -check-prefix=A8 ; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a9 %s -o - | FileCheck %s -check-prefix=A9 ; RUN: llc -mtriple=arm-linux-gnueabi -mcpu=cortex-a9 -float-abi=hard %s -o - | FileCheck %s -check-prefix=HARD +; RUN: llc -mtriple=arm-eabi -mcpu=cortex-m4 %s -o - | FileCheck %s -check-prefix=SLOWVMLX +; RUN: llc -mtriple=arm-eabi -mcpu=cortex-m33 %s -o - | FileCheck %s -check-prefix=SLOWVMLX define float @t1(float %acc, float %a, float %b) { entry: @@ -15,6 +17,10 @@ ; A8-LABEL: t1: ; A8: vmul.f32 ; A8: vadd.f32 + +; SLOWVMLX-LABEL: t1: +; SLOWVMLX: vmul.f32 +; SLOWVMLX-NEXT: vadd.f32 %0 = fmul float %a, %b %1 = fadd float %acc, %0 ret float %1