]> granicus.if.org Git - clang/commitdiff
Add support for vmul_p8 Neon intrinsic. Radar 8446141.
authorBob Wilson <bob.wilson@apple.com>
Fri, 3 Dec 2010 17:29:39 +0000 (17:29 +0000)
committerBob Wilson <bob.wilson@apple.com>
Fri, 3 Dec 2010 17:29:39 +0000 (17:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120812 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/arm_neon.td
lib/CodeGen/CGBuiltin.cpp

index bddd826e1dba5c36f50705be788e0a6a040b8b25..cb60db62e98bdd04cac6b997b7e7c483d531f711 100644 (file)
@@ -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>;
index d28038c08b737a6f28a1491109d80e0193f2f5ab..68bfc759591b6729fea7c191f243203d9267704c 100644 (file)
@@ -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);