From patchwork Tue Oct 24 17:27:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 1854578 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=pqPP4Ofo; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=pqPP4Ofo; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SFJtF6GNTz23jn for ; Wed, 25 Oct 2023 04:28:05 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4796A3858433 for ; Tue, 24 Oct 2023 17:28:03 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2051.outbound.protection.outlook.com [40.107.21.51]) by sourceware.org (Postfix) with ESMTPS id 318DC3858CDA for ; Tue, 24 Oct 2023 17:27:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 318DC3858CDA 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 318DC3858CDA Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.51 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1698168470; cv=pass; b=wDdiBEo8cl+R80Km7JLTFpAuZhhTLxrrOrTHB4dq7e0kN9eJevTIpzhwGwra/J0/KR2JQszdr/yjm/yaZM61nNKs7uqc+qrTD70r77NVTXweTjNxRLpy4x0oUxjIypd45plOtSSWO0G7f2ZVIKoBGZJrgpYNEIU+iWiMek+45cw= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1698168470; c=relaxed/simple; bh=v70K5cL0SMKAjcU09CDmCC5DsgbdQLUB5f7jaMxyV2I=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=jto1pgNwSRrEH2eajLCUyBcFeBecP/4s3zqpWwxEqPu3mDJSvC9fQ9LB76IEZ6nFPzr5GlW5g7T7z1kIe4xu3J6E7sTZwxAzrdoDu/cufr5n6toHLjxQvnn0MG4hULeeIABYz82jIZFB27K5SKmOqMRKoOowOCWajc3HOb5dD7Q= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=k7R71BXRmYdW3akEGZHboXRnVJwepGHEpfitltW3PsTwJcZPNWSAJihbmiyxxM+YGhPGyQh+3PntMpE51D1kGNY8D8/Zkfdxf9mJWEcthm9moLr6XJOGGb0Ng/pjMkN3YWak5wvZdFwo2FJxXkxeP9lGKApA3zWBGZrieIhR+tzhrlQxM2nmgLdYruWA2hCxM8nKdPE1vnLFM2bJ/q5W46Qz6gwPmhaM4mA6BTotNjyupU0OwJd4W24ITEW288FAnIHI5rnfW6Yc3rcr6+XzUtfatKYWSX2w2GJlmwXAl9dBwj6o4vCqQbOh2MTg/V4YbCM+yo2qbWWsl+ll+vZC7g== 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=lMHvecnvPUZ7DySBZUkBxrg4F1jVNPGMwQ/0aTtx/BI=; b=be57sRBOZW6748fRFmDDKmuT2BLN712KLYOUc/TynTlrk/Z0NcBpQUwnWf0zctBrWzjjyvggaWhCvgnLZ14KQ3/56RDmz+YTyZPteD4d/aRk101vAsRxM2iVg7D8/3lgDy02BIM8N2mL+cqak6MexuMPoh0Cz8Jpm2Ctf2PV6dZpfwJ/WMyPYJlXOWx7RHwErCpEvbf+BthhF9UbVwpSkiqQ6mcqPNIXLwEGE54k4KLyIqgcaqEgZ6lplA3dVgpakJZAswLVXCAictrIEPF7hBvSn/CjArmbvQsRiy7B2k2oWyDDYLMVoA9yZWCXqTTl0h/PPoy7a682W3hSlCvocA== 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=lMHvecnvPUZ7DySBZUkBxrg4F1jVNPGMwQ/0aTtx/BI=; b=pqPP4OfonTjitFxfbDPqgzfcMKsqZgqvnXiQ3e3o+tSTVCp536hCvQ+Z1nR5hfmWjBMHqKZbh/m5/8CFgAbaMMPzG+Bg8fJuzaU5k3+qotoF5tqBm4pHAGkR9Eb657ceIFcWvgrz/myG/uPWjqBA97DNj5Xqs9Xz7m6sVD1KZ6I= Received: from AS9PR05CA0247.eurprd05.prod.outlook.com (2603:10a6:20b:493::11) by PR3PR08MB5610.eurprd08.prod.outlook.com (2603:10a6:102:91::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 17:27:45 +0000 Received: from AM1PEPF000252E1.eurprd07.prod.outlook.com (2603:10a6:20b:493:cafe::c8) by AS9PR05CA0247.outlook.office365.com (2603:10a6:20b:493::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.34 via Frontend Transport; Tue, 24 Oct 2023 17:27:45 +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 AM1PEPF000252E1.mail.protection.outlook.com (10.167.16.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.15 via Frontend Transport; Tue, 24 Oct 2023 17:27:45 +0000 Received: ("Tessian outbound 9e011a9ddd13:v215"); Tue, 24 Oct 2023 17:27:45 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 79c269b1f8c215c6 X-CR-MTA-TID: 64aa7808 Received: from 5b6d4baee4e4.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C17FED69-8087-4F34-B533-3959C448CD96.1; Tue, 24 Oct 2023 17:27:33 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5b6d4baee4e4.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 24 Oct 2023 17:27:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lQJIjyppwhi5SqlT4UCHojqDR52CFg7fWNyNnNN9NltF4LNER9S+JLPnrLgbGrO1nFE1oi9VaHAFPMAjRSXu2JRmTX7Frs8QuJzUE48bQnxli3K1z0r4EDNaTISfbaPBYwn48fWq0vnjo+61XqdE18bO1nSNQGfPo7X5xelIAwqO7XULc93QPUf0fEtpDgess+Wv3kLj/t7IB1x1ZnToASvHawik/tlPZqCsbmU8BEmYyTeY3go/Zxw7ytObDZje4p1ICkcufVeiPSbunFzu0y9WEOBK+B/eWR8aKCCDtgkhRyZJAHihPVuNDZjUCno+nQ4XiJxEuqrfUhL4+SAaQA== 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=lMHvecnvPUZ7DySBZUkBxrg4F1jVNPGMwQ/0aTtx/BI=; b=MCdddQ/0AQH6r+7vZcKd8Zv0z1BFMCtmCy3l/UkdtJjXe3ftYEwNK+dNR5ON6ZxbtwVMq0XUkpeYi8JgLvALzepX+9ewhWrebhw5MHkV437mQ2xb63Kr1WQHl+Q9bP4rB4yfQZI3YQ09ms1az1MYjoTNw1GIzmSoNRqixkHyFwXh4SVxzYbW/srKfYZSCSHFSqIFg67mZqg9NnsFeQVfrBzTymqa/y5Ir74TcLsRIT+NM1GYfrfCPTPNK1yEwbmawYPBwoZd2uIfZe8gFZzfbYgnmlOyXKxMWJZr6/Z9ZaorPJ8gh6u7CJ2tX1+ly/tgWWyJngVXwuhLN/CTGKVqZA== 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=lMHvecnvPUZ7DySBZUkBxrg4F1jVNPGMwQ/0aTtx/BI=; b=pqPP4OfonTjitFxfbDPqgzfcMKsqZgqvnXiQ3e3o+tSTVCp536hCvQ+Z1nR5hfmWjBMHqKZbh/m5/8CFgAbaMMPzG+Bg8fJuzaU5k3+qotoF5tqBm4pHAGkR9Eb657ceIFcWvgrz/myG/uPWjqBA97DNj5Xqs9Xz7m6sVD1KZ6I= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by GVXPR08MB10519.eurprd08.prod.outlook.com (2603:10a6:150:152::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33; Tue, 24 Oct 2023 17:27:31 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::2939:a00c:af3:2551]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::2939:a00c:af3:2551%4]) with mapi id 15.20.6907.032; Tue, 24 Oct 2023 17:27:28 +0000 From: Wilco Dijkstra To: Richard Earnshaw CC: GCC Patches Subject: [PATCH v2] AArch64: Improve immediate generation Thread-Topic: [PATCH v2] AArch64: Improve immediate generation Thread-Index: AQHaBp77EXod+/FsTESgYM4CPhWqNA== Date: Tue, 24 Oct 2023 17:27:28 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|GVXPR08MB10519:EE_|AM1PEPF000252E1:EE_|PR3PR08MB5610:EE_ X-MS-Office365-Filtering-Correlation-Id: 36ef2fc5-4f84-4b68-63e5-08dbd4b68926 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: BLLLjSMBDZ4gayAohdC5MK6rjW7fbjZ2bBiM1Y0htHNJVbyYDcNFgWAu+XqkMBlv1/KEShlYU3Rg2maVHAT0MdATn8lAj3D9Ec2yWTKjxKahpv8bfK5PosFZZ5qHabxidCmUHJQ2r3bHS0IJsfTnsKu4b2LR++cRb0Go5PxVCno4BOfiOEvCDPVtMsGPDfvTQXO6yqR9gRrGIeMdE1FmWA7VqrpsY2LE7nMl4pmSwhddXh2rr/w8fsOXWnL8KktGkjqHoS3PctdAozv5IoJIZqRq4ajw3reLoZZqcruQ6R/OHRR2myAi/8vIxCvEjG/nBfdeJp8ALxDSrJqexBiT6mZPxcsy0JPB2BvYy0p5Vh5DlIqEOy0jEZZEdD29KjeJ3hh+fHxqyZgBAuysA+ikLIgqcOYXwW6cikuRBb2IJNrrcumNLnwBtwkGNPjSD94U4BDw5XDftGhdd5fIxzJhyWH5wz3IvXt4PgvoCq5crSH7NIaIinwKkjgO8MShrr9LAGeq64C2watbgk16BIfYHRgbexiZTehaJ+zPQF9vT3MyJS5GKVMDPikLD0uE1TV3+X40qE6YqO6O5OBSQXUSI8E7KOUjQsXgAWrxJiuCYr2nP37zXZzOGYgcVuWinqDpMR47KBumYwvpOVFoWgdOJNh88/jTnlTZVhpQzinEXdk= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(366004)(396003)(346002)(136003)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799009)(86362001)(55016003)(2906002)(38100700002)(91956017)(41300700001)(66476007)(122000001)(66446008)(316002)(76116006)(66946007)(66556008)(71200400001)(6506007)(478600001)(6636002)(7696005)(9686003)(64756008)(4326008)(5660300002)(52536014)(33656002)(6862004)(8676002)(8936002)(14773004)(84970400001)(26005)(38070700009); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10519 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: AM1PEPF000252E1.eurprd07.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: b178968a-2da7-4d25-dd43-08dbd4b67f42 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: trtTu3qztnatAV01krkjIZhXKbOwOdy7FUYcTSKUdEkjGHs53ySBGPI3ZAuiv5uym/QLWTFVEABgt4xAL7B+sIHy/zfmG+wO5UT9OcHWUL3UK941VfBCeqQGp6+Tfp6WCMjXDJfORg75q4d408BPtdBeC54LyvVqyxODPkxPtKHMMODc5blx43y9bHfIkJ10tkHG4wTyNxBYSfsgzRZpVILAFInSL2koQfa2YB5M7M+Pqy1YZDmOWpusNJxEetMZvXHQxOTwB7/d2WLHMgOjuq+Mq4QR2R2JbuQcPp+J8WJubEKCKSLBpDc3Q8lankojPs+DERYeMmjdFuv3Jddmm0r+jsFC2B+sR04WEwyn/Pa6xYkSAtCQwzf3gt3krL2v0Io0/Dz+IUUp054+TGs8UJdTuSV3rvCXMzBOp0yJIUAUlLa/B3f06An7QUGVlYWjtXQ0UUbWk2Te6kGi6zlY0FAtDIPW66560Jl7U2gvZd22zVhbge5DcldLsP1xRsoPydoadSoJk3FHUGgG7VimkGlTg/XNLIjZLlGeb4+y/b+eRwiOuEILkIiAWvKnykdbrEHSZgJkL0O5avBwzuYnrXysFxeCRPZRQEOedw8cBMysKmFdQdF5AOmSiqVe4ygM1RI+0MLFzzj6u7fozAmaZ/Rok+wiM1FQSExcaozRw3cLBTqxsuj6oexXZN5pkfbo0DoCmI30jvxOayDZlTZ8LZSKwDBeLsjfM8PUN6fNCrY3Vh/u3v/CLOeE691Gj25wB/OYDPpNLcuEcJkN3aL4G7OziTBbUTvujD4KvT4OSvM= 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)(136003)(376002)(346002)(396003)(39860400002)(230922051799003)(1800799009)(186009)(82310400011)(451199024)(64100799003)(46966006)(40470700004)(36840700001)(26005)(84970400001)(2906002)(55016003)(7696005)(41300700001)(36860700001)(5660300002)(52536014)(86362001)(8936002)(6862004)(33656002)(8676002)(4326008)(14773004)(70206006)(356005)(70586007)(478600001)(6506007)(40460700003)(82740400003)(6636002)(81166007)(316002)(336012)(9686003)(40480700001)(47076005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2023 17:27:45.2563 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 36ef2fc5-4f84-4b68-63e5-08dbd4b68926 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: AM1PEPF000252E1.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5610 X-Spam-Status: No, score=-10.6 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org v2: Use check-function-bodies in tests Further improve immediate generation by adding support for 2-instruction MOV/EOR bitmask immediates. This reduces the number of 3/4-instruction immediates in SPECCPU2017 by ~2%. Passes regress, OK for commit? gcc/ChangeLog: * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate) Add support for immediates using MOV/EOR bitmask. gcc/testsuite: * gcc.target/aarch64/imm_choice_comparison.c: Change tests. * gcc.target/aarch64/moveor_imm.c: Add new test. * gcc.target/aarch64/pr106583.c: Change tests. diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 578a253d6e0e133e19592553fc873b3e73f9f218..ed5be2b64c9a767d74e9d78415da964c669001aa 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -5748,6 +5748,26 @@ aarch64_internal_mov_immediate (rtx dest, rtx imm, bool generate, } return 2; } + + /* Try 2 bitmask immediates which are xor'd together. */ + for (i = 0; i < 64; i += 16) + { + val2 = (val >> i) & mask; + val2 |= val2 << 16; + val2 |= val2 << 32; + if (aarch64_bitmask_imm (val2) && aarch64_bitmask_imm (val ^ val2)) + break; + } + + if (i != 64) + { + if (generate) + { + emit_insn (gen_rtx_SET (dest, GEN_INT (val2))); + emit_insn (gen_xordi3 (dest, dest, GEN_INT (val ^ val2))); + } + return 2; + } } /* Try a bitmask plus 2 movk to generate the immediate in 3 instructions. */ diff --git a/gcc/testsuite/gcc.target/aarch64/imm_choice_comparison.c b/gcc/testsuite/gcc.target/aarch64/imm_choice_comparison.c index ebc44d6dbc7287d907603d77d7b54496de177c4b..a1fc90ad73411ae8ed848fa321586afcb8d710aa 100644 --- a/gcc/testsuite/gcc.target/aarch64/imm_choice_comparison.c +++ b/gcc/testsuite/gcc.target/aarch64/imm_choice_comparison.c @@ -1,32 +1,64 @@ /* { dg-do compile } */ /* { dg-options "-O2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ /* Go from four moves to two. */ +/* +** foo: +** mov w[0-9]+, 2576980377 +** movk x[0-9]+, 0x9999, lsl 32 +** ... +*/ + int foo (long long x) { - return x <= 0x1999999999999998; + return x <= 0x0000999999999998; } +/* +** GT: +** mov w[0-9]+, -16777217 +** ... +*/ + int GT (unsigned int x) { return x > 0xfefffffe; } +/* +** LE: +** mov w[0-9]+, -16777217 +** ... +*/ + int LE (unsigned int x) { return x <= 0xfefffffe; } +/* +** GE: +** mov w[0-9]+, 4278190079 +** ... +*/ + int GE (long long x) { return x >= 0xff000000; } +/* +** LT: +** mov w[0-9]+, -16777217 +** ... +*/ + int LT (int x) { @@ -35,6 +67,13 @@ LT (int x) /* Optimize the immediate in conditionals. */ +/* +** check: +** ... +** mov w[0-9]+, -16777217 +** ... +*/ + int check (int x, int y) { @@ -44,11 +83,15 @@ check (int x, int y) return x; } +/* +** tern: +** ... +** mov w[0-9]+, -16777217 +** ... +*/ + int tern (int x) { return x >= 0xff000000 ? 5 : -3; } - -/* baz produces one movk instruction. */ -/* { dg-final { scan-assembler-times "movk" 1 } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/moveor_imm.c b/gcc/testsuite/gcc.target/aarch64/moveor_imm.c new file mode 100644 index 0000000000000000000000000000000000000000..1c0c3f3bf8c588f9661112a8b3f9a72c5ddff95c --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/moveor_imm.c @@ -0,0 +1,63 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** f1: +** mov x0, -6148914691236517206 +** eor x0, x0, -9223372036854775807 +** ret +*/ + +long f1 (void) +{ + return 0x2aaaaaaaaaaaaaab; +} + +/* +** f2: +** mov x0, -1085102592571150096 +** eor x0, x0, -2305843009213693951 +** ret +*/ + +long f2 (void) +{ + return 0x10f0f0f0f0f0f0f1; +} + +/* +** f3: +** mov x0, -3689348814741910324 +** eor x0, x0, -4611686018427387903 +** ret +*/ + +long f3 (void) +{ + return 0xccccccccccccccd; +} + +/* +** f4: +** mov x0, -7378697629483820647 +** eor x0, x0, -9223372036854775807 +** ret +*/ + +long f4 (void) +{ + return 0x1999999999999998; +} + +/* +** f5: +** mov x0, 3689348814741910323 +** eor x0, x0, 864691128656461824 +** ret +*/ + +long f5 (void) +{ + return 0x3f3333333f333333; +} diff --git a/gcc/testsuite/gcc.target/aarch64/pr106583.c b/gcc/testsuite/gcc.target/aarch64/pr106583.c index 0f931580817d78dc1cc58f03b251bd21bec71f59..63df7395edf9491720e3601848e15aa773c51e6d 100644 --- a/gcc/testsuite/gcc.target/aarch64/pr106583.c +++ b/gcc/testsuite/gcc.target/aarch64/pr106583.c @@ -1,41 +1,94 @@ -/* { dg-do assemble } */ -/* { dg-options "-O2 --save-temps" } */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** f1: +** mov x0, -72340172838076674 +** movk x0, 0xfeff, lsl 0 +** movk x0, 0x75fe, lsl 48 +** ret +*/ long f1 (void) { - return 0x7efefefefefefeff; + return 0x75fefefefefefeff; } +/* +** f2: +** mov x0, -6148914691236517206 +** movk x0, 0x5678, lsl 32 +** movk x0, 0x1234, lsl 48 +** ret +*/ + long f2 (void) { return 0x12345678aaaaaaaa; } +/* +** f3: +** mov x0, -3689348814741910324 +** movk x0, 0x5678, lsl 0 +** movk x0, 0x1234, lsl 48 +** ret +*/ + long f3 (void) { return 0x1234cccccccc5678; } +/* +** f4: +** mov x0, 8608480567731124087 +** movk x0, 0x5678, lsl 16 +** movk x0, 0x1234, lsl 32 +** ret +*/ + long f4 (void) { return 0x7777123456787777; } +/* +** f5: +** mov x0, 6148914691236517205 +** movk x0, 0x5678, lsl 0 +** movk x0, 0x1234, lsl 16 +** ret +*/ + long f5 (void) { return 0x5555555512345678; } +/* +** f6: +** mov x0, -4919131752989213765 +** movk x0, 0x5678, lsl 16 +** movk x0, 0x1234, lsl 48 +** ret +*/ + long f6 (void) { return 0x1234bbbb5678bbbb; } +/* +** f7: +** mov x0, 4919131752989213764 +** movk x0, 0x5678, lsl 0 +** movk x0, 0x1234, lsl 32 +** ret +*/ + long f7 (void) { return 0x4444123444445678; } - - -/* { dg-final { scan-assembler-times {\tmovk\t} 14 } } */ -/* { dg-final { scan-assembler-times {\tmov\t} 7 } } */