From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522448; cv=none; d=zohomail.com; s=zohoarc; b=VR6UF5WRf3rTv4Kb7q8SZFjuVDy4VPqU+UbCXv11VyinEOj8mAh0ggW1eaEi5uuTIbc92Zp5611IVNaf9cajX36rmX4CjEUbLbWOsDBSPyjbC8bYiHNXcEEc8XCm3CzHiXT5RWqwdbxQmStgbp/X2OCPIEFtJy3r9OlnQWHdLfU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522448; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=BgZikz4sJLs+w0Gy/WgD2VLy+0WnxAYabQZ2ZyT4YKc=; b=dPBTTbc+MVSPZQaK7eiZ0MbIrhka38F+6Q+eAZGzzrEQIwJPG9LfR1nvSXlog97Dt98sSYCbmxcaVV85MNFp8Mpw8/ut/YOsckSVYCwgu2qoVw/f6FYK4nusUlDoXRmqW8ZiTd2m+q8zEVkhl57rtOyfgKLv3kjsppMFwajB8ns= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522448676145.2431227505641; Tue, 12 Jan 2021 23:20:48 -0800 (PST) Received: from localhost ([::1]:57434 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaSV-0003kx-8v for importer@patchew.org; Wed, 13 Jan 2021 02:20:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48678) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaM6-0006lg-QI for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:12 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:33494) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaM2-0003m3-NU for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:09 -0500 Received: by mail-pj1-x1035.google.com with SMTP id w1so2700411pjc.0 for ; Tue, 12 Jan 2021 23:14:05 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BgZikz4sJLs+w0Gy/WgD2VLy+0WnxAYabQZ2ZyT4YKc=; b=aMywIBnSI83XT3/IkaO5F7ZSwOZ00BefYHJBDoTIbZ/DSNl63KizHkv34ZT/XQkKym LVR5ggMJ9xv0l2yvcpmsQ3g3bxya/k+qGktlO392gVzqCgQ4/Ln3HMkmvEK1JEkHGq67 hQvn/8NrFzJecTgP6dcBLrI5OpCnd51/D/NgimbJ1UtBYum40LFlMGcVSsEcYPKk7ZA1 g2uvK2yds1iNAq/L7tVvh8vcQtO6B9Db5XaVvp7gPTrmYb8TzCk51JJj6Ro9gDIUPPOa 57S4eSuG9FW2qMbrxLmdbX4i0IOtOOWfXiILy6xLYjTsxmUKuL0/8luygfGntj72oDlv vwGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BgZikz4sJLs+w0Gy/WgD2VLy+0WnxAYabQZ2ZyT4YKc=; b=i1uBJfor9yW7aijjOHU2u9A0Du/qp9iD4T6GADqbYasAgNAwo1/wal3VZoai3xPdzl Ks4tVpJYLbu1X2Wsf5YJw8KvWnDQwU8HWRXdylfHccoNYwXDW6SZRxCVjE7EKtlhqIK4 6LVIvGZk2OnaX90tf/STPPUw2aXCJzY/D9Tc70A/4whVOkZONSSxugWV9p2ARlgvLXW3 L9XXqstGMna9DB2bHy3MzoUKSxAczCX3TPvlYNRZIe6Qhd/Wd+zZvpVwGnkAcTKk/Yzy 6GTijbB9S5aOoMOMc1srnGrV2V+0Tp5AXZnQMs615aT2vh34o1Vl6Adoxq14Xi97c55L 7HOw== X-Gm-Message-State: AOAM532ID16U7Hp+B5N7wgI0yG3QbmZvux+gI6Atyt1mA6vVsCR4dKQH dEMQoqHYY2kPdOzEiPw3Asou5U+HdEQXBXi4 X-Google-Smtp-Source: ABdhPJzFZeT9UTPg0iStY9LzqCNXY0l2cXUS3WDZHQBNLaqv/c0gdJeNWtmII4/rddXfcLRLBruy3g== X-Received: by 2002:a17:90a:46c2:: with SMTP id x2mr832741pjg.15.1610522044052; Tue, 12 Jan 2021 23:14:04 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 01/16] target/riscv: reformat @sh format encoding for B-extension Date: Wed, 13 Jan 2021 15:13:33 +0800 Message-Id: <20210113071350.24852-2-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 84080dd18ca..3823b3ea800 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -22,7 +22,7 @@ %rs1 15:5 %rd 7:5 =20 -%sh10 20:10 +%sh7 20:7 %csr 20:12 %rm 12:3 %nf 29:3 !function=3Dex_plus_1 @@ -58,7 +58,7 @@ @u .................... ..... ....... &u imm=3D%imm_u = %rd @j .................... ..... ....... &j imm=3D%imm_j = %rd =20 -@sh ...... ...... ..... ... ..... ....... &shift shamt=3D%sh10 = %rs1 %rd +@sh ...... ...... ..... ... ..... ....... &shift shamt=3D%sh7 = %rs1 %rd @csr ............ ..... ... ..... ....... %csr %r= s1 %rd =20 @atom_ld ..... aq:1 rl:1 ..... ........ ..... ....... &atomic rs2=3D0 = %rs1 %rd @@ -122,9 +122,9 @@ sltiu ............ ..... 011 ..... 0010011 @i xori ............ ..... 100 ..... 0010011 @i ori ............ ..... 110 ..... 0010011 @i andi ............ ..... 111 ..... 0010011 @i -slli 00.... ...... ..... 001 ..... 0010011 @sh -srli 00.... ...... ..... 101 ..... 0010011 @sh -srai 01.... ...... ..... 101 ..... 0010011 @sh +slli 00000. ...... ..... 001 ..... 0010011 @sh +srli 00000. ...... ..... 101 ..... 0010011 @sh +srai 01000. ...... ..... 101 ..... 0010011 @sh add 0000000 ..... ..... 000 ..... 0110011 @r sub 0100000 ..... ..... 000 ..... 0110011 @r sll 0000000 ..... ..... 001 ..... 0110011 @r --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522305; cv=none; d=zohomail.com; s=zohoarc; b=J5VqukBIXVS+n1dzNHlnTV8jHkVpcPPbUkV7xeRDedHbigndWgvQZkp+7Mlxr3oh3EzclHUFUM50V0UIhiXNQHnsorcswDZfSYqrKDmoYLXKdBswf92CAZFwOq9R2Qi/vNwmhxAUvI7HlU9o5ohOZIKJf7M2ZplDULz5TaBZN8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522305; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=c/CcaBIobtZhsXA1lKF4+7wWbRa+XM/F56UYWiOAJSI=; b=hjHKNCQGCS2VJAwp81JDJKCHQeY2pkPfa3dvCcOxUXxwgzfDis/dh5SPWUlesfSvfoyhHBbZoUR6a+llclg1tRUV3i9cddnUNf9zueedi8icJJvWFyrFgWxgG/nI7PeYvHHdfXQbUlv//BCsTMKkX/s2wg5JG0H0015FWbfhzGg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522305142261.45881965806404; Tue, 12 Jan 2021 23:18:25 -0800 (PST) Received: from localhost ([::1]:51470 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaQC-0001Bm-1q for importer@patchew.org; Wed, 13 Jan 2021 02:18:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMA-0006oD-5p for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:14 -0500 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]:42148) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaM6-0003oW-TG for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:13 -0500 Received: by mail-pf1-x42f.google.com with SMTP id h10so668490pfo.9 for ; Tue, 12 Jan 2021 23:14:10 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=c/CcaBIobtZhsXA1lKF4+7wWbRa+XM/F56UYWiOAJSI=; b=I+1cj/NyreFMV6+jUyQ6qmyXNpq84V3zgRsFcE22HDsQyv0yIPaQ2/3b06Y6NWvy+l V7reuaEOjWkKvX3SMkliQefFXPll4MCdb2qWXfMOyKHqh83IzoZdm3pwy/FcfvyF8MrQ 4LDGZkb654FxzBK0KRkDLHr+l0BC/h8Bb6ncarhh1HgXKHxnHJsZaBUkfwXNfv8g+7xy 0WQmZWrnPJ7ACDiTNGjynMv+a5ltWFPPLPMq6LX2yUJcu18Nnhtz5GDDTPqRK+kPn0kw +/OEW2pLP11/atVaqZgPrTZEL3wYZP+wwnx8oqdFW3xyMM/cVaZDac1W70RL8IB4JQj5 omKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=c/CcaBIobtZhsXA1lKF4+7wWbRa+XM/F56UYWiOAJSI=; b=fc8En2EADMaDdZnVHpv1w97NIUsIj/D68niKrNlbIg8/dPJMrTN4IOyrf2HrpY3ByG NYiogPdokfNY4TQuCIcfyZ/046anXnq1YSeOJ6fs43OzvUmJ8WMIw/biESBNQU4SncXB 9ZaN6LlwgOICR1b8AdMgehvHqCede+/BXLSavOe0X6XpvaombxxOnjdh2noyTGl4vF3Z k0EPCmwY53E+PkhWpdiP3YA1dItLifmuJuBqGPSML4mor0lJRJ11jZ5RjuvYQdr5aVNR PjbpJs/Na0+OjCPRB0eDB8e3sd96hEgN7RO6IKj9mZMQ4vWMF+tWiNzpBbrc1dNmA80Y qJvw== X-Gm-Message-State: AOAM532yYf0M0hMUZdIc3F5KDXsk9Ww19QUDYoIv5hvqfP1iUym1hrTs ZBaZ5auXm/wJH5bChEyA+zyYNsE/OIGra73y X-Google-Smtp-Source: ABdhPJxYXORAhlT1WuPYVKckoBAkFK0YSfLwBwF/KQQqVSUklHeXRKmh0VlGQgPlRFS0afDQXsGmcw== X-Received: by 2002:aa7:854f:0:b029:1ae:7062:3a8b with SMTP id y15-20020aa7854f0000b02901ae70623a8bmr1092649pfn.64.1610522049419; Tue, 12 Jan 2021 23:14:09 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 02/16] target/riscv: rvb: count leading/trailing zeros Date: Wed, 13 Jan 2021 15:13:34 +0800 Message-Id: <20210113071350.24852-3-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32-64.decode | 4 +++ target/riscv/insn32.decode | 7 +++- target/riscv/insn_trans/trans_rvb.c.inc | 47 +++++++++++++++++++++++++ target/riscv/translate.c | 42 ++++++++++++++++++++++ 4 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 target/riscv/insn_trans/trans_rvb.c.inc diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 8157dee8b7c..f4c42720fc7 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -86,3 +86,7 @@ fmv_d_x 1111001 00000 ..... 000 ..... 1010011 @r2 hlv_wu 0110100 00001 ..... 100 ..... 1110011 @r2 hlv_d 0110110 00000 ..... 100 ..... 1110011 @r2 hsv_d 0110111 ..... ..... 100 00000 1110011 @r2_s + +# *** RV64B Standard Extension (in addition to RV32B) *** +clzw 0110000 00000 ..... 001 ..... 0011011 @r2 +ctzw 0110000 00001 ..... 001 ..... 0011011 @r2 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 3823b3ea800..8fe838cf0d0 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -40,6 +40,7 @@ &i imm rs1 rd &j imm rd &r rd rs1 rs2 +&r2 rd rs1 &s imm rs1 rs2 &u imm rd &shift shamt rs1 rd @@ -67,7 +68,7 @@ @r4_rm ..... .. ..... ..... ... ..... ....... %rs3 %rs2 %rs1 %rm %rd @r_rm ....... ..... ..... ... ..... ....... %rs2 %rs1 %rm %rd @r2_rm ....... ..... ..... ... ..... ....... %rs1 %rm %rd -@r2 ....... ..... ..... ... ..... ....... %rs1 %rd +@r2 ....... ..... ..... ... ..... ....... &r2 %rs1 %rd @r2_nfvm ... ... vm:1 ..... ..... ... ..... ....... &r2nfvm %nf %rs1 %rd @r2_vm ...... vm:1 ..... ..... ... ..... ....... &rmr %rs2 %rd @r1_vm ...... vm:1 ..... ..... ... ..... ....... %rd @@ -592,3 +593,7 @@ vcompress_vm 010111 - ..... ..... 010 ..... 1010111 = @r =20 vsetvli 0 ........... ..... 111 ..... 1010111 @r2_zimm vsetvl 1000000 ..... ..... 111 ..... 1010111 @r + +# *** RV32B Standard Extension *** +clz 011000 000000 ..... 001 ..... 0010011 @r2 +ctz 011000 000001 ..... 001 ..... 0010011 @r2 diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc new file mode 100644 index 00000000000..76788c2f353 --- /dev/null +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -0,0 +1,47 @@ +/* + * RISC-V translation routines for the RVB Standard Extension. + * + * Copyright (c) 2020 Kito Cheng, kito.cheng@sifive.com + * Copyright (c) 2020 Frank Chang, frank.chang@sifive.com + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License f= or + * more details. + * + * You should have received a copy of the GNU General Public License along= with + * this program. If not, see . + */ + +static bool trans_clz(DisasContext *ctx, arg_clz *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, gen_clz); +} + +static bool trans_ctz(DisasContext *ctx, arg_ctz *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, gen_ctz); +} + +/* RV64-only instructions */ +#ifdef TARGET_RISCV64 + +static bool trans_clzw(DisasContext *ctx, arg_clzw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, gen_clzw); +} + +static bool trans_ctzw(DisasContext *ctx, arg_ctzw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, gen_ctzw); +} + +#endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 554d52a4be3..fac111d465c 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -711,6 +711,23 @@ static bool gen_arith_div_uw(DisasContext *ctx, arg_r = *a, =20 #endif =20 +#ifdef TARGET_RISCV64 + +static void gen_ctzw(TCGv ret, TCGv arg1) +{ + tcg_gen_ori_i64(ret, arg1, MAKE_64BIT_MASK(32, 32)); + tcg_gen_ctzi_i64(ret, ret, 64); +} + +static void gen_clzw(TCGv ret, TCGv arg1) +{ + tcg_gen_ext32u_i64(ret, arg1); + tcg_gen_clzi_i64(ret, ret, 64); + tcg_gen_subi_i64(ret, ret, 32); +} + +#endif + static bool gen_arith(DisasContext *ctx, arg_r *a, void(*func)(TCGv, TCGv, TCGv)) { @@ -747,6 +764,30 @@ static bool gen_shift(DisasContext *ctx, arg_r *a, return true; } =20 +static void gen_ctz(TCGv ret, TCGv arg1) +{ + tcg_gen_ctzi_tl(ret, arg1, TARGET_LONG_BITS); +} + +static void gen_clz(TCGv ret, TCGv arg1) +{ + tcg_gen_clzi_tl(ret, arg1, TARGET_LONG_BITS); +} + +static bool gen_unary(DisasContext *ctx, arg_r2 *a, + void(*func)(TCGv, TCGv)) +{ + TCGv source =3D tcg_temp_new(); + + gen_get_gpr(source, a->rs1); + + (*func)(source, source); + + gen_set_gpr(a->rd, source); + tcg_temp_free(source); + return true; +} + /* Include insn module translation function */ #include "insn_trans/trans_rvi.c.inc" #include "insn_trans/trans_rvm.c.inc" @@ -755,6 +796,7 @@ static bool gen_shift(DisasContext *ctx, arg_r *a, #include "insn_trans/trans_rvd.c.inc" #include "insn_trans/trans_rvh.c.inc" #include "insn_trans/trans_rvv.c.inc" +#include "insn_trans/trans_rvb.c.inc" #include "insn_trans/trans_privileged.c.inc" =20 /* Include the auto-generated decoder for 16 bit insn */ --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522655; cv=none; d=zohomail.com; s=zohoarc; b=DB4l1CrY6Nn7S4WMZ4TXs1k2h4yYGGSCRc7QN7IJ0eCu8tqTcuS2SqCwvuDoWXSYF8CH4ZVyBEXAR2DnkRwLNf0++mbztxZT8MY/GWhuWpG5DO97CcTOhOlKjgG5vfvT+XfqXoyWVs8zH8H7iyNzsNYKn+f9nZbz05ORjjwgYLY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522655; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=wuNjl3EjuCZSjORBEPTCtDvkvtn3BPGc4wwp49Q4nUg=; b=X9ESxB18zdnAPkFoLIjLkW4wqxCnEG9vO3sT9MGN6jOugjjC/w4JjAc+//5WDTgHpjOU+DD+5USTBhdJPBYDxqP8jfOiJxecA0z1zDrVsoTRU6VNrILspGwTiJexUCaZ9/pnbzBydf+7eWENJZqBHSSgfE4bq9CldX0FRhgSrLE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522655742323.58138337191303; Tue, 12 Jan 2021 23:24:15 -0800 (PST) Received: from localhost ([::1]:35676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaVq-0006gL-ID for importer@patchew.org; Wed, 13 Jan 2021 02:24:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48754) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMD-0006ql-1f for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:17 -0500 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]:40713) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMB-0003q2-FB for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:16 -0500 Received: by mail-pg1-x535.google.com with SMTP id 15so920881pgx.7 for ; Tue, 12 Jan 2021 23:14:15 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=wuNjl3EjuCZSjORBEPTCtDvkvtn3BPGc4wwp49Q4nUg=; b=ZOouWkCc6bvk4rxC4gByNLlKdLZkiRwsJsy8kNsN2fEmYXkx/g2FiIQrnfZaNGERcx M9E3gLenerDrf4g1cDlMDLMSSfbqHr2XKcQDucBxPe886DBkd6xxkx2QE+yMmHrOpYUL NptCUP72pXSddrEFDiqjmjD0VvpRti57iquX9ejFSt/cDCQ1rBNmVMAE8xXJWI8c8FhW O9Ek0S+I6h8XH0qQzBjcs75u7wLbTM414xL4Hcfu7zoFlf0XbtUEhFVoYYvyF0VCsdFh DU0zSQFeqsxWcOdt/bjrU7K2F4w+nYUgP6PrKvBVKR4GRzeoVAEKJX9MwvnuLECa1t1x mUDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=wuNjl3EjuCZSjORBEPTCtDvkvtn3BPGc4wwp49Q4nUg=; b=i0jcUqiPNBDL1PNnOF2blBLWSf8HhELm2R3+0gwHaa1yLr6wnTCPt5mmnhFY+xF/Po 1RBAMZpkZsFdb5/KcuD05IwKT5IuFIvEArZdJBQWOYGqonUy0uRdL3Ubbvx4ctbcQiu7 6GF8tfQOkzwz5AjsE5QmzrjO9dUOUSHPcGA87D1dtalT1MH16zuujUBR/hjOhGV0Wn+R TVuUjkVi46j14wGKrCL4WAZ9KZ88TgMwweE4bftSBURePSaWydfH7a0Je2uDTEIR/6pU 8eNmog8wxKyozNHziKab2J7bbV4a2svYIU9/mFgdq5MJ0gwZYc2TLAN9Lu4FxVjZMyVV sA9A== X-Gm-Message-State: AOAM5330n7nrbTQFE7hsmMwu/vIlxb+ZVIwV3jFm0wp9YtL3qrrspbWI 3FMjWzQ8v/El2+qjSnI6krhdoK6FE90wNJi/ X-Google-Smtp-Source: ABdhPJyNYDgFUGxYQI9ehwAuTYdzXWEjSYMbWFMghdo4OTEKMEbIZWEkJDIEwzqkGxof0IlKoq2whw== X-Received: by 2002:aa7:947c:0:b029:1a5:dece:c07f with SMTP id t28-20020aa7947c0000b02901a5decec07fmr806047pfq.47.1610522054021; Tue, 12 Jan 2021 23:14:14 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 03/16] target/riscv: rvb: count bits set Date: Wed, 13 Jan 2021 15:13:35 +0800 Message-Id: <20210113071350.24852-4-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=frank.chang@sifive.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Frank Chang Signed-off-by: Kito Cheng Reviewed-by: Richard Henderson Signed-off-by: Frank Chang --- target/riscv/insn32-64.decode | 1 + target/riscv/insn32.decode | 1 + target/riscv/insn_trans/trans_rvb.c.inc | 12 ++++++++++++ target/riscv/translate.c | 6 ++++++ 4 files changed, 20 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index f4c42720fc7..89498a9a28a 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -90,3 +90,4 @@ hsv_d 0110111 ..... ..... 100 00000 1110011 @r2_s # *** RV64B Standard Extension (in addition to RV32B) *** clzw 0110000 00000 ..... 001 ..... 0011011 @r2 ctzw 0110000 00001 ..... 001 ..... 0011011 @r2 +cpopw 0110000 00010 ..... 001 ..... 0011011 @r2 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 8fe838cf0d0..0e321da37f4 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -597,3 +597,4 @@ vsetvl 1000000 ..... ..... 111 ..... 1010111 = @r # *** RV32B Standard Extension *** clz 011000 000000 ..... 001 ..... 0010011 @r2 ctz 011000 000001 ..... 001 ..... 0010011 @r2 +cpop 011000 000010 ..... 001 ..... 0010011 @r2 diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 76788c2f353..dbbd94e1015 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -29,6 +29,12 @@ static bool trans_ctz(DisasContext *ctx, arg_ctz *a) return gen_unary(ctx, a, gen_ctz); } =20 +static bool trans_cpop(DisasContext *ctx, arg_cpop *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, tcg_gen_ctpop_tl); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -44,4 +50,10 @@ static bool trans_ctzw(DisasContext *ctx, arg_ctzw *a) return gen_unary(ctx, a, gen_ctzw); } =20 +static bool trans_cpopw(DisasContext *ctx, arg_cpopw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, gen_cpopw); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index fac111d465c..3a14bdba194 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -726,6 +726,12 @@ static void gen_clzw(TCGv ret, TCGv arg1) tcg_gen_subi_i64(ret, ret, 32); } =20 +static void gen_cpopw(TCGv ret, TCGv arg1) +{ + tcg_gen_ext32u_tl(arg1, arg1); + tcg_gen_ctpop_tl(ret, arg1); +} + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522293; cv=none; d=zohomail.com; s=zohoarc; b=C7K7HlusVwF3Jx4TN5fNAAnmUEZ3ttCs4ZbtHz7SOaRrTUThdo0oWIGGAbZXXdUtOD18N0jL4NV/IJztigH5YV1lwXSuYN7R85esTx/PneeDj0mnAo0P4Fgap9XMIyNLtBBHLMaXiMWlAs964Hj6Zu9mu/htUPJeXhHN3hNpjOo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522293; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=VCtK6MeJWrRcE924S2JR9pxGgosMYU4dcOsKsyLoLCo=; b=QBvq5Q9A+n12ComFr1HWZJDaSL6lrCFY4xAj57udtbt5Y5iLupdQE4lIf+KEN2nXQmGHkuLYsszpPD5lCBvaQ0wVShjknlIsUWjxCKm+tb/eKEcJ+50wZaBP+GZi0ZHzV2w2+5QrJa1O2cF6eMSGYisPbiVIFqnccuBcypPK+tU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 161052229333968.91459434335752; Tue, 12 Jan 2021 23:18:13 -0800 (PST) Received: from localhost ([::1]:50838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaPy-0000oS-E3 for importer@patchew.org; Wed, 13 Jan 2021 02:18:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48838) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMJ-00073m-4x for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:23 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:39930) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMG-0003so-4Q for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:22 -0500 Received: by mail-pl1-x634.google.com with SMTP id x18so561841pln.6 for ; Tue, 12 Jan 2021 23:14:19 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=VCtK6MeJWrRcE924S2JR9pxGgosMYU4dcOsKsyLoLCo=; b=hy+tDcv8WRwYExW69P6jDROsVcpLqTtTaE9fKJaX4B8VaRfoNww942qjbDi2hWFhlt 1bLh4o+EIbvyOjLuGVHs8ySVbe6R1zI4opZomh2Tcsg1nZU3MkQSZM3dbb8BCoi4DolC fD7PWHREK1Lj36KNBO0K8iK5yylXDAnoPBtMyTJdUzhctLg572TYPY5rpJ1/xUtiweFi kKxSDFZymv75EzNHxekISz58ldsGv9FtAUe84MtXBxyZDSRyS0UBSx4T9/r9O+RlF8Rj 5Lmp0pkpf8tGWag8ZqSgz9Y7b0k1H9owDzoxtSau9oCK069O0K/q2oR7QGGmtej8RlLS 8KAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=VCtK6MeJWrRcE924S2JR9pxGgosMYU4dcOsKsyLoLCo=; b=HKjGmf58ySzW61/gxxys+DriSf9hGd7+GSVKFWSYs/mnCQPhwVrrmpNo5f2EOx/QiU UHxFQBduv+Fmr98JLADsIrzZxYeHMUh4EPLL84iJrI8ce74WBM+WcVHP7UPyOe6yFVdP 39a0LmKDuadVh6YJsyn9WhMBHVemSCHYpDCxl1uyFFsy1z4/IlJWQFAWapPbSnlOHtjV LvmyEijTFqzmerdA1rHoLKMg8DRTLqQ4UXlgeV4Upt8b9UQPYH4pW5AiOZkp+m+QBgL0 oQEtbfQR2HlrTvSsCjAOIuy5j1Ioy17Qqu6VYUAOf4vNORainXYk3qGUj4ie4GKAbOsL wK6A== X-Gm-Message-State: AOAM533Yyxbv9nSTHEeekkGUdvPzhRC95cS3KWo1/DKdqNBDdfNLXCM0 kHV1SrkqJvythNlp6qsRwrMfMo464SJNIG6a X-Google-Smtp-Source: ABdhPJylVSqMQF3JHqZxPPlNh67nKKiXAGneLBscsFmZ8bZpgeQes2yaGfIEhx5zRgzYiZmmyVokUw== X-Received: by 2002:a17:90a:4893:: with SMTP id b19mr808207pjh.193.1610522058667; Tue, 12 Jan 2021 23:14:18 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 04/16] target/riscv: rvb: logic-with-negate Date: Wed, 13 Jan 2021 15:13:36 +0800 Message-Id: <20210113071350.24852-5-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=frank.chang@sifive.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32.decode | 4 ++++ target/riscv/insn_trans/trans_rvb.c.inc | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 0e321da37f4..d0b3f109b4e 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -598,3 +598,7 @@ vsetvl 1000000 ..... ..... 111 ..... 1010111 = @r clz 011000 000000 ..... 001 ..... 0010011 @r2 ctz 011000 000001 ..... 001 ..... 0010011 @r2 cpop 011000 000010 ..... 001 ..... 0010011 @r2 + +andn 0100000 .......... 111 ..... 0110011 @r +orn 0100000 .......... 110 ..... 0110011 @r +xnor 0100000 .......... 100 ..... 0110011 @r diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index dbbd94e1015..73c4693a263 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -35,6 +35,24 @@ static bool trans_cpop(DisasContext *ctx, arg_cpop *a) return gen_unary(ctx, a, tcg_gen_ctpop_tl); } =20 +static bool trans_andn(DisasContext *ctx, arg_andn *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, tcg_gen_andc_tl); +} + +static bool trans_orn(DisasContext *ctx, arg_orn *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, tcg_gen_orc_tl); +} + +static bool trans_xnor(DisasContext *ctx, arg_xnor *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, tcg_gen_eqv_tl); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522497; cv=none; d=zohomail.com; s=zohoarc; b=k+4Y7amGxpt0p4hcTYoO4GkZAZILSlP2O423ByU/9Tt/jZqI/nEshrqyssI0ZjOFAJHw0kwapJuo4yEunoP64fRpIEEvMSYC+E/c9zjDAUGygY7XuMAJhwZ+m4pqqeFRjuF/xFqhSYQcuOJtFOUreyYiQz4a+T1eub6208hUQzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522497; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=vI4PT95qFC5cOpQqvpiMt5k7T9r484Z0BZTxnN6cUx8=; b=XjsLs03jN1h8pPtmrc/qJRt25i4f1FIlnGwJw1PrXXK3ib8+BlCC8ukgsq87Nw+QQIewcL1jaigk7huKxrKMQ5tEfYqvY/N2v6aq5Opmdbc6hCE6g47Plfdy/6Gqs7lmHd0qpWJ5izhUwAQ6EhlXv9L3hbxYjlxHBThOPr70KcI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522497804409.00108845308887; Tue, 12 Jan 2021 23:21:37 -0800 (PST) Received: from localhost ([::1]:58850 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaTI-0004SA-L8 for importer@patchew.org; Wed, 13 Jan 2021 02:21:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48870) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMP-00077F-Dq for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:29 -0500 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:42152) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMM-0003us-5S for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:29 -0500 Received: by mail-pf1-x432.google.com with SMTP id h10so668867pfo.9 for ; Tue, 12 Jan 2021 23:14:24 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vI4PT95qFC5cOpQqvpiMt5k7T9r484Z0BZTxnN6cUx8=; b=GT6HccHL+pzIfbIw+y4sHB+EnQRLBOqVtO5eA9IswjuJL1sz6xa0rXRdTpgNYZn2qS TRNw/cnyE/HgFIW0IJmYKIzPLr5SlSkTaiLam03Y5yDp7D7nnRjngIMxQLqDhK8B/WFO 8JsjgIelRg3LpgAHDTpskSgVmoMNElnlJ+KyBieP4lRR4XBkPQ9KGSsKCB8lh/yhGdud reprE+eGjtFog2nKD6mT0nmQmRvcB10SxbrkzWq8Vrb9bjzS6K/MwAmNRkT9ta1H9l9u VS2AuLQIPR61XIHS+HryumribDKrLfqI+ZEQEeyOXcVtXr0zFtYNFQT+np6eezZU3uNg Nonw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=vI4PT95qFC5cOpQqvpiMt5k7T9r484Z0BZTxnN6cUx8=; b=jnvPhJeaNICfXYpd1j7NC8iByul7baCtZ93GZe9tmoTyvArB2xAItP/bzaWW6PoT7/ I8DxrpkMiF6f91XRc7ikSbWo7qivP9l19mamPDDRAPNzf5vCEWAk9JO2FBC+ruCsCF9f zt9KUX9QZs1ZoncZblsDeUZuG2dyg4YTf9+TsdoAkMynpmTDAWa5dk6Q1rz2wV1KQN2N G/L4hWz/mXK1fammMv5c0FkzrncdPVkAXXtH/lQ+Iai3cDTRR2rDd7kvuiCrZExgXNDN ihV2D5HWdJaAcAHWjHhulcgBqPyqDjqIRFePwF9n9tRELAdS0aNyINjxRx/d7XhVnad1 lSCg== X-Gm-Message-State: AOAM533R4ZYtDbyMhA7m14J8YsfBCCvFvFaAn4N04mtfWOVcvkoViBOj f2Gwh8oa9d0T0Lr6TCingKNfhHG9KKi2bfr5 X-Google-Smtp-Source: ABdhPJx9c/yEwJejKZyjAkjqqwDSwHMV0aqR/BEW0HImFQD3ju66EuMwjB4CFrGmQkQvrWzS3NDjFg== X-Received: by 2002:a63:e24f:: with SMTP id y15mr822308pgj.366.1610522063525; Tue, 12 Jan 2021 23:14:23 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 05/16] target/riscv: rvb: pack two words into one register Date: Wed, 13 Jan 2021 15:13:37 +0800 Message-Id: <20210113071350.24852-6-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32-64.decode | 3 ++ target/riscv/insn32.decode | 3 ++ target/riscv/insn_trans/trans_rvb.c.inc | 30 +++++++++++++++++++ target/riscv/translate.c | 40 +++++++++++++++++++++++++ 4 files changed, 76 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 89498a9a28a..d28c0bcf2c1 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -91,3 +91,6 @@ hsv_d 0110111 ..... ..... 100 00000 1110011 @r2_s clzw 0110000 00000 ..... 001 ..... 0011011 @r2 ctzw 0110000 00001 ..... 001 ..... 0011011 @r2 cpopw 0110000 00010 ..... 001 ..... 0011011 @r2 + +packw 0000100 .......... 100 ..... 0111011 @r +packuw 0100100 .......... 100 ..... 0111011 @r diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index d0b3f109b4e..7f32b8c6d15 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -602,3 +602,6 @@ cpop 011000 000010 ..... 001 ..... 0010011 @r2 andn 0100000 .......... 111 ..... 0110011 @r orn 0100000 .......... 110 ..... 0110011 @r xnor 0100000 .......... 100 ..... 0110011 @r +pack 0000100 .......... 100 ..... 0110011 @r +packu 0100100 .......... 100 ..... 0110011 @r +packh 0000100 .......... 111 ..... 0110011 @r diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 73c4693a263..2d24dafac09 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -53,6 +53,24 @@ static bool trans_xnor(DisasContext *ctx, arg_xnor *a) return gen_arith(ctx, a, tcg_gen_eqv_tl); } =20 +static bool trans_pack(DisasContext *ctx, arg_pack *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, gen_pack); +} + +static bool trans_packu(DisasContext *ctx, arg_packu *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, gen_packu); +} + +static bool trans_packh(DisasContext *ctx, arg_packh *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, gen_packh); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -74,4 +92,16 @@ static bool trans_cpopw(DisasContext *ctx, arg_cpopw *a) return gen_unary(ctx, a, gen_cpopw); } =20 +static bool trans_packw(DisasContext *ctx, arg_packw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, gen_packw); +} + +static bool trans_packuw(DisasContext *ctx, arg_packuw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, gen_packuw); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 3a14bdba194..53c0c34ce16 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -711,6 +711,29 @@ static bool gen_arith_div_uw(DisasContext *ctx, arg_r = *a, =20 #endif =20 +static void gen_pack(TCGv ret, TCGv arg1, TCGv arg2) +{ + tcg_gen_deposit_tl(ret, arg1, arg2, + TARGET_LONG_BITS / 2, + TARGET_LONG_BITS / 2); +} + +static void gen_packu(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv t =3D tcg_temp_new(); + tcg_gen_shri_tl(t, arg1, TARGET_LONG_BITS / 2); + tcg_gen_deposit_tl(ret, arg2, t, 0, TARGET_LONG_BITS / 2); + tcg_temp_free(t); +} + +static void gen_packh(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv t =3D tcg_temp_new(); + tcg_gen_ext8u_tl(t, arg2); + tcg_gen_deposit_tl(ret, arg1, t, 8, TARGET_LONG_BITS - 8); + tcg_temp_free(t); +} + #ifdef TARGET_RISCV64 =20 static void gen_ctzw(TCGv ret, TCGv arg1) @@ -732,6 +755,23 @@ static void gen_cpopw(TCGv ret, TCGv arg1) tcg_gen_ctpop_tl(ret, arg1); } =20 +static void gen_packw(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv t =3D tcg_temp_new(); + tcg_gen_ext16s_i64(t, arg2); + tcg_gen_deposit_i64(ret, arg1, t, 16, 48); + tcg_temp_free(t); +} + +static void gen_packuw(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv t =3D tcg_temp_new(); + tcg_gen_shri_i64(t, arg1, 16); + tcg_gen_deposit_i64(ret, arg2, t, 0, 16); + tcg_gen_ext32s_i64(ret, ret); + tcg_temp_free(t); +} + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522930; cv=none; d=zohomail.com; s=zohoarc; b=O8Zev7SXy4DxSOIDWhE0kp94Cuq/4pwPptLKkadc9vKLEGbaZkAUxKk64vWQGV2gqEV7WM8CCCNH8DqiHehipInFlR1+JpuCG2BC3hL6LPcAN7HIktr3qlNGPE6RrlzfTntyr9jfOzEr6If0kGxE/DfQ+/ws7LMfjc9COMaKFiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522930; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=RraFfTNt+SH5tIi672hGt9gZVL+nLzbf3TvbyQmG2ss=; b=H0DiPGhzvJ3Ke6fyEcb5ON+HOncgIWKAJTixGL2Fh81eO/Hfkp9ZyssqbhjiaTHqnk6b9C2bp+ccrlqfB8NBjx81VXBHP8fzop3p/T2p1H4RH9mLGq7wqZ8baH0lU3U+ceUs5+SRiXm6JZGu9vkjJpKUQVQuwABbfTSFjfnoAXo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522930554840.4718199849347; Tue, 12 Jan 2021 23:28:50 -0800 (PST) Received: from localhost ([::1]:42860 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaaH-0001T4-6Q for importer@patchew.org; Wed, 13 Jan 2021 02:28:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48920) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMW-0007Be-8D for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:36 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:46982) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMQ-0003wQ-2Y for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:35 -0500 Received: by mail-pl1-x633.google.com with SMTP id v3so546810plz.13 for ; Tue, 12 Jan 2021 23:14:29 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RraFfTNt+SH5tIi672hGt9gZVL+nLzbf3TvbyQmG2ss=; b=YcfbKCTAs1Fv1fjn6L2+hxziMDGCTukfWNQJt9c4dxlfmLsVUySVRgLTxtCcM7P3RD 4XTFKBaJgxtyomRWeHzBdOicMOaRv8uabtkfY8MbQxmSwZXuEXFWZKorURCe5A9ov2ws GYS1SlYfwRxdQ5GWQuFc9azCR7VNRbJ/igx6zLc+xJOG+eCi+n8wGWOO0GJSHpdLwqj3 goOpCpEpXKblOuDupYnw6yASpOTi4TLW7taeDZTJpHlcV1HtWejXFNfeBaVxOuw0ff2h /Y73swlgIP+5RcvFRNz68hwck89JglQ+pUzaunl8BVgooWHSbeTqn76rk8dRvUQmP57r cDDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=RraFfTNt+SH5tIi672hGt9gZVL+nLzbf3TvbyQmG2ss=; b=MwbLhgsE103tm3y40AKN6FxECMeBFypiPOG2RaNO6ZJFwxh3TnvOCJ7Kx+2Byefsa0 FqbjtnfCASyQcaOasrFeRmGeOlEZ24exJFdHbt/rPu17wPEXVTPBgvbpL7VECJlajB7k rVttue7WqN32qiwUTblmhdL422qKwyAqy/xn9vK2CuoJlScWuVK7G7EPJPRmwyM8Udqv I5pdbIgIi3lapcuk8Y4iDgg68m0WKGkfpa0rlpUqnPm71hNgKsN4FXFAQyb3ZJqgESB3 lvm5IsLUAcsyfYif44hKbV60REr1boyjmLzMrkhWU0IZ9SV28q6Il9gXvBFRlR95bz4Q 1+9A== X-Gm-Message-State: AOAM531+amJfWr5wjw/1NJrMT0ZYCzE588xVl/25hYPblPcTnz0Uy+87 +/k2O7aSVhDz6DVnsKAWk7ieVM+LOs4ysc0x X-Google-Smtp-Source: ABdhPJzpgJtCPtUCCKlBCJsFWgO8WCUeyUFnns8Syj/j/mn1xL/7UiO0vN45JEc8fZEhm24u+QWaBw== X-Received: by 2002:a17:90b:b0d:: with SMTP id bf13mr829211pjb.194.1610522068306; Tue, 12 Jan 2021 23:14:28 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 06/16] target/riscv: rvb: min/max instructions Date: Wed, 13 Jan 2021 15:13:38 +0800 Message-Id: <20210113071350.24852-7-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=frank.chang@sifive.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Reviewed-by: Richard Henderson Signed-off-by: Frank Chang --- target/riscv/insn32.decode | 4 ++++ target/riscv/insn_trans/trans_rvb.c.inc | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 7f32b8c6d15..d64326fd864 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -605,3 +605,7 @@ xnor 0100000 .......... 100 ..... 0110011 @r pack 0000100 .......... 100 ..... 0110011 @r packu 0100100 .......... 100 ..... 0110011 @r packh 0000100 .......... 111 ..... 0110011 @r +min 0000101 .......... 100 ..... 0110011 @r +minu 0000101 .......... 101 ..... 0110011 @r +max 0000101 .......... 110 ..... 0110011 @r +maxu 0000101 .......... 111 ..... 0110011 @r diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 2d24dafac09..2aa4515fe31 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -71,6 +71,30 @@ static bool trans_packh(DisasContext *ctx, arg_packh *a) return gen_arith(ctx, a, gen_packh); } =20 +static bool trans_min(DisasContext *ctx, arg_min *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, tcg_gen_smin_tl); +} + +static bool trans_max(DisasContext *ctx, arg_max *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, tcg_gen_smax_tl); +} + +static bool trans_minu(DisasContext *ctx, arg_minu *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, tcg_gen_umin_tl); +} + +static bool trans_maxu(DisasContext *ctx, arg_maxu *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, tcg_gen_umax_tl); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610523102; cv=none; d=zohomail.com; s=zohoarc; b=AySN2F5BgIXUDwxuBlIxqv1xPeuACku9KssMzcj/ZXUqTsDalGns9VJbfjZzBwiJ6kY05D8IjguBV5OGUnTKoVAfkJN3JECRY6+HpZ26giG1UFlLPX5cvq96UPVf3P5uEniXTVHFAL2SUG/B2L5s/Oqs6dHLPR2LrL/5AUWvrVk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610523102; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=0zrnOavVe6XnQO96zzyHm13OUa7JpL0pUTrhRmvRqro=; b=XdoPM6rWT86W9yvS9xkgTXUSetTpevUfAvkjMfjFHclUGDbU3VBvgbMLxQ+v0R/Arfbdk/ui/npPZtzsrX20k8ljnk9U7kyhLtLFeMkJ5GVr4fgQiCC0vlyH+D/ek/DpsoCB0C7KqLz73nx8p+BdziLZizPEGEHbpQEf4lC/tKM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610523102178703.0514964518197; Tue, 12 Jan 2021 23:31:42 -0800 (PST) Received: from localhost ([::1]:48360 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzad3-0003ye-0q for importer@patchew.org; Wed, 13 Jan 2021 02:31:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48928) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMX-0007E0-QT for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:38 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:52216) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMU-0003xu-L6 for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:36 -0500 Received: by mail-pj1-x102a.google.com with SMTP id y12so564178pji.1 for ; Tue, 12 Jan 2021 23:14:34 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0zrnOavVe6XnQO96zzyHm13OUa7JpL0pUTrhRmvRqro=; b=LVR+9xYUeJP3+5goOWtTo4wgWX8Q+1tyB1Yqi5Ear6C45DbP13FLQ38lI7oLDEIA53 MxhlBslwopbaiImWSC7yWbYxpMsvN+VIiI5x9RdALJKSFM/XxmkFuBJB7Uv1BqRGYLV8 d4QqzussJsY9wmIxzxPHLec2h5WJ1eMWyEejt0nJMK/mmImtmCooOHYpHx8fXhKTFrQq iigrSW+b7JcGCTXNjkVwczEaBpSQ7gJ3HdXbd04XYOBE0QB4AF64D+Km5OHkctuCA+ig z4sf8AIHlb1zDrauJjA5fM/Gq0H44+33FTzrvEjfsQWHcYkvztcZUFCYjGAVQ/TwWYJ9 uvRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=0zrnOavVe6XnQO96zzyHm13OUa7JpL0pUTrhRmvRqro=; b=YmfUU836PEOWsxqbb/01Bdc9B4Q31lAT3RRzQ/6X7pY+fOMFkPPXlRZIIXi+J3b7yN axJC3/BW0WXsyd71xb9teI7aeHAamr+5TXPP6Y9z5TA2ZodIoPAqVxx8wqVFYIFrz6cT gHeHn2YxMuaVDYUFoNNpX2chExQKOvq9r5EEu+VwxLwtg7R3E5i4OrV4de8yCCDyYPp5 LNqWqJm8Yv2yKLnS2DSxhdR1/ZeWiGUjrorDOeTdlfZLTsPgRM11jN9uT3VJOGjsQM/W 2H1Rj92GnXVujHj++rdyiTFjqvXWKigKuOB6V/zmR5W8v4CPeAYERDPkXHcg49OutgPS ZjgA== X-Gm-Message-State: AOAM531wTDJXYY8e8kyYAH1wGLn+52n4bQxfmeeDTnkFKzDZxK+VXL7t WabKs1dl3XxtocX1+/xvwQ+5M8EZSJrlDvE3 X-Google-Smtp-Source: ABdhPJySBmtuVaVT2nGjf2DSQgQTF87I3q1vSVyGJDlHq7Z7Os3bjnh+Sa/Zp3c4m/usxx62Fue7wQ== X-Received: by 2002:a17:902:c392:b029:dc:3e1d:2316 with SMTP id g18-20020a170902c392b02900dc3e1d2316mr810255plg.50.1610522073199; Tue, 12 Jan 2021 23:14:33 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 07/16] target/riscv: rvb: sign-extend instructions Date: Wed, 13 Jan 2021 15:13:39 +0800 Message-Id: <20210113071350.24852-8-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Reviewed-by: Richard Henderson Signed-off-by: Frank Chang --- target/riscv/insn32.decode | 2 ++ target/riscv/insn_trans/trans_rvb.c.inc | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index d64326fd864..938c23088eb 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -598,6 +598,8 @@ vsetvl 1000000 ..... ..... 111 ..... 1010111 = @r clz 011000 000000 ..... 001 ..... 0010011 @r2 ctz 011000 000001 ..... 001 ..... 0010011 @r2 cpop 011000 000010 ..... 001 ..... 0010011 @r2 +sext_b 011000 000100 ..... 001 ..... 0010011 @r2 +sext_h 011000 000101 ..... 001 ..... 0010011 @r2 =20 andn 0100000 .......... 111 ..... 0110011 @r orn 0100000 .......... 110 ..... 0110011 @r diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 2aa4515fe31..1496996a660 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -95,6 +95,18 @@ static bool trans_maxu(DisasContext *ctx, arg_maxu *a) return gen_arith(ctx, a, tcg_gen_umax_tl); } =20 +static bool trans_sext_b(DisasContext *ctx, arg_sext_b *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, tcg_gen_ext8s_tl); +} + +static bool trans_sext_h(DisasContext *ctx, arg_sext_h *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, tcg_gen_ext16s_tl); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610523263; cv=none; d=zohomail.com; s=zohoarc; b=lZzydbUSt9LNcVJx6P9iZkmudCmE3l4nBk8C6XsKV9xFnhi187/AqgCllmF9CAyB4+NJQXfDGyU0q/W1r+KAjaUi9L4dnO5gB2xbGeelArLsBMNbjn7VG9dv0ZTqaW4z0uvGdzUCGGJ6HY1HBqWWLFBPqk4keLYdtEltSUeeFc4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610523263; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=aEip5Hk2/fjLfGZXwReicQlq3aDOOOt574rHluS0oAk=; b=i5FT9zJclnc8c7jhPM2e1Xbqp6tY6R1OqGsUsDqAmRFdRJipGgXtl8dzw5a2hngaVf0F9lE+kzj9kexKgQrd4gAaj5iZvGytQrx6tlYxX98rBch2bOVg58SixRsv79rLUiW+kUtYnD48vmsEv14b8QT5r2kd6MWQHtRnh44tyGE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610523263904944.4842372491496; Tue, 12 Jan 2021 23:34:23 -0800 (PST) Received: from localhost ([::1]:52690 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzafe-0005qx-Js for importer@patchew.org; Wed, 13 Jan 2021 02:34:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48976) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMb-0007Nt-L3 for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:41 -0500 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]:50943) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMZ-00040A-Dz for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:41 -0500 Received: by mail-pj1-x102d.google.com with SMTP id md11so565901pjb.0 for ; Tue, 12 Jan 2021 23:14:39 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=aEip5Hk2/fjLfGZXwReicQlq3aDOOOt574rHluS0oAk=; b=ELmy/UVulmvm7jsn0Ai5jpmTQ4UY/zASOWbG1G46BJwf2bhDHpVaSklRhuxZunO3CV D/Z5nXlpt6iE3jBami3JeQoYwHTasOEPALhdMYp+2+KNRQq1v+6nLUMD8Y8qD1wEfFHU VXE3RZXkezzG90ZEFlIdoWr36x9PyxpkumLAFZ7pIrdo0s4tOmM2nq0282q66p5fLQtZ 1RI0EwXypOUS/OmyUCxCcrY2+VIJOR8QpsNAded457OGCTgPdLhQph4JDsF2hMtNN/W1 giXFPgxVRRiY9obNMy0zIWx4ZA6R5GMu0Jd2imSOwK8wnpGVCig7ctU3hhTjZbHsOQDh vYtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=aEip5Hk2/fjLfGZXwReicQlq3aDOOOt574rHluS0oAk=; b=Py0MqNweo0DMT9G9V+TltC9hhKWyzzdt+rqmXu0g8FmfMVQKg6GnajJW5jZ+fEEpJc qtXk7lJ6kkFAFFJqyLkaE195imnh1LM/wpyRqW9eXBNGtzE9fqpVv7XkViCY9/33g4gg C/sJfHAx6fYCo0o0GMb3vaSh3upzM8UQvZCPi2eJpIi1R9gGllbDE/YeO0DgAbcT5lKf mlmOSKJRE3eMBQxGcNhiD66snCWopiNgJAQrTXai6hmso/5z1E7LqTojecckFhzDqkd8 pMKG1hcZkhQETm5uPKozP9X10bga2du0AgW63sbcjW4oNFujWC+W8OF1zNJgJ9bF/FS0 RQ1Q== X-Gm-Message-State: AOAM5333kR1x0/y9a0h2idPvT2X8udB4TDhUhSK5iYJW6I/yKafInN49 mt/k2au/pHJkdkiJ3/FQaJYate+0MvbDa0w2 X-Google-Smtp-Source: ABdhPJxO5/7RNxR1qK0Y7EJuh+odqt1AZIFRlyu4lOmFaat8B6Gq9yDYgw0/qFqzOXHQPiuoU4rZGw== X-Received: by 2002:a17:90a:cc0a:: with SMTP id b10mr808814pju.59.1610522078049; Tue, 12 Jan 2021 23:14:38 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 08/16] target/riscv: add gen_shifti() and gen_shiftiw() helper functions Date: Wed, 13 Jan 2021 15:13:40 +0800 Message-Id: <20210113071350.24852-9-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Alistair Francis , Paolo Bonzini , Palmer Dabbelt Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Frank Chang Add gen_shifti() and gen_shiftiw() helper functions to reuse the same interfaces for immediate shift instructions. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn_trans/trans_rvi.c.inc | 54 ++----------------------- target/riscv/translate.c | 43 ++++++++++++++++++++ 2 files changed, 47 insertions(+), 50 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_tr= ans/trans_rvi.c.inc index d04ca0394cf..7b894201840 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -261,54 +261,17 @@ static bool trans_andi(DisasContext *ctx, arg_andi *a) } static bool trans_slli(DisasContext *ctx, arg_slli *a) { - if (a->shamt >=3D TARGET_LONG_BITS) { - return false; - } - - if (a->rd !=3D 0) { - TCGv t =3D tcg_temp_new(); - gen_get_gpr(t, a->rs1); - - tcg_gen_shli_tl(t, t, a->shamt); - - gen_set_gpr(a->rd, t); - tcg_temp_free(t); - } /* NOP otherwise */ - return true; + return gen_shifti(ctx, a, tcg_gen_shl_tl); } =20 static bool trans_srli(DisasContext *ctx, arg_srli *a) { - if (a->shamt >=3D TARGET_LONG_BITS) { - return false; - } - - if (a->rd !=3D 0) { - TCGv t =3D tcg_temp_new(); - gen_get_gpr(t, a->rs1); - - tcg_gen_shri_tl(t, t, a->shamt); - gen_set_gpr(a->rd, t); - tcg_temp_free(t); - } /* NOP otherwise */ - return true; + return gen_shifti(ctx, a, tcg_gen_shr_tl); } =20 static bool trans_srai(DisasContext *ctx, arg_srai *a) { - if (a->shamt >=3D TARGET_LONG_BITS) { - return false; - } - - if (a->rd !=3D 0) { - TCGv t =3D tcg_temp_new(); - gen_get_gpr(t, a->rs1); - - tcg_gen_sari_tl(t, t, a->shamt); - gen_set_gpr(a->rd, t); - tcg_temp_free(t); - } /* NOP otherwise */ - return true; + return gen_shifti(ctx, a, tcg_gen_sar_tl); } =20 static bool trans_add(DisasContext *ctx, arg_add *a) @@ -369,16 +332,7 @@ static bool trans_addiw(DisasContext *ctx, arg_addiw *= a) =20 static bool trans_slliw(DisasContext *ctx, arg_slliw *a) { - TCGv source1; - source1 =3D tcg_temp_new(); - gen_get_gpr(source1, a->rs1); - - tcg_gen_shli_tl(source1, source1, a->shamt); - tcg_gen_ext32s_tl(source1, source1); - gen_set_gpr(a->rd, source1); - - tcg_temp_free(source1); - return true; + return gen_shiftiw(ctx, a, tcg_gen_shl_tl); } =20 static bool trans_srliw(DisasContext *ctx, arg_srliw *a) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 53c0c34ce16..8459b6bcf54 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -810,6 +810,49 @@ static bool gen_shift(DisasContext *ctx, arg_r *a, return true; } =20 +static bool gen_shifti(DisasContext *ctx, arg_shift *a, + void(*func)(TCGv, TCGv, TCGv)) +{ + if (a->shamt >=3D TARGET_LONG_BITS) { + return false; + } + + TCGv source1 =3D tcg_temp_new(); + TCGv source2 =3D tcg_temp_new(); + + gen_get_gpr(source1, a->rs1); + + tcg_gen_movi_tl(source2, a->shamt); + (*func)(source1, source1, source2); + + gen_set_gpr(a->rd, source1); + tcg_temp_free(source1); + tcg_temp_free(source2); + return true; +} + +#ifdef TARGET_RISCV64 + +static bool gen_shiftiw(DisasContext *ctx, arg_shift *a, + void(*func)(TCGv, TCGv, TCGv)) +{ + TCGv source1 =3D tcg_temp_new(); + TCGv source2 =3D tcg_temp_new(); + + gen_get_gpr(source1, a->rs1); + tcg_gen_movi_tl(source2, a->shamt); + + (*func)(source1, source1, source2); + tcg_gen_ext32s_tl(source1, source1); + + gen_set_gpr(a->rd, source1); + tcg_temp_free(source1); + tcg_temp_free(source2); + return true; +} + +#endif + static void gen_ctz(TCGv ret, TCGv arg1) { tcg_gen_ctzi_tl(ret, arg1, TARGET_LONG_BITS); --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522511; cv=none; d=zohomail.com; s=zohoarc; b=ess/6nOKbdN77cFxgRA8tkx87nhyS5oNedRtCuxf56IkkSufxwd71IhGWzau9vqAxUdrvgjl2lONMxdwxvXKZHc04XgY2vtsFFIVfaoe+kucF5xlNDlhB+P7IbvlddcTTQy16zlwa+xk54udD0SrdBJoLmVs9Ii/cl+LajUbH44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522511; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=oLSCL88PCzUDP2zzsS0uXAGeDy12JbJe6cswNoSW5Fg=; b=ZWOlqRTdyG8NoYLnL2fU7/3HJuQwSOkxpA+GSwzeqogNriYOfOosP+qLqpnTNiSAKuwNShCCgaHJPP0iBsn97C7ONEM5Gg2wD94tkx3oY09VaWM4phxxkUCFDDtOXlGU38yl0P02jhKscyaPuriQ5Z/7sTG/wTSxXF7J4PaX0lk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522511954431.57357673665445; Tue, 12 Jan 2021 23:21:51 -0800 (PST) Received: from localhost ([::1]:59358 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaTV-0004f3-Aw for importer@patchew.org; Wed, 13 Jan 2021 02:21:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMq-0007Xh-PV for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:56 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:35735) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMn-00046n-OA for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:14:56 -0500 Received: by mail-pj1-x1035.google.com with SMTP id b5so602177pjl.0 for ; Tue, 12 Jan 2021 23:14:53 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=oLSCL88PCzUDP2zzsS0uXAGeDy12JbJe6cswNoSW5Fg=; b=K444t6tEx8z//Rz7Ni6Mmd9+gMm6xP/F303XO4IYiW/Sv1sl8JiW000PDqegvxK+r4 Jbd2xy/UFAEXqqhtnWfEugjr3FaL9xFH4D01ilYllt0/LC2A4rVjIqXTslsd5luo3BcG rAcG6mVmDAOWWUXqn6lcEnxKrwhExCJEHg3JSqjnYu4uRIddyrxFCqEqFYIKNN0MwoJ7 UsGvc8N9hA7SB2wL7+AgwjO1UPq+iLagmTDCI9jRh5SIbGnkg1uaShQuhTSGy0to3qfz bcPPuJ7aSi6G3uNPn9zvRiFdcO45yNU+8ywGKT9hwDp2tm7EjIbUrdR8AiP5itfxs4SA evsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=oLSCL88PCzUDP2zzsS0uXAGeDy12JbJe6cswNoSW5Fg=; b=T6hFXmZqar7/py7ctVABotoraNXPg4f14VVMtuzKYChGD27ZmFoqNi75uqHMpPjbL5 61/0hPXnvFGDGj28GxOs8XuuXDJ3yRVsD91YF7PrDMXKvoxmJDiBj3Ww3juXfk2oJWIV Ns6Bwn1d9NES9+KE5G1bAFOxkpsL42od2eF8nb6clgCp3iyg/3P34vLHkw7SVfXaN9GS qT19U7n9YcrUUjV38X9UY1xGb4lOcJsp9yNtXXpoZh8eZVma1yB5Osf6U5c2qduTxQTw kUjDgrV6QIHoC0zJGBUlp/dRJacaEwDJJcbwbP2Jy9Q1AMD5dKRI+qo10JMuZ/2ScwJc VKtg== X-Gm-Message-State: AOAM5321K27jM7mf/gNOqlaMkaByHs1nDq0MOR2ZWomWhUxu1b53FD4O sjUKoXkJ2WxWTyg0dAnDd6+8j/TZsXpepb9N X-Google-Smtp-Source: ABdhPJyO7+fMV/s26P0HO5mWDglHJBsv4GSWFBmZy0WSEISuwmBcTlDr7JsMUUOLEhhQbiGEMMPRfg== X-Received: by 2002:a17:90a:eb13:: with SMTP id j19mr766678pjz.219.1610522092420; Tue, 12 Jan 2021 23:14:52 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 09/16] target/riscv: rvb: single-bit instructions Date: Wed, 13 Jan 2021 15:13:41 +0800 Message-Id: <20210113071350.24852-10-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32-64.decode | 8 +++ target/riscv/insn32.decode | 9 +++ target/riscv/insn_trans/trans_rvb.c.inc | 90 +++++++++++++++++++++++++ target/riscv/translate.c | 61 +++++++++++++++++ 4 files changed, 168 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index d28c0bcf2c1..f6c63c31b03 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -94,3 +94,11 @@ cpopw 0110000 00010 ..... 001 ..... 0011011 @r2 =20 packw 0000100 .......... 100 ..... 0111011 @r packuw 0100100 .......... 100 ..... 0111011 @r +bsetw 0010100 .......... 001 ..... 0111011 @r +bclrw 0100100 .......... 001 ..... 0111011 @r +binvw 0110100 .......... 001 ..... 0111011 @r +bextw 0100100 .......... 101 ..... 0111011 @r + +bsetiw 0010100 .......... 001 ..... 0011011 @sh5 +bclriw 0100100 .......... 001 ..... 0011011 @sh5 +binviw 0110100 .......... 001 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 938c23088eb..64d2b057764 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -611,3 +611,12 @@ min 0000101 .......... 100 ..... 0110011 @r minu 0000101 .......... 101 ..... 0110011 @r max 0000101 .......... 110 ..... 0110011 @r maxu 0000101 .......... 111 ..... 0110011 @r +bset 0010100 .......... 001 ..... 0110011 @r +bclr 0100100 .......... 001 ..... 0110011 @r +binv 0110100 .......... 001 ..... 0110011 @r +bext 0100100 .......... 101 ..... 0110011 @r + +bseti 00101. ........... 001 ..... 0010011 @sh +bclri 01001. ........... 001 ..... 0010011 @sh +binvi 01101. ........... 001 ..... 0010011 @sh +bexti 01001. ........... 101 ..... 0010011 @sh diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 1496996a660..0c41f135dc6 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -107,6 +107,54 @@ static bool trans_sext_h(DisasContext *ctx, arg_sext_h= *a) return gen_unary(ctx, a, tcg_gen_ext16s_tl); } =20 +static bool trans_bset(DisasContext *ctx, arg_bset *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_bset); +} + +static bool trans_bseti(DisasContext *ctx, arg_bseti *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, gen_bset); +} + +static bool trans_bclr(DisasContext *ctx, arg_bclr *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_bclr); +} + +static bool trans_bclri(DisasContext *ctx, arg_bclri *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, gen_bclr); +} + +static bool trans_binv(DisasContext *ctx, arg_binv *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_binv); +} + +static bool trans_binvi(DisasContext *ctx, arg_binvi *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, gen_binv); +} + +static bool trans_bext(DisasContext *ctx, arg_bext *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_bext); +} + +static bool trans_bexti(DisasContext *ctx, arg_bexti *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, gen_bext); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -140,4 +188,46 @@ static bool trans_packuw(DisasContext *ctx, arg_packuw= *a) return gen_arith(ctx, a, gen_packuw); } =20 +static bool trans_bsetw(DisasContext *ctx, arg_bsetw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_bset); +} + +static bool trans_bsetiw(DisasContext *ctx, arg_bsetiw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_bset); +} + +static bool trans_bclrw(DisasContext *ctx, arg_bclrw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_bclr); +} + +static bool trans_bclriw(DisasContext *ctx, arg_bclriw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_bclr); +} + +static bool trans_binvw(DisasContext *ctx, arg_binvw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_binv); +} + +static bool trans_binviw(DisasContext *ctx, arg_binviw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_binv); +} + +static bool trans_bextw(DisasContext *ctx, arg_bextw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_bext); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 8459b6bcf54..7ea434ffa8d 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -734,6 +734,48 @@ static void gen_packh(TCGv ret, TCGv arg1, TCGv arg2) tcg_temp_free(t); } =20 +static void gen_sbop_mask(TCGv ret, TCGv shamt) +{ + tcg_gen_movi_tl(ret, 1); + tcg_gen_shl_tl(ret, ret, shamt); +} + +static void gen_bset(TCGv ret, TCGv arg1, TCGv shamt) +{ + TCGv t =3D tcg_temp_new(); + + gen_sbop_mask(t, shamt); + tcg_gen_or_tl(ret, arg1, t); + + tcg_temp_free(t); +} + +static void gen_bclr(TCGv ret, TCGv arg1, TCGv shamt) +{ + TCGv t =3D tcg_temp_new(); + + gen_sbop_mask(t, shamt); + tcg_gen_andc_tl(ret, arg1, t); + + tcg_temp_free(t); +} + +static void gen_binv(TCGv ret, TCGv arg1, TCGv shamt) +{ + TCGv t =3D tcg_temp_new(); + + gen_sbop_mask(t, shamt); + tcg_gen_xor_tl(ret, arg1, t); + + tcg_temp_free(t); +} + +static void gen_bext(TCGv ret, TCGv arg1, TCGv shamt) +{ + tcg_gen_shr_tl(ret, arg1, shamt); + tcg_gen_andi_tl(ret, ret, 1); +} + #ifdef TARGET_RISCV64 =20 static void gen_ctzw(TCGv ret, TCGv arg1) @@ -833,6 +875,25 @@ static bool gen_shifti(DisasContext *ctx, arg_shift *a, =20 #ifdef TARGET_RISCV64 =20 +static bool gen_shiftw(DisasContext *ctx, arg_r *a, + void(*func)(TCGv, TCGv, TCGv)) +{ + TCGv source1 =3D tcg_temp_new(); + TCGv source2 =3D tcg_temp_new(); + + gen_get_gpr(source1, a->rs1); + gen_get_gpr(source2, a->rs2); + + tcg_gen_andi_tl(source2, source2, 31); + (*func)(source1, source1, source2); + tcg_gen_ext32s_tl(source1, source1); + + gen_set_gpr(a->rd, source1); + tcg_temp_free(source1); + tcg_temp_free(source2); + return true; +} + static bool gen_shiftiw(DisasContext *ctx, arg_shift *a, void(*func)(TCGv, TCGv, TCGv)) { --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610523575; cv=none; d=zohomail.com; s=zohoarc; b=KE+w4k6L6O8RArLBTuhnEYqnzFNGihk1tHRgX9ZuKXb0yAaQQyVmZ4KKG5Kcvf1ljis0GnR5oBd2SB16LgZgHG3G5EU8Z/PzaYhpp3EjhSb3VL8e9q9iQXeBmywpqGCgiRKgp6f/B5yIUVroYXErolKO7YdELj5VasYd9L3lZqs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610523575; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=+veWa2+gUSeuM0qwhIL58trHSNg04F73bO4068dp1Ko=; b=iHuwlP9r/AJ1kvEuqP1sS30E31cQCMkn1flFbQonOrz7hpohfBvZmN3cqwHnIa/61K3W1cAinocYpamG0iILyUS3RuMuZMmrWcQ33981tptQscLmv3Q+k0EaSXF/9jNb6H+flyU4emWkkJD6jBABdvH1qQo55so7kkglNuh/a9g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610523575743632.991529981058; Tue, 12 Jan 2021 23:39:35 -0800 (PST) Received: from localhost ([::1]:33062 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzakg-0001LN-Mo for importer@patchew.org; Wed, 13 Jan 2021 02:39:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49104) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaMy-0007ai-AB for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:07 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:53063) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMs-00048t-F8 for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:01 -0500 Received: by mail-pj1-x102a.google.com with SMTP id v1so563122pjr.2 for ; Tue, 12 Jan 2021 23:14:58 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:14:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+veWa2+gUSeuM0qwhIL58trHSNg04F73bO4068dp1Ko=; b=TQYO38eaDLFi8pfEED168at21pGJ/JjdYjsJDo69yHdj0h5LgJ54Jth15oEFJziDUX gqc5Zd1IqB9Hdo7d5YX+/5w8tqz2RqN2taWZX/M8AhQRPUoYLWIpPmRQt36WXeCbT1f1 l/P3DRHHJL7Tvs95ZnoDL7264TI/Q48b7gEN5SE9mWlhlOmLS1FdPr1biKtxAGFqmx9K rZkOEN6oCERASVf17ROW3xDqfeW/eIHi/UTIzsqJIV5+MaMDGMWD6mSN+2dRrPYyt2yn S+W3ON3EL4O/V3ZJQk4n0hQgR+nvq0XdDYvj5pUbA2GsCvGn/SoifT6qdTDHApK9SVfv VkBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+veWa2+gUSeuM0qwhIL58trHSNg04F73bO4068dp1Ko=; b=Fh/bef5CDDhJR3mP8u8Fez4EG3tQz98ISehpmwtBKly0ZIZqueDnujxqOjxin5531B bQCYg47eY72B7E85MjoBIIeFrklPyn5+/9zAYffgAyAHG3FQCL+C5+8B06O952roh690 uJ8FS2iVved4hOIUIGQs98G/Eoia87L8op/n5AU6FCOkFtMB1qmVujY1vVhw5aLl3c4v nL4yz+PqZJLPJndtUguE9LK69ptI3U9pnrIKZ+fk2AaBhDW9M1mC1iSXHIGTfY5Sp3Re RefiNJz/pPDcYVPCIsuY8GmT5z4CsBGl1E2XQUZbY0zucwLXW5N6Cr6WB/yKPxd06seU Ijbw== X-Gm-Message-State: AOAM532uIwQYHYFkvgl/5t7MkCNWeQ4VmhX/upGMAG/1+HDsNdRjEp7L Wq8K5h169BBiKil7vq0RW3vous4OIaU4RcL0 X-Google-Smtp-Source: ABdhPJzjsZMUFeESv1H8Z/lavUw8hwUpRp8SZRMOH2dgrL1xzfpLB6EIRf/f+KHEIL7+EweFz39WBQ== X-Received: by 2002:a17:90a:8801:: with SMTP id s1mr828960pjn.69.1610522097173; Tue, 12 Jan 2021 23:14:57 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 10/16] target/riscv: rvb: shift ones Date: Wed, 13 Jan 2021 15:13:42 +0800 Message-Id: <20210113071350.24852-11-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32-64.decode | 4 +++ target/riscv/insn32.decode | 4 +++ target/riscv/insn_trans/trans_rvb.c.inc | 48 +++++++++++++++++++++++++ target/riscv/translate.c | 14 ++++++++ 4 files changed, 70 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index f6c63c31b03..8c3ed33077e 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -98,7 +98,11 @@ bsetw 0010100 .......... 001 ..... 0111011 @r bclrw 0100100 .......... 001 ..... 0111011 @r binvw 0110100 .......... 001 ..... 0111011 @r bextw 0100100 .......... 101 ..... 0111011 @r +slow 0010000 .......... 001 ..... 0111011 @r +srow 0010000 .......... 101 ..... 0111011 @r =20 bsetiw 0010100 .......... 001 ..... 0011011 @sh5 bclriw 0100100 .......... 001 ..... 0011011 @sh5 binviw 0110100 .......... 001 ..... 0011011 @sh5 +sloiw 0010000 .......... 001 ..... 0011011 @sh5 +sroiw 0010000 .......... 101 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 64d2b057764..0ea92312372 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -615,8 +615,12 @@ bset 0010100 .......... 001 ..... 0110011 @r bclr 0100100 .......... 001 ..... 0110011 @r binv 0110100 .......... 001 ..... 0110011 @r bext 0100100 .......... 101 ..... 0110011 @r +slo 0010000 .......... 001 ..... 0110011 @r +sro 0010000 .......... 101 ..... 0110011 @r =20 bseti 00101. ........... 001 ..... 0010011 @sh bclri 01001. ........... 001 ..... 0010011 @sh binvi 01101. ........... 001 ..... 0010011 @sh bexti 01001. ........... 101 ..... 0010011 @sh +sloi 00100. ........... 001 ..... 0010011 @sh +sroi 00100. ........... 101 ..... 0010011 @sh diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 0c41f135dc6..44f9f639240 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -155,6 +155,30 @@ static bool trans_bexti(DisasContext *ctx, arg_bexti *= a) return gen_shifti(ctx, a, gen_bext); } =20 +static bool trans_slo(DisasContext *ctx, arg_slo *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_slo); +} + +static bool trans_sloi(DisasContext *ctx, arg_sloi *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, gen_slo); +} + +static bool trans_sro(DisasContext *ctx, arg_sro *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_sro); +} + +static bool trans_sroi(DisasContext *ctx, arg_sroi *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, gen_sro); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -230,4 +254,28 @@ static bool trans_bextw(DisasContext *ctx, arg_bextw *= a) return gen_shiftw(ctx, a, gen_bext); } =20 +static bool trans_slow(DisasContext *ctx, arg_slow *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_slo); +} + +static bool trans_sloiw(DisasContext *ctx, arg_sloiw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_slo); +} + +static bool trans_srow(DisasContext *ctx, arg_srow *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_sro); +} + +static bool trans_sroiw(DisasContext *ctx, arg_sroiw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_sro); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 7ea434ffa8d..678c3dca81f 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -776,6 +776,20 @@ static void gen_bext(TCGv ret, TCGv arg1, TCGv shamt) tcg_gen_andi_tl(ret, ret, 1); } =20 +static void gen_slo(TCGv ret, TCGv arg1, TCGv arg2) +{ + tcg_gen_not_tl(ret, arg1); + tcg_gen_shl_tl(ret, ret, arg2); + tcg_gen_not_tl(ret, ret); +} + +static void gen_sro(TCGv ret, TCGv arg1, TCGv arg2) +{ + tcg_gen_not_tl(ret, arg1); + tcg_gen_shr_tl(ret, ret, arg2); + tcg_gen_not_tl(ret, ret); +} + #ifdef TARGET_RISCV64 =20 static void gen_ctzw(TCGv ret, TCGv arg1) --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610523705; cv=none; d=zohomail.com; s=zohoarc; b=n4jN1KdqDyYHXVj2MyrTzsuK+oMnBbwgnDBaQAipEefENMP64vX1R0yp4nfOBEYtLaga0GiM2vRCsbTgbYBEsJiDTCg6dkzr9du8yzH0mu4Z52txzXJBxbpsm4OFxINyPNLOv8yhyaNEhSClfT9I4iLPdgMkWuiFpc+FeerHGA0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610523705; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=bgbzWphZC0k9VvuIAsuvJ5F+P+gmKRofw87fYcF3rqM=; b=iLNziOGf24ZOasNoKePVrtb/A1LVDJEFZ84OLu7wB9DtziksS4n9C8Agw2F3u/oODFNRppKj7KtU713AOvKRj24Wa8jNn5Ud6EALilcVUHLAhmQ+ysMrKykVyGVPs1phLqwkdzog9I0E/Mst0lrcvCJdkHzByeGOrptnY4hkgO0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610523705402644.0561265018068; Tue, 12 Jan 2021 23:41:45 -0800 (PST) Received: from localhost ([::1]:37400 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzamm-0003S5-BF for importer@patchew.org; Wed, 13 Jan 2021 02:41:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49164) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaN7-0007cY-Vm for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:14 -0500 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]:38568) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaMy-0004AR-2e for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:13 -0500 Received: by mail-pj1-x102b.google.com with SMTP id j13so596030pjz.3 for ; Tue, 12 Jan 2021 23:15:02 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.14.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:15:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=bgbzWphZC0k9VvuIAsuvJ5F+P+gmKRofw87fYcF3rqM=; b=RNh0ydLhmAm2r1ulptTtrEZwqTK1BgSPb9EvL5s2x8IXKoeZuQYtB/eiELOrspvwxi lkJA9paTJx8OWdboQO8E/fZkyaILyvN7RXGEXCnyYlWcKTdjVfg7XtmHNxgcDwcj1aGk 8UvaoO8pK7wqbLHrUJoDrMLiOIy5jSlbDMdr0dGXitdHM0MZ/UGqAOMGB5S8KIs6Qr8f WeiWkAt6eiYZNaroIl53t/Kjx5mxf7hfVZCVAliWhtZYeMiobl6oJvThBQ9pmMDzwZhF aLHFgqe48bWRAK6kuUfup6XzChK//J/ILlBX0uncsXqGVqoMFN2NVubj1TEMeV8gkTe1 ifXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=bgbzWphZC0k9VvuIAsuvJ5F+P+gmKRofw87fYcF3rqM=; b=kK67gBpGde0T9G+lb+rNHQK3yiPvbaH9wuDzimuz6Xi48FeSxJ6iMnI1d09BZ85pxJ ZgLa+GwTDDnBAKUe0XvkhiJdnW1xYtkNPUWxf3eODeTL4xVhPSoLUG45D9nWe586T5gO fkcoobzsoURrhoHfRshp7H9WWDAXwgP8cxYgw8PXzbG3e/mdBWdif9PZcgnxUgnPv5QL yFk3nmufod5Dn6KrmBMeDD1YxjjhZ8iyCX1+wT7KQN8xAGKXeuZhDfpxrsh3JdwP3jRt 8G+3MqXQhBqQ1CgeDe3P9ByuuT/gWjErwUG6SEoPwtweGmcWNM/caVg/Dj1KB0pC09MZ mgrA== X-Gm-Message-State: AOAM533ahlFJ/8p3aOa/EPZkELC8dDBvW8AsqhD88BZbMfznedhQsoYx Ua2sFZF32UCnlagjKF/rN5Bmqg1gBp8mKnp/ X-Google-Smtp-Source: ABdhPJw7xhyfxARtn4hZN8I4Ve6KX7rO7hMoljYmoonLer7mQWmLBLKQny0rHkNvprJCbsUtML6Z3Q== X-Received: by 2002:a17:90b:16cd:: with SMTP id iy13mr827516pjb.182.1610522101641; Tue, 12 Jan 2021 23:15:01 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 11/16] target/riscv: rvb: rotate (left/right) Date: Wed, 13 Jan 2021 15:13:43 +0800 Message-Id: <20210113071350.24852-12-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32-64.decode | 3 +++ target/riscv/insn32.decode | 3 +++ target/riscv/insn_trans/trans_rvb.c.inc | 36 +++++++++++++++++++++++++ target/riscv/translate.c | 36 +++++++++++++++++++++++++ 4 files changed, 78 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 8c3ed33077e..8f9ba21b352 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -100,9 +100,12 @@ binvw 0110100 .......... 001 ..... 0111011 @r bextw 0100100 .......... 101 ..... 0111011 @r slow 0010000 .......... 001 ..... 0111011 @r srow 0010000 .......... 101 ..... 0111011 @r +rorw 0110000 .......... 101 ..... 0111011 @r +rolw 0110000 .......... 001 ..... 0111011 @r =20 bsetiw 0010100 .......... 001 ..... 0011011 @sh5 bclriw 0100100 .......... 001 ..... 0011011 @sh5 binviw 0110100 .......... 001 ..... 0011011 @sh5 sloiw 0010000 .......... 001 ..... 0011011 @sh5 sroiw 0010000 .......... 101 ..... 0011011 @sh5 +roriw 0110000 .......... 101 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 0ea92312372..6d1b604c800 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -617,6 +617,8 @@ binv 0110100 .......... 001 ..... 0110011 @r bext 0100100 .......... 101 ..... 0110011 @r slo 0010000 .......... 001 ..... 0110011 @r sro 0010000 .......... 101 ..... 0110011 @r +ror 0110000 .......... 101 ..... 0110011 @r +rol 0110000 .......... 001 ..... 0110011 @r =20 bseti 00101. ........... 001 ..... 0010011 @sh bclri 01001. ........... 001 ..... 0010011 @sh @@ -624,3 +626,4 @@ binvi 01101. ........... 001 ..... 0010011 @sh bexti 01001. ........... 101 ..... 0010011 @sh sloi 00100. ........... 001 ..... 0010011 @sh sroi 00100. ........... 101 ..... 0010011 @sh +rori 01100. ........... 101 ..... 0010011 @sh diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 44f9f639240..8a46fde4767 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -179,6 +179,24 @@ static bool trans_sroi(DisasContext *ctx, arg_sroi *a) return gen_shifti(ctx, a, gen_sro); } =20 +static bool trans_ror(DisasContext *ctx, arg_ror *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, tcg_gen_rotr_tl); +} + +static bool trans_rori(DisasContext *ctx, arg_rori *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, tcg_gen_rotr_tl); +} + +static bool trans_rol(DisasContext *ctx, arg_rol *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, tcg_gen_rotl_tl); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -278,4 +296,22 @@ static bool trans_sroiw(DisasContext *ctx, arg_sroiw *= a) return gen_shiftiw(ctx, a, gen_sro); } =20 +static bool trans_rorw(DisasContext *ctx, arg_rorw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_rorw); +} + +static bool trans_roriw(DisasContext *ctx, arg_roriw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_rorw); +} + +static bool trans_rolw(DisasContext *ctx, arg_rolw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_rolw); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 678c3dca81f..eee69e6bba9 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -828,6 +828,42 @@ static void gen_packuw(TCGv ret, TCGv arg1, TCGv arg2) tcg_temp_free(t); } =20 +static void gen_rorw(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv_i32 t1 =3D tcg_temp_new_i32(); + TCGv_i32 t2 =3D tcg_temp_new_i32(); + + /* truncate to 32-bits */ + tcg_gen_trunc_tl_i32(t1, arg1); + tcg_gen_trunc_tl_i32(t2, arg2); + + tcg_gen_rotr_i32(t1, t1, t2); + + /* sign-extend 64-bits */ + tcg_gen_ext_i32_tl(ret, t1); + + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t2); +} + +static void gen_rolw(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv_i32 t1 =3D tcg_temp_new_i32(); + TCGv_i32 t2 =3D tcg_temp_new_i32(); + + /* truncate to 32-bits */ + tcg_gen_trunc_tl_i32(t1, arg1); + tcg_gen_trunc_tl_i32(t2, arg2); + + tcg_gen_rotl_i32(t1, t1, t2); + + /* sign-extend 64-bits */ + tcg_gen_ext_i32_tl(ret, t1); + + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t2); +} + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522760; cv=none; d=zohomail.com; s=zohoarc; b=dFNHhyUbYTYJmQFC6U5YzU1jJ2TkQzWALAM547+ht/ld9x1KHLv10Ini7TTWk2A0VHxVeWSo6jSqQnMNUOBadvSSujYQL07b4OkdAUkJv4XU+1EuFHLGPswE1ZtfByewF8bBJtq18xXs6WTcuciYp9FufP9c2TLePBInPUkZHyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522760; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=o6jBffw8LGw/Q75MpbwT6lKMgWQdCtDLpTWuA0bVkUY=; b=W2Q9bq1Jj48f6R2dA3V9fYoV0I9Y0uuksSmNqyp6nXoFZmJfLJKK/MaAYuW/xaoLbxVuYIICE9zR6x9h6IcO6xupuiOLOMA7IjpQ/V6EVt6Wwqo0D74pIOnn6X82qvr6teXlJPmbG9im9sO40LKPxYn5RKuoYwY9VdFyGdArSCI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522760930976.4684604066333; Tue, 12 Jan 2021 23:26:00 -0800 (PST) Received: from localhost ([::1]:38126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaXX-0007hC-75 for importer@patchew.org; Wed, 13 Jan 2021 02:25:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49236) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaNA-0007fu-TR for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:17 -0500 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:51203) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaN4-0004D6-Sg for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:16 -0500 Received: by mail-pj1-x1033.google.com with SMTP id y12so564930pji.1 for ; Tue, 12 Jan 2021 23:15:07 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.15.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:15:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=o6jBffw8LGw/Q75MpbwT6lKMgWQdCtDLpTWuA0bVkUY=; b=PIsy492hK8W7j5cCyQ59a2yqWshHbIcyyc9zAezfdBoRRZvVsq4ocgD5vzrtdL5I8Q Bd1xPyLUoJ7Q+JVwtaqa/HMHy0+LxVOrHxV6uF3A32Rew2CBmEpNnbPx6micnzQh8d07 5MX0oFGuQWCchJf3goiVpYjY0DBAMuoYv382MA13tOEf+QDL8F+kROLo3Co73YmjO3Ki G9zqmqKgB2Wtfau8p3AOPFHMPm7B+rL9hp3F4Fe++uwdMA7LAtIjfGvRUy9YcICWxS2F e8xVp+klOJ1vhFuvjrNzjKDThgywQZJGY6k8A27bKl1/TQbmDtyBiJ8LUimVxkL2GWHI 03rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=o6jBffw8LGw/Q75MpbwT6lKMgWQdCtDLpTWuA0bVkUY=; b=oGgE7rPzaIraFZc7YDOVCnMewkeHiBEPVWuvDEMOHC2UiB0UD455J+/+4fCX7nd6ue G83OPvOQW5cUDRtQZNBU/cAgSZxeqWJU5X1Pd2wHdrAGYckFHQLOdC16Su5fKMdQJG7b +GfJ8bNaC0USusWNSD0z0Ns6V4xq8Iqp5DYQcPcuEiridZRUGTv2k8gnPUodh24gFaU7 ALl9a0B2AOGOveMe19yoWwjn0d0RDE3KwNuiunCAkrJrc6m30bJ5wXR9snaVi5hogljr +eAezcdjz+MgQKw1FGsyS5ddJOrgd9ou3wUjZqIagLkd0jWO3p2B89TPej67wWf8+HsE ILqg== X-Gm-Message-State: AOAM530B/MnRjix5cUwqxuslA0RB4R+/W99JfJUoB1ZXb/rcY5kkzsVT jWkTvruuLyQuqCs9eSO21P5IcDLUyUJg+SMl X-Google-Smtp-Source: ABdhPJybfZC3kea46HKNvqCFQwTy0s6x9oglSh5kM8uWgkOfHph3bdxt4ccSfXqbXsBcxYJf0lh+nQ== X-Received: by 2002:a17:902:bc41:b029:de:1ec2:dac1 with SMTP id t1-20020a170902bc41b02900de1ec2dac1mr786223plz.9.1610522106025; Tue, 12 Jan 2021 23:15:06 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 12/16] target/riscv: rvb: generalized reverse Date: Wed, 13 Jan 2021 15:13:44 +0800 Message-Id: <20210113071350.24852-13-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/bitmanip_helper.c | 71 +++++++++++++++++++++++++ target/riscv/helper.h | 7 +++ target/riscv/insn32-64.decode | 2 + target/riscv/insn32.decode | 2 + target/riscv/insn_trans/trans_rvb.c.inc | 29 ++++++++++ target/riscv/meson.build | 1 + target/riscv/translate.c | 28 ++++++++++ 7 files changed, 140 insertions(+) create mode 100644 target/riscv/bitmanip_helper.c diff --git a/target/riscv/bitmanip_helper.c b/target/riscv/bitmanip_helper.c new file mode 100644 index 00000000000..1d3235bc0d6 --- /dev/null +++ b/target/riscv/bitmanip_helper.c @@ -0,0 +1,71 @@ +/* + * RISC-V Bitmanip Extension Helpers for QEMU. + * + * Copyright (c) 2020 Kito Cheng, kito.cheng@sifive.com + * Copyright (c) 2020 Frank Chang, frank.chang@sifive.com + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2 or later, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License f= or + * more details. + * + * You should have received a copy of the GNU General Public License along= with + * this program. If not, see . + */ + +#include "qemu/osdep.h" +#include "qemu/host-utils.h" +#include "exec/exec-all.h" +#include "exec/helper-proto.h" +#include "tcg/tcg.h" + +static const uint64_t adjacent_masks[] =3D { + dup_const(MO_8, 0x55), + dup_const(MO_8, 0x33), + dup_const(MO_8, 0x0f), + dup_const(MO_16, 0xff), + dup_const(MO_32, 0xffff), +#ifdef TARGET_RISCV64 + UINT32_MAX +#endif +}; + +static inline target_ulong do_swap(target_ulong x, uint64_t mask, int shif= t) +{ + return ((x & mask) << shift) | ((x & ~mask) >> shift); +} + +static target_ulong do_grev(target_ulong rs1, + target_ulong rs2, + int bits) +{ + target_ulong x =3D rs1; + int i, shift; + + for (i =3D 0, shift =3D 1; shift < bits; i++, shift <<=3D 1) { + if (rs2 & shift) { + x =3D do_swap(x, adjacent_masks[i], shift); + } + } + + return x; +} + +target_ulong HELPER(grev)(target_ulong rs1, target_ulong rs2) +{ + return do_grev(rs1, rs2, TARGET_LONG_BITS); +} + +/* RV64-only instruction */ +#ifdef TARGET_RISCV64 + +target_ulong HELPER(grevw)(target_ulong rs1, target_ulong rs2) +{ + return do_grev(rs1, rs2, 32); +} + +#endif diff --git a/target/riscv/helper.h b/target/riscv/helper.h index e3f3f41e891..db8b770f1aa 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -58,6 +58,13 @@ DEF_HELPER_FLAGS_2(fcvt_d_l, TCG_CALL_NO_RWG, i64, env, = i64) DEF_HELPER_FLAGS_2(fcvt_d_lu, TCG_CALL_NO_RWG, i64, env, i64) DEF_HELPER_FLAGS_1(fclass_d, TCG_CALL_NO_RWG_SE, tl, i64) =20 +/* Bitmanip */ +DEF_HELPER_FLAGS_2(grev, TCG_CALL_NO_RWG_SE, tl, tl, tl) + +#if defined(TARGET_RISCV64) +DEF_HELPER_FLAGS_2(grevw, TCG_CALL_NO_RWG_SE, tl, tl, tl) +#endif + /* Special functions */ DEF_HELPER_3(csrrw, tl, env, tl, tl) DEF_HELPER_4(csrrs, tl, env, tl, tl, tl) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 8f9ba21b352..38ceadd4553 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -102,6 +102,7 @@ slow 0010000 .......... 001 ..... 0111011 @r srow 0010000 .......... 101 ..... 0111011 @r rorw 0110000 .......... 101 ..... 0111011 @r rolw 0110000 .......... 001 ..... 0111011 @r +grevw 0110100 .......... 101 ..... 0111011 @r =20 bsetiw 0010100 .......... 001 ..... 0011011 @sh5 bclriw 0100100 .......... 001 ..... 0011011 @sh5 @@ -109,3 +110,4 @@ binviw 0110100 .......... 001 ..... 0011011 @sh5 sloiw 0010000 .......... 001 ..... 0011011 @sh5 sroiw 0010000 .......... 101 ..... 0011011 @sh5 roriw 0110000 .......... 101 ..... 0011011 @sh5 +greviw 0110100 .......... 101 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 6d1b604c800..fa4bba4f0ee 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -619,6 +619,7 @@ slo 0010000 .......... 001 ..... 0110011 @r sro 0010000 .......... 101 ..... 0110011 @r ror 0110000 .......... 101 ..... 0110011 @r rol 0110000 .......... 001 ..... 0110011 @r +grev 0110100 .......... 101 ..... 0110011 @r =20 bseti 00101. ........... 001 ..... 0010011 @sh bclri 01001. ........... 001 ..... 0010011 @sh @@ -627,3 +628,4 @@ bexti 01001. ........... 101 ..... 0010011 @sh sloi 00100. ........... 001 ..... 0010011 @sh sroi 00100. ........... 101 ..... 0010011 @sh rori 01100. ........... 101 ..... 0010011 @sh +grevi 01101. ........... 101 ..... 0010011 @sh diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 8a46fde4767..286643cd183 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -197,6 +197,23 @@ static bool trans_rol(DisasContext *ctx, arg_rol *a) return gen_shift(ctx, a, tcg_gen_rotl_tl); } =20 +static bool trans_grev(DisasContext *ctx, arg_grev *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_helper_grev); +} + +static bool trans_grevi(DisasContext *ctx, arg_grevi *a) +{ + REQUIRE_EXT(ctx, RVB); + + if (a->shamt >=3D TARGET_LONG_BITS) { + return false; + } + + return gen_grevi(ctx, a); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -314,4 +331,16 @@ static bool trans_rolw(DisasContext *ctx, arg_rolw *a) return gen_shiftw(ctx, a, gen_rolw); } =20 +static bool trans_grevw(DisasContext *ctx, arg_grevw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_grevw); +} + +static bool trans_greviw(DisasContext *ctx, arg_greviw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_grevw); +} + #endif diff --git a/target/riscv/meson.build b/target/riscv/meson.build index 14a5c62dace..de530298454 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -21,6 +21,7 @@ riscv_ss.add(files( 'gdbstub.c', 'op_helper.c', 'vector_helper.c', + 'bitmanip_helper.c', 'translate.c', )) =20 diff --git a/target/riscv/translate.c b/target/riscv/translate.c index eee69e6bba9..cb040a15003 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -790,6 +790,28 @@ static void gen_sro(TCGv ret, TCGv arg1, TCGv arg2) tcg_gen_not_tl(ret, ret); } =20 +static bool gen_grevi(DisasContext *ctx, arg_grevi *a) +{ + TCGv source1 =3D tcg_temp_new(); + TCGv source2; + + gen_get_gpr(source1, a->rs1); + + if (a->shamt =3D=3D (TARGET_LONG_BITS - 8)) { + /* rev8, byte swaps */ + tcg_gen_bswap_tl(source1, source1); + } else { + source2 =3D tcg_temp_new(); + tcg_gen_movi_tl(source2, a->shamt); + gen_helper_grev(source1, source1, source2); + tcg_temp_free(source2); + } + + gen_set_gpr(a->rd, source1); + tcg_temp_free(source1); + return true; +} + #ifdef TARGET_RISCV64 =20 static void gen_ctzw(TCGv ret, TCGv arg1) @@ -864,6 +886,12 @@ static void gen_rolw(TCGv ret, TCGv arg1, TCGv arg2) tcg_temp_free_i32(t2); } =20 +static void gen_grevw(TCGv ret, TCGv arg1, TCGv arg2) +{ + tcg_gen_ext32u_tl(arg1, arg1); + gen_helper_grev(ret, arg1, arg2); +} + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522997; cv=none; d=zohomail.com; s=zohoarc; b=CdnkBOC/Iv1sH+MMJpiouMtukXchHtILJyswVnSKqwgdDQ+R8nREHKPJ8QfQQifqaLyjyql38OnaEnI0Ms+QFGLMBx6EGOMPHoisM9cpZ2CIn5vaWUcgducEnoA/+C139g0PQ94z0ggm0lq/1otNgKEEKFEu0SzGfQGckNIBFdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522997; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=wuINCnXuB6SsrWmAjBhj4csaLklR2iJUL+TrTVfP7x8=; b=LR3zxQp4+aBuI1FAyqRDvBUPR2p9p/gb063VmMCSEaDDDqrcHQ8sZotsOrOyiyAjKpnOXezZyOW1GnBHBpWClxdmKZWsCNXPfBHS7WTtixCTTBABw2tQZWh9+S8N1hSGRDkiDHpoSdNtU1HNmz2sENdOUDV2EYgj9Bg9Zmuk38c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522997832787.4306780065137; Tue, 12 Jan 2021 23:29:57 -0800 (PST) Received: from localhost ([::1]:45368 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzabM-0002XM-NS for importer@patchew.org; Wed, 13 Jan 2021 02:29:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49302) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaNE-0007mY-Ji for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:20 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:40003) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaN7-0004EF-Ak for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:20 -0500 Received: by mail-pj1-x102a.google.com with SMTP id m5so589837pjv.5 for ; Tue, 12 Jan 2021 23:15:11 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.15.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:15:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=wuINCnXuB6SsrWmAjBhj4csaLklR2iJUL+TrTVfP7x8=; b=cDF4Ed+lf0XqvzSHgbbfUd3YdCvIpsKPxUOOoiN4+ihoSvdYa1g+0j5Q5AFswX9GGE Oqt3vqIiVEkXEjSXU/Ow3FhONdAbRJ4a6QNfk4QkWEJF+LHTo0IPbQL5N8/fOnWTJj0a eXVZyntoMRknozwrvs4+s7MNXrIDpWVGeDenDMmGR/zyq+uVbfYiaVZvu4u4fbAoLnn+ 5YURZaJW1I6FWLfN43zbUNMr1LF4CvjBATJqoQvgL+tGE4C1H3r6/Okhn9aJ1A70dAWd t56mWIiZmy/NPwizoVefap0u2ZiD5CtMVAHIyFzrL5drBPok0zohv74nyzdkdxDm4n+/ JUSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=wuINCnXuB6SsrWmAjBhj4csaLklR2iJUL+TrTVfP7x8=; b=o/Pl1XiOF14TjfGWgWvaMBocpxn5fHipejRd+gKecGrUK2nIBwobcR1HLv5kIGsSEe DGAO1G+BTGIPeuZm6FEVW2PPYX7se19Wfd/sbFiHsuTbLo2886Z5wz2suWADD2x0EoXa 34UMzRXsCKoXnM+8bgXkL3hRGVZfaxe9TmKazeT6I2FeS4V29m1C8kmz1qgKVxjxGDEm 1aRdUxWF+Npej3o1xF1VS0zD9B0RaJDgrrgLSRK1KB/Uyu/s6X00mhowpt3BLEX/Nz+9 xwMj7s87TeVr/ajHro7qDdr5a5lNAiFb1BiSQe11L396NOt9WwdNYrgZ24pnImUrFYZi w92g== X-Gm-Message-State: AOAM530r6A1puYh0r3Cj7x5prh143FenkyfJS12QwtXVzLeyF7GRum03 pwlejDBwE9Ggepz6t2kEk34zdi6zFwIGJgkW X-Google-Smtp-Source: ABdhPJzxLxkwbEUu+nzVon+xGfy7bZukdRwOfbeRc8Y6Cn2hGXS2nbhlxuTWOgUwHelw6wk5XCrYCg== X-Received: by 2002:a17:90a:de94:: with SMTP id n20mr847956pjv.196.1610522110572; Tue, 12 Jan 2021 23:15:10 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 13/16] target/riscv: rvb: generalized or-combine Date: Wed, 13 Jan 2021 15:13:45 +0800 Message-Id: <20210113071350.24852-14-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/bitmanip_helper.c | 31 +++++++++++++++++++++++++ target/riscv/helper.h | 2 ++ target/riscv/insn32-64.decode | 2 ++ target/riscv/insn32.decode | 2 ++ target/riscv/insn_trans/trans_rvb.c.inc | 24 +++++++++++++++++++ target/riscv/translate.c | 6 +++++ 6 files changed, 67 insertions(+) diff --git a/target/riscv/bitmanip_helper.c b/target/riscv/bitmanip_helper.c index 1d3235bc0d6..389b52eccd9 100644 --- a/target/riscv/bitmanip_helper.c +++ b/target/riscv/bitmanip_helper.c @@ -69,3 +69,34 @@ target_ulong HELPER(grevw)(target_ulong rs1, target_ulon= g rs2) } =20 #endif + +static target_ulong do_gorc(target_ulong rs1, + target_ulong rs2, + int bits) +{ + target_ulong x =3D rs1; + int i, shift; + + for (i =3D 0, shift =3D 1; shift < bits; i++, shift <<=3D 1) { + if (rs2 & shift) { + x |=3D do_swap(x, adjacent_masks[i], shift); + } + } + + return x; +} + +target_ulong HELPER(gorc)(target_ulong rs1, target_ulong rs2) +{ + return do_gorc(rs1, rs2, TARGET_LONG_BITS); +} + +/* RV64-only instruction */ +#ifdef TARGET_RISCV64 + +target_ulong HELPER(gorcw)(target_ulong rs1, target_ulong rs2) +{ + return do_gorc(rs1, rs2, 32); +} + +#endif diff --git a/target/riscv/helper.h b/target/riscv/helper.h index db8b770f1aa..7ddaea61798 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -60,9 +60,11 @@ DEF_HELPER_FLAGS_1(fclass_d, TCG_CALL_NO_RWG_SE, tl, i64) =20 /* Bitmanip */ DEF_HELPER_FLAGS_2(grev, TCG_CALL_NO_RWG_SE, tl, tl, tl) +DEF_HELPER_FLAGS_2(gorc, TCG_CALL_NO_RWG_SE, tl, tl, tl) =20 #if defined(TARGET_RISCV64) DEF_HELPER_FLAGS_2(grevw, TCG_CALL_NO_RWG_SE, tl, tl, tl) +DEF_HELPER_FLAGS_2(gorcw, TCG_CALL_NO_RWG_SE, tl, tl, tl) #endif =20 /* Special functions */ diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 38ceadd4553..894db5e3abf 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -103,6 +103,7 @@ srow 0010000 .......... 101 ..... 0111011 @r rorw 0110000 .......... 101 ..... 0111011 @r rolw 0110000 .......... 001 ..... 0111011 @r grevw 0110100 .......... 101 ..... 0111011 @r +gorcw 0010100 .......... 101 ..... 0111011 @r =20 bsetiw 0010100 .......... 001 ..... 0011011 @sh5 bclriw 0100100 .......... 001 ..... 0011011 @sh5 @@ -111,3 +112,4 @@ sloiw 0010000 .......... 001 ..... 0011011 @sh5 sroiw 0010000 .......... 101 ..... 0011011 @sh5 roriw 0110000 .......... 101 ..... 0011011 @sh5 greviw 0110100 .......... 101 ..... 0011011 @sh5 +gorciw 0010100 .......... 101 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index fa4bba4f0ee..0756ea5cc28 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -620,6 +620,7 @@ sro 0010000 .......... 101 ..... 0110011 @r ror 0110000 .......... 101 ..... 0110011 @r rol 0110000 .......... 001 ..... 0110011 @r grev 0110100 .......... 101 ..... 0110011 @r +gorc 0010100 .......... 101 ..... 0110011 @r =20 bseti 00101. ........... 001 ..... 0010011 @sh bclri 01001. ........... 001 ..... 0010011 @sh @@ -629,3 +630,4 @@ sloi 00100. ........... 001 ..... 0010011 @sh sroi 00100. ........... 101 ..... 0010011 @sh rori 01100. ........... 101 ..... 0010011 @sh grevi 01101. ........... 101 ..... 0010011 @sh +gorci 00101. ........... 101 ..... 0010011 @sh diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index 286643cd183..a4181dbf0de 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -214,6 +214,18 @@ static bool trans_grevi(DisasContext *ctx, arg_grevi *= a) return gen_grevi(ctx, a); } =20 +static bool trans_gorc(DisasContext *ctx, arg_gorc *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, gen_helper_gorc); +} + +static bool trans_gorci(DisasContext *ctx, arg_gorci *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, gen_helper_gorc); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -343,4 +355,16 @@ static bool trans_greviw(DisasContext *ctx, arg_greviw= *a) return gen_shiftiw(ctx, a, gen_grevw); } =20 +static bool trans_gorcw(DisasContext *ctx, arg_gorcw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, gen_gorcw); +} + +static bool trans_gorciw(DisasContext *ctx, arg_gorciw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, gen_gorcw); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index cb040a15003..e845b311a3d 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -892,6 +892,12 @@ static void gen_grevw(TCGv ret, TCGv arg1, TCGv arg2) gen_helper_grev(ret, arg1, arg2); } =20 +static void gen_gorcw(TCGv ret, TCGv arg1, TCGv arg2) +{ + tcg_gen_ext32u_tl(arg1, arg1); + gen_helper_gorcw(ret, arg1, arg2); +} + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610522828; cv=none; d=zohomail.com; s=zohoarc; b=AuTNmXsqeUtA9UV+120YE9VFE/XEYbKiye/t7/l5F3y/JEOeoodmqgmZheuJSV71CkP9Fs5ddzd/70/5lWlPt5fv7dXRBCj9f+DLU2Wa6SUsIDazAfD+YnhTs5QIZ45ShhNPyQpbh0eHPuweTtWJ4nXL+TaXQ2q4aFtiACpznfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610522828; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=1kUMsBJeTTaJT5hWSf4ZQEPL/s217cbvOOKIMRYR0N0=; b=algWo0V7/7L8ClMSGWxD/VwIsyzJnvkb6aY2XurgDobwAaG+AXePSQOtEQm673N+MSNPsh0FqhM/YQs9QBcImlfZjxC0QkcEpPm1fEbVwBB0uvcWSWhsDZBfrbd9IQqRYCmk3zqXMnr3zwTxkS4H9X1uiaYwnTFfoVzFbEU7+hA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610522828332916.0776328046426; Tue, 12 Jan 2021 23:27:08 -0800 (PST) Received: from localhost ([::1]:40486 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzaYd-0000Nz-5S for importer@patchew.org; Wed, 13 Jan 2021 02:27:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49316) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaNF-0007o3-4c for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:21 -0500 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]:54026) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaNA-0004Fu-9G for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:20 -0500 Received: by mail-pj1-x102c.google.com with SMTP id p15so469364pjv.3 for ; Tue, 12 Jan 2021 23:15:15 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.15.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:15:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1kUMsBJeTTaJT5hWSf4ZQEPL/s217cbvOOKIMRYR0N0=; b=b+XknbpNwBpEMuL0GwPYUWdX7zZKDfEC/shgM3WPCFsCezNmXORsZwb6beYB9rqFth DycAB0DnDN95ACQ3RXP6IcqYaWLOjLcpk1AellXRLD79IWKkhvcFxmKcq9H2zM/n//J+ kSr4fwPiItdNfN0E3bZwov4BbP2297qnPg0vewaDGkC0sZ1j6UEl/sZAPvhYXnHOMZqQ eKQujST+SHLPfoQQ4yFa2hQCUZ6jb+ZuMDCKEz1OAu74OCvdW+DwNFnXURNdEJ1BXnjA k2yrqhEpyut5S5EknK0ygiTr0cSKqoKutXXWGaJXVfOYEmgZarOtIxTuoW8VGHD/8SY3 6MXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=1kUMsBJeTTaJT5hWSf4ZQEPL/s217cbvOOKIMRYR0N0=; b=Ups7T6qSzSoN+Rqcdsw+xmEjPRnJfBlxxD8tME5XfCwv4soT+iq3umZwqaAnbRbdMp NuttFkrAmxPcmvcLIR5RVIiNEO1aD8jZFUtFeB8CYkyZ7F/J/0ExYk5agnhdKdvAVRrP kRdEo1EP2ZXjR64mxszjyHWnZ0xbZBeC6T+d2hcHcY3gfMv8pAxprszluL6M6EraLonm x4PKIcRrgkHhGh2WBi3xWkb5D2euzJd++ijnZvcgM4QfjhQpwl/MQEMakjWtnNx8wXuk thuRz+1VSsLmH2bo86xRweTl/sZM6uMU0yi+76NMH/vHrKCW1BrkzBIRyvf3B4QHlY9B viTg== X-Gm-Message-State: AOAM533qSuY9k2SfSBGwOSHa+cktCTPoiSkZ/ZG2g06VRYrZ8L79mPZj 61IaXWgXR7fBjc1RmigR5Aex5wOkwYlLu8TU X-Google-Smtp-Source: ABdhPJz2wn1RzhnIQOe5OVvSEqlBXLI8wW7P35YqY5Dj4Oro9DmDJioWYwSV199lDdjPPzFsuzsYeQ== X-Received: by 2002:a17:90a:f408:: with SMTP id ch8mr823116pjb.222.1610522114506; Tue, 12 Jan 2021 23:15:14 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 14/16] target/riscv: rvb: address calculation Date: Wed, 13 Jan 2021 15:13:46 +0800 Message-Id: <20210113071350.24852-15-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32-64.decode | 3 +++ target/riscv/insn32.decode | 3 +++ target/riscv/insn_trans/trans_rvb.c.inc | 23 ++++++++++++++++++ target/riscv/translate.c | 32 +++++++++++++++++++++++++ 4 files changed, 61 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 894db5e3abf..2f80b0c07ae 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -104,6 +104,9 @@ rorw 0110000 .......... 101 ..... 0111011 @r rolw 0110000 .......... 001 ..... 0111011 @r grevw 0110100 .......... 101 ..... 0111011 @r gorcw 0010100 .......... 101 ..... 0111011 @r +sh1add_uw 0010000 .......... 010 ..... 0111011 @r +sh2add_uw 0010000 .......... 100 ..... 0111011 @r +sh3add_uw 0010000 .......... 110 ..... 0111011 @r =20 bsetiw 0010100 .......... 001 ..... 0011011 @sh5 bclriw 0100100 .......... 001 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 0756ea5cc28..b90c1c0a350 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -621,6 +621,9 @@ ror 0110000 .......... 101 ..... 0110011 @r rol 0110000 .......... 001 ..... 0110011 @r grev 0110100 .......... 101 ..... 0110011 @r gorc 0010100 .......... 101 ..... 0110011 @r +sh1add 0010000 .......... 010 ..... 0110011 @r +sh2add 0010000 .......... 100 ..... 0110011 @r +sh3add 0010000 .......... 110 ..... 0110011 @r =20 bseti 00101. ........... 001 ..... 0010011 @sh bclri 01001. ........... 001 ..... 0010011 @sh diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index a4181dbf0de..ca987f2705f 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -226,6 +226,17 @@ static bool trans_gorci(DisasContext *ctx, arg_gorci *= a) return gen_shifti(ctx, a, gen_helper_gorc); } =20 +#define GEN_TRANS_SHADD(SHAMT) = \ +static bool trans_sh##SHAMT##add(DisasContext *ctx, arg_sh##SHAMT##add *a)= \ +{ = \ + REQUIRE_EXT(ctx, RVB); = \ + return gen_arith(ctx, a, gen_sh##SHAMT##add); = \ +} + +GEN_TRANS_SHADD(1) +GEN_TRANS_SHADD(2) +GEN_TRANS_SHADD(3) + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -367,4 +378,16 @@ static bool trans_gorciw(DisasContext *ctx, arg_gorciw= *a) return gen_shiftiw(ctx, a, gen_gorcw); } =20 +#define GEN_TRANS_SHADD_UW(SHAMT) \ +static bool trans_sh##SHAMT##add_uw(DisasContext *ctx, \ + arg_sh##SHAMT##add_uw *a) \ +{ \ + REQUIRE_EXT(ctx, RVB); \ + return gen_arith(ctx, a, gen_sh##SHAMT##add_uw); \ +} + +GEN_TRANS_SHADD_UW(1) +GEN_TRANS_SHADD_UW(2) +GEN_TRANS_SHADD_UW(3) + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index e845b311a3d..7365e591eb7 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -812,6 +812,21 @@ static bool gen_grevi(DisasContext *ctx, arg_grevi *a) return true; } =20 +#define GEN_SHADD(SHAMT) \ +static void gen_sh##SHAMT##add(TCGv ret, TCGv arg1, TCGv arg2) \ +{ \ + TCGv t =3D tcg_temp_new(); \ + \ + tcg_gen_shli_tl(t, arg1, SHAMT); \ + tcg_gen_add_tl(ret, t, arg2); \ + \ + tcg_temp_free(t); \ +} + +GEN_SHADD(1) +GEN_SHADD(2) +GEN_SHADD(3) + #ifdef TARGET_RISCV64 =20 static void gen_ctzw(TCGv ret, TCGv arg1) @@ -898,6 +913,23 @@ static void gen_gorcw(TCGv ret, TCGv arg1, TCGv arg2) gen_helper_gorcw(ret, arg1, arg2); } =20 +#define GEN_SHADD_UW(SHAMT) \ +static void gen_sh##SHAMT##add_uw(TCGv ret, TCGv arg1, TCGv arg2) \ +{ \ + TCGv t =3D tcg_temp_new(); \ + \ + tcg_gen_ext32u_tl(t, arg1); \ + \ + tcg_gen_shli_tl(t, t, SHAMT); \ + tcg_gen_add_tl(ret, t, arg2); \ + \ + tcg_temp_free(t); \ +} + +GEN_SHADD_UW(1) +GEN_SHADD_UW(2) +GEN_SHADD_UW(3) + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610523873; cv=none; d=zohomail.com; s=zohoarc; b=DIYIK/YsxkM+wNKmqV7jO9od4UmBjMdwjV6qrqweyEz/0HHogv4ub8tdF315tRIs7W0mJ4k5WEvxv917ifmX+fPfIxLWMNfoykLkj0cNdD7L1iAzDBxgihLvKTSdYum7OWztWGLhOzS0KK5SLoMbeTsfmyUqrGIe/nuiuHIZ5pM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610523873; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=cg/XSyBDgfWMKTaj4H5pnj/4AfFpWEh9kdHo1QO7YT0=; b=XN5rlJlyIYuQ1y7l8UMk1PqU/e1lJ143rJlzESvmMpXdp8A+9Zr2ZXfB+erPck8qwoB9Ctii/NFTv/0he+6iBFPassbElDGbF+W589w/lmA1aNmaFUfF3rCyzW391hErfCnMr5IxfBZbiknmILExvdGOPXaCJtZ2kSfY3A76RKg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610523873563187.0306461881396; Tue, 12 Jan 2021 23:44:33 -0800 (PST) Received: from localhost ([::1]:40008 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzapU-0004q8-AX for importer@patchew.org; Wed, 13 Jan 2021 02:44:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49340) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaNG-0007rS-Fj for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:22 -0500 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]:33506) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaNE-0004JL-OO for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:22 -0500 Received: by mail-pg1-x534.google.com with SMTP id n25so946249pgb.0 for ; Tue, 12 Jan 2021 23:15:20 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.15.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:15:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cg/XSyBDgfWMKTaj4H5pnj/4AfFpWEh9kdHo1QO7YT0=; b=NS0ez8MPi0X4EbHi+B5qyNbwgnh1n7o3YbCOWWmYPbaeYUWRf7MfpB4eyIKlgmwam1 l1zYrGNxwWp7pJRZRR7eD78psyz7haWU6jk/2S2HVDTn1lRPeoDHUfcTy46fjQQ2umJc GIuVh7yVfOMgBkEobbWQuq1KADVr3k4y35EItd3NRReIMebfWHgBgesP2lkivw6rUr+k 7K592HJE3cFZo/BqTpjd7odUiJ/NosSGrrbtYqcdXJgyHRoFQIgslL8rQWrxQaI7bGv4 pWa86q7uvFY7AAcn4kZ4/onDcNEd5iRz5IqICi0RWr0qfYSrn7MstwekNFaltB8sl8uK WM7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cg/XSyBDgfWMKTaj4H5pnj/4AfFpWEh9kdHo1QO7YT0=; b=PWSY7e1T+87aHgdLWnMlGjCUjotSHDkxZngFECZaw5wZM67x/ik9gblnnG4c0zRRHm HNnepv21KlZMnWrr9a8R1BJ71ZSZ/j77PXEC6+PhiaG2dkmBGC4F1TagfjoTO3VGaR2u groKMoG3eLirFjpXrGtIN40g3/KRIgxoxuc5ZKWVdergy7TVvbX0LktjKuT21fChm7Qb Pj+cY+ftmzmjQtAWOZ9Yv0z1YzW2PgD9BQ9q5FhUAlDKx6+IBVGXCm9OJx3Sh0yNp30T sSSs85ERRc+m3GnuACk4DWr/YXDuyyJrCaTDb9boDIOoN+BQpGU5pPMgyIQ85mS7q5pc 4XyA== X-Gm-Message-State: AOAM5305ds6Nr3alLFhNaAdigLq2Gnanx2slV/KNZcU+GCtrZhssDBQ8 W3pyEfaGbPwCPIKFPeLkUSNHqvgH/EJm7t4/ X-Google-Smtp-Source: ABdhPJwJltMq326+RDedv4QOk0tqIEDlLzOZYYbiB6rW9NA1kseQQYwmJU1qXkcO9OGjoeYpRgI+/Q== X-Received: by 2002:a62:2f03:0:b029:1af:b254:d1b0 with SMTP id v3-20020a622f030000b02901afb254d1b0mr1091981pfv.5.1610522119183; Tue, 12 Jan 2021 23:15:19 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 15/16] target/riscv: rvb: add/shift with prefix zero-extend Date: Wed, 13 Jan 2021 15:13:47 +0800 Message-Id: <20210113071350.24852-16-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=frank.chang@sifive.com; helo=mail-pg1-x534.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Richard Henderson , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32-64.decode | 3 +++ target/riscv/insn_trans/trans_rvb.c.inc | 22 ++++++++++++++++++++++ target/riscv/translate.c | 6 ++++++ 3 files changed, 31 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 2f80b0c07ae..01b28718af5 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -107,6 +107,7 @@ gorcw 0010100 .......... 101 ..... 0111011 @r sh1add_uw 0010000 .......... 010 ..... 0111011 @r sh2add_uw 0010000 .......... 100 ..... 0111011 @r sh3add_uw 0010000 .......... 110 ..... 0111011 @r +add_uw 0000100 .......... 000 ..... 0111011 @r =20 bsetiw 0010100 .......... 001 ..... 0011011 @sh5 bclriw 0100100 .......... 001 ..... 0011011 @sh5 @@ -116,3 +117,5 @@ sroiw 0010000 .......... 101 ..... 0011011 @sh5 roriw 0110000 .......... 101 ..... 0011011 @sh5 greviw 0110100 .......... 101 ..... 0011011 @sh5 gorciw 0010100 .......... 101 ..... 0011011 @sh5 + +slli_uw 00001. ........... 001 ..... 0011011 @sh diff --git a/target/riscv/insn_trans/trans_rvb.c.inc b/target/riscv/insn_tr= ans/trans_rvb.c.inc index ca987f2705f..94fcf822a36 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -390,4 +390,26 @@ GEN_TRANS_SHADD_UW(1) GEN_TRANS_SHADD_UW(2) GEN_TRANS_SHADD_UW(3) =20 +static bool trans_add_uw(DisasContext *ctx, arg_add_uw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, gen_add_uw); +} + +static bool trans_slli_uw(DisasContext *ctx, arg_slli_uw *a) +{ + TCGv source1 =3D tcg_temp_new(); + gen_get_gpr(source1, a->rs1); + + if (a->shamt < 32) { + tcg_gen_deposit_z_i64(source1, source1, a->shamt, 32); + } else { + tcg_gen_shli_i64(source1, source1, a->shamt); + } + + gen_set_gpr(a->rd, source1); + tcg_temp_free(source1); + return true; +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 7365e591eb7..dbcc15ed73f 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -930,6 +930,12 @@ GEN_SHADD_UW(1) GEN_SHADD_UW(2) GEN_SHADD_UW(3) =20 +static void gen_add_uw(TCGv ret, TCGv arg1, TCGv arg2) +{ + tcg_gen_ext32u_tl(arg1, arg1); + tcg_gen_add_tl(ret, arg1, arg2); +} + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Sat Apr 20 03:35:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1610523165; cv=none; d=zohomail.com; s=zohoarc; b=EgNlz1CIqBtvonv6FJmoZRQoIsCFnVBUs45Bd164Vg/fk5GXYC7lM9obxSmUxmDxaVMuDpYznGQxFQvVxEP34PYfrQ6it/8uAybcczbn9XN7t75NwRG+fOHXEbQqe3Em0caqqJmzUiEFnarjPDO2XxKXAF8h5qpQmV30uvUHum8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610523165; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=p/qbE6jexeElRhM8mddkBf23LGth+Huw3fAq1j6ZypM=; b=l5wzK7w+vFWr5OGtXIuc9URPZU04uzyI8QuIdCsskKn/bXqlz/Pd7p0k6cQRwS8IJUA3YaSuY9Ox+NhLOSLzR4Qxqg/xx/A/5iGxbgAx7FSgWFE12iZrqsT4NB/Ampv46a3i0PoIbb8KASdkazJvrtmMWVmQNNw1/NVkLusoLtU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1610523165971163.98466884555978; Tue, 12 Jan 2021 23:32:45 -0800 (PST) Received: from localhost ([::1]:49972 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kzae4-0004fO-Uf for importer@patchew.org; Wed, 13 Jan 2021 02:32:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49368) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kzaNK-00080Q-I2 for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:26 -0500 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:55787) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kzaNI-0004OC-Vi for qemu-devel@nongnu.org; Wed, 13 Jan 2021 02:15:26 -0500 Received: by mail-pj1-x102e.google.com with SMTP id p12so557118pju.5 for ; Tue, 12 Jan 2021 23:15:24 -0800 (PST) Received: from frankchang-ThinkPad-T490.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id l7sm1361888pjy.29.2021.01.12.23.15.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Jan 2021 23:15:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=p/qbE6jexeElRhM8mddkBf23LGth+Huw3fAq1j6ZypM=; b=C1UEprSbIFByRWLB2vJvWDauSH+BED0u7flhLvgD51HNjrinVKHr05zWLWRI3NIMue ZbuwLijWozBm/XFff41ODESV2MzawvxPv5h1jyxhKGbVX2/7oP2rh5YFEEkMw8za324N exDUQeJQ+mXZx2oHYMQRARdROXeCWqQRMp6ysEZpkwKC//e19O/imjnqXCpJCc+GFYka NNJAHKg5WGeselPIY30oTeUQRKQMZmYCyxGOfiblUw62J3LmQUo8E3wMy6/GEgOz20/8 mYthoozrFZwiT0bUugpt44kZGxe2pFnMoK3nULBCbKNbkP2mKY30OXqfM9qQdz+EPnPw yMjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=p/qbE6jexeElRhM8mddkBf23LGth+Huw3fAq1j6ZypM=; b=sTlqTyYJsFLHituQIke6gn143ikeXDDENVqPWh5i+2o6JKtJaiA5NElLZRuskf27o+ XfTKWrDISaDP2A5FWxCSTjb5UMYVUqs0avmP45mUQ2Agd4avi19XJCfoRGtcaUcyQ3ak RQMB30tv3+/qR9HFuYZjadQxvaDEmjpW8q2i9LZ1oGUeUjd8s7R/mNu3w6rSjUIV+wWY EpmFHUU36NSmJu9HKs3vhBPZ9PhE3Q4cxalsGaQLx5KSSw9gmOqbFkEcEOVaOkW1QVVL 3Zqz7BndTPSxAt6yEPBmj+L3MsDKWAmjMr1J1YkUGqBsXcHwORAybiMRnHl8mZUmNTfz qlTQ== X-Gm-Message-State: AOAM533oodOgy5SpCZTVTarX3WcQZZG+DAGrVPsQ/sgDwXtEOfZDO3dm GNr7hjn7Nsyl5VTkVXzQld1GugpeLgYPqXjr X-Google-Smtp-Source: ABdhPJyfycNMXUYUuIWR4AkPp6TwdcbTFiYpUqeGBxgT5v/xogQ/nldBw+fG8Qb3nW1eurBQcHR6/w== X-Received: by 2002:a17:90a:eb13:: with SMTP id j19mr768898pjz.219.1610522123469; Tue, 12 Jan 2021 23:15:23 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v4 16/16] target/riscv: rvb: support and turn on B-extension from command line Date: Wed, 13 Jan 2021 15:13:48 +0800 Message-Id: <20210113071350.24852-17-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210113071350.24852-1-frank.chang@sifive.com> References: <20210113071350.24852-1-frank.chang@sifive.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagar Karandikar , Frank Chang , Bastian Koppelmann , Alistair Francis , Palmer Dabbelt , Kito Cheng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Kito Cheng B-extension is default off, use cpu rv32 or rv64 with x-b=3Dtrue to enable B-extension. Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Reviewed-by: Richard Henderson --- target/riscv/cpu.c | 4 ++++ target/riscv/cpu.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 8227d7aea9d..7379a0abc6c 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -472,6 +472,9 @@ static void riscv_cpu_realize(DeviceState *dev, Error *= *errp) if (cpu->cfg.ext_h) { target_misa |=3D RVH; } + if (cpu->cfg.ext_b) { + target_misa |=3D RVB; + } if (cpu->cfg.ext_v) { target_misa |=3D RVV; if (!is_power_of_2(cpu->cfg.vlen)) { @@ -542,6 +545,7 @@ static Property riscv_cpu_properties[] =3D { DEFINE_PROP_BOOL("s", RISCVCPU, cfg.ext_s, true), DEFINE_PROP_BOOL("u", RISCVCPU, cfg.ext_u, true), /* This is experimental so mark with 'x-' */ + DEFINE_PROP_BOOL("x-b", RISCVCPU, cfg.ext_b, false), DEFINE_PROP_BOOL("x-h", RISCVCPU, cfg.ext_h, false), DEFINE_PROP_BOOL("x-v", RISCVCPU, cfg.ext_v, false), DEFINE_PROP_BOOL("Counters", RISCVCPU, cfg.ext_counters, true), diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 6339e848192..d5271906db4 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -72,6 +72,7 @@ #define RVS RV('S') #define RVU RV('U') #define RVH RV('H') +#define RVB RV('B') =20 /* S extension denotes that Supervisor mode exists, however it is possible to have a core that support S mode but does not have an MMU and there @@ -282,6 +283,7 @@ struct RISCVCPU { bool ext_f; bool ext_d; bool ext_c; + bool ext_b; bool ext_s; bool ext_u; bool ext_h; --=20 2.17.1