summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMInstrNEON.td
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2013-09-03 20:08:17 +0000
committerJim Grosbach <grosbach@apple.com>2013-09-03 20:08:17 +0000
commitb81d7a89129ff1621fa609144b400df3500542d6 (patch)
tree3b3fe8da2dc87227452cb6babf29feb8c0d577a0 /lib/Target/ARM/ARMInstrNEON.td
parentbd18c8d0903b695bd503a45cf11901d48eea61bd (diff)
downloadllvm-b81d7a89129ff1621fa609144b400df3500542d6.tar.gz
llvm-b81d7a89129ff1621fa609144b400df3500542d6.tar.bz2
llvm-b81d7a89129ff1621fa609144b400df3500542d6.tar.xz
Revert "Revert "ARM: Improve pattern for isel mul of vector by scalar.""
This reverts commit r189648. Fixes for the previously failing clang-side arm_neon_intrinsics test cases will be checked in separately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189841 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMInstrNEON.td')
-rw-r--r--lib/Target/ARM/ARMInstrNEON.td11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMInstrNEON.td b/lib/Target/ARM/ARMInstrNEON.td
index 49ae3348cd..f1bd37ea52 100644
--- a/lib/Target/ARM/ARMInstrNEON.td
+++ b/lib/Target/ARM/ARMInstrNEON.td
@@ -4022,6 +4022,17 @@ def : Pat<(v4f32 (fmul (v4f32 QPR:$src1),
(DSubReg_i32_reg imm:$lane))),
(SubReg_i32_lane imm:$lane)))>;
+
+def : Pat<(v2f32 (fmul DPR:$Rn, (NEONvdup (f32 SPR:$Rm)))),
+ (VMULslfd DPR:$Rn,
+ (INSERT_SUBREG (v2f32 (IMPLICIT_DEF)), SPR:$Rm, ssub_0),
+ (i32 0))>;
+def : Pat<(v4f32 (fmul QPR:$Rn, (NEONvdup (f32 SPR:$Rm)))),
+ (VMULslfq QPR:$Rn,
+ (INSERT_SUBREG (v2f32 (IMPLICIT_DEF)), SPR:$Rm, ssub_0),
+ (i32 0))>;
+
+
// VQDMULH : Vector Saturating Doubling Multiply Returning High Half
defm VQDMULH : N3VInt_HS<0, 0, 0b1011, 0, N3RegFrm, IIC_VMULi16D, IIC_VMULi32D,
IIC_VMULi16Q, IIC_VMULi32Q,