From patchwork Tue Sep 12 13:32:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "juzhe.zhong@rivai.ai" X-Patchwork-Id: 138184 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9ecd:0:b0:3f2:4152:657d with SMTP id t13csp410246vqx; Tue, 12 Sep 2023 06:33:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGxzXPUHe0QKwbl+5thWzjRgE5/36ti/uH/41o7JsfCGCwfrWWqahZKT40CJ93k+gI42R32 X-Received: by 2002:a17:907:1b1d:b0:9a1:c69c:9388 with SMTP id mp29-20020a1709071b1d00b009a1c69c9388mr3383307ejc.37.1694525585339; Tue, 12 Sep 2023 06:33:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694525585; cv=none; d=google.com; s=arc-20160816; b=0zMuK3zia3flPvne/Uvb5wR5PXh5FiQ/OJdq/e/2fR4axndUEuSwUumr95Z1hGV6yj p3Mgc1TWRBuBoivJcnWvZRLkuInQv0IA1kGXYie9pApVkEARIieue5djOK1IPRoxI2PC p1GXoyYp4QtIsv3QinKGlYwjW1JpCjnpRMiwa7JVtUqoScwcLPSMDJJ3/IlZrYa7Pyh6 Cg0S1PO+7WJ7D9rPRUB1GNLtQO2N2W+HImfdioFVggi/00Q5PLfSMvVGeWlk53sQgzhc KWLJrvVvVi2PsL2rF3ymYzYuFaNtUC9cA5XTKKe0jF9ZSW37juf4v5FonynOkso05dA4 wAHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:feedback-id :content-transfer-encoding:mime-version:message-id:date:subject:to :from:dmarc-filter:delivered-to; bh=fEwbjX7kD5l7TqNlNPKPQyG6H3iqNRq60KitpvMkYr8=; fh=arl273cIQBNH1P6XLxHQvF0scgitfd773vOV+bwQx3o=; b=G7GHIwL/g5S34errg5ewtMdqRqP75OdLQ/DH3Dz8vAvd8mG90UO8sNsuC8KlgvZirS LfqdpGQNX5fvrt4ldQF98NadrLYSzP5cHPq9YaYcT2t4QiLzcB35s5AZw+G2V89M8rPR nturzd2z+khd1yctMFSMW022e/hnWkf7jk3Qq/NhOZjNOMeEqJh2GZI6T77xsfebR/mS oq8lnGPMF2RLDlpKU40TIrEm0swliEu24RupcYjhjgOIU11fNnQX7NSoODz1iPc2p0JX EL+nNQd4jW/DF6QwH+htqFEzGB5/2gjrJrMjuj61mzK3yp7NBQu8YuYDzG6H4sExC/Hb NTmA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id nb9-20020a1709071c8900b009ad7ec350e8si2056683ejc.665.2023.09.12.06.33.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 06:33:05 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A6AC43856944 for ; Tue, 12 Sep 2023 13:32:39 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by sourceware.org (Postfix) with ESMTPS id 3730B3858402 for ; Tue, 12 Sep 2023 13:32:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3730B3858402 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp64t1694525525tyzebkw0 Received: from rios-cad121.hadoop.rioslab.org ( [58.60.1.9]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 12 Sep 2023 21:32:04 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: +ynUkgUhZJnSPoNCmeOAiUyNx2sobrjwXBWqq+5Do+h0GZ/OJQodlr93iNMnz zMZFiLfe8Ss9lgosY3h426P997wba7TQE0AxU0ZPpJF4LoO5Pa8/XIXEHc8s7N/aEGi4+bu hyP2G+NiEbtev79bxhZ+R3nRAdHnZhdetIGRj03SQ1xvaicE7FOCLYgvdWV/k3DaY6dAylM Qrqe9g1kTiorDCB3MzR7qkePlkKjroIXjnXXJ+3EdWovcC3Wk5DsP3k8xYLzFyN1TlH7Ti2 xjHPeJnX6PluPJVH7V8pjiAhHiOe9mZDOZoYtwDEQg/D1/SdA2R6PlMcj4I2gyfWbTkAswP +mxyekADF0Qoa6396Ec1cnt+bQFsI9321EBN/BNYsMOQdrvS2wlZhMEYU69U97HYj1yKV3/ 6yQnH96Q1i9j3h1jbu5Du4UJ5Ou63oNp X-QQ-GoodBg: 2 X-BIZMAIL-ID: 11827869210810642056 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Subject: [PATCH V2] RISC-V: Support VECTOR BOOL vcond_mask optab[PR111337] Date: Tue, 12 Sep 2023 21:32:02 +0800 Message-Id: <20230912133202.94470-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_PASS, TXREP, T_SPF_HELO_TEMPERROR, WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kito.cheng@sifive.com, kito.cheng@gmail.com, Juzhe-Zhong Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1776838859821944035 X-GMAIL-MSGID: 1776838859821944035 PR target/111337 As this PR: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111337 We support VECTOR BOOL vcond_mask to fix this following ICE: 0x1a9e309 gimple_expand_vec_cond_expr ../../../../gcc/gcc/gimple-isel.cc:283 0x1a9ea56 execute ../../../../gcc/gcc/gimple-isel.cc:390 gcc/ChangeLog: * config/riscv/autovec.md (vcond_mask_): New pattern. --- gcc/config/riscv/autovec.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gcc/config/riscv/autovec.md b/gcc/config/riscv/autovec.md index e9dd40af935..50c0104550b 100644 --- a/gcc/config/riscv/autovec.md +++ b/gcc/config/riscv/autovec.md @@ -565,6 +565,40 @@ [(set_attr "type" "vector")] ) +;; ------------------------------------------------------------------------- +;; ---- [BOOL] Select based on masks +;; ------------------------------------------------------------------------- +;; Includes merging patterns for: +;; - vmand.mm +;; - vmor.mm +;; - vmnot.m +;; ------------------------------------------------------------------------- + +(define_expand "vcond_mask_" + [(match_operand:VB 0 "register_operand") + (match_operand:VB 1 "register_operand") + (match_operand:VB 2 "register_operand") + (match_operand:VB 3 "register_operand")] + "TARGET_VECTOR" + { + /* mask1 = operands[3] & operands[1]. */ + rtx mask1 = expand_binop (mode, and_optab, operands[1], + operands[3], NULL_RTX, 0, + OPTAB_DIRECT); + /* mask2 = ~operands[3] & operands[2]. */ + rtx inverse = expand_unop (mode, one_cmpl_optab, operands[3], + NULL_RTX, 0); + rtx mask2 = expand_binop (mode, and_optab, operands[2], + inverse, NULL_RTX, 0, + OPTAB_DIRECT); + /* result = mask1 | mask2. */ + rtx result = expand_binop (mode, ior_optab, mask1, + mask2, NULL_RTX, 0, + OPTAB_DIRECT); + emit_move_insn (operands[0], result); + DONE; + }) + ;; ------------------------------------------------------------------------- ;; ---- [INT,FP] Comparisons ;; -------------------------------------------------------------------------