Add the __qdbl intrinsic to the arm_acle.h header
authorRenato Golin <renato.golin@linaro.org>
Thu, 3 Jul 2014 10:14:52 +0000 (10:14 +0000)
committerRenato Golin <renato.golin@linaro.org>
Thu, 3 Jul 2014 10:14:52 +0000 (10:14 +0000)
Patch by: Moritz Roth

llvm-svn: 212264

clang/lib/Headers/arm_acle.h
clang/test/CodeGen/arm_acle.c

index ed48d80..ef8de37 100644 (file)
@@ -90,6 +90,11 @@ static __inline__ int32_t __attribute__((always_inline, nodebug))
   __qsub(int32_t t, int32_t v) {
   return __builtin_arm_qsub(t, v);
 }
+
+static __inline__ int32_t __attribute__((always_inline, nodebug))
+__qdbl(int32_t t) {
+  return __builtin_arm_qadd(t, t);
+}
 #endif
 
 /* CRC32 intrinsics */
index f766a8b..88d58a4 100644 (file)
@@ -66,6 +66,15 @@ int32_t test_qadd(int32_t a, int32_t b) {
 int32_t test_qsub(int32_t a, int32_t b) {
   return __qsub(a, b);
 }
+
+extern int32_t f();
+// AArch32-LABEL: test_qdbl
+// AArch32: [[VAR:%[a-z0-9]+]] = {{.*}} call {{.*}} @f
+// AArch32-NOT: call {{.*}} @f
+// AArch32: call i32 @llvm.arm.qadd(i32 [[VAR]], i32 [[VAR]])
+int32_t test_qdbl() {
+  return __qdbl(f());
+}
 #endif
 
 /* CRC32 intrinsics */