mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-30 04:35:00 +00:00
ARM: FMA is legal only if VFP4 is available.
rdar://13306723 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0a4da9c6a1
commit
b302a4e6b5
@ -554,6 +554,12 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
|
||||
setOperationAction(ISD::CTPOP, MVT::v4i16, Custom);
|
||||
setOperationAction(ISD::CTPOP, MVT::v8i16, Custom);
|
||||
|
||||
// NEON only has FMA instructions as of VFP4.
|
||||
if (!Subtarget->hasVFP4()) {
|
||||
setOperationAction(ISD::FMA, MVT::v2f32, Expand);
|
||||
setOperationAction(ISD::FMA, MVT::v4f32, Expand);
|
||||
}
|
||||
|
||||
setTargetDAGCombine(ISD::INTRINSIC_VOID);
|
||||
setTargetDAGCombine(ISD::INTRINSIC_W_CHAIN);
|
||||
setTargetDAGCombine(ISD::INTRINSIC_WO_CHAIN);
|
||||
|
31
test/CodeGen/ARM/2013-02-27-expand-vfma.ll
Normal file
31
test/CodeGen/ARM/2013-02-27-expand-vfma.ll
Normal file
@ -0,0 +1,31 @@
|
||||
; RUN: llc < %s -mtriple=armv7-apple-darwin | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=armv7s-apple-darwin | FileCheck %s -check-prefix=VFP4
|
||||
|
||||
define <4 x float> @muladd(<4 x float> %a, <4 x float> %b, <4 x float> %c) nounwind {
|
||||
; CHECK: muladd:
|
||||
; CHECK: fmaf
|
||||
; CHECK: fmaf
|
||||
; CHECK: fmaf
|
||||
; CHECK: fmaf
|
||||
; CHECK-NOT: fmaf
|
||||
|
||||
; CHECK-VFP4: vfma.f32
|
||||
%tmp = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %b, <4 x float> %c, <4 x float> %a) #2
|
||||
ret <4 x float> %tmp
|
||||
}
|
||||
|
||||
declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>) #1
|
||||
|
||||
define <2 x float> @muladd2(<2 x float> %a, <2 x float> %b, <2 x float> %c) nounwind {
|
||||
; CHECK: muladd2:
|
||||
; CHECK: fmaf
|
||||
; CHECK: fmaf
|
||||
; CHECK-NOT: fmaf
|
||||
|
||||
; CHECK-VFP4: vfma.f32
|
||||
%tmp = tail call <2 x float> @llvm.fma.v2f32(<2 x float> %b, <2 x float> %c, <2 x float> %a) #2
|
||||
ret <2 x float> %tmp
|
||||
}
|
||||
|
||||
declare <2 x float> @llvm.fma.v2f32(<2 x float>, <2 x float>, <2 x float>) #1
|
||||
|
Loading…
x
Reference in New Issue
Block a user