get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2227731,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2227731/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/CAMe9rOqfjMdkw7z3ah1QyheFFF389fFgsNT+ge7RRFhj=Wt7Gg@mail.gmail.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": "<CAMe9rOqfjMdkw7z3ah1QyheFFF389fFgsNT+ge7RRFhj=Wt7Gg@mail.gmail.com>",
    "date": "2026-04-24T07:20:26",
    "name": "x86_cse: Use integer load for CONST_VECTOR load",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "f76a841f47717a99f176e8fa189dfb4932128211",
    "submitter": {
        "id": 4387,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/4387/?format=api",
        "name": "H.J. Lu",
        "email": "hjl.tools@gmail.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/CAMe9rOqfjMdkw7z3ah1QyheFFF389fFgsNT+ge7RRFhj=Wt7Gg@mail.gmail.com/mbox/",
    "series": [
        {
            "id": 501312,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/501312/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=501312",
            "date": "2026-04-24T07:20:26",
            "name": "x86_cse: Use integer load for CONST_VECTOR load",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/501312/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2227731/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2227731/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=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=cnxfIO0j;\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=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=cnxfIO0j",
            "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com",
            "sourceware.org; spf=pass smtp.mailfrom=gmail.com",
            "server2.sourceware.org;\n arc=pass smtp.remote-ip=209.85.210.175"
        ],
        "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 4g24CD1f5Hz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 17:21:42 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id CF3B44BA5435\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 07:21:40 +0000 (GMT)",
            "from mail-pf1-f175.google.com (mail-pf1-f175.google.com\n [209.85.210.175])\n by sourceware.org (Postfix) with ESMTPS id B368D4BB1C2B\n for <gcc-patches@gcc.gnu.org>; Fri, 24 Apr 2026 07:21:04 +0000 (GMT)",
            "by mail-pf1-f175.google.com with SMTP id\n d2e1a72fcca58-82748257f5fso4580469b3a.1\n for <gcc-patches@gcc.gnu.org>; Fri, 24 Apr 2026 00:21:04 -0700 (PDT)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org CF3B44BA5435",
            "OpenDKIM Filter v2.11.0 sourceware.org B368D4BB1C2B"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org B368D4BB1C2B",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org B368D4BB1C2B",
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1777015264; cv=pass;\n b=adutRSy110CclLfvYWCSnzke9XwWzJDCuvx7QWAm41p89VA9bKRDqBAXGX8viPiBSY+2qqUX4BFWsN37Y3Qa4RY7Z8s1fe1oKOEGJhDZfe/K+IEnxyWmnVvUslGCFMukkzo1krz7OCOLhMJ+BFMH2FJwusBYwXgvdunLVqVJZiA=",
            "i=1; a=rsa-sha256; t=1777015263; cv=none;\n d=google.com; s=arc-20240605;\n b=FHWidAls3Mg41eBjscgpblXlj76+k/NuS9hUH8kFGgit3vlB3AeW6lVAraEhPnNoQS\n KLeGuibJdfakNieMUVfRjh964s8s1qv1pNOtUSyWJdlpPIWDA250L9K2ULV/eQmlVdvD\n 2b0ET4aGzqVkz+iLZWDarBm7XTQr3LePgYJ5PBD7Ei0cuOK1G31crr3us5WSZNDNKa0h\n u4swzfUj4N9UpIooYzHKnPp8MjQt0wYqFCb2FeeIq7BrZkPeNdDbi+KH+RWfYBef7hjH\n gkdWjqbayyG7NFvO1fjpSZb1AUeVoAaWdcpaNJSghnmPY7ZwqqyKBU0Aj4mkTeBEgA+K\n uk8w=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777015264; c=relaxed/simple;\n bh=8AxQYTDAFB152AzWyKW5w1X6Qjs1WUGYHHhUcl+pp/8=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=S+Kl4NAe2xGNSmQ/imJfYY58MarkUZpMbuLdzuvaVhX+wHvZbAQP0E4Q2ehyV+gIWg47ESTMg2TclnryAW++GxwCLAdtbBFk36h0lZ2dMZH2sh6cwLoucxJfVD4yP7wmJcqC9REhfuMZQuFTeFMm915HGrMewatYIU9OOjWlvxY=",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=to:subject:message-id:date:from:mime-version:dkim-signature;\n bh=hvTDIIVy/l7CY0VIJWOT/htHkeOIddzhoRZyL8nBZ9o=;\n fh=83snE5t1iR5QXMcAAhy1f7NFmMeqVCeXIkq3dVlORPM=;\n b=kpCww1LWtrDaKCBXL/y6TqvAYgaXM224vJaEjWZ67TCRQ1IHvCUDEKkSVICSjwauDC\n tycPLNCCovxQUyJ90yxldvTnObyCNxiN+z4NMxhalWYO1hiVmVe4gFQMyVuhIxv/OPli\n Tj1TPgDkwU2ObepZGaC3vaRjJOO/Ne4+p4lyrIrz/Q68rxXDz55FGyfk++VmpUh+0bHV\n f/OADaIrRZAilsSNuxf2XyEhfRkvaYm5DTxdGpG7h0xwQhd58xEBHB/ujJhVh+qSSWNU\n VaqchpQ0NeodCvgrYQln+dW15PA32tNWMgOJR6VVD8l6r9SKoT/ymx7K4FowWaa8EcVo\n dRhA==; darn=gcc.gnu.org"
        ],
        "ARC-Authentication-Results": [
            "i=2; server2.sourceware.org",
            "i=1; mx.google.com; arc=none"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1777015263; x=1777620063; darn=gcc.gnu.org;\n h=to:subject:message-id:date:from:mime-version:from:to:cc:subject\n :date:message-id:reply-to;\n bh=hvTDIIVy/l7CY0VIJWOT/htHkeOIddzhoRZyL8nBZ9o=;\n b=cnxfIO0jFyX25gtrCNRYAnkGb+wFAUskJ1wo5Hub+/1yWjTVQT9cTXeYuh9D4NEaRc\n pXyoGNFy5I1WepSQ1JTtbGgTRgfC/pwEndJCL9vydrndI9fFUdMUguZb/z3zJ7YrvKQb\n RsLt57VmzHJKBlV6SMelCdT0qByV2wyUfMO2it0weHuwIMHcGVvLCfaotw/D/E9RpPFE\n VKZowgZoE+LaSsNkUN+1HzJwTSy/UpNk2CLFqQhIE4TZeyxBa1FppReANGZcv9isZgPa\n yNqUMyvD+svVGuZf75rWfh6XssyFY2iURJZqxsTjkoYd6IJ3lAdyqqjVnCmxopN+7sOc\n w39Q==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777015263; x=1777620063;\n h=to:subject:message-id:date:from:mime-version:x-gm-gg\n :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n bh=hvTDIIVy/l7CY0VIJWOT/htHkeOIddzhoRZyL8nBZ9o=;\n b=JhIRxIT5vde4sxj70+IurqLeBzL5XflMqBoWL2zInmRX8KAN1lgu5/zK0NHQFKQvTQ\n u7UMCa+Baf+0luxg14boxpt3BnniD2/4HEJzgPDi0kCZhfdig9obEAzANpD6tgYu0XXp\n H+K5izSJUSNxgp0CSlnEsr6ijtZ0h3PaCVV8rn+9+C9/LEnfIB7CTIG9Z8avAixPxWkU\n awTClAmOfKQDmLRa1ea83GtjH10W7xW2IK0MdE5KLmWc21bearjKNRtdUwaUKDxzD614\n VNRR0ETHCMrlZvIraYB0Uj6JHuOll3Eflf/YeZgJ+CBHc1rxtFTE97moccgUt6OfugIl\n ZNkg==",
        "X-Gm-Message-State": "AOJu0YwXma7KEZnucBxKIh2S1mvCkcPuonWpohu2j6vz1QFEpagZH0zG\n SeidmxtNgEJY3LZMjmAZxEqfsNIkIOaI3QyUqwM8LR/wZtD/IVC05ibYkz9sjr9BiBWT9YY5hJS\n x7HeuZrrCc5StVWNYaFrXaLmybPcj48HPAFUNz0puuIWy",
        "X-Gm-Gg": "AeBDiet3CcDlhX0Cao4aU98gtRiilFtsfry/VF8fUf2ZljmSKTeN7cNSOUA0FlSGNlL\n mGNpobpoWOxkvfD22X/IhWb3+rl6jgOQCftF35m/u+WXhpL77uBDjsmsqQhQcCC38G1oCRzu5We\n 6wllI5jCMWC4zIXsfclC2u2YQHbxcle4RXPxUHrm4qgwcQUDkDBdZwffNMOLMccqKNvpBeDEWIS\n VovQKd/Rr9HX6Aj2/KHZzHGh1BAbcwaSD6ODPECQ6nellYHSvfvPT6+rIJ56L3VEoKrFZerfWpb\n 2vG34tM0qXP+4YN6Vw==",
        "X-Received": "by 2002:a05:6a00:9291:b0:827:2792:e401 with SMTP id\n d2e1a72fcca58-82f8b3a890bmr23779299b3a.15.1777015262901; Fri, 24 Apr 2026\n 00:21:02 -0700 (PDT)",
        "MIME-Version": "1.0",
        "From": "\"H.J. Lu\" <hjl.tools@gmail.com>",
        "Date": "Fri, 24 Apr 2026 15:20:26 +0800",
        "X-Gm-Features": "AQROBzCxWRPcIUwKqwU46XVoV-0j8IOmIEycE2N0RBt81-bGxObg2cPySKkmryw",
        "Message-ID": "\n <CAMe9rOqfjMdkw7z3ah1QyheFFF389fFgsNT+ge7RRFhj=Wt7Gg@mail.gmail.com>",
        "Subject": "[PATCH] x86_cse: Use integer load for CONST_VECTOR load",
        "To": "GCC Patches <gcc-patches@gcc.gnu.org>, Uros Bizjak <ubizjak@gmail.com>,\n Hongtao Liu <hongtao.liu@intel.com>",
        "Content-Type": "multipart/mixed; boundary=\"00000000000081c1dc06502f9bda\"",
        "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": "CONST_VECTOR load no larger than integer register\n\n(set (reg:V2QI 294)\n     (const_vector:V2QI [(const_int 0 [0]) repeated x2]))\n\ncan use integer load.  Use inner mode as the scalar mode for CONST_VECTOR\nload source.\n\ngcc/\n\nPR target/125009\n* config/i386/i386-features.cc (ix86_place_single_vector_set):\nSupport CONST_VECTOR load no larger than integer register.\n(ix86_broadcast_inner): Use inner mode as the scalar mode for\nCONST_VECTOR load source.\n(pass_x86_cse::x86_cse): Generate CONST_VECTOR broadcast source\nfor CONST_VECTOR load no larger than integer register.\n\ngcc/testsuite/\n\nPR target/125009\n* g++.target/i386/pr125009.C: New test.\n* gcc.target/i386/pr125009.c: Likewise.",
    "diff": "From 672faf96fd4dbd36c70f33baf07670401d882177 Mon Sep 17 00:00:00 2001\nFrom: \"H.J. Lu\" <hjl.tools@gmail.com>\nDate: Fri, 24 Apr 2026 06:39:44 +0800\nSubject: [PATCH] x86_cse: Use integer load for CONST_VECTOR load\n\nCONST_VECTOR load no larger than integer register\n\n(set (reg:V2QI 294)\n     (const_vector:V2QI [(const_int 0 [0]) repeated x2]))\n\ncan use integer load.  Use inner mode as the scalar mode for CONST_VECTOR\nload source.\n\ngcc/\n\n\tPR target/125009\n\t* config/i386/i386-features.cc (ix86_place_single_vector_set):\n\tSupport CONST_VECTOR load no larger than integer register.\n\t(ix86_broadcast_inner): Use inner mode as the scalar mode for\n\tCONST_VECTOR load source.\n\t(pass_x86_cse::x86_cse): Generate CONST_VECTOR broadcast source\n\tfor CONST_VECTOR load no larger than integer register.\n\ngcc/testsuite/\n\n\tPR target/125009\n\t* g++.target/i386/pr125009.C: New test.\n\t* gcc.target/i386/pr125009.c: Likewise.\n\nSigned-off-by: H.J. Lu <hjl.tools@gmail.com>\n---\n gcc/config/i386/i386-features.cc         | 35 +++++++++++++++++++++---\n gcc/testsuite/g++.target/i386/pr125009.C | 31 +++++++++++++++++++++\n gcc/testsuite/gcc.target/i386/pr125009.c | 21 ++++++++++++++\n 3 files changed, 83 insertions(+), 4 deletions(-)\n create mode 100644 gcc/testsuite/g++.target/i386/pr125009.C\n create mode 100644 gcc/testsuite/gcc.target/i386/pr125009.c\n\ndiff --git a/gcc/config/i386/i386-features.cc b/gcc/config/i386/i386-features.cc\nindex 0dd278a3ea6..a04efb52a3e 100644\n--- a/gcc/config/i386/i386-features.cc\n+++ b/gcc/config/i386/i386-features.cc\n@@ -3322,7 +3322,16 @@ ix86_place_single_vector_set (rtx dest, rtx src, bitmap bbs,\n \t}\n     }\n \n-  if (load && load->kind == X86_CSE_VEC_DUP)\n+  /* CONST_VECTOR load no larger than integer register\n+\n+     (set (reg:V2QI 294)\n+\t  (const_vector:V2QI [(const_int 0 [0]) repeated x2]))\n+\n+     can use integer load.  */\n+  if (load\n+      && load->kind == X86_CSE_VEC_DUP\n+      && (!CONST_VECTOR_P (src)\n+\t  || GET_MODE_SIZE (GET_MODE (dest)) > UNITS_PER_WORD))\n     {\n       /* Get the source from LOAD as (reg:SI 99) in\n \n@@ -3759,7 +3768,10 @@ ix86_broadcast_inner (rtx op, machine_mode mode,\n \t  if (!rtx_equal_p (tmp, first))\n \t    return nullptr;\n \t}\n-      *scalar_mode_p = GET_MODE (first);\n+      /* Use the inner mode to handle\n+\t   (const_vector:V2QI [(const_int 0 [0]) repeated x2])\n+       */\n+      *scalar_mode_p = GET_MODE_INNER (mode);\n       *insn_p = nullptr;\n       return first;\n     }\n@@ -4732,8 +4744,23 @@ pass_x86_cse::x86_cse (void)\n \t\t  broadcast_source = CONSTM1_RTX (mode);\n \t\t  break;\n \t\tcase X86_CSE_VEC_DUP:\n-\t\t  reg = gen_reg_rtx (load->mode);\n-\t\t  broadcast_source = gen_rtx_VEC_DUPLICATE (mode, reg);\n+\t\t  if (CONST_INT_P (load->val)\n+\t\t      && GET_MODE_SIZE (mode) <= UNITS_PER_WORD)\n+\t\t    {\n+\t\t      /* CONST_VECTOR load no larger than integer\n+\t\t\t register size can use integer load.  */\n+\t\t      int nunits = GET_MODE_NUNITS (mode);\n+\t\t      rtvec v = rtvec_alloc (nunits);\n+\t\t      for (int j = 0; j < nunits ; j++)\n+\t\t\tRTVEC_ELT (v, j) = load->val;\n+\t\t      broadcast_source = gen_rtx_CONST_VECTOR (mode, v);\n+\t\t    }\n+\t\t  else\n+\t\t    {\n+\t\t      reg = gen_reg_rtx (load->mode);\n+\t\t      broadcast_source = gen_rtx_VEC_DUPLICATE (mode,\n+\t\t\t\t\t\t\t\treg);\n+\t\t    }\n \t\t  break;\n \t\tdefault:\n \t\t  gcc_unreachable ();\ndiff --git a/gcc/testsuite/g++.target/i386/pr125009.C b/gcc/testsuite/g++.target/i386/pr125009.C\nnew file mode 100644\nindex 00000000000..4b99e909f6c\n--- /dev/null\n+++ b/gcc/testsuite/g++.target/i386/pr125009.C\n@@ -0,0 +1,31 @@\n+/* { dg-do compile } */\n+/* { dg-options \"-mtune=generic -O2 -std=c++11\" } */\n+/* { dg-additional-options \"-march=pentiumpro\" { target ia32 } } */\n+\n+void *operator new(__SIZE_TYPE__, void *);\n+template <typename Value> struct hash_map {\n+  void put(Value v) {\n+    int e;\n+    new (&e) Value(v);\n+  }\n+};\n+struct tree_string {\n+  char str[];\n+} string;\n+long long minsize;\n+struct attr_access {\n+  bool internal_p;\n+  bool static_p;\n+} __trans_tmp_1;\n+hash_map<attr_access> init_attr_rdwr_indices_rwm;\n+void init_attr_rdwr_indices() {\n+  for (;;) {\n+    attr_access acc{};\n+    if (*string.str) {\n+      acc.internal_p = true;\n+      acc.static_p = minsize;\n+    }\n+    __trans_tmp_1 = acc;\n+    init_attr_rdwr_indices_rwm.put(acc);\n+  }\n+}\ndiff --git a/gcc/testsuite/gcc.target/i386/pr125009.c b/gcc/testsuite/gcc.target/i386/pr125009.c\nnew file mode 100644\nindex 00000000000..8a9935a4491\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/i386/pr125009.c\n@@ -0,0 +1,21 @@\n+/* { dg-do compile { target fpic } } */\n+/* { dg-options \"-mtune=generic -O2 -fPIC\" } */\n+/* { dg-additional-options \"-march=pentiumpro\" { target ia32 } } */\n+\n+struct target_var_desc {\n+  bool always_copy_from;\n+  bool is_attach;\n+};\n+struct target_mem_desc {\n+  struct target_var_desc list[];\n+};\n+void\n+gomp_map_vars_internal (int n, int l)\n+{\n+  struct target_mem_desc *tgt;\n+  int j;\n+  for (j = 0; j < l; j++)\n+    tgt->list[j].always_copy_from = tgt->list[j].is_attach = false;\n+  for (;j < n; j++)\n+    tgt->list[j].always_copy_from = tgt->list[j].is_attach = false;\n+}\n-- \n2.53.0\n\n",
    "prefixes": []
}