From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2052.outbound.protection.outlook.com [40.107.249.52]) by sourceware.org (Postfix) with ESMTPS id 79F0D3857426 for ; Fri, 23 Sep 2022 09:25:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 79F0D3857426 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-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=kCD8kMqKjH1RckFU2NitX90+mSpL/nsrTRPiQb3vmZbh9fDgXQsZT1zVJ9kQCdtgh5vV2/RpPwACNmUW00sLdrO19cRpregwDWnuYfYelkA4/PNsTZmG9/sETLO4PRPDt+BUdKxDIingG8sDxuiiaqb/KwboBbNvk17E0dZ7r1Eq2LXnSlIhCEEWwLJOniIAyfpICv+RTgWqZpFs3Wt+1UGT7BI2KsSIynnVbPnsGLAvedCJdj9C5hzOBAzmDmShG/P/7J+WdRFNF0O3AZf5ScWdCITzBJXHTM+nb06RsiQwu1f9rWFv/xHin7d+LFPaI/ovCkZO6ooG43GY7+qdhw== 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=xhhzAx0tW7G2Y3mwpnAG5/cEdbKem9EkBLvWN32oP9M=; b=Dap1CxlXsrxzgQ29se3EKsyjkNI/TDvfjqjwsoPhW8634mzoZVEZAS303KlL9s37UjyFWYEnRarofZmuUS4Z58PbvHvddKcxmSxcE90Q1jzLCHeCHaJxEo8vTApkVDLOgDljgt29EipjF3HnDWZxnvmxj9uF5x8M+GGuy2sEIAsPqK3L2ntjle0peoLfAyBK6TzzdYSvhrXvuGFeZBBFLV1+7gTG5pMWzl17q3MSmG2jWbY9xHagUNJc+PeZME063yTQT9A1mT1CPqWWSM6bUgauykYcfGSPTvVAsZqCWzG99TyfVnVO3qr3xvXwyKUTaTSKN/6Rg1GNuT/oP0Zm4Q== 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=xhhzAx0tW7G2Y3mwpnAG5/cEdbKem9EkBLvWN32oP9M=; b=E0RMb3/vL+BJZYk/SoZgwKi9P/xQ7LaZJOnrM4OOwUf36rb/AE1UhtR7gJjvSWhHGSkpc/n3y7mw7NKXqaSzwZxLy9sUzbxW7QG3UgeSz2zPuRtb0PxqOCVFIuOCqztXP/HoWxMlG17EqUH+07MCwr7gQbegOQI1ydPcEufCOb8= Received: from AM5PR0701CA0061.eurprd07.prod.outlook.com (2603:10a6:203:2::23) by AS8PR08MB7910.eurprd08.prod.outlook.com (2603:10a6:20b:50b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.17; Fri, 23 Sep 2022 09:25:42 +0000 Received: from AM7EUR03FT031.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:2:cafe::35) by AM5PR0701CA0061.outlook.office365.com (2603:10a6:203:2::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.7 via Frontend Transport; Fri, 23 Sep 2022 09:25:42 +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 AM7EUR03FT031.mail.protection.outlook.com (100.127.140.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.14 via Frontend Transport; Fri, 23 Sep 2022 09:25:42 +0000 Received: ("Tessian outbound 0a0431bdcdb4:v124"); Fri, 23 Sep 2022 09:25:41 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 417109b131833379 X-CR-MTA-TID: 64aa7808 Received: from 7568a7d3d890.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 76614706-8C99-417B-B860-C4B8D2534FAE.1; Fri, 23 Sep 2022 09:25:34 +0000 Received: from EUR03-AM7-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7568a7d3d890.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 23 Sep 2022 09:25:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LPBwSaiXEl2dSzOD1TvBrW96wHEqAefaxmYYO//ZYIptwyGh4Kn53I8msDdkYyMvNXPCzSVkM2ga6xZnlvgrY9StKlAqJMe6Ot7Ii0tgluOfih+VZ+LZzvBoeGqFM9Cnm/g0BflAhIwBKCdeQIDemnLqPs5iwJo86oOojKahuKubil9QG0P7UdED/pC6ymO7ogvFG7C6jaKiz4jLb9xkmtoHqy3+1iW3OJXJt+CijZqAhJvQFWj888eKJY+TbscolABwudYPa+tVmmPonLfyvwzazEoYgmcS1Tk2a3irffO+lAQghFiP0qqZ8JAGLM+V1kIxbRQ3QfmxoPvPpIy2TA== 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=xhhzAx0tW7G2Y3mwpnAG5/cEdbKem9EkBLvWN32oP9M=; b=IEqLY6Iy0SOn/COncPNlQbQJpfiQl/r93VAB1N7iaOggwEsIouxGywqLf4UgpdSUYAlEh+of6lbNaUEQdDSXSE1xIhVjemSdZNMyFz/iVQtCdwmw1xImabhVZsHF6FBuqn10MThFftlfNxUpYe9JVUIrsMoLKBJ0JsZLHyP+d2fsw21wQCmghDTJPw8Ilm9q7pAw7wwsYrRJ9bQ/a6PO+sU4sRAmPN7SlMkewaz9oKBT7qHCuiLTtBwlWIRpaWkS2E4uoIVm8zYnK8fffPu5owUnw5OQ6CGpi64PMFzYkkbywW+cQVG149EdJeKIeVlGYhkKRamx0+n5KbivAuDgCw== 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=xhhzAx0tW7G2Y3mwpnAG5/cEdbKem9EkBLvWN32oP9M=; b=E0RMb3/vL+BJZYk/SoZgwKi9P/xQ7LaZJOnrM4OOwUf36rb/AE1UhtR7gJjvSWhHGSkpc/n3y7mw7NKXqaSzwZxLy9sUzbxW7QG3UgeSz2zPuRtb0PxqOCVFIuOCqztXP/HoWxMlG17EqUH+07MCwr7gQbegOQI1ydPcEufCOb8= 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 AS2PR08MB8479.eurprd08.prod.outlook.com (2603:10a6:20b:55d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.16; Fri, 23 Sep 2022 09:25:33 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40%4]) with mapi id 15.20.5632.021; Fri, 23 Sep 2022 09:25:33 +0000 Date: Fri, 23 Sep 2022 10:25:26 +0100 From: Tamar Christina To: gcc-patches@gcc.gnu.org Cc: nd@arm.com, Richard.Earnshaw@arm.com, Marcus.Shawcroft@arm.com, Kyrylo.Tkachov@arm.com, richard.sandiford@arm.com Subject: [PATCH 2/2]AArch64 Extend tbz pattern to allow SI to SI extensions. Message-ID: Content-Type: multipart/mixed; boundary="gQTT0JmEHulR865y" Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: BN1PR14CA0012.namprd14.prod.outlook.com (2603:10b6:408:e3::17) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB5325:EE_|AS2PR08MB8479:EE_|AM7EUR03FT031:EE_|AS8PR08MB7910:EE_ X-MS-Office365-Filtering-Correlation-Id: fe742e4c-8ce4-48b9-6323-08da9d459609 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: m+fwuIirMfbDZybEE/nLuWzyztm9uZIc5bndc53qaS9F4TLJdhgUM+kw7ZB7EWALqUgR2CC0D7oVusSB71nvVHX7JYo7epkhn5I6R9YetXmMywcsLi3VndvLrRZ5fFqqVqlADVC21XVTajrUmfhjEdqEP33DgBbwj6xeXbBsfiT61ScrSihGr4uFrHycc8v2jZBEOgLFIzdFSuCZROxShaT+h0Bp0zbovv3INl5VC5peAaoxv7sW8605e/yDh+rdiYtWpx3BHvVhg9TIsu+5odVvsiyYBSyMrzcSGGlt2WdK5iBMNUlY6p1/xMuNsva+EUDSXg5Y8ctp1X9nD+2bCXb0ougK9Kg1Kuo/pnohNtq/4CtRnGhu6rftrXWbaABrnLyMQSzp/DHD5o+pIuGhtoqbvU0+BuKYQ5wlTNSI/dkCtLUFh8fCavPEruIgIMU61M7JtGS9IxkigocKdCsxiynodwjyChMdxGT2xOEVAFqU6vvkNKrqygQ+l2p+6mNjTTDANb0UcM6vw8hyDO76aT30klqJaO2S9OWXGpWd9e0+y2TF9yrahf8U8HWfFMdpcaXclA0IeEYV+fBsh7z3dkVEef35sF81tzBBtGnYEUDTfRxNJQ02pSm1kEdk4OwmnPLz3FF8etcyjn0l8sLIavJufZBLgbA/fMUMjJHDBBwqSs+u0Cm7zzaNrqTMZmZDCuMFnWsI6f0i43IqIdSBNXjXVPC4NCA5JBasaKPxASb93eQb+cXIr0wK+Hz3rQBmbRAe9yVKvz1XqdHlT6sm0OBdBBa59+dXNq4TIkqcCPw= 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:(13230022)(4636009)(136003)(396003)(366004)(346002)(376002)(39860400002)(451199015)(8936002)(84970400001)(6506007)(26005)(235185007)(66946007)(66476007)(66556008)(6916009)(186003)(316002)(2616005)(5660300002)(8676002)(4743002)(38100700002)(33964004)(44832011)(86362001)(2906002)(4326008)(6512007)(41300700001)(36756003)(44144004)(6666004)(6486002)(478600001)(2700100001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8479 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: AM7EUR03FT031.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dba85ecb-7f0e-4406-09fe-08da9d459075 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Z80U6YLgj83/CEfoBppl1jb8pX+0VicmqPQtzDuQ7xOenH3utcMA3OvBEAg/VzauCGB12Bc+amwmspjwP4RlpNki88B67Q/ie4XH7EXGto7BvErsgcbme4PGbg9ei2gS5AF1XWpSgAejLwqxrh7qiwnRP96gHpXxHWaCmi/NHHvnNvbkOBehn/Q5WZW69ViFDvcVToKie1jGx+aU1ICuWo97sDrHl9N7KXfIRb+5vyQzkYGgz9rEl7mMl6KJnkAWdLup3qggrRauHjDUrbbwugN9W6U7juEDf4ESW3ml1VtOjG2MbrZktLzy7JE7o16ZEruOBcoDsn5szPTXDF6fgeDktTUCjgH3FUKsrk9+9ERAlrdBpw0eOqPNet+WxOa1Ynw5K5A29SHySBRfdtV+07/NgJhcdGnMX3Skn6wfFNOxnH5XlAj2huitbW4BHgRSfi/obEEMmU5Nc4TLnkRMv8KYRIIfHTId1EXCkE8LMlIJu7tmXGwJuvOilfo+u6NjARhm4GvgqqLZQZjKGi5aW5Arfr9eTRq0YJhKQuCk62o8nZlc8r4qYGyPgkkPdKI4FTzEi497DYpB2fVsf+mLmOtEXAXJrnlsZpYnYGToZNLKqFCzM4BbJZuikzQyPQi64HMaaUqd0eL/CdW0zIjewYmV+oeiAxR1Nl2/GP8fAMVndJq+37xwy074G3CVvOZ6CGgeGWEW2JqSDNXtcieumBHANDWqHXVLER2BLA3rpxANrKXN0hk0dyQBADkPCBYq13Mv1mUppPgn6PRaxhOJwkVRDeSDcP+r6OdBKJ2t7G+B0fdQKKZghN2nBY2SDd5h0swxe1d5G1J/JBLi2tjPTQ== 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:(13230022)(4636009)(396003)(376002)(136003)(39860400002)(346002)(451199015)(46966006)(36840700001)(40470700004)(8936002)(6666004)(6506007)(356005)(86362001)(33964004)(40480700001)(70586007)(44144004)(4326008)(40460700003)(8676002)(6916009)(70206006)(82310400005)(81166007)(36756003)(316002)(41300700001)(5660300002)(235185007)(478600001)(47076005)(2616005)(2906002)(36860700001)(6486002)(186003)(82740400003)(336012)(84970400001)(26005)(6512007)(4743002)(44832011)(2700100001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2022 09:25:42.1067 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fe742e4c-8ce4-48b9-6323-08da9d459609 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: AM7EUR03FT031.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7910 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,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: --gQTT0JmEHulR865y Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Hi All, This adds additional recognition of & 1 into the tbz/tbnz pattern. Concretely with the mid-end changes this changes void g1(bool x) { if (__builtin_expect (x, 0)) h (); } from tst w0, 255 bne .L7 to tbnz w0, #0, .L5 This pattern occurs ~120,000 times in SPECCPU 20127, basically on every boolean comparison. Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * config/aarch64/aarch64.md (*tb1): Renamed this ... (*tb1): ... To this. * config/aarch64/iterators.md (GPI2): New. gcc/testsuite/ChangeLog: * gcc.target/aarch64/tbz_1.c: New test. --- inline copy of patch -- diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 6aa1fb4be003f2027d63ac69fd314c2bbc876258..3faa03f453c94665d9d82225f180d8afdcd0b5fe 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -943,31 +943,33 @@ (define_insn "*cb1" (const_int 1)))] ) -(define_insn "*tb1" +(define_insn "*tb1" [(set (pc) (if_then_else - (EQL (zero_extract:DI (match_operand:GPI 0 "register_operand" "r") - (const_int 1) - (match_operand 1 - "aarch64_simd_shift_imm_" "n")) + (EQL (zero_extract:GPI2 + (match_operand:GPI 0 "register_operand" "r") + (const_int 1) + (match_operand 1 "aarch64_simd_shift_imm_" "n")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc))) (clobber (reg:CC CC_REGNUM))] - "!aarch64_track_speculation" + "!aarch64_track_speculation + && known_ge (GET_MODE_SIZE (mode), + GET_MODE_SIZE (mode))" { if (get_attr_length (insn) == 8) { if (get_attr_far_branch (insn) == 1) return aarch64_gen_far_branch (operands, 2, "Ltb", - "\\t%0, %1, "); + "\\t%0, %1, "); else { operands[1] = GEN_INT (HOST_WIDE_INT_1U << UINTVAL (operands[1])); - return "tst\t%0, %1\;\t%l2"; + return "tst\t%0, %1\;\t%l2"; } } else - return "\t%0, %1, %l2"; + return "\t%0, %1, %l2"; } [(set_attr "type" "branch") (set (attr "length") diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 89ca66fd291b60a28979785706ecc5345ea86744..f6b2e7a83c63cab73947b6bd61b499b4b57d14ac 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -28,6 +28,8 @@ (define_mode_iterator CCFP_CCFPE [CCFP CCFPE]) ;; Iterator for General Purpose Integer registers (32- and 64-bit modes) (define_mode_iterator GPI [SI DI]) +;; Copy of the above iterator +(define_mode_iterator GPI2 [SI DI]) ;; Iterator for HI, SI, DI, some instructions can only work on these modes. (define_mode_iterator GPI_I16 [(HI "AARCH64_ISA_F16") SI DI]) diff --git a/gcc/testsuite/gcc.target/aarch64/tbz_1.c b/gcc/testsuite/gcc.target/aarch64/tbz_1.c new file mode 100644 index 0000000000000000000000000000000000000000..6a75eb4e7aedbfa3ae329358c6ee4d675704a074 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/tbz_1.c @@ -0,0 +1,32 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-O2 -std=c99 -fno-unwind-tables -fno-asynchronous-unwind-tables" } */ +/* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */ + +#include // Type your code here, or load an example. + +void h(void); + +/* +** g1: +** tbnz w[0-9], #?0, .L([0-9]+) +** ret +** ... +*/ +void g1(bool x) +{ + if (__builtin_expect (x, 0)) + h (); +} + +/* +** g2: +** tbz w[0-9]+, #?0, .L([0-9]+) +** b h +** ... +*/ +void g2(bool x) +{ + if (__builtin_expect (x, 1)) + h (); +} + -- --gQTT0JmEHulR865y Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="rb16249.patch" diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 6aa1fb4be003f2027d63ac69fd314c2bbc876258..3faa03f453c94665d9d82225f180d8afdcd0b5fe 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -943,31 +943,33 @@ (define_insn "*cb1" (const_int 1)))] ) -(define_insn "*tb1" +(define_insn "*tb1" [(set (pc) (if_then_else - (EQL (zero_extract:DI (match_operand:GPI 0 "register_operand" "r") - (const_int 1) - (match_operand 1 - "aarch64_simd_shift_imm_" "n")) + (EQL (zero_extract:GPI2 + (match_operand:GPI 0 "register_operand" "r") + (const_int 1) + (match_operand 1 "aarch64_simd_shift_imm_" "n")) (const_int 0)) (label_ref (match_operand 2 "" "")) (pc))) (clobber (reg:CC CC_REGNUM))] - "!aarch64_track_speculation" + "!aarch64_track_speculation + && known_ge (GET_MODE_SIZE (mode), + GET_MODE_SIZE (mode))" { if (get_attr_length (insn) == 8) { if (get_attr_far_branch (insn) == 1) return aarch64_gen_far_branch (operands, 2, "Ltb", - "\\t%0, %1, "); + "\\t%0, %1, "); else { operands[1] = GEN_INT (HOST_WIDE_INT_1U << UINTVAL (operands[1])); - return "tst\t%0, %1\;\t%l2"; + return "tst\t%0, %1\;\t%l2"; } } else - return "\t%0, %1, %l2"; + return "\t%0, %1, %l2"; } [(set_attr "type" "branch") (set (attr "length") diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 89ca66fd291b60a28979785706ecc5345ea86744..f6b2e7a83c63cab73947b6bd61b499b4b57d14ac 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -28,6 +28,8 @@ (define_mode_iterator CCFP_CCFPE [CCFP CCFPE]) ;; Iterator for General Purpose Integer registers (32- and 64-bit modes) (define_mode_iterator GPI [SI DI]) +;; Copy of the above iterator +(define_mode_iterator GPI2 [SI DI]) ;; Iterator for HI, SI, DI, some instructions can only work on these modes. (define_mode_iterator GPI_I16 [(HI "AARCH64_ISA_F16") SI DI]) diff --git a/gcc/testsuite/gcc.target/aarch64/tbz_1.c b/gcc/testsuite/gcc.target/aarch64/tbz_1.c new file mode 100644 index 0000000000000000000000000000000000000000..6a75eb4e7aedbfa3ae329358c6ee4d675704a074 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/tbz_1.c @@ -0,0 +1,32 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-O2 -std=c99 -fno-unwind-tables -fno-asynchronous-unwind-tables" } */ +/* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */ + +#include // Type your code here, or load an example. + +void h(void); + +/* +** g1: +** tbnz w[0-9], #?0, .L([0-9]+) +** ret +** ... +*/ +void g1(bool x) +{ + if (__builtin_expect (x, 0)) + h (); +} + +/* +** g2: +** tbz w[0-9]+, #?0, .L([0-9]+) +** b h +** ... +*/ +void g2(bool x) +{ + if (__builtin_expect (x, 1)) + h (); +} + --gQTT0JmEHulR865y--