get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2232138/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2232138,
    "url": "http://patchwork.ozlabs.org/api/patches/2232138/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260503053451.48504-3-herumi@nifty.com/",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/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,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260503053451.48504-3-herumi@nifty.com>",
    "list_archive_url": null,
    "date": "2026-05-03T05:34:50",
    "name": "[v2,2/3] i386: Add BMI2 MULX pattern for highpart-only multiplication",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "696c0f9eee892806384adb26ffe5be7bbd4ea706",
    "submitter": {
        "id": 92964,
        "url": "http://patchwork.ozlabs.org/api/people/92964/?format=api",
        "name": null,
        "email": "herumi@nifty.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260503053451.48504-3-herumi@nifty.com/mbox/",
    "series": [
        {
            "id": 502562,
            "url": "http://patchwork.ozlabs.org/api/series/502562/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=502562",
            "date": "2026-05-03T05:34:51",
            "name": "Optimize 32-bit unsigned constant division for 64-bit targets",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/502562/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2232138/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2232138/checks/",
    "tags": {},
    "related": [],
    "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=nifty.com header.i=@nifty.com header.a=rsa-sha256\n header.s=default-1th84yt82rvi header.b=aLaC2ouJ;\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=nifty.com header.i=@nifty.com header.a=rsa-sha256\n header.s=default-1th84yt82rvi header.b=aLaC2ouJ",
            "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=nifty.com",
            "sourceware.org; spf=pass smtp.mailfrom=nifty.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=2001:268:fa30:831:6a:99:e3:27"
        ],
        "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 4g7YVR3kQ2z1yJV\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 03 May 2026 15:38:55 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id AE7704B99F64\n\tfor <incoming@patchwork.ozlabs.org>; Sun,  3 May 2026 05:38:51 +0000 (GMT)",
            "from mta-snd-w07.mail.nifty.com (mta-snd-w07.mail.nifty.com\n [IPv6:2001:268:fa30:831:6a:99:e3:27])\n by sourceware.org (Postfix) with ESMTPS id 6AF564BB24E7\n for <gcc-patches@gcc.gnu.org>; Sun,  3 May 2026 05:35:49 +0000 (GMT)",
            "from sapp by mta-snd-w07.mail.nifty.com with ESMTP\n id <20260503053547453.UHF.19957.sapp@nifty.com>;\n Sun, 3 May 2026 14:35:47 +0900"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org AE7704B99F64",
            "OpenDKIM Filter v2.11.0 sourceware.org 6AF564BB24E7"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 6AF564BB24E7",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 6AF564BB24E7",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777786550; cv=none;\n b=FXLOQij6rHcXZGw6qsGRIW5MbHD9MbE7PKDVtAtkYwSkZ82lbqkt8tEX6IKcykcUOUiWeuRCOpxk/VUxicgJ0iCTtrcpb0jC6080OdTd2U2w8CuMkVQPUVvMbTF8uibkAZGJiftLWZ59vl38W/wpSWhlG88+hVStIfhx4CgpsMw=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777786550; c=relaxed/simple;\n bh=ig2b3PqrjQoK06YxiT5Dlaak+TkvcKjGrUWKuuO8q14=;\n h=From:To:Subject:Date:Message-ID:MIME-Version:DKIM-Signature;\n b=N37t7RX6ryzCqIQZ5ByIStOTWuP2QrhDOuTJhgUPP2hyL+Xw4O4X6NqWEkQPPV1b0XwezYRwFdxcJd/XZ/nWIfCQoh3PLwATj9oUvmE3i8psSkTsxuTrFSJF7OtoDBRq/mRbP17ZHEdx6WCdg5XrrFo6O2BgoOq0hSOsVhqC7yo=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "From": "herumi@nifty.com",
        "To": "gcc-patches@gcc.gnu.org",
        "Cc": "rguenther@suse.de, jeffreyalaw@gmail.com, ubizjak@gmail.com,\n MITSUNARI Shigeo <herumi@nifty.com>",
        "Subject": "[PATCH v2 2/3] i386: Add BMI2 MULX pattern for highpart-only\n multiplication",
        "Date": "Sun,  3 May 2026 14:34:50 +0900",
        "Message-ID": "<20260503053451.48504-3-herumi@nifty.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260503053451.48504-1-herumi@nifty.com>",
        "References": "<727728f8-76e5-457b-ab9f-d650550e0702@gmail.com>\n <20260503053451.48504-1-herumi@nifty.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com;\n s=default-1th84yt82rvi; t=1777786547;\n bh=QHhexD3atHIX/0RKNPGKx6Yecs1dnctpbeG522VT5cI=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References;\n b=aLaC2ouJgKTfQcdryH5jzbMF8rT45P6Zkpi9IiMkinODNCCSvg+Tc5ce0hPGtKL6aaHQRa0t\n xHIW5tvejAlBiaAdkblwHq1IEFHho/Mw9QXP9RNQ8sfs3zkQ5KsLRw+DRK1IL8hDpOT0ZOGXPO\n sz0b05AafFkdksRY8RFra7/r5TexjaDnWmfCkQyooYNGVIFp11D752gQ3P9m87KTOV6pCG7w41\n yIr2plsS5wjrI8xtmCSF7o8OKQOGOM4yCsnGUw9vZm7PXvyopN6rVXlgPkI2ErcO0+njWsD2OH\n 3WhbbmbwXizF8HDRUnccCTtiQAHt6IJDuiiP+pwl1B9KOGyw==",
        "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": "From: MITSUNARI Shigeo <herumi@nifty.com>\n\nAdd a new instruction pattern that uses MULX to compute only the high\npart of an unsigned multiplication on BMI2 targets.  Previously, when\nonly the high part was needed, GCC would emit MULQ followed by a MOV\nto retrieve the result from RDX.  With this pattern, MULX writes the\nhigh part directly to the destination register, saving one instruction.\n\nThis benefits unsigned 32-bit integer division by constants that require\n33-bit magic multipliers (e.g., division by 7), reducing the sequence\nfrom 4 instructions to 3 on BMI2 targets.\n\nBefore:\n    movabsq $2635249153617166336, %rcx\n    movl    %edi, %eax\n    mulq    %rcx\n    movl    %edx, %eax\n\nAfter:\n    movabsq $2635249153617166336, %rax\n    movl    %edi, %edx\n    mulx    %rax, %rdx, %rax\n\ngcc/ChangeLog:\n\n\t* config/i386/i386.md (*bmi2_umul<mode>3_highpart): New pattern.\n---\n gcc/config/i386/i386.md | 15 +++++++++++++++\n 1 file changed, 15 insertions(+)",
    "diff": "diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md\nindex e514809453d..472f9d41332 100644\n--- a/gcc/config/i386/i386.md\n+++ b/gcc/config/i386/i386.md\n@@ -11507,6 +11507,21 @@\n \t      (set (match_dup 5)\n \t\t   (umul_highpart:DWIH (match_dup 2) (match_dup 3)))])])\n \n+;; BMI2 MULX highpart-only pattern.  Uses MULX to get only the high part,\n+;; discarding the low part into a scratch register.  This avoids the\n+;; mov from rdx after mulq when only the high part is needed.\n+(define_insn \"*bmi2_umul<mode>3_highpart\"\n+  [(set (match_operand:DWIH 0 \"register_operand\" \"=r\")\n+\t(umul_highpart:DWIH\n+\t  (match_operand:DWIH 1 \"register_operand\" \"d\")\n+\t  (match_operand:DWIH 2 \"nonimmediate_operand\" \"rm\")))\n+   (clobber (match_scratch:DWIH 3 \"=r\"))]\n+  \"TARGET_BMI2\"\n+  \"mulx\\t{%2, %3, %0|%0, %3, %2}\"\n+  [(set_attr \"type\" \"imulx\")\n+   (set_attr \"prefix\" \"vex\")\n+   (set_attr \"mode\" \"<MODE>\")])\n+\n ;; Highpart multiplication patterns\n (define_insn \"<s>mul<mode>3_highpart\"\n   [(set (match_operand:DWIH 0 \"register_operand\" \"=d\")\n",
    "prefixes": [
        "v2",
        "2/3"
    ]
}