Add support for vmul_p8 Neon intrinsic. Radar 8446141.

llvm-svn: 120812
This commit is contained in:
Bob Wilson 2010-12-03 17:29:39 +00:00
parent 4dcf83cbd5
commit 7795599f4b
2 changed files with 6 additions and 1 deletions

View 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>;

View 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);