From: Jim Grosbach Date: Mon, 5 Dec 2011 19:55:46 +0000 (+0000) Subject: ARM assmebler parsing for two-operand VMUL instructions. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=afb500ace12698a99daa5d7c10bfedcbfef48022;p=oota-llvm.git ARM assmebler parsing for two-operand VMUL instructions. Combined destination and first source operand for f32 variant of the VMUL (by scalar) instruction. rdar://10522016 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145842 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/ARMInstrFormats.td b/lib/Target/ARM/ARMInstrFormats.td index e5cda4ec88a..a0d04c03fc2 100644 --- a/lib/Target/ARM/ARMInstrFormats.td +++ b/lib/Target/ARM/ARMInstrFormats.td @@ -231,6 +231,8 @@ class VFP2InstAlias : InstAlias, Requires<[HasVFP2]>; class VFP3InstAlias : InstAlias, Requires<[HasVFP3]>; +class NEONInstAlias + : InstAlias, Requires<[HasNEON]>; //===----------------------------------------------------------------------===// // ARM Instruction templates. diff --git a/lib/Target/ARM/ARMInstrNEON.td b/lib/Target/ARM/ARMInstrNEON.td index 25346295428..e7ff1d659bd 100644 --- a/lib/Target/ARM/ARMInstrNEON.td +++ b/lib/Target/ARM/ARMInstrNEON.td @@ -3672,6 +3672,15 @@ def VMULslfd : N3VDSL<0b10, 0b1001, IIC_VBIND, "vmul", "f32", v2f32, fmul>; def VMULslfq : N3VQSL<0b10, 0b1001, IIC_VBINQ, "vmul", "f32", v4f32, v2f32, fmul>; +// Two-operand aliases. +def : NEONInstAlias<"vmul${p}.f32 $Ddn $Dm$lane", + (VMULslfd DPR:$Ddn, DPR:$Ddn, DPR_VFP2:$Dm, + VectorIndex32:$lane, pred:$p)>; +def : NEONInstAlias<"vmul${p}.f32 $Qdn $Dm$lane", + (VMULslfq QPR:$Qdn, QPR:$Qdn, DPR_VFP2:$Dm, + VectorIndex32:$lane, pred:$p)>; + + def : Pat<(v8i16 (mul (v8i16 QPR:$src1), (v8i16 (NEONvduplane (v8i16 QPR:$src2), imm:$lane)))), (v8i16 (VMULslv8i16 (v8i16 QPR:$src1),