diff options
| author | David Goodwin <david_goodwin@apple.com> | 2009-08-04 18:44:29 +0000 |
|---|---|---|
| committer | David Goodwin <david_goodwin@apple.com> | 2009-08-04 18:44:29 +0000 |
| commit | a3839bc6c0bcdcbd50ba7de76b95dafedfe73d98 (patch) | |
| tree | 5750b2fe387bba06a7d148357a2642eca7dc8861 /llvm/lib/Target/ARM | |
| parent | 5638895b2aacb2af12fb636f342066af651465e0 (diff) | |
| download | bcm5719-llvm-a3839bc6c0bcdcbd50ba7de76b95dafedfe73d98.tar.gz bcm5719-llvm-a3839bc6c0bcdcbd50ba7de76b95dafedfe73d98.zip | |
Match common pattern for FNMAC. Add NEON SP support.
llvm-svn: 78085
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrNEON.td | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrVFP.td | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrNEON.td b/llvm/lib/Target/ARM/ARMInstrNEON.td index ec4702f5d69..147490c7843 100644 --- a/llvm/lib/Target/ARM/ARMInstrNEON.td +++ b/llvm/lib/Target/ARM/ARMInstrNEON.td @@ -953,6 +953,7 @@ defm VQDMLSL : N3VLInt3_HS<0, 1, 0b1011, 0, "vqdmlsl.s", int_arm_neon_vqdmlsl>; // Vector Multiply-Accumulate/Subtract used for single-precision FP def : N3VDMulOps<fmul, fadd, VMLAfd>; +def : N3VDMulOps<fmul, fsub, VMLSfd>; // Vector Subtract Operations. diff --git a/llvm/lib/Target/ARM/ARMInstrVFP.td b/llvm/lib/Target/ARM/ARMInstrVFP.td index 2ecf5f3a420..923606d9772 100644 --- a/llvm/lib/Target/ARM/ARMInstrVFP.td +++ b/llvm/lib/Target/ARM/ARMInstrVFP.td @@ -346,6 +346,11 @@ def FNMACS : ASbIn<0b11100000, (outs SPR:$dst), (ins SPR:$dstin, SPR:$a, SPR:$b) let Inst{6} = 1; } +def : Pat<(fsub DPR:$dstin, (fmul DPR:$a, DPR:$b)), + (FNMACD DPR:$dstin, DPR:$a, DPR:$b)>, Requires<[DontUseNEONForFP]>; +def : Pat<(fsub SPR:$dstin, (fmul SPR:$a, SPR:$b)), + (FNMACS SPR:$dstin, SPR:$a, SPR:$b)>, Requires<[DontUseNEONForFP]>; + def FNMSCD : ADbI<0b11100001, (outs DPR:$dst), (ins DPR:$dstin, DPR:$a, DPR:$b), "fnmscd", " $dst, $a, $b", [(set DPR:$dst, (fsub (fneg (fmul DPR:$a, DPR:$b)), DPR:$dstin))]>, |

