{"id":2222008,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2222008/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/20260410150553.156795-3-muhammad.kamran@arm.com/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/1.1/projects/17/?format=json","name":"GNU Compiler Collection","link_name":"gcc","list_id":"gcc-patches.gcc.gnu.org","list_email":"gcc-patches@gcc.gnu.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260410150553.156795-3-muhammad.kamran@arm.com>","date":"2026-04-10T15:05:52","name":"[v4,2/3] aarch64: add uaddc<m>5 expansion pattern to machine description","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"670d2ce293f3ea1a591c0eafca8fc398e6d09847","submitter":{"id":92852,"url":"http://patchwork.ozlabs.org/api/1.1/people/92852/?format=json","name":"Muhammad Kamran","email":"muhammad.kamran@arm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20260410150553.156795-3-muhammad.kamran@arm.com/mbox/","series":[{"id":499479,"url":"http://patchwork.ozlabs.org/api/1.1/series/499479/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=499479","date":"2026-04-10T15:05:50","name":"aarch64: Implement uaddc/usubc expansion and carry/borrow round-trip cleanup","version":4,"mbox":"http://patchwork.ozlabs.org/series/499479/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2222008/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2222008/checks/","tags":{},"headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=T8IbPFdx;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=T8IbPFdx;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=T8IbPFdx;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=T8IbPFdx","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=40.107.159.40"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fsgCr2pdpz1yGS\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 01:08:08 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 63E264BA23D8\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 15:08:06 +0000 (GMT)","from OSPPR02CU001.outbound.protection.outlook.com\n (mail-norwayeastazon11013040.outbound.protection.outlook.com [40.107.159.40])\n by sourceware.org (Postfix) with ESMTPS id 0068B4BA2E36\n for <gcc-patches@gcc.gnu.org>; Fri, 10 Apr 2026 15:07:34 +0000 (GMT)","from DUZPR01CA0238.eurprd01.prod.exchangelabs.com\n (2603:10a6:10:4b5::9) by GVXPR08MB11471.eurprd08.prod.outlook.com\n (2603:10a6:150:2e3::14) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.41; Fri, 10 Apr\n 2026 15:07:27 +0000","from DB3PEPF00008859.eurprd02.prod.outlook.com\n (2603:10a6:10:4b5:cafe::4f) by DUZPR01CA0238.outlook.office365.com\n (2603:10a6:10:4b5::9) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Fri,\n 10 Apr 2026 15:07:26 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n DB3PEPF00008859.mail.protection.outlook.com (10.167.242.4) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.17\n via Frontend Transport; Fri, 10 Apr 2026 15:07:26 +0000","from AS4P189CA0045.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5dd::17)\n by VE1PR08MB5615.eurprd08.prod.outlook.com (2603:10a6:800:1b3::23)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.44; Fri, 10 Apr\n 2026 15:06:22 +0000","from AM4PEPF00027A65.eurprd04.prod.outlook.com\n (2603:10a6:20b:5dd:cafe::b2) by AS4P189CA0045.outlook.office365.com\n (2603:10a6:20b:5dd::17) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.43 via Frontend Transport; Fri,\n 10 Apr 2026 15:06:22 +0000","from nebula.arm.com (172.205.89.229) by\n AM4PEPF00027A65.mail.protection.outlook.com (10.167.16.86) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9769.17 via Frontend Transport; Fri, 10 Apr 2026 15:06:21 +0000","from AZ-NEU-EXJ02.Arm.com (10.240.25.139) by AZ-NEU-EX04.Arm.com\n (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Fri, 10 Apr\n 2026 15:06:04 +0000","from AZ-NEU-EX03.Arm.com (10.240.25.137) by AZ-NEU-EXJ02.Arm.com\n (10.240.25.139) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Fri, 10 Apr\n 2026 15:06:03 +0000","from ip-10-249-57-232.eu-west-1.compute.internal (10.249.57.232) by\n mail.arm.com (10.240.25.137) with Microsoft SMTP Server\n (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend\n Transport; Fri, 10 Apr 2026 15:06:03 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 63E264BA23D8","OpenDKIM Filter v2.11.0 sourceware.org 0068B4BA2E36"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 0068B4BA2E36","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 0068B4BA2E36","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1775833655; cv=pass;\n b=KHjznK6+AFdvPrhtrwNbC5q5fq/v67uvq67KXeubCJUGfE7ep2w8xswuw6cKwvijZGDUX8wceo9cwR25PUSewtJl8gE0nXO9fvVIuop98xaa2uqKdkx8sJSTBfqcvbv6wyZYvCJdVTYSxkM0LgxSqpCBENqNECHdjmaEkvGvhW4=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=k2sK6lkS+4uEejlQAnFJXXAaQvE4MF+mx79s7/QKh/7dU+MgRgWLIEnV5AdCjiDmnuXgR9+d/RHpdWOiM3b5EgkXn86YZO6L791y9W9L0ZMviCvRWNum1SvfVWPaEenZakNLWvwd+LaWIXXYHKwWTBmHBuxasgw9KSGrT27pFl90rBAVRKzPU7LwwDdaqQ6f+mbohwltBgefLB9xEjmYe+42Ca9bRbFcBnW7QGf61wNoUfdsFguGFX6zyxYYshbrag6VR5MzEFywimFuTHgd3v1vYoSgQrcOzmRNWY4VBcDr8Cwr8KzDuVOsoDlhNDOObRyO/QUSDkFUQItFDZUrmQ==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=hiPxKZLXivZuhxlSII5zyt6Eh4rRbhqKEfDgY6BCaHqtyjZpP8PsbFLBr66wzeBviAfZM7S83hTmK4LS+YnOhFF4e3wfiMmXRsvo0CD364za364ePpcorDX5iVGU9qt4WnqXebFZYdZ9AmULkImA0OnqWXYv7Ao+lpKPDzPKEyEoeE2sTxQnk19ZKYMJ4JZPO4c2hRlizV/qOIn4hXoDkX9DljRXMyRJMB7gtD4uTmlTair4/I46uxur1Fa6LW9b+4XjyDdelwO5szKn9HXObPwoZM8WJKJrI8IxZl3khZcBXS7T/JNsAWy8EiDyElyfLVuyrJ9++499RsRtwv9vNg=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775833655; c=relaxed/simple;\n bh=srq0Ze+AlAW4jz04cqZ9YSwjGdHMFupGy0Mi+mWJlGM=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=srpg2T4+NIp/grN6oQ1j4HCgLMnaWsylE6ukMG/fkak+xtDySCzgZemWDKV8GnbByRFDDv4MFihbVT94O8JgN7+hVCsXf53fPcyfiR0AF2fxfb5Km6sjCrubWcGYeMHNgsiMbJ8AUlMHs+1BW6hKbUpj299Z9I126jno6nxkPHY=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=wxM9fl36Zj0Vt53OVfhHZz1fvsEET0rwocjazKRNmx8=;\n b=d/S4GCfwL3iHgfo/RcMNmnDTbpysZWcmCaHjIHnQg+b0T2yT1oiKBbwokxvumV1DcSGw7S7RfNcSMCdXKkJH/LsA06a59xtRPATA1M7U8lgXqwJsnrsE3WAK+hVJbBEZc+IXojsjAaDB0kcGxTILVAvH+oiBb3FHHDf2Fn1Nqnt+dwyfRGUCbw8vgPmfwnOVFVyOEKX1EJUIQ2VzQdo2eD0QnHcLwyf/I6nAojKAhYBdLLf0THUBChHdr0cSRwRFreAoQQQavrvvH1W8qhjpl4g+JdDh0nyQ71DBzqTR/m1d3cvk/pkexsOgcmUHj3/w5hptYFxh/vdnHO3D4goRoA==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=wxM9fl36Zj0Vt53OVfhHZz1fvsEET0rwocjazKRNmx8=;\n b=bOyECIuOBNTSLUXF1qwVB8ojsCllXxBNStvTP1kHDPG9F0K7RF/bgIzsVydefAbWiOPY9lcoXDQ47njnKQlZi56zHuFszYNu0+xt0zxZTpCDI0zn1S94Y7BOrNEsLOz8iCtTkbfYF7iN6I3pxaYJJtpEmACjiFqvNumGShOz1SRQNKbtTvS/4LN324e0UJ4EOvHTdGzJc0FBWLM79mxPPFEFqptPO9D5laO3ZKuNpIbwyB1XPTR4ZrMN/lK8NgPBElwRK4/uQ87n53RNV+UlThTyWht5h5TCRqPo5D+5wgsWbl/oLVlQ2SXjoJQgPaqIJ5Pb5cHJykcsyUAwLdrvwA=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com])","i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 172.205.89.229) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;\n dkim=none (message not signed); arc=none (0)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=wxM9fl36Zj0Vt53OVfhHZz1fvsEET0rwocjazKRNmx8=;\n b=T8IbPFdxtSmx8OoRxkuqb2KphUwIejlofldUyTX+3glMYq5k+KjFYFrbyM3R2+i4H/StNkqdRiGFKquLlSqE/F8ZSKaZoDl5Nu2iWBx/hVB9evjz5EPcbtyTb7W5e5D8YkUoMKuIJDMMxvNbf/pHzw4DwCEsmgBmMuNhNYED7WI=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=wxM9fl36Zj0Vt53OVfhHZz1fvsEET0rwocjazKRNmx8=;\n b=T8IbPFdxtSmx8OoRxkuqb2KphUwIejlofldUyTX+3glMYq5k+KjFYFrbyM3R2+i4H/StNkqdRiGFKquLlSqE/F8ZSKaZoDl5Nu2iWBx/hVB9evjz5EPcbtyTb7W5e5D8YkUoMKuIJDMMxvNbf/pHzw4DwCEsmgBmMuNhNYED7WI="],"X-MS-Exchange-Authentication-Results":["spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;","spf=pass (sender IP is 172.205.89.229)\n smtp.mailfrom=arm.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=arm.com;"],"Received-SPF":["Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C","Pass (protection.outlook.com: domain of arm.com designates\n 172.205.89.229 as permitted sender) receiver=protection.outlook.com;\n client-ip=172.205.89.229; helo=nebula.arm.com; pr=C"],"From":"Muhammad Kamran <muhammad.kamran@arm.com>","To":"<gcc-patches@gcc.gnu.org>","CC":"Richard Earnshaw <richard.earnshaw@arm.com>, Tamar Christina\n <tamar.christina@arm.com>, Kyrylo Tkachov <ktkachov@nvidia.com>, \"Alice\n Carlotti\" <alice.carlotti@arm.com>, Alex Coplan <alex.coplan@arm.com>,\n \"Andrew Pinski\" <andrew.pinski@oss.qualcomm.com>, Wilco Dijkstra\n <wilco.dijkstra@arm.com>, Muhammad Kamran <muhammad.kamran@arm.com>","Subject":"[PATCH v4 2/3] aarch64: add uaddc<m>5 expansion pattern to machine\n description","Date":"Fri, 10 Apr 2026 15:05:52 +0000","Message-ID":"<20260410150553.156795-3-muhammad.kamran@arm.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260410150553.156795-1-muhammad.kamran@arm.com>","References":"<20260410150553.156795-1-muhammad.kamran@arm.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-EOPAttributedMessage":"1","X-MS-TrafficTypeDiagnostic":"\n AM4PEPF00027A65:EE_|VE1PR08MB5615:EE_|DB3PEPF00008859:EE_|GVXPR08MB11471:EE_","X-MS-Office365-Filtering-Correlation-Id":"a1a5f7bd-e9de-49a5-0ec1-08de9712e09e","x-checkrecipientrouted":"true","NoDisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;\n ARA:13230040|376014|82310400026|1800799024|36860700016|13003099007|22082099003|18002099003|56012099003;","X-Microsoft-Antispam-Message-Info-Original":"\n u875xOmj2wwSDkhTQb04nFtkIaqPh3nQE56ihbhjFx61+UST6C/YBDRFui4y5/VXzzDY7vcrE/IXNxR8WDoJ7ctf33sKRKPrG7pzytyLBJqvSwrNCRWodIed2L4zI+0rxb/KW7yEm3WYFE4JbG9NM+yzxRoBWF4LUuXD3RYdBR/YJEfiH8FxX3JWPYUBRX/WRLGO2mrOpzblQdidzEtLgJbKKOCd1r9g1AjXkBufHNj0qKPvKypWaw6RPTxZk50dMY39SJYeXTHw9r9dw4Pq8K7grpya0CVz+jEtUcodKy95AXprR0xqHgf+8GHBytOD5L5QBaDOESAOg13MCAURkJypiiV1Tpeu+qXGeX3oQnCwlZ8+A9UGQfL8phk+IHFI8mfarSM+RoEv/CdctNYMF8AnvszQtOrBiZeXvPfd6FsI5uAAbbqH/Ps6ywyUof9B5Ullf+kbO7ftqu6Zzq2VB/R8cC9AliENEKMrlwzAQT6YeU+8yQPLMVaP5wFccPvkvNadh+/z6WkaDWbin79jdCAxhefHE/gDGrKhHhnY0PGLbPUUla22xToB1zfWe8wLaCUrAIrhxFiLXTL0Eu2LOEHCGoSyOV11O9GSopXjr/vLf7YUG+16W5gduES7Cb8/czsfwcnGnqZ7vHg1kktn+N2KEnAxlSruZ5/LZlJLnBfakIjsvyFOv4k9sZAJOkmfPoWVP1Oye+PRmkkYrULdyRyh4Zt27+candKpkbky1cY=","X-Forefront-Antispam-Report-Untrusted":"CIP:172.205.89.229; CTRY:IE; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent;\n CAT:NONE;\n SFS:(13230040)(376014)(82310400026)(1800799024)(36860700016)(13003099007)(22082099003)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;","X-Exchange-RoutingPolicyChecked":"\n euS9+gTUq7j9VgilhEk1xN1rXYhYIFqAyRp4yWbpEq3PZs6OGnj9jCdC6drZrDqkg0W6xydZ12ieikbvHNKndmsRKCG4KBsKMReAFSiR5S3dj+aqcmkEzDWThLJhkLw0BXGsI0OmQRiwwiIUTa9iChVIaSR0eRN1RAoOaYHBBYNewiXLOJ586UsLuNo3RrwFpd4Qh+Wa2jDCbGSTq5xfg1mNcIxISXQF8sFWqitZA/PNYS2k8kHZ3w0SUpFIvFTLtb2HKdEjthh00quvR9uifwJi30FrzcwNTy3Ysgkc/JmLmgZrT5wSQt3/CSG2nu0Ugxv7Lecq7HtsE7C0doQAHA==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["VE1PR08MB5615","GVXPR08MB11471"],"X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n DB3PEPF00008859.eurprd02.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n 8909e9fa-00c0-4af8-431b-08de9712b9f3","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|36860700016|14060799003|376014|1800799024|35042699022|82310400026|22082099003|13003099007|56012099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n PEc3dOtIy/UszAufeJVaciiv5pcMqcm7PFmpoJGm6DP4xBmQWviUT//zOizwBjKHfSJx7m8+Qi94b+eWmvC/Mq5jGFgEpKg6r4pNXxCbRlm+kTIxtzeOG3pEeo0nlGJDtsZ6tw+iTE66rY9wr70jIm3wPbmQ0AgZwQSRnrWwo1j4OF/6eXwLayRTfekKd4hfMK6+ktxnUI4St5AzvM18r4khE/5lchdwwl67nDgg0inDjtoeHRD07llPbI3MTYR8PZ3ISHg2SCFf3H9azxQVggNQaWJa9sWPxpn2y8RbGntA4wEUpqBruvq1qI0j7S+LNxiH/EDx90PhlAkRXnv4p/cS0B/wXZRDI7baWGIjPWXfzF521NikbDu4axH7LqZf6pA6/OubINI05z8hoQqtFGZYGJf6L1Q9dEgvgi7ODcqm0fPOKkLOh1vRe+8j37CiWoxg5ExkJf5I/YabWex84J6J4eryGYXwXa8Db/t11EgvSo8E6o2mg7ms/VloxkI7UDlxzhJneSjxpz+0y56VBHFzgnQ4pEvIstUftszGUTEFKehBQpxJDaUVaKBaXeQ8Dsdovo6eHDd5PIMHPE7nlNkQq2vVRP2/IbahD8ScQdSki4/KtpRVUZONkCc4sMfXNLJ2jA0rs1mK+SgfsV/07mpR1ORxoMRThwSTSyRkLJ7DuFWZXgSfAoZZzlGqCbSmSVaVLaoQLeqh3dVMrAe0fUJT9/ouhJmuZ4c+BffP9yg=","X-Forefront-Antispam-Report":"CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(36860700016)(14060799003)(376014)(1800799024)(35042699022)(82310400026)(22082099003)(13003099007)(56012099003)(18002099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n G69GztkZpa7Pk6EZGA4NjqkWg4eAOvnyzpYXdz0haYp+eD1Y3S18Mw7eIa1yPftomfzimxqpCq7cTW6+Oh7G8w+wOZOfyHn96mbgf1OR+lXMZUjynBR5NEe90wY5o1LBCMl67pp6iR4VOysiErU/QVQNtcEQC5MZ9n/HoKVDPIcITjpi+j7utPdiV/msI57y4bUx76+wQJQ/OOefKEoHzcxHTXfuTywinREgfgNET4geHveXWBb4n2hk/Fe+Vsl9JPI/SbkC3RuW4b/WNLDQg6Qi1Zy/9iLYgzMqQ4HyN6L8tkdVMFDMEVXTWuBWrDXQBCeBalL0ZKBXAmdBqEVbr/f7/g42QoYNkZYbpO+VgGwKpHN0inx/ahRy5aVewPgrkze2PPN+TQ0m0dswHEBHoqReh7F1qXn5aogDFyMQHjLkP4lo/tjCZDkWRmyQ9ArI","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"10 Apr 2026 15:07:26.5769 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n a1a5f7bd-e9de-49a5-0ec1-08de9712e09e","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n DB3PEPF00008859.eurprd02.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"},"content":"The pattern expands uaddc(sum, Cout, x, y, Cin) into:\ncmp Cin, #1\nadcs sum, x, y\ncset Cout, cs\n\nThe expansion folds the additions if the operands are known at compile time:\n\nIf Cin = 0, y = 0:\nmov sum, x\nmov Cout, 0\n\nIf Cin != 0, y = ~0:\nmov sum, x\nmov Cout, 1\n\nCarry chained uaddc expansion results in a rount trip CC -> register -> CC.\nRemove that round-trip as CSET-like materialization does not clobber flags, so\nCC already carries the same bit.\n\ngcc/ChangeLog:\n\n\tPR target/122525\n\t* config/aarch64/aarch64.md\n\t(uaddc<mode>5): Expansion pattern for uaddc<m>5.\n\t(*aarch64_setc_from_carry_<mode>) Post-combine no-op split pattern for\n\tcarry chain elimination in CC_Cmode.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.target/aarch64/uaddc-builtin-add-overflow.c: New test for chained\n\tuaddc expansion for __builtin_add_overflow.\n\t* gcc.target/aarch64/uaddc-builtin-addc.c: New test chained uaddc\n\texpansion for __builtin_addc.\n\t* gcc.target/aarch64/uaddc-builtin-addcl.c: New test for uaddc expansion\n\tfor __builtin_addcl.\n\t* gcc.target/aarch64/uaddc-const-minus1.c: New test for uaddc expansion\n\twhere addend 2 is ~0.\n\t* gcc.target/aarch64/uaddc-const-plus1.c: New test for uaddc expansion\n\twhere addend 2 is a constant.\n---\n gcc/config/aarch64/aarch64.md                 | 80 +++++++++++++++++++\n .../aarch64/uaddc-builtin-add-overflow.c      | 28 +++++++\n .../gcc.target/aarch64/uaddc-builtin-addc.c   | 17 ++++\n .../gcc.target/aarch64/uaddc-builtin-addcl.c  | 17 ++++\n .../gcc.target/aarch64/uaddc-const-minus1.c   | 14 ++++\n .../gcc.target/aarch64/uaddc-const-plus1.c    | 12 +++\n 6 files changed, 168 insertions(+)\n create mode 100644 gcc/testsuite/gcc.target/aarch64/uaddc-builtin-add-overflow.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addc.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addcl.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/uaddc-const-minus1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/uaddc-const-plus1.c","diff":"diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md\nindex 744acac0290..3fd476f838f 100644\n--- a/gcc/config/aarch64/aarch64.md\n+++ b/gcc/config/aarch64/aarch64.md\n@@ -3389,6 +3389,86 @@ (define_insn \"*add<mode>3_carryinC\"\n   [(set_attr \"type\" \"adc_reg\")]\n )\n \n+(define_expand \"uaddc<mode>5\"\n+  [(match_operand:GPI 0 \"register_operand\")    ;; sum\n+   (match_operand:GPI 1 \"register_operand\")    ;; carry-out\n+   (match_operand:GPI 2 \"register_operand\")    ;; x\n+   (match_operand:GPI 3 \"nonmemory_operand\")   ;; y\n+   (match_operand:GPI 4 \"nonmemory_operand\")]  ;; carry-in\n+  \"\"\n+{\n+  if (operands[4] == const0_rtx)\n+    {\n+      if (operands[3] == const0_rtx)\n+\t{\n+\t  emit_move_insn (operands[0], operands[2]);\n+\t  emit_move_insn (operands[1], const0_rtx);\n+\t}\n+      else\n+\t{\n+\t  rtx y = operands[3];\n+\t  if (!aarch64_plus_operand (y, <MODE>mode))\n+\t    y = force_reg (<MODE>mode, y);\n+\t  emit_insn (gen_add<mode>3_compareC (operands[0], operands[2], y));\n+\t  rtx cc = gen_rtx_REG (CC_Cmode, CC_REGNUM);\n+\t  rtx pat = gen_rtx_LTU (<MODE>mode, cc, const0_rtx);\n+\t  emit_insn (gen_rtx_SET (operands[1], pat));\n+\t}\n+    }\n+  else if (CONST_SCALAR_INT_P (operands[4]))\n+    {\n+      if (operands[3] == constm1_rtx)\n+\t{\n+\t  emit_move_insn (operands[0], operands[2]);\n+\t  emit_move_insn (operands[1], const1_rtx);\n+\t}\n+      else\n+\t{\n+\t  rtx rhs = plus_constant (<MODE>mode, operands[3], 1);\n+\t  if (!aarch64_plus_operand (rhs, <MODE>mode))\n+\t    rhs = force_reg (<MODE>mode, rhs);\n+\t  emit_insn (gen_add<mode>3_compareC (operands[0], operands[2], rhs));\n+\t  rtx cc = gen_rtx_REG (CC_Cmode, CC_REGNUM);\n+\t  rtx pat = gen_rtx_LTU (<MODE>mode, cc, const0_rtx);\n+\t  emit_insn (gen_rtx_SET (operands[1], pat));\n+\t}\n+    }\n+  else\n+    {\n+      rtx cin = force_reg (<MODE>mode, operands[4]);\n+      rtx cc = gen_rtx_REG (CC_Cmode, CC_REGNUM);\n+      rtx adc_cc = gen_rtx_REG (CC_ADCmode, CC_REGNUM);\n+      rtx y = operands[3];\n+      if (!register_operand (y, <MODE>mode))\n+\ty = force_reg (<MODE>mode, y);\n+      rtx cmp = gen_rtx_COMPARE (CC_Cmode,\n+\t\t\t\t gen_rtx_PLUS (<MODE>mode, cin, constm1_rtx),\n+\t\t\t\t cin);\n+      emit_insn (gen_rtx_SET (cc, cmp));\n+      emit_insn (gen_add<mode>3_carryinC (operands[0], operands[2],\n+\t\t\t\t\t  y));\n+      rtx pat = gen_rtx_GEU (<MODE>mode, adc_cc, const0_rtx);\n+      emit_insn (gen_rtx_SET (operands[1], pat));\n+    }\n+  DONE;\n+})\n+\n+;; The uaddc expansion results in a round trip CC -> register -> CC.  Remove\n+;; that round-trip as CSET-like materialization does not clobber flags, so CC\n+;; already carries the same bit.\n+;; With STORE_FLAG_VALUE == 1, simplify-rtx can canonicalize carry - 1 to\n+;; -!carry, where !carry is the complementary borrow-like test on the same CC.\n+(define_insn_and_split \"*aarch64_setc_from_carry_<mode>\"\n+  [(set (reg:CC_C CC_REGNUM)\n+\t(compare:CC_C\n+\t  (neg:GPI (match_operand:GPI 0 \"aarch64_borrow_operation\" \"\"))\n+\t  (match_operand:GPI 1 \"aarch64_carry_operation\" \"\")))]\n+  \"rtx_equal_p (XEXP (operands[0], 0), XEXP (operands[1], 0))\"\n+  \"#\"\n+  \"\"\n+  [(const_int 0)]\n+  \"emit_note (NOTE_INSN_DELETED); DONE;\")\n+\n (define_expand \"add<mode>3_carryinV\"\n   [(parallel\n      [(set (reg:CC_V CC_REGNUM)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-add-overflow.c b/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-add-overflow.c\nnew file mode 100644\nindex 00000000000..ff8301973a8\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-add-overflow.c\n@@ -0,0 +1,28 @@\n+/* PR target/122525 */\n+/* { dg-do compile } */\n+/* { dg-options \"-O2\" } */\n+\n+static unsigned long\n+uaddc (unsigned long x, unsigned long y, unsigned long carry_in,\n+       unsigned long *carry_out)\n+{\n+  unsigned long r;\n+  unsigned long c1 = __builtin_add_overflow (x, y, &r);\n+  unsigned long c2 = __builtin_add_overflow (r, carry_in, &r);\n+  *carry_out = c1 + c2;\n+  return r;\n+}\n+\n+void\n+foo (unsigned long *p, unsigned long *q)\n+{\n+  unsigned long c;\n+  p[0] = uaddc (p[0], q[0], 0, &c);\n+  p[1] = uaddc (p[1], q[1], c, &c);\n+  p[2] = uaddc (p[2], q[2], c, &c);\n+  p[3] = uaddc (p[3], q[3], c, &c);\n+}\n+\n+/* { dg-final { scan-assembler-times \"adcs\\\\t\\[xw\\]\\[0-9\\]+, \\[xw\\]\\[0-9\\]+,\n+\\[xw\\]\\[0-9\\]+\" 3 } } */\n+/* { dg-final { scan-assembler-not \"cset\\\\t\\[xw\\]\\[0-9\\]+, cs+.*\" } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addc.c b/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addc.c\nnew file mode 100644\nindex 00000000000..ee28860c105\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addc.c\n@@ -0,0 +1,17 @@\n+/* PR target/122525 */\n+/* { dg-do compile } */\n+/* { dg-options \"-O2\" } */\n+\n+void\n+foo (unsigned int *p, unsigned int *q)\n+{\n+  unsigned int c;\n+  p[0] = __builtin_addc (p[0], q[0], 0, &c);\n+  p[1] = __builtin_addc (p[1], q[1], c, &c);\n+  p[2] = __builtin_addc (p[2], q[2], c, &c);\n+  p[3] = __builtin_addc (p[3], q[3], c, &c);\n+}\n+\n+/* { dg-final { scan-assembler-times \"adcs\\\\tw\\[0-9\\]+, w\\[0-9\\]+, w\\[0-9\\]+\" 3\n+ * } } */\n+/* { dg-final { scan-assembler-not \"cset\\\\tw\\[0-9\\]+, cs+.*\" } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addcl.c b/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addcl.c\nnew file mode 100644\nindex 00000000000..004d950f48c\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/uaddc-builtin-addcl.c\n@@ -0,0 +1,17 @@\n+/* PR target/122525 */\n+/* { dg-do compile } */\n+/* { dg-options \"-O2\" } */\n+\n+void\n+foo (unsigned long *p, unsigned long *q)\n+{\n+  unsigned long c;\n+  p[0] = __builtin_addcl (p[0], q[0], 0, &c);\n+  p[1] = __builtin_addcl (p[1], q[1], c, &c);\n+  p[2] = __builtin_addcl (p[2], q[2], c, &c);\n+  p[3] = __builtin_addcl (p[3], q[3], c, &c);\n+}\n+\n+/* { dg-final { scan-assembler-times \"adcs\\\\tx\\[0-9\\]+, x\\[0-9\\]+, x\\[0-9\\]+\" 3\n+ * } } */\n+/* { dg-final { scan-assembler-not \"cset\\\\tx\\[0-9\\]+, cs+.*\" } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/uaddc-const-minus1.c b/gcc/testsuite/gcc.target/aarch64/uaddc-const-minus1.c\nnew file mode 100644\nindex 00000000000..48fbd5b8498\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/uaddc-const-minus1.c\n@@ -0,0 +1,14 @@\n+/* PR target/122525 */\n+/* { dg-do compile } */\n+/* { dg-options \"-O2\" } */\n+\n+unsigned long\n+foo (unsigned long x, unsigned long *c)\n+{\n+  return __builtin_addcl (x, ~0UL, 1, c);\n+}\n+\n+/* { dg-final { scan-assembler-not \"adds\\\\t\" } } */\n+/* { dg-final { scan-assembler-not \"adcs\\\\t\" } } */\n+/* { dg-final { scan-assembler-not \"cset\\\\t\" } } */\n+/* { dg-final { scan-assembler \"mov\\\\tx\\[0-9\\]+, 1\" } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/uaddc-const-plus1.c b/gcc/testsuite/gcc.target/aarch64/uaddc-const-plus1.c\nnew file mode 100644\nindex 00000000000..d072f66525d\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/uaddc-const-plus1.c\n@@ -0,0 +1,12 @@\n+/* PR target/122525 */\n+/* { dg-do compile } */\n+/* { dg-options \"-O2\" } */\n+\n+unsigned long\n+foo (unsigned long x, unsigned long *c)\n+{\n+  return __builtin_addcl (x, 41, 1, c);\n+}\n+\n+/* { dg-final { scan-assembler \"adds\\\\tx\\[0-9\\]+, x\\[0-9\\]+, #42\" } } */\n+/* { dg-final { scan-assembler-not \"adcs\\\\t\" } } */\n","prefixes":["v4","2/3"]}