From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2076.outbound.protection.outlook.com [40.107.21.76]) by sourceware.org (Postfix) with ESMTPS id 01012385842A for ; Wed, 6 Dec 2023 04:10:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 01012385842A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 01012385842A Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.76 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1701835824; cv=pass; b=gmV4+RZaN8eS3nGbQFx9MXXEsWxWzfY0gffuM1kfFgkg7EKws9ecrMmeRv0DCPRO6E9vsTb5IIE/cnjw3JUBcSol7HkGKnsM9lB3KAVVi6JZqRx2iJ0HER58trXVqYY2picavVjo71+ez+hfLjg0Oq/MRdefWskQ513lqMZLOOw= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1701835824; c=relaxed/simple; bh=uxLFyQeeO/8VRM23o25bvBIaUVpz88YxqRFzmWPBTRE=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=cJoC15EeKpf4Mk14QL/T2/BeTvS+UGE1U5XGf7qzDT5gFXfXrMbdn6i6WIxnsqeRIOZPqhE9mXT1itVeMYfBU8sxBonPV8UjfEPQviA8kw7Z7Drqle46kcEDWmIdfIsrDlyQdiC3UWIj0T+24mmismm8e7frQKwAFBL25RH1838= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=HozUS3GlksuhBBiKDvUH6NEiHZY8zK38njvjdwOmHf8IrD3tDhK5ing4MKIMD1pDQwD8uOI2/LFETHwAXSPi/nRmYRbrYTa0d7ZTYyY6R2ohneXXqYWGJa8qTgcLM6aWjlUrHQZapu1sV2mhkL4RSrEdlYtV87T1FisCzbazceIwphGZaR7L8GgmBe4g3gBF/0ypXL8GO1oIrcbVzmUMCqBm4y+u7ZMZZyJt6XMloK9dEryZpldnNv+Q6OsGjC1gV2ZzGdQjS7wIyaOmTFKEZXmZIYyL5IT9nXaguignuLXgRYzpb6XtL7NP/wrzm3eTxvshYCNQyENCXytGxyRYng== ARC-Message-Signature: i=2; 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=GhzShgZHSOxZ5wv1aU5Lrio1nwdevqKzegMRYjnJ+YY=; b=mIBGuJOfLB7qFErC3SmKVtY+3gR/Jj7eraiQHOR2DTyoMFRXpPEzstRVpEcfiEoVeq26CahxwQXdVsx3e/7djrvqjrNop8klWvjnvyJboDAxR0FRN2LuL23lWPhUCzzmqSlSQE7vQUezzg3MvDZJZGY26lkQ0ZrMu9dVf7sVx6Sv/mAVO2AoDVp5QUuMJxUil84Ve+Ldc5Kxs1Rmk+z2eln0kR2io0U6CBiZPqHzR7xuGo0R51CK5XczKQdKYL2GqCTOni5FpbDSmh7HvKTt3W+M/6lPQW6jIXUfcHycTwju9dEUa8Td9UK1u+QRd6BLE+R+iBDCkoYQs/lz+jhxMg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GhzShgZHSOxZ5wv1aU5Lrio1nwdevqKzegMRYjnJ+YY=; b=LrM9qdDcnSbU8FCqwxD7ck6B/uq9iNdsfKxgW9Us/f82i1KOvuTHO9hwvC+ba7qXAieE5qtNivnxUW/Ib+ZykFmLNm3ITN8GRpe/Fu3WJNQosQhJtQB0ttMYghcreWLkV5De+5IcNoro0omNa/ouBexKqwLaZvUuMzZLssVaWpg= Received: from DU7PR01CA0008.eurprd01.prod.exchangelabs.com (2603:10a6:10:50f::29) by DB5PR08MB10000.eurprd08.prod.outlook.com (2603:10a6:10:48b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.25; Wed, 6 Dec 2023 04:10:18 +0000 Received: from DB1PEPF00039231.eurprd03.prod.outlook.com (2603:10a6:10:50f:cafe::7a) by DU7PR01CA0008.outlook.office365.com (2603:10a6:10:50f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34 via Frontend Transport; Wed, 6 Dec 2023 04:10:18 +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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB1PEPF00039231.mail.protection.outlook.com (10.167.8.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.24 via Frontend Transport; Wed, 6 Dec 2023 04:10:18 +0000 Received: ("Tessian outbound 26ee1d40577c:v228"); Wed, 06 Dec 2023 04:10:18 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 0e80f87c2d78752d X-CR-MTA-TID: 64aa7808 Received: from 76732ed83043.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 43473B5B-2A57-4C9E-95F2-A5A483FEDECA.1; Wed, 06 Dec 2023 04:10:12 +0000 Received: from EUR02-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 76732ed83043.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 06 Dec 2023 04:10:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VcWYASz95gQQRvOIg8DWHiGFvZm8lmkkOtDsAYPyCn0VWtH0QVoPfmKm/tHooHQbCkJyRDgSbKfWDeEzIX8aeA+uS7jX7k1jOF0vSCeX92eNuqjvt8HGvQNFZ7XfIKmkGz5OILznBmGg9aSJl2Oi6Kvo7fKG6fQ7DeVzqnUa+QNIimoYTD3JuT6Wy2ATX+b0y2+Ym9V9EgIDQaljj+e81aICsVhzuXqZaG62ejI10STtZ6CRIXNmaANUcrTUyrJ7fDRVdg28QWbmHimFnS8COkhHhL5Uyuo+12xNq9pof/cDicO09qtGl2TKcUce4ab5qHiebP5GnnSdY/Y3gNOlKA== 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=GhzShgZHSOxZ5wv1aU5Lrio1nwdevqKzegMRYjnJ+YY=; b=hY8gd/eAv/QtKb5Y5UYDGQvwENkgvUjGamN92U8p0E0TuF4GpeoS4KtiryQtwRxeV6EVTPnA8c8T6CdhK0MN00+kFG4Uc2IxK3moewbhUsmOq35CqXe+8n7Btll0qW2dsLW7OcYxp1QG/lvwY0OpieFpP5lOrebMlXlDkNQOcfI6cSZVig/132yPhN6IYsOH675ThicMfH97w6cdlX1T6LB/ofby46l/3AdeWPvRvTbMmFsxLFxaTB2CPGG60f+rqU+F6750npUYfoUxhLYjBQKk0xXpS4jVkmPwEboABocJFw399IfZoYrbTopJiSGazTAbfbxQiEP0E2xl01gt8A== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GhzShgZHSOxZ5wv1aU5Lrio1nwdevqKzegMRYjnJ+YY=; b=LrM9qdDcnSbU8FCqwxD7ck6B/uq9iNdsfKxgW9Us/f82i1KOvuTHO9hwvC+ba7qXAieE5qtNivnxUW/Ib+ZykFmLNm3ITN8GRpe/Fu3WJNQosQhJtQB0ttMYghcreWLkV5De+5IcNoro0omNa/ouBexKqwLaZvUuMzZLssVaWpg= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DU2PR08MB10263.eurprd08.prod.outlook.com (2603:10a6:10:491::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Wed, 6 Dec 2023 04:10:10 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::9679:2ab0:99c6:54a3]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::9679:2ab0:99c6:54a3%6]) with mapi id 15.20.7046.034; Wed, 6 Dec 2023 04:10:09 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , "jlaw@ventanamicro.com" Subject: RE: [PATCH 10/21]middle-end: implement relevancy analysis support for control flow Thread-Topic: [PATCH 10/21]middle-end: implement relevancy analysis support for control flow Thread-Index: AQHaEIRzmFy36VHOiU+WdhlubvwxgrCO5sUQgAKeR4CACkyC8A== Date: Wed, 6 Dec 2023 04:10:09 +0000 Message-ID: References: <5q17320p-3978-40o2-p8qn-415982q767nn@fhfr.qr> In-Reply-To: <5q17320p-3978-40o2-p8qn-415982q767nn@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|DU2PR08MB10263:EE_|DB1PEPF00039231:EE_|DB5PR08MB10000:EE_ X-MS-Office365-Filtering-Correlation-Id: c118f603-db84-41b7-53cd-08dbf611420a 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: HT0xbxvXK6aHyBrbVBarlqE06qg30qQbNvjENAG/d9aVPMn34R1Mcw4MlOHEE9fz2DFM1VQi1Z+h+DMhYAXzWbQCWi00coph/hbNSrrJ817VXdz0Y6zDwLMypgv90xn5HAwXAsOY7SW9pxM5E3XFUAVkKd+AUTEmSaKnbhiOu50HheDnJo96QGF1A6iDYWKHibDiGSHBCRxkxJp1rEM5wsuXmGukz9SYqVjuIWkaifq4JUDEbdf68a2bkJKiwSGMXSpuQ3TdrN5ORGIYdisIEqoxS0d886Prpxf9jJCBGL6HuFPI0750wYKIhx1AVsf65+Se1p/gw8ffx7KqqQI714yPZnfn6h1YbfNyRECGYF1JheGAwXtFe3TBEQ4sCjVpeezQ4b1iKg5enIPADaShSHRNo+GgWwHUc2g3IhB+FcqsBEUoisSi/GTT1ByaO82IMYAqU2WbCZI3k64yhGqoV3CDXhaJcUMOd9d8CUsv5gU/br+qpP4Vw7KFUbw8ioT/N5v4YM1snOrl9+YMJBsUuwXtLA7ERBWFvCA2wjfJDOXQ0d7/QjRgC/blssSGjL12mOXxU5X1BOI6+Dg53DosMiPomKLRG46cj8Yoyj3LZVJP37ze+dpgAlkLqwmdHXZz 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:(13230031)(396003)(366004)(136003)(39860400002)(346002)(376002)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(2906002)(52536014)(5660300002)(38070700009)(33656002)(86362001)(41300700001)(7696005)(6506007)(478600001)(9686003)(71200400001)(55016003)(38100700002)(122000001)(83380400001)(26005)(76116006)(8676002)(4326008)(8936002)(6916009)(99936003)(66946007)(64756008)(66476007)(66556008)(66446008)(54906003)(316002);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB53258543AD74E1789EEFF519FF84AVI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB10263 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: DB1PEPF00039231.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 7fd711ba-4cc6-4976-743c-08dbf6113cd1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ff9WHdwMk8XVnyXUq7fIzCSCHrWQj1rAMplc6YBcIeHAwmGqhq0o6Zjv1EJIPwTtgaHL6L5+p9JdQXmqp6J6EJDhFcytQJ7pkQ6skuZsJiYQB75ZnDt3iH0gfvAy2wedAwVsKFtdtkp2wbEop96AZTEBi1Rlhnp8mGQfo+7SsE4q2P58N5hOgpT/3WEt3KcMaQBwgRUXZMcwnJuVzFTfVks6XiSFXFWPfQusvuPt6UHsgDjEqVTbTaZzKxMF+j8A90BK0vInrWtsKKe7/45iJacnduaF7u8UZy796kvFtKbCpRL8yRSMwT5R9o5xXvXpnNeJiecmzRnJ4gZaPTS4Z5pflX57K1I0U+JSmMW5l6VSbf6kl3/4B6aJieWm2nuJOxEn3Jke73QnLrd/Doq01bHVUhO7oX3Jk2tfvt2tSzCG8amYWXYNkeg9yj0bdj0miE+/n31k2GuQi40F4iMDcLJ1xCXjCCWtMn0L1QW++er+Ske8+ihEVJDtFpISfHTsleUdD7n6S4/vK053VlkAZ/PJNkTSHNnhdaUiRdAHgX1bYd4IfwRtePBbSYvVIx5yfRKPEeg+N3Nb+8ZIIiCKysxvFVOKijRQ+D0VEl3VExxz0iLQndyPRKnY07G54tQJM5GkY8GcI/md8XP2XuJtIakW53j/HqU1ttwsOPelFwMjN9lDJsOQCK1uDFL4FCOkFhXz/5N6/NEoGKkuUG9feXplBvG0Ux+Q8M0rZuGyWXTtYUwcg0eXMI9Qnslrw5Z+ 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:(13230031)(4636009)(39860400002)(136003)(396003)(346002)(376002)(230922051799003)(1800799012)(64100799003)(451199024)(82310400011)(186009)(40470700004)(46966006)(36840700001)(6506007)(55016003)(36860700001)(86362001)(2906002)(30864003)(26005)(83380400001)(336012)(40480700001)(40460700003)(99936003)(356005)(81166007)(82740400003)(33656002)(47076005)(7696005)(235185007)(5660300002)(9686003)(107886003)(8676002)(4326008)(6862004)(8936002)(52536014)(41300700001)(478600001)(316002)(70586007)(70206006)(54906003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2023 04:10:18.5907 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c118f603-db84-41b7-53cd-08dbf611420a 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: DB1PEPF00039231.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB10000 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_VI1PR08MB53258543AD74E1789EEFF519FF84AVI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > > > + && LOOP_VINFO_LOOP_IV_COND (loop_vinfo) !=3D cond) > > > + *relevant =3D vect_used_in_scope; >=20 > but why not simply mark all gconds as vect_used_in_scope? >=20 We break outer-loop vectorization since doing so would pull the inner loop'= s exit into scope for the outerloop. Also we can't force the loop's main IV= exit to be in scope, since it will be replaced by the vectorizer. I've updated the code to remove the quadratic lookup. > > > + } > > > > > > /* changing memory. */ > > > if (gimple_code (stmt_info->stmt) !=3D GIMPLE_PHI) @@ -374,6 +379,= 11 @@ > > > vect_stmt_relevant_p (stmt_vec_info stmt_info, loop_vec_info loop_vin= fo, > > > *relevant =3D vect_used_in_scope; > > > } > > > > > > + auto_vec exits =3D get_loop_exit_edges (loop); auto_bitmap > > > + exit_bbs; for (edge exit : exits) >=20 > is it your mail client messing patches up? missing line-break > again. >=20 Yeah, seems it was, hopefully fixed now. > > > + bitmap_set_bit (exit_bbs, exit->dest->index); > > > + >=20 > you don't seem to use the bitmap? >=20 > > > /* uses outside the loop. */ > > > FOR_EACH_PHI_OR_STMT_DEF (def_p, stmt_info->stmt, op_iter, > > > SSA_OP_DEF) > > > { > > > @@ -392,7 +402,6 @@ vect_stmt_relevant_p (stmt_vec_info stmt_info, > > > loop_vec_info loop_vinfo, > > > /* We expect all such uses to be in the loop exit phis > > > (because of loop closed form) */ > > > gcc_assert (gimple_code (USE_STMT (use_p)) =3D=3D GIMPLE_PHI)= ; > > > - gcc_assert (bb =3D=3D single_exit (loop)->dest); > > > > > > *live_p =3D true; > > > } > > > @@ -793,6 +802,20 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info > > > loop_vinfo, bool *fatal) > > > return res; > > > } > > > } > > > + } > > > + else if (gcond *cond =3D dyn_cast (stmt_vinfo->stmt)) > > > + { > > > + enum tree_code rhs_code =3D gimple_cond_code (cond); > > > + gcc_assert (TREE_CODE_CLASS (rhs_code) =3D=3D tcc_comparison)= ; > > > + opt_result res > > > + =3D process_use (stmt_vinfo, gimple_cond_lhs (cond), > > > + loop_vinfo, relevant, &worklist, false); > > > + if (!res) > > > + return res; > > > + res =3D process_use (stmt_vinfo, gimple_cond_rhs (cond), > > > + loop_vinfo, relevant, &worklist, false); > > > + if (!res) > > > + return res; > > > } >=20 > I guess we're missing an >=20 > else > gcc_unreachable (); >=20 > to catch not handled stmt kinds (do we have gcond patterns yet?) >=20 > > > else if (gcall *call =3D dyn_cast (stmt_vinfo->stmt)) > > > { > > > @@ -13043,11 +13066,15 @@ vect_analyze_stmt (vec_info *vinfo, > > > node_instance, cost_vec); > > > if (!res) > > > return res; > > > - } > > > + } > > > + > > > + if (is_ctrl_stmt (stmt_info->stmt)) > > > + STMT_VINFO_DEF_TYPE (stmt_info) =3D vect_early_exit_def; >=20 > I think it should rather be vect_condition_def. It's also not > this functions business to set STMT_VINFO_DEF_TYPE. If we ever > get to handle not if-converted code (or BB vectorization of that) > then a gcond would define the mask stmts are under. >=20 Hmm sure, I've had to place it in multiple other places but moved it away from here. The main ones are set during dataflow analysis when we determine which statements need to be moved. > > > switch (STMT_VINFO_DEF_TYPE (stmt_info)) > > > { > > > case vect_internal_def: > > > + case vect_early_exit_def: > > > break; > > > > > > case vect_reduction_def: > > > @@ -13080,6 +13107,7 @@ vect_analyze_stmt (vec_info *vinfo, > > > { > > > gcall *call =3D dyn_cast (stmt_info->stmt); > > > gcc_assert (STMT_VINFO_VECTYPE (stmt_info) > > > + || gimple_code (stmt_info->stmt) =3D=3D GIMPLE_COND > > > || (call && gimple_call_lhs (call) =3D=3D NULL_TREE)); > > > *need_to_vectorize =3D true; > > > } > > > @@ -13835,6 +13863,14 @@ vect_is_simple_use (vec_info *vinfo, > > > stmt_vec_info stmt, slp_tree slp_node, > > > else > > > *op =3D gimple_op (ass, operand + 1); > > > } > > > + else if (gcond *cond =3D dyn_cast (stmt->stmt)) > > > + { > > > + gimple_match_op m_op; > > > + if (!gimple_extract_op (cond, &m_op)) > > > + return false; > > > + gcc_assert (m_op.code.is_tree_code ()); > > > + *op =3D m_op.ops[operand]; > > > + } >=20 > Please do not use gimple_extract_op, use >=20 > *op =3D gimple_op (cond, operand); >=20 > > > else if (gcall *call =3D dyn_cast (stmt->stmt)) > > > *op =3D gimple_call_arg (call, operand); > > > else > > > @@ -14445,6 +14481,8 @@ vect_get_vector_types_for_stmt (vec_info > > > *vinfo, stmt_vec_info stmt_info, > > > *nunits_vectype_out =3D NULL_TREE; > > > > > > if (gimple_get_lhs (stmt) =3D=3D NULL_TREE > > > + /* Allow vector conditionals through here. */ > > > + && !is_ctrl_stmt (stmt) >=20 > !is_a (stmt) >=20 > > > /* MASK_STORE has no lhs, but is ok. */ > > > && !gimple_call_internal_p (stmt, IFN_MASK_STORE)) > > > { > > > @@ -14461,7 +14499,7 @@ vect_get_vector_types_for_stmt (vec_info > > > *vinfo, stmt_vec_info stmt_info, > > > } > > > > > > return opt_result::failure_at (stmt, > > > - "not vectorized: irregular stmt.%G", stmt); > > > + "not vectorized: irregular stmt: %G", stmt); > > > } > > > > > > tree vectype; > > > @@ -14490,6 +14528,14 @@ vect_get_vector_types_for_stmt (vec_info > > > *vinfo, stmt_vec_info stmt_info, > > > scalar_type =3D TREE_TYPE (DR_REF (dr)); > > > else if (gimple_call_internal_p (stmt, IFN_MASK_STORE)) > > > scalar_type =3D TREE_TYPE (gimple_call_arg (stmt, 3)); > > > + else if (is_ctrl_stmt (stmt)) >=20 > else if (gcond *cond =3D dyn_cast <...>) >=20 > > > + { > > > + gcond *cond =3D dyn_cast (stmt); > > > + if (!cond) > > > + return opt_result::failure_at (stmt, "not vectorized: unsupport= ed" > > > + " control flow statement.\n"); > > > + scalar_type =3D TREE_TYPE (gimple_cond_rhs (stmt)); >=20 > As said in the other patch STMT_VINFO_VECTYPE of the gcond should > be the _mask_ type the compare produces, not the vector type of > the inputs (the nunits_vectype might be that one though). > You possibly need to adjust vect_get_smallest_scalar_type for this. >=20 Fixed, but is in other patch now. Ok for master? Thanks, Tamar gcc/ChangeLog: * tree-vect-patterns.cc (vect_mark_pattern_stmts): Support gcond patterns. * tree-vect-stmts.cc (vect_stmt_relevant_p, vect_mark_stmts_to_be_vectorized, vect_analyze_stmt, vect_is_simple_use, vect_get_vector_types_for_stmt): Support early breaks. --- inline copy of patch --- diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc index c6cedf4fe7c1f1e1126ce166a059a4b2a2b49cbd..ea59ad337f14d802607850e8a7c= f0125777ce2bc 100644 --- a/gcc/tree-vect-patterns.cc +++ b/gcc/tree-vect-patterns.cc @@ -6987,6 +6987,10 @@ vect_mark_pattern_stmts (vec_info *vinfo, vect_set_pattern_stmt (vinfo, pattern_stmt, orig_stmt_info, pattern_vectype); =20 + /* For any conditionals mark them as vect_condition_def. */ + if (is_a (pattern_stmt)) + STMT_VINFO_DEF_TYPE (STMT_VINFO_RELATED_STMT (orig_stmt_info)) =3D vec= t_condition_def; + /* Transfer reduction path info to the pattern. */ if (STMT_VINFO_REDUC_IDX (orig_stmt_info_saved) !=3D -1) { diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index d801b72a149ebe6aa4d1f2942324b042d07be530..1e2698fcb7e95ae7f0009d10a79= ba8c891a8227d 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -361,7 +361,9 @@ vect_stmt_relevant_p (stmt_vec_info stmt_info, loop_vec= _info loop_vinfo, =20 /* cond stmt other than loop exit cond. */ gimple *stmt =3D STMT_VINFO_STMT (stmt_info); - if (dyn_cast (stmt)) + if (is_a (stmt) + && LOOP_VINFO_LOOP_IV_COND (loop_vinfo) !=3D stmt + && (!loop->inner || gimple_bb (stmt)->loop_father =3D=3D loop)) *relevant =3D vect_used_in_scope; =20 /* changing memory. */ @@ -393,7 +395,6 @@ vect_stmt_relevant_p (stmt_vec_info stmt_info, loop_vec= _info loop_vinfo, /* We expect all such uses to be in the loop exit phis (because of loop closed form) */ gcc_assert (gimple_code (USE_STMT (use_p)) =3D=3D GIMPLE_PHI); - gcc_assert (bb =3D=3D single_exit (loop)->dest); =20 *live_p =3D true; } @@ -807,6 +808,20 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_v= info, bool *fatal) return res; } } + } + else if (gcond *cond =3D dyn_cast (stmt_vinfo->stmt)) + { + enum tree_code rhs_code =3D gimple_cond_code (cond); + gcc_assert (TREE_CODE_CLASS (rhs_code) =3D=3D tcc_comparison); + opt_result res + =3D process_use (stmt_vinfo, gimple_cond_lhs (cond), + loop_vinfo, relevant, &worklist, false); + if (!res) + return res; + res =3D process_use (stmt_vinfo, gimple_cond_rhs (cond), + loop_vinfo, relevant, &worklist, false); + if (!res) + return res; } else if (gcall *call =3D dyn_cast (stmt_vinfo->stmt)) { @@ -820,6 +835,8 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vi= nfo, bool *fatal) return res; } } + else + gcc_unreachable (); } else FOR_EACH_PHI_OR_STMT_USE (use_p, stmt_vinfo->stmt, iter, SSA_OP_USE) @@ -13044,11 +13061,12 @@ vect_analyze_stmt (vec_info *vinfo, node_instance, cost_vec); if (!res) return res; - } + } =20 switch (STMT_VINFO_DEF_TYPE (stmt_info)) { case vect_internal_def: + case vect_condition_def: break; =20 case vect_reduction_def: @@ -13081,6 +13099,7 @@ vect_analyze_stmt (vec_info *vinfo, { gcall *call =3D dyn_cast (stmt_info->stmt); gcc_assert (STMT_VINFO_VECTYPE (stmt_info) + || gimple_code (stmt_info->stmt) =3D=3D GIMPLE_COND || (call && gimple_call_lhs (call) =3D=3D NULL_TREE)); *need_to_vectorize =3D true; } @@ -13855,6 +13874,8 @@ vect_is_simple_use (vec_info *vinfo, stmt_vec_info = stmt, slp_tree slp_node, else *op =3D gimple_op (ass, operand + 1); } + else if (gcond *cond =3D dyn_cast (stmt->stmt)) + *op =3D gimple_op (cond, operand); else if (gcall *call =3D dyn_cast (stmt->stmt)) *op =3D gimple_call_arg (call, operand); else @@ -14465,6 +14486,8 @@ vect_get_vector_types_for_stmt (vec_info *vinfo, st= mt_vec_info stmt_info, *nunits_vectype_out =3D NULL_TREE; =20 if (gimple_get_lhs (stmt) =3D=3D NULL_TREE + /* Allow vector conditionals through here. */ + && !is_a (stmt) /* MASK_STORE has no lhs, but is ok. */ && !gimple_call_internal_p (stmt, IFN_MASK_STORE)) { @@ -14481,7 +14504,7 @@ vect_get_vector_types_for_stmt (vec_info *vinfo, st= mt_vec_info stmt_info, } =20 return opt_result::failure_at (stmt, - "not vectorized: irregular stmt.%G", stmt); + "not vectorized: irregular stmt: %G", stmt); } =20 tree vectype; --_002_VI1PR08MB53258543AD74E1789EEFF519FF84AVI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb17970.patch" Content-Description: rb17970.patch Content-Disposition: attachment; filename="rb17970.patch"; size=4366; creation-date="Wed, 06 Dec 2023 04:04:57 GMT"; modification-date="Wed, 06 Dec 2023 04:10:09 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MgYi9nY2MvdHJlZS12ZWN0LXBh dHRlcm5zLmNjCmluZGV4IGM2Y2VkZjRmZTdjMWYxZTExMjZjZTE2NmEwNTlhNGIyYTJiNDljYmQu LmVhNTlhZDMzN2YxNGQ4MDI2MDc4NTBlOGE3Y2YwMTI1Nzc3Y2UyYmMgMTAwNjQ0Ci0tLSBhL2dj Yy90cmVlLXZlY3QtcGF0dGVybnMuY2MKKysrIGIvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jYwpA QCAtNjk4Nyw2ICs2OTg3LDEwIEBAIHZlY3RfbWFya19wYXR0ZXJuX3N0bXRzICh2ZWNfaW5mbyAq dmluZm8sCiAgICAgdmVjdF9zZXRfcGF0dGVybl9zdG10ICh2aW5mbywKIAkJCSAgIHBhdHRlcm5f c3RtdCwgb3JpZ19zdG10X2luZm8sIHBhdHRlcm5fdmVjdHlwZSk7CiAKKyAgLyogRm9yIGFueSBj b25kaXRpb25hbHMgbWFyayB0aGVtIGFzIHZlY3RfY29uZGl0aW9uX2RlZi4gICovCisgIGlmIChp c19hIDxnY29uZCAqPiAocGF0dGVybl9zdG10KSkKKyAgICBTVE1UX1ZJTkZPX0RFRl9UWVBFIChT VE1UX1ZJTkZPX1JFTEFURURfU1RNVCAob3JpZ19zdG10X2luZm8pKSA9IHZlY3RfY29uZGl0aW9u X2RlZjsKKwogICAvKiBUcmFuc2ZlciByZWR1Y3Rpb24gcGF0aCBpbmZvIHRvIHRoZSBwYXR0ZXJu LiAgKi8KICAgaWYgKFNUTVRfVklORk9fUkVEVUNfSURYIChvcmlnX3N0bXRfaW5mb19zYXZlZCkg IT0gLTEpCiAgICAgewpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90 cmVlLXZlY3Qtc3RtdHMuY2MKaW5kZXggZDgwMWI3MmExNDllYmU2YWE0ZDFmMjk0MjMyNGIwNDJk MDdiZTUzMC4uMWUyNjk4ZmNiN2U5NWFlN2YwMDA5ZDEwYTc5YmE4Yzg5MWE4MjI3ZCAxMDA2NDQK LS0tIGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYworKysgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNj CkBAIC0zNjEsNyArMzYxLDkgQEAgdmVjdF9zdG10X3JlbGV2YW50X3AgKHN0bXRfdmVjX2luZm8g c3RtdF9pbmZvLCBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sCiAKICAgLyogY29uZCBzdG10IG90 aGVyIHRoYW4gbG9vcCBleGl0IGNvbmQuICAqLwogICBnaW1wbGUgKnN0bXQgPSBTVE1UX1ZJTkZP X1NUTVQgKHN0bXRfaW5mbyk7Ci0gIGlmIChkeW5fY2FzdCA8Z2NvbmQgKj4gKHN0bXQpKQorICBp ZiAoaXNfYSA8Z2NvbmQgKj4gKHN0bXQpCisgICAgICAmJiBMT09QX1ZJTkZPX0xPT1BfSVZfQ09O RCAobG9vcF92aW5mbykgIT0gc3RtdAorICAgICAgJiYgKCFsb29wLT5pbm5lciB8fCBnaW1wbGVf YmIgKHN0bXQpLT5sb29wX2ZhdGhlciA9PSBsb29wKSkKICAgICAqcmVsZXZhbnQgPSB2ZWN0X3Vz ZWRfaW5fc2NvcGU7CiAKICAgLyogY2hhbmdpbmcgbWVtb3J5LiAgKi8KQEAgLTM5Myw3ICszOTUs NiBAQCB2ZWN0X3N0bXRfcmVsZXZhbnRfcCAoc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sIGxvb3Bf dmVjX2luZm8gbG9vcF92aW5mbywKIAkgICAgICAvKiBXZSBleHBlY3QgYWxsIHN1Y2ggdXNlcyB0 byBiZSBpbiB0aGUgbG9vcCBleGl0IHBoaXMKIAkJIChiZWNhdXNlIG9mIGxvb3AgY2xvc2VkIGZv cm0pICAgKi8KIAkgICAgICBnY2NfYXNzZXJ0IChnaW1wbGVfY29kZSAoVVNFX1NUTVQgKHVzZV9w KSkgPT0gR0lNUExFX1BISSk7Ci0JICAgICAgZ2NjX2Fzc2VydCAoYmIgPT0gc2luZ2xlX2V4aXQg KGxvb3ApLT5kZXN0KTsKIAogICAgICAgICAgICAgICAqbGl2ZV9wID0gdHJ1ZTsKIAkgICAgfQpA QCAtODA3LDYgKzgwOCwyMCBAQCB2ZWN0X21hcmtfc3RtdHNfdG9fYmVfdmVjdG9yaXplZCAobG9v cF92ZWNfaW5mbyBsb29wX3ZpbmZvLCBib29sICpmYXRhbCkKIAkJCXJldHVybiByZXM7CiAJCSAg ICB9CiAgICAgICAgICAgICAgICAgIH0KKwkgICAgfQorCSAgZWxzZSBpZiAoZ2NvbmQgKmNvbmQg PSBkeW5fY2FzdCA8Z2NvbmQgKj4gKHN0bXRfdmluZm8tPnN0bXQpKQorCSAgICB7CisJICAgICAg ZW51bSB0cmVlX2NvZGUgcmhzX2NvZGUgPSBnaW1wbGVfY29uZF9jb2RlIChjb25kKTsKKwkgICAg ICBnY2NfYXNzZXJ0IChUUkVFX0NPREVfQ0xBU1MgKHJoc19jb2RlKSA9PSB0Y2NfY29tcGFyaXNv bik7CisJICAgICAgb3B0X3Jlc3VsdCByZXMKKwkJPSBwcm9jZXNzX3VzZSAoc3RtdF92aW5mbywg Z2ltcGxlX2NvbmRfbGhzIChjb25kKSwKKwkJCSAgICAgICBsb29wX3ZpbmZvLCByZWxldmFudCwg JndvcmtsaXN0LCBmYWxzZSk7CisJICAgICAgaWYgKCFyZXMpCisJCXJldHVybiByZXM7CisJICAg ICAgcmVzID0gcHJvY2Vzc191c2UgKHN0bXRfdmluZm8sIGdpbXBsZV9jb25kX3JocyAoY29uZCks CisJCQkJbG9vcF92aW5mbywgcmVsZXZhbnQsICZ3b3JrbGlzdCwgZmFsc2UpOworCSAgICAgIGlm ICghcmVzKQorCQlyZXR1cm4gcmVzOwogICAgICAgICAgICAgfQogCSAgZWxzZSBpZiAoZ2NhbGwg KmNhbGwgPSBkeW5fY2FzdCA8Z2NhbGwgKj4gKHN0bXRfdmluZm8tPnN0bXQpKQogCSAgICB7CkBA IC04MjAsNiArODM1LDggQEAgdmVjdF9tYXJrX3N0bXRzX3RvX2JlX3ZlY3Rvcml6ZWQgKGxvb3Bf dmVjX2luZm8gbG9vcF92aW5mbywgYm9vbCAqZmF0YWwpCiAJCSAgICByZXR1cm4gcmVzOwogCQl9 CiAJICAgIH0KKwkgIGVsc2UKKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwogICAgICAgICB9CiAg ICAgICBlbHNlCiAJRk9SX0VBQ0hfUEhJX09SX1NUTVRfVVNFICh1c2VfcCwgc3RtdF92aW5mby0+ c3RtdCwgaXRlciwgU1NBX09QX1VTRSkKQEAgLTEzMDQ0LDExICsxMzA2MSwxMiBAQCB2ZWN0X2Fu YWx5emVfc3RtdCAodmVjX2luZm8gKnZpbmZvLAogCQkJICAgICBub2RlX2luc3RhbmNlLCBjb3N0 X3ZlYyk7CiAgICAgICBpZiAoIXJlcykKIAlyZXR1cm4gcmVzOwotICAgfQorICAgIH0KIAogICBz d2l0Y2ggKFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5mbykpCiAgICAgewogICAgICAgY2Fz ZSB2ZWN0X2ludGVybmFsX2RlZjoKKyAgICAgIGNhc2UgdmVjdF9jb25kaXRpb25fZGVmOgogICAg ICAgICBicmVhazsKIAogICAgICAgY2FzZSB2ZWN0X3JlZHVjdGlvbl9kZWY6CkBAIC0xMzA4MSw2 ICsxMzA5OSw3IEBAIHZlY3RfYW5hbHl6ZV9zdG10ICh2ZWNfaW5mbyAqdmluZm8sCiAgICAgewog ICAgICAgZ2NhbGwgKmNhbGwgPSBkeW5fY2FzdCA8Z2NhbGwgKj4gKHN0bXRfaW5mby0+c3RtdCk7 CiAgICAgICBnY2NfYXNzZXJ0IChTVE1UX1ZJTkZPX1ZFQ1RZUEUgKHN0bXRfaW5mbykKKwkJICB8 fCBnaW1wbGVfY29kZSAoc3RtdF9pbmZvLT5zdG10KSA9PSBHSU1QTEVfQ09ORAogCQkgIHx8IChj YWxsICYmIGdpbXBsZV9jYWxsX2xocyAoY2FsbCkgPT0gTlVMTF9UUkVFKSk7CiAgICAgICAqbmVl ZF90b192ZWN0b3JpemUgPSB0cnVlOwogICAgIH0KQEAgLTEzODU1LDYgKzEzODc0LDggQEAgdmVj dF9pc19zaW1wbGVfdXNlICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdCwgc2xw X3RyZWUgc2xwX25vZGUsCiAJICBlbHNlCiAJICAgICpvcCA9IGdpbXBsZV9vcCAoYXNzLCBvcGVy YW5kICsgMSk7CiAJfQorICAgICAgZWxzZSBpZiAoZ2NvbmQgKmNvbmQgPSBkeW5fY2FzdCA8Z2Nv bmQgKj4gKHN0bXQtPnN0bXQpKQorCSpvcCA9IGdpbXBsZV9vcCAoY29uZCwgb3BlcmFuZCk7CiAg ICAgICBlbHNlIGlmIChnY2FsbCAqY2FsbCA9IGR5bl9jYXN0IDxnY2FsbCAqPiAoc3RtdC0+c3Rt dCkpCiAJKm9wID0gZ2ltcGxlX2NhbGxfYXJnIChjYWxsLCBvcGVyYW5kKTsKICAgICAgIGVsc2UK QEAgLTE0NDY1LDYgKzE0NDg2LDggQEAgdmVjdF9nZXRfdmVjdG9yX3R5cGVzX2Zvcl9zdG10ICh2 ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLAogICAqbnVuaXRzX3ZlY3R5 cGVfb3V0ID0gTlVMTF9UUkVFOwogCiAgIGlmIChnaW1wbGVfZ2V0X2xocyAoc3RtdCkgPT0gTlVM TF9UUkVFCisgICAgICAvKiBBbGxvdyB2ZWN0b3IgY29uZGl0aW9uYWxzIHRocm91Z2ggaGVyZS4g ICovCisgICAgICAmJiAhaXNfYSA8Z2NvbmQgKj4gKHN0bXQpCiAgICAgICAvKiBNQVNLX1NUT1JF IGhhcyBubyBsaHMsIGJ1dCBpcyBvay4gICovCiAgICAgICAmJiAhZ2ltcGxlX2NhbGxfaW50ZXJu YWxfcCAoc3RtdCwgSUZOX01BU0tfU1RPUkUpKQogICAgIHsKQEAgLTE0NDgxLDcgKzE0NTA0LDcg QEAgdmVjdF9nZXRfdmVjdG9yX3R5cGVzX2Zvcl9zdG10ICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRf dmVjX2luZm8gc3RtdF9pbmZvLAogCX0KIAogICAgICAgcmV0dXJuIG9wdF9yZXN1bHQ6OmZhaWx1 cmVfYXQgKHN0bXQsCi0JCQkJICAgICAibm90IHZlY3Rvcml6ZWQ6IGlycmVndWxhciBzdG10LiVH Iiwgc3RtdCk7CisJCQkJICAgICAibm90IHZlY3Rvcml6ZWQ6IGlycmVndWxhciBzdG10OiAlRyIs IHN0bXQpOwogICAgIH0KIAogICB0cmVlIHZlY3R5cGU7Cg== --_002_VI1PR08MB53258543AD74E1789EEFF519FF84AVI1PR08MB5325eurp_--