From: Bob Wilson Date: Fri, 3 Dec 2010 17:29:39 +0000 (+0000) Subject: Add support for vmul_p8 Neon intrinsic. Radar 8446141. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=953d513c7ee79b3d9e37597e64317e75c0fbf7f6;p=clang Add support for vmul_p8 Neon intrinsic. Radar 8446141. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120812 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/arm_neon.td b/include/clang/Basic/arm_neon.td index bddd826e1d..cb60db62e9 100644 --- a/include/clang/Basic/arm_neon.td +++ b/include/clang/Basic/arm_neon.td @@ -111,7 +111,8 @@ def VRADDHN : IInst<"vraddhn", "dww", "csiUcUsUi">; //////////////////////////////////////////////////////////////////////////////// // E.3.2 Multiplication -def VMUL : Inst<"vmul", "ddd", "csifUcUsUiPcQcQsQiQfQUcQUsQUiQPc", OP_MUL>; +def VMUL : Inst<"vmul", "ddd", "csifUcUsUiQcQsQiQfQUcQUsQUi", OP_MUL>; +def VMULP : SInst<"vmul", "ddd", "PcQPc">; def VMLA : Inst<"vmla", "dddd", "csifUcUsUiQcQsQiQfQUcQUsQUi", OP_MLA>; def VMLAL : SInst<"vmlal", "wwdd", "csiUcUsUi">; def VMLS : Inst<"vmls", "dddd", "csifUcUsUiQcQsQiQfQUcQUsQUi", OP_MLS>; diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index d28038c08b..68bfc75959 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -1537,6 +1537,10 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID, Ops[0] = Builder.CreateBitCast(Ops[0], QTy); return Builder.CreateTrunc(Ops[0], Ty, "vmovn"); } + case ARM::BI__builtin_neon_vmul_v: + assert(poly && "vmul builtin only supported for polynomial types"); + return EmitNeonCall(CGM.getIntrinsic(Intrinsic::arm_neon_vmulp, &Ty, 1), + Ops, "vmul"); case ARM::BI__builtin_neon_vmull_lane_v: { const llvm::Type *DTy =llvm::VectorType::getTruncatedElementVectorType(VTy); Ops[1] = Builder.CreateBitCast(Ops[1], DTy);