Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2223312/?format=api
{ "id": 2223312, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2223312/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260415013814.804190-1-pengxuan.zheng@oss.qualcomm.com/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/1.1/projects/17/?format=api", "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": "<20260415013814.804190-1-pengxuan.zheng@oss.qualcomm.com>", "date": "2026-04-15T01:38:14", "name": "match: (X * C1) + (X << C2) -> X * (C1 + (1 << C2)) [PR124886]", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "aca6a5103a9b7e0d776d776e347ee14215366a63", "submitter": { "id": 92245, "url": "http://patchwork.ozlabs.org/api/1.1/people/92245/?format=api", "name": "Pengxuan Zheng", "email": "pengxuan.zheng@oss.qualcomm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260415013814.804190-1-pengxuan.zheng@oss.qualcomm.com/mbox/", "series": [ { "id": 499905, "url": "http://patchwork.ozlabs.org/api/1.1/series/499905/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=499905", "date": "2026-04-15T01:38:14", "name": "match: (X * C1) + (X << C2) -> X * (C1 + (1 << C2)) [PR124886]", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/499905/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2223312/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2223312/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 (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=UzIkPUay;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=TsrUI/1S;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::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 (2048-bit key,\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=UzIkPUay;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=TsrUI/1S", "sourceware.org; dmarc=none (p=none dis=none)\n header.from=oss.qualcomm.com", "sourceware.org;\n spf=pass smtp.mailfrom=oss.qualcomm.com", "server2.sourceware.org;\n arc=none smtp.remote-ip=205.220.180.131" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::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 4fwP1k1RlHz1yHM\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 11:38:50 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id CD1E54BA2E11\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 01:38:46 +0000 (GMT)", "from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n [205.220.180.131])\n by sourceware.org (Postfix) with ESMTPS id 641A14BA540B\n for <gcc-patches@gcc.gnu.org>; Wed, 15 Apr 2026 01:38:18 +0000 (GMT)", "from pps.filterd (m0279872.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63EG4XMX2005557\n for <gcc-patches@gcc.gnu.org>; Wed, 15 Apr 2026 01:38:17 GMT", "from mail-dy1-f198.google.com (mail-dy1-f198.google.com\n [74.125.82.198])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dhrsjsmtj-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <gcc-patches@gcc.gnu.org>; Wed, 15 Apr 2026 01:38:17 +0000 (GMT)", "by mail-dy1-f198.google.com with SMTP id\n 5a478bee46e88-2de07c12745so4223901eec.1\n for <gcc-patches@gcc.gnu.org>; Tue, 14 Apr 2026 18:38:17 -0700 (PDT)", "from hu-pzheng-lv.qualcomm.com (Global_NAT1.qualcomm.com.\n [129.46.96.20]) by smtp.gmail.com with ESMTPSA id\n 5a478bee46e88-2de8c10a688sm866872eec.4.2026.04.14.18.38.15\n for <gcc-patches@gcc.gnu.org>\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 14 Apr 2026 18:38:15 -0700 (PDT)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org CD1E54BA2E11", "OpenDKIM Filter v2.11.0 sourceware.org 641A14BA540B" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 641A14BA540B", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 641A14BA540B", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776217098; cv=none;\n b=TpjI8BY1B/6s8r2PWV96XKPV4W0RSDPGeMdS0fXmfPx7EkSkfWp4yQsZeKkNiZBTxidYb7xmlZPSteBXSdzjLfLQlsr0Um+iIFpogZVQCkt5hCdyIsKFXQD55Y3CSHPUEZ5xQjpe5AP5OmVnupzwa8bndDhnJdRbYk7LYIXPWdY=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776217098; c=relaxed/simple;\n bh=Cdmco8m2kY6HlI2RSqJ/ZL1sbWTymMlR1YyhpEiJCKU=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id:\n MIME-Version;\n b=jTIuv0qYQmsIwsii/ZY61EdvOO5RWfF7r49UdNxv7n1zWJlUVeqEjaw7XO1BEzaOhQYzdZEfKj+E8nD58drARPhWQb7deCv/2mZIBzy2m30aBk8JbAHrDV+iYu428gGpKHVsiDnYyrJZhU9FiAaQN4oQLGmN4sE/qriOJiodPwk=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n content-transfer-encoding:date:from:message-id:mime-version\n :subject:to; s=qcppdkim1; bh=KDuJthtzdhqInIBWoRnFJPSxgpbBv884rnb\n 2bC2jY8o=; b=UzIkPUaykjZCxhS2JAJZWP8NCVEF4hm4sn69WSOAXoBV4mIBuT0\n fhFPUoSZ274eT7qplWv8hJUkasJ7/rQlVHpQsv/KeK4qbFIqFpIUe/2BenKjK86Y\n d6U0VGx7210s48/NI4aWMiuqssjXhk45CEo3u3uqKAP3UkOEqOt2wqVkVZJ9z7K/\n dXIzEeB3ArfZTZNSCj9S+cYBRz8PGl8xU0XygTu5F1apSUCAWr5p6iZr/AnHtAFZ\n 42NoYORF8A0DRCmpDq0pSCglESBnFqsGvwY/cjHEqGIB0ujxhGsPTEJwxmG6wp03\n CzDew8Hp9YuxDPuXIwy9Ce51z9alOANCBEA==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1776217096; x=1776821896; darn=gcc.gnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:from:to:cc:subject:date:message-id:reply-to;\n bh=KDuJthtzdhqInIBWoRnFJPSxgpbBv884rnb2bC2jY8o=;\n b=TsrUI/1SoaQ+TboaJBwURInV7oHJdKH1h+W2zN/nKa5rS02BPOWjTyz6/NuEJ54b6A\n Wy5jgY9fKwBfI1Pbuu1VA19H3gyORzhbnVgzPMjmQrLEoJm1caz9cGS2ueABIvm9e4Ug\n u+wvgeVe1b6wlJkcp90hF4d+faknF8yhAqptcv9nuk6vga7bbsJXgxHlX9KurCuPPfiZ\n UgF++n1TqMUqu4DuDD/Wq4nIQjyiS+fkQzJhraw1XPEDTXVYb5+4qYMAmAJeXvuRKbiq\n IXcFgycO7zbcw6sR4Q8O2G0ZPobh7K9xQitSUZOg/mFY1Lq79oJTczpL8RhCIcjffNlt\n 1yDg==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776217096; x=1776821896;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=KDuJthtzdhqInIBWoRnFJPSxgpbBv884rnb2bC2jY8o=;\n b=HusSsC8zzjPDjQ/8CB6xaMBX7XHdfOXR3ZwxZGnWAGo5UJ3jFsk6ldhHVUAcZh0dRm\n yDZfN/xmnskQ53QF+lKn+CtZKNpaK4yUEryceEp+zas/kJ5Nz8Lyj/oOrOA5UMGi8H8M\n LPX0MHCGkVv+710qCcVKunTgc5h1UNMlRwb8Pim3IaMNDCgk48Lm8nexzFoDDPvoHCmj\n k1O+NP9HLQDa1JtHzvQWnlialvBM+kFhvGw6CVyUFJ1YoI3m2YOyeFhC1dEaIBN4LBU8\n YsKc+FYRYI5lvi8RhnR8HejpqpkA447PJwFIZbGZy/h5JjKerqasiIyrawSJaSPzFf13\n Eung==", "X-Gm-Message-State": "AOJu0YxW8U/jSFM4XRdHImkQ2r3dfNNZwrUGk/FvmJZYH0JsfXm5t7VU\n KOS1e60RLDkb9BB6eHyUqoYVeMZqhO1nXNT/u1EzCUcvrQmkiwlw1j6RCD9K4x7p4FO/RzJxij9\n 3xUuEyJ5PJZb17c6Jcoib6M+UBsz8uze+5+wki4WW7FURVAFi6QYulwvPjvKeeRPAUAr9", "X-Gm-Gg": "AeBDieu5tPIp4DhWcNpuxhAlirWs0dj+TftannaJjprGmSXrvt2vXqHYI9IceqxCMhZ\n OGE0zrNRSFuf+jYFqdoboBWpV7mGNuhgE8PbIC2hb1m4MfNad0AxPdVmLeNEKiEgWUMOs2pjwK8\n oZAaalFDLbQf/veHaoRcqXyKXYahfMRjUY/g8laUpO0r3K1TGP5ehsYtQOZvnHTVnZqvTv6JtOj\n Oafdc7D61AmzNPClD/JDgW+OSf3jPYt5eVs00HVVEypkSm7Uph2wicjX8oBnT7HDvlegj4jm53m\n y4XCtsr9ZUNmLS4zcKwai2a4/rW6XjIkR+m0KWCNbxHntJsqznBXuZM6vY8W3rzVsAUvoQlBaBT\n fXRp1sRUyr2kAtuPy/tD58wFP4/2bDitAmwImYO+S3zPGGQlHK0Y/33S8UjO+dCYHwnFcZUlOUy\n jlbVooaRoYTXQ=", "X-Received": [ "by 2002:a05:7301:6788:b0:2d1:a3ea:d8cb with SMTP id\n 5a478bee46e88-2d5873ad992mr12188497eec.4.1776217096400;\n Tue, 14 Apr 2026 18:38:16 -0700 (PDT)", "by 2002:a05:7301:6788:b0:2d1:a3ea:d8cb with SMTP id\n 5a478bee46e88-2d5873ad992mr12188476eec.4.1776217095607;\n Tue, 14 Apr 2026 18:38:15 -0700 (PDT)" ], "From": "Pengxuan Zheng <pengxuan.zheng@oss.qualcomm.com>", "To": "gcc-patches@gcc.gnu.org", "Subject": "[PATCH] match: (X * C1) + (X << C2) -> X * (C1 + (1 << C2))\n [PR124886]", "Date": "Tue, 14 Apr 2026 18:38:14 -0700", "Message-Id": "<20260415013814.804190-1-pengxuan.zheng@oss.qualcomm.com>", "X-Mailer": "git-send-email 2.34.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Authority-Analysis": "v=2.4 cv=WKhPmHsR c=1 sm=1 tr=0 ts=69deec09 cx=c_pps\n a=wEP8DlPgTf/vqF+yE6f9lg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17\n a=2fIEAHZ9u08luT5l:21 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22\n a=EUspDBNiAAAA:8 a=tuA5NDA4CNIuZqw3v98A:9 a=bBxd6f-gb0O0v-kibOvt:22", "X-Proofpoint-ORIG-GUID": "tFeAI3MK9qPD4YrN5fO82QXSpJlo6OIB", "X-Proofpoint-GUID": "tFeAI3MK9qPD4YrN5fO82QXSpJlo6OIB", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDE1MDAxMyBTYWx0ZWRfX7Z17qW9JGRIv\n jQwfZO5+T3z9RKGVzjElcCdV3LBNfRgl3IKDg4IQQc5GDggvcLlmHnwQW/iHIz+w6WT109PPc3k\n qt8GrLnNZqnm0s72EBHbXc7cDnTu+0z2/VaoAqAjiT0GA35HTK+omVkmn0zKodM5qJLE9aW7Qju\n hwDTs39jXhJ5XMryjE0NT4f6kFkxBIfrufoi/TrvjsKWLGywMYbg3gDqdrXXnF78dqrcYvsre7Z\n OqUkBX8ukHG5HM+YuETOzyKNsY5iCQS9P0jCiVRO5lV+Dr9aLDUyQ1I8xtnKVBUcxQw0BzPPwEq\n +5UUwawvCfGqXIpX4iZq75KA+5k15Txp5ahsWlspiNHVTaSN6pEHcplmZIkrb6idDeHi6y0Yzoi\n F3Wpzn2rhYoSmzrf8dJmNZrBXrvOV10sPU77hhGODG6tuSh8Zkf32U2rd+z2rNJVP9TTBX7kqZV\n x0Zq+7Zvak+6VvtbSpg==", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-14_04,2026-04-13_04,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n clxscore=1015 spamscore=0 adultscore=0 phishscore=0 suspectscore=0\n bulkscore=0 impostorscore=0 priorityscore=1501 lowpriorityscore=0\n malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000\n definitions=main-2604150013", "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": "This patch adds the following match pattern.\n(X * C1) + (X << C2) -> X * (C1 + (1 << C2))\n\nBootstrapped and tested on x86_64-linux-gnu and aarch64-linux-gnu.\n\n\tPR tree-optimization/124886\n\ngcc/ChangeLog:\n\n\t* match.pd ((X * C1) + (X << C2) -> X * (C1 + (1 << C2))): New pattern.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.dg/tree-ssa/pr124886.c: New test.\n\nSigned-off-by: Pengxuan Zheng <pengxuan.zheng@oss.qualcomm.com>\n---\n gcc/match.pd | 17 +++++++++++++++++\n gcc/testsuite/gcc.dg/tree-ssa/pr124886.c | 19 +++++++++++++++++++\n 2 files changed, 36 insertions(+)\n create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr124886.c", "diff": "diff --git a/gcc/match.pd b/gcc/match.pd\nindex 7b652afb43d..75f732e1535 100644\n--- a/gcc/match.pd\n+++ b/gcc/match.pd\n@@ -4842,6 +4842,23 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)\n \t\t\t\t\t: t, w);\n \t cst = build_uniform_cst (t, cst); }\n (convert (mult (convert:t @0) { cst; })))))\n+\n+/* (X * C1) + (X << C2) -> X * (C1 + (1 << C2)) */\n+(simplify\n+ (plus:c (nop_convert? (mult:s (nop_convert? @0) uniform_integer_cst_p@1))\n+\t (lshift:s @0 INTEGER_CST@2))\n+ (if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0))\n+ && tree_fits_uhwi_p (@2)\n+ && tree_to_uhwi (@2) < element_precision (type))\n+ (with { tree t = type;\n+\t if (!TYPE_OVERFLOW_WRAPS (t)) t = unsigned_type_for (t);\n+\t unsigned int prec = element_precision (type);\n+\t wide_int w = wi::to_wide (uniform_integer_cst_p (@1));\n+\t w += wi::set_bit_in_zero (tree_to_uhwi (@2), prec);\n+\t tree cst = wide_int_to_tree (VECTOR_TYPE_P (t) ? TREE_TYPE (t)\n+\t\t\t\t\t: t, w);\n+\t cst = build_uniform_cst (t, cst); }\n+ (convert (mult (convert:t @0) { cst; })))))\n #endif\n \n /* Canonicalize (X*C1)|(X*C2) and (X*C1)^(X*C2) to (C1+C2)*X when\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr124886.c b/gcc/testsuite/gcc.dg/tree-ssa/pr124886.c\nnew file mode 100644\nindex 00000000000..294c3784479\n--- /dev/null\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr124886.c\n@@ -0,0 +1,19 @@\n+/* { dg-do compile } */\n+/* { dg-options \"-O1 -fdump-tree-optimized\" } */\n+\n+typedef int v4si __attribute__((vector_size(4 * sizeof(int))));\n+\n+int\n+f (int a)\n+{\n+ return a * 266 + (a << 12);\n+}\n+\n+\n+v4si\n+f_vec (v4si a)\n+{\n+ return a * 266 + (a << 12);\n+}\n+\n+/* { dg-final { scan-tree-dump-times \"<<\" 0 \"optimized\" } } */\n", "prefixes": [] }