{"id":2228158,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2228158/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/3cfc5fbc-1a7b-4260-bef6-877248bf61f4@oss.qualcomm.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":"<3cfc5fbc-1a7b-4260-bef6-877248bf61f4@oss.qualcomm.com>","date":"2026-04-25T14:33:23","name":"[to-be-committed,RISC-V,PR,target/123838] Improve code generated for shifts with counts 31-N or 63-N","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"dcfffce5a00a6e8f6fe78af103bdb45d6464b447","submitter":{"id":92310,"url":"http://patchwork.ozlabs.org/api/1.1/people/92310/?format=json","name":"Jeffrey Law","email":"jeffrey.law@oss.qualcomm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/3cfc5fbc-1a7b-4260-bef6-877248bf61f4@oss.qualcomm.com/mbox/","series":[{"id":501441,"url":"http://patchwork.ozlabs.org/api/1.1/series/501441/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=501441","date":"2026-04-25T14:33:23","name":"[to-be-committed,RISC-V,PR,target/123838] Improve code generated for shifts with counts 31-N or 63-N","version":1,"mbox":"http://patchwork.ozlabs.org/series/501441/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2228158/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2228158/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=AESHfFeZ;\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=UBiWi0vY;\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=AESHfFeZ;\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=UBiWi0vY","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.168.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 4g2slZ1f4Hz1yHS\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 26 Apr 2026 00:34:00 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 615EC4BB589E\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 25 Apr 2026 14:33:57 +0000 (GMT)","from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n by sourceware.org (Postfix) with ESMTPS id D870B4BB588C\n for <gcc-patches@gcc.gnu.org>; Sat, 25 Apr 2026 14:33:27 +0000 (GMT)","from pps.filterd (m0279867.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63P3QX08470251\n for <gcc-patches@gcc.gnu.org>; Sat, 25 Apr 2026 14:33:26 GMT","from mail-dl1-f71.google.com (mail-dl1-f71.google.com\n [74.125.82.71])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4drnq5s3xb-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <gcc-patches@gcc.gnu.org>; Sat, 25 Apr 2026 14:33:26 +0000 (GMT)","by mail-dl1-f71.google.com with SMTP id\n a92af1059eb24-12c726f4055so8951172c88.1\n for <gcc-patches@gcc.gnu.org>; Sat, 25 Apr 2026 07:33:26 -0700 (PDT)","from [172.31.0.17] ([136.38.201.137])\n by smtp.gmail.com with ESMTPSA id\n a92af1059eb24-12c919266f6sm34496359c88.1.2026.04.25.07.33.23\n for <gcc-patches@gcc.gnu.org>\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Sat, 25 Apr 2026 07:33:24 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 615EC4BB589E","OpenDKIM Filter v2.11.0 sourceware.org D870B4BB588C"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org D870B4BB588C","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org D870B4BB588C","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777127608; cv=none;\n b=OqiE9Os4+N8arAzfBpuuGvOVp/G4D4v0OznVIfHpOy5GHNsw8cAwoeaiEj6d4n3qepPAFiebkkbfWfI1g49lco4lTjWPtc0SP0JV5vERCf4q8etSlkIL71WWuxtsSQghJrpMhZt5gFyla0tdzN2IWekYfEZRQgDO9VOn7KMXsuc=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777127608; c=relaxed/simple;\n bh=qAaSS4B1cnTV+EkDi+CmXTMbpcyVb9uTb2+pSZQHVcQ=;\n h=DKIM-Signature:DKIM-Signature:Message-ID:Date:MIME-Version:From:\n Subject:To;\n b=aoaxfpaUHhBObi9fa6fytuCk7pVPIsBvjdbj3rLNn5T+hhnT+dq/DrgqjhDSmwodG/9H3LmhuNBXoP/QgrklTJXt8g06rhgVBZwiNOtVL65Rl9/CjPuTykBBxHjcKlS0P7oQHStbAInSqf0N3n/VwcyT6WC7ZSJdIsEfc+9Aq6c=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n content-type:date:from:message-id:mime-version:subject:to; s=\n qcppdkim1; bh=jvvxWooL2MG8SrukHASUqOfBxV8Kgn+yIVPgwvHsLuw=; b=AE\n SHfFeZjwgzmWWAs46lI0bMSrXnNiObzXrKRKbx/cAaRsIgc7ne8fNcncZG4D+Vqs\n BN4pd1iix2x7x89X76HZ5SPLi7jrSMP5SjQRxHyWjr8gCxhZsoa/7uBKPjIq8NHQ\n WdQ/gMjf6R1v3KjQBWG1khowEAeZY8+Oz2bgMnqSrQbqs74oL8GdZZKG9A3gBUSd\n nn95xCUmMyGc078si3oHbLDLd5NHpyxmtkO9ufhahbrUswI8BKTVgkHW7LrxjUzV\n gDhps6WGRB1lfhh/LoPIMPjofTMB0Iy+V0dPqy7zmhC9+gHCzszDQ5658q18HN8K\n sQaV7al+ymeiVfwlZZFg==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1777127606; x=1777732406; darn=gcc.gnu.org;\n h=to:subject:from:content-language:user-agent:mime-version:date\n :message-id:from:to:cc:subject:date:message-id:reply-to;\n bh=jvvxWooL2MG8SrukHASUqOfBxV8Kgn+yIVPgwvHsLuw=;\n b=UBiWi0vY5ZL+QwkDVlhfX0KUNTGTINsQfryIcFUhsZQAbr0ldJ11G13F8QcVLjLzD7\n wDWy2LCYqqIDfTU5t/ffxV0CtUBr9FV1Pz7OpYY5pfsrUMZeHzUiHmtFgflFJ5uq52Zt\n Me/j7MF/LXzInu/FfzBGCOa/DXzdnCx7a9WfBFPfik3BzolPG54ySaeGiAAHIF3EB5Di\n 1MAyyDNrt1XWtGDadXEk9OMdCLO1p59SVJTZqZ7vQtsBB2ri/1VRd/jYtTtcYYbLKoTj\n RY1Nb9JMtM5s5z3DBOubFNZ1JwbqsKenxXOaI2BWZo9WY/50taAXxAzPB2mi5JBIHi3d\n X93w=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777127606; x=1777732406;\n h=to:subject:from:content-language:user-agent:mime-version:date\n :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=jvvxWooL2MG8SrukHASUqOfBxV8Kgn+yIVPgwvHsLuw=;\n b=YC1tpmoCoQwbYt/V1wMMTLDpCTlDAw2giIMmv6ZGilDRKOxWxJOJYnFe3LVFf+Bp1E\n wHkjGTCF8DiI3DggIFDRyVwAgz5WbkRgSzZPfr0pd8ByEkY5utemK1rNr0e5JbNBZaoD\n jiwNF45PXoLZpH+j4CEfVn4HA9DTs8JnEssDpIcOuOBvg30PoCChjaVFSL6vSbYrBDF5\n PIT+l67A6SKYHC9phjzMx/joK2Wax56s47FKbJ8ItoUHG8RCSvu9kCCU7jNCdswROsAy\n ZjDCEz5jHAnrVuCaAGmSMdB5UNQAz853CYuaMg1O32xRyHV2+94BI+EU+4mk4o2kyDOW\n Dc2A==","X-Gm-Message-State":"AOJu0YzuvaY6g0aNzcQLeNTSCKBVv+xo17oI3XGZlj6rv/evkkbCR/U7\n 0pAxj6EpgiVsKFBJV4fcbY+hKHEGVsMDKPDAjmjqMNHNGlidKHStc6HmT5aRDhOx7Q/ECxw0Un1\n /7X6k8IPXmvnMRY59m3EQVrK0L1x7BOgW6h28TjBnPUkECHjLDLfeCn03vVW2Hlxkwg0O","X-Gm-Gg":"AeBDievH4xaULRPMc3KDOt10V49thfRuVDPDn4q+mz8wv0J9zA59ep0Y5at5ymXeh/b\n UGUmJ/+8VDXtzHwEyAWiHc5BO+oH3m+CaD6YxHw+FPGhofeU4ihucD+53qziZMpAazNwnBT+X9E\n ztEKkmWyS2kdfyx3Qk/JXZTUKe18FcQUxQKB5e1eXZsCfI3uKWGiljeYYa821IA1lXBcBT4Om1x\n jMfYp6wyj10Na1dRVQfSTCRPhXVD+YRpMypAavGuZbGhOFXVOrw2qIWAwKNgdRY11HS/Wfg2yJ5\n SLO+QTuOjcj46jtm4vdAm4UW46F18PIO93WuS2U+uoCpUaBiMTPBD6bEVzDoPToEVscOuiDeSV/\n 5OAH9mBGXRKIDAjH/AKfNp/dhHLsx2iUf51d6CLdylgGAwZkUTek389kOa9P4","X-Received":["by 2002:a05:7022:69a2:b0:123:2ee9:d1b3 with SMTP id\n a92af1059eb24-12c73f644f4mr17434616c88.2.1777127605462;\n Sat, 25 Apr 2026 07:33:25 -0700 (PDT)","by 2002:a05:7022:69a2:b0:123:2ee9:d1b3 with SMTP id\n a92af1059eb24-12c73f644f4mr17434602c88.2.1777127604667;\n Sat, 25 Apr 2026 07:33:24 -0700 (PDT)"],"Content-Type":"multipart/mixed; boundary=\"------------5ABv7JNsLBab0pQWJ0TPUH2S\"","Message-ID":"<3cfc5fbc-1a7b-4260-bef6-877248bf61f4@oss.qualcomm.com>","Date":"Sat, 25 Apr 2026 08:33:23 -0600","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Content-Language":"en-US","From":"Jeffrey Law <jeffrey.law@oss.qualcomm.com>","Subject":"[to-be-committed][RISC-V][PR target/123838] Improve code generated\n for shifts with counts 31-N or 63-N","To":"'GCC Patches' <gcc-patches@gcc.gnu.org>","X-Authority-Analysis":"v=2.4 cv=QNxYgALL c=1 sm=1 tr=0 ts=69ecd0b6 cx=c_pps\n a=JYo30EpNSr/tUYqK9jHPoA==:117 a=asGLMfRmzhnGNxaIYohjRg==:17\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=r77TgQKjGQsHNAKrUKIA:9\n a=X-s9Emf64VNPKdGg-DgA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10\n a=06Iw0JyqPAGL7hmUEMMA:9 a=B2y7HmGcmWMA:10 a=Fk4IpSoW4aLDllm1B1p-:22","X-Proofpoint-GUID":"r2tVXaz7Tt3_WZeXO55aXuILndz4Oib1","X-Proofpoint-ORIG-GUID":"r2tVXaz7Tt3_WZeXO55aXuILndz4Oib1","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDI1MDE0OCBTYWx0ZWRfX02CNEgpzgy4p\n b3GSYaaacmoLXhztLXIPD0Qw6haOrMzLybmiMpesx9BH0/uAGNNuv+HLOVBPftc/slIA3H/it31\n kZ7785tpksN/RxBh01nUiuPJus6tZ4g3+x8CYcEcXvtmB+qCGyiTD/NMb2oljoCz92g9aUySTQD\n cbqD2RGu7cDiheSZwmTapt2EuMKs2et5/E+XqxdBCNbtTtyS0sDfa6pO3WcSievkd2tv9oiWWuh\n aN/adsO06dOfmKNUSgrBnelxAz6RdjAtDmoMQeWqyQYzZsQe4dq3n69BBVXzBJUWFTMbTLuY6JD\n 6JC8T14X2C8FT+0AlZT2OaO3ru76WZxTF7qKxNN034Fz7JjI7t/w6rpKX3GRQ0XJsDJ1CtILez/\n 0+LZX3+AoYIJp0yf1Vsf6Odh2hx4JhhZsRuWmP8JcJ3CH+wI0hGIzwvqnYgoM5n+44eXcRb81MQ\n IWh30L9U0UjYpD0EH8w==","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-25_03,2026-04-21_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n impostorscore=0 suspectscore=0 bulkscore=0 phishscore=0 spamscore=0\n adultscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0\n clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2604250148","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":"A shift count expressed at 31 - n ends up generating code like this:\n\n         li      a5,31\n         subw    a5,a5,a1\n         sllw    a0,a0,a5\n         ret\n\nNote how we had to load 31 into a constant for the subtraction. But \ninstead of using 31 - n we can use a bit-not as it'll do precisely what \nwe need in the bits that the shift instruction actually uses.  This \nresults in:\n\n         not     a1, a1\n         sllw    a0, a0, a1\n         ret\n\n\nThe core idea we're exploiting here is the processor implements \nSHIFT_COUNT_TRUNCATED semantics.  so a SI shift only cares about the low \n5 bits and DI the low 6 bits of the shift count.  And if we think about \nwhat bit pattern -1 would be in those cases we get 31 and 63.  We then \nexploit the identity\n\n-x = ~x + 1  // identity\n-1 - x = ~x  // a tiny bit of algebra\n\nSo in these limited cases we can place the the -1 - x with ~x.\n\nI didn't implement this in simplify-rtx.  It wasn't actually going to \nhelp because while the RISC-V chip implements SHIFT_COUNT_TRUNCATED \nsemantics, it doesn't define SHIFT_COUNT_TRUNCATED for \"reasons\".\n\nSo there's two patterns.  One for an X mode destination, naturally the \nshift count is 31/63 - n for SI/DI respectively.  It's a bit odd that \nthe subtraction is always SImode, but that's probably narrowing \nhappening somewhere.\n\nThe second pattern covers the \"w\" forms for rv64.\n\nThis trick probably works for the zbs instructions as well. That's going \nto be a whole lot more patterns and I haven't seen this idiom show up \nanywhere in practice, so it doesn't seem like a good cost/benefit analysis.\n\nThis spun overnight on riscv32-elf and riscv64-elf and on the Pioneer \nwithout regressions.  I'll wait for pre-commit CI to do its thing before \npushing.\n\njeff\nPR target/123838\ngcc/\n\t* config/riscv/riscv.md: Use splitters to simplify shifts where\n\tthe shift count is 31-N or 63-N.\n\ngcc/testsuite\n\t* gcc.target/riscv/pr123838.c: New test.","diff":"diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md\nindex 7e9205fb24bf..3aa7d5f343b2 100644\n--- a/gcc/config/riscv/riscv.md\n+++ b/gcc/config/riscv/riscv.md\n@@ -4995,6 +4995,48 @@ (define_split\n   { operands[3] = GEN_INT (BITS_PER_WORD\n \t\t\t   - exact_log2 (INTVAL (operands[3]) + 1)); })\n \n+;; If a shift count is BITS_PER_WORD - 1 - N, then we can exploit the identity\n+;; that -x = ~x + 1 which is equivalent to (-1 - x) = ~x.  When shifting only\n+;; low bits of X matter (5 for SI, 6 for DI).  So 31/63 are equivalent to -1\n+;; for SI/DI shifts.\n+;;\n+;; Strangely, even for rv64, the shift computation is done in SI, presumably\n+;; something narrowed the arithmetic prior to gimple->rtl expansion.\n+;; Ultimately it gets wrapped with a SUBREG narrowing to QI.\n+(define_split\n+  [(set (match_operand:X 0 \"register_operand\")\n+\t(any_shift_rotate:X\n+\t  (match_operand:X 1 \"register_operand\")\n+\t  (subreg:QI (minus:SI (match_operand 2 \"bitpos_mask_operand\")\n+\t\t\t       (match_operand:SI 3 \"register_operand\")) 0)))\n+    (clobber (match_operand:X 4 \"register_operand\"))]\n+  \"\"\n+  [(set (match_dup 4) (not:X (match_dup 6)))\n+   (set (match_dup 0) (any_shift_rotate:X (match_dup 1) (match_dup 5)))]\n+ { \n+   operands[5] = gen_lowpart (QImode, operands[4]);\n+   operands[6] = gen_lowpart (word_mode, operands[3]);\n+ })\n+\n+;; This is the same thing as the prior pattern, but for 32 bit shifts on rv64.\n+(define_split\n+  [(set (match_operand:DI 0 \"register_operand\")\n+\t(sign_extend:DI\n+\t (any_shift_rotate:SI\n+\t  (match_operand:SI 1 \"register_operand\")\n+\t  (subreg:QI (minus:SI (const_int 31)\n+\t\t\t       (match_operand:SI 2 \"register_operand\") ) 0))))\n+    (clobber (match_operand:DI 3 \"register_operand\"))]\n+  \"TARGET_64BIT\"\n+  [(set (match_dup 3) (not:DI (match_dup 2)))\n+   (set (match_dup 0)\n+\t(sign_extend:DI (any_shift_rotate:SI (match_dup 1)\n+\t\t\t\t\t     (match_dup 4))))]\n+ {\n+   operands[2] = gen_lowpart (DImode, operands[2]);\n+   operands[4] = gen_lowpart (QImode, operands[3]);\n+ })\n+\n ;; Standard extensions and pattern for optimization\n (include \"bitmanip.md\")\n (include \"crypto.md\")\ndiff --git a/gcc/testsuite/gcc.target/riscv/pr123838.c b/gcc/testsuite/gcc.target/riscv/pr123838.c\nnew file mode 100644\nindex 000000000000..58a8ea6ea0bb\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/riscv/pr123838.c\n@@ -0,0 +1,15 @@\n+/* { dg-do compile } */\n+/* { dg-skip-if \"\" { *-*-* } { \"-O0\" \"-Og\"} } */\n+\n+#define F(NAME, OP, TYPE) TYPE f##NAME##TYPE (TYPE x, TYPE n) { return x OP (sizeof (TYPE) * 8 - 1 - n); }\n+\n+F(RSHIFT, >>, int)\n+F(LSHIFT, <<, int)\n+F(RSHIFT, >>, long)\n+F(LSHIFT, <<, long)\n+\n+/* { dg-final { scan-assembler-times \"not\\t\" 4 } } */\n+/* { dg-final { scan-assembler-not \"li\\t\" } } */\n+/* { dg-final { scan-assembler-not \"sub\\t\" } } */\n+/* { dg-final { scan-assembler-not \"subw\\t\" } } */\n+\n","prefixes":["to-be-committed","RISC-V","PR","target/123838"]}