From nobody Tue Nov 18 06:06:13 2025 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=1608084455; cv=none; d=zohomail.com; s=zohoarc; b=URtZIO980akn53c2FK3l50zEdspeBoZ7CdZmBq5xZdzpnvaAxE/b+C1R44MdgHzKgfIhv+qNZ4B2/FtehXDbBAS25i3K399q5Em70R4p3nmxM5ZuFH8u3SCqM1BGAbaHsNQJ2Kpm10EKLTBkVWowNOFj39xxicMWyYTw9yqSpJU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084455; 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=qfT6duDws+MOs/ITpPJGxXNHBfmmSHU+0mu3jVfJTvE=; b=gvQo/MUFACOkLLrp9GGo8Kpb+UmipNXKLtqPuLHrgngaSSMXv4NlVvwFgOKYNbzb+sHDFmbZ7n92sH15JgbGDo0xD2AH3CrdN9et6Dl4YM3IWQxRUqeApZHIHsRdodcZzPqwMw1dZBOKl/SiuyU2Kq0ajb/ao9Flu5wQ4C7cQM4= 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 1608084455476348.02236983246155; Tue, 15 Dec 2020 18:07:35 -0800 (PST) Received: from localhost ([::1]:41272 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpME2-0002hP-9G for importer@patchew.org; Tue, 15 Dec 2020 21:07:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM8k-00067P-Ja for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:06 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:39314) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM8g-0000qp-Np for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:06 -0500 Received: by mail-pf1-x42a.google.com with SMTP id m6so5890281pfm.6 for ; Tue, 15 Dec 2020 18:02: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 a13sm289150pfr.59.2020.12.15.18.01.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02:00 -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=qfT6duDws+MOs/ITpPJGxXNHBfmmSHU+0mu3jVfJTvE=; b=gVZrAxM7DyzMSmWYAAsFeUUq+iQS9yALO7XkjDCZeSMAP2+/p5h74ubyeqm+CVaTEg CQKM1VcJ2QTYJ0L+sVX2BH7Qzb7S+p6Ot4upz2g3s94evW2/u8STYs+m+lfJVkUFIB8G VEgbo2lvBHi2UJN2fiGHGLiPY9xmhbfIbkRWHd0QXmHNgElEqnJgs4vU9gnxOEAhTn6g 80Js0bWQUS2S4FL4x+PdI04XxYxGjB5ThVrJZaCAqwHSpEkuQFKErpC/yW2jxSJj5aLr 7axC+7bWXmGPm+jLtEMT5a6z+VPs6Xzb0xRdX/qN6VMWdC3aOyCnmBbsoZIhLFLzNgqX X1+A== 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=qfT6duDws+MOs/ITpPJGxXNHBfmmSHU+0mu3jVfJTvE=; b=YHBtMrSrlLGWUx4g6czLfYNTnl2lCdOA+NkdJKiXsBlssrHDLbgeOxnFQTjI7nS7Qp vRpVOxdfyKgux/e1Q/hLTfJ3eHbEhlfqNdEPW/RTqZXSiSz3sKR+BqgWPFv9x42KWd1J 1u/9GMkuPHnqA06c4bPoJj3ilIJ4e+eiT0hYdkx21AOiu/hZeUQZuLFQkBKXsevwREN4 OLyx2A58YUnCc8crn5ogbXiwxtWEsguzV0Na8ypBapeyXN7IkYKUwZjo9FSOdMlSmEI6 426loheK9Twmbq1gcBedtxUv/w9BEbDq2r1S6IwXNzVn8Srq5l1xiyFYjXoH/WvYZPjw 2cTQ== X-Gm-Message-State: AOAM531BkMkmKJ/0joOjb1naWbIpofrrHY58Y20VMNdfPcJlIVdS63PP jZ5/qm/Ob2HByZYTPaRmDmnJtBOd+3RoHfxVMGw= X-Google-Smtp-Source: ABdhPJzrTfklxaSSBTR8o+ZBC1oHW9f96Oji6w7QNIAlRy8nPBMkGuT4hFSGKlLDe/NttJDw6sBhww== X-Received: by 2002:aa7:9dc7:0:b029:19b:178f:84d7 with SMTP id g7-20020aa79dc70000b029019b178f84d7mr1393014pfq.70.1608084121054; Tue, 15 Dec 2020 18:02:01 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 01/15] target/riscv: reformat @sh format encoding for B-extension Date: Wed, 16 Dec 2020 10:01:26 +0800 Message-Id: <20201216020150.3157-2-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::42a; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x42a.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 --- 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 Tue Nov 18 06:06:13 2025 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=1608084252; cv=none; d=zohomail.com; s=zohoarc; b=kjiiIVveiiu3b6B8anI/RTRURNuxar6+kxspgLpeSFhZIrBp/lQunldTIP/NlFGiXkR39WI4x2J1cOomaBp1VEGu81DB3UQ/E5fXiD2QtgkvxVLFcpKIrYKhkGmlb6d6LP8O8w5BppJX8zR6eTkJ8UIk3P4qVW2Cs50wUIVu+GI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084252; 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=h0SIXfhlN2izVzAWt/OYZgz+lxvHF+H1Hc1qhXOYZL4=; b=j/iWaoV9akJPaj9Ai+HaY547AeDN/mq7jduaFSz4eLx3FPRRNBoZwWx1iEpjC0q7WUgnLdc14PkXBFNO3kNrmqlEO5EIq7rpkJFUs8w6KNsIeT2aLUcIGWmM+mcK6mL4228niU1pGu6a08+CXUHyxP6WP80EDwDqptU92zSZ7Po= 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 160808425213965.74250873795074; Tue, 15 Dec 2020 18:04:12 -0800 (PST) Received: from localhost ([::1]:33688 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMAj-0007vj-Ib for importer@patchew.org; Tue, 15 Dec 2020 21:04:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54340) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM8o-0006BV-HS for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:10 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:43282) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM8m-0000so-Lh for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:10 -0500 Received: by mail-pl1-x633.google.com with SMTP id x12so11582800plr.10 for ; Tue, 15 Dec 2020 18:02: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 a13sm289150pfr.59.2020.12.15.18.02.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02: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=h0SIXfhlN2izVzAWt/OYZgz+lxvHF+H1Hc1qhXOYZL4=; b=XULSBSByb9MWU7NPkIRa8aE/6bmu9Xfo9IVmHPSzz+HE0QpEgLnBDH+ZMt3tXvIko5 ID8fe6AyKWuUCsip8yCwXf+VsIPdN1yG6tBXoaz8+AAkh89DK8GSQJLmRuezLYt8NFe7 7FSaiWMGHYed6d9sfHqiFTXidLJ3oaW56Vy3RudpQbd3tsgLwUVE6C9ngwnW89Olh8Av gNvXCP/0eBa1ANwgr2GWktLDnwGPuHjmW9BIiqnQzFJImV15xsI0lW4BqJCOSR8BK4+Q n0Y4vHr2D7FX77bgIuhsqAZeEq8Yg42AN/U3zONfop/l1WPczWTybZzRKIe6Ce8QI2KE RTXg== 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=h0SIXfhlN2izVzAWt/OYZgz+lxvHF+H1Hc1qhXOYZL4=; b=UU8djno8e0+LQGT/0MZsziQch9Sv6Arv4eslHlR+qnfLDP3ZLjMk8Tw4OSOJb1LU1N Eyb8/iXAWsSE69xITz0TWZM0ii0ffZIubexHxdLQ1ngt6qswkpk7D66/IHoGZ89TuNVF 0oee1tD0LiOSauscuD4CDct6zWsUvvWkk6k/Er/5SGIqT7rpLpP7Sge+m72KS072sPGQ 0Gz/4FXpNwAfynCqzhSR3KKRkazz34DDRLREOwVUFPR2tNsl33by6ofyHUAuQ0ORAmnN ZWKrmjmnVjQfAyQ4SovjsUbKn3nfc9rA6ztIhga+BWEQfAjSuYDtpi5KkomiokD22vzn uWgg== X-Gm-Message-State: AOAM530LbbehsXZ+mzIR4OmDJlQJajUgKHx0DaHddGoZ1f7/cST9wrOd EaiRzZlJFuXmTahFV7dx6Wn0Nt4v01GipMWo/EA= X-Google-Smtp-Source: ABdhPJzHrTSfNCMaKL/z7JQE9MnQNPkxun7jdtCW8Ni/4ezX6t03OlpEfaf8jr2bK5zzkpP8JWkpQA== X-Received: by 2002:a17:902:c104:b029:da:5206:8b9b with SMTP id 4-20020a170902c104b02900da52068b9bmr20289983pli.46.1608084125958; Tue, 15 Dec 2020 18:02:05 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 02/15] target/riscv: rvb: count leading/trailing zeros Date: Wed, 16 Dec 2020 10:01:27 +0800 Message-Id: <20201216020150.3157-3-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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 , 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..fb6e16143db --- /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..398d4502a96 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, 32); +} + +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 Tue Nov 18 06:06:13 2025 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=1608084483; cv=none; d=zohomail.com; s=zohoarc; b=ipgtX4VYTgBvdQfu9U/sgDSynyV/GytRGTeKcSbt1oNZIFp9mat9x2TlOdUVObC0ir0Zok8e8vIGhtP+2djii5W8bv3g3/pSKEa9rPsoAYPbr990RypTvjrf7XiOq2N8mCXgrEeBipFD5/WZixsGCDw/Wgk7iVtzvBwbClTNgfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084483; 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+m9b7S/HCNQYgThPYEjzhjEhXwRJWLTbzb6xEyvAbI=; b=ndL+ZTM49idMngDJtR6mDmsElO13FkJvqWphd1Eq+5WtwtmZx+qX5k0tbMIa1PHI1AZCekCyA5fVHNGQr/mcebxrsMeHcuHORy2EDBLEo2wfV5E8DXRaxFOupCvX5WgFtnPWrO6tTF+44J7LP+/GUTXjDidnFz5Zm2IkEBpi8ZU= 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 1608084483271317.5554916017452; Tue, 15 Dec 2020 18:08:03 -0800 (PST) Received: from localhost ([::1]:42302 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMEU-00036a-6j for importer@patchew.org; Tue, 15 Dec 2020 21:08:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54370) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM8s-0006HN-1a for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:14 -0500 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]:50309) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM8q-0000tN-Da for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:13 -0500 Received: by mail-pj1-x1030.google.com with SMTP id lj6so641240pjb.0 for ; Tue, 15 Dec 2020 18:02: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 a13sm289150pfr.59.2020.12.15.18.02.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02: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=C+m9b7S/HCNQYgThPYEjzhjEhXwRJWLTbzb6xEyvAbI=; b=lKKHXWGMrVCd6hlYYBH/zRPIXEe8nNcH3e9K27v0pGXQly2wgrCy6iw901VUjuLqRX XiWpYoqPK3RNoqGJl5e/NfDIdYYgJmSR+BDopexdRXtEwkVl3kYEdOZ4kGu9oKBFbimO N2wMS5R3ZDqxjeW/nQXjbqLJkU9Nr2RpgNHohYtI80kjX0HbyoQY0QoL5YcCBRKKdcRM 8T2eO377z+vSMB04++5zfZBbC3QqAgRLj3gA4dN19xTUs5BeI1y9aA9c7PKlDYc4PMCm 8+HY7wuAHtJAzpwsuBhGG6X+o6MgnCGrygPb5K95Zkky6bwDcg9ALEEqSspzWW0VGy3c pN/g== 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+m9b7S/HCNQYgThPYEjzhjEhXwRJWLTbzb6xEyvAbI=; b=U91xGBbup9yuE/bdNxcEJflu38PXXmGGj0OnLPb3d7EatUM/iWn3HPWFE6D6YXeC51 S5YLzb1c12Y7iMq900vQvWFgiDdLMDTt4GZTN0Dha5/skAL44phYaid+sUzC0v/++t2X 1TqEZtcP4zDCfYE89kYDzdV5EDFZF4Q5Ido+2paDXb032QbsiV9PZK8sTL10pNvtxgAF OBtyAuvrLqLBx1fPuw3PoAOfMbHc8/38t+VnSH+3furOZvUuVmZCv+gLM/M1+0D36L3I NUNZRGdSoypTxz/1/N+0NMiNgd+CQomvs5q64EVWKw5OVx7REVVOmZWEfgiZI0LjoZNb sDvA== X-Gm-Message-State: AOAM53243A8c1yetVOCxnFpT5zfbYR5iZ/roOPK6kdZbSzoGENw4IXVX uEfuo4WdfoOeXwLJN0fAWYFzSCTxI6wW+wWg7x8= X-Google-Smtp-Source: ABdhPJywkLYd073lwUMTYs5G+eYp4NFcIfQbPY8+tnnwMOSkrPTs1j7JQXlJKPkfC9lMGET2QXpuKQ== X-Received: by 2002:a17:902:6803:b029:da:1469:8945 with SMTP id h3-20020a1709026803b02900da14698945mr29402845plk.15.1608084130860; Tue, 15 Dec 2020 18:02:10 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 03/15] target/riscv: rvb: count bits set Date: Wed, 16 Dec 2020 10:01:28 +0800 Message-Id: <20201216020150.3157-4-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::1030; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x1030.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: Frank Chang Signed-off-by: Kito Cheng Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- 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..00c56a93151 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 +pcntw 0110000 00010 ..... 001 ..... 0011011 @r2 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 8fe838cf0d0..ac4d8395a45 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 +pcnt 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 fb6e16143db..f5930f2ad53 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_pcnt(DisasContext *ctx, arg_pcnt *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_pcntw(DisasContext *ctx, arg_pcntw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_unary(ctx, a, &gen_pcntw); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 398d4502a96..4c9eb86e630 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_pcntw(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 Tue Nov 18 06:06:13 2025 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=1608084271; cv=none; d=zohomail.com; s=zohoarc; b=e0MtYIKDe0UMU4GyCt+30RMfA/bNLbBQyFs4ufnlPWSpSQKUD/PDku7Q/+2xE59JHD/R45v2rNKL+J6+mdL1EO05swgGjFFcgOseeKoYIYCn0Enz+DR2RiJf7ndMl2lJdl25V7hh4qsXagqvY0nFfsKDx2lhmn5dzC/8UvckKkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084271; 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=u120+DVpg45n1ziD1lZqn1EL9cn7+DYhSPkDIbFuH6U=; b=nQ+SKhE9Dsw94rqAwGm/TEMgtqJYQMrnvDP7WT2G00U3HeIFprY/fQ/0opMlAW3OOBLR7kYUasCleXSakeyehz5lkMVwuBXByCbuaFiRpRHo4rT4+q80Rd7tTL5MthWkmqKjCMl1XM3NFOTnB1ndRDAMVqwWR2XDiPV4ewr6j50= 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 160808427182075.43901265943919; Tue, 15 Dec 2020 18:04:31 -0800 (PST) Received: from localhost ([::1]:34416 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMB4-0008DS-J7 for importer@patchew.org; Tue, 15 Dec 2020 21:04:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54438) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM8z-0006UP-Uy for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:21 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:34070) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM8v-0000tx-E3 for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:21 -0500 Received: by mail-pf1-x42a.google.com with SMTP id w6so15648263pfu.1 for ; Tue, 15 Dec 2020 18:02:17 -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 a13sm289150pfr.59.2020.12.15.18.02.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02:15 -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=u120+DVpg45n1ziD1lZqn1EL9cn7+DYhSPkDIbFuH6U=; b=PrStDb81pmqcNxGAmmYLN8+gsHWA1md+ej9k6K7iBlzf5WhNR/8WqXYG22heHzHcAT vVgnxn0dNWT5vRrjOgCgNKBhwI8MYtgmcHdd/bT5/7sYqbEbVmCxUoZjLkbSbV10sIql P6Gr4xU1J8ABXtW+hTYsyrfnoTY5UAsCcRC8c5ZrfE+NVGZeoGeYMb9e38/dd1cmrLrm OlV+ic6OIIgOojq4v7gq7MvYbBwPbDh+zbkrY93otVFT/eiyxbzJBuBuU42cwenEQt/N H4ckE5re0vmmYop5AWIE7zNtctMKWzmBMtPy/2aCmBLnR2rohzmG2TP6IDw/Y0w7cg/k 1xfQ== 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=u120+DVpg45n1ziD1lZqn1EL9cn7+DYhSPkDIbFuH6U=; b=JDGnbALN5J+LEau+jnGhY6lI76wOGMOCr3uSuU6YNTnUsWRMK7jdhbd4+VAwtzBFed x5oZxVgI28vfB/cQFBBZFbmjIm5TT5xXFch36XFJ7tmVwWshQQX+ug7fsKOBAj1L8I05 yi67+o3iMbfu3NZkQUagvHGwwfLJRRfx7AUchYf0hW9omO/pCshDRp9rslBo03Peiy4a UYCupy+BxGfKyciJ8y4lk+mI/+T4is92cjJj5Ympl+MduIp0D1HXi6YnLxIraaIS2zO6 d6flMxRfY2Fknj0U0p1B081g1Qhiw5hzIaEW1tkeb9BmeY5CtAY/6xMPnl4RXdj5O/Ub aIdw== X-Gm-Message-State: AOAM530VeoaNkj5DDrnbrq2/PsjXj2Hfa6s/KVFbIa1aTHm6hQkPwaG+ b/69PsH0ONusj3Q6xJ6tEEBgtkNQpg+b79BqPaQ= X-Google-Smtp-Source: ABdhPJx7mww1ynzUf4y1DmgMRSiKQKDYxPSf+QzNDtvk+X2VveXCX9QH/4gr98pREwXYeHE19CFaBw== X-Received: by 2002:a65:4582:: with SMTP id o2mr31278783pgq.97.1608084136071; Tue, 15 Dec 2020 18:02:16 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 04/15] target/riscv: rvb: logic-with-negate Date: Wed, 16 Dec 2020 10:01:29 +0800 Message-Id: <20201216020150.3157-5-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::42a; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x42a.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 --- target/riscv/insn32.decode | 4 ++++ target/riscv/insn_trans/trans_rvb.c.inc | 18 ++++++++++++++++++ target/riscv/translate.c | 21 +++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index ac4d8395a45..85421dccb99 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 pcnt 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 f5930f2ad53..6016ceefd64 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_pcnt(DisasContext *ctx, arg_pcnt *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, &gen_andn); +} + +static bool trans_orn(DisasContext *ctx, arg_orn *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, &gen_orn); +} + +static bool trans_xnor(DisasContext *ctx, arg_xnor *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, &gen_xnor); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 4c9eb86e630..fb0b2fd0728 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -711,6 +711,27 @@ static bool gen_arith_div_uw(DisasContext *ctx, arg_r = *a, =20 #endif =20 +static void gen_andn(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv t =3D tcg_temp_new(); + tcg_gen_andc_tl(ret, arg1, arg2); + tcg_temp_free(t); +} + +static void gen_orn(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv t =3D tcg_temp_new(); + tcg_gen_orc_tl(ret, arg1, arg2); + tcg_temp_free(t); +} + +static void gen_xnor(TCGv ret, TCGv arg1, TCGv arg2) +{ + TCGv t =3D tcg_temp_new(); + tcg_gen_eqv_tl(ret, arg1, arg2); + tcg_temp_free(t); +} + #ifdef TARGET_RISCV64 =20 static void gen_ctzw(TCGv ret, TCGv arg1) --=20 2.17.1 From nobody Tue Nov 18 06:06:13 2025 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=1608084282; cv=none; d=zohomail.com; s=zohoarc; b=ejWysLsYc8UOnBCTyZiDuNJdnmPEaMzMSOdH+lNYlszt2JKXZQ/fOZ8V7PfL4UfvfL8/65lsHHX9iBgF4xhGmXKKSAkvkz5CajRi48gFkDQIWR7UoeIMhwE0B0LfYw1RXFQjLzo6krfy0to45ChRBlAJOkt57Qh41raKoC0qheI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084282; 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=6kltOaUaQM8Up9UZKk3VgaYZ0eQi7w4XGfhC/ez/hIw=; b=RRavA7W4d8W9BYX4B6dqs8WThKsg1K8v76XqNDTzrRlqiyzHeZt7zsJA+dO1pzKXJBD//ptusLMALQ8HQfbZRuP9nJuJTl8FU8+PkQc3j+A4zL25b1DexZ0+IKNhBlPUxUIVb2wCDrZi+E9jYFm4ojsy8Psq8yfTEiX7dGZa+ok= 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 1608084282591171.87256052651753; Tue, 15 Dec 2020 18:04:42 -0800 (PST) Received: from localhost ([::1]:35372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMBF-0000Ad-GQ for importer@patchew.org; Tue, 15 Dec 2020 21:04:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54546) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM9O-0006eM-FA for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:46 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:36380) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM9I-0000vv-1j for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:46 -0500 Received: by mail-pl1-x634.google.com with SMTP id j1so12064743pld.3 for ; Tue, 15 Dec 2020 18:02:38 -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 a13sm289150pfr.59.2020.12.15.18.02.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02:36 -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=6kltOaUaQM8Up9UZKk3VgaYZ0eQi7w4XGfhC/ez/hIw=; b=YoeInQIkyQjd7attGxhU2baIz54KpV1ZiDON/33oD/KYuHvbEj54WJgP5TJaBoKBcX 54E5vrd+6kZr3uD8nIJPxo/3HrRsVh5+H7AEZdTE3rUG0GwJ552to3PzxHRYDBRZn1rK SHBqgxKvTtMlLE75zXyKknN5pWOKz+gHe7SkxdhfKsPRiA4UBvTC4gTe44vSLWV2EihT h5Mhl4snhbaXnrIVo0mrPxJ7cfrb4ZiHwEQNF3MCeXVsNJnvf0C8rat/19wh8hHUmUXi H/odmSamYr7p6K5+bY6sAxD8QecgBDlfhTBWfn2QhMhNtl3D0XB8JwjupuX735D0ixZV 5aIw== 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=6kltOaUaQM8Up9UZKk3VgaYZ0eQi7w4XGfhC/ez/hIw=; b=SXLNeEb92inaWxawev71EJZkn0qJRWkwwLFtr08XPuIPKextlAOo5bThXoHZnIr1EQ WhrVxpNioHdGkjGiboXu2WGnUYZDAq39uM5XHCk86Js97CPoWYu5QoMgBUp7/ayyXX3/ sxppOOA2+L0V21mhX0asEwuk04YpsnP9DeL5T/8q68YdVGX6RcoK4diw9JXG/XMOI5/k JhxqAPTDcnkOkfXD6OKWt6yWp/7m/iAQ6rT5EMKzJ4nQYAe+BJvRYJ61retfjlSXYykN SR5FcDc6krlSTsglIcAKMyaEkxgBy4bhkSVB+vRzZAkHlNmDbF8Ov28+YMAe3bi/bO2k zUTQ== X-Gm-Message-State: AOAM530rVJpUXkxLOUL2cHT0TtOsqiR0c2mWRE23EvgTwqEbZo3Uu9z4 jWvEnHSOnJpNLm4DJ4NvEga91zmSMvI1Et2O8dM= X-Google-Smtp-Source: ABdhPJydicypKK/dVD5sYXiJb7ZareXrDtpM9mqy7q2Ah9ncRXoz4j+w0zEaaP6DcJULoNLkLRelyg== X-Received: by 2002:a17:90a:ad82:: with SMTP id s2mr1161392pjq.167.1608084157339; Tue, 15 Dec 2020 18:02:37 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 05/15] target/riscv: rvb: pack two words into one register Date: Wed, 16 Dec 2020 10:01:30 +0800 Message-Id: <20201216020150.3157-6-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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 , 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 | 41 +++++++++++++++++++++++++ 4 files changed, 77 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 00c56a93151..fd7e0492372 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 pcntw 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 85421dccb99..c337aed8ca3 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -602,3 +602,6 @@ pcnt 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 6016ceefd64..3da233047a9 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, &gen_xnor); } =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_pcntw(DisasContext *ctx, arg_pcntw *a) return gen_unary(ctx, a, &gen_pcntw); } =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 fb0b2fd0728..7b427a9caec 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -732,6 +732,30 @@ static void gen_xnor(TCGv ret, TCGv arg1, TCGv arg2) tcg_temp_free(t); } =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) @@ -753,6 +777,23 @@ static void gen_pcntw(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 Tue Nov 18 06:06:13 2025 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=1608084682; cv=none; d=zohomail.com; s=zohoarc; b=ia/oz1DdDwWuOsPRdzJI0+p51Scq5bhcKQ8sO13iBx4jf6WbBCTZZsl08fuZlzm2w6AuYqTHyFp/rdjD5UwvNsnQCzOFcoBZ0fhcRICkRLNF/ITjpOTZp+0aX9HmfTEnun+EJ5DDgtX+m4VuEJVrIIlY3RkNQcBOneqZOthGfMo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084682; 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=xANIL9U+q7VdaNhhAev9PcT5i/fCcTrRk81O4BPTh6g=; b=EVEGO/g2CFgV5iobqjqzxwCmixWxXkyRbc4+inxBr1vZNMU8MZ9MxKTq57iR9W3hNq9jMLnEb0x3A25qXyrB4Oe9IJDhxYvNPrnY42GrOWTOSv0BLqs26g+9xaicFdc8sLH7fI4PvyzlIjJouJ7vWkhUrQpNOncqxNPDsV2Ikfg= 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 1608084682690458.916881086389; Tue, 15 Dec 2020 18:11:22 -0800 (PST) Received: from localhost ([::1]:49194 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMHh-000608-Gz for importer@patchew.org; Tue, 15 Dec 2020 21:11:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54592) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM9T-0006lA-Rq for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:51 -0500 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:43634) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM9P-0000wW-Dl for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:51 -0500 Received: by mail-pf1-x431.google.com with SMTP id c12so15606551pfo.10 for ; Tue, 15 Dec 2020 18:02:47 -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 a13sm289150pfr.59.2020.12.15.18.02.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02:45 -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=xANIL9U+q7VdaNhhAev9PcT5i/fCcTrRk81O4BPTh6g=; b=UilA1OcnOajy4PQmYxm7BEu/4uDCWbkBrAJFEsQdrrN3J9fPKu5NrBh4RxzuvOnDJF 1dRB4O30VL6H2yOVh+gJi6pqYkiyUqpR2rnSMVrKGtwL4uCalhErSEq1AvKGG0XTRbvH IPfNip9/Z5XTiHwyhW6+7W8p9vikVB8AgfI0RJH4vbYbEvivmgq4HshqPjHSmIFrR6e7 8Zqq8ggLA4/lTZnN60wbOcyVVPRTS958LF0esa3oWaXm4VipjmFFjpzFTj6P8YUCQ02W C+hADvjl+9kq/Wt0TCD+NGwegaoYv54Hc+MAxurQLXnuGC7K9Ibv2z+1o7mxyckMMveN DkCw== 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=xANIL9U+q7VdaNhhAev9PcT5i/fCcTrRk81O4BPTh6g=; b=q+OLjCiUHWsbVybfRMk4BIIGsJNxwo2KUhdO1JVIHkfeKH/iu7AgjLc8eEgTcoWdOu 7PNvcl9f41g3EyZ28/uUGhl0pSHZcRTYnDR157GT/P5wyhq8iSYsFS1Q9ndU8pp2TPhC irZ2I97H716ewDKjDdbdUIQCfeX9cqGLXlfK9BXwIGkHnXGV+4xZCKbZhrPgI7j6Wgt0 b4av1bnfFzl8rQcmKvDPrG1V0IzOp0EAq6Lhvzgc6Dn8CVrpALY5FJa3GYCyjOXfxh/v e/NJZNFmiEdKe98SrP2YnnlNpAScVCM/YFw5BBGRoi0WfAeaRZKA5+F20fiHgfNMnf3w eNfg== X-Gm-Message-State: AOAM5313ysGaoU7ltlEOlMCZR5ZoDIN25QPdLVUacTNjExWcamdVbjh6 26ACqluC5VKt9D6evB8fyirzrKCz7GI1t5F7T1U= X-Google-Smtp-Source: ABdhPJyc39VeUpWJF+7G+/jbt+4nSP7zkMKZa0miJTujccRlLYckguZ5ZRr/j6P4enz/orYaPtA6/g== X-Received: by 2002:a63:c908:: with SMTP id o8mr8485628pgg.124.1608084165906; Tue, 15 Dec 2020 18:02:45 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 06/15] target/riscv: rvb: min/max instructions Date: Wed, 16 Dec 2020 10:01:31 +0800 Message-Id: <20201216020150.3157-7-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::431; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x431.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 , 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 | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index c337aed8ca3..0d6a8a1c0a5 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 3da233047a9..bd66c2ad84d 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 Tue Nov 18 06:06:13 2025 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=1608084696; cv=none; d=zohomail.com; s=zohoarc; b=D/W4B/HYHjuzSTRJhdOAOSbW+5ZYOpYZoYNNgbX882HSqav/jN9i60xxrVhC7cht/sIKunFUBqi+AQ7zUDUdJ0+id00ouG1nt/+/0taI0ffbR0fmQsUhNq3kogeGt6X3SGsw+VhMeW4Oj1Gf1IqFq7iY9IQ7sqYvSQZN64tbpPI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084696; 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=m9+UgyEv7/CO9wcFF/2mGY7NcDjbZFpPGSL5WyqYbRw=; b=fmVzutYtvw9PXhXtHoW3lSotbZMuPaYaZICSlINWlYOBAUeiaLvDqzXWJK+C2Hzr3JWxvnnqUMb8tNacob843mahlky5U/efHLAw45HvVqgx5ocohhfMa9zk15H1fHMAxHFI8F3lbRWlDsNVPRvYlWe/cd330rILP1G7rwQTSXQ= 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 1608084696846860.9294365280773; Tue, 15 Dec 2020 18:11:36 -0800 (PST) Received: from localhost ([::1]:49928 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMHv-0006OQ-Qg for importer@patchew.org; Tue, 15 Dec 2020 21:11:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM9W-0006oo-Ga for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:54 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:35371) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM9T-0000x1-OT for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:02:53 -0500 Received: by mail-pf1-x42a.google.com with SMTP id c79so15618843pfc.2 for ; Tue, 15 Dec 2020 18:02:51 -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 a13sm289150pfr.59.2020.12.15.18.02.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02:49 -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=m9+UgyEv7/CO9wcFF/2mGY7NcDjbZFpPGSL5WyqYbRw=; b=jsfAMlRog6lr6cdtoc9VTj6pNRdzO4yqrLP5tqp+NF246t74gF8RvEeCtItq/IbVkD HUvpdmhBKRrRMz9LXReWPKsnIX76OmS0//ah+cJ+c54FhRWMnYqOcBtiaLdXhgOLM3wG AWDjE2wgfDuiWcDQ6AYp9+quGjTDBT6Gv3mBtqIDcp7tn1LDROjkWd+29y3ePh1h+xs9 OYgcz3TAxQPqOmSjAhSEwmkdlfCOHB3F76AAJ8M+Rr9527yLqJMYY4rvA5Uaw7ZJpkoK /iFpSUsZDpmpr0KLIC+pXpWEeN1ItmOSur/r8f6Ur6SoTqhJq2aAI3oMIlE8jBQ2Ach1 Bg0g== 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=m9+UgyEv7/CO9wcFF/2mGY7NcDjbZFpPGSL5WyqYbRw=; b=YPzTWdrtKQRpNCLK8/1r2QNytstdeKzFcGnBu9v2m6bZB1n/+T8W8mBhjl7buAa1uJ dtWyMnCXpfH3FWPQYdwceofN8LuzfH+DcoOAfeJmblbORTp3YhwqEX357EwXRvlka0bz i2zzsCJDPbJzsOWXt7nVIN8GtQ5GDbifsUR9BYdjBWaSIOX5I9y57W6IVR0Joz14Pw1B CtRS5g/78meXdzJzaBktR8ZzpMP8z50BzEwvNxIHP6sO9kl/hbpQ7f0o3hZEZwIdrKD9 wPIHPOm03MEBQvLrNo/j6FhzhntS6Vu8OTxZdyHIROTffw5uz5tKwLfBW6dayeTP1O/C gQcQ== X-Gm-Message-State: AOAM530/7VSUczSQaODczfajkyCMQjU6SZ75+d8a2xkglXHOk0sXt9+X AldGC/o3hE7vIMeA+lXdacjYH99/injwd5CUoTo= X-Google-Smtp-Source: ABdhPJwzeBY1gBzUwhdqUUFhWehU/YRnYD79VWMt1PES/Cywi7zIbVmqItA88iu2AbVoQdD9oiEFMg== X-Received: by 2002:a63:2406:: with SMTP id k6mr31526592pgk.453.1608084170397; Tue, 15 Dec 2020 18:02:50 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 07/15] target/riscv: rvb: sign-extend instructions Date: Wed, 16 Dec 2020 10:01:32 +0800 Message-Id: <20201216020150.3157-8-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::42a; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x42a.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 , 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 | 2 ++ target/riscv/insn_trans/trans_rvb.c.inc | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 0d6a8a1c0a5..4baafed21f1 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 pcnt 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 bd66c2ad84d..5ea0f0ff81c 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -95,6 +95,19 @@ 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 Tue Nov 18 06:06:13 2025 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=1608084874; cv=none; d=zohomail.com; s=zohoarc; b=XFY02u3XmvoCElAgjgkzFAgKperQkAeW4qh9ozVu7np3pCGaTmPZbmMJ6uNGaLXBuTNDHN4LaFcX4Zz0i3CvAXHbIimIsJu28rGhOiM3HzcldXMS9aoP2wSMeJloBqdWZ1oMmknQcWxcdbH6SVmYBb9r0AZ79lDbg5Xo947IYDs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084874; 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=xtiW98CkDaHIC/Mr1cwMxJaKMmWvgoxdzkvNQRFBr7g=; b=SqtXWtSUqsfcN5DQHo2pdnoiUwRTORWKwnAtScCZ8wn0i5GoooX2jbt/MTEvF/uY425OL4JHnkn5lBuosgQLQpHqVCFv4Nqun9Glrzj0LPG32y1zczx+JIbE/InjSDlj+kgQqLmxRFBff6kGWVAgZX7SvXFJBnPC1MK2C1PTwjE= 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 1608084874691913.9667226303263; Tue, 15 Dec 2020 18:14:34 -0800 (PST) Received: from localhost ([::1]:55900 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMKn-0000QE-Dg for importer@patchew.org; Tue, 15 Dec 2020 21:14:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54748) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM9c-000732-Rd for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:03:02 -0500 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:37670) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM9Y-0000y3-57 for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:03:00 -0500 Received: by mail-pf1-x432.google.com with SMTP id 11so15617556pfu.4 for ; Tue, 15 Dec 2020 18:02:55 -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 a13sm289150pfr.59.2020.12.15.18.02.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02:54 -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=xtiW98CkDaHIC/Mr1cwMxJaKMmWvgoxdzkvNQRFBr7g=; b=XLkQzjBjsdttMahBoMbRT7j2xQkPpCxJoxAr0BKVFNynlHNS7zp2vymsAvN/yyX96n p9S/e16mLKg8XyzGWydLlFqB+Nqp9BEP4VApLUjI2RRONpy5YzQzKreGcRAqIR1pQ7q9 iOjAly6PTbELNhQXqUkgIylRU5zMTeYzxueeuZUB6UytMwHbGM4LRa3zNz74gVjY0mSg LabEjt6f+ZiDTyl6zzEYos53owILUHTEkVis2F8khKAaB15nXNkMz68y7sudcoXDUWrc i4RUUNvxfAyCXv2sYDXphxrPq9VxbSCKmOzo67KxkOKKVJpzGfrLzXW4tVIXtK4fk7pY 34WQ== 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=xtiW98CkDaHIC/Mr1cwMxJaKMmWvgoxdzkvNQRFBr7g=; b=KYMtqXJPbKBlK05pa/VyhOs3bG/9481TJXpoXeEwnlruvuIuBagTP4jV9i37bfqBzW cpwJ1GeOynbOp4HuI79sPFMHdBkQbfzkQGwc8dF6zIoRyi8TH87LBKu3s3KprhQB4bf/ 0+18Cwslq+adtXoEOQcrT/WvhqM4djYarG3j23um7xgDZq+7PyKf48vk/X2PXFjJV1dr DClNIjjd3b/K8QvDt9hkcVdfQzON/gpmj3tuYpg2cJMIbRWQHD1MlMzRj0K+csjCOInp nY8hlblkF14YtJCCozEQjVA2F5AYVZqv02peNsmJiwa9mp5dWBFRL/7tKEEkgw14gqf/ pgIQ== X-Gm-Message-State: AOAM531lnNQyxgbmns5oAGR5XqgoG2rr9Hj+DZCfEXFekqVor8t7MF2W 8tm3gLuQ16uZz4mdh8A9JA5RitFHqGA8p73sXUE= X-Google-Smtp-Source: ABdhPJzv7PwfREOv809Ejc6C4JinsjNT1VHK0JBkeDY4valvwLxrtgUY5qKJ23sGyOvKMgPMuSbbrw== X-Received: by 2002:a63:74b:: with SMTP id 72mr3735623pgh.4.1608084174612; Tue, 15 Dec 2020 18:02:54 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 08/15] target/riscv: rvb: single-bit instructions Date: Wed, 16 Dec 2020 10:01:33 +0800 Message-Id: <20201216020150.3157-9-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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=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 --- target/riscv/insn32-64.decode | 8 ++ target/riscv/insn32.decode | 9 +++ target/riscv/insn_trans/trans_rvb.c.inc | 90 +++++++++++++++++++++ target/riscv/translate.c | 102 ++++++++++++++++++++++++ 4 files changed, 209 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index fd7e0492372..e2490f791b7 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -94,3 +94,11 @@ pcntw 0110000 00010 ..... 001 ..... 0011011 @r2 =20 packw 0000100 .......... 100 ..... 0111011 @r packuw 0100100 .......... 100 ..... 0111011 @r +sbsetw 0010100 .......... 001 ..... 0111011 @r +sbclrw 0100100 .......... 001 ..... 0111011 @r +sbinvw 0110100 .......... 001 ..... 0111011 @r +sbextw 0100100 .......... 101 ..... 0111011 @r + +sbsetiw 0010100 .......... 001 ..... 0011011 @sh5 +sbclriw 0100100 .......... 001 ..... 0011011 @sh5 +sbinviw 0110100 .......... 001 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 4baafed21f1..c697ff5c867 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 +sbset 0010100 .......... 001 ..... 0110011 @r +sbclr 0100100 .......... 001 ..... 0110011 @r +sbinv 0110100 .......... 001 ..... 0110011 @r +sbext 0100100 .......... 101 ..... 0110011 @r + +sbseti 00101. ........... 001 ..... 0010011 @sh +sbclri 01001. ........... 001 ..... 0010011 @sh +sbinvi 01101. ........... 001 ..... 0010011 @sh +sbexti 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 5ea0f0ff81c..43e9b670f73 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_sbset(DisasContext *ctx, arg_sbset *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, &gen_sbset); +} + +static bool trans_sbseti(DisasContext *ctx, arg_sbseti *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, &gen_sbset); +} + +static bool trans_sbclr(DisasContext *ctx, arg_sbclr *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, &gen_sbclr); +} + +static bool trans_sbclri(DisasContext *ctx, arg_sbclri *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, &gen_sbclr); +} + +static bool trans_sbinv(DisasContext *ctx, arg_sbinv *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, &gen_sbinv); +} + +static bool trans_sbinvi(DisasContext *ctx, arg_sbinvi *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, &gen_sbinv); +} + +static bool trans_sbext(DisasContext *ctx, arg_sbext *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shift(ctx, a, &gen_sbext); +} + +static bool trans_sbexti(DisasContext *ctx, arg_sbexti *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shifti(ctx, a, &gen_sbext); +} + { /* RV64-only instructions */ #ifdef TARGET_RISCV64 @@ -141,4 +189,46 @@ static bool trans_packuw(DisasContext *ctx, arg_packuw= *a) return gen_arith(ctx, a, &gen_packuw); } =20 +static bool trans_sbsetw(DisasContext *ctx, arg_sbsetw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, &gen_sbset); +} + +static bool trans_sbsetiw(DisasContext *ctx, arg_sbsetiw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, &gen_sbset); +} + +static bool trans_sbclrw(DisasContext *ctx, arg_sbclrw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, &gen_sbclr); +} + +static bool trans_sbclriw(DisasContext *ctx, arg_sbclriw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, &gen_sbclr); +} + +static bool trans_sbinvw(DisasContext *ctx, arg_sbinvw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, &gen_sbinv); +} + +static bool trans_sbinviw(DisasContext *ctx, arg_sbinviw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftiw(ctx, a, &gen_sbinv); +} + +static bool trans_sbextw(DisasContext *ctx, arg_sbextw *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_shiftw(ctx, a, &gen_sbext); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 7b427a9caec..ca176709674 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -755,6 +755,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_sbset(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_sbclr(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_sbinv(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_sbext(TCGv ret, TCGv arg1, TCGv shamt) +{ + tcg_gen_shr_tl(ret, arg1, shamt); + tcg_gen_andi_tl(ret, ret, 1); +} + =20 #ifdef TARGET_RISCV64 =20 @@ -832,6 +874,66 @@ 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)) +{ + 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); + + tcg_gen_andi_tl(source2, source2, TARGET_LONG_BITS - 1); + (*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_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)) +{ + 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); + + 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; +} + +#endif + static void gen_ctz(TCGv ret, TCGv arg1) { tcg_gen_ctzi_tl(ret, arg1, TARGET_LONG_BITS); --=20 2.17.1 From nobody Tue Nov 18 06:06:13 2025 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=1608084577; cv=none; d=zohomail.com; s=zohoarc; b=befzfL9mMjUJOed7VSLp+F4f0DZ5vokw+m688D6itmrwJAACLzkvCVRNX6cSG5otqho6TWVUZHgwGHvtmDkyc/9pVKXux9ElmLjHGzQbUxsLB01XTFRi3YjHovAex1BlN+FaIu8SjHMLQ5ZIcPMsaxuM8kIyWXwzDRRTD5fkako= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084577; 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=eiTghjnWEsAzpHMW+REdOftMH4O8tJHHC5IsmbomEks=; b=NK20LlUKQ21XVl14SOikmy2fz1A4cBbA0IOAMTxcqcHOhrYcIH4el85776FbQVPu7Q6udHGxk0vxgCbKqnArbqO0K7DvT8Rbtuh+06t0+AwZAPCTtvlK6cUJkaG/FqcZ4nI4bkGAiC+7JMgpEPTsi8uWMjhQaCApTg4z4O3rfG8= 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 1608084577559408.5029784752621; Tue, 15 Dec 2020 18:09:37 -0800 (PST) Received: from localhost ([::1]:44962 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMFz-0004DR-EW for importer@patchew.org; Tue, 15 Dec 2020 21:09:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54770) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpM9e-00073K-AZ for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:03:02 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:55832) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpM9c-0000yr-00 for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:03:02 -0500 Received: by mail-pj1-x1035.google.com with SMTP id lb18so628457pjb.5 for ; Tue, 15 Dec 2020 18:02:59 -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 a13sm289150pfr.59.2020.12.15.18.02.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:02:58 -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=eiTghjnWEsAzpHMW+REdOftMH4O8tJHHC5IsmbomEks=; b=YzzricU8Lz2bG77irmvnd90OLlc/egD+vkuVe34p3KukF2k4MAbCkNucw7dT6cers3 ORwLRHGRC9hw+cpcXemmBZGLSwRM4Eo++0Ugf91ZtnSg48PVTcSiCxfSvXYnehJhuPz0 zTNH5vyoT5LIhxB8+DuKaOeA13K/qnrFVAYE4YR2n0GxboZPODHyzjZplqzCoyIx/ISB 0j8yn75wb4h51ldizcSqCWI7lhVH27Cwpqaf/cD0zs9RVeVLI8W+5DlzQ4nQcS8xDF/d Iw7Hpng3Gwx98f4kSQAEeOODn6AVKnSSSZczhrC8oLjyXc1Mijmnr4rmbUsAfw2Xn2Zz ipjw== 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=eiTghjnWEsAzpHMW+REdOftMH4O8tJHHC5IsmbomEks=; b=EqkIm6tbpVJS7XY0raU13uan9dU86hd0zQ7tydGjMunTAY1pvz+//YtJpI2La2FgEF KNDZ/O//EToIUFJ59e8Q1goqzPTIulOGqAUF607eLF4iRpy8IKRSDBodOLzSeN0NkQva fE5dvmuZ3+npNLucNF1NnvxrGoBsgKcuUjIi0vjTR1s5FYZHJspmLBFMV8zTQNh7+nUl eUV4JeEkLz5P+4JxT1d/J1G9aPN3iqAsrO846cyWWa9T8eHcAgaKzCVUdsbDm1WyV6bU EawVuu/abbGC+bR86DyT8P4ZLtKw7hP1ILzho3M8hEgDKOBzHZ0cOeJHgH2gLleUA4Ne akEQ== X-Gm-Message-State: AOAM533lVoW5weCigFGv2KYMuPUMjuDyg8UmYcMOgXvpglSmSZP366uA F8Hl1VEl+tU40p3Ba1/Za+RsFW1Mvo5VnC13qBU= X-Google-Smtp-Source: ABdhPJwaZrWJ2FirT6+/h+1PrcGVQbOmTAhFm3X7vGDkKcx4sKtUUewd9peF6Egn1abO0xBEWRkqjA== X-Received: by 2002:a17:90b:384c:: with SMTP id nl12mr1216689pjb.72.1608084178444; Tue, 15 Dec 2020 18:02:58 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 09/15] target/riscv: rvb: shift ones Date: Wed, 16 Dec 2020 10:01:34 +0800 Message-Id: <20201216020150.3157-10-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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=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 , 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 | 58 +++++++++++++++++++++++++ target/riscv/translate.c | 13 ++++++ 4 files changed, 79 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index e2490f791b7..6d017c70c74 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -98,7 +98,11 @@ sbsetw 0010100 .......... 001 ..... 0111011 @r sbclrw 0100100 .......... 001 ..... 0111011 @r sbinvw 0110100 .......... 001 ..... 0111011 @r sbextw 0100100 .......... 101 ..... 0111011 @r +slow 0010000 .......... 001 ..... 0111011 @r +srow 0010000 .......... 101 ..... 0111011 @r =20 sbsetiw 0010100 .......... 001 ..... 0011011 @sh5 sbclriw 0100100 .......... 001 ..... 0011011 @sh5 sbinviw 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 c697ff5c867..78ce4b11097 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -615,8 +615,12 @@ sbset 0010100 .......... 001 ..... 0110011 @r sbclr 0100100 .......... 001 ..... 0110011 @r sbinv 0110100 .......... 001 ..... 0110011 @r sbext 0100100 .......... 101 ..... 0110011 @r +slo 0010000 .......... 001 ..... 0110011 @r +sro 0010000 .......... 101 ..... 0110011 @r =20 sbseti 00101. ........... 001 ..... 0010011 @sh sbclri 01001. ........... 001 ..... 0010011 @sh sbinvi 01101. ........... 001 ..... 0010011 @sh sbexti 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 43e9b670f73..11b5439e703 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -155,6 +155,40 @@ static bool trans_sbexti(DisasContext *ctx, arg_sbexti= *a) return gen_shifti(ctx, a, &gen_sbext); } =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); + + if (a->shamt >=3D TARGET_LONG_BITS) { + return false; + } + + 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); + + if (a->shamt >=3D TARGET_LONG_BITS) { + return false; + } + + return gen_shifti(ctx, a, &gen_sro); +} + { /* RV64-only instructions */ #ifdef TARGET_RISCV64 @@ -231,4 +265,28 @@ static bool trans_sbextw(DisasContext *ctx, arg_sbextw= *a) return gen_shiftw(ctx, a, &gen_sbext); } =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 ca176709674..0c00d20ab1b 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -797,6 +797,19 @@ static void gen_sbext(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); +} =20 #ifdef TARGET_RISCV64 =20 --=20 2.17.1 From nobody Tue Nov 18 06:06:13 2025 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=1608084976; cv=none; d=zohomail.com; s=zohoarc; b=btJ1B2VfRuM7XzltfYVui9HZDpCxxeBktUqZfkW9MyR6HCUK9zc3k4i5D2unpvfkjLjOgaOMkpZBt5YfJ+DvtQz2avj0B4nF/g8jW5q5ZzZmJaIaCbfFMfbPG4doGsveylI5JOoDwaHaDazJuORvMbyKqvUVinLz4JjeUWnqs3U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084976; 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=jwt90askM0N+FSIMNOKGS+GZDK+252vo/sdulttaipM=; b=fEbIz0eBeg6HG63AiSamdJo0/sVOV+mziwOIbpEdgpyglgJXZoak9gsZsGRpM420P6yVkl7uagGcT44pZJlaQeG/YTcTMA+lbB9MFygF7WDqkeCrQQhOhxk7ikMYuKg/ZamvhN3h12BPq5uTOMyC8X2fAVIov6qDb02pfHjGuWA= 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 1608084976827708.3864503408789; Tue, 15 Dec 2020 18:16:16 -0800 (PST) Received: from localhost ([::1]:60266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMMR-0002K4-RB for importer@patchew.org; Tue, 15 Dec 2020 21:16:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55282) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpMB4-0000Vn-Nf for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:30 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:41010) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpMB1-0001AH-FL for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:30 -0500 Received: by mail-pl1-x633.google.com with SMTP id y8so12052999plp.8 for ; Tue, 15 Dec 2020 18:04:26 -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 a13sm289150pfr.59.2020.12.15.18.04.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:04:24 -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=jwt90askM0N+FSIMNOKGS+GZDK+252vo/sdulttaipM=; b=foUaviYXYy4C9DMBZl4AHeDHQrDdv0gKrVoGpMigIlvFJhN7j7fCgsKQNDViUJSZxb qh3vQJSqTwAiUHPMAASsrI5eJDkDexqoX0mLUICw1S5jsqi1EeOLgOv8Tyevjc5Kbi/t 62nRoGe4zgGzEZw1dW+ed80ie9E9r7X/butzh9EzW/0CpRkYboUoADzBdIDJvfEFNS9b paOhpuVNd75Uqq/jeZPgjVt3FfWFTF/GXWPRRM0CrUoKsgheFUg1/FBoha+8lFXWVDJn oairG3RPp83e6KpueLi7slkjDNYHqnwT2KupTsIdhQlPUCjbdz+dz47ZFiSzp19Drz8n aKNg== 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=jwt90askM0N+FSIMNOKGS+GZDK+252vo/sdulttaipM=; b=Ku4j/esvqiFXs07ues9Tdg9ciZjjcMsrqN4OYKDOhHj2e6VizdIUtQccBV7+8+9tsY IYMrrwvuSJ4cOsFQFajSDBMrqdTtERrpSZ8OvzVJOWfh/kphy5TfBcQYFJcHz988HlI0 cPdVa2gxSc0h1z2b3R5hHT2LjPZvQ443J8qbLHmjFF3ZfnmmTda+MMv+Lop40s4POtw0 bBiOWrB6ZUFP082ldvHtJwE8B/lupN2XMrszPmx/P7IGujfax+PfNq7/C0USR74AtirZ k4RZgLjr7MnCkMjQigY/p8FvcJ93DjsFMIQSXq2pMT7rnn8w5s2XWE44TWWP6eQLMwnA ak5A== X-Gm-Message-State: AOAM5301k7D3W2fbDrrt0oiAlqlIkYY5iCWNFN2T7yGRsy/117cPrmhd HP6ilO6zJ4pcWMle1fm6n3jGsegOm7vzaqMz7hk= X-Google-Smtp-Source: ABdhPJzBVmDUxRUZZMXyOsSUu9MaXom+M1tznWXeHYORcgiwJKKhGqQ5p+34b5DKxebv7NNV2YI6Fg== X-Received: by 2002:a17:90a:ce0c:: with SMTP id f12mr1213873pju.89.1608084264984; Tue, 15 Dec 2020 18:04:24 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 10/15] target/riscv: rvb: rotate (left/right) Date: Wed, 16 Dec 2020 10:01:35 +0800 Message-Id: <20201216020150.3157-11-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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 , 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 --- target/riscv/insn32-64.decode | 3 ++ target/riscv/insn32.decode | 3 ++ target/riscv/insn_trans/trans_rvb.c.inc | 61 +++++++++++++++++++++++++ target/riscv/translate.c | 36 +++++++++++++++ 4 files changed, 103 insertions(+) diff --git a/target/riscv/insn32-64.decode b/target/riscv/insn32-64.decode index 6d017c70c74..ac0634d754a 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -100,9 +100,12 @@ sbinvw 0110100 .......... 001 ..... 0111011 @r sbextw 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 sbsetiw 0010100 .......... 001 ..... 0011011 @sh5 sbclriw 0100100 .......... 001 ..... 0011011 @sh5 sbinviw 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 78ce4b11097..b4677293582 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -617,6 +617,8 @@ sbinv 0110100 .......... 001 ..... 0110011 @r sbext 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 sbseti 00101. ........... 001 ..... 0010011 @sh sbclri 01001. ........... 001 ..... 0010011 @sh @@ -624,3 +626,4 @@ sbinvi 01101. ........... 001 ..... 0010011 @sh sbexti 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 11b5439e703..433cc7f9fc8 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -189,7 +189,36 @@ 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_arith(ctx, a, &tcg_gen_rotr_tl); +} + +static bool trans_rori(DisasContext *ctx, arg_rori *a) +{ + REQUIRE_EXT(ctx, RVB); + + if (a->shamt >=3D TARGET_LONG_BITS) { + return false; + } + + TCGv source1 =3D tcg_temp_new(); + + gen_get_gpr(source1, a->rs1); + tcg_gen_rotri_tl(source1, source1, a->shamt); + gen_set_gpr(a->rd, source1); + + tcg_temp_free(source1); + return true; +} + +static bool trans_rol(DisasContext *ctx, arg_rol *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, &tcg_gen_rotl_tl); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -289,4 +318,36 @@ 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); + + if (a->shamt >=3D 32) { + return false; + } + + if (a->shamt =3D=3D 0) { + TCGv t =3D tcg_temp_new(); + gen_get_gpr(t, a->rs1); + tcg_gen_ext32s_tl(t, t); + gen_set_gpr(a->rd, t); + tcg_temp_free(t); + return true; + } + + 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 0c00d20ab1b..10b4142a3ab 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -849,6 +849,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 Tue Nov 18 06:06:13 2025 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=1608085111; cv=none; d=zohomail.com; s=zohoarc; b=Rg9mfAzKYyKHGTMrNs2z+H5Hvm3QKkF46rV4BAt6unRTQOw9Xv11ZxvNATpgLaUX5R592jdrYdRSg/3tvfFaf/8jwbZMdty+Mc31u24X+BCfaC7r2gsRP/QhaCtmaH4BETomNJ31AQ9abfhga12O9uN5p0dPdKFjWb4Sf25JbHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608085111; 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=6Kmnbl2LvKvDg+RA+K4UFMXnMd4G2mem+SvR6N8NTDE=; b=I2aBwmFF6Wtunk5NBm0MuprxQHrcfG8bUFFWnnlCYeLh8q6A3yuqJv56ymL2R4LxG8RzXW/KhDdwm83znpfPImp9RvmIFIMuAt2eAJZ40QJ8O8Esm9J3YhgTIFalnie2We7vShr/gY30fXYMVCFGhUedNDjpenniE4DBn0Ytx2A= 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 1608085111394639.6117473276995; Tue, 15 Dec 2020 18:18:31 -0800 (PST) Received: from localhost ([::1]:36324 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMOc-00049e-B9 for importer@patchew.org; Tue, 15 Dec 2020 21:18:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55476) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpMBK-00014t-Lp for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:48 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]:45430) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpMB5-0001Aw-Bq for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:46 -0500 Received: by mail-pl1-x632.google.com with SMTP id e2so4896012plt.12 for ; Tue, 15 Dec 2020 18:04:30 -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 a13sm289150pfr.59.2020.12.15.18.04.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:04:29 -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=6Kmnbl2LvKvDg+RA+K4UFMXnMd4G2mem+SvR6N8NTDE=; b=HgzaWgAzeIqbOSZU08q/In/A3i0qW+y3OTMv98fFKAo+bxWXdw37cDbGd++2j+7tSK 0oze3H7S66qG2p1E25Y9TIq8//f4WwjY84mHF3YKZ3HvfUSJr2UKZ9TzWEzOcN+h33tQ af3CqGkjdrBU+DPow2b0jCjWYMCHVuLAHgw5MBqiOFRPjWu8N9ATPkp67/r8Wn4R51dC h6A9BQQqayodKiV3AqYTVwSKREQnghMZ9RE248b9V/nWzLv/n+DxnEvlVCrthnIfroxM QCHoNBG91nuz8qKcLL8SiHhIcZHsjFyeerqBkbbUzP+fAIH5pujgRLLFjxra3W1osYFl bvww== 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=6Kmnbl2LvKvDg+RA+K4UFMXnMd4G2mem+SvR6N8NTDE=; b=LQkFdYsKuNBCZCkU03cD24AyfC1mDZH7PTh7Mj679IFjzrCRyp/lnJmH90eGoQGHvS jqEw5OKOR+laimZZu2Fg/QRemh+oQPkGF/xf7gGYocop+icsqwNq7jFseOJqtOGGQiva XOW3KDpLkRzK6SgO1vO1dSs2qomH8R9rSWWf6uiY4PZuG8iosUQ4TVv6pgXi+Pq8fdTP ONWjur/tvN9DKPZE6AzQ/VDDQ7z15pwsq4nVT004UFdTE24AkfwQDu5LmJOFQdgRt6ew 1p3tSZWBAoNN0rZMgQPHzZJkoWzC1DeqJWXP5jzPs+KNZ791XNSZFi5CoatnvDMccOqG U68w== X-Gm-Message-State: AOAM532z7BMkn+G8vQlUTHEKAeac72lABCAsXmuXTuFXB/CECcgGmkBo sntQ6YMfcivK1dY2zwHPMxBil0N76eqYKp1igUo= X-Google-Smtp-Source: ABdhPJxkaSVpZO+zMYyStO5YZzrb0e+eir1WbogcH5dtvgmq8N2pfj1nuVPhurHtEOJbhHv8rM3s3A== X-Received: by 2002:a17:90a:f0ce:: with SMTP id fa14mr1217193pjb.156.1608084269660; Tue, 15 Dec 2020 18:04:29 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 11/15] target/riscv: rvb: generalized reverse Date: Wed, 16 Dec 2020 10:01:36 +0800 Message-Id: <20201216020150.3157-12-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::632; envelope-from=frank.chang@sifive.com; helo=mail-pl1-x632.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, 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: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/bitmanip_helper.c | 72 +++++++++++++++++++++++++ target/riscv/helper.h | 7 +++ target/riscv/insn32-64.decode | 2 + target/riscv/insn32.decode | 2 + target/riscv/insn_trans/trans_rvb.c.inc | 34 ++++++++++++ target/riscv/meson.build | 1 + target/riscv/translate.c | 32 +++++++++++ 7 files changed, 150 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..716d80aab59 --- /dev/null +++ b/target/riscv/bitmanip_helper.c @@ -0,0 +1,72 @@ +/* + * 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 939731c345d..a055c539fad 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -66,6 +66,13 @@ DEF_HELPER_FLAGS_2(fcvt_d_lu, TCG_CALL_NO_RWG, i64, env,= tl) #endif 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 ac0634d754a..a355b91e399 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 sbsetiw 0010100 .......... 001 ..... 0011011 @sh5 sbclriw 0100100 .......... 001 ..... 0011011 @sh5 @@ -109,3 +110,4 @@ sbinviw 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 b4677293582..fd8f4238ef7 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 sbseti 00101. ........... 001 ..... 0010011 @sh sbclri 01001. ........... 001 ..... 0010011 @sh @@ -627,3 +628,4 @@ sbexti 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 433cc7f9fc8..142e9123d68 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -219,6 +219,23 @@ static bool trans_rol(DisasContext *ctx, arg_rol *a) return gen_arith(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 @@ -350,4 +367,21 @@ 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); + + if (a->shamt >=3D 32) { + return false; + } + + 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 10b4142a3ab..b40d170c01b 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -811,6 +811,32 @@ 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 */ +#ifdef TARGET_RISCV32 + tcg_gen_bswap32_tl(source1, source1); +#else + tcg_gen_bswap64_tl(source1, source1); +#endif + } 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) @@ -885,6 +911,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 Tue Nov 18 06:06:13 2025 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=1608084890; cv=none; d=zohomail.com; s=zohoarc; b=Pj3b+KwgwGOQRasBrhp+FWZoYnhuu0pOcAH+YLKcksDYFeO7fOEY+6/ScJUQ3ywlFUBrOakHiroIdH05ob4ZmnELMupe/F5REp87MfoWNiAVS3YIjf4uiYh59GeQTCuy5+kzKoqF14q4GIoEpy/Is5serT1k6aocQWuYEdtqqdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084890; 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=1ns9CvNprivvlSCZl0WFtV5ri8PlJe6qTUuy6CSPaIw=; b=JG5UL3NKbVZgsm9+p5e+J5GCh07B4bmtIwsBGJrKkbLi7HuZP0gaxzHMIJByDD/G0+K04ENtwJ9iUrOwaDIjKusvdwzx3DbOMCA0jNPqy6KcGizt+lxm0Hu0Cs0icE8gskAfk+k5lrInQaT1fmRc2O8eSAdcomEN6hDpcrpUkGs= 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 1608084890722905.518926731488; Tue, 15 Dec 2020 18:14:50 -0800 (PST) Received: from localhost ([::1]:56654 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpML3-0000ko-Jd for importer@patchew.org; Tue, 15 Dec 2020 21:14:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55364) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpMBC-0000jL-8y for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:38 -0500 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]:46754) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpMB9-0001Ba-Cr for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:37 -0500 Received: by mail-pg1-x533.google.com with SMTP id c22so1076445pgg.13 for ; Tue, 15 Dec 2020 18:04: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 a13sm289150pfr.59.2020.12.15.18.04.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:04:33 -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=1ns9CvNprivvlSCZl0WFtV5ri8PlJe6qTUuy6CSPaIw=; b=O8mXpIYDQ72MjNEnGrw3xqkSiPhs7kZ01xWBW7BkZp4KngWDreAcdxP06Q9obw+nON VE1ugzPPnE6TmxaRzdUzgfg3zPia4ba+oWvR9/Rfchm27zRDnRXnXkXIGwagTqs7KswZ 4874ZNf8ivX0VvCxt+LDkgWkAy3H7BHUESlByyNJ+QpHqVJr2HgRK9TS0z09f3YwF0Z+ 6BDQGjmd8vjx2PG/fs5SSKpp0zf+O3AANsRazGdAF9ZYkm3JAxBiZKrBJcPJmL7c0YwS OQAcbblDjGn+RJhnR2isyZtrIBFSWOjqYAP2IU1XV63Idb2MRKkCBc7CEW/89PfS/7FD ybMQ== 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=1ns9CvNprivvlSCZl0WFtV5ri8PlJe6qTUuy6CSPaIw=; b=aCeK/zzBnY9d1lTXweClKRAbK/mrM56mEvg4Bfb3cGsKuOGfTKzWpk1G5NdIqJtQoQ rHPU7fwfS1M8tE0inqlGN/2MiiW4048+ORuFq7ruyacMBei0m1jlZ4C4Roy/RZHmC/oP 7CC4op10Ne9EEGj/0vhFgyxW8oqjZcnGV8w7QBByld2qHVJv2UJwsRqeJQhM0Na08wWZ VspVG2YMKn1fpKqm++NhFy1BAt1zAwSGaJ781pN0TfqJb+it8i/c64tPeAZQqSTPPiGC iyMgddLOAfm7g1ZRBwD9UYFmJcum1HnThK/0F4DeJ3nqyumYOXCU58DaFai+9mmwzTgV sjLA== X-Gm-Message-State: AOAM531P+llb86/7yPYUXGUVdAY1b03RaESShoeUEKkc4uH7Mshqjk07 zrsvnEu79hPPcYmCz/5tWa7HkRX23jW+Hm6wQVU= X-Google-Smtp-Source: ABdhPJw18l/0wgKdBQ+eAH3sGBKtYBpcIMUAq2v0jT3UBc+0UyoAv20t1WpXHKd7DKF3g8LUU0EkCw== X-Received: by 2002:a62:25c7:0:b029:156:72a3:b0c0 with SMTP id l190-20020a6225c70000b029015672a3b0c0mr30123689pfl.59.1608084273863; Tue, 15 Dec 2020 18:04:33 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 12/15] target/riscv: rvb: generalized or-combine Date: Wed, 16 Dec 2020 10:01:37 +0800 Message-Id: <20201216020150.3157-13-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::533; envelope-from=frank.chang@sifive.com; helo=mail-pg1-x533.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: Frank Chang Signed-off-by: Frank Chang --- 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 | 34 +++++++++++++++++++++++++ target/riscv/translate.c | 6 +++++ 6 files changed, 77 insertions(+) diff --git a/target/riscv/bitmanip_helper.c b/target/riscv/bitmanip_helper.c index 716d80aab59..6ab55b4b176 100644 --- a/target/riscv/bitmanip_helper.c +++ b/target/riscv/bitmanip_helper.c @@ -70,3 +70,34 @@ target_ulong HELPER(grevw)(target_ulong rs1, target_ulon= g rs2) =20 #endif =20 +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 a055c539fad..de3c341c2f4 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -68,9 +68,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 a355b91e399..46f469700b5 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 sbsetiw 0010100 .......... 001 ..... 0011011 @sh5 sbclriw 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 fd8f4238ef7..98d2ee0ab56 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 sbseti 00101. ........... 001 ..... 0010011 @sh sbclri 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 142e9123d68..c35fe84444c 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -236,6 +236,23 @@ 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); + + if (a->shamt >=3D TARGET_LONG_BITS) { + return false; + } + + return gen_shifti(ctx, a, &gen_helper_gorc); +} + /* RV64-only instructions */ #ifdef TARGET_RISCV64 =20 @@ -384,4 +401,21 @@ 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); + + if (a->shamt >=3D 32) { + return false; + } + + return gen_shiftiw(ctx, a, &gen_gorcw); +} + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index b40d170c01b..021daf10875 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -917,6 +917,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_gorc(ret, arg1, arg2); +} + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Tue Nov 18 06:06:13 2025 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=1608084520; cv=none; d=zohomail.com; s=zohoarc; b=DNifpY1BlGvVuSTJwI3IQJUzqcYiBqPsrzVN+7Dh0QQkvsZpYr1lf5HYZkxXA9vsuljM4lubYtQtEk/NFC/EgJzoxX2v9KDxVvcSTDQMI9/NjiSaXDSrcAAQhfUz7Om0583s+dZDMERf7mfXg+2zzPbJ6IWaX0en2VR1tjePS24= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084520; 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=LgIzG47TTsQTTKfkiPYlk72tQJacsoAvRrzsU/VHOlw=; b=nb5WMlsDhMEWLlI61UufATvLGpxUcGzEhS57+97hGNhaUBiBy5mcS+b7aiE1BX4gnZ7ZkqdEt/NPl7ByHqbwwJsvpeLry81qLxQVGebUdhzLfkNbZ+7mbrygS4eI1NKo8zO8DDB6Egkx/4RnnvNScSl7jWO9L8YYEYvAt/oKyPo= 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 1608084520584746.6647962435785; Tue, 15 Dec 2020 18:08:40 -0800 (PST) Received: from localhost ([::1]:43496 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMF5-0003bz-EZ for importer@patchew.org; Tue, 15 Dec 2020 21:08:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55418) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpMBG-0000uZ-C9 for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:42 -0500 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:39367) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpMBD-0001C2-FB for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:42 -0500 Received: by mail-pj1-x1029.google.com with SMTP id hk16so678596pjb.4 for ; Tue, 15 Dec 2020 18:04: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 a13sm289150pfr.59.2020.12.15.18.04.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:04: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=LgIzG47TTsQTTKfkiPYlk72tQJacsoAvRrzsU/VHOlw=; b=S+WptiQmINO+R16VNqPWMoFfrmpJByOtWsx43iBNQRk/b4CIL6WLUKpYSbY/xzE0/6 ZKTOoa372aeEX1enEcgbXCi08uEbs8+vPvHlyzQSR3oC+3egixDtGDE/sGveWeD17Zl4 DOJYlCQQzcPv/4W8V1Y24ydoQGDRpfzvDOW/RiSynw/0umVBJRkO1Uu6ArE+DGy1Ja0x nWiLusWyJFALlblBRs2q/3uDkuOKDYEYs7eUfAk2WZnX7uYHRI0x3wrBDz8+oRcgmoyF OE3BNkzKZnUkInErDfWQjbskcrULKu3we8P49pbYRBJFxErtg4830/hy8A65Iv7lKpW1 g9fQ== 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=LgIzG47TTsQTTKfkiPYlk72tQJacsoAvRrzsU/VHOlw=; b=hOCcCpsLfMZRUJaGLttHsa0xtRHvBv6hbCUWSpFs5HbjPuTkC++294tWSnMotP1chr ul81HUDoLpShHm4dRklQm9ju8ate+DR/a/enGfbnrZ3pJyQ0+zGvT1cBSfJhIzVOsgur WDvyGvGvnQks+m0oQF/UNjveoG9DKx211NFPxLkEfnqX/HQj13ANjtvJ+GowN7eDMf+2 q2xoUfVS/rTAcBQFR907vyw8U766ENxzvPMNGlGanI9b5hoBrwpPHM2gdmzx22iFw+Rp RzlTGb2Fgqg/FDAb2oBCESlWRl/uFx/HdiEjAOisqIcKemc0BMRbvDzaINeofIiB5F/1 sEPg== X-Gm-Message-State: AOAM531lgKClUUNKt1p+pe0IsHwjIXdnqf3ik+kviBiwD6bujEMp7t3Q 4C9A8kLOvmbD/ShnHBwA02IV6xKll1/a0JBNK2E= X-Google-Smtp-Source: ABdhPJyL3NQYcaGKWM4RJhE/I5KsPvACh+QG1umCSBz7l+E4EOgvDNmzXodEiogv1Byyz5Wu0sm7Qg== X-Received: by 2002:a17:902:c382:b029:db:fa52:c24 with SMTP id g2-20020a170902c382b02900dbfa520c24mr13457500plg.53.1608084277939; Tue, 15 Dec 2020 18:04:37 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 13/15] target/riscv: rvb: address calculation Date: Wed, 16 Dec 2020 10:01:38 +0800 Message-Id: <20201216020150.3157-14-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::1029; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x1029.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 --- 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 46f469700b5..1059cab5aa4 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 +sh1addu_w 0010000 .......... 010 ..... 0111011 @r +sh2addu_w 0010000 .......... 100 ..... 0111011 @r +sh3addu_w 0010000 .......... 110 ..... 0111011 @r =20 sbsetiw 0010100 .......... 001 ..... 0011011 @sh5 sbclriw 0100100 .......... 001 ..... 0011011 @sh5 diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 98d2ee0ab56..67c8bc5485b 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 sbseti 00101. ........... 001 ..... 0010011 @sh sbclri 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 c35fe84444c..07fe662b005 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -253,6 +253,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 @@ -418,4 +429,16 @@ static bool trans_gorciw(DisasContext *ctx, arg_gorciw= *a) return gen_shiftiw(ctx, a, &gen_gorcw); } =20 +#define GEN_TRANS_SHADDU_W(SHAMT) \ +static bool trans_sh##SHAMT##addu_w(DisasContext *ctx, \ + arg_sh##SHAMT##addu_w *a) \ +{ \ + REQUIRE_EXT(ctx, RVB); \ + return gen_arith(ctx, a, &gen_sh##SHAMT##addu_w); \ +} + +GEN_TRANS_SHADDU_W(1) +GEN_TRANS_SHADDU_W(2) +GEN_TRANS_SHADDU_W(3) + #endif diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 021daf10875..f9385bbcd4f 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -837,6 +837,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) @@ -923,6 +938,23 @@ static void gen_gorcw(TCGv ret, TCGv arg1, TCGv arg2) gen_helper_gorc(ret, arg1, arg2); } =20 +#define GEN_SHADDU_W(SHAMT) \ +static void gen_sh##SHAMT##addu_w(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_SHADDU_W(1) +GEN_SHADDU_W(2) +GEN_SHADDU_W(3) + #endif =20 static bool gen_arith(DisasContext *ctx, arg_r *a, --=20 2.17.1 From nobody Tue Nov 18 06:06:13 2025 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=1608084989; cv=none; d=zohomail.com; s=zohoarc; b=eHJ6qnmBb/cTeyIvQRLQJHq6ixiGCIo8IFKSbMxtfnmMApxMGgnwUZNlOSj0MblFYC9A7RC9mrGUQoACKRDbpAcaNy+lJAjdBjptpJtq1ngwL78Qg8jlNmH6kik1aY1hhUcBwp4Hty3f5wP4xaVWIEkn1JYKat+hg2cZ8ExHTRM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084989; 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=iZK+rKAjOqv0UzEWB+rVOqX+wmO1H/CoTR7mTkztrw4=; b=Yr217/qRAh+1KPi4JryEcgln4gOrCmumDrPjDGwsaNpmJBiN2jmIB57xY8B+a0SCotd6/WVox1niTtlgNz32QbQVSirxsfVO7jKGEADH47cEpADwi1alRl2jVvmxLdNjSSRLmWH7beBtbaWY3W/+M4XxEGCB+jIboFI+GADeSwE= 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 1608084989726487.62586329000214; Tue, 15 Dec 2020 18:16:29 -0800 (PST) Received: from localhost ([::1]:60794 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMMe-0002Zf-MN for importer@patchew.org; Tue, 15 Dec 2020 21:16:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55468) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpMBJ-00012A-KI for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:45 -0500 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]:35624) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpMBH-0001CX-Qz for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:45 -0500 Received: by mail-pl1-x62f.google.com with SMTP id g20so11224473plo.2 for ; Tue, 15 Dec 2020 18:04:43 -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 a13sm289150pfr.59.2020.12.15.18.04.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:04:41 -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=iZK+rKAjOqv0UzEWB+rVOqX+wmO1H/CoTR7mTkztrw4=; b=LRrIBYVOjZ4gaQJ9swG7s9vZqnEnf+CPIsVrsobVI/1QhkuXTUlvscH3OF0kb3kGeE znFDs6tabotuq2W4ES9JZ6Shu31/ebF6/v5gyi09Qykylrt43CE894I7Dcmxua5fVYUU b5odlXFRoUIUeTmDcmsNO3Y5NHErq5by4+OQV6c+0Zqq5UDii/9gIfL+E4ENPilGNG7U JvwF86ThQr9pIOg7lzcLLZrx3AcpwpeF68TPKJr3kYhJXh8W+YR8sySoT3WVsxAjhXoF G8Gu/EywIMk8atme1WsfFuz6A+N0HvcmUjcpX32lupzFKIrKeV4+UwmuIpVB/isGU5q4 UD/g== 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=iZK+rKAjOqv0UzEWB+rVOqX+wmO1H/CoTR7mTkztrw4=; b=Or00EmFedxpfcSK8d1itsPywWMWR6TeqPQCgJPkpWGvBWl+ThCHqfRNyY7Cr9dRpx/ I796ITQSe8QJvk9ZH6veQlXXhpzL6ITeQn2I10CeHWr4a0rTUnatw4Y9IrQCXpxulP3h mVmP8PNKnyzR81XUSMZ9fOfPaPjHsPFZG37E2Rg9VxoBeuB4ij6vA3vRQ8Zd1kiGyw2d 3qMzrgGkB2+4yX55h5yXwaI2IC5UHDUxGTX/a/F44bJsQAJPyqTD97RWUJqVmJzysxu/ FTLPR+XW8OX3L4UJm1a15y4I15qI2t4NfvMVe4eNsvZNlUTDbZmHFl57ljqFhXyGcbMT XhLw== X-Gm-Message-State: AOAM531bJA6BRghwnSfOAnzC/1qi43sAF+dqmNdYHmF76V2xmp4DWDqX U8ySyD+L8cmoI/YGxu3lLuwVuuU+lrWH81c/WS8= X-Google-Smtp-Source: ABdhPJzXNBfhMClpQSOvbpzqiCtsZCyMMscbthuhjJuBb+BEmIH5oa7XUf0rsGLHweOmDVMYqs7cwg== X-Received: by 2002:a17:90b:384c:: with SMTP id nl12mr1221689pjb.72.1608084282334; Tue, 15 Dec 2020 18:04:42 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 14/15] target/riscv: rvb: add/sub with postfix zero-extend Date: Wed, 16 Dec 2020 10:01:39 +0800 Message-Id: <20201216020150.3157-15-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::62f; envelope-from=frank.chang@sifive.com; helo=mail-pl1-x62f.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 --- 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 1059cab5aa4..f819028266c 100644 --- a/target/riscv/insn32-64.decode +++ b/target/riscv/insn32-64.decode @@ -107,6 +107,7 @@ gorcw 0010100 .......... 101 ..... 0111011 @r sh1addu_w 0010000 .......... 010 ..... 0111011 @r sh2addu_w 0010000 .......... 100 ..... 0111011 @r sh3addu_w 0010000 .......... 110 ..... 0111011 @r +addu_w 0000100 .......... 000 ..... 0111011 @r =20 sbsetiw 0010100 .......... 001 ..... 0011011 @sh5 sbclriw 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 + +slliu_w 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 07fe662b005..323ca5eccee 100644 --- a/target/riscv/insn_trans/trans_rvb.c.inc +++ b/target/riscv/insn_trans/trans_rvb.c.inc @@ -441,4 +441,26 @@ GEN_TRANS_SHADDU_W(1) GEN_TRANS_SHADDU_W(2) GEN_TRANS_SHADDU_W(3) =20 +static bool trans_addu_w(DisasContext *ctx, arg_addu_w *a) +{ + REQUIRE_EXT(ctx, RVB); + return gen_arith(ctx, a, &gen_addu_w); +} + +static bool trans_slliu_w(DisasContext *ctx, arg_slliu_w *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 f9385bbcd4f..84e55880234 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -955,6 +955,12 @@ GEN_SHADDU_W(1) GEN_SHADDU_W(2) GEN_SHADDU_W(3) =20 +static void gen_addu_w(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 Tue Nov 18 06:06:13 2025 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=1608084774; cv=none; d=zohomail.com; s=zohoarc; b=Jd7PRf2jx+lDefqUOCYqXJtGydrJRM7fgxcVP9X41mpraAc4t90vZXFHB1gZMB+qGwu43V5n7plN1e4Z1FWFJRBlTwE2v86+xOxMA8G4ezb2Wozjre8PTSe/UqAdvARpYm4xpNM0qBNN0vwjkYmry/1suYsJINcAWL1KmCMLb8A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608084774; 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=+CWaIlbPzrY451DhxfSimx4EEc+YfrZK05ZurdY+u+Q=; b=mVWY41O9uaJy9Yo6D9oI/k4JoVkWlk4FbUCvb/pSP9YC92R7Y25QgHwnAY1jjuZwM+cM4JQd6n1bHE1g4E0SJsDRF25t7R0RmgEAamTvFB3UJf5wjUbutnQYVBUEpau0eAGnryXEFMMcUhhP9NReSY7pbD0LglaEHcSZyEstXDk= 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 1608084774360279.8797354435753; Tue, 15 Dec 2020 18:12:54 -0800 (PST) Received: from localhost ([::1]:53030 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpMJB-0007ez-3R for importer@patchew.org; Tue, 15 Dec 2020 21:12:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55504) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpMBO-00016F-46 for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:50 -0500 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:55827) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kpMBM-0001DC-0p for qemu-devel@nongnu.org; Tue, 15 Dec 2020 21:04:49 -0500 Received: by mail-pj1-x1029.google.com with SMTP id lb18so630678pjb.5 for ; Tue, 15 Dec 2020 18:04:46 -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 a13sm289150pfr.59.2020.12.15.18.04.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Dec 2020 18:04:45 -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=+CWaIlbPzrY451DhxfSimx4EEc+YfrZK05ZurdY+u+Q=; b=UZUZ+dORZNY7hg4SBRL9soUYrZi/FL6QOT8HmWhInOPAmZU3SnH86t+U8k4X+o5tlu CtTtZsVF9PtRVdMKyFCVq5j9bSBnVYjq2j2/T3mJPPBQDB/dnunbbr2hDkIdLazXk+t4 ndffAirt2E2frIKT5NqmK42SBqq0o71/lIuOlLKJQP77I2cfFrXBfoQamLFcVs21fKFe 3Gzy6SbkvVMw4xKB8b2VYNK2JzbLR1MfeCeG5+vrExGJ9yk/J9BuklimsXX6uKDOBF/4 2TqOLtuG3a0P7mJM7MZgKeQMLxQkHYvtI1ziAomMugfua5+ZHtVDVRBT1jN03ybnCDW0 EizQ== 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=+CWaIlbPzrY451DhxfSimx4EEc+YfrZK05ZurdY+u+Q=; b=V9KXXDxHv6AezcGXQPZAAz/1tjEK5Cd4AdCDTfmpZxCAeP7muEWJSlHu9/Z+FYAhGx VcwOWOEkaSoIAQHwlsX1Pxb15wE795JA7vcpA6vLY/hFJ/J7xgInr1H37MDj+6KSX+8O XnIk9lK5a1Bp1neSyxMalU5fvhuOQWyWO3wlFeJn1tc7XW5E218+l/fJAN/3Ow88VWFx O1/7OoRPajz7vpcNubOCUpK0JkFGO21rz4be4F3atlvgy9Iyb9Y8ZvGPUKlkrqmG+q7Q ikyLb3KY/USpRFKJqL3vVotMhrJEqoSUIEgDnXTMhVRfgyAgJr/ZHg+x6pHRdjlKuxNw XvAA== X-Gm-Message-State: AOAM5336QzWyP/H8UA+y8cnNg2QNBjssGn0kobux4uo6Rk5yGXls1pD6 Xwb21ei7O94+N0dkhWihxzGrnbeaz3HrMLXn4F4= X-Google-Smtp-Source: ABdhPJwwQvotbGA0qJVwAgpoKnZU/WiL1oEoLFy/RNH+pNPObuWmwFU4SPlZ3UyQUgSLVJTX6wMppA== X-Received: by 2002:a17:90a:eac5:: with SMTP id ev5mr1205567pjb.65.1608084285859; Tue, 15 Dec 2020 18:04:45 -0800 (PST) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [RFC v2 15/15] target/riscv: rvb: support and turn on B-extension from command line Date: Wed, 16 Dec 2020 10:01:40 +0800 Message-Id: <20201216020150.3157-16-frank.chang@sifive.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201216020150.3157-1-frank.chang@sifive.com> References: <20201216020150.3157-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::1029; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x1029.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 --- 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 6a0264fc6b1..33fa112c4ac 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -441,6 +441,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)) { @@ -511,6 +514,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 c0a326c8430..4868f62f32b 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -66,6 +66,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 @@ -276,6 +277,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