From patchwork Mon Feb 28 11:29:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 51440 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 C734A385843A for ; Mon, 28 Feb 2022 11:30:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C734A385843A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1646047807; bh=HXi+Dnivd5co1PtT/wAn09bk4K90sXGpmvVo42jJ2M4=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=UXCpoy6X87krUQsCduhdVXq0kS84fyNrtFCAeHlima8bAtz3TBA8ZS0uRTCRRCW8l CXfY+b7IPfPSFZq+Xi2Xo6TSijlJgKgtOeU4FOI9dLG/G2EnT8n9bulPE3u00fhbJc 8zxZ6pdDp1XtZEyZ7Wzjmsh2B9tzWQX4BXxqrjyY= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60083.outbound.protection.outlook.com [40.107.6.83]) by sourceware.org (Postfix) with ESMTPS id B33443858C60 for ; Mon, 28 Feb 2022 11:29:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B33443858C60 Received: from AM5PR1001CA0019.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:2::32) by DB6PR0802MB2405.eurprd08.prod.outlook.com (2603:10a6:4:9f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.26; Mon, 28 Feb 2022 11:29:28 +0000 Received: from VE1EUR03FT040.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:2:cafe::33) by AM5PR1001CA0019.outlook.office365.com (2603:10a6:206:2::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.23 via Frontend Transport; Mon, 28 Feb 2022 11:29:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT040.mail.protection.outlook.com (10.152.18.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.22 via Frontend Transport; Mon, 28 Feb 2022 11:29:28 +0000 Received: ("Tessian outbound 63bb5eb69ee8:v113"); Mon, 28 Feb 2022 11:29:28 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a540e7ef0bc5cd18 X-CR-MTA-TID: 64aa7808 Received: from 85f8993be9b7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4BE5B2AC-8861-438C-88D6-BF299C27AD19.1; Mon, 28 Feb 2022 11:29:20 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 85f8993be9b7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 28 Feb 2022 11:29:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GOABe2aqdTEvARy60ZWBjMRMnx7MjSvqB/Et4ryTsPmWprZj4Xe4AB73P7YQg0FjicHSQQnYBtA/W4TqF8y9Olor7mGL1g7fU4cTds597DEpYsBcz+zKwHO7dC4AgZnAO7YqQL739ZwsWT3osJgeR2ZgQOl6DxZws3QxEbVuqLFtHDNVRqJUx6q/XKHaT9f8k01FVyxqmOfoSSOluJCILdd0vs128q3eiDOADMAW4k9T1X37wvzWXAo/5BWF6FDNINtv2sqovwSfku41EPFK9a3xFAFUETAGy85yz7cox4Mc6idlOomviFdxZaBvroqSytim5YoVt9rVgDM4Ej4GcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HXi+Dnivd5co1PtT/wAn09bk4K90sXGpmvVo42jJ2M4=; b=IpzUy80Gk9EKvaMtFHToEI5N/alRd8hCEqmGvTGyfxyCxbjZwNOOyTczmzfjhirwz3cVzPtd0xQIXrf6YBnD67f3SUBlxNcZ9+ktfdUUKFd6RfkYFat9hhYscpOsieN9QbM7WjMRrbZQtpvE5YQdMLag46ivE1SbWalxhGOoDoinJGEzJPVgIMntyqS2tLFSIbBsXRf4BjmA2A3GhyZ6jy9FAgoDbXYJYUKNHA8PeTZB7ztHpY/X0DiZl/l7O9/YFi3tk6eosbaaQsSzgkYpwIldt+qC8wWCZ5eFELbjQ6d1AK4tlwN1cGQ0CwemRM7OtQBA40xlZBCJIb8V+qUG4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DB7PR08MB3260.eurprd08.prod.outlook.com (2603:10a6:5:21::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.26; Mon, 28 Feb 2022 11:29:18 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::a911:a778:877d:7bb2]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::a911:a778:877d:7bb2%9]) with mapi id 15.20.5017.026; Mon, 28 Feb 2022 11:29:18 +0000 Date: Mon, 28 Feb 2022 11:29:16 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH 1/2]middle-end Handle difference between complex negations in SLP tree better (GCC 11 backport) Message-ID: Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: LO4P123CA0208.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a5::15) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: d76e308a-326a-43ea-ae53-08d9faad94d5 X-MS-TrafficTypeDiagnostic: DB7PR08MB3260:EE_|VE1EUR03FT040:EE_|DB6PR0802MB2405:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ArkBNhaIELPSY4BTdaFhQFBijHqOHRiyZZ9SJmhPAb58Ul3tqGjJl4zyA9ia8v5pwdMxr+GYgFC/gKgpqEHR8ly/I/Eb5L7jd1K1bwH/ASBihDEgdqvFpx+ehg5+pED+5WEsfWH2Eu7tBYW+j9+oib64y6fKaupFWGkujHErULJR+MfnC4/e2+o4IOMCu2gr2fxKifT3h0pHmQi5oapFXH/rjenuXkwtN33GCr36BquaScmqxXd6SCwSR9kcdq63AAeXb8K0KIKrHnj/mmYZznPiZap34N3strRsowSI6NPONRS6xja4Tne49pYcatiddfuthlg9GzCc15mTJ2glbBzHVBofJuvgOiBXPWPdyWUEVPgOzkDZtmL9BZf6IN4LWuxFZYaihCNM9z4Ic2M0kLr+lBHiYnOVsDiOa/YcnOvNku0RhIFOixspubFKrsYpC+cvuMVCABCdEt4AaXwkGXuXKcyp9Aiwv7+J0Xgd86cozneIy3gdssocX+fH3Ncm8S9nPy5eP57wqywOH2UzuQUAS4wIEqEarjVgICFiVpqSiM/xoQv9jepCPfjA8oLtkAIxuTrdoTAwCXvFw+6z1kclFto/RfuaRp+j5R+F1psg6wEAbJGDK9wN7Qn7mL37hLArksRKM5xr1/COAOFHKcCwY5Ir9ZketPsRk/2k6ys/BYOfIb8j3ewjBIhLJiXnD9WfNGRM8hCiF1ZEQI8WOmUwMzuomZOpjE9CYfnC2kpccxECN6okdceDhDC+MoQiB8++c0ttt595cid38CHPUefNDy/71s+bDk0MZofaapc= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(2906002)(36756003)(44832011)(316002)(8936002)(235185007)(508600001)(26005)(186003)(2616005)(6486002)(52116002)(6512007)(44144004)(33964004)(6506007)(6916009)(38100700002)(38350700002)(86362001)(83380400001)(66556008)(66946007)(66476007)(4326008)(5660300002)(8676002)(4216001)(2700100001)(309714004); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3260 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT040.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dee18ebd-b25b-4a0b-689e-08d9faad8ec4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: q2mj/MCnsSYF1D1iiDGiXUmZDVNvbq4Ot8PYhlLnQ+a//veO1F2+XoycEN/cRx+q6Fa6JAVgGiBp0bb3i++hlHOi7k2ybnw1T2Q3iyqrjwnX0d2Aj3WGarOjMf1J+7fW4QiAB9mquTe63ouJVIDrg8blqFzy7CkLOY3TWp8zRFFzE//W0ZPI0MNN2RsnAb+J29xSqb3F2vubUeXrC3K1D7gMaa8b/TRlU7V6nZbGJFifoR3p/Mzrr3fizNaJWlNkD7MDajq4f4XL8ZRFlIfa+DbCw28/Qaj7sMS7G+e3V3B2dOqUO5UGavOvMHweOv/u1hx1HaZMZ7DyoPP+b09KfqoOvg2cD8/CfYq8rgcbw6W/FCRPsmzHQoZXFet7uRNs5PVKo5RIx5C0/dFg7/p/Bu90fVJ0/vetuWzzLs/kUKuApZmL01q8PmEDEV/4FcYWe2I2oL3JyxTBXv91J3CFfdG+n5532hX/+cwTVhR1gjM1dPM4aajGocXRn91ClI5d80WtgFeAeRT/SK3OeelmEM5A3UPw8BzcaL6M0yo3JsX9x057QXoORHUx7tkmoqyI/ngNXzTYy0Xt9IzG9l/e6SxF7631tFAmAUdm8BXU1i6xMS3E03siAMqc2z5gqhm5zgrZgtFKx6sE1DCPKZbfXdUyFpcIjzoKmK72SEPBjb8e3QpXrZcXeHTZwLJL16X42MSJshlzi4+1KILPGhuhcHxQc6ISQA1D8yfFE6EvW4gJHHcfLVppzBez2Ahs2pg2 X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(508600001)(235185007)(6486002)(82310400004)(2616005)(107886003)(6512007)(86362001)(2906002)(40460700003)(33964004)(44144004)(6506007)(44832011)(186003)(26005)(81166007)(336012)(47076005)(36860700001)(356005)(70206006)(83380400001)(8676002)(70586007)(6916009)(5660300002)(36756003)(8936002)(316002)(4326008)(4216001)(2700100001)(309714004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2022 11:29:28.1860 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d76e308a-326a-43ea-ae53-08d9faad94d5 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT040.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2405 X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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: Tamar Christina via Gcc-patches From: Tamar Christina Reply-To: Tamar Christina Cc: nd@arm.com, rguenther@suse.de Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi All, GCC 11 handled negations rather differently than GCC 12. This difference caused the previous backport to regress some of the conjugate cases that it used to handle before. The testsuite in GCC 11 wasn't as robust as that in master so it didn't catch it. The second patch in this series backports the testcases from master to GCC-11 to prevent this in the future. This patch deals with the conjugate cases correctly by updating the detection code to deal with the different order of operands. For MUL the problem is that the presence of an ADD can cause the order of the operands to flip, unlike in GCC 12. So to handle this if we detect the shape of a MUL but the data-flow check fails, we swap both operands and try again. Since a * b == b * a this is fine and allows us to keep the df-check simple. This doesn't cause a compile time issue either as most of the data will be in the caches from the previous call. Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no regressions on updated testsuite. Ok for GCC 11? Thanks, Tamar gcc/ChangeLog: * tree-vect-slp-patterns.c (vect_validate_multiplication): Correctly detect conjugate cases. (complex_mul_pattern::matches): Likewise. (complex_fma_pattern::matches): Move accumulator last as expected. (complex_fma_pattern::build): Likewise. (complex_fms_pattern::matches): Handle different conjugate form. --- inline copy of patch -- diff --git a/gcc/tree-vect-slp-patterns.c b/gcc/tree-vect-slp-patterns.c index a3bd90ff85b4ca5423a94388d480b66051a83e08..8b08a0f33dd1cd23ad9577243524c1feaa5e8ed9 100644 diff --git a/gcc/tree-vect-slp-patterns.c b/gcc/tree-vect-slp-patterns.c index a3bd90ff85b4ca5423a94388d480b66051a83e08..8b08a0f33dd1cd23ad9577243524c1feaa5e8ed9 100644 --- a/gcc/tree-vect-slp-patterns.c +++ b/gcc/tree-vect-slp-patterns.c @@ -873,10 +873,8 @@ compatible_complex_nodes_p (slp_compat_nodes_map_t *compat_cache, static inline bool vect_validate_multiplication (slp_tree_to_load_perm_map_t *perm_cache, slp_compat_nodes_map_t *compat_cache, - vec &left_op, - vec &right_op, - bool subtract, - enum _conj_status *_status) + vec &left_op, vec &right_op, + bool subtract, enum _conj_status *_status) { auto_vec ops; enum _conj_status stats = CONJ_NONE; @@ -902,29 +900,31 @@ vect_validate_multiplication (slp_tree_to_load_perm_map_t *perm_cache, /* Default to style and perm 0, most operations use this one. */ int style = 0; - int perm = subtract ? 1 : 0; + int perm = 0; - /* Check if we have a negate operation, if so absorb the node and continue - looking. */ + /* Determine which style we're looking at. We only have different ones + whenever a conjugate is involved. If so absorb the node and continue. */ bool neg0 = vect_match_expression_p (right_op[0], NEGATE_EXPR); bool neg1 = vect_match_expression_p (right_op[1], NEGATE_EXPR); - /* Determine which style we're looking at. We only have different ones - whenever a conjugate is involved. */ - if (neg0 && neg1) - ; - else if (neg0) - { - right_op[0] = SLP_TREE_CHILDREN (right_op[0])[0]; - stats = CONJ_FST; - if (subtract) - perm = 0; - } - else if (neg1) + /* Determine which style we're looking at. We only have different ones + whenever a conjugate is involved. */ + if (neg0 != neg1 && (neg0 || neg1)) { - right_op[1] = SLP_TREE_CHILDREN (right_op[1])[0]; - stats = CONJ_SND; - perm = 1; + unsigned idx = !!neg1; + right_op[idx] = SLP_TREE_CHILDREN (right_op[idx])[0]; + if (linear_loads_p (perm_cache, left_op[!!!neg1]) == PERM_EVENEVEN) + { + stats = CONJ_FST; + style = 1; + if (subtract && neg0) + perm = 1; + } + else + { + stats = CONJ_SND; + perm = 1; + } } *_status = stats; @@ -1069,7 +1069,16 @@ complex_mul_pattern::matches (complex_operation_t op, enum _conj_status status; if (!vect_validate_multiplication (perm_cache, compat_cache, left_op, right_op, false, &status)) - return IFN_LAST; + { + /* Try swapping the operands and trying again. */ + std::swap (left_op[0], left_op[1]); + right_op.truncate (0); + right_op.safe_splice (SLP_TREE_CHILDREN (muls[1])); + std::swap (right_op[0], right_op[1]); + if (!vect_validate_multiplication (perm_cache, compat_cache, left_op, + right_op, false, &status)) + return IFN_LAST; + } if (status == CONJ_NONE) ifn = IFN_COMPLEX_MUL; @@ -1089,7 +1098,7 @@ complex_mul_pattern::matches (complex_operation_t op, ops->quick_push (right_op[1]); ops->quick_push (left_op[0]); } - else if (kind == PERM_EVENEVEN && status != CONJ_SND) + else if (kind == PERM_EVENEVEN && status == CONJ_NONE) { ops->quick_push (left_op[0]); ops->quick_push (right_op[0]); @@ -1246,15 +1255,15 @@ complex_fma_pattern::matches (complex_operation_t op, if (ifn == IFN_COMPLEX_FMA) { - ops->quick_push (SLP_TREE_CHILDREN (vnode)[0]); ops->quick_push (SLP_TREE_CHILDREN (node)[1]); ops->quick_push (SLP_TREE_CHILDREN (node)[0]); + ops->quick_push (SLP_TREE_CHILDREN (vnode)[0]); } else { - ops->quick_push (SLP_TREE_CHILDREN (vnode)[0]); ops->quick_push (SLP_TREE_CHILDREN (node)[0]); ops->quick_push (SLP_TREE_CHILDREN (node)[1]); + ops->quick_push (SLP_TREE_CHILDREN (vnode)[0]); } return ifn; @@ -1290,8 +1299,8 @@ complex_fma_pattern::build (vec_info *vinfo) SLP_TREE_CHILDREN (*this->m_node).create (3); SLP_TREE_CHILDREN (*this->m_node).safe_splice (this->m_ops); + SLP_TREE_REF_COUNT (this->m_ops[0])++; SLP_TREE_REF_COUNT (this->m_ops[1])++; - SLP_TREE_REF_COUNT (this->m_ops[2])++; vect_free_slp_tree (node); @@ -1397,24 +1406,32 @@ complex_fms_pattern::matches (complex_operation_t op, if (!vect_pattern_validate_optab (ifn, *ref_node)) return IFN_LAST; + child = SLP_TREE_CHILDREN ((*ops)[1])[0]; ops->truncate (0); ops->create (4); complex_perm_kinds_t kind = linear_loads_p (perm_cache, right_op[0]); - if (kind == PERM_EVENODD) + if (kind == PERM_EVENODD || kind == PERM_TOP) { ops->quick_push (child); ops->quick_push (right_op[0]); ops->quick_push (right_op[1]); - ops->quick_push (left_op[1]); + ops->quick_push (left_op[0]); } - else + else if (status == CONJ_NONE) { ops->quick_push (child); ops->quick_push (right_op[1]); ops->quick_push (right_op[0]); ops->quick_push (left_op[0]); } + else + { + ops->quick_push (child); + ops->quick_push (right_op[1]); + ops->quick_push (right_op[0]); + ops->quick_push (left_op[1]); + } return ifn; } From patchwork Mon Feb 28 11:29:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 51441 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 9ECCB3858430 for ; Mon, 28 Feb 2022 11:31:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9ECCB3858430 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1646047872; bh=DE5DIjw4QO7o4UnEp7Cr90823xDmp3q9YG4nYDFteaw=; h=Date:To:Subject:In-Reply-To:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=ZHE19wSFjoEZbTf/hIH8dBnuKvdks2U0DQvyt361BlM0BG3FQrdRPnE3vUkda9tXk 6Dx4HoqyVTem0r9T+r6Vk3fT0DSI5umYig2yCCK41DisGRh92sQLGRyV2ESx5z2BeK rwscGEMd25gAiEW03rbw7tATpAw5Hg6rTiOzcKTQ= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20061.outbound.protection.outlook.com [40.107.2.61]) by sourceware.org (Postfix) with ESMTPS id 3400C385841F for ; Mon, 28 Feb 2022 11:29:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3400C385841F Received: from AM6P194CA0034.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:90::47) by PAXPR08MB7076.eurprd08.prod.outlook.com (2603:10a6:102:202::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.26; Mon, 28 Feb 2022 11:29:49 +0000 Received: from AM5EUR03FT056.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:90:cafe::8d) by AM6P194CA0034.outlook.office365.com (2603:10a6:209:90::47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.21 via Frontend Transport; Mon, 28 Feb 2022 11:29:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=timeout (key query timeout) header.d=armh.onmicrosoft.com;dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT056.mail.protection.outlook.com (10.152.17.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.22 via Frontend Transport; Mon, 28 Feb 2022 11:29:48 +0000 Received: ("Tessian outbound 741ca6c82739:v113"); Mon, 28 Feb 2022 11:29:48 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a474de43b5e4da4d X-CR-MTA-TID: 64aa7808 Received: from 2df67a665287.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 78B0DC94-43C8-49F7-94BE-FA217910B034.1; Mon, 28 Feb 2022 11:29:41 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2df67a665287.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 28 Feb 2022 11:29:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DxJHzy9NQSwB2L3ISdqLLMHXnxvqepgVsJJp1vqckWOQiJtCRCxSItXKXfVaIKiEkH78IlSnv2KwxEoBBcNzfIMMRsUA7S7omk2S7yTJeVCY3BaQn3dLB9RN4tkqw3q/BIXSyODzGPUBa2vaM/uqlfRvqKARH4MWibYkIgVEaM4JMNYYNj18E80zILoE0CXxvtNhRYYClNeyJ22+gHjAEFdmcqvFtPC6OQ6AnTA3vbmVJNinVvImSTX3VDz9nqHG23yQFQtd6Tc99dm1d26vkFmxHVcoP2CjFNDH+QmLZtbzzgeBMEpcACGfse5MBHtAF3B2U+I3dFXfTcfZD4K/Ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DE5DIjw4QO7o4UnEp7Cr90823xDmp3q9YG4nYDFteaw=; b=mD8gbX559EvGsmqSxqeGeEsZRali75ZFQAbIsz6ZF16wivrnA219lSkA39chc+88XdSRtDC1e8LOmFQZLj46vw2dH69suNVTrboTkF1hpD79qj/fjqU87yxlZH7n4aGDnC8IAULkiO8WSG85EmIJVgIxuHcVbslvQATIv3KdbIpSWLwrU1DV+qdTTNHdbwXcbdVhABiyam9Vlzpr62dWQOPcrHrzkZzc99aN5eWCKdBSR4mAQqebTeon5HoXZn3z/sMjfsoFxYLW5IrcNCYpPJByjyWO8PJs0udv+v0IKSuXM4hvAeC9rzOZE95CaNGAaoubJEr+2vzY6+Jfy1f/Lg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS8PR08MB7354.eurprd08.prod.outlook.com (2603:10a6:20b:445::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.21; Mon, 28 Feb 2022 11:29:36 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::a911:a778:877d:7bb2]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::a911:a778:877d:7bb2%9]) with mapi id 15.20.5017.026; Mon, 28 Feb 2022 11:29:36 +0000 Date: Mon, 28 Feb 2022 11:29:32 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH 2/2]middle-end Backport complex vect testsuite to GCC 11 Message-ID: <20220228112929.GA13209@arm.com> Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: LO2P265CA0310.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a5::34) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: cf71bff9-096d-4a0c-5393-08d9faada137 X-MS-TrafficTypeDiagnostic: AS8PR08MB7354:EE_|AM5EUR03FT056:EE_|PAXPR08MB7076:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: u+Y61ul5F8MGhux4SNEgdS4tnVrxi8bbwBj+mPKq881sb38/b0ycaQyMHBy/j3n7nsLR+/kFAf5gYjhve/W5qy0Ov4kYbIEplzpVZDEYQREVEh6ujBKFiPDnTbPyuI+nAiQuWYAfz+BXCc4GR/b74vQYWN+AS+YxGtXmO07uIiOkVzt1J5oiosWwFnLIOaPXL19tLLKLV7JxVHTKwOLOg5GRkEnorU6LgnGhXy1/gdVg50mnoeWXu/E563Jwo/eOiPwwkJauC9bu2qJUzlssvxluAVWrrW6dhglPvwZ5YDwHPtFNO7vUNZyMbd2mKlz7NCGgkB65hfOOuI2i8tERhtu9aAoJRPTfDiP1pqrgCsmGfUOhFVlwACNSeDa2eaiQVMVc5fL92xVtl38FGt1GHD+Pwl5ztgi3FO8XAA9X25oTV5snwBYYvk/D+dycDMRtOHjBQg1bGwmm79Bim+gWJqU98ENB1d+jbOO4eKHQ8NUn0pwR4VFTZBafDQ9m+q76SMlpBsrjslcWKqJ4T1rlq5yPSDhRiROkIr1KzX4C1z5khVhUt4eWpbgGIMFtfvTl64KZvN97NBZB+j87v5jIKNT3bnJAGu6iUjh/OO6wf+niFr7864TqN/v383m1Q0yFBnomNMRw0UlGQ7nPfqSFHIu5a0GL7/gEb9gDr7EFKo0/bTxq8p83Ul/bYKSAG5JtzTT1EkfCReVX3YPbxeiTuE/wOiYFANCZRdZ47/seKBskpESjqJSpi7mKPCtJCGSHEgA0HUgJ6pIhYGCJ1rTzW8CmeFXAo393I+GQl8AaFoiCAFbXsUs7wz8DdPvFdc0MWpgbx60hZdswAO14HmTW6E3fZtRfNco6CFD2I9KugfwU3RqWjkAcf0QFjOlcIopC X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(235185007)(2906002)(33656002)(30864003)(6666004)(316002)(8936002)(6506007)(6486002)(5660300002)(44144004)(33964004)(508600001)(86362001)(52116002)(66946007)(84970400001)(6916009)(66556008)(66476007)(83380400001)(8676002)(4326008)(36756003)(6512007)(38350700002)(38100700002)(44832011)(1076003)(2616005)(186003)(26005)(2004002)(2700100001)(559001)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7354 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: beddefa1-505d-4657-4350-08d9faad99ab X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UytCXFXOjvGhLcA+BabFt4CWBpnUspwWfY8k5YM0Xq+7UWZBjJy9/xWeBvHAL14WYsjNMI79LtEWwvWSwXTe/hdgXU1QVkoN80jdJYLk9EJA0PgUsX0Tq2pPupbc0KyLY+ELLE+KjdJw9FOiNtPCmEaC1Ej1ChfqvVceIwEP6x8fZ94JgIaPiIRf59Juuspw3Tzcd6HqBn51qSK38w7/1fWYbf4ZGcncfsPyUzmNXtZ/HPrs6H7m36/9QNM9T1K4qYr6Geox1PcEu3eTY3mSNRF6PBW8TsBgP2CML5kkEPmZGHGBFt8ioCizpJA+3aNePZ+cf4DySA79ra2RSuOZDTgy8kjSvaIR/1Z4L2wimtzZEe/0oiEucjj3K9ihWb8XFiW60kMu35d8Suj4G02obgq+gZKPnDPOoPklx77AB+HgwttkcI7zop1TRBn2F9Qn6vUag2ogRkwSnysKRRp6v3If6N1mG/siXrNd0G6oBPshp7R3hk5ujfqo6mRBA/ildHk5HobmLWjhmfgjIXxwElKZhBP8K+cqIS4P1bETfBgtOvE25GVPhLsU7UEwcQu7iKb6IRZP/K6DmQwbGN+t18/+WJ6AIgSGB5QH8+5YZCuTeY4oyv6Veo/s4Xqno8amG3OR8n9/dLlFK5UJkR9DMV1PJvWBJpnI75h2WjXOln3BpIGp5qb9wtleYXYyhkFJh1xWz3C55m4JFEdPaSmOQkVJPqQQb0dMYSBodVF8cqALYfaNcZyOCs/Gf85epZnjkDpcsnKQG4J6dP+Tc9DO8gA6JiGbBXX70uX6AyCfRKx6eGdYLtUtrj/xKNY10gSD4QGIdQsWG1dB2nzh3m4LXU4FXBd5rpfNu4eUAWRqMOI= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(2616005)(235185007)(36860700001)(6486002)(356005)(44832011)(26005)(36756003)(30864003)(2906002)(107886003)(47076005)(508600001)(44144004)(1076003)(86362001)(83380400001)(81166007)(82310400004)(316002)(6916009)(70206006)(70586007)(6512007)(6506007)(6666004)(186003)(33964004)(5660300002)(8936002)(336012)(84970400001)(40460700003)(8676002)(33656002)(4326008)(2004002)(2700100001)(579004)(559001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2022 11:29:48.9898 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cf71bff9-096d-4a0c-5393-08d9faada137 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7076 X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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: Tamar Christina via Gcc-patches From: Tamar Christina Reply-To: Tamar Christina Cc: nd@arm.com, rguenther@suse.de Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi All, The GCC 12 testsuite for complex numbers pattern recognition is a lot more exhaustive than the GCC 11 one. This backports the testsuite to GCC 11 so any further changes to the branch prevents regressions. Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no regressions. Ok for GCC-11? Thanks, Tamar gcc/testsuite/ChangeLog: * gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c: Update test cases to not be UNSUPPORTED. * gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c: Likewise. * gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c: Likewise. * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c: Likewise. * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c: Likewise. * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c: Likewise. * gcc.dg/vect/complex/complex-add-pattern-template.c: Likewise. * gcc.dg/vect/complex/complex-add-template.c: Likewise. * gcc.dg/vect/complex/complex-operations-run.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c: Likewise. * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-add-double.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-add-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-add-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mla-double.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mla-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mla-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mls-double.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mls-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mls-half-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mul-double.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mul-float.c: Likewise. * gcc.dg/vect/complex/fast-math-complex-mul-half-float.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-byte.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-int.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-long.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-short.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c: Likewise. * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c: Likewise. * gcc.dg/vect/complex/complex.exp: Copyright year update. --- inline copy of patch -- diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c index 8eba24dc187895150ee3515d5bd2a35b46528388..cead05f1cc4e02790630a6cbfe8378c2de3778f3 100644 diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c index 8eba24dc187895150ee3515d5bd2a35b46528388..cead05f1cc4e02790630a6cbfe8378c2de3778f3 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c @@ -1,12 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ #define TYPE int32_t #define N 16 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_int } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c index 9275ff12e0cc4fd643c3d60d1a5ce51cd3550833..0d21f57666ed9ff918dad343cbe53fbbdd271630 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE int64_t #define N 16 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_long } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c index 8cbbdb825ddb616cc9c3ac7c0b62ad53e0e54045..8928386a5174154719fbc86c6f11d5f886cf1f4a 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE int16_t #define N 16 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_short } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c index 270c49efbf95ffbc21ff5c3b7ae34280fa1b6059..4ab4b9a446a8f13c052a569aa694016b22bb2b3b 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint32_t #define N 16 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_int } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c index 88144e52014d86842b16520b0940123d5448459c..38aa9c0b9d51d38e5c28c1e81ef082e0c568c8f8 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c @@ -1,12 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint64_t #define N 16 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_long } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c index 445af3943d318c4daa69334fa6c1095592e2dec0..8846c9889fb64cdba614553e70052901039f1752 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c @@ -1,12 +1,17 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint16_t #define N 16 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_short } && ! target { aarch64_sve2 } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c index a99a9296194472c42fed84376c4a48853073c7fd..658af294f1c81ab28fb961202e165ea8813dff88 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c @@ -1,5 +1,8 @@ void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=2) { c[i] = a[i] - b[i+1]; @@ -11,6 +14,9 @@ void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=2) { c[i] = a[i] + b[i+1]; @@ -22,6 +28,9 @@ void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=4) { c[i] = a[i] - b[i+1]; @@ -34,6 +43,9 @@ void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < (N /2); i+=4) { c[i] = a[i] - b[i+1]; @@ -48,6 +60,9 @@ void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict N], void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N], TYPE d[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i+=2) { c[i] = a[i] - b[i+1]; @@ -57,4 +72,4 @@ void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N], } } -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c index 32c81e64f627b0f529e6a9129bd7ceeff727a662..f37ab98813faebfbde96fedf647099468609bfd4 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c @@ -3,6 +3,9 @@ void add0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + b[i]; } @@ -10,6 +13,9 @@ void add0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + (b[i] * I); } @@ -19,6 +25,9 @@ void add90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + (b[i] * I * I); } @@ -26,6 +35,9 @@ void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + (b[i] * I * I * I); } @@ -35,6 +47,9 @@ void add270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = (a[i] * I) + b[i]; } @@ -44,6 +59,9 @@ void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = (a[i] * I * I) + b[i]; } @@ -51,6 +69,9 @@ void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void add270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = (a[i] * I * I * I) + b[i]; } @@ -60,6 +81,9 @@ void add270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = ~a[i] + b[i]; } @@ -67,6 +91,9 @@ void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void addconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = a[i] + ~b[i]; } @@ -74,6 +101,9 @@ void addconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], void addconjboth (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], _Complex TYPE c[restrict N]) { +#if defined (UNROLL) +#pragma GCC unroll 16 +#endif for (int i=0; i < N; i++) c[i] = ~a[i] + ~b[i]; } diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c index a0348a7041ca384104bc5ab688d941c14e5b7381..14ac512a8efa4d9af8cd274d995a8e642ac9f10f 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c +++ b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c @@ -1,7 +1,7 @@ /* { dg-do run } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #include #include diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex.exp b/gcc/testsuite/gcc.dg/vect/complex/complex.exp index f94c7a8ee07c3c39670064e77b94451183871253..ea6bfcdf62f0869674a76fc8bbafab54c91d8280 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/complex.exp +++ b/gcc/testsuite/gcc.dg/vect/complex/complex.exp @@ -1,4 +1,4 @@ -# Copyright (C) 1997-2021 Free Software Foundation, Inc. +# Copyright (C) 1997-2022 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c index 7bbb61adfab06a89ac36a66f848746033158c41c..2e611b77c7631b305d79fe21c4b95c8593dcc369 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c @@ -1,12 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ +/* { dg-require-effective-target vect_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE double #define N 16 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c index cf99f1de31056bbaca3fe8885643289b770ad76d..1e63a5f2c5e1a478ae9ea1f49c6eb21665cfca8c 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c @@ -1,11 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE float #define N 16 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c index 9f535dde7c0d131c1a35e5b6b1d27530faaea88f..0ae49c16438c503ad59010a9b170e54764419c36 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c @@ -1,7 +1,8 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c index e121113320ec153a732fe8e1c0b25d06929c126b..3f5619b78ce55c83df07f22dfe58fbb6f56e66ac 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c @@ -1,11 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ +/* { dg-require-effective-target vect_double } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE double #define N 16 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c index 8565833887f026b732b86d2c42c3a3d7a883b8d8..a961a852775f29ade98d61100358cc36c394f3de 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c @@ -1,11 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE float #define N 16 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c index 857ee9de6b48407ebb1c6974d4b05cd661cd4f16..e30df0ff0b03e612ef2491f797a84bcc117df5e1 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c @@ -1,11 +1,16 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ + +#define UNROLL #define TYPE _Float16 #define N 16 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail arm*-*-* } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { target { vect_complex_add_half } && ! target { arm*-*-* } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c index d9d13c29578f905e793e5d80f08ec7b758d09c5f..b77c847403df3253648dc4b2f493364fc1cb6959 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c @@ -1,9 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ #define TYPE double #define N 16 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c index ac680cbca81b3b0bc3a51555236faa7f702e5082..cd68fd190089bc48615e4098a19450c0f374c275 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ -/* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ +/* { dg-add-options arm_v8_3a_fp16_complex_neon } */ #define TYPE float #define N 16 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c index d0a48d007178a7464ae2e4d00720bb3b3abca18a..510092028d5697b4f48ed4e3d60d586988671d02 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c @@ -1,9 +1,12 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "slp1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "slp1" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c index d9d13c29578f905e793e5d80f08ec7b758d09c5f..9d9839417a2b09fd7715ce554d9d96827ee3f00c 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c @@ -1,9 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ #define TYPE double #define N 16 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c index ac680cbca81b3b0bc3a51555236faa7f702e5082..cf540a08acd1a0ffe0b193dd2346a58afc0bfd2a 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c @@ -1,8 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 16 -#include "complex-mla-template.c" +#include "complex-mls-template.c" + +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c index d0a48d007178a7464ae2e4d00720bb3b3abca18a..217401bae59e658c1f920c4619f0858c95cc3322 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c @@ -1,9 +1,12 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "slp1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "slp1" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c index ab8313f01226bfb96b2e304ff7f275cffb665b06..dcac519cd98c6dd5773117134ca1c007ae3e3856 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c @@ -1,9 +1,11 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-fdump-tree-vect-details" } */ #define TYPE double #define N 16 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c index 49bf961c7a17d266d45b9112383a89ac406a705c..827687b92fa7a8e68bf3eaa101ab67a5d07901f3 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 16 #include "complex-mul-template.c" + +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c index f5c23fbe20d67e88f870417d9a4bde63c169e301..309b168dfb0813aea39e144813325e4e0910c77c 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c @@ -1,9 +1,12 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ +/* { dg-additional-options "-fno-tree-loop-vectorize" } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 16 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "slp1" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "slp1" { xfail *-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c index 0d4d3ce8869cde8e3020b93456421cc268fb8263..f935405e3d942cc68e49b2b21ca543e23076e0c9 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c @@ -1,11 +1,12 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ +/* { dg-require-effective-target vect_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c index b9866966be37ed2e2c5210a06f04474171e0d4f3..71f391db7bba8ac7c4ce090f650c32d9180ee4f9 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c @@ -1,11 +1,12 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c index c3dca57b4f49932acf28b19ad86774f171072576..e5b826f1ca77d262c7d0a39b6b8446255a9dea36 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c @@ -1,11 +1,10 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target float16 } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-add-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" { target { vect_complex_add_half } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c index df4d3f671f40663d779598dcb5b1f94260c6d7e3..5b70d834c2435c316bdbf119a1e2ace15f68b8e7 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c @@ -1,11 +1,13 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ +/* { dg-require-effective-target vect_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_double } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c index 6df5c6d18309723d81734429f9034e3f6b10f7fc..3ef05645a2c95ab2269276bd23f2db2afd016c1a 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c @@ -1,11 +1,13 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ +/* { dg-require-effective-target vect_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_float } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c index a72511262784b942d51fad9d0da423890bc3cd92..06a9216add747ab2880f92828483333dabb30496 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c @@ -1,12 +1,16 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ +/* { dg-require-effective-target vect_float } */ +/* { dg-require-effective-target float16 } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_half } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c index c85ff07a6cc432051b8dfc70456a31b8e485e024..3ec46e5cf6694e0ccf23d6e7db094a9df996afbd 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c index a17b91b1bd4bb0a26107e973ca1b06f7a9e4c24c..af59323023a6a15340ded60155f130671d840f68 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ /* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c index fa81985b9085ef760737b471591065388d59aed0..34146f3d1e7f123231c7f39ccfa1aba832ee87ca 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-mla-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c index c85ff07a6cc432051b8dfc70456a31b8e485e024..0982a2b8ead9bec96f6dcbceaeac9c2ebcbda300 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c index a17b91b1bd4bb0a26107e973ca1b06f7a9e4c24c..a069533b22a64f62bd8dd6b6bdd3b771c7b7ea4d 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c @@ -1,8 +1,10 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c index fa81985b9085ef760737b471591065388d59aed0..89ac54c2a42a114a1afb6dead0504b04c37c3f98 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c @@ -1,8 +1,9 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 -#include "complex-mla-template.c" +#include "complex-mls-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_FMS" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c index 77c01a82bb25d62d1fcf56d5015d21d8e3417963..56a8ea4ae0232cb3051a780157902fdb03a9e942 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_double } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE double #define N 200 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c index a8b44f2069877d354572148acf2d8efbccdf89c6..969416d7dc7779ee6feaa8e069a1a3687dd53559 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_float } */ /* { dg-add-options arm_v8_3a_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE float #define N 200 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c index d57df82808d5a08b52ed905048d7a0b46af41a4b..da1b9213a6b3e1df4fdc4ecf6ffbf3645975a5ba 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c +++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_half } */ /* { dg-add-options arm_v8_3a_fp16_complex_neon } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ #define TYPE _Float16 #define N 200 #include "complex-mul-template.c" +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c index 438d2192723a7b15261c346a290ccb0d9e0e02b6..bf7c135fa1a8ccf7cf23c783e8572c8d12f245bd 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_byte } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE int8_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c index 04c27dcf4102e4d53f2cc4f2aebb55a10d1fe5b1..2fd2a9f0617ab1d741826970d0db6ed9a8f393ec 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE int32_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c index 27988ad34233f23b359fa4de56cb1d2182496bcc..70977155256bf6e414f2fa5a604b0e301496a2e6 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c @@ -1,12 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE int64_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c index 88d225d6ff8004eabc679a51b9dc01d69be2c3b0..8cbb8ac0c19061e7fe4d2978bccc24df0990d540 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE int16_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c index 59109c008bb28bf65600e0427ca86935db10b55c..9477f0d92d8f8f761d84916677ecce9f2a5c6fee 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_byte } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE uint8_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_byte } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c index 44d96354d6071bcd2d7e61d8e5211692560f6cbe..41f60042ee9a32c26831d1d415f6a2b4a1b20777 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_int } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE uint32_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_int } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c index 667145751cd9efbdf8019249cffea7722e1c78e5..7708ac495b8b8a626d2974f3e7070892adc0d8b1 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c @@ -1,12 +1,15 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_long } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ + +#define UNROLL #define TYPE uint64_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" { target { vect_long_long } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" { target { vect_long_long } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c index 841adf830c8e1b2fa9184811b39fb54bfc1af92f..6260be4d12161b9d25d5fecd9fd13b1ba0c76dbd 100644 --- a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c +++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c @@ -1,12 +1,14 @@ /* { dg-do compile } */ -/* { dg-require-effective-target vect_complex_add_short } */ /* { dg-require-effective-target stdint_types } */ -/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options arm_v8_3a_complex_neon } */ #define TYPE uint16_t #define N 200 #include #include "complex-add-pattern-template.c" -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */ -/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" { target { vect_complex_add_short } } } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "vect" } } */ +/* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "vect" } } */