From patchwork Wed May 31 09:55:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: YunQiang Su X-Patchwork-Id: 70360 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 681F2385770F for ; Wed, 31 May 2023 09:56:42 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on2099.outbound.protection.outlook.com [40.107.215.99]) by sourceware.org (Postfix) with ESMTPS id C80A43858C1F for ; Wed, 31 May 2023 09:56:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C80A43858C1F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=cipunited.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cipunited.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jHBuPgbokdwmYf5bsoWyCCHThAkdRJPoqJX95RLcJUmPVRS3wjPdSrHyEYgzCHcKH1DfAgX+QT+otVPlWH2E7PQr2uVvT1sxvSduK9Z2oeZyALMRa786haGnOlgVsRiu2knij35+QYQqwwlgHOq5yf6m2LrWVKeO37oySRjP8xsQ8mBR8FE0t//5mqlf3ISJ23co4H7egO+Yx5h2iglRGKyCrMYNCtUFkXfAKS/G8Pkfq72siQjvlNJ9SWmHxEwZdT+ni6A94AhB3fTXuyBp4ETuz5np7Z7Si0Aol1jnjD7MK+FTCm7LgcqCQORQ5icEFKrM8VCqLNdRd73dRfMWcg== 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=zAw1rWPjJ1eghSwsRCjGTY8Z4j30YoEjoaL/dfgB+9Y=; b=TsrbFWcTlb9ZTU1hVOUg6xDWYG0XknrpHeJAKQbCsGugnyebWBV0PNw1jrA10Hwc5/8U/Z31LvAxT5SMWljqTZutLTBiXV7l2AVld3kZGMv+VMEuaLVr3HwDo/qhszlDhXKp3YLUfUD6U2liq2A0DxXGPT0Z0CNsdhp2IYiTNzSSDsTc0qIP1jHW0AqPOam4m9tbSc2E4bCMS5qsTWauRsDt+IltXBfD6lXy0Kxgi6Fq0tkbzpuQXnk7lQwzwqHBslBZ28aEod/RNY5lU4C+pUyZW3nsclZ1psnE0GOT5WLzJxD/iWsCvZ05VbQWlWR6NQuaqw0ZVsh//5vjNKvZYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cipunited.com; dmarc=pass action=none header.from=cipunited.com; dkim=pass header.d=cipunited.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cipunited.onmicrosoft.com; s=selector1-cipunited-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zAw1rWPjJ1eghSwsRCjGTY8Z4j30YoEjoaL/dfgB+9Y=; b=AAPSEjXCdWYQr4Aq3lDScxEVSetuRrsW4QXPvj18fk6doOyrqnpZqbQJjsqy5SasGLe7sQ6Mr2zOA9tZ48WcU+971hcRcwJPsuqYdS29EG5J7ReJ00FCDOm1vMgWDTzToDmz1mvikw+eQrhGwOvK6EB0fJgH+VTI1XQzM1avHhY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cipunited.com; Received: from SEZPR04MB6121.apcprd04.prod.outlook.com (2603:1096:101:98::10) by PSBPR04MB3912.apcprd04.prod.outlook.com (2603:1096:301:4::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22; Wed, 31 May 2023 09:56:15 +0000 Received: from SEZPR04MB6121.apcprd04.prod.outlook.com ([fe80::fd0f:3691:40e3:9252]) by SEZPR04MB6121.apcprd04.prod.outlook.com ([fe80::fd0f:3691:40e3:9252%7]) with mapi id 15.20.6455.020; Wed, 31 May 2023 09:56:15 +0000 From: YunQiang Su To: gcc-patches@gcc.gnu.org Cc: macro@orcam.me.uk, jiaxun.yang@flygoat.com, syq@debian.org, richard.sandiford@arm.com, jeffreyalaw@gmail.com, YunQiang Su Subject: [PATCH v2 2/2] MIPS: Don't expand large unaligned block move Date: Wed, 31 May 2023 17:55:51 +0800 Message-Id: <20230531095551.1299186-2-yunqiang.su@cipunited.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230531095551.1299186-1-yunqiang.su@cipunited.com> References: <20230531095551.1299186-1-yunqiang.su@cipunited.com> X-ClientProxiedBy: SG2P153CA0041.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c6::10) To SEZPR04MB6121.apcprd04.prod.outlook.com (2603:1096:101:98::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SEZPR04MB6121:EE_|PSBPR04MB3912:EE_ X-MS-Office365-Filtering-Correlation-Id: f4c60016-19d3-4956-0436-08db61bd45f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YOVlewzRX4Kn9PjJhDDL8MVzbb0HgftmUGDqBlh5Wya4TmMYWSh/3Yae+oYxI229PO0h+I2YpEhnkWSKuV9B1DlkSzE6wwpOpx7pIto+hwbO2f+QVI+M/z/mxwiMiGwpKW2V+6jerc8jteoL47z1U9CXcBrFDcn1pfviQI6AqMOqTIOb4d3Y7yUK1nSYi70hHazBxkuccOEnMmXC70BGuIvFqyrBf8VpslBMBIE2KrrGOCwyqUfVv/tZrJgmxhX32skkADKTNVD+PATGQL//wp3ITJI9Ta31lmMSeYv7wQE89BCc/M4wRl1SCrQ2A79uVUb8ajiwcj/VmCgTnzARt9Ci/hTgGxUja4Xvn2fiiDf+LO2KWhp4b96RER5QfFTvbItVEH91fOcHGiSnRBOBxHFYtHSzRoDsOvRNyxz3Hvm+T2McVCMoKGG1aAV51CXg7pI260StvGS0IlvH5O4quxHQUsMwn7TMND9U4kkJsSh4hX1hIyre1a85A89KzWGCJGaPlJ8Pi6AUpoQgendTAJrgl8OM9nxRhgM5uqP/BI/0l6O+3ddzLykO2dAGetPxrVQkte6TR/vXqtW16TzdQ5sKElLJ6J21oR4BHvuyKuM= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SEZPR04MB6121.apcprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(366004)(39830400003)(346002)(136003)(376002)(396003)(451199021)(6506007)(6512007)(1076003)(26005)(107886003)(66946007)(66476007)(66556008)(6916009)(38350700002)(38100700002)(5660300002)(4326008)(36756003)(8676002)(8936002)(86362001)(83380400001)(41300700001)(316002)(52116002)(6666004)(6486002)(186003)(2906002)(478600001)(84970400001)(2616005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5I9u1hlioTrfSgm0t07V0xtDHkdSM0xVzz2KrkxrQCEMREKUYTNLNTHe7eZ+sWbDyS3J5U8So6reE7xaCcBTqBYLrWZCwQ/NxWzvZ5twPIrb869Mrd+ZoPG8CQVlCq++bRtq3dwb/Stjoco+Qi0K15VNWBb4eBFTq6vwcBauqgNcXBEEDXi1tZhin8/r8ik3ton2uGejrd+VBE0xntu7LSt6TQjIfkcD844JpBp/0Un29asJuu9nN9aj+bTcJXN3hq4ecmbh1uwwdMcchztdAz0Yn/ojwXxB7QW2mx3fcUumz5sgueCc3308BdZdKqEITGeDI6EzVoO55MKsFj5OVLDqt2ly+MytFRkBZsyspLN8g40kiNh8rouvvbaHhQYGCigGfW12bDNZ5T5ZfaQOuolKtYV64RSmqbRamhcUrdTNtPiBbxEfCS0rk1aVkEqeIDFUe+fiOxIUtG4QXOWlvnknLeWfVEcEQlETaE9lxVDqIrv5Q9ZSZ4t2vYB/+FH14PY6i4zjqVOGyOz8l4WYx0gmj2zDVMgv12YR0qDudVSFNUOIa7BnBc+SNLlIAbuIa5cs25z9ch7ZVmn1+2vTo4qaqzOQ2rPDz/fvJ33WNL06u9JS7x+F6XmqpRripRXvYH5ncArn5XDLDqEn3vqtTQwKqLn/Xvfer6q7SK51gPVkayZWUTIgj9XYPWnghz4HTVhoEmtsTIDVTYkAVDV/3ABUpo9aacA2lQFBpFJSHhHqRaMfMu6OzKUVWd/ZAsGc1KtJxki9RzZAIxEBtzGDsPP12k8YgrFozAPv0Wmx+XlVwkMyGF5iVVBVaXNLklyj6bWW834LMuL2jWxSI4P+JLja1yBnNY9l/wQGngFEQxbiVH+RHEjCaKTSU73jTQzGak7PApAqNLQBsOYEtDQ8PjmEc5JMyY7u0kYXvvAYkxrN+TjTq2KqzpjeBNWR2Xf/93/U2UZCGHBgI/d/eyYRh0iX2bNWcf8K0UNxwcY/ooR8iKFIel0FqgDpoToraFLas/6x6XaWG8wIdUx+BIRU23pJudAJS8h9xIigIpJREMfEC3f5iRZqYCUB1MZyiPbuz7qXyfyz6JpD/xQK259NAmJzCMtEx142IETQ8I0qUaVz7izZQHgJjkX/6rQPs6rR7MydP6bnrwMzmSjR6gd1osxbJ/WedKTWjFvjTaula64xxltTpHWEJjiQK+0qmgbTQyYbJPCgBc6udSULXPA+orV/s7LVvrFyRQfYs5CEvvZLwjXetNYulJ9obdUPNOVuICa5tFp5Tj7fukFIO22N+d1nnnDAdSndHQHtXzo5MpfkB3LRO7NiQKBr1DkpS81Lze1oEeYCfm0bewQKtoVEyKL58s9MVtQ7TOyGykKa9YZvEwIDZwYxvL+AGBCE8kzGHr+lUF8MRYueQjEivDuOJioeDRP/yVW7iB30YZBSOQva4zAiDWt98C0uDTxArJZR292/eW1e6/5jp+tRDhhy15NjlRoqyPzgXV4IkLyIpDc0wuMhiNd81do8jaL34izVDwmSCjIDYvylv7LQcSQ6mZWRV7Lgikd9H/34APoA0R58iQF64a/y09FZ+iUs86VCZoeRlZYDJClEkJy0nwyP/w== X-OriginatorOrg: cipunited.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4c60016-19d3-4956-0436-08db61bd45f2 X-MS-Exchange-CrossTenant-AuthSource: SEZPR04MB6121.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2023 09:56:15.6126 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e31cf5b5-ee69-4d5f-9c69-edeeda2458c0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8pCME5gAYvzx5xuq78iP8t2AmXJSVEpaNrwlXBtHTwJ1sLJfW+zCmR0d4ZKpPxa7zm8NbYWcjuB1zRcxeAl0CUqV1qDNSOPZr+6Jqmkrvtg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PSBPR04MB3912 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" For large unaligned block move, lib call may have better performance than expanding. Let's just return, if length is larger than 64 on O32 larger than 128 on N32/N64. Here are some test results: CPU Aligned O32 N32 N64 Cavium 7130 1 72 192 192 Cavium 7130 2 96 192 192 Cavium 7130 4 +inf 192 192 Cavium 7130 8 +inf +inf +inf LS3A 2000 1 32 32 64 LS3A 2000 2 32 64 64 LS3A 2000 4 +inf 32 48 LS3A 2000 8 +inf +inf +inf LS3A 4000 1 32 64 128 LS3A 4000 2 64 64 128 LS3A 4000 4 192 128 192 LS3A 4000 8 192 +inf +inf Ingenic X2000 1 96 - - Ingenic X2000 2 96 - - Ingenic X2000 4 +inf - - interAptiv 1 64 - - interAptiv 2 64 - - interAptiv 4 +inf - - P6600 1 64 128 128 P6600 2 64 128 128 P6600 4 256 192 128 P6600 8 +inf +inf +inf P6600 1U 48 48 48 -mno-unaligned-access P6600 2U 128 96 96 -mno-unaligned-access P6600 4U 384 768 768 -mno-unaligned-access P6600 8U 1024 +inf +inf -mno-unaligned-access I6500 1 384 896 640 I6500 2 256 768 512 I6500 4 384 704 512 I6500 8 512 1024 1024 I6500 1U 32 32 32 -mno-unaligned-access I6500 2U 96 64 64 -mno-unaligned-access I6500 4U 384 640 768 -mno-unaligned-access I6500 8U 256 +inf +inf -mno-unaligned-access When the length of block move is larger than this value, (g)libc call has better performance. gcc/ * config/mips/mips.cc (mips_expand_block_move): don't expand large unaligned block move. gcc/testsuite/ * gcc.target/mips/expand-block-move-large.c: new test. --- gcc/config/mips/mips.cc | 6 +++++ .../gcc.target/mips/expand-block-move-large.c | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 gcc/testsuite/gcc.target/mips/expand-block-move-large.c diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc index ca297e3c1e5..7a7f4be627f 100644 --- a/gcc/config/mips/mips.cc +++ b/gcc/config/mips/mips.cc @@ -8308,6 +8308,12 @@ mips_expand_block_move (rtx dest, rtx src, rtx length) || MEM_ALIGN (dest) < MIPS_MIN_MOVE_MEM_ALIGN)) return false; + if ((ISA_HAS_LWL_LWR || ISA_HAS_UNALIGNED_ACCESS) + && INTVAL (length) > MIPS_MAX_MOVE_BYTES_STRAIGHT * 2 + && MEM_ALIGN (src) < BITS_PER_WORD + && MEM_ALIGN (dest) < BITS_PER_WORD) + return false; + if (INTVAL (length) <= MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER) { mips_block_move_straight (dest, src, INTVAL (length)); diff --git a/gcc/testsuite/gcc.target/mips/expand-block-move-large.c b/gcc/testsuite/gcc.target/mips/expand-block-move-large.c new file mode 100644 index 00000000000..98705f6c560 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/expand-block-move-large.c @@ -0,0 +1,22 @@ +/* { dg-final { scan-assembler "memcpy" } } */ +/* { dg-final { scan-assembler-not "lwl" } } */ +/* { dg-final { scan-assembler-not "swl" } } */ +/* { dg-final { scan-assembler-not "lwr" } } */ +/* { dg-final { scan-assembler-not "swr" } } */ +/* { dg-final { scan-assembler-not "ldl" } } */ +/* { dg-final { scan-assembler-not "sdl" } } */ +/* { dg-final { scan-assembler-not "ldr" } } */ +/* { dg-final { scan-assembler-not "sdr" } } */ + +char a[4097], b[4097]; +#ifdef __mips64 +#define MAX_SIZE 128 +#else +#define MAX_SIZE 64 +#endif + +NOCOMPRESSION void +foo () +{ + __builtin_memcpy(&a[1], &b[1], MAX_SIZE + 16); +}