From patchwork Tue Sep 12 13:19:27 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: 138178 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9ecd:0:b0:3f2:4152:657d with SMTP id t13csp402752vqx; Tue, 12 Sep 2023 06:20:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEXrQNdRRo/B2DifFG1WgrmqAMFfJag5EeLT5q32v5kTYvTiqmn1lKHE78QHiN7mnxtariD X-Received: by 2002:aa7:c999:0:b0:529:fa63:ef80 with SMTP id c25-20020aa7c999000000b00529fa63ef80mr9829179edt.28.1694524859091; Tue, 12 Sep 2023 06:20:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694524859; cv=none; d=google.com; s=arc-20160816; b=onyqZrz4m/ORxtQpAdG2pkNxW6AVG2h57+q/RvOKP1cF4H6RJb/IgdniMQDMcqaVOX YhRv0X63+J1M53KA9UnWsE8bsPkjzMCNWy5Xf37h1Z0p0avH+cFFU1UEtciqRliaWaWI chMiYDZL/n/KRymvyt3tpBb9xzxLmrmHC5JARLsYo4xAQHbBeflnMIp4wZQwhgycBy0Y XK0lFoupHLIRKvSb/Od+QOXEVa1CejkvOHdRqtogXeBLUeFfAXYoVHtQWwtlN8rujeWE jqT9Te4+UCBN0MdtMFfaOgDskkUTEINfrdikf34jYPsPjsYI1vVOl5z+xwsQGCBrhbae C06w== 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=P4DkhLC6CQO6jrEJ8NwQiRJ8Km3FoPmepr+UhRD79yA=; fh=arl273cIQBNH1P6XLxHQvF0scgitfd773vOV+bwQx3o=; b=kh57PVAA0mrxdiwrq3pBK6X3Weru6wZJr/WnLyTAIWTzq7DaedjiPQDLNz4JIkgchp JwY+I3DVNPdUmyOz0wbQcfkkooWhN/yPBZWfgiTsOY4R13BZJ8xOdb7I6ugYr2re4BZi 7NmVE9xaQyDyyNcTpJUw+tSEhASCt3EP/lD6n6DMHBikC4VvBeBpaen159oQy9PzLQe3 L4ZwjC4X9kt1qLhC4btVBx03aiYwcHLo6EnbIQFjBhUFE/9jLf7c+EOQjDF+xV5ZkSRn aoh8hykbykq3p3zKGO9/R5C+GHdTSLhxoeFWrGNQVhO4AwjQq+RhnovriIuuWPqi47Pl 4Iyw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id t18-20020aa7d712000000b0052e6f6e4e7fsi8956184edq.278.2023.09.12.06.20.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 06:20:59 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 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 5D23B385483F for ; Tue, 12 Sep 2023 13:20:08 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by sourceware.org (Postfix) with ESMTPS id 963B83858C50 for ; Tue, 12 Sep 2023 13:19:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 963B83858C50 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: bizesmtp83t1694524769tsvbv7j7 Received: from rios-cad121.hadoop.rioslab.org ( [58.60.1.9]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 12 Sep 2023 21:19:28 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: +ynUkgUhZJlox0GKgo9t6+RLNvYDulyF8DlO+ObPYwBdUFSwu60NvUAsNj5k8 MfcJCoApcsU/dP8iS/CiLkOhPqPrTIeYudYcESE7TIMuYvGrKw3XGoXfXhzzkgZbMSM/J2R pL4seSFbyWB9GLMIuuOch8aj/GSfIl/B79203ZftV7NqYRG86Ar9GafGQdwXptLNgFptk+z xF8Y3RuMTCEPWh6BULVzDiwhte/BeDjPVthgz2tDP0Eizp35ktvgk+VdC3yGMqb5d6Bk2Y+ 8QC3BZ8KXewZKbEWsuawCIPsS/m6rRJb7A8Rg5wMGBjUsnSXDxksw7fr2bl5E6HA3CKIEzx V4Ud2hCDg/ihUvsJZnnvw0UAhVPPI+tNi33OpoKXBIB3kQ3L71e7kqc0L357ss5EntVNQhC KyhelkBYMPwp4nZL/cMFng== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 931049865104709071 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Subject: [PATCH] RISC-V: Support VECTOR BOOL vcond_mask optab[PR111337] Date: Tue, 12 Sep 2023 21:19:27 +0800 Message-Id: <20230912131927.83094-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_HELO_PASS, SPF_PASS, TXREP, 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: 1776838098708143513 X-GMAIL-MSGID: 1776838098708143513 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..45a70f16ee1 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 ;; -------------------------------------------------------------------------