summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGBuiltin.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2013-10-15 21:19:02 +0000
committerChad Rosier <mcrosier@codeaurora.org>2013-10-15 21:19:02 +0000
commita70fb7b71664e6c1e712c635b9001dfd18581955 (patch)
tree7e79c943a810f789c544792ffbffac558bfcda8a /clang/lib/CodeGen/CGBuiltin.cpp
parent9d51708677e7113f2e57a3bf6c17f6989f28a1d1 (diff)
downloadbcm5719-llvm-a70fb7b71664e6c1e712c635b9001dfd18581955.tar.gz
bcm5719-llvm-a70fb7b71664e6c1e712c635b9001dfd18581955.zip
[AArch64] Add support for NEON scalar signed saturating absolute value and
scalar signed saturating negate instructions. llvm-svn: 192734
Diffstat (limited to 'clang/lib/CodeGen/CGBuiltin.cpp')
-rw-r--r--clang/lib/CodeGen/CGBuiltin.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index e5361eeebe2..361758c51b4 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -2074,6 +2074,20 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF,
case AArch64::BI__builtin_neon_vtstd_u64:
Int = Intrinsic::aarch64_neon_vtstd; s = "vtst";
OverloadInt = false; break;
+ // Scalar Signed Saturating Absolute Value
+ case AArch64::BI__builtin_neon_vqabsb_s8:
+ case AArch64::BI__builtin_neon_vqabsh_s16:
+ case AArch64::BI__builtin_neon_vqabss_s32:
+ case AArch64::BI__builtin_neon_vqabsd_s64:
+ Int = Intrinsic::arm_neon_vqabs;
+ s = "vqabs"; OverloadInt = true; break;
+ // Scalar Signed Saturating Negate
+ case AArch64::BI__builtin_neon_vqnegb_s8:
+ case AArch64::BI__builtin_neon_vqnegh_s16:
+ case AArch64::BI__builtin_neon_vqnegs_s32:
+ case AArch64::BI__builtin_neon_vqnegd_s64:
+ Int = Intrinsic::arm_neon_vqneg;
+ s = "vqneg"; OverloadInt = true; break;
}
if (!Int)
OpenPOWER on IntegriCloud