mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-19 06:31:18 +00:00
Add a missing llvm.fma -> VFNMS pattern to the ARM backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158902 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1d4e62878e
commit
dc13d2ed2f
@ -1207,6 +1207,14 @@ def : Pat<(fsub_mlx (fmul_su SPR:$a, SPR:$b), SPR:$dstin),
|
||||
Requires<[HasVFP4,DontUseNEONForFP,UseFusedMAC]>;
|
||||
|
||||
// Match @llvm.fma.* intrinsics
|
||||
|
||||
// (fma x, y, (fneg z)) -> (vfnms z, x, y))
|
||||
def : Pat<(f64 (fma DPR:$Dn, DPR:$Dm, (fneg DPR:$Ddin))),
|
||||
(VFNMSD DPR:$Ddin, DPR:$Dn, DPR:$Dm)>,
|
||||
Requires<[HasVFP4]>;
|
||||
def : Pat<(f32 (fma SPR:$Sn, SPR:$Sm, (fneg SPR:$Sdin))),
|
||||
(VFNMSS SPR:$Sdin, SPR:$Sn, SPR:$Sm)>,
|
||||
Requires<[HasVFP4]>;
|
||||
// (fneg (fma (fneg x), y, z)) -> (vfnms z, x, y)
|
||||
def : Pat<(fneg (f64 (fma (fneg DPR:$Dn), DPR:$Dm, DPR:$Ddin))),
|
||||
(VFNMSD DPR:$Ddin, DPR:$Dn, DPR:$Dm)>,
|
||||
|
@ -141,6 +141,15 @@ entry:
|
||||
ret double %tmp2
|
||||
}
|
||||
|
||||
define float @test_fnms_f32(float %a, float %b, float* %c) nounwind readnone ssp {
|
||||
; CHECK: test_fnms_f32
|
||||
; CHECK: vfnms.f32
|
||||
%tmp1 = load float* %c, align 4
|
||||
%tmp2 = fsub float -0.0, %tmp1
|
||||
%tmp3 = tail call float @llvm.fma.f32(float %a, float %b, float %tmp2) nounwind readnone
|
||||
ret float %tmp3
|
||||
}
|
||||
|
||||
define double @test_fnms_f64(double %a, double %b, double %c) nounwind readnone ssp {
|
||||
entry:
|
||||
; CHECK: test_fnms_f64
|
||||
|
Loading…
x
Reference in New Issue
Block a user