From patchwork Wed Sep 20 16:07:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 142500 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp4251374vqi; Wed, 20 Sep 2023 09:09:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFGWATde6A09yvIjNBG3AxMhBYlkBgnP6L2eGsWSi81FoG6fL4j6+ZnSs5FJWT2QLKeMPK1 X-Received: by 2002:a05:6402:1857:b0:523:41e1:705e with SMTP id v23-20020a056402185700b0052341e1705emr2362023edy.21.1695226160638; Wed, 20 Sep 2023 09:09:20 -0700 (PDT) Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id c21-20020aa7c755000000b00532e4b0587csi2299904eds.47.2023.09.20.09.09.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 09:09:20 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=FCPc6XbV; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=FCPc6XbV; arc=fail (signature failed); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BC6BF3856DEA for ; Wed, 20 Sep 2023 16:08:43 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2082.outbound.protection.outlook.com [40.107.105.82]) by sourceware.org (Postfix) with ESMTPS id 8A8A23858D3C for ; Wed, 20 Sep 2023 16:08:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8A8A23858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=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=JssY7FdzWwPPSK1pAyJtzG8jymbSyHwHEFiM6LX0ZA4=; b=FCPc6XbVT0sdE/vLm24S5LhxRqF6/4kh3qLuvV5piF8YWWFS1ZiFak77s4CBd1aQB8mYC4jJFU5uqIgQWiUAcYl/861F6TUMUo1LfOtq5Fcfb3cVkLihB08EIeoFQdpsLHe2FzizEia0JMP7c0IqBru74zSx0oqvxUbzk0VXlJY= Received: from AS9PR05CA0281.eurprd05.prod.outlook.com (2603:10a6:20b:492::31) by DB9PR08MB9491.eurprd08.prod.outlook.com (2603:10a6:10:45a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.24; Wed, 20 Sep 2023 16:08:08 +0000 Received: from AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:492:cafe::ea) by AS9PR05CA0281.outlook.office365.com (2603:10a6:20b:492::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.29 via Frontend Transport; Wed, 20 Sep 2023 16:08:08 +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 AM7EUR03FT039.mail.protection.outlook.com (100.127.140.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.20 via Frontend Transport; Wed, 20 Sep 2023 16:08:08 +0000 Received: ("Tessian outbound 1eb4e931b055:v175"); Wed, 20 Sep 2023 16:08:08 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: c6a37ca5dfed6ac0 X-CR-MTA-TID: 64aa7808 Received: from fdf387ffb539.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E940DDB6-17A4-499F-8234-6FD445F983E5.1; Wed, 20 Sep 2023 16:07:56 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id fdf387ffb539.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 20 Sep 2023 16:07:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RQ2deHGQCJ6g3i2Xy0OY2+ImuFtlfluQGw5EkTNQ6CL+eRQOczk1j5sSH+lqk3JRp8bBb7v/vAB1+Xvs8yeQ+90UKHFmwonEsN072oWmuD66fd7txE4JvkH7MOzneO6zwJ72/zi/mHCDp7zBUAhGPRGD2dqmKqo9xWjNgM2yCEMcDkOdLIWKxMNGNEjZvBV7Srlc+m+ZirbUdewxLiEpXOyVjjH5y2N7ufLAsMzjFp8LvPD6D5cVObI4pMJej3LH76gDVTYcLKwnzhyZnZvThhFq5zCAjJ9QqUB01h9ZzWu0uP009sUVwlje+J3vd5Gdo5iIYkEfEXAh0nIW1nsLmQ== 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=JssY7FdzWwPPSK1pAyJtzG8jymbSyHwHEFiM6LX0ZA4=; b=YlX8OLvuZbW5boSYWhZRUt0oNiId3hEvRHHP2ma1N32yX8pO/fcs9Io+t9wEmOqW+1BPhY7vlajdY4+ZmcJ/11kbWQf9ppTAFEiFvDNf/9Lo1JbYi2WIK5tHz353SyIRHQx3eyzTMeQukIGWC6cBx+MAgYQTjHv/nGvCMGaVtXGuKbOxnJXdiSjemHjLA30y68o9uvGx49cIGX7NEP2b9vmMoh2wMpJ9Mb588zJrUHcK9iV8tAtDCrw2uTEDGSaBI2P2Hlaq71kY6M5GEE0abkFF912KtkdOzVMdVTdTcjlHqH7OyEQzRJiHN2F78bM5Tp+BXXc+BUTx8UX/e+SlCw== 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=JssY7FdzWwPPSK1pAyJtzG8jymbSyHwHEFiM6LX0ZA4=; b=FCPc6XbVT0sdE/vLm24S5LhxRqF6/4kh3qLuvV5piF8YWWFS1ZiFak77s4CBd1aQB8mYC4jJFU5uqIgQWiUAcYl/861F6TUMUo1LfOtq5Fcfb3cVkLihB08EIeoFQdpsLHe2FzizEia0JMP7c0IqBru74zSx0oqvxUbzk0VXlJY= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by GV1PR08MB7988.eurprd08.prod.outlook.com (2603:10a6:150:9c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.26; Wed, 20 Sep 2023 16:07:53 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::ff3d:6e95:9971:a7e]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::ff3d:6e95:9971:a7e%5]) with mapi id 15.20.6792.026; Wed, 20 Sep 2023 16:07:53 +0000 From: Wilco Dijkstra To: GCC Patches CC: Richard Sandiford Subject: [PATCH v2] AArch64: Fix memmove operand corruption [PR111121] Thread-Topic: [PATCH v2] AArch64: Fix memmove operand corruption [PR111121] Thread-Index: AQHZ69xJqBSYSxPkjUeALF94lur7PA== Date: Wed, 20 Sep 2023 16:07:53 +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_|GV1PR08MB7988:EE_|AM7EUR03FT039:EE_|DB9PR08MB9491:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a1945f9-3ab0-4e81-8041-08dbb9f3c7fa 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: ebC9xht5abKv+47SOQZiVgM+/BtHqiwscZ80dPfCCllFwELhSnDRegxkwUTXHYNdUvuntR7Ge0YjFjdiQGBf2vVuFHuEuPTqTSfanySrdTU2whiN0BV6uYy3qPfxBy+Z/oSLFiuKxNNT01B0Jr7GEKNS4kc9JPfElT/sOr+ekPlsiVUQNvYTrbSV8AIkrlF6mIFgv+5VYOFVOKt64FFQkNW+QUr1iEFOUxmU3SOEgWAz74r7p8vbmVVJnpZO92nB2bjGoB4kewAqToPDuixTuYzpq7NyvRyHIKVwLbPPyZS7bHfotfon3cX4Muoor5Jim7w8xUoHdn0ipe7adp1WNb5ztMpC2bxN2k8iA+qqGukpptP9vsPEmyGvCsrv8RvvT6OtyEyqMY9fXe21Tc3HV1pheUThyORKHYkz+KTfCI9XtYAimPe9peXNS7gabsHeaOkb9swfmLclqJWunl3l7YYSqv2J4RzZTO2JUoNWmf+7xCf/7eIh/nQxj40yhdJzycl0iAu1V3XQNUbkxyKRl8JugniBKSE8yFKqJnTr4mHpLop9hJZRC4CVdzt4oVrsgNUS48E5/XHOd3xXP8Pw+7dWbQJFwZBNlkcq7ycrxPw= 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)(136003)(366004)(396003)(376002)(39860400002)(346002)(186009)(1800799009)(451199024)(26005)(52536014)(8676002)(8936002)(122000001)(4326008)(83380400001)(33656002)(2906002)(55016003)(6506007)(86362001)(7696005)(5660300002)(71200400001)(84970400001)(6916009)(64756008)(9686003)(478600001)(66946007)(76116006)(91956017)(41300700001)(38100700002)(66446008)(66476007)(66556008)(316002)(38070700005); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7988 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: AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e8b14177-097b-43fb-86b6-08dbb9f3befe X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vdP5DjMpPhMLT+Ng29kbejgBQonm+g82xRkV82VGkRYt7lrD9CtbFukWX8sXat2l0wuqb1jRYyWwTwAM8iLUdJG6aDjOQSJqYutRp6eujEsLKC2W5hSMx3EZYZu/vPvjeh/b8EbDbAyF4y7tHBYMPBHi92MJD1XBGQMDiuIt5lsAbWd38EuK4dOvzIUxHPmuZbY5gOVXybN7xrXIhwprfZqWOPnxsThd+gaehX6DlwJ2warL0BnZ1HbXTCIBi2Yz5NsgOgSVffpPqhHyGQHRK5aYpWw9LIKYHe3q/0+kv4mRJMxkNpqrIvU2MJ9OcumkipUJSmq3KdttS2v815sE7QkJ8zqZH9D7qldVoAuCqchC6lIJcixMi/hov7XaMMlEwFOiCGdhgRzNdlY6QvE+gPKrPgy7ubmIhx4DQzWGAXlRsARgJgBvq12tmlBIS/u1qPFz8v982449z8jejUt8AMQdOWL2+ZEbncKzmOpk8+rmoW3QuW224u5hqg8MKVD+hh+uUO/QguZ6AtZ3SOLlTVOU/SLq/n8glqbApydeWknjYVgs6W0xovZfRbPt8sW/TSccJU6Tfm2qedGMPzCGptdjNhKnNv4/M8Bv07xPBwlnz9RjQCDZ5Zi+lnQX2ImnCG5ZdMgtDyy198ojTm6flWpVuaTkuoFKUp95dwhg4YcmNIQlBFc06F6ZFxtrdD6FsoT3MtuBVOVOEbHsxF6Gp0IgC4l3bjmIRGHDN7X9cCE= 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)(396003)(376002)(39860400002)(346002)(136003)(1800799009)(82310400011)(186009)(451199024)(36840700001)(46966006)(40470700004)(356005)(82740400003)(26005)(52536014)(81166007)(8936002)(8676002)(36860700001)(40460700003)(4326008)(83380400001)(33656002)(2906002)(47076005)(336012)(55016003)(5660300002)(40480700001)(86362001)(6506007)(7696005)(6916009)(84970400001)(9686003)(478600001)(70206006)(70586007)(41300700001)(316002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2023 16:08:08.5550 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2a1945f9-3ab0-4e81-8041-08dbb9f3c7fa 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: AM7EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9491 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+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777573466459532570 X-GMAIL-MSGID: 1777573466459532570 A MOPS memmove may corrupt registers since there is no copy of the input operands to temporary registers. Fix this by calling aarch64_expand_cpymem_mops. Passes regress/bootstrap, OK for commit? gcc/ChangeLog/ PR target/111121 * config/aarch64/aarch64.md (aarch64_movmemdi): Add new expander. (movmemdi): Call aarch64_expand_cpymem_mops for correct expansion. * config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Add support for memmove. * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem_mops): Add new function. gcc/testsuite/ChangeLog/ PR target/111121 * gcc.target/aarch64/mops_4.c: Add memmove testcases. diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 70303d6fd953e0c397b9138ede8858c2db2e53db..e8d91cba30e32e03c4794ccc24254691d135f2dd 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -765,6 +765,7 @@ bool aarch64_emit_approx_div (rtx, rtx, rtx); bool aarch64_emit_approx_sqrt (rtx, rtx, bool); tree aarch64_vector_load_decl (tree); void aarch64_expand_call (rtx, rtx, rtx, bool); +bool aarch64_expand_cpymem_mops (rtx *, bool); bool aarch64_expand_cpymem (rtx *); bool aarch64_expand_setmem (rtx *); bool aarch64_float_const_zero_rtx_p (rtx); diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 219c4ee6d4cd7522f6ad634c794485841e5d08fa..dd6874d13a75f20d10a244578afc355b25c73da2 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -25228,10 +25228,11 @@ aarch64_copy_one_block_and_progress_pointers (rtx *src, rtx *dst, *dst = aarch64_progress_pointer (*dst); } -/* Expand a cpymem using the MOPS extension. OPERANDS are taken - from the cpymem pattern. Return true iff we succeeded. */ -static bool -aarch64_expand_cpymem_mops (rtx *operands) +/* Expand a cpymem/movmem using the MOPS extension. OPERANDS are taken + from the cpymem/movmem pattern. IS_MEMMOVE is true if this is a memmove + rather than memcpy. Return true iff we succeeded. */ +bool +aarch64_expand_cpymem_mops (rtx *operands, bool is_memmove = false) { if (!TARGET_MOPS) return false; @@ -25243,8 +25244,10 @@ aarch64_expand_cpymem_mops (rtx *operands) rtx dst_mem = replace_equiv_address (operands[0], dst_addr); rtx src_mem = replace_equiv_address (operands[1], src_addr); rtx sz_reg = copy_to_mode_reg (DImode, operands[2]); - emit_insn (gen_aarch64_cpymemdi (dst_mem, src_mem, sz_reg)); - + if (is_memmove) + emit_insn (gen_aarch64_movmemdi (dst_mem, src_mem, sz_reg)); + else + emit_insn (gen_aarch64_cpymemdi (dst_mem, src_mem, sz_reg)); return true; } diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 60133b541e9289610ce58116b0258a61f29bdc00..6d0f072a9dd6d094e8764a513222a9129d8296fa 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -1635,7 +1635,22 @@ (define_expand "cpymemdi" } ) -(define_insn "aarch64_movmemdi" +(define_expand "aarch64_movmemdi" + [(parallel + [(set (match_operand 2) (const_int 0)) + (clobber (match_dup 3)) + (clobber (match_dup 4)) + (clobber (reg:CC CC_REGNUM)) + (set (match_operand 0) + (unspec:BLK [(match_operand 1) (match_dup 2)] UNSPEC_MOVMEM))])] + "TARGET_MOPS" + { + operands[3] = XEXP (operands[0], 0); + operands[4] = XEXP (operands[1], 0); + } +) + +(define_insn "*aarch64_movmemdi" [(parallel [ (set (match_operand:DI 2 "register_operand" "+&r") (const_int 0)) (clobber (match_operand:DI 0 "register_operand" "+&r")) @@ -1668,17 +1683,9 @@ (define_expand "movmemdi" && INTVAL (sz_reg) < aarch64_mops_memmove_size_threshold) FAIL; - rtx addr_dst = XEXP (operands[0], 0); - rtx addr_src = XEXP (operands[1], 0); - - if (!REG_P (sz_reg)) - sz_reg = force_reg (DImode, sz_reg); - if (!REG_P (addr_dst)) - addr_dst = force_reg (DImode, addr_dst); - if (!REG_P (addr_src)) - addr_src = force_reg (DImode, addr_src); - emit_insn (gen_aarch64_movmemdi (addr_dst, addr_src, sz_reg)); - DONE; + if (aarch64_expand_cpymem_mops (operands, true)) + DONE; + FAIL; } ) diff --git a/gcc/testsuite/gcc.target/aarch64/mops_4.c b/gcc/testsuite/gcc.target/aarch64/mops_4.c index 1b87759cb5e8bbcbb58cf63404d1d579d44b2818..dd796115cb4093251964d881e93bf4b98ade0c32 100644 --- a/gcc/testsuite/gcc.target/aarch64/mops_4.c +++ b/gcc/testsuite/gcc.target/aarch64/mops_4.c @@ -50,6 +50,54 @@ copy3 (int *x, int *y, long z, long *res) *res = z; } +/* +** move1: +** mov (x[0-9]+), x0 +** cpyp \[\1\]!, \[x1\]!, x2! +** cpym \[\1\]!, \[x1\]!, x2! +** cpye \[\1\]!, \[x1\]!, x2! +** str x0, \[x3\] +** ret +*/ +void +move1 (int *x, int *y, long z, int **res) +{ + __builtin_memmove (x, y, z); + *res = x; +} + +/* +** move2: +** mov (x[0-9]+), x1 +** cpyp \[x0\]!, \[\1\]!, x2! +** cpym \[x0\]!, \[\1\]!, x2! +** cpye \[x0\]!, \[\1\]!, x2! +** str x1, \[x3\] +** ret +*/ +void +move2 (int *x, int *y, long z, int **res) +{ + __builtin_memmove (x, y, z); + *res = y; +} + +/* +** move3: +** mov (x[0-9]+), x2 +** cpyp \[x0\]!, \[x1\]!, \1! +** cpym \[x0\]!, \[x1\]!, \1! +** cpye \[x0\]!, \[x1\]!, \1! +** str x2, \[x3\] +** ret +*/ +void +move3 (int *x, int *y, long z, long *res) +{ + __builtin_memmove (x, y, z); + *res = z; +} + /* ** set1: ** mov (x[0-9]+), x0