From patchwork Thu Mar 2 08:35:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 63273 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp4118442wrd; Thu, 2 Mar 2023 00:38:18 -0800 (PST) X-Google-Smtp-Source: AK7set/0i1QvLSKbjyT4utLwoKgyGQuzfEn0MXRaAC+KT6MdGcfuzPk4iMKhySkah2mOTrxBeXuL X-Received: by 2002:a17:907:ea2:b0:8aa:c038:974c with SMTP id ho34-20020a1709070ea200b008aac038974cmr15345006ejc.54.1677746298073; Thu, 02 Mar 2023 00:38:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677746298; cv=none; d=google.com; s=arc-20160816; b=F8WWd3GgDdBB3i978S0GceytfbzXi6fikb8k8VLq5Jtx9mZS6fJCkunI4PnRk5OPV3 u7Wzig5rfmhw1GKHxoSgUgbWv8ShaW+faRwiQtTBdnVKIvTfZdLH/t/LzZLxEvQwMKiH 4h+BYj/WQlHdLuE2yIgNO/Zo9DAjhOc89byXBa68Go+EyPtHNDvoXF+Qqr6r5s/7UWxJ 6mrWXC+LMkX5Bse2a8IVGnT5jSbhGCg/HJ5In4OBjevuGGyxXtZr/rmFEHSvvNaPEs5s 0R4YSl3MgIslcbSXl9jIJflit0btvZAB9cbN4NA2LL/7vv9jJnTSzcn+SQ+pIrTNqA5B /YZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=wAqXfo7+5IP14ySE80w5vDqMIr4VdiAug7HDCySEHic=; b=mzdqovRmBR2JTrsa36pFRQd6sBA2ZfODyOe2eIvqMckfMlVkY1JgT1Uae5ftHCRBiI 66CEjgTjqTy/buYe1NO3bj3iW8zK99PRjTNgSpUKblL3DLe5YwtTzbGZ8sNKl5rM8Yj7 uWHE1HCa5yM9zihgah2xHLnvpKuviP+0TveB4QMUNWhRqIVAx0E3NuR5yYIRQixDf30Y +D8gpZJb+lbgXr/bocmwLS/Q6HN+N2hWUEAN9isgH/e4WfJAOVSCE31OTYwFLBjSUGPR Q+UfjWb1oll6f4dneJ+Fx12YK43QcY/k0OqzcggYFl2GflNeXf3Vjwn4dcosENxAnIZG K+7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=ajOXkYHe; 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 sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id v14-20020a170906488e00b008e0363188easi2558180ejq.656.2023.03.02.00.38.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Mar 2023 00:38:18 -0800 (PST) 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; dkim=pass header.i=@vrull.eu header.s=google header.b=ajOXkYHe; 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 C1A2538493D5 for ; Thu, 2 Mar 2023 08:37:01 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by sourceware.org (Postfix) with ESMTPS id B5551385842C for ; Thu, 2 Mar 2023 08:35:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B5551385842C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-ed1-x52b.google.com with SMTP id x3so1477838edb.10 for ; Thu, 02 Mar 2023 00:35:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; t=1677746144; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wAqXfo7+5IP14ySE80w5vDqMIr4VdiAug7HDCySEHic=; b=ajOXkYHe56TQVPdiQ3YpUGEeZrR+Ac3dMvxhLlokhEhV2s4SiaxPAvu6FYLFZcQALl CyBKPFuYRb/YSK4HUTQub9OGF5zcSt9Ai9URGlOGG9FEpI5nWIyqojjZmnFeqlKvi3O1 7+aRyyyFXA9Zvjf7goEPLwEUankfaczurYaEv5NQ+0r6gRIUi+dXuETD8lBVe3wVXN4/ SbkdNqb238EnKGH2c2ltzJ0j7lRijHMQGNYSF3Gld3laQB6/G5TfWKD+LY7xviWKpOY2 L81FliQ2M2Q1eM/b5OSbgwJ2JIGn3C654B10LWvNfFfj152pagyDWV1g5k7fvBF3fOsH LWjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677746144; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wAqXfo7+5IP14ySE80w5vDqMIr4VdiAug7HDCySEHic=; b=BvAbJPA7EyhuH4+wNz6J2j9aM45OTeuNNdWAEIIB5D/ta5MliDHObFlxlyJbQKllQc XxLDkZ/jSZT7FZgFEFun7vs9NhgHUZXJS+lcLIzWbu/GaXAYqglWwnwXi6wvftOYPK2v 0n18ouN3iDiY0bTpyV83kv6p1DquMOEIh+5YY4MCFC26dBlFgZ1ILty+1Idu2CYrlKmq zL3DXmGX2L4iWriBTKXHHrohWtv6QoVHtjRcTeF/g0WW1PofKyma+yZmO3Hr3VsvFTYd yhbOETizugsS4K6h/xa2M7Q0K+2jW5CsdAMOQysqTZWa7XXfSRsxE+EggY8kFKDNQpit yBaQ== X-Gm-Message-State: AO0yUKVvDJBAVtUhaHCreqVQIAfJNabAKpXhizrLeahevfP3j+PMf254 dDc0kZ92cTnJmWITjMqGmNjxbSErthkDzFOG X-Received: by 2002:a17:906:bcf7:b0:89e:8c3d:bb87 with SMTP id op23-20020a170906bcf700b0089e8c3dbb87mr10342100ejb.71.1677746143984; Thu, 02 Mar 2023 00:35:43 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id p17-20020a170906229100b008e68d2c11d8sm6853872eja.218.2023.03.02.00.35.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Mar 2023 00:35:43 -0800 (PST) From: Christoph Muellner To: gcc-patches@gcc.gnu.org, Kito Cheng , Jim Wilson , Palmer Dabbelt , Andrew Waterman , Philipp Tomsich , Cooper Qu , Lifang Xia , Yunhai Shang , Zhiwei Liu , Andrew Pinski , Hans-Peter Nilsson Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [PATCH v4 4/9] riscv: thead: Add support for the XTheadBs ISA extension Date: Thu, 2 Mar 2023 09:35:29 +0100 Message-Id: <20230302083534.4076244-5-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230302083534.4076244-1-christoph.muellner@vrull.eu> References: <20230302083534.4076244-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1759244502290113432?= X-GMAIL-MSGID: =?utf-8?q?1759244502290113432?= From: Christoph Müllner This patch adds support for the XTheadBs ISA extension. The new INSN pattern is defined in a new file to separate this vendor extension from the standard extensions. The cost model adjustment reuses the xbs:bext cost. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost. * config/riscv/thead.md (*th_tst3): New INSN. gcc/testsuite/ChangeLog: * gcc.target/riscv/xtheadbs-tst.c: New test. Changes in v4: - Replace 'immediate_operand' by 'const_int_operand' - Add number of arguments to pattern name - Add range check Signed-off-by: Christoph Müllner --- gcc/config/riscv/riscv.cc | 4 ++-- gcc/config/riscv/thead.md | 11 +++++++++++ gcc/testsuite/gcc.target/riscv/xtheadbs-tst.c | 13 +++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadbs-tst.c diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index f11b7949a49..e35bc0a745b 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -2400,8 +2400,8 @@ riscv_rtx_costs (rtx x, machine_mode mode, int outer_code, int opno ATTRIBUTE_UN *total = COSTS_N_INSNS (SINGLE_SHIFT_COST); return true; } - /* bext pattern for zbs. */ - if (TARGET_ZBS && outer_code == SET + /* bit extraction pattern (zbs:bext, xtheadbs:tst). */ + if ((TARGET_ZBS || TARGET_XTHEADBS) && outer_code == SET && GET_CODE (XEXP (x, 1)) == CONST_INT && INTVAL (XEXP (x, 1)) == 1) { diff --git a/gcc/config/riscv/thead.md b/gcc/config/riscv/thead.md index 2da5aaee94f..3842a194d16 100644 --- a/gcc/config/riscv/thead.md +++ b/gcc/config/riscv/thead.md @@ -29,3 +29,14 @@ (define_insn "*th_addsl4" "th.addsl\t%0,%3,%1,%2" [(set_attr "type" "bitmanip") (set_attr "mode" "")]) + +;; XTheadBs + +(define_insn "*th_tst3" + [(set (match_operand:X 0 "register_operand" "=r") + (zero_extract:X (match_operand:X 1 "register_operand" "r") + (const_int 1) + (match_operand 2 "const_int_operand" "n")))] + "TARGET_XTHEADBS && UINTVAL (operands[2]) < GET_MODE_BITSIZE (mode)" + "th.tst\t%0,%1,%2" + [(set_attr "type" "bitmanip")]) diff --git a/gcc/testsuite/gcc.target/riscv/xtheadbs-tst.c b/gcc/testsuite/gcc.target/riscv/xtheadbs-tst.c new file mode 100644 index 00000000000..674cec09128 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/xtheadbs-tst.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv32gc_xtheadbs" { target { rv32 } } } */ +/* { dg-options "-march=rv64gc_xtheadbs" { target { rv64 } } } */ +/* { dg-skip-if "" { *-*-* } { "-O0" } } */ + +long +foo1 (long i) +{ + return 1L & (i >> 20); +} + +/* { dg-final { scan-assembler-times "th.tst\t" 1 } } */ +/* { dg-final { scan-assembler-not "andi" } } */