[llvm-commits] [llvm] r145842 - in /llvm/trunk/lib/Target/ARM: ARMInstrFormats.td ARMInstrNEON.td

Chad Rosier mcrosier at apple.com
Mon Dec 5 12:06:57 PST 2011


Test case?

 Chad

On Dec 5, 2011, at 11:55 AM, Jim Grosbach wrote:

> Author: grosbach
> Date: Mon Dec  5 13:55:46 2011
> New Revision: 145842
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=145842&view=rev
> Log:
> 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
> 
> Modified:
>    llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
>    llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
> 
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrFormats.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrFormats.td?rev=145842&r1=145841&r2=145842&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrFormats.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrFormats.td Mon Dec  5 13:55:46 2011
> @@ -231,6 +231,8 @@
>       : InstAlias<Asm, Result, Emit>, Requires<[HasVFP2]>;
> class VFP3InstAlias<string Asm, dag Result, bit Emit = 0b1>
>       : InstAlias<Asm, Result, Emit>, Requires<[HasVFP3]>;
> +class NEONInstAlias<string Asm, dag Result, bit Emit = 0b1>
> +      : InstAlias<Asm, Result, Emit>, Requires<[HasNEON]>;
> 
> //===----------------------------------------------------------------------===//
> // ARM Instruction templates.
> 
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrNEON.td?rev=145842&r1=145841&r2=145842&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrNEON.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrNEON.td Mon Dec  5 13:55:46 2011
> @@ -3672,6 +3672,15 @@
> 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),
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list