diff --git a/clang/include/clang/Basic/arm_neon.td b/clang/include/clang/Basic/arm_neon.td index 008558aa25fe..c44580859820 100644 --- a/clang/include/clang/Basic/arm_neon.td +++ b/clang/include/clang/Basic/arm_neon.td @@ -62,6 +62,7 @@ def OP_REV64 : Op; def OP_REV32 : Op; def OP_REV16 : Op; def OP_REINT : Op; +def OP_ABA : Op; class Inst { string Name = n; @@ -167,7 +168,7 @@ def VTST : WInst<"vtst", "udd", "csiUcUsUiPcQcQsQiQUcQUsQUiQPc">; // E.3.5 Absolute Difference def VABD : SInst<"vabd", "ddd", "csiUcUsUifQcQsQiQUcQUsQUiQf">; def VABDL : SInst<"vabdl", "wdd", "csiUcUsUi">; -def VABA : SInst<"vaba", "dddd", "csiUcUsUiQcQsQiQUcQUsQUi">; +def VABA : Inst<"vaba", "dddd", "csiUcUsUiQcQsQiQUcQUsQUi", OP_ABA>; def VABAL : SInst<"vabal", "wwdd", "csiUcUsUi">; //////////////////////////////////////////////////////////////////////////////// diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index d0bc709c54b2..4ff029a0e43d 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -1181,16 +1181,6 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID, unsigned Int; switch (BuiltinID) { default: return 0; - case ARM::BI__builtin_neon_vaba_v: - case ARM::BI__builtin_neon_vabaq_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; - Ops[1] = EmitNeonCall(CGM.getIntrinsic(Int, &Ty, 1), Args, "vaba"); - return Builder.CreateAdd(Ops[0], Ops[1], "vaba"); - } case ARM::BI__builtin_neon_vabal_v: { Ops[0] = Builder.CreateBitCast(Ops[0], Ty); SmallVector Args;