get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2223081,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2223081/?format=api",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/1.0/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": "<b5119df8-a47c-4d35-8228-6d3f9386d808@linux.ibm.com>",
    "date": "2026-04-14T11:34:11",
    "name": "[v2] rs6000: Fix PTImode attribute handling [PR106895]",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "d69b1bc01d88b50443a2d73a30dec8a2f96e8440",
    "submitter": {
        "id": 88218,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/88218/?format=api",
        "name": "jeevitha",
        "email": "jeevitha@linux.ibm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/b5119df8-a47c-4d35-8228-6d3f9386d808@linux.ibm.com/mbox/",
    "series": [
        {
            "id": 499822,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/499822/?format=api",
            "date": "2026-04-14T11:34:11",
            "name": "[v2] rs6000: Fix PTImode attribute handling [PR106895]",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/499822/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2223081/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=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=WbYBuvyU;\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=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=WbYBuvyU",
            "sourceware.org;\n dmarc=none (p=none dis=none) header.from=linux.ibm.com",
            "sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=148.163.156.1"
        ],
        "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 4fw2Hs2BkZz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 21:34:49 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 77B494BA2E3C\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 11:34:47 +0000 (GMT)",
            "from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com\n [148.163.156.1])\n by sourceware.org (Postfix) with ESMTPS id C225C4BA2E07\n for <gcc-patches@gcc.gnu.org>; Tue, 14 Apr 2026 11:34:19 +0000 (GMT)",
            "from pps.filterd (m0356517.ppops.net [127.0.0.1])\n by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63DLJPg61834976; Tue, 14 Apr 2026 11:34:18 GMT",
            "from ppma22.wdc07v.mail.ibm.com\n (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92])\n by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dh89raevc-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Tue, 14 Apr 2026 11:34:18 +0000 (GMT)",
            "from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1])\n by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id\n 63E8YPH0031191;\n Tue, 14 Apr 2026 11:34:17 GMT",
            "from smtprelay06.wdc07v.mail.ibm.com ([172.16.1.73])\n by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4dg10y9bg8-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Tue, 14 Apr 2026 11:34:17 +0000",
            "from smtpav05.dal12v.mail.ibm.com (smtpav05.dal12v.mail.ibm.com\n [10.241.53.104])\n by smtprelay06.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 63EBYFcE29295226\n (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Tue, 14 Apr 2026 11:34:15 GMT",
            "from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 0F0F358056;\n Tue, 14 Apr 2026 11:34:15 +0000 (GMT)",
            "from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 2D2CA58052;\n Tue, 14 Apr 2026 11:34:13 +0000 (GMT)",
            "from [9.98.105.13] (unknown [9.98.105.13])\n by smtpav05.dal12v.mail.ibm.com (Postfix) with ESMTP;\n Tue, 14 Apr 2026 11:34:12 +0000 (GMT)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 77B494BA2E3C",
            "OpenDKIM Filter v2.11.0 sourceware.org C225C4BA2E07"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org C225C4BA2E07",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org C225C4BA2E07",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776166460; cv=none;\n b=JTMgzSCy2ALwwhyLBOfhgAxdeJS351LQtyXUSr+For+LNMZ8xKUa0D3Ekan0HjA5WkJVEHKKmd4ETtd4OHPFNphLUxce0XTSfLiiQfOIS4K5POdd5mpY9otfrranl1l/wiuAohAKEhPTNa2kAUa+lrhK6e92COa4mng9QR/GN24=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776166460; c=relaxed/simple;\n bh=XuHAWtOddGG8OiyMS/Fa61mFp8vpW+nyoRulYWSfZHw=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:From:To:Subject;\n b=XC8LfLWYFXBR+MPXGEM7DLQ3geviD9RdNXzFsMbUFtKFkqBu+W7FpzX0lZXnp1V8QPL65i/UT1h9fmUFKNuzTBfUtuW6SlbZzZXMzPSPq5KRdX8zZK4NPw4I0wcaQX3dNWTZ8nYhSbQfCItSpWu2sXi+GDYjA79EHucWTIikMUs=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=\n content-transfer-encoding:content-type:date:from:message-id\n :mime-version:subject:to; s=pp1; bh=ND0q/wiB1NO+AerX5HyuGWwQQMP6\n s2XyFsOtiRYMqSk=; b=WbYBuvyUlWXwy4ZmZ39s+lDnxTxOUGVY+0+LhyGDn+Fw\n clbp0YdbEvG/GcQ21QhkbpoQcIaPKrCoynL4tRWh0L+cohnzPhX9WtJ16lWtwr5T\n vcui+sy3LR2C9I1YHYPfieIFo53SfM3gI2R7ZfD2FCHTA3kauINIJTa0yGLPU5+h\n ixzBTwD3XcGpgAgh1N9kgLR71cyBG/3TiS8EHI2lRqUVuL2BHTNzRx6lUJiP3s4G\n LyApfHepq9K+9fLsLwx218/CUBpjMPuRU+03Dl3ai3JHdPIMnmGIXb3TRZRv6okI\n bad2AKDB6rteHDbNPT/+rg91LlpL6sqtqVLFtT/Y3w==",
        "Message-ID": "<b5119df8-a47c-4d35-8228-6d3f9386d808@linux.ibm.com>",
        "Date": "Tue, 14 Apr 2026 17:04:11 +0530",
        "MIME-Version": "1.0",
        "User-Agent": "Mozilla Thunderbird",
        "From": "jeevitha <jeevitha@linux.ibm.com>",
        "Content-Language": "en-US",
        "To": "GCC Patches <gcc-patches@gcc.gnu.org>,\n Surya Kumari Jangala <jskumari@linux.ibm.com>,\n Michael Meissner <meissner@linux.ibm.com>,\n Avinash Jayakar <avinashd@linux.ibm.com>,\n Segher Boessenkool <segher@kernel.crashing.org>",
        "Subject": "[PATCH v2] rs6000: Fix PTImode attribute handling [PR106895]",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "7bit",
        "X-TM-AS-GCONF": "00",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDE0MDEwNSBTYWx0ZWRfX+HkG8SJ2ThiH\n ZvXffCT4+p+QbsLbB9ihJS7wiYDkbD53o2LhvTLy+WyLeuIO1zITS/wtOgdOckPvoKJr7pcsth0\n S7YmZ1O6bnjCUsTpk1HlR4w417LBZy7FChBl8w7Cup5SNWdmv0xLSqzaBmnuYwh3AuBcpumsWtI\n 2623osJgctJGT9dLVAg6J8wbt5wwuvYbgpJJK5NdDReV9542xHNuvUktfak6nWNObIBnSldkEtA\n p9kIEmnaom9VN1XJZ+JjXTyS0TDv2yt1t3n4339cDr8hSiUg18Bb4tqiS/m38gzDqpNGsan9IR9\n 5B2nTZ2Su51LLoZLar62jQ+AvmMw+RUCBkjYykw4aiQUtpATn5wDZ/7udhMN6+dq6uGpLSkMwVF\n XZ/pkLyP6VXw622NQXRbNdIu5wo6AUgi2HfQgBC/ROSu98Id8tJQEqvvkpUwHsgsy5kylxx22bi\n UwCfbS6aj/MCoVvL0Dg==",
        "X-Proofpoint-ORIG-GUID": "bXGGYe0P0fHVnDP1DMuDvG2NuH9XKee-",
        "X-Proofpoint-GUID": "bXGGYe0P0fHVnDP1DMuDvG2NuH9XKee-",
        "X-Authority-Analysis": "v=2.4 cv=fYidDUQF c=1 sm=1 tr=0 ts=69de263a cx=c_pps\n a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8\n a=qragHlggf3eVdwpAFs8A:9 a=QEXdDO2ut3YA:10",
        "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_03,2026-04-13_04,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n adultscore=0 impostorscore=0 clxscore=1015 malwarescore=0 phishscore=0\n bulkscore=0 priorityscore=1501 spamscore=0 suspectscore=0 lowpriorityscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604140105",
        "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": "Hi All,\n\nThe following patch has been bootstrapped and regtested on powerpc64le-linux.\n\nChanges from V1:\n* Added new test pr106895-2.c.\n\nPTImode is used to generate even/odd register pairs for 128-bit values.\nWhen PTImode is specified via a type attribute, compilation fails\nbecause no internal type exists to represent this mode.\n\nIntroduce signed and unsigned PTImode internal builtin types to handle\nPTImode. These __pti_internal types are not documented, as they are not\nintended for direct user use.\n\n2026-04-14  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>\n\ngcc/\n\tPR target/106895\n\t* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add\n\tRS6000_BTI_INTPTI and RS6000_BTI_UINTPTI.\n\t(intPTI_type_internal_node, uintPTI_type_internal_node): New\n\tPTImode type macros.\n\t* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Register\n\tsigned and unsigned PTImode internal builtin types.\n\t* config/rs6000/sync.md (trunctipti2): New splitter.\n\t(extendptiti2): Likewise.\n\t(zero_extendptiti2): Likewise.\n\ngcc/testsuite/\n\tPR target/106895\n\t* gcc.target/powerpc/pr106895-1.c: New test.\n\t* gcc.target/powerpc/pr106895-2.c: New test.",
    "diff": "diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc\nindex bbf60de3b1b..8561cd67f53 100644\n--- a/gcc/config/rs6000/rs6000-builtin.cc\n+++ b/gcc/config/rs6000/rs6000-builtin.cc\n@@ -756,6 +756,19 @@ rs6000_init_builtins (void)\n   else\n     ieee128_float_type_node = NULL_TREE;\n \n+  /* PTImode to get even/odd register pairs.  */\n+  intPTI_type_internal_node = make_signed_type (GET_MODE_BITSIZE (PTImode));\n+  SET_TYPE_MODE (intPTI_type_internal_node, PTImode);\n+  t = build_qualified_type (intPTI_type_internal_node, TYPE_QUAL_CONST);\n+  lang_hooks.types.register_builtin_type (intPTI_type_internal_node,\n+\t\t\t\t\t  \"__pti_internal\");\n+\n+  uintPTI_type_internal_node = make_unsigned_type (GET_MODE_BITSIZE (PTImode));\n+  SET_TYPE_MODE (uintPTI_type_internal_node, PTImode);\n+  t = build_qualified_type (uintPTI_type_internal_node, TYPE_QUAL_CONST);\n+  lang_hooks.types.register_builtin_type (uintPTI_type_internal_node,\n+\t\t\t\t\t  \"__upti_internal\");\n+\n   /* Vector pair and vector quad support.  */\n   vector_pair_type_node = make_node (OPAQUE_TYPE);\n   SET_TYPE_MODE (vector_pair_type_node, OOmode);\ndiff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h\nindex 2b90694cef1..d85f71aa65d 100644\n--- a/gcc/config/rs6000/rs6000.h\n+++ b/gcc/config/rs6000/rs6000.h\n@@ -2285,6 +2285,8 @@ enum rs6000_builtin_type_index\n   RS6000_BTI_ptr_vector_quad,\n   RS6000_BTI_ptr_long_long,\n   RS6000_BTI_ptr_long_long_unsigned,\n+  RS6000_BTI_INTPTI,\n+  RS6000_BTI_UINTPTI,\n   RS6000_BTI_MAX\n };\n \n@@ -2329,6 +2331,8 @@ enum rs6000_builtin_type_index\n #define uintDI_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_UINTDI])\n #define intTI_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_INTTI])\n #define uintTI_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_UINTTI])\n+#define intPTI_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_INTPTI])\n+#define uintPTI_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_UINTPTI])\n #define float_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_float])\n #define double_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_double])\n #define long_double_type_internal_node\t (rs6000_builtin_types[RS6000_BTI_long_double])\ndiff --git a/gcc/config/rs6000/sync.md b/gcc/config/rs6000/sync.md\nindex 7087daf7e4c..4e392584bbc 100644\n--- a/gcc/config/rs6000/sync.md\n+++ b/gcc/config/rs6000/sync.md\n@@ -198,6 +198,54 @@\n   DONE;\n })\n \n+;; PTI and TI are both 128-bit modes; the following conversions are\n+;; register-class changes only, no actual truncation, sign or zero\n+;; extension occurs.\n+(define_insn_and_split \"trunctipti2\"\n+  [(set (match_operand:PTI 0 \"register_operand\" \"=r\")\n+        (truncate:PTI (match_operand:TI 1 \"register_operand\" \"r\")))]\n+  \"\"\n+  \"#\"\n+  \"&& reload_completed\"\n+  [(set (match_dup 2) (match_dup 4))\n+   (set (match_dup 3) (match_dup 5))]\n+{\n+  operands[2] = gen_lowpart (DImode, operands[0]);\n+  operands[3] = gen_highpart (DImode, operands[0]);\n+  operands[4] = gen_lowpart (DImode, operands[1]);\n+  operands[5] = gen_highpart (DImode, operands[1]);\n+})\n+\n+(define_insn_and_split \"extendptiti2\"\n+  [(set (match_operand:TI 0 \"register_operand\" \"=r\")\n+        (sign_extend:TI (match_operand:PTI 1 \"register_operand\" \"r\")))]\n+  \"\"\n+  \"#\"\n+  \"&& reload_completed\"\n+  [(set (match_dup 2) (match_dup 4))\n+   (set (match_dup 3) (match_dup 5))]\n+{\n+  operands[2] = gen_lowpart (DImode, operands[0]);\n+  operands[3] = gen_highpart (DImode, operands[0]);\n+  operands[4] = gen_lowpart (DImode, operands[1]);\n+  operands[5] = gen_highpart (DImode, operands[1]);\n+})\n+\n+(define_insn_and_split \"zero_extendptiti2\"\n+  [(set (match_operand:TI 0 \"register_operand\" \"=r\")\n+        (zero_extend:TI (match_operand:PTI 1 \"register_operand\" \"r\")))]\n+  \"\"\n+  \"#\"\n+  \"&& reload_completed\"\n+  [(set (match_dup 2) (match_dup 4))\n+   (set (match_dup 3) (match_dup 5))]\n+{\n+  operands[2] = gen_lowpart (DImode, operands[0]);\n+  operands[3] = gen_highpart (DImode, operands[0]);\n+  operands[4] = gen_lowpart (DImode, operands[1]);\n+  operands[5] = gen_highpart (DImode, operands[1]);\n+})\n+\n ;; If TARGET_PREFIXED, always use pstq rather than stq.\n (define_insn \"store_quadpti\"\n   [(set (match_operand:PTI 0 \"quad_memory_operand\" \"=wQ\")\ndiff --git a/gcc/testsuite/gcc.target/powerpc/pr106895-1.c b/gcc/testsuite/gcc.target/powerpc/pr106895-1.c\nnew file mode 100644\nindex 00000000000..dfcafcd57e7\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/powerpc/pr106895-1.c\n@@ -0,0 +1,16 @@\n+/* PR target/106895 */\n+/* { dg-do assemble } */\n+/* { dg-require-effective-target int128 } */\n+/* { dg-options \"-O2 -save-temps\" } */\n+\n+/* Verify the following generates even/odd register pairs.  */\n+\n+typedef __int128 pti __attribute__((mode(PTI)));\n+\n+void\n+set128 (pti val, pti *mem)\n+{\n+  asm (\"stq %1,%0\" : \"=m\" (*mem) : \"r\" (val));\n+}\n+\n+/* { dg-final { scan-assembler {\\mstq\\M} } } */\ndiff --git a/gcc/testsuite/gcc.target/powerpc/pr106895-2.c b/gcc/testsuite/gcc.target/powerpc/pr106895-2.c\nnew file mode 100644\nindex 00000000000..7a197ff65cf\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/powerpc/pr106895-2.c\n@@ -0,0 +1,21 @@\n+/* PR target/106895 */\n+/* { dg-do run } */\n+/* { dg-require-effective-target int128 } */\n+/* { dg-options \"-O2\" } */\n+\n+#include <stdlib.h>\n+\n+typedef __int128 ti;\n+typedef __int128 pti __attribute__((mode(PTI)));\n+\n+int main(void)\n+{\n+  ti a = 140;\n+  pti b = (pti) a;\n+  ti c = (ti) b;\n+\n+  if (c != a)\n+    abort();\n+\n+  return 0;\n+}\n",
    "prefixes": [
        "v2"
    ]
}