From patchwork Mon Aug 4 16:49:01 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyrylo Tkachov X-Patchwork-Id: 376386 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 00851140080 for ; Tue, 5 Aug 2014 02:49:22 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; q=dns; s=default; b=UdQ0aLAbmh4V0oq2bSIZEXgKQughmGiAgx3Fxr/Kw11 jKiT3xDbdMIGRXDhP6S+jSxhuLcW2lrXglIoBdwl3HIwuBg6xoe8LF/bEWD2xrDw 3U4jAaGJP7NEB6mL1B/6NuOgcji7dE4ZPAhDco1io7a6UlTInUdo5+KFyzeD7Sc8 = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; s=default; bh=PWJPfQCOvHDc0Tz7ge2NUq9c3C8=; b=ki5aB61IX6dRSkg7K giZhEvOlMDCnPm8+IspGlmrnUrsHbt2Tc6cTOAn8uW1tfy4HRJ5pvmkj5y/kNzdp xkdU8fkPPeG0X2C5jLbP1BYRZlLcq0+i8x546lWgIhg2OQ61SsZ3aOxnIWyaRrtm AFs0dNucqIPY332Pz+q5ntzRxs= Received: (qmail 14328 invoked by alias); 4 Aug 2014 16:49:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 14317 invoked by uid 89); 4 Aug 2014 16:49:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 X-HELO: service87.mimecast.com Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 04 Aug 2014 16:49:05 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Mon, 04 Aug 2014 17:49:02 +0100 Received: from [10.1.208.24] ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 4 Aug 2014 17:49:01 +0100 Message-ID: <53DFB97D.1030500@arm.com> Date: Mon, 04 Aug 2014 17:49:01 +0100 From: Kyrill Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: GCC Patches CC: Marcus Shawcroft , Richard Earnshaw Subject: [PATCH][AArch64] Fix types for vqdmlals_lane_s32 and vqdmlsls_lane_s32 intrinsics X-MC-Unique: 114080417490200201 X-IsSubscribed: yes Hi all, Now that uint64x1_t and uint64_t are not interchangeable these intrinsics have an incorrect type. The reason is that these intrinsics should have had the scalar type for some of their arguments and results according to the NEON intrinsics spec. This patch fixes that and updates the relevant tests. Tested on aarch64-none-elf and bootstrapped on aarch64-linux. Ok for trunk? 2014-08-04 Kyrylo Tkachov * config/aarch64/arm_neon.h (vqdmlals_lane_s32): Use scalar types rather than singleton vectors. (vqdmlsls_lane_s32): Likewise. 2014-08-04 Kyrylo Tkachov * gcc.target/aarch64/scalar_intrinsics.c (test_vqdmlals_lane_s32): Fix types. (test_vqdmlsls_lane_s32): Likewise. * gcc.target/aarch64/simd/vqdmlals_lane_s32.c: Likewise. * gcc.target/aarch64/simd/vqdmlsls_lane_s32.c: Likewise. commit 4ad448d1d1d6f2c3376a04ab29b7d719870c932c Author: Kyrylo Tkachov Date: Thu Jun 26 10:34:04 2014 +0100 [AArch64] Fix vqdmlsls_lane_s32 and vqdmlals_lane_s32 types diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index b466b0e..7807181 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -19453,11 +19453,10 @@ vqdmlals_s32 (int64_t __a, int32x1_t __b, int32x1_t __c) return __builtin_aarch64_sqdmlalsi (__a, __b, __c); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vqdmlals_lane_s32 (int64x1_t __a, int32x1_t __b, int32x2_t __c, const int __d) +__extension__ static __inline int64_t __attribute__ ((__always_inline__)) +vqdmlals_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d) { - return (int64x1_t) - {__builtin_aarch64_sqdmlal_lanesi (__a[0], __b, __c, __d)}; + return __builtin_aarch64_sqdmlal_lanesi (__a, __b, __c, __d); } __extension__ static __inline int64_t __attribute__ ((__always_inline__)) @@ -19592,10 +19591,10 @@ vqdmlsls_s32 (int64_t __a, int32x1_t __b, int32x1_t __c) return __builtin_aarch64_sqdmlslsi (__a, __b, __c); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vqdmlsls_lane_s32 (int64x1_t __a, int32x1_t __b, int32x2_t __c, const int __d) +__extension__ static __inline int64_t __attribute__ ((__always_inline__)) +vqdmlsls_lane_s32 (int64_t __a, int32_t __b, int32x2_t __c, const int __d) { - return (int64x1_t) {__builtin_aarch64_sqdmlsl_lanesi (__a[0], __b, __c, __d)}; + return __builtin_aarch64_sqdmlsl_lanesi (__a, __b, __c, __d); } __extension__ static __inline int64_t __attribute__ ((__always_inline__)) diff --git a/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c b/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c index 624348e..afdbf01 100644 --- a/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c +++ b/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c @@ -390,8 +390,8 @@ test_vqdmlals_s32 (int64_t a, int32x1_t b, int32x1_t c) /* { dg-final { scan-assembler-times "\\tsqdmlal\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */ -int64x1_t -test_vqdmlals_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c) +int64_t +test_vqdmlals_lane_s32 (int64_t a, int32_t b, int32x2_t c) { return vqdmlals_lane_s32 (a, b, c, 1); } @@ -422,8 +422,8 @@ test_vqdmlsls_s32 (int64_t a, int32x1_t b, int32x1_t c) /* { dg-final { scan-assembler-times "\\tsqdmlsl\\td\[0-9\]+, s\[0-9\]+, v" 1 } } */ -int64x1_t -test_vqdmlsls_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c) +int64_t +test_vqdmlsls_lane_s32 (int64_t a, int32_t b, int32x2_t c) { return vqdmlsls_lane_s32 (a, b, c, 1); } diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c b/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c index ef94e95..38352c5 100644 --- a/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c +++ b/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c @@ -5,8 +5,8 @@ #include "arm_neon.h" -int64x1_t -t_vqdmlals_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c) +int64_t +t_vqdmlals_lane_s32 (int64_t a, int32_t b, int32x2_t c) { return vqdmlals_lane_s32 (a, b, c, 0); } diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c b/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c index 9e351bc..3c60898 100644 --- a/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c +++ b/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c @@ -5,8 +5,8 @@ #include "arm_neon.h" -int64x1_t -t_vqdmlsls_lane_s32 (int64x1_t a, int32x1_t b, int32x2_t c) +int64_t +t_vqdmlsls_lane_s32 (int64_t a, int32_t b, int32x2_t c) { return vqdmlsls_lane_s32 (a, b, c, 0); }