[llvm-commits] [PATCH] ARM: Add vaddl/vsubl intrinsics

Renato Golin rengolin at systemcall.org
Tue Dec 18 11:52:52 PST 2012


Hi Pete,

+def NEONvaddls    : SDNode<"ARMISD::VADDLs", SDTARMVMULL>;
+def NEONvaddlu    : SDNode<"ARMISD::VADDLu", SDTARMVMULL>;
+
+def NEONvsubls    : SDNode<"ARMISD::VSUBLs", SDTARMVMULL>;
+def NEONvsublu    : SDNode<"ARMISD::VSUBLu", SDTARMVMULL>;

I think renaming SDTARMVMULL to something more generic would make more
sense here.


+def : Pat<(v4i32 (NEONvaddlu (v4i16 DPR:$src1), (v4i16 DPR:$src2))),
+          (v4i32 (VADDLuv4i32 (v4i16 DPR:$src1), (v4i16 DPR:$src2)))>;
+def : Pat<(v8i16 (NEONvaddlu (v8i8 DPR:$src1), (v8i8 DPR:$src2))),
+          (v8i16 (VADDLuv8i16 (v8i8 DPR:$src1), (v8i8 DPR:$src2)))>;
+def : Pat<(v2i64 (NEONvaddlu (v2i32 DPR:$src1), (v2i32 DPR:$src2))),
+          (v2i64 (VADDLuv2i64 (v2i32 DPR:$src1), (v2i32 DPR:$src2)))>;

I'm not a tablegen expert, but I think there's a better way of doing
this... Tim, can you comment on that?

Overall, I think it's a good addition and you have provided many
tests, which is always good.

cheers,
--renato



On 18 December 2012 04:49, Pete Couperus <pjcoup at gmail.com> wrote:
> Hello,
>
> This patch adds support for the llvm.arm.neon.vaddl[su].* and
> llvm.arm.neon.vsub[su].* intrinsics.
> Note, there are other long NEON instructions lacking intrinsics
> support, I just came across a need for vaddl first.
> Please review!
> Thanks,
>
> Pete
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
cheers,
--renato

http://systemcall.org/



More information about the llvm-commits mailing list