[PATCH] Implement AArch64 SISD intrinsics for vget_high and vget_low

Tim Northover t.p.northover at gmail.com
Thu Nov 21 06:01:51 PST 2013


Hi Jiangning,

On 18 November 2013 10:48, Jiangning Liu <liujiangning1 at gmail.com> wrote:
> Attached patch is to implement AArch64 SISD intrinsics for vget_high and
> vget_low.

+def Neon_High2D  : PatFrag<(ops node:$in),
+                           (extract_subvector (v2i64 node:$in), (iPTR 1))>;
+def Neon_High2d  : PatFrag<(ops node:$in),
+                           (extract_subvector (v2f64 node:$in), (iPTR 1))>;

These two should not be named so similarly. There's also (existing,
but shouldn't) capitalisation confusion in that area: Neon_High vs
Neon_low.

+  def : Pat<(ResTy (GetLow VPR128:$Rn)),
+            (ResTy (DUPdv_D (OpTy VPR128:$Rn), 0))>;

This should be a simple EXTRACT_SUBREG shouldn't it? That way the
register allocator can almost certainly remove it completely. In
particular I'd expect all of your tests to be empty functions: "ret"
only.

Cheers.

Tim.



More information about the llvm-commits mailing list