From patchwork Thu Feb 3 10:50:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 50704 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 46DEB3858D37 for ; Thu, 3 Feb 2022 10:52:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 46DEB3858D37 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1643885540; bh=Zh2xZAdqTomHAo7oWDI1V9EoiL2dYhPoMAGQFk9hyXE=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=tMjr1FatHvmWyaywWVnT8qkknEMws2HX2v3wE7sRNrDoXmgABBL3bBaWkbQT8DONP dDFWqAjtvUbHhcVxDLfSaH/uovJdKYIhtZD8IROFHBKkvCEfuk8f+s4F7hCGl+gaEJ EbojnJbxfTChphRy6UCROiXuoqOTWJXvJ2RDUPCA= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 7BAAF3858D37 for ; Thu, 3 Feb 2022 10:50:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7BAAF3858D37 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 35F59113E for ; Thu, 3 Feb 2022 02:50:27 -0800 (PST) Received: from localhost (unknown [10.32.98.88]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CE2E03F774 for ; Thu, 3 Feb 2022 02:50:26 -0800 (PST) To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: [pushed] aarch64: Adjust tests after fix for PR102659 Date: Thu, 03 Feb 2022 10:50:25 +0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_NUMSUBJECT, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Sandiford via Gcc-patches From: Richard Sandiford Reply-To: Richard Sandiford Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" After the fix for PR102659, the vectoriser can no longer group conditional accesses of the form: for (int i = 0; i < n; ++i) if (...) ...a[i * 2] + a[i * 2 + 1]...; on LP64 targets. It has to treat them as two independent gathers instead. This was causing failures in the sve mask_struct*.c tests. The tests weren't really testing that int iterators could be used, so this patch switches to pointer-sized iterators instead. Tested on aarch64-linux-gnu & pushed. Richard gcc/testsuite/ * gcc.target/aarch64/sve/mask_struct_load_1.c: Use intptr_t iterators instead of int iterators. * gcc.target/aarch64/sve/mask_struct_load_2.c: Likewise. * gcc.target/aarch64/sve/mask_struct_load_3.c: Likewise. * gcc.target/aarch64/sve/mask_struct_load_4.c: Likewise. * gcc.target/aarch64/sve/mask_struct_load_5.c: Likewise. * gcc.target/aarch64/sve/mask_struct_load_6.c: Likewise. * gcc.target/aarch64/sve/mask_struct_load_7.c: Likewise. * gcc.target/aarch64/sve/mask_struct_load_8.c: Likewise. * gcc.target/aarch64/sve/mask_struct_store_1.c: Likewise. * gcc.target/aarch64/sve/mask_struct_store_2.c: Likewise. * gcc.target/aarch64/sve/mask_struct_store_3.c: Likewise. * gcc.target/aarch64/sve/mask_struct_store_4.c: Likewise. --- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_2.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_3.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_4.c | 6 +++--- 12 files changed, 25 insertions(+), 25 deletions(-) diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c index 03b2b93df07..450fbb887e3 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_1.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_2 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = src[i * 2] + src[i * 2 + 1]; \ } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_2.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_2.c index 87ac3178be0..499abd7c99a 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_2.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_3 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = (src[i * 3] \ + src[i * 3 + 1] \ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c index 54806f93ad9..a5ce0716322 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_3.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_4 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = (src[i * 4] \ + src[i * 4 + 1] \ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c index 4c73004f68d..bdfea964f88 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_4.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_3 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = src[i * 3] + src[i * 3 + 2]; \ } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c index 2a33ee81d1a..299955a8a93 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_4 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = src[i * 4] + src[i * 4 + 3]; \ } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c index d4542eca0f7..999c7b52422 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_6.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_2 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = src[i * 2]; \ } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c index 9d26e15c0d9..57d71ed460a 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_7.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_3 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = src[i * 3] + src[i * 3 + 1]; \ } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c index 17fd4c0a079..1ead3ba695e 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_8.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_4 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ if (cond[i]) \ dest[i] = src[i * 4] + src[i * 4 + 2]; \ } diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1.c index a75a694f9c3..39fae68a5d0 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_2 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, INTYPE bias, int n) \ + MASKTYPE *__restrict cond, INTYPE bias, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ { \ INTYPE value = src[i] + bias; \ if (cond[i]) \ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2.c index 0fd35f2ff52..0fe9b993402 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_3 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, INTYPE bias, int n) \ + MASKTYPE *__restrict cond, INTYPE bias, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ { \ INTYPE value = src[i] + bias; \ if (cond[i]) \ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_3.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_3.c index 1765d54a483..a9430870eee 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_3.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_3.c @@ -6,9 +6,9 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_4 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, INTYPE bias, int n) \ + MASKTYPE *__restrict cond, INTYPE bias, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ { \ INTYPE value = src[i] + bias; \ if (cond[i]) \ diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_4.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_4.c index 59e9ee49c4a..d3f0216406d 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_4.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_4.c @@ -6,15 +6,15 @@ #define TEST_LOOP(NAME, OUTTYPE, INTYPE, MASKTYPE) \ void __attribute__ ((noinline, noclone)) \ NAME##_2 (OUTTYPE *__restrict dest, INTYPE *__restrict src, \ - MASKTYPE *__restrict cond, int n) \ + MASKTYPE *__restrict cond, intptr_t n) \ { \ - for (int i = 0; i < n; ++i) \ + for (intptr_t i = 0; i < n; ++i) \ { \ if (cond[i] < 8) \ dest[i * 2] = src[i]; \ if (cond[i] > 2) \ dest[i * 2 + 1] = src[i]; \ - } \ + } \ } #define TEST2(NAME, OUTTYPE, INTYPE) \