From: Bob Wilson Date: Wed, 8 Dec 2010 21:39:47 +0000 (+0000) Subject: Stop using clang builtins for Neon vabdl and vabal intrinsics. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a4cc79994b2f12663143dc31ceaf198e703fb914;p=clang Stop using clang builtins for Neon vabdl and vabal intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121288 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/arm_neon.td b/include/clang/Basic/arm_neon.td index c445808598..0b181e8abb 100644 --- a/include/clang/Basic/arm_neon.td +++ b/include/clang/Basic/arm_neon.td @@ -62,7 +62,9 @@ def OP_REV64 : Op; def OP_REV32 : Op; def OP_REV16 : Op; def OP_REINT : Op; +def OP_ABDL : Op; def OP_ABA : Op; +def OP_ABAL : Op; class Inst { string Name = n; @@ -167,9 +169,9 @@ def VTST : WInst<"vtst", "udd", "csiUcUsUiPcQcQsQiQUcQUsQUiQPc">; //////////////////////////////////////////////////////////////////////////////// // E.3.5 Absolute Difference def VABD : SInst<"vabd", "ddd", "csiUcUsUifQcQsQiQUcQUsQUiQf">; -def VABDL : SInst<"vabdl", "wdd", "csiUcUsUi">; +def VABDL : Inst<"vabdl", "wdd", "csiUcUsUi", OP_ABDL>; def VABA : Inst<"vaba", "dddd", "csiUcUsUiQcQsQiQUcQUsQUi", OP_ABA>; -def VABAL : SInst<"vabal", "wwdd", "csiUcUsUi">; +def VABAL : Inst<"vabal", "wwdd", "csiUcUsUi", OP_ABAL>; //////////////////////////////////////////////////////////////////////////////// // E.3.6 Max/Min diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index 4ff029a0e4..9dec317170 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -1181,27 +1181,10 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID, unsigned Int; switch (BuiltinID) { default: return 0; - case ARM::BI__builtin_neon_vabal_v: { - Ops[0] = Builder.CreateBitCast(Ops[0], Ty); - SmallVector Args; - Args.push_back(Ops[1]); - Args.push_back(Ops[2]); - Int = usgn ? Intrinsic::arm_neon_vabdu : Intrinsic::arm_neon_vabds; - const llvm::Type *DTy =llvm::VectorType::getTruncatedElementVectorType(VTy); - Ops[1] = EmitNeonCall(CGM.getIntrinsic(Int, &DTy, 1), Args, "vabal"); - Ops[1] = Builder.CreateZExt(Ops[1], Ty); - return Builder.CreateAdd(Ops[0], Ops[1], "vabal"); - } case ARM::BI__builtin_neon_vabd_v: case ARM::BI__builtin_neon_vabdq_v: Int = usgn ? Intrinsic::arm_neon_vabdu : Intrinsic::arm_neon_vabds; return EmitNeonCall(CGM.getIntrinsic(Int, &Ty, 1), Ops, "vabd"); - case ARM::BI__builtin_neon_vabdl_v: { - Int = usgn ? Intrinsic::arm_neon_vabdu : Intrinsic::arm_neon_vabds; - const llvm::Type *DTy =llvm::VectorType::getTruncatedElementVectorType(VTy); - Ops[0] = EmitNeonCall(CGM.getIntrinsic(Int, &DTy, 1), Ops, "vabdl"); - return Builder.CreateZExt(Ops[0], Ty, "vabdl"); - } case ARM::BI__builtin_neon_vabs_v: case ARM::BI__builtin_neon_vabsq_v: return EmitNeonCall(CGM.getIntrinsic(Intrinsic::arm_neon_vabs, &Ty, 1),