{"id":2229334,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2229334/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/20260428072746.3641227-2-pan2.li@intel.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":"<20260428072746.3641227-2-pan2.li@intel.com>","date":"2026-04-28T07:26:26","name":"[v1,1/2] RISC-V: Combine vec_duplicate + vmsgtu.vv to vmsgtu.vx on GR2VR cost","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"c7b56e3b229883e7a9607592fbf60b5679e95438","submitter":{"id":86320,"url":"http://patchwork.ozlabs.org/api/1.1/people/86320/?format=json","name":"Li, Pan2","email":"pan2.li@intel.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20260428072746.3641227-2-pan2.li@intel.com/mbox/","series":[{"id":501773,"url":"http://patchwork.ozlabs.org/api/1.1/series/501773/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=501773","date":"2026-04-28T07:26:25","name":"RISC-V: Combine vec_duplicate + vmsgtu.vv to vmsgtu.vx on GR2VR cost","version":1,"mbox":"http://patchwork.ozlabs.org/series/501773/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2229334/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2229334/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=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=MKZNPyCe;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.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=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=MKZNPyCe","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=intel.com","sourceware.org; spf=pass smtp.mailfrom=intel.com","server2.sourceware.org;\n arc=none smtp.remote-ip=198.175.65.13"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.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 4g4XFr2hJXz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 17:32:32 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 87DBB4BA7999\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 07:32:30 +0000 (GMT)","from mgamail.intel.com (mgamail.intel.com [198.175.65.13])\n by sourceware.org (Postfix) with ESMTPS id 423B04BA799C\n for <gcc-patches@gcc.gnu.org>; Tue, 28 Apr 2026 07:32:03 +0000 (GMT)","from orviesa008.jf.intel.com ([10.64.159.148])\n by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Apr 2026 00:31:47 -0700","from panli.sh.intel.com ([10.239.159.63])\n by orviesa008.jf.intel.com with ESMTP; 28 Apr 2026 00:31:44 -0700"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 87DBB4BA7999","OpenDKIM Filter v2.11.0 sourceware.org 423B04BA799C"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 423B04BA799C","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 423B04BA799C","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777361523; cv=none;\n b=i+Z4j5JosIoSYyfNNq3ouPNWLfMv1ukA5BkRZoNvU/kJndT+kJvlgiwykkv58k3ZipwNfv3kAHWkxS7j3HjMUeqaYLAUkzdhgDkltJ5k5ltr4rnfNrMPi01gUer7C6BU3YAWxoWPwDbMZtWJ2bQkLa+BpnFVMOrPfqbOLY/4CnY=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777361523; c=relaxed/simple;\n bh=o9vqcb0WH089JSCvjT1FGhg935TC2LCo+UkqKdGNfCI=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=MomXlf9btYqSBZAZGpcz/JOMWjvZPZ5dsAPA+hs9GFKJBO/1kHObw9r9bqvLdiOI7QvTZzULrfpOHg9de+BNyidDSDFXMModG8LA8w8bo59o/aR9Qa0nFbpMTmkQ+2rkxcF+4xV2l1jYz4nLRKmh5FLErVuMMqUFDyfx6k+VVc8=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1777361523; x=1808897523;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=o9vqcb0WH089JSCvjT1FGhg935TC2LCo+UkqKdGNfCI=;\n b=MKZNPyCermwvbOEmK/yAGLhgD+Oub3jtIrZERIEyDjCWzpl4SFq8cI/j\n bMqjp8aIbpWEo1jfXiNp3nWF2NK04R7pyW224JuLz66Rx9cjzKiqJa+IQ\n e9N+cbHx+NKhU6END5VgbyRz+sDdeGcAwaAySEPGMsVHh3kbEBkSt2Kqh\n mygo+J6TiwMqK61/XWeOz+mhq/coPoMnXB6hyXYidAisf5jS5quEYKkoa\n vDrzhELymLbSuWNSARHTDk043qQoa24jJX6xp0Eho4cEWhNW3kwFyDsrK\n KrCDv4GfOrVBoXou4ThcVDznYzkpzKwdG4KkAbj6n+TXoq8DoWUnOIKw1 A==;","X-CSE-ConnectionGUID":["B5pg0ku+QZicoHj9QiU0hg==","Y366jpOQTRejJh6URv/eqg=="],"X-CSE-MsgGUID":["VTxiJJX6QiSgdGLPQwMg5Q==","aUKCpIdqThSAkg+FZyAreg=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11769\"; a=\"89350071\"","E=Sophos;i=\"6.23,203,1770624000\"; d=\"scan'208\";a=\"89350071\"","E=Sophos;i=\"6.23,203,1770624000\"; d=\"scan'208\";a=\"233746055\""],"X-ExtLoop1":"1","From":"pan2.li@intel.com","To":"gcc-patches@gcc.gnu.org","Cc":"juzhe.zhong@rivai.ai, kito.cheng@gmail.com, jeffreyalaw@gmail.com,\n rdapp.gcc@gmail.com, ken.chen@intel.com, hongtao.liu@intel.com,\n Pan Li <pan2.li@intel.com>","Subject":"[PATCH v1 1/2] RISC-V: Combine vec_duplicate + vmsgtu.vv to vmsgtu.vx\n on GR2VR cost","Date":"Tue, 28 Apr 2026 15:26:26 +0800","Message-ID":"<20260428072746.3641227-2-pan2.li@intel.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260428072746.3641227-1-pan2.li@intel.com>","References":"<20260428072746.3641227-1-pan2.li@intel.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","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: Pan Li <pan2.li@intel.com>\n\nThis patch would like to combine the vec_duplicate + vmsgtu.vv to the\nvmsgtu.vx.  From example as below code.  The related pattern will depend\non the cost of vec_duplicate from GR2VR.  Then the late-combine will\ntake action if the cost of GR2VR is zero, and reject the combination\nif the GR2VR cost is greater than zero.\n\nAssume we have asm code like below, GR2VR cost is 0.\n\nBefore this patch:\n  11       beq a3,zero,.L8\n  12       vsetvli a5,zero,e32,m1,ta,ma\n  13       vmv.v.x v2,a2\n  ...\n  16   .L3:\n  17       vsetvli a5,a3,e32,m1,ta,ma\n  ...\n  22       vmsgtu.vv v1,v2,v3\n  ...\n  25       bne a3,zero,.L3\n\nAfter this patch:\n  11       beq a3,zero,.L8\n  ...\n  14    .L3:\n  15       vsetvli a5,a3,e32,m1,ta,ma\n  ...\n  20       vmsgtu.vx v1,a2,v3\n  ...\n  23       bne a3,zero,.L3\n\ngcc/ChangeLog:\n\n\t* config/riscv/predicates.md: Add ltu to swappable\n\tcmp operator.\n\t* config/riscv/riscv-v.cc (get_swapped_cmp_rtx_code): Handle\n\tthe swapped rtx code as well.\n\nSigned-off-by: Pan Li <pan2.li@intel.com>\n---\n gcc/config/riscv/predicates.md | 2 +-\n gcc/config/riscv/riscv-v.cc    | 2 ++\n 2 files changed, 3 insertions(+), 1 deletion(-)","diff":"diff --git a/gcc/config/riscv/predicates.md b/gcc/config/riscv/predicates.md\nindex 8022c84b114..4116674601c 100644\n--- a/gcc/config/riscv/predicates.md\n+++ b/gcc/config/riscv/predicates.md\n@@ -612,7 +612,7 @@ (define_predicate \"comparison_except_ge_operator\"\n   (match_code \"eq,ne,le,leu,gt,gtu,lt,ltu\"))\n \n (define_predicate \"comparison_swappable_operator\"\n-  (match_code \"gtu,gt,geu,ge\"))\n+  (match_code \"gtu,gt,geu,ge,ltu\"))\n \n (define_predicate \"ge_operator\"\n   (match_code \"ge,geu\"))\ndiff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc\nindex cfea5dd693e..3c7e749cb60 100644\n--- a/gcc/config/riscv/riscv-v.cc\n+++ b/gcc/config/riscv/riscv-v.cc\n@@ -6073,6 +6073,8 @@ get_swapped_cmp_rtx_code (rtx_code code)\n       return LEU;\n     case GE:\n       return LE;\n+    case LTU:\n+      return GTU;\n     default:\n       gcc_unreachable ();\n     }\n","prefixes":["v1","1/2"]}