]> granicus.if.org Git - clang/commitdiff
[AArch64] Add support for NEON scalar negate instruction.
authorChad Rosier <mcrosier@codeaurora.org>
Wed, 16 Oct 2013 21:04:53 +0000 (21:04 +0000)
committerChad Rosier <mcrosier@codeaurora.org>
Wed, 16 Oct 2013 21:04:53 +0000 (21:04 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192845 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/arm_neon.td
lib/CodeGen/CGBuiltin.cpp
test/CodeGen/aarch64-neon-intrinsics.c

index bc989cde6718c7617f1905a4a2a83adae4353932..56b7e9c15b4e90a76fa5ddfd6e08ac9a09e2e209 100644 (file)
@@ -863,6 +863,10 @@ def SCALAR_ABS : SInst<"vabs", "ss", "Sl">;
 // Scalar Signed Saturating Absolute Value
 def SCALAR_SQABS : SInst<"vqabs", "ss", "ScSsSiSl">;
 
+////////////////////////////////////////////////////////////////////////////////
+// Scalar Negate
+def SCALAR_NEG : SInst<"vneg", "ss", "Sl">;
+
 ////////////////////////////////////////////////////////////////////////////////
 // Scalar Signed Saturating Negate
 def SCALAR_SQNEG : SInst<"vqneg", "ss", "ScSsSiSl">;
index 74ff2dd46399897ea4d7a95d0b32126e4cc22c28..36829391e53a2305bd1218b1da1345eac07b253d 100644 (file)
@@ -2085,6 +2085,10 @@ static Value *EmitAArch64ScalarBuiltinExpr(CodeGenFunction &CGF,
   case AArch64::BI__builtin_neon_vqabsd_s64:
     Int = Intrinsic::arm_neon_vqabs;
     s = "vqabs"; OverloadInt = true; break;
+  // Scalar Negate
+  case AArch64::BI__builtin_neon_vnegd_s64:
+    Int = Intrinsic::aarch64_neon_vneg;
+    s = "vneg"; OverloadInt = false; break;
   // Scalar Signed Saturating Negate
   case AArch64::BI__builtin_neon_vqnegb_s8:
   case AArch64::BI__builtin_neon_vqnegh_s16:
index 37fb3775c3ef8ff38f7e2b1d239df0875b22ac0b..d3fd0cd585ea7ed75f092265b663620c73a47d6f 100644 (file)
@@ -7148,6 +7148,12 @@ int64_t test_vqabsd_s64(int64_t a) {
   return (int64_t)vqabsd_s64(a);
 }
 
+int64_t test_vnegd_s64(int64_t a) {
+// CHECK: test_vnegd_s64
+// CHECK: neg {{d[0-9]+}}, {{d[0-9]+}}
+  return (int64_t)vnegd_s64(a);
+}
+
 int8_t test_vqnegb_s8(int8_t a) {
 // CHECK: test_vqnegb_s8
 // CHECK: sqneg {{b[0-9]+}}, {{b[0-9]+}}