From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1519402289747207.54943085428204; Fri, 23 Feb 2018 08:11:29 -0800 (PST) Received: from localhost ([::1]:45465 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFwJ-0000TV-EZ for importer@patchew.org; Fri, 23 Feb 2018 11:11:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48126) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYB-0003gS-SS for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFY9-00088R-NO for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:19 -0500 Received: from mail-wr0-x22b.google.com ([2a00:1450:400c:c0c::22b]:34162) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFY9-00086Q-D6 for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:17 -0500 Received: by mail-wr0-x22b.google.com with SMTP id m5so14558495wrg.1 for ; Fri, 23 Feb 2018 07:46:17 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id q186sm2264877wmb.33.2018.02.23.07.46.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:14 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 0A8ED3E0368; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=042eHVCseG5bJkCjd0/p5J9Kiz1lCnuPUpnjSLFzuqg=; b=buwfToTh3+aTCe2Io/b1FzqXYi8NvliYZNI5EE8UKXEABAI/YgRTuew/ABkkvM0ESp sf8Davn+RCEZi4tw5trEKjjMct78WGSZhbvi0tXwbErvWIgqb83Z2SivHxFBdeOuD6GO Nk3oYowk4v6k90t6sb3UXnnruKLa11ai5zfcM= 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:mime-version:content-transfer-encoding; bh=042eHVCseG5bJkCjd0/p5J9Kiz1lCnuPUpnjSLFzuqg=; b=mM+qYf1uigxg3PXuThPCgn6Aqh3Djm/khwW9+6Xg5ezuKRylrOk4Bfxi/S9wEIZ8FL CLGlatcc55ekqwCeodIFKTe0rhigXtQZ3dWsz4IYWS5YjDzJ4zji9wbvOP5Mmcd7ZUmn d1Tkyi81CQDjK6pr840nZpdRBXqZ2lPYh6899dynvKa+Wqy7ONexd4iYKXr3ZrJRdkVx zsgMdGbuFkmO35TqjTUa/LT1J18nmE6c7u2waahpP6Nh8J0V+tbwMtFsnskG3mF2EnyR TxG/PXMRcxO7O8/qcYHC0wbuBe8NJKbSToRIn9yrmRxwmlbMIm7Wj4m/ajE8OFwVDKX8 jmCw== X-Gm-Message-State: APf1xPDGQoPPRzU/0eoO78F3H+Q+pZBZg1DczhUgKXNeeDJ6PAcJKQcR 1HjSlCvJBNsNdbI6BxKtRqe3dQ== X-Google-Smtp-Source: AH8x227Sr1OgBXhQdh3Ty7A4Iz3ff7Yn+mptJwwVc54qpiFFOeP339nfhgypPyUxhkWFxiqRF1V+TA== X-Received: by 10.223.199.137 with SMTP id l9mr2212465wrg.6.1519400776102; Fri, 23 Feb 2018 07:46:16 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:06 +0000 Message-Id: <20180223154613.2096-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22b Subject: [Qemu-devel] [PATCH v1 1/8] risugen: support @GroupName in risu files X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 The existing pattern support is useful but it does get a little tedious when faced with large groups of instructions. This introduces the concept of a @GroupName which can be sprinkled in the risu definition and is attached to all instructions following its definition until the next group or an empty group "@" is specified. It can be combined with the existing pattern support to do things like: ./risugen --group AdvSIMDAcrossVector --not-pattern ".*_RES" aarch64.risu= foo.bin Multiple groups will further restrict the set, so for example: ./risugen --group v8.2,Cryptographic aarch64.risu v8.2-crypto.bin Signed-off-by: Alex Benn=C3=A9e --- README | 10 ++++++++++ risugen | 24 +++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/README b/README index e90d33c..35e8b29 100644 --- a/README +++ b/README @@ -81,6 +81,10 @@ reads the configuration file arm.risu, and generates 100= 00 instructions based on the instruction patterns matching the regular expression "VQSHL.*imm.*". The resulting binary is written to vqshlimm.out. =20 +An alternative to using regular expression patterns is to use the +--group specifier. This relies on the configuration file having been +annotated with suitable @ markers. + This binary can then be passed to the risu program, which is written in C. You need to run risu on both an ARM native target and on the program under test. The ARM native system is the 'master' @@ -146,6 +150,12 @@ Lines starting with a '.' are directives to risu/risug= en: * ".mode [thumb|arm]" specifies whether the file contains ARM or Thumb instructions; it must precede all instruction patterns. =20 +Lines starting with a '@' are a grouping directive. Instructions +following will be assigned to a comma separated list of groups. The +list of groups is reset at the next '@' directive which may be empty. +This provides an alternative method to selecting instructions than RE +patterns. + Other lines are instruction patterns: insnname encodingname bitfield ... [ [ !blockname ] { blocktext } ] where each bitfield is either: diff --git a/risugen b/risugen index 8bfb0e9..488d804 100755 --- a/risugen +++ b/risugen @@ -20,6 +20,7 @@ use Getopt::Long; use Data::Dumper; use Module::Load; use Text::Balanced qw { extract_bracketed extract_multiple }; +use List::Compare::Functional qw( get_intersection ); # Make sure we can find the per-CPU-architecture modules in the # same directory as this script. use FindBin; @@ -34,7 +35,10 @@ my @insn_keys; =20 # The arch will be selected based on .mode directive defined in risu file. my $arch =3D ""; +# Current groups, updated by @GroupName +my @insn_groups; =20 +my @groups =3D (); # include groups my @pattern_re =3D (); # include pattern my @not_pattern_re =3D (); # exclude pattern =20 @@ -122,6 +126,11 @@ sub parse_config_file($) exit(1); } =20 + if ($tokens[0] =3D~ /^@(.*)/ ) { + @insn_groups =3D split(/,/, $1); + next; + } + if ($tokens[0] =3D~ /^\./) { parse_risu_directive($file, $seen_pattern, @tokens); next; @@ -239,6 +248,9 @@ sub parse_config_file($) $insnrec->{fixedbits} =3D $fixedbits; $insnrec->{fixedbitmask} =3D $fixedbitmask; $insnrec->{fields} =3D [ @fields ]; + if (@insn_groups) { + $insnrec->{groups} =3D [ @insn_groups ]; + } $insn_details{$insnname} =3D $insnrec; } close(CFILE) or die "can't close $file: $!"; @@ -247,8 +259,15 @@ sub parse_config_file($) # Select a subset of instructions based on our filter preferences sub select_insn_keys () { - # Get a list of the insn keys which are permitted by the re patterns @insn_keys =3D sort keys %insn_details; + # Limit insn keys to those in all reqested @groups + if (@groups) { + @insn_keys =3D grep { + defined($insn_details{$_}->{groups}) && + scalar @groups =3D=3D get_intersection([$insn_details{$_}-= >{groups}, \@groups]) + } @insn_keys + } + # Get a list of the insn keys which are permitted by the re patterns if (@pattern_re) { my $re =3D '\b((' . join(')|(',@pattern_re) . '))\b'; @insn_keys =3D grep /$re/, @insn_keys; @@ -277,6 +296,7 @@ Valid options: --fpscr n : set initial FPSCR (arm) or FPCR (aarch64) value (defaul= t is 0) --condprob p : [ARM only] make instructions conditional with probabili= ty p (default is 0, ie all instructions are always executed) + --group name[,name..]: only use instructions in all defined groups --pattern re[,re...] : only use instructions matching regular expressi= on Each re must match a full word (that is, we match on the perl regex '\\b((re)|(re))\\b'). This means that @@ -305,6 +325,7 @@ sub main() GetOptions( "help" =3D> sub { usage(); exit(0); }, "numinsns=3Di" =3D> \$numinsns, "fpscr=3Do" =3D> \$fpscr, + "group=3Ds" =3D> \@groups, "pattern=3Ds" =3D> \@pattern_re, "not-pattern=3Ds" =3D> \@not_pattern_re, "condprob=3Df" =3D> sub { @@ -319,6 +340,7 @@ sub main() # allow "--pattern re,re" and "--pattern re --pattern re" @pattern_re =3D split(/,/,join(',',@pattern_re)); @not_pattern_re =3D split(/,/,join(',',@not_pattern_re)); + @groups =3D split(/,/,join(',',@groups)); =20 if ($#ARGV !=3D 1) { usage(); --=20 2.15.1 From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1519403077766762.3421472616367; Fri, 23 Feb 2018 08:24:37 -0800 (PST) Received: from localhost ([::1]:45591 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epG9B-0003mb-Ju for importer@patchew.org; Fri, 23 Feb 2018 11:24:33 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48274) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYH-0003mP-3x for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFYC-0008G3-Rq for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:25 -0500 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:56267) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFYC-0008Cm-D5 for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:20 -0500 Received: by mail-wm0-x244.google.com with SMTP id q83so5472950wme.5 for ; Fri, 23 Feb 2018 07:46:20 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id 55sm4110125wrw.87.2018.02.23.07.46.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:14 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 156273E03B5; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fHWseOQlh6YsRY7WRqzE6aEH3eBALKNLdC+26QYceFs=; b=i2XXF2G8vEuIJ7/0UKvQ4xDitAaJGqpiDvEVaHzwX0lQa1h4lV+S+nB1EeKnNdA5Dr DHqOnBi/TliwFh2qSYXPnwW4V/1kNleQZYayFB12IgNIiQ2NkKwpvrqs6lSstKHBj2ty b4J96HyKJwW+ZGmgvbPw0jsJD8TCSu2TUtqo8= 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:mime-version:content-transfer-encoding; bh=fHWseOQlh6YsRY7WRqzE6aEH3eBALKNLdC+26QYceFs=; b=GEq2M67HvXcSlpQIS/oPsoR9xNolhKbv8sodGFcYELWs8EEYkHEinbQ1mbYPYRCOTm 1tgAkkKiY6EX1nHTUwxyidVdXt86nJJJIYR7PMgM8IuZoEdqv85k9guYY7L7lNlqdi1B pyPRknRYOMTc5MQSGW2GOLEam3PBGGlte4TRNRHpMf2C31wFHO4eWrITEukpPa7mFi46 qJclywYWoE4g9TTD4sjOjFHnmtyrFT7/hQVMOHQYBxhRCeYZOy3VZv8YL7UNUO/ZXseR u4RluqSwjul7mbBD1sW3ruGco0ZhkBZbWi9MtgPBSo7Yxa1ngfkAwmRuc136Kf6F5L0q f1Pw== X-Gm-Message-State: APf1xPDtnYa/Z85EPtvW0oyGo+3AsQY4CboLW3oHTVYkoeR7iSOdDPYx ePbzzGAYbGVz9tCvU+YWRi0e6g== X-Google-Smtp-Source: AG47ELtKZ41HuFx1ol3n3hQ+v4oVSIgqImJBWuRhDqGWC7+LE+OzJgfb7xJ0jMGjF8bGzfg95+MwKA== X-Received: by 10.28.41.3 with SMTP id p3mr2263293wmp.140.1519400778347; Fri, 23 Feb 2018 07:46:18 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:07 +0000 Message-Id: <20180223154613.2096-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PATCH v1 2/8] aarch64.risu: clean-up and annotate with groups X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Clean-up the risu definitions by: - removing out-dated section numbers - fixing section titles to match ASL encoding groups - add @Section markers Signed-off-by: Alex Benn=C3=A9e --- aarch64.risu | 200 +++++++++++++++++++++++++++++++++++++++++--------------= ---- 1 file changed, 141 insertions(+), 59 deletions(-) diff --git a/aarch64.risu b/aarch64.risu index 9667ef7..838bded 100644 --- a/aarch64.risu +++ b/aarch64.risu @@ -40,6 +40,8 @@ # 0 Q 0 0 1 1 0 0 0 0 0 0 0 0 0 0 x x 1 x size Rn = Rt # [L] [ opcode ] =20 +@Store + ST1m_1 A64_V 0 Q:1 001100000 00000 0111 size:2 rn:5 rt:5 \ !constraints { $rn !=3D 31; } \ !memory { align(1 << $size); reg($rn); } @@ -348,11 +350,12 @@ ST4_Dp A64_V 0 Q:1 001101101 rm:5 101 0 01 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rm; } \ !memory { align(8); reg($rn); } =20 - +@ # C6.3.152 LD1 (multiple structures) - no offset # 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 5 4= 0 # 0 Q 0 0 1 1 0 0 0 1 0 0 0 0 0 0 x x 1 x size Rn = Rt # [L] [ opcode ] +@Load =20 LD1m_1 A64_V 0 Q:1 001100010 00000 0111 size:2 rn:5 rt:5 \ !constraints { $rn !=3D 31; } \ @@ -727,6 +730,8 @@ LD4R_p A64_V 0 Q:1 001101111 rm:5 111 0 size:2 rn:5 rt:= 5 \ !constraints { $rn !=3D 31 && $rn !=3D $rm; } \ !memory { align(1 << $size); reg($rn); } =20 +@ + # C3.3.5 Load register (PC-relative literal) # 31 30 29 28 27 26 25 24 23 5 4 0 # opc 0 1 1 V 0 0 imm19 Rt @@ -788,6 +793,8 @@ LD4R_p A64_V 0 Q:1 001101111 rm:5 111 0 size:2 rn:5 rt:= 5 \ # find out how to relax some of these constraints to really check # the whole range of possibilities. =20 +@Store + STXRB A64 00 001000 000 rs:5 0 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rs !=3D $rt && $rs !=3D $rn && $rn !=3D $rt= ; } \ !memory { align(1); reg($rn); } @@ -812,6 +819,8 @@ STLRH A64 01 001000 100 11111 1 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(2); reg($rn); } =20 +@Load + LDXRB A64 00 001000 010 11111 0 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(1); reg($rn); } @@ -836,6 +845,8 @@ LDARH A64 01 001000 110 11111 1 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(2); reg($rn); } =20 +@Store + STXRW A64 10 001000 000 rs:5 0 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rs !=3D $rt && $rs !=3D $rn && $rn !=3D $rt= ; } \ !memory { align(4); reg($rn); } @@ -848,6 +859,8 @@ STLRW A64 10 001000 100 11111 1 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(4); reg($rn); } =20 +@Load + LDXRW A64 10 001000 010 11111 0 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(4); reg($rn); } @@ -860,6 +873,8 @@ LDARW A64 10 001000 110 11111 1 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(4); reg($rn); } =20 +@Store + STXR A64 11 001000 000 rs:5 0 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rs !=3D $rt && $rs !=3D $rn && $rn !=3D $rt= ; } \ !memory { align(8); reg($rn); } @@ -872,6 +887,8 @@ STLR A64 11 001000 100 11111 1 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(8); reg($rn); } =20 +@Load + LDXR A64 11 001000 010 11111 0 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(8); reg($rn); } @@ -884,6 +901,8 @@ LDAR A64 11 001000 110 11111 1 11111 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt; } \ !memory { align(8); reg($rn); } =20 +@ + # Now with P (pair load/stores): # 10 0 0 1 0 STXP 32-bit # 10 0 0 1 1 STLXP 32-bit @@ -897,6 +916,8 @@ LDAR A64 11 001000 110 11111 1 11111 rn:5 rt:5 \ # 11 0 1 1 0 LDXP 64-bit # 11 0 1 1 1 LDAXP 64-bit =20 +@Store + STXPW A64 10 001000 001 rs:5 0 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rs !=3D $rt && $rs !=3D $rtt && $rs !=3D $r= n && $rn !=3D $rt && $rn !=3D $rtt; } \ !memory { align(8); reg($rn); } @@ -905,6 +926,8 @@ STLXPW A64 10 001000 001 rs:5 1 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rs !=3D $rt && $rs !=3D $rtt && $rs !=3D $r= n && $rn !=3D $rt && $rn !=3D $rtt; } \ !memory { align(8); reg($rn); } =20 +@Load + LDXPW A64 10 001000 011 11111 0 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rt !=3D $rtt && $rn !=3D $rt && $rn !=3D $r= tt; } \ !memory { align(8); reg($rn); } @@ -913,6 +936,8 @@ LDAXPW A64 10 001000 011 11111 1 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rt !=3D $rtt && $rn !=3D $rt && $rn !=3D $r= tt; } \ !memory { align(8); reg($rn); } =20 +@Store + STXP A64 11 001000 001 rs:5 0 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rs !=3D $rt && $rs !=3D $rtt && $rs !=3D $r= n && $rn !=3D $rt && $rn !=3D $rtt; } \ !memory { align(16); reg($rn); } @@ -921,6 +946,8 @@ STLXP A64 11 001000 001 rs:5 1 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rs !=3D $rt && $rs !=3D $rtt && $rs !=3D $r= n && $rn !=3D $rt && $rn !=3D $rtt; } \ !memory { align(16); reg($rn); } =20 +@Load + LDXP A64 11 001000 011 11111 0 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rt !=3D $rtt && $rn !=3D $rt && $rn !=3D $r= tt; } \ !memory { align(16); reg($rn); } @@ -929,6 +956,8 @@ LDAXP A64 11 001000 011 11111 1 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rt !=3D $rtt && $rn !=3D $rt && $rn !=3D $r= tt; } \ !memory { align(16); reg($rn); } =20 +@ + # C3.3.7 Load/store no-allocate pair (offset) # 31 30 29 28 27 26 25 24 23 22 21 15 14 10 9 5 4 0 # opc 1 0 1 V 0 0 0 L simm7 Rt2 Rn Rt @@ -939,22 +968,28 @@ LDAXP A64 11 001000 011 11111 1 rtt:5 rn:5 rt:5 \ # 10 0 0 STNP 64-bit # 10 0 1 LDNP 64-bit =20 +@Store + STNPW A64 00 101 0 000 0 imm:7 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt && $rn !=3D $rtt; } \ !memory { align(8); reg_plus_imm($rn, sextract($imm, 7) * 4); } =20 -LDNPW A64 00 101 0 000 1 imm:7 rtt:5 rn:5 rt:5 \ -!constraints { $rn !=3D 31 && $rt !=3D $rtt && $rn !=3D $rt && $rn !=3D $r= tt; } \ -!memory { align(8); reg_plus_imm($rn, sextract($imm, 7) * 4); } - STNP A64 10 101 0 000 0 imm:7 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rn !=3D $rt && $rn !=3D $rtt; } \ !memory { align(16); reg_plus_imm($rn, sextract($imm, 7) * 8); } =20 +@Load + +LDNPW A64 00 101 0 000 1 imm:7 rtt:5 rn:5 rt:5 \ +!constraints { $rn !=3D 31 && $rt !=3D $rtt && $rn !=3D $rt && $rn !=3D $r= tt; } \ +!memory { align(8); reg_plus_imm($rn, sextract($imm, 7) * 4); } + LDNP A64 10 101 0 000 1 imm:7 rtt:5 rn:5 rt:5 \ !constraints { $rn !=3D 31 && $rt !=3D $rtt && $rn !=3D $rt && $rn !=3D $r= tt; } \ !memory { align(16); reg_plus_imm($rn, sextract($imm, 7) * 8); } =20 +@ + # SIMD variants # opc V L # 00 1 0 SIMD STNP 32-bit @@ -1516,8 +1551,21 @@ LDPQ A64_V 10 10110 idx:2 1 imm:7 rtt:5 rn:5 rt:5 \ !memory { align(32); reg_plus_imm($rn, $idx =3D=3D 1 ? 0 : sextract($imm, = 7) * 16); } =20 =20 -# - - - 1 0 0 - - - - - - - - - - - - - - - - Data processing - immediate -# C3.4.1 Add/subtract (immediate) +# Data processing - immediate +# +# 31 29| 28 27 26 | 25 24 23 | 22 0 +# - - - | 1 0 0 | op0 | +# Where op0: +# 00x - PC-rel. addressing +# 01x - Add/subtract (immediate) +# 100 - Logical (immediate) +# 101 - Move wide (immediate) +# 110 - Bitfield +# 111 - Extract + +@DataProcessingImmediate + +# - Arithmetic (immediate) # 31 30 29 | 28 27 26 25 24 |23 22| 21 10 | 9 5 | 4 0 # sf op S | 1 0 0 0 1 | shft| imm12 | Rn | Rd =20 @@ -1533,7 +1581,7 @@ SUBi A64 sf:1 10 10001 0 shft:1 imm:12 rn:5 rd:5 \ SUBSi A64 sf:1 11 10001 0 shft:1 imm:12 rn:5 rd:5 \ !constraints { $rn !=3D 31 && $rd !=3D 31; } =20 -# C3.4.2 Bitfield +# - Bitfield move # 31 | 30 29 | 28 27 26 25 24 23| 22 | 21 16 15 10 9 5 4 0 # sf | opc | 1 0 0 1 1 0| N | immr imms Rn Rd # @@ -1577,7 +1625,7 @@ UBFM_RES2 A64 0 10 100110 sn:1 1 immr:5 imms:6 rn:5 r= d:5 # ReservedValue: break the ($imms <=3D 0x1f) constraint UBFM_RES3 A64 0 10 100110 sn:1 immr:6 1 imms:5 rn:5 rd:5 =20 -# C3.4.3 Extract +# - Bitfield insert and extract # 31 |30 29| 28 27 26 25 24 23| 22 | 21 | 20 16 15 10 9 5 4 0 # sf |op21 | 1 0 0 1 1 1| N | o0 | Rm imms Rn Rd =20 @@ -1585,7 +1633,7 @@ EXTRW A64 0 00 100111 0 0 rm:5 0 imms:5 rn:5 rd:5 =20 EXTR A64 1 00 100111 1 0 rm:5 imms:6 rn:5 rd:5 =20 -# C3.4.4 Logical (immediate) +# - Logical (immediate) # 31 |30 29| 28 27 26 25 24 23| 22 | 21 16 15 10 9 5 4 0 # sf |opc | 1 0 0 1 0 0| N | immr imms Rn Rd =20 @@ -1661,7 +1709,7 @@ ANDSi_RES6 A64 0 11 100100 0 immr:6 101111 rn:5 rd:5 ANDSi_RES7 A64 0 11 100100 0 immr:6 011111 rn:5 rd:5 ANDSi_RES8 A64 sf:1 11 100100 sn:1 immr:6 111111 rn:5 rd:5 =20 -# C3.4.5 Move wide (immediate) +# - Move wide (immediate) # 31 |30 29| 28 27 26 25 24 23 | 22 21 | 20 5 4 0 # sf |opc | 1 0 0 1 0 1 | hw | imm16 Rd # hw is shift/16 (bigger values invalid for 32 bit) @@ -1672,11 +1720,18 @@ MOVZ A64 sf:1 10 100101 hw:2 imm:16 rd:5 =20 MOVK A64 sf:1 11 100101 hw:2 imm:16 rd:5 =20 -# C3.4.6 PC-rel. addressing NIY +# PC-rel. addressing NIY =20 -# - - - - 1 0 1 - - - - - - - - - - - - - - - Data processing - register +@ +# End of Data Processing Immediate =20 -# C3.5.1 Add/subtract (extended register) +# Data processing - Register +# +# 31 30 29 28 | 27 26 25 | 24 21 | 20 12 | 11 | 10 0 +# - op0 - op1 | 1 0 1 | op2 | | op3 | +@DataProcessingRegister + +# - Add/subtract (extended register) # 31 30 29 28 27 26 25 24 |23 22| 21 | 20 16 15 13 12 10 9 5 4 = 0 # sf op S 0 1 0 1 1 | opt | 1 | Rm option imm3 Rn Rd # @@ -1707,7 +1762,7 @@ SUBSx A64 sf:1 11 01011 00 1 rm:5 option:3 imm:3 rn:5= rd:5 \ SUBSx_RES A64 sf:1 11 01011 00 1 rm:5 option:3 imm:3 rn:5 rd:5 \ !constraints { $imm > 4; } =20 -# C3.5.2 Add/subtract (shifted register) +# - Add/subtract (shifted register) # 31 30 29 28 27 26 25 24 |23 22| 21 | 20 16 15 10 9 5 4 0 # sf op S 0 1 0 1 1 |shift| 0 | Rm imm6 Rn Rd =20 @@ -1739,7 +1794,7 @@ SUBS_RES1 A64 sf:1 11 01011 11 0 rm:5 imm:6 rn:5 rd:5 # ReservedValue: break the ($imm <=3D 0x1f) constraint SUBS_RES2 A64 0 11 01011 shft:2 0 rm:5 1 imm:5 rn:5 rd:5 =20 -# C3.5.3 Add/subtract (with carry) +# - Add/subtract (with carry) # 31 30 29 28 27 26 25 24 23 22 21 |20 16 15 10 9 5 4 0 # sf op S 1 1 0 1 0 0 0 0 | Rm opcode2 Rn Rd =20 @@ -1749,7 +1804,7 @@ ADCS A64 sf:1 01 11010000 rm:5 000000 rn:5 rd:5 SBC A64 sf:1 10 11010000 rm:5 000000 rn:5 rd:5 SBCS A64 sf:1 11 11010000 rm:5 000000 rn:5 rd:5 =20 -# C3.5.4 Conditional compare (immediate) +# - Conditional compare (immediate) =20 # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 12 11 10 9 5 4 3 = 0 # sf op 1 1 1 0 1 0 0 1 0 imm5 cond 1 0 Rn 0 = nzcv @@ -1762,7 +1817,7 @@ SBCS A64 sf:1 11 11010000 rm:5 000000 rn:5 rd:5 CCMNi A64 sf:1 0 111010010 imm:5 cond:4 10 rn:5 0 nzcv:4 CCMPi A64 sf:1 1 111010010 imm:5 cond:4 10 rn:5 0 nzcv:4 =20 -# C3.5.5 Conditional compare (register) +# - Conditional compare (register) # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 12 11 10 9 5 4 3= 0 # sf op 1 1 1 0 1 0 0 1 0 Rm cond 0 0 Rn 0 = nzcv # 0 0 CCMN (register) 32-bit @@ -1773,7 +1828,7 @@ CCMPi A64 sf:1 1 111010010 imm:5 cond:4 10 rn:5 0 nzc= v:4 CCMN A64 sf:1 0 111010010 rm:5 cond:4 00 rn:5 0 nzcv:4 CCMP A64 sf:1 1 111010010 rm:5 cond:4 00 rn:5 0 nzcv:4 =20 -# C3.5.6 Conditional select +# - Conditional select # 31 30 29 28 27 26 25 24 23 22 21 |20 16 15 12 11 10 9 5 4 0 # sf op S 1 1 0 1 0 1 0 0 | Rm cond op2 Rn Rd =20 @@ -1782,7 +1837,7 @@ CSINC A64 sf:1 00 11010100 rm:5 cond:4 01 rn:5 rd:5 CSINV A64 sf:1 10 11010100 rm:5 cond:4 00 rn:5 rd:5 CSNEG A64 sf:1 10 11010100 rm:5 cond:4 01 rn:5 rd:5 =20 -# C3.5.7 Data-processing (1 source) +# - Data-processing (1 source) # 31 30 29 28 27 26 25 24 23 22 21 |20 16 15 10 9 5 4 = 0 # sf 1 S 1 1 0 1 0 1 1 0 | opcode2 opcode Rn Rd =20 @@ -1793,7 +1848,7 @@ CLZ A64 sf:1 10 11010110 00000 000100 rn:5 rd:5 CLS A64 sf:1 10 11010110 00000 000101 rn:5 rd:5 REV A64 1 10 11010110 00000 000011 rn:5 rd:5 =20 -# C3.5.8 Data-processing (2 source) +# - Data-processing (2 source) # 31 30 29 28 27 26 25 24 23 22 21 |20 16 15 10 9 5 4 0 # sf 0 S 1 1 0 1 0 1 1 0 | Rm opcode Rn Rd =20 @@ -1808,7 +1863,7 @@ RORV A64 sf:1 00 11010110 rm:5 001011 rn:5 rd:5 CRC32 A64 sf 00 11010110 rm:5 010 0 sz:2 rn:5 rd:5 CRC32C A64 sf 00 11010110 rm:5 010 1 sz:2 rn:5 rd:5 =20 -# C3.5.9 Data-processing (3 source) +# - Data-processing (3 source) # 31 |30 29| 28 27 26 25 24 |23 21|20 16 15 14 10 9 5 4 0 # sf | op54| 1 1 0 1 1 | op31 | Rm o0 Ra Rn Rd =20 @@ -1846,7 +1901,7 @@ UMNEGL A64 1 00 11011 101 rm:5 1 11111 rn:5 rd:5 =20 UMULH A64 1 00 11011 110 rm:5 0 ra:5 rn:5 rd:5 =20 -# C3.5.10 Logical (shifted register) +# - Logical (shifted register) # 31|30 29| 28 27 26 25 24 |23 22| 21| 20 16 15 10 9 5 4 0 # sf| opc | 0 1 0 1 0 |shift| N| Rm imm6 Rn Rd =20 @@ -1895,9 +1950,17 @@ BICS A64 sf:1 11 01010 shft:2 1 rm:5 imm:6 rn:5 rd:5= \ # ReservedValue: break the ($imm <=3D 0x1f) constraint BICS_RES A64 0 11 01010 shft:2 1 rm:5 1 imm:5 rn:5 rd:5 =20 -# C3.6 Data processing - SIMD and floating point +@ +# End of Data Processing - Register =20 -# C3.6.1 AdvSIMD EXT +# Data processing - SIMD and floating point +# Data processing - Scalar Floating-Point and Advanced SIMD +# +# 31 28 | 27 26 25 | 24 23 | 22 19 | 18 10 | 9 0 +# op0 | 1 1 1 | op1 | op2 | op3 | +@DataProcessingScalarFP,DataProcessingAdvSIMD + +# - Advanced SIMD Extract # 31 30 29 28 27 26 25 24 23 22 21 20 16|15|14 11|10|9 5 4 0 # 0 Q 1 0 1 1 1 0 0 0 0 Rm | 0| imm4 | 0| Rn Rd =20 @@ -1912,14 +1975,14 @@ EXT A64_V 0 Q:1 101110000 rm:5 0 imm:4 0 rn:5= rd:5 \ !constraints { $Q =3D=3D 0 || !($imm & 0x08); } EXT_RES A64_V 0 0 101110000 rm:5 01 imm:3 0 rn:5 rd:5 =20 -# C3.6.2 AdvSIMD TBL/TBX +# - Advanced SIMD table lookup # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 14 13 12 11 10 9 5 4 0 # 0 Q 0 0 1 1 1 0 0 0 0 Rm 0 len op 0 0 Rn Rd =20 TBL A64_V 0 Q:1 001110000 rm:5 0 len:2 0 00 rn:5 rd:5 TBX A64_V 0 Q:1 001110000 rm:5 0 len:2 1 00 rn:5 rd:5 =20 -# C3.6.3 AdvSIMD ZIP/UZP/TRN +# - Advanced SIMD permute # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 14 12 11 10 9 5 4 0 # 0 Q 0 0 1 1 1 0 size 0 Rm 0 opcode 1 0 Rn Rd =20 @@ -1953,7 +2016,7 @@ ZIP2 A64_V 0 Q:1 001110 size:2 0 rm:5 0 111 10 rn:5 r= d:5 \ # ReservedValue: break the !($size =3D=3D 3 && $Q =3D=3D 0) constraint ZIP2_RES A64_V 0 0 001110 11 0 rm:5 0 111 10 rn:5 rd:5 =20 -# C4-286 AdvSIMD across vector lanes +# - Advanced SIMD across lanes # 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 12 11 10 9 5 4 0 # 0 Q U 0 1 1 1 0 size 1 1 0 0 0 opcode 1 0 Rn Rd =20 @@ -1997,9 +2060,10 @@ UMINV A64_V 0 Q:1 1 01110 s:2 11000 11010 10 = rn:5 rd:5 \ # ReservedValue: break the constraint (s=3D=3D2) =3D> (Q=3D1) UMINV_RES A64_V 0 0 1 01110 10 11000 11010 10 rn:5 rd:5 =20 -# C3.6.5 AdvSIMD copy +# - Advanced SIMD copy # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 14 11 10 9 5 4 0 # 0 Q op 0 1 1 1 0 0 0 0 imm5 0 imm4 1 Rn Rd +@DataProcessingAdvSIMD,AdvSIMDCopy =20 DUPe A64_V 0 Q:1 0 01110000 imm:5 0 0000 1 rn:5 rd:5 \ !constraints { ($imm & 0x07) || (($imm & 0x0f) && $Q =3D=3D 1); } @@ -2040,50 +2104,52 @@ INSe A64_V 0 1 1 01110000 imm:5 0 immm:4 1 rn:5 rd:= 5 \ # ReservedValue: break the constraint ($imm & 0x0f) INSe_RES A64_V 0 1 1 01110000 imm:1 0000 0 immm:4 1 rn:5 rd:5 =20 -# C3.6.6 AdvSIMD modified immediate +@DataProcessingScalarFP,DataProcessingAdvSIMD + +# - Advanced SIMD modified immediate # 31 30 29 28 27 26 25 24 23 22 21 20 19 18 16 15 12 11 10 9 5 4 0 # 0 Q op 0 1 1 1 1 0 0 0 0 0 [ abc ] [cmode] o2 1 [defgh] Rd # [ 0] -# C6.3.179 MOVI move immediate (vector) +# MOVI move immediate (vector) MOVI A64_V 0 Q:1 op:1 0111100000 abc:3 cm:4 01 defgh:5 rd:5 \ !constraints { \ ($op =3D=3D 0 && $cm !=3D 1 && $cm !=3D 3 && $cm !=3D 5 && $cm !=3D 7 && $= cm !=3D 9 && $cm !=3D 11 && $cm !=3D 15) \ || ($op =3D=3D 1 && $cm =3D=3D 14); \ } =20 -# C6.3.183 MVNI move inverted immediate (vector) +# MVNI move inverted immediate (vector) MVNI A64_V 0 Q:1 1 0111100000 abc:3 cm:4 01 defgh:5 rd:5 \ !constraints { \ ($cm =3D=3D 2 || $cm =3D=3D 4 || $cm =3D=3D 6 || $cm =3D=3D 8 || $cm =3D= =3D 10 || $cm =3D=3D 12 || $cm =3D=3D 13); \ } =20 -#C6.3.187 ORR (vector, immediate) +# ORR (vector, immediate) ORRiv A64_V 0 Q:1 0 0111100000 abc:3 cmode:3 1 01 defgh:5 rd:5 \ !constraints { $cmode <=3D 5; } =20 -# C6.3.112 FMOV (vector, immediate) +# FMOV (vector, immediate) FMOViv A64_V 0 Q:1 op:1 0111100000 abc:3 1111 01 defgh:5 rd:5 \ !constraints { $op =3D=3D 0 || $Q =3D=3D 1; } =20 # UnallocatedEncoding() op=3D=3D1 with Q=3D=3D0 FMOViv_RES A64_V 0 0 1 0111100000 abc:3 1111 01 defgh:5 rd:5 =20 -# C6.3.12 +# BIC (vector, immediate) # 31 30 29 19 18 16 15 12 11 10 9 5 4 0 # 0 [ Q ] 1 0 1 1 1 1 1 0 0 0 0 0 [ abc ] [ cmode ] 0 1 [ defgh ] [ Rd ] BICiv A64_V 0 Q:1 1 0111100000 abc:3 cm:4 01 defgh:5 rd:5 \ !constraints { $cm <=3D 11 && ($cm & 0x1) =3D=3D 1; } =20 -# C3.6.7 AdvSIMD scalar copy +# Advanced SIMD scalar copy # Includes just one instruction (DUP element); this pattern includes # all the reserved stuff for bad imm4 and op values DUPes A64_V 0 1 op 1111 0000 imm5:5 0 imm4:4 1 rn:5 rd:5 =20 -# C3.6.8 AdvSIMD scalar pairwise +# Advanced SIMD scalar pairwise # Includes all ops and reserved patterns SCALARPAIR A64_V 0 1 U 11110 size:2 11000 opcode:5 10 rn:5 rd:5 =20 -# C3.6.9 scalar shift immediate +# Advanced SIMD scalar shift by immediate # # 31 30 29 28 27 26 25 24 23 22 19 18 16 15 11 10 9 5 4 = 0 # 0 1 U 1 1 1 1 1 0 [ immh ] [ immb ] [ opcode ] 1 [ Rn ] [ R= d ] @@ -2117,16 +2183,18 @@ SQSHLU_SSI A64_V 0 1 1 111110 immh:4 immb:3 01100 1= rn:5 rd:5 !constraints { $im SQSHRUN_SSI A64_V 0 1 1 111110 immh:4 immb:3 10000 1 rn:5 rd:5 !constraint= s { $immh !=3D 0; } SQRSHRUN_SSI A64_V 0 1 1 111110 immh:4 immb:3 10001 1 rn:5 rd:5 !constrain= ts { $immh !=3D 0; } =20 -# C3.6.10 AdvSIMD scalar three different +# Advanced SIMD scalar three different # Complete coverage. SQDMLAL_S3D A64_V 0 1 U 11110 size:2 1 rm:5 1001 00 rn:5 rd:5 SQDMLSL_S3D A64_V 0 1 U 11110 size:2 1 rm:5 1011 00 rn:5 rd:5 SQDMULL_S3D A64_V 0 1 U 11110 size:2 1 rm:5 1101 00 rn:5 rd:5 =20 -# C3.6.11 AdvSIMD scalar three same +# Advanced SIMD scalar three same # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 11 10 9 5 4 0 # 0 1 U 1 1 1 1 0 size 1 [ Rm ] [ opcode ] 1 [ Rn ] [ Rd ] # +@DataProcessingAdvSIMD,AdvSIMDScalar3Same + SQADD A64_V 01 0 11110 size:2 1 rm:5 00001 1 rn:5 rd:5 SQSUB A64_V 01 0 11110 size:2 1 rm:5 00101 1 rn:5 rd:5 CMGT A64_V 01 0 11110 size:2 1 rm:5 00110 1 rn:5 rd:5 @@ -2164,11 +2232,14 @@ FCMGT A64_V 01 1 11110 1 size:1 1 rm:5 11100 1= rn:5 rd:5 FACGT A64_V 01 1 11110 1 size:1 1 rm:5 11101 1 rn:5 rd:5 \ !constraints { $size !=3D 11; } =20 +@DataProcessingAdvSIMD =20 -# C3.6.12 AdvSIMD scalar two-reg misc +# Advanced SIMD scalar two-register miscellaneous # 31 30 29 28 27 26 25 24 23 22 21 20 16 12 11 10 9 5 4 0 # 0 1 U 1 1 1 1 0 size 1 0 0 0 0 [ opcode ] 1 0 [ Rn ] [ Rd ] # U size opcode +@DataProcessingAdvSIMD,AdvSIMDScalar2RegMisc + ABSs A64_V 01 0 11110 size:2 10000 01011 10 rn:5 rd:5 CMEQzs A64_V 01 0 11110 size:2 10000 01001 10 rn:5 rd:5 CMGTzs A64_V 01 0 11110 size:2 10000 01000 10 rn:5 rd:5 @@ -2204,7 +2275,10 @@ SUQADDs A64_V 01 0 11110 size:2 10000 00= 011 10 rn:5 rd:5 UCVTFvis A64_V 01 1 11110 0 size:1 10000 11101 10 rn:5 rd:5 UQXTN_UQXTN2s A64_V 01 1 11110 size:2 10000 10100 10 rn:5 rd:5 USQADDs A64_V 01 1 11110 size:2 10000 00011 10 rn:5 rd:5 -# C3.6.13 AdvSIMD scalar x indexed element + +@DataProcessingAdvSIMD + +# Advanced SIMD scalar x indexed element # Complete coverage. =20 # Long ops @@ -2219,7 +2293,7 @@ FMLA_SIDX A64_V 0 1 U 11111 sz:2 l m rm:4 0001 h 0 rn= :5 rd:5 FMLS_SIDX A64_V 0 1 U 11111 sz:2 l m rm:4 0101 h 0 rn:5 rd:5 FMUL_FMULX_SIDX A64_V 0 1 U 11111 sz:2 l m rm:4 1001 h 0 rn:5 rd:5 =20 -# C3.6.14 AdvSIMD shift by immediate +# Advanced SIMD shift by immediate # 31 30 29 28 27 26 25 24 23 22 19 18 16 15 11 10 9 5 4 = 0 # 0 Q U 0 1 1 1 1 0 [ immh ] [ immb ] [ opcode ] 1 [ Rn ] [ R= d ] =20 @@ -2286,7 +2360,7 @@ SQSHLU_SI A64_V 0 Q 1 011110 immh:4 immb:3 01100 1 rn= :5 rd:5 !constraints { $imm FCVTZS_SI A64_V 0 Q 0 011110 immh:4 immb:3 11111 1 rn:5 rd:5 !constraints = { $immh !=3D 0; } FCVTZU_SI A64_V 0 Q 1 011110 immh:4 immb:3 11111 1 rn:5 rd:5 !constraints = { $immh !=3D 0; }=20 =20 -# C3.6.15 AdvSIMD three different +# Advanced SIMD three different # the '2' variants are included in the main patterns here SADDL A64_V 0 Q 0 0 1 1 1 0 size:2 1 rm:5 0000 00 rn:5 rd:5 SADDW A64_V 0 Q 0 0 1 1 1 0 size:2 1 rm:5 0001 00 rn:5 rd:5 @@ -2324,7 +2398,7 @@ SQDMULL_RES A64_V 0 Q 1 0 1 1 1 0 size:2 1 rm:5 1101 = 00 rn:5 rd:5 # opcode 1111 unallocated SIMD_3D_RES A64_V 0 Q U 0 1 1 1 0 size:2 1 rm:5 1111 00 rn:5 rd:5 =20 -# C3.6.16 AdvSIMD three same +# Advanced SIMD three same # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 11 10 9 5 4 0 # 0 Q U 0 1 1 1 0 size 1 [ Rm ] [ opcode ] 1 [ Rn ] [ Rd ] SHADD A64_V 0 Q:1 0 01110 size:2 1 rm:5 00000 1 rn:5 rd:5 @@ -2405,7 +2479,7 @@ FMINPv A64_V 0 Q:1 1 01110 size:2 1 rm:5 11110 1 = rn:5 rd:5 # size: 1x BIT A64_V 0 Q:1 1 01110 size:2 1 rm:5 00011 1 rn:5 rd:5 # size: 10 BIF A64_V 0 Q:1 1 01110 size:2 1 rm:5 00011 1 rn:5 rd:5 # size: 11 =20 -# C3.6.17 AdvSIMD two-reg misc +# Advanced SIMD two-register miscellaneous # 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 12 11 10 9 5 = 4 0 # 0 Q U 0 1 1 1 0 [ size ] 1 0 0 0 0 [ opcode ] 1 0 [ Rn ] = [ Rd ] # @@ -2508,7 +2582,7 @@ FRSQRTE A64_V 0 Q:1 1 01110 size:2 10000 11101 10 r= n:5 rd:5 \ FSQRTv A64_V 0 Q:1 1 01110 size:2 10000 11111 10 rn:5 rd:5 \ !constraints { $size > 1; } =20 -# C3.6.18 AdvSIMD vector x indexed element +# Advanced SIMD vector x indexed element # Complete coverage. Note we tend to leave in U bit etc which # may actually be unallocated encodings. =20 @@ -2530,13 +2604,15 @@ FMLA_IDX A64_V 0 Q U 01111 sz:2 l m rm:4 0001 h 0 r= n:5 rd:5 FMLS_IDX A64_V 0 Q U 01111 sz:2 l m rm:4 0101 h 0 rn:5 rd:5 FMUL_FMULX_IDX A64_V 0 Q U 01111 sz:2 l m rm:4 1001 h 0 rn:5 rd:5 =20 -# C3.6.19 Cryptographic AES +# Cryptographic AES +@Cryptographic,CryptographicAES AESE A64_V 0100 1110 sz:2 10100 00100 10 rn:5 rd:5 AESD A64_V 0100 1110 sz:2 10100 00101 10 rn:5 rd:5 AESMC A64_V 0100 1110 sz:2 10100 00110 10 rn:5 rd:5 AESIMC A64_V 0100 1110 sz:2 10100 00111 10 rn:5 rd:5 =20 -# C3.6.20 Cryptographic three-register SHA +# Cryptographic three-register SHA +@Cryptographic,CryptographicSHA SHA1C A64_V 0101 1110 sz:2 0 rm:5 0 000 00 rn:5 rd:5 SHA1P A64_V 0101 1110 sz:2 0 rm:5 0 001 00 rn:5 rd:5 SHA1M A64_V 0101 1110 sz:2 0 rm:5 0 010 00 rn:5 rd:5 @@ -2545,14 +2621,15 @@ SHA256H A64_V 0101 1110 sz:2 0 rm:5 0 100 00 rn:5= rd:5 SHA256H2 A64_V 0101 1110 sz:2 0 rm:5 0 101 00 rn:5 rd:5 SHA256SU1 A64_V 0101 1110 sz:2 0 rm:5 0 110 00 rn:5 rd:5 =20 -# C3.6.21 Cryptographic two-register SHA +# Cryptographic two-register SHA SHA1H A64_V 0101 1110 sz:2 10100 00000 10 rn:5 rd:5 SHA1SU1 A64_V 0101 1110 sz:2 10100 00001 10 rn:5 rd:5 SHA256SU0 A64_V 0101 1110 sz:2 10100 00010 10 rn:5 rd:5 =20 -# C3.6.22 Floating-point compare +# Floating-point compare # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 14 13 12 11 10 9 5 4 = 0 # M 0 S 1 1 1 1 0 type 1 Rm op 1 0 0 0 Rn opcode2 +@DataProcessingScalarFP =20 FCMPS A64_V 000 11110 00 1 rm:5 00 1000 rn:5 00 000 FCMPZS A64_V 000 11110 00 1 rm:5 00 1000 rn:5 01 000 @@ -2573,7 +2650,7 @@ FCMP_RES3 A64_V 000 11110 0 type:1 1 rm:5 op:2 1000 r= n:5 opc:2 000 \ FCMP_RES4 A64_V 000 11110 0 type:1 1 rm:5 00 1000 rn:5 opc:2 op2r:3 \ !constraints { $op2r !=3D 0; } =20 -# C3.6.23 Floating-point conditional compare +# Floating-point conditional compare # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 12 11 10 9 5 4 3 0 # M 0 S 1 1 1 1 0 type 1 Rm cond 0 1 Rn op nzcv =20 @@ -2587,7 +2664,7 @@ FCCMP_RES1 A64_V mos:3 11110 0 type:1 1 rm:5 cond:4 0= 1 rn:5 op:1 nzcv:4 \ !constraints { $mos !=3D 0 && !($mos & 2); } FCCMP_RES2 A64_V 000 11110 1 type:1 1 rm:5 cond:4 01 rn:5 op:1 nzcv:4 =20 -# C3.6.24 Floating-point conditional select +# Floating-point conditional select # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 12 11 10 9 5 4 0 # M 0 S 1 1 1 1 0 type 1 Rm cond 1 1 Rn Rd =20 @@ -2598,7 +2675,7 @@ FCSEL_RES1 A64_V mos:3 11110 0 type:1 1 rm:5 cond:4 1= 1 rn:5 rd:5 \ !constraints { $mos !=3D 0 && !($mos & 2); } FCSEL_RES2 A64_V 000 11110 1 type:1 1 rm:5 cond:4 11 rn:5 rd:5 =20 -# C3.6.25 Floating-point data-processing (1 source) +# Floating-point data-processing (1 source) # 31 30 29 28 27 26 25 24 |23 22| 21 20 15 14 13 12 11 10 9 5 4 0 # M 0 S 1 1 1 1 0 |type | 1 opcode 1 0 0 0 0 Rn Rd =20 @@ -2645,7 +2722,7 @@ FRINT_RES1 A64_V 00011110 1 type:1 1 001 mode:3 10000= rn:5 rd:5 # UnallocatedEncoding: rounding mode =3D=3D 5 FRINT_RES2 A64_V 00011110 type:2 1 001 101 10000 rn:5 rd:5 =20 -# C3.6.26 Floating-point data-processing (2 source) +# Floating-point data-processing (2 source) # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 12 11 10 9 5 4 0 # M 0 S 1 1 1 1 0 type 1 Rm opcode 1 0 Rn Rd =20 @@ -2703,7 +2780,7 @@ FNMUL A64_V 00011110 type:2 1 rm:5 1000 10 rn:5 rd:5 \ # UnallocatedEncoding: type >=3D 2 FNMUL_RES A64_V 00011110 1 type:1 1 rm:5 1000 10 rn:5 rd:5 =20 -# C3.6.27 Floating-point data-processing (3 source) +# Floating-point data-processing (3 source) # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 14 10 9 5 4 0 # M 0 S 1 1 1 1 1 type o1 Rm o0 Ra Rn Rd =20 @@ -2727,7 +2804,7 @@ FNMSUB A64_V 00011111 type:2 1 rm:5 1 ra:5 rn:5 rd:5 \ # UnallocatedEncoding: type >=3D 2 FNMSUB_RES A64_V 00011111 1 type:1 1 rm:5 1 ra:5 rn:5 rd:5 =20 -# C3.6.28 Floating-point immediate +# Floating-point immediate # 31 30 29 28 27 26 25 24 23 22 21 20 13 12 11 10 9 5 4 0 # M 0 S 1 1 1 1 0 type 1 imm8 1 0 0 imm5 Rd =20 @@ -2736,7 +2813,7 @@ FMOVi A64_V 00011110 type:2 1 imm:8 100 00000 rd:5 \ # UnallocatedEncoding: type >=3D 2 FMOVi_RES A64_V 00011110 1 type:1 1 imm:8 100 00000 rd:5 =20 -# C3.6.29 Floating-point<->fixed-point conversions +# Conversion between floating-point and fixed-point # 31 30 29 28 27 26 25 24 23 22 21 20 19 18 16 15 10 9 5 4 0 # sf 0 S 1 1 1 1 0 type 0 rmode opcode scale Rn Rd =20 @@ -2772,7 +2849,7 @@ FCVTZUsf_RES1 A64_V sf:1 0011110 1 type:1 0 11 001 sc= ale:6 rn:5 rd:5 # UnallocatedEncoding: sf =3D=3D 0 && $scale < 0x20 FCVTZUsf_RES2 A64_V 0 0011110 1 type:1 0 11 001 0 scale:5 rn:5 rd:5 =20 -# C3.6.30 Floating-point<->integer conversions +# Conversion between floating-point and integer # 31 30 29 28 27 26 25 24 23 22 21 20 19 18 16 15 14 13 12 11 10 9 5 = 4 0 # sf 0 S 1 1 1 1 0 type 1 rmode opcode 0 0 0 0 0 0 Rn = Rd =20 @@ -2855,3 +2932,8 @@ FCVTZUsi A64_V sf:1 0011110 type:2 1 11 001 000000 rn= :5 rd:5 \ !constraints { $type < 2; } # UnallocatedEncoding: type >=3D 2 FCVTZUsi_RES A64_V sf:1 0011110 1 type:1 1 11 001 000000 rn:5 rd:5 + +@ +# End of: +# Data processing - SIMD and floating point +# Data processing - Scalar Floating-Point and Advanced SIMD --=20 2.15.1 From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1519402543975844.14601710704; Fri, 23 Feb 2018 08:15:43 -0800 (PST) Received: from localhost ([::1]:45503 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epG0d-0004Zi-57 for importer@patchew.org; Fri, 23 Feb 2018 11:15:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48131) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYB-0003gW-Tb for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFYA-0008AN-JK for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:19 -0500 Received: from mail-wr0-x244.google.com ([2a00:1450:400c:c0c::244]:42917) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFYA-00088b-C2 for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:18 -0500 Received: by mail-wr0-x244.google.com with SMTP id k9so14539837wre.9 for ; Fri, 23 Feb 2018 07:46:18 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id l11sm1555999wrg.71.2018.02.23.07.46.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:14 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 1FFB93E0402; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7Sjs2CCBUbpu9zDIalIsjhTXUlerN8td0SAW1XtSwQs=; b=I+WZ3sS2RHv1wACOIL+bgtpGc0JQATKH9K9GpV1QTMQAC1Rja7x2FXpbO0xM7ANUuv NkWgGwyhfQQcB/klHjnWUrbIAZe25AEYIss0YkosREmc4cgrhaDk0aG4+UII78WY1yxT hJiR25ez3pfJNFyDCbuTHNOTQvLKQL0WiXOw0= 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:mime-version:content-transfer-encoding; bh=7Sjs2CCBUbpu9zDIalIsjhTXUlerN8td0SAW1XtSwQs=; b=sxSzoN+IUMBIWCPu2luXtT4KC9jlAJx4UgVOIxj6Jn57Vtm5VDhs+u9OatL6/LGAPs OKhwzIyuiyTXUO4R2ucvuy9e+GGNuc56BdmgJRqvSA9lL1Roc9BfDCeNCYOyIPPBo4lN HzbarZ8FFSuqpmKb/AM/dLP/rZr5iOVTKK5LWd8w9NODGjhLLqFqXREHZFj9CsOT852Q kX+TiDoH2+jO1oslUxp9lhIqkabw08VosNs2uP2FtFgEhAHR+dPaXVi8DvNMHLlgyZ01 13IG74G0c5n59ykimdxABmfNqixPH+GmymNH3i2LJhSPQenZ2PBqc9Pr5nwEdZIDLq9L g7qQ== X-Gm-Message-State: APf1xPAT7kJmsKr2YYWbkljJ9F8lgDLfJE3Dr946hkKtI95D/zztnJ+D 1QqYyYbt+Z1bS7zC5yAX0ybYnw== X-Google-Smtp-Source: AH8x224c/KsK5fB06XcnWtqHyqCVwp3dWGmctkjoxtXjEyuITRY7AagfP8KaKk9tG+ny+aZAea4d5A== X-Received: by 10.223.161.144 with SMTP id u16mr2129278wru.137.1519400777199; Fri, 23 Feb 2018 07:46:17 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:08 +0000 Message-Id: <20180223154613.2096-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::244 Subject: [Qemu-devel] [PATCH v1 3/8] aarch64.risu: add cryptographic extensions for v8.2 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Alex Benn=C3=A9e --- aarch64.risu | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/aarch64.risu b/aarch64.risu index 838bded..06a9f3c 100644 --- a/aarch64.risu +++ b/aarch64.risu @@ -2937,3 +2937,35 @@ FCVTZUsi_RES A64_V sf:1 0011110 1 type:1 1 11 001 00= 0000 rn:5 rd:5 # End of: # Data processing - SIMD and floating point # Data processing - Scalar Floating-Point and Advanced SIMD + +# These are optional ARMv8.2 cryptographic extensions +@v8.2,Cryptographic,CryptographicSHA + +# Cryptographic three-register SHA 512 +# 31 21 20 16 15 14 13 12 11 10 9 5 4 0 +# 11001110011 Rm 1 O 0 0 opcode Rn Rd + +SHA512H A64_V 1100 1110 011 rm:5 1 0 00 00 rn:5 rd:5 +SHA512H2 A64_V 1100 1110 011 rm:5 1 0 00 01 rn:5 rd:5 +SHA512SUI A64_V 1100 1110 011 rm:5 1 0 00 10 rn:5 rd:5 +RAX1 A64_V 1100 1110 011 rm:5 1 0 00 11 rn:5 rd:5 +SM3PARTW1 A64_V 1100 1110 011 rm:5 1 1 00 00 rn:5 rd:5 +SM3PARTW2 A64_V 1100 1110 011 rm:5 1 1 00 01 rn:5 rd:5 +SM4 A64_V 1100 1110 011 rm:5 1 1 00 10 rn:5 rd:5 + +# Cryptographic four-register +# 31 23 22 21 20 16 15 14 10 9 5 4 0 +# 1100 1110 0 Op0 Rm 0 Ra Rn Rd + +EOR3 A64_V 1110 1110 0 00 rm:5 0 ra:5 rn:5 rd:5 +BCAX A64_V 1110 1110 0 01 rm:5 0 ra:5 rn:5 rd:5 +SM3SS1 A64_V 1110 1110 0 10 rm:5 0 ra:5 rn:5 rd:5 + +# Cryptographic two-register SHA 512 +# 31 12 11 10 9 5 4 0 +# 1100 1110 1100 0000 1000 op Rn Rd + +SHA512SU0 A64_V 1100 1110 1100 0000 1000 00 rn:5 rd:5 +SM4E A64_V 1100 1110 1100 0000 1000 01 rn:5 rd:5 + +@ --=20 2.15.1 From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1519402449164198.9119410526796; Fri, 23 Feb 2018 08:14:09 -0800 (PST) Received: from localhost ([::1]:45488 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFz6-0003Bm-7x for importer@patchew.org; Fri, 23 Feb 2018 11:14:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48183) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYE-0003j3-7m for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFYC-0008FY-Oj for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:22 -0500 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:38580) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFYC-0008Cq-Gd for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:20 -0500 Received: by mail-wm0-x232.google.com with SMTP id z9so5366016wmb.3 for ; Fri, 23 Feb 2018 07:46:20 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id k130sm2748806wmg.9.2018.02.23.07.46.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:16 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 2AB873E0427; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/JQYDJTsx6TC/FxJeq/wGoiGNuBgAF5wmf8OnNbEaes=; b=MSBf7mbGN6uKVhUTAkddl84k5PHdztaG00kPMm3iBkwBMfG9jVpuCldWFyKETDgTIO M88ZsemOntcfJTN26megbMUmBgVpgTyudHWU1mSVJXcLQgJIvpz7uTOmxXnaaZmjOJyz Fy1c+EbBtYDudKAETJJVkFvGNXSqUnxP2+zCA= 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:mime-version:content-transfer-encoding; bh=/JQYDJTsx6TC/FxJeq/wGoiGNuBgAF5wmf8OnNbEaes=; b=ZlSQ90DU2qXGOokf1vrHFK+XDD8g5Cq+USnYtgYWmtjrXW5DXVP/heqZQscuxiMxOc rdYX2ZiTcQDIBsbnBUp5hxrs2TpfzXII7jQPH8v/mwqEcELZgN+uRb/WxefJT+AnaX3J w219BhrjtTReF6RVji/rUj9QYLsIM3Lxe30G5o3fIQBqiH3+SikjcR32xvBVn2L7E/7y YoO5YP/NJtILN4OvGqow++N6Iiizoc6sNnknj7CLzKWurc4P+kDuKbRIw44s9No22owo Nhg7GByJ/PfrBPrZBanfT3s6HFH1FIry4AMmsdprM4vY007cw20ht2+8KisGQQxyLB2H +yHg== X-Gm-Message-State: APf1xPCZMNfzoG+1XIFK/ja+FMdqVtmbW8ugPZI5hiaQwq/FtcHfkbS7 ELY6bcsdNDDJGKITyqIaZhslNg== X-Google-Smtp-Source: AH8x227oeXyqZjOYuXXqRJhDp9hN8Gs/jIWHTJVY73/UGqJg4yW3Xno/CHVaJmU7vs4xfHhwS4/eHA== X-Received: by 10.28.191.90 with SMTP id p87mr1667056wmf.145.1519400779199; Fri, 23 Feb 2018 07:46:19 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:09 +0000 Message-Id: <20180223154613.2096-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::232 Subject: [Qemu-devel] [PATCH v1 4/8] new contrib/generate_all.sh: batch risugen script X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 This is a simple script for generating all instructions in a given RISU file. You can split up the batch size by passing a -n N command line options. For example: ./contrib/generate_all.sh -n 2 hp.risu testcases.armv8.2_hp Signed-off-by: Alex Benn=C3=A9e --- contrib/generate_all.sh | 96 +++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 96 insertions(+) create mode 100755 contrib/generate_all.sh diff --git a/contrib/generate_all.sh b/contrib/generate_all.sh new file mode 100755 index 0000000..1e6b847 --- /dev/null +++ b/contrib/generate_all.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# +# Generate all patterns in a given RISU file +# +# Copyright (c) 2017 Linaro Limited +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Alex Benn=C3=A9e - initial implementation +# +# Usage: +# ./contrib/generate_all.sh + +set -e + +USAGE=3D"Usage: `basename $0` [-h] [-n x] " +SPLIT=3D4 +RISUGEN=3D$(CDPATH=3D cd -- "$(dirname -- "$0")/.." && pwd -P)/risugen + +# Parse command line options. +while getopts hn: OPT; do + case "$OPT" in + h) + echo $USAGE + exit 0 + ;; + n) + SPLIT=3D$OPTARG + ;; + \?) + # getopts issues an error message + echo $USAGE >&2 + exit 1 + ;; + esac +done + +# Remove the switches we parsed above. +shift `expr $OPTIND - 1` + +while [ $# -ne 0 ]; do + + if [ -f $1 ]; then + RISU_FILE=3D$1; + elif [ -d $1 ]; then + TARGET_DIR=3D$1; + elif [ ! -e $1 ]; then + TARGET_DIR=3D$1 + fi + + shift +done + +if test -z "${RISUGEN}" || test ! -x "${RISUGEN}"; then + echo "Couldn't find risugen (${RISUGEN})" + exit 1 +fi + +if [ -z "$RISU_FILE" ]; then + echo "Need to set a .risu file for patterns" + exit 1 +fi + +if [ -z "${TARGET_DIR}" ]; then + echo "Need to set a TARGET_DIR" + exit 1 +fi + + +mkdir -p ${TARGET_DIR} + +ALL_INSNS=3D$(cat ${RISU_FILE} | ag "^\w" | cut -f 1 -d " " | sort) +COUNT=3D$(cat ${RISU_FILE=3D} | ag "^\w" | cut -f 1 -d " " | wc -l) +set -- $ALL_INSNS + +GROUP=3D$((COUNT / ${SPLIT})) + +while test $# -gt 0 ; do + INSN_PATTERNS=3D"" + I_FILE=3D"${TARGET_DIR}/insn_" + for i in `seq 1 ${SPLIT}`; do + I=3D$1 + if test -n "${I}"; then + shift + INSN_PATTERNS=3D"${INSN_PATTERNS} --pattern ${I}" + I_FILE=3D"${I_FILE}${I}_" + fi + done + I_FILE=3D"${I_FILE}_INC.risu.bin" + CMD=3D"${RISUGEN} ${INSN_PATTERNS} ${RISU_FILE} ${I_FILE}" + echo "Running: $CMD" + $CMD +done --=20 2.15.1 From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151940273905487.73237573673975; Fri, 23 Feb 2018 08:18:59 -0800 (PST) Received: from localhost ([::1]:45532 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epG3i-00078P-NB for importer@patchew.org; Fri, 23 Feb 2018 11:18:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48208) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYE-0003jo-UA for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFYE-0008J0-7q for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:22 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:50879) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFYE-0008HF-1C for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:22 -0500 Received: by mail-wm0-x242.google.com with SMTP id k87so5479487wmi.0 for ; Fri, 23 Feb 2018 07:46:21 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id x189sm2978325wmg.23.2018.02.23.07.46.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:18 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 357FF3E042D; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4LupEmahGYvlp9nJqL2vPJgu9KV9xKps2AvnIMxgSRI=; b=Zxh5+C0+TJ0POq08wwNdDv00edIs+KUsLnyLD5N869ngPpHK/DHtOnMoUqYLAu2z0P tcHyqQxy7V49cLU2OM2Mua4owSfz5avkerCYfXRZO27znsySAtD8o3aHqOcPRperfTZF adqST8cGxmVlOIoy90bPdqS0WcJDSHGtoIX60= 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:mime-version:content-transfer-encoding; bh=4LupEmahGYvlp9nJqL2vPJgu9KV9xKps2AvnIMxgSRI=; b=cDQ4acqExlbeqMTXUI3KiR4PSWJiP7I1ZAGiX0bbwXuPb1towvjnn+AaqMQk6C9LYr Ghbb0Kbaxq3qVkISJCUHkkL0k+0JSL9FD0g/YlQn5XW7ZKwr5fvUPoboNe9WngoG2lm0 P8ANGuMKT51YmOFpTAH3d45Uns3TGIvzjljIghgZgP0olco/IxSmfqcBnw701C5HcEWV Qepe+qcUAVMGCLtBHW8gCBCZ8PM2COHo5UVKEaY5jmtJnNiA9E+YxRE8dsov/Hmkjtx5 gVooRlaW5rF2plBhOXjcK3WDL9B3Hwn/z3K9eVSYmvYzmVNx/t3ZxfHAXEEhuIUmY7c3 JJUA== X-Gm-Message-State: APf1xPC1rj1KQZFWBB+OICxn78zhu/4nmckwrj4+BKhPwQJph+e3hk6o bVGX2yv1hos8w/w9IHvd5uYQpg== X-Google-Smtp-Source: AH8x227T5LeYJjiF1NoTytiq6QtYGywKk0Vk3WAE9Hit1Mgcay+v82zehN+ugQnv6nTr/RhCgCSlOA== X-Received: by 10.28.229.85 with SMTP id c82mr1782295wmh.76.1519400780864; Fri, 23 Feb 2018 07:46:20 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:10 +0000 Message-Id: <20180223154613.2096-6-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PATCH v1 5/8] contrib/run_risu.sh: allow appending of QEMU_FLAGS X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Useful if you want to disable a feature for your run. For example: set -x QEMU_FLAGS "-cpu fp16=3Doff" Signed-off-by: Alex Benn=C3=A9e --- contrib/run_risu.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/run_risu.sh b/contrib/run_risu.sh index 439cd36..63649dd 100755 --- a/contrib/run_risu.sh +++ b/contrib/run_risu.sh @@ -13,6 +13,7 @@ # # Usage: # (optional) export QEMU=3D/path/to/qemu +# (optional) export QEMU_FLAGS=3D"-cpu any,fp16=3Doff" # (optional) export RISU=3D/path/to/risu # ./run_risu.sh ./testcases.aarch64/*.bin =20 @@ -29,9 +30,10 @@ fi =20 for f in $@; do t=3D"$f.trace" - echo "Running $f against $t" + CMD=3D"${QEMU} ${QEMU_FLAGS} ${RISU} $f -t $t" + echo "Running: ${CMD}" if [ -e $t ]; then - ${QEMU} ${RISU} $f -t $t + ${CMD} if [ $? =3D=3D 0 ]; then passed=3D( "${passed[@]}" $f ) else --=20 2.15.1 From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1519402910100833.8088438839352; Fri, 23 Feb 2018 08:21:50 -0800 (PST) Received: from localhost ([::1]:45554 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epG6R-0001K8-Ul for importer@patchew.org; Fri, 23 Feb 2018 11:21:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48243) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYG-0003l5-5A for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFYF-0008L5-8M for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:24 -0500 Received: from mail-wr0-x242.google.com ([2a00:1450:400c:c0c::242]:41818) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFYF-0008JM-0a for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:23 -0500 Received: by mail-wr0-x242.google.com with SMTP id f14so14531874wre.8 for ; Fri, 23 Feb 2018 07:46:22 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id m15sm1560862wrb.58.2018.02.23.07.46.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:18 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 4044B3E043F; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MJH5QsGyQIr7+pwTfDPq8GU9dsbKD7aNRpj5e98Qd5A=; b=b1E6bCtI9NFNNAJCKn+4YIna7B+Sp7iyF0oVSbjksOzZ0+NLg+N3BlqWri8Vz6PRgR p6kiil9WprIooFzIfoN/xsEy91AW2XABU+8beuhF5Bi4fwsV/3nZ7JDXi+TKoBnccST5 2tBL3gR4TyEnlC8mXAUMzmP8eFXbWdcTYxOBQ= 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:mime-version:content-transfer-encoding; bh=MJH5QsGyQIr7+pwTfDPq8GU9dsbKD7aNRpj5e98Qd5A=; b=ljjZI2hmv69mdKJvbXCQQxOMecMiD2K4Tud4bkRGsTU3M6ZzdudWvgAKlNnv3kI8MK yYeddij2CI5wuSr+pe+4njCByt0pau+NTZemhoKc2tRaXB/gagD2sy1bpToJ2wFfZRvi Q7F3hhPidNPHRFuVWpJtx6aDtisVaeBMRSZ4jPiEzMl9MFzPDJMWq/sbKe9sDe3n8lnP C90E9aNFLFXHvGP1qC3kEdei6TXRRunomJqCt4mwhpcOjMSDAkGEtQbMOkv4EwvUe1g7 WeZTt602WeCwQfHCj7vvLKI3dKuZfulAThaOhpnZs9PVbOEKyy4/wAf3wylb0TW9zSBU O9AQ== X-Gm-Message-State: APf1xPCFikOBfhw8tFaKFoIRQBjyo/6rT6/9/Eq3jW2q+/Hq5JP/TEnH /yhQK9u2qAXq7ZJNjUVpBVGa2w== X-Google-Smtp-Source: AH8x226Itt84BTeUVuLHz/KBrsZwVA9RcSWN+1te6rwkhH2QlqAJ6UaJhCVzXl8BsJC+cz9yqXTCZQ== X-Received: by 10.223.135.17 with SMTP id a17mr2022941wra.126.1519400781873; Fri, 23 Feb 2018 07:46:21 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:11 +0000 Message-Id: <20180223154613.2096-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::242 Subject: [Qemu-devel] [PATCH v1 6/8] contrib/run_risu.sh: don't set -e X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 As the script is meant to summarise the results at the end it doesn't make sense to bail out at the first error. Signed-off-by: Alex Benn=C3=A9e --- contrib/run_risu.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/contrib/run_risu.sh b/contrib/run_risu.sh index 63649dd..2d1897a 100755 --- a/contrib/run_risu.sh +++ b/contrib/run_risu.sh @@ -17,8 +17,6 @@ # (optional) export RISU=3D/path/to/risu # ./run_risu.sh ./testcases.aarch64/*.bin =20 -set -e - passed=3D() failed=3D() missing=3D() --=20 2.15.1 From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1519402749130171.36220179454722; Fri, 23 Feb 2018 08:19:09 -0800 (PST) Received: from localhost ([::1]:45534 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epG3w-0007N1-69 for importer@patchew.org; Fri, 23 Feb 2018 11:19:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYH-0003n1-FI for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFYG-0008OB-LA for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:25 -0500 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]:43637) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFYG-0008MT-Ek for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:24 -0500 Received: by mail-wr0-x243.google.com with SMTP id u49so14534443wrc.10 for ; Fri, 23 Feb 2018 07:46:24 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id u136sm2072951wmf.5.2018.02.23.07.46.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:19 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 4AF4B3E047D; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Tvj7hqhGVHGglOeOwsZrW02zgHzN5WsZE6FOWeebp5U=; b=PDpFkzDjBM84bRyDwj0bJ7dSC0vvWNZu62UKhi8DUUGoeuAGmWQYqlode9yNPt/kzr kJjuFpU9NXplgtcnv/eDq9g/2sFZfwRjekPKhZTyEBvL0TtjrToSYl/XDpopOMov3SH4 8BNjkO/cnT1O2uH6UMkWB6xrTAehwXIJcz3Pg= 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:mime-version:content-transfer-encoding; bh=Tvj7hqhGVHGglOeOwsZrW02zgHzN5WsZE6FOWeebp5U=; b=P7qG0377dB28TETEuCa3sAPosmOuatFEIbqE0LJvGk5q5zrrjPJNBD4kqGfaffRvZE gm7yQ5MWhDi+qIyjh9S00X/0ypbwklvf37MdoGgOT4Yd0uAvHANJHp4Lb8gblzF1ddPY h6xOPGBk9xe6w7ZrLRJ7r7dEkn0zNXfbs+VfdpxhUNIrRY3IgvudoLjnDP9A9L9NDp1b mHdaw+BWaAJf9y/QgkDQvO9gjeTZS2wgvnuKgfb7a4SAOES/3k6rnoq58MxG/9G7Zkhk rgt27+Uw7UTsGyRVwC0pEWbNejXR66euJVyn5Vz8wGHjjKLZknega8rYNHkjz7VzeEqc uSDg== X-Gm-Message-State: APf1xPAN2eNDgMXvWB0XGO+CqExzBGP+31qpHJFqxqKGFekk3aBr/U/Z IHTqeuOrTXXwoHuTBA/eK7YxQA== X-Google-Smtp-Source: AH8x224gAeJpSQudKXaxFWpLleK9CsUaLqDzstPUpSa7OmAhGA+MOnpge5ahEv88yWQ+U3ALHLq7VQ== X-Received: by 10.223.135.51 with SMTP id a48mr1999972wra.149.1519400783319; Fri, 23 Feb 2018 07:46:23 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:12 +0000 Message-Id: <20180223154613.2096-8-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::243 Subject: [Qemu-devel] [PATCH v1 7/8] contrib/run_risu.sh: add a visual cue for a clean-run X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 It saves you from having to check the status code or wonder if the errors just scrolled off your screen. Signed-off-by: Alex Benn=C3=A9e --- contrib/run_risu.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/run_risu.sh b/contrib/run_risu.sh index 2d1897a..fc69d83 100755 --- a/contrib/run_risu.sh +++ b/contrib/run_risu.sh @@ -61,6 +61,8 @@ if test ${#failed[@]} -gt 0; then for f in "${failed[@]}"; do echo "$f" done +else + echo "No Failures ;-)" fi =20 exit ${#failed[@]} --=20 2.15.1 From nobody Wed Oct 22 04:11:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151940259643360.55576721446357; Fri, 23 Feb 2018 08:16:36 -0800 (PST) Received: from localhost ([::1]:45514 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epG1Q-0005Gw-A5 for importer@patchew.org; Fri, 23 Feb 2018 11:16:32 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48308) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1epFYK-0003qd-G4 for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1epFYH-0008Qp-N7 for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:28 -0500 Received: from mail-wr0-x242.google.com ([2a00:1450:400c:c0c::242]:44747) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1epFYH-0008OZ-Eu for qemu-devel@nongnu.org; Fri, 23 Feb 2018 10:46:25 -0500 Received: by mail-wr0-x242.google.com with SMTP id v65so14522971wrc.11 for ; Fri, 23 Feb 2018 07:46:25 -0800 (PST) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id h90sm2674184wrh.44.2018.02.23.07.46.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Feb 2018 07:46:19 -0800 (PST) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 55B133E055F; Fri, 23 Feb 2018 15:46:14 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Adg/ZcfasB+2VK2UtJmEm0WhsdZjY7OvHR3Wu90d2IM=; b=dyXCHjsMLC/GuZAM41wJBoLgt6SYTyuC8nBSKnGl/Xd9fXo/2PzpyahK9ODBE9XoHk bSkVYcQt+go/YSyhJ/ehxEyq+oIe7tS4LkfIfn1Tu9SCL7TJ30FCJgjxQoSLEzRE9txi gHXaKSoGG9j/ZTjXGLQKrDCoTi3dB6DFuk6Bw= 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:mime-version:content-transfer-encoding; bh=Adg/ZcfasB+2VK2UtJmEm0WhsdZjY7OvHR3Wu90d2IM=; b=M0WBq1GPHJE5ZlhFkmCk2OxNyFFYhPQ2+gnTxW5YE1+ccMdFgFKU2P+iBMzALbmOen VWzu4tIN9/zvq7esDiSLGIlaMYuojOPUXRjClyR66FAwrcc8UVMpOR0K9NjxIoOpN00m TI92wVxrFe7NGfywu8LGgAt0APPlZea11uiiJplQEUObrPaI1QlFTCDJCf90Y9AqrTrR qKTEUcLBWzSJKS4ncYiac8z1bqlM8HKIm3eEWjqGQ2yevz0UZgaiH3YUUTguztD6Dg99 7RovVKd8mynS3AGQi8PaDQaZf4tI7bqjWzQOteGhjXWN4sLp9UYw5A9oOkM9RnvNnzwh +bMA== X-Gm-Message-State: APf1xPB92o/kZKHXAMrgot5gLJrPkB3s0xFoOrd2rb6oQGtQjDqd3q4v zcZKTYA0ThGep5oki9Loz9okRQ== X-Google-Smtp-Source: AH8x226Pt6B5sc0BMKmEeEqxCiYMIA3hmfu+13eOlM+nJijli+8KNoLEyPkGedm8lCNY1Z02/KBWkg== X-Received: by 10.223.135.17 with SMTP id a17mr2023043wra.126.1519400784233; Fri, 23 Feb 2018 07:46:24 -0800 (PST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 23 Feb 2018 15:46:13 +0000 Message-Id: <20180223154613.2096-9-alex.bennee@linaro.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180223154613.2096-1-alex.bennee@linaro.org> References: <20180223154613.2096-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::242 Subject: [Qemu-devel] [PATCH v1 8/8] aarch64.risu: update Floating-point data-processing (1 source) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-arm@nongnu.org, richard.henderson@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 This adds the half-precision encoding and shuffles around the RES space to indicate this. Signed-off-by: Alex Benn=C3=A9e --- aarch64.risu | 55 +++++++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/aarch64.risu b/aarch64.risu index 06a9f3c..5b11e50 100644 --- a/aarch64.risu +++ b/aarch64.risu @@ -2678,49 +2678,48 @@ FCSEL_RES2 A64_V 000 11110 1 type:1 1 rm:5 cond:4 1= 1 rn:5 rd:5 # Floating-point data-processing (1 source) # 31 30 29 28 27 26 25 24 |23 22| 21 20 15 14 13 12 11 10 9 5 4 0 # M 0 S 1 1 1 1 0 |type | 1 opcode 1 0 0 0 0 Rn Rd - +# +# v8.2 introduced half-precision variants +@FPDataProc1Src # FMOV (register) opc =3D 0 -FMOV A64_V 00011110 type:2 1 0000 00 10000 rn:5 rd:5 \ -!constraints { $type < 2; } -# UnallocatedEncoding: type >=3D 2 -FMOV_RES A64_V 00011110 1 type:1 1 0000 00 10000 rn:5 rd:5 - +FMOV A64_V 00011110 0 type:1 1 0000 00 10000 rn:5 rd:5 +FMOV_RES A64_V80 00011110 1 type:1 1 0000 00 10000 rn:5 rd:5 +FMOV A64_V82 00011110 type:2 1 0000 00 10000 rn:5 rd:5 # FABS (scalar) opc =3D 1 -FABS A64_V 00011110 type:2 1 0000 01 10000 rn:5 rd:5 \ -!constraints { $type < 2; } -# UnallocatedEncoding: type >=3D 2 -FABS_RES A64_V 00011110 1 type:1 1 0000 01 10000 rn:5 rd:5 - +FABS A64_V 00011110 0 type:1 1 0000 01 10000 rn:5 rd:5 +FABS_RES A64_V80 00011110 1 type:1 1 0000 01 10000 rn:5 rd:5 +FABS A64_V82 00011110 type:2 1 0000 01 10000 rn:5 rd:5 # FNEG (scalar) opc =3D 2 -FNEG A64_V 00011110 type:2 1 0000 10 10000 rn:5 rd:5 \ -!constraints { $type < 2; } -# UnallocatedEncoding: type >=3D 2 -FNEG_RES A64_V 00011110 1 type:1 1 0000 10 10000 rn:5 rd:5 - +FNEG A64_V 00011110 0 type:1 1 0000 10 10000 rn:5 rd:5 +FNEG_RES A64_V80 00011110 1 type:1 1 0000 10 10000 rn:5 rd:5 +FNEG A64_V82 00011110 type:2 1 0000 10 10000 rn:5 rd:5 # FSQRT (scalar) opc =3D 3 -FSQRT A64_V 00011110 type:2 1 0000 11 10000 rn:5 rd:5 \ -!constraints { $type < 2; } -# UnallocatedEncoding: type >=3D 2 -FSQRT_RES A64_V 00011110 1 type:1 1 0000 11 10000 rn:5 rd:5 - +FSQRT A64_V 00011110 0 type:1 1 0000 11 10000 rn:5 rd:5 +FSQRT_RES A64_V80 00011110 1 type:1 1 0000 11 10000 rn:5 rd:5 +FSQRT A64_V82 00011110 type:2 1 0000 11 10000 rn:5 rd:5 # FCVT (all forms) - NB: conversion with src =3D dst is not allowed -FCVT A64_V 00011110 type:2 1 0001 opc:2 10000 rn:5 rd:5 \ +FCVT A64_V 00011110 type:2 1 0001 opc:2 10000 rn:5 rd:5 \ !constraints { $type !=3D 2 && $opc !=3D 2 && $type !=3D $opc; } +FCVT A64_V82 00011110 type:2 1 0001 opc:2 10000 rn:5 rd:5 \ +!constraints { $type !=3D $opc; } # UnallocatedEncoding: type =3D=3D 2 -FCVT_RES1 A64_V 00011110 10 1 0001 opc:2 10000 rn:5 rd:5 +FCVT_RES1 A64_V80 00011110 10 1 0001 opc:2 10000 rn:5 rd:5 # UnallocatedEncoding: opc =3D=3D 2 -FCVT_RES2 A64_V 00011110 type:2 1 0001 10 10000 rn:5 rd:5 +FCVT_RES2 A64_V80 00011110 type:2 1 0001 10 10000 rn:5 rd:5 # UnallocatedEncoding: type =3D=3D opc -FCVT_RES3 A64_V 00011110 type:2 1 0001 opc:2 10000 rn:5 rd:5 \ +FCVT_RES3 A64_V 00011110 type:2 1 0001 opc:2 10000 rn:5 rd:5 \ !constraints { $type =3D=3D $opc; } =20 # FRINT (scalar), all rounding modes -FRINT A64_V 00011110 type:2 1 001 mode:3 10000 rn:5 rd:5 \ +FRINT A64_V 00011110 type:2 1 001 mode:3 10000 rn:5 rd:5 \ !constraints { $type < 2 && $mode !=3D 5; } +FRINT A64_V82 00011110 type:2 1 001 mode:3 10000 rn:5 rd:5 \ +!constraints { $mode !=3D 5; } # UnallocatedEncoding: type >=3D 2 -FRINT_RES1 A64_V 00011110 1 type:1 1 001 mode:3 10000 rn:5 rd:5 +FRINT_RES1 A64_V80 00011110 1 type:1 1 001 mode:3 10000 rn:5 rd:5 # UnallocatedEncoding: rounding mode =3D=3D 5 -FRINT_RES2 A64_V 00011110 type:2 1 001 101 10000 rn:5 rd:5 +FRINT_RES2 A64_V 00011110 type:2 1 001 101 10000 rn:5 rd:5 +@ =20 # Floating-point data-processing (2 source) # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 12 11 10 9 5 4 0 --=20 2.15.1