From patchwork Tue Oct 31 14:54:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 117639 Delivered-To: patch@linaro.org Received: by 10.80.245.45 with SMTP id t42csp4053470edm; Tue, 31 Oct 2017 07:59:20 -0700 (PDT) X-Google-Smtp-Source: ABhQp+RLP3/FsOuSfZ6yz3/BwJY0nnO46X5qZwU8XeNZGVsZTChEyD3Dt8FcHvaP9Vwb/9bqwmPK X-Received: by 10.13.226.80 with SMTP id l77mr1383775ywe.14.1509461960521; Tue, 31 Oct 2017 07:59:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509461960; cv=none; d=google.com; s=arc-20160816; b=CKRfyvbG9k+icBbwqCj8RtLOEWu7uIyPw80yy3uZCEzJcQviTzI44HxoWTJNUtBHG1 KeAn7VaHvRKjGiAN8qzvQ/Ae8Y2MKmk/GxrBcND6gORLkr4HFyYjF+xfxFPO3OJTEtRo fcnZVe8hUgMkhf0BmXlUg140W1acoIePDakntVvDUKILm4gGmE4oxkU6YkM6QiHhE4+C g+0iS/g8g+X6OVZ+vZMKJmPtu74H04QeDyLu3CJnG9WOahp950dTu8IDQee8ryFpgBNR D9nzJ1Gu87G+KaH9qPicvhYr26JuQkqswamXcyqAfF4G+PQ9cpuiqdjVez6FEK3+7hal Zqow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=2dcYdIq7nvzJFa9ryE+9uKiSNtRXxC/w+4ZYuIF9U8Q=; b=NyOfDEoPccViFcdjus4Tbmp+WiL96N/bFzQh1ctvfRHJ9JOVDkyNfUBiIF3RDs3jOQ DDJzYTmwAAGtbdriAOEdpnqlu77b65RR1b16ERWneHtm78n2R9IFvvG7QEAu/9R+/gcp kgHh9zpUXqUtFO5DpgbIJnrcMTcheewl6qlV5WZnw2TYjW5OH1UlOLmTFeXG1UqHeH4+ 5Cnr9pf16K0PPrrylpGGqNrfzjiSf290o2gVL7h0b+Aacui8FW9DxNHmEuPTqWNncxMn U6bN4Y4SLE5BUD+OMzoR/X4DCcWkbFSrM+NdbkVydNeMhuveSmWnUcNZa9c4V+IHEdSd uIig== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=IJ3m/CHR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id f15si436876ybg.513.2017.10.31.07.59.20 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 31 Oct 2017 07:59:20 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=IJ3m/CHR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:46010 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Y0d-0003ip-Vv for patch@linaro.org; Tue, 31 Oct 2017 10:59:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59323) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9XwY-0000ah-UF for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9XwV-00071O-5N for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:07 -0400 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:45820) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e9XwU-00070v-Vm for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:03 -0400 Received: by mail-wm0-x242.google.com with SMTP id y80so16283781wmd.0 for ; Tue, 31 Oct 2017 07:55:02 -0700 (PDT) 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=2dcYdIq7nvzJFa9ryE+9uKiSNtRXxC/w+4ZYuIF9U8Q=; b=IJ3m/CHRUr5f6/R/SsLB0PjTTcHreP0cOjWRLzWrdcyLnwJ/5O5uuu1RCoJSn6kASu H+tS/ZuEzfvUv/zXYVYnzuAVuu0u/UVsB0uSb/5ssvsdZgrUDlL+jukOzYXDJBHbvZaM w76GL+7NzlXjj9PF/scba9aOINAh4oGc5iowE= 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=2dcYdIq7nvzJFa9ryE+9uKiSNtRXxC/w+4ZYuIF9U8Q=; b=kh+VrTFVqMf7La45lpOGgiL8IjRQFwJutfSFT25VRyPHbTBcMIM+N9AX5tgJB5h4gB KZqVRovgduc6hpL9Efey/yivHT6I69Si4wNSppMkgQ5hd2ZS15r2o8fppP9pw6kD5xxk V5fdtorAmq/sS6V62rEocqLnoBh4QMN9jyj3DIGPV8Blt+nB+QI0A3MOTwY+Y62bxm5p rOXYhw/7zUWZHaod1ppSHyqBhahoSeL1KvN1a6KHMjNbS6djIbMzHB+K5AghmOCMXT4q AvmPm5M9A9xYOtP6rL0+OsboOkkXTrVCtMhZjQTSHN+fzNu/pV/LQeTjx0QiJ1F0ZnKv vpGQ== X-Gm-Message-State: AMCzsaUQc3sCN1GUKfpvExKsuqm7g0HTauI+QYpBL1+uVfPaf0FCH/mr QY06Ge4cK7jbgvd7EDd4MnOMSQ== X-Received: by 10.28.227.139 with SMTP id a133mr2253875wmh.104.1509461701804; Tue, 31 Oct 2017 07:55:01 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id n64sm1303927wmd.36.2017.10.31.07.54.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 07:54:58 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id A9E993E0CA1; Tue, 31 Oct 2017 14:54:57 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 31 Oct 2017 14:54:38 +0000 Message-Id: <20171031145444.13766-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171031145444.13766-1-alex.bennee@linaro.org> References: <20171031145444.13766-1-alex.bennee@linaro.org> MIME-Version: 1.0 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] [RISU PATCH 1/7] aarch64.risu: document naming conventions 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: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alex Bennée --- aarch64.risu | 8 ++++++++ 1 file changed, 8 insertions(+) -- 2.14.2 diff --git a/aarch64.risu b/aarch64.risu index 2f3341c..5e7ec59 100644 --- a/aarch64.risu +++ b/aarch64.risu @@ -19,6 +19,14 @@ # XXX NIY: SP-related instructions # XXX NIY: floating point and SIMD specific insns +# Instruction suffixes to identify variants +# m - memory (loads/stores) +# s - scalar +# v - vector +# z - zero (e.g. compare to zero) +# f - fixed point +# + # - - - - 1 - 0 - - - - - - - - - - - - - - - Loads and stores # C3.3 Loads and stores From patchwork Tue Oct 31 14:54:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 117638 Delivered-To: patch@linaro.org Received: by 10.80.245.45 with SMTP id t42csp4052441edm; Tue, 31 Oct 2017 07:58:22 -0700 (PDT) X-Google-Smtp-Source: ABhQp+T2t/48KbY7Zq44Ir+AVejlFb4vTZe1c6WsaR0IGcfx7UJFwYH1Z6LcRV9JP8xd84xNPIej X-Received: by 10.37.252.28 with SMTP id v28mr1409034ybd.518.1509461902043; Tue, 31 Oct 2017 07:58:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509461902; cv=none; d=google.com; s=arc-20160816; b=En6Nz39vqMxEg/Q3KU2kPbK0NQuN6Z0Gs20twnq1HgPfjWFQD67OiAl10V3KBJAkft C8Qm6WghtLhg/XD/7gnaxTVvJ3V4AhF0tNcDz0ezDXfhdQ45RLkDViahuDiMLCmRI05d SWpkMia+OSdBtbiwCbB+w5sr9q+QYL40jH39bhpBquQuihomk16mXi9RmOnQQn6zjOIR btCfjczxHdWAHp00MqzP6R/gdzpJk9qRVjIqTHoZfizr0BzlMPvWl4pPsk+FPBA6bji9 UGDxqZ4Cx6UHn+44pI9C/FixRLPXdWI6FC4VrkM+PI8+/sVbu/x3CiNDio6TMWHytOhS 0ufw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=2Lqh8BBEM3sUAq6gDP0DHBGu9CXBjhS7oEfuKHtfWDA=; b=zlUCvc5CkBcxlSNFGBtRSocHbVusnrYx+gzpeU6Ym3KSEGuOaD0m5TPHOeIZgMba46 wi++uZIRlymD+OyHJIrAq1Qhpow1zBIIwWGNZPbbjNGj+csjF9/lok91tqRdvznC7vQ5 xkTCf8ZBxIRoZfxSv2YLK54XbkwvC/ufuYaiwGWBTzLhLSHiB36LcwNcqUHwQvvH0tDH UKlC5QJVN3yW9O2EU6aZhyURyTzvwuOD8EEr+cMwHqicTgwKUwhzGUnu5bez/9M98ML/ Ue3Lllu0Djee8/c8PFYhagOT4kKgx3M1bGdvpLq9Y1LCdQ4PyKGxU5biaY2qupHE49HC ry6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=I7M/C9wc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id f130si437280ywa.339.2017.10.31.07.58.21 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 31 Oct 2017 07:58:22 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=I7M/C9wc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:46003 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Xzh-00036t-IE for patch@linaro.org; Tue, 31 Oct 2017 10:58:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9XwW-0000aW-KC for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9XwT-00070W-F5 for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:04 -0400 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:55832) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e9XwT-0006zx-8G for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:01 -0400 Received: by mail-wm0-x243.google.com with SMTP id y83so23681757wmc.4 for ; Tue, 31 Oct 2017 07:55:01 -0700 (PDT) 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=2Lqh8BBEM3sUAq6gDP0DHBGu9CXBjhS7oEfuKHtfWDA=; b=I7M/C9wcReFro8cvfVScDWIDG3DQ8oVdTDzahhKHucHTTGiPQfwMSHzNG1/nbk9TRt tBIl7DsQH68nyCrx8g4clShMxrf3LJdLOznc/1PIBs3RmR2XDmGyoBXpzpMEIL2YnHwJ L5LYPE8uF945jsq46rzhK1YwjHH0r9mBKUSm0= 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=2Lqh8BBEM3sUAq6gDP0DHBGu9CXBjhS7oEfuKHtfWDA=; b=t5MFoyRCXG4YnCGHkkj/qd6bYKXbbe0elMVwZKU88VhJQf5chkenGVao+6IqISM2OY hfGOGxxpiGKzqHkED/+//uvDy8V5Hls9WgzuxaJ9ES6d/Wzvl660tp4FibeJ9nJzTwaC uA4dvHuCTmNX51jYHBWTHykqUmwlqbhbS0bfOwKNguywd8uP8iBHrgvRAIUUHyOKkpaG e3SGTyQa/Aa22U/r1/fbdqmb30pFTtws02iwW+QMBcWAanoQukE4bjXKFo9IXL5EVTmS PsKP+NDTSRrrzX2xN69SaB2Vn/bNlBkva0NXqJ1dSUy9zMHswlj99z4TwM/bNaiS7tMh 9dFQ== X-Gm-Message-State: AMCzsaW+MpfIZaFtHJfM+D3s3KFMt45h862FD9hO/eBPlQe8Mkvta8Tp 6l/tMtqAcaHyqTqLIq1/iU1WLA== X-Received: by 10.28.54.89 with SMTP id d86mr2064048wma.101.1509461700050; Tue, 31 Oct 2017 07:55:00 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id 92sm697393wrd.15.2017.10.31.07.54.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 07:54:58 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id B45B93E0CFC; Tue, 31 Oct 2017 14:54:57 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 31 Oct 2017 14:54:39 +0000 Message-Id: <20171031145444.13766-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171031145444.13766-1-alex.bennee@linaro.org> References: <20171031145444.13766-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [RISU PATCH 2/7] aarch64.risu: remove duplicate AdvSIMD Scalar 3 same block 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: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" A chunk of the AArch64 definitions repeat themselves. Clean that up. Signed-off-by: Alex Bennée --- aarch64.risu | 22 ---------------------- 1 file changed, 22 deletions(-) -- 2.14.2 diff --git a/aarch64.risu b/aarch64.risu index 5e7ec59..c9f24cd 100644 --- a/aarch64.risu +++ b/aarch64.risu @@ -2165,28 +2165,6 @@ 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 != 11; } -CMTST A64_v 01 0 11110 size:2 1 rm:5 10001 1 rn:5 rd:5 -SQDMULH A64_v 01 0 11110 size:2 1 rm:5 10110 1 rn:5 rd:5 -FMULX A64_v 01 0 11110 0 size:1 1 rm:5 11011 1 rn:5 rd:5 -FCMEQ A64_v 01 0 11110 0 size:1 1 rm:5 11100 1 rn:5 rd:5 -FRECPS A64_v 01 0 11110 0 size:1 1 rm:5 11111 1 rn:5 rd:5 -FRSQRTS A64_v 01 0 11110 1 size:1 1 rm:5 11111 1 rn:5 rd:5 -UQADD A64_v 01 1 11110 size:2 1 rm:5 00001 1 rn:5 rd:5 -UQSUB A64_v 01 1 11110 size:2 1 rm:5 00101 1 rn:5 rd:5 -CMHI A64_v 01 1 11110 size:2 1 rm:5 00110 1 rn:5 rd:5 -CMHS A64_v 01 1 11110 size:2 1 rm:5 00111 1 rn:5 rd:5 -USHL A64_v 01 1 11110 size:2 1 rm:5 01000 1 rn:5 rd:5 -UQSHL A64_v 01 1 11110 size:2 1 rm:5 01001 1 rn:5 rd:5 -URSHL A64_v 01 1 11110 size:2 1 rm:5 01010 1 rn:5 rd:5 -UQRSHL A64_v 01 1 11110 size:2 1 rm:5 01011 1 rn:5 rd:5 -SUBv A64_v 01 1 11110 size:2 1 rm:5 10000 1 rn:5 rd:5 -CMEQ A64_v 01 1 11110 size:2 1 rm:5 10001 1 rn:5 rd:5 -SQRDMULH A64_v 01 1 11110 size:2 1 rm:5 10110 1 rn:5 rd:5 -FCMGE A64_v 01 1 11110 0 size:1 1 rm:5 11100 1 rn:5 rd:5 -FACGE A64_v 01 1 11110 0 size:1 1 rm:5 11101 1 rn:5 rd:5 -FABD A64_v 01 1 11110 1 size:1 1 rm:5 11010 1 rn:5 rd:5 -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 # C3.6.12 AdvSIMD scalar 2reg misc CMGTzero A64_V 01 0 11110 size:2 10000 01000 10 rn:5 rd:5 From patchwork Tue Oct 31 14:54:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 117634 Delivered-To: patch@linaro.org Received: by 10.80.245.45 with SMTP id t42csp4049501edm; Tue, 31 Oct 2017 07:55:36 -0700 (PDT) X-Google-Smtp-Source: ABhQp+Sb94zNirB8dygDs8RzowPQ+faj2h5HbGxRVhQrvPoObWgbynr4EFO7mWERdLp5sbNxIquy X-Received: by 10.13.192.196 with SMTP id b187mr1443108ywd.416.1509461736092; Tue, 31 Oct 2017 07:55:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509461736; cv=none; d=google.com; s=arc-20160816; b=Nv93mSSS+8IPkzAP2q4D6/8wwwBOb5LHyrFnrgjZ7gkl6r+gaJt5uXS1YZDIaWsoPW N/1XAs3AhcQFkUD54R6yqstLgpzfLSviz67a0oGjNYz712J5dITLLkYUYajkcIEsDqFr sOp3GxgKPte64NqGG45XNn3WHwkqjgH+Q5hhhAbdasCXvS10qKfEiMU6jZWLtyseYs8H h0fgAUhKewU6tYDka/+Oh94hAN/s8H1VP3Ed4tFXwIHgMutfKfuEFPE3qOUra78tLNMq fhbt9j0Wj5otP7ChILI5v7MiWu0hv+jKwBgCTZ/PEiDD33brJBYOgK+kg+WluGkyNiSE n4YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=J4tcVroP/ZB/1X/CBfYacbnGKmiMPBQP6TkCK0zQugg=; b=SIJ1jK4fdUPldLcuDo7G+KuXa4IZROBQN8r9fExTQ1i3XpTlh3i66kFnMg1Wbo/sTE uoNfe1+rn6x47cHQ35bE+EoV9bsXsCvaSXV/Mdyq14lyieucWKztMgLK8AP/5o5+FOY2 suYbT9GfLYXh1h36HauU2Z50A3Z/3u3vrLtMjjZmY9n0MetaBuUe9enQoOm6hwcWnaJa nRzctZt9qWDOUorV+8FhVfIvzTgguTCFBIjGT6rd8NpRvNs985vZu9itf46G3o95dRN8 3QcOvNgpJR+u4Zj8y8bP0h/Ddw789HZt5dXWh5NPjy5O3G8h+O36GTrJu481YxhHm8K8 Hsmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=FcBl/0C4; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id j125si435669ywg.68.2017.10.31.07.55.35 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 31 Oct 2017 07:55:36 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=FcBl/0C4; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:45992 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Xx1-0000iZ-Am for patch@linaro.org; Tue, 31 Oct 2017 10:55:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59371) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Xwb-0000cG-6L for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9XwW-000721-PN for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:09 -0400 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:49654) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e9XwW-00071g-FE for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:04 -0400 Received: by mail-wr0-x241.google.com with SMTP id g90so16207337wrd.6 for ; Tue, 31 Oct 2017 07:55:04 -0700 (PDT) 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=J4tcVroP/ZB/1X/CBfYacbnGKmiMPBQP6TkCK0zQugg=; b=FcBl/0C49ZaeRq2dhXv07FA18XADCDEiCPJnlOLwCcXlcY+jJ9azsNKVe26l1pi1DC EiE5oHc9bHn0OpR7O9SxFThMSiaP75PcnPeXbYDfMPiX4qmZ0hZq3F/wLiy6WdFaZ+bK B7lTUZqDVy+T1WQuqmxkIUb0S71+76aLCnAnA= 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=J4tcVroP/ZB/1X/CBfYacbnGKmiMPBQP6TkCK0zQugg=; b=e8nGNMZBnc7GmXSrZ0wvFtyNzuo7NzahmMFo5qeqLKy+1zFjlrmgwmxoiQJNA6nRhL aIWByxOAoQRGH7Yx08N8HGMmSINClZuTBMJ0eCY/lfX9EVAyUCDf59wIaR0YKhKngMLv pSIKKZuz628QX8m31HCW4z2FST8qL8wU3cFoEgaqJ7IsiuS5jQmCJB0riFLaXS0k7fhn Ebcn94pFc0/DF3E0Yg/c+mRBvnjUf2bG/ljRpkI/dnigD9NCb+YirDvITNOxmZU6qUEy Lk85nwhGWO/EPRScxBjrAWwbKI+YqPxyKd8GynCI04Qx8Mpfrx/KD1NnNdgG/ZgCqGZM 2diw== X-Gm-Message-State: AMCzsaWoQW1qjj9kDfabk5XzAhTV1wAxkg7+PBqwQD9DcdesXr7Cs0l9 Jk3x1LKNzIOnZK7vf+uD52jNDO5DHqM= X-Received: by 10.223.190.132 with SMTP id i4mr2289577wrh.123.1509461703013; Tue, 31 Oct 2017 07:55:03 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id m64sm980644wmb.10.2017.10.31.07.54.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 07:54:58 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id BF2B23E0D6D; Tue, 31 Oct 2017 14:54:57 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 31 Oct 2017 14:54:40 +0000 Message-Id: <20171031145444.13766-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171031145444.13766-1-alex.bennee@linaro.org> References: <20171031145444.13766-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [RISU PATCH 3/7] aarch64.risu: remove duplicate AdvSIMD scalar 2 reg misc block 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: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" While at that also sort alphabetically and nicely align for eye-balling the patterns. Signed-off-by: Alex Bennée --- aarch64.risu | 110 +++++++++++++++++++---------------------------------------- 1 file changed, 35 insertions(+), 75 deletions(-) -- 2.14.2 diff --git a/aarch64.risu b/aarch64.risu index c9f24cd..f3e588b 100644 --- a/aarch64.risu +++ b/aarch64.risu @@ -2166,85 +2166,45 @@ FACGT A64_V 01 1 11110 1 size:1 1 rm:5 11101 1 rn:5 rd:5 \ !constraints { $size != 11; } -# C3.6.12 AdvSIMD scalar 2reg misc -CMGTzero A64_V 01 0 11110 size:2 10000 01000 10 rn:5 rd:5 -CMGEzero A64_V 01 1 11110 size:2 10000 01000 10 rn:5 rd:5 -CMEQzero A64_V 01 0 11110 size:2 10000 01001 10 rn:5 rd:5 -CMLEzero A64_V 01 1 11110 size:2 10000 01001 10 rn:5 rd:5 -CMLTzero A64_V 01 0 11110 size:2 10000 01010 10 rn:5 rd:5 -ABS A64_V 01 0 11110 size:2 10000 01011 10 rn:5 rd:5 -NEG A64_V 01 1 11110 size:2 10000 01011 10 rn:5 rd:5 - -FCMGT_S2MISC A64_V 01 0 11110 size:2 10000 01100 10 rn:5 rd:5 -FCMEQ_S2MISC A64_V 01 0 11110 size:2 10000 01101 10 rn:5 rd:5 -FCMLT_S2MISC A64_V 01 0 11110 size:2 10000 01110 10 rn:5 rd:5 -FCMGE_S2MISC A64_V 01 1 11110 size:2 10000 01100 10 rn:5 rd:5 -FCMLE_S2MISC A64_V 01 1 11110 size:2 10000 01101 10 rn:5 rd:5 - -SCVTF_S2MISC A64_V 01 0 11110 0 sz 10000 11101 10 rn:5 rd:5 -UCVTF_S2MISC A64_V 01 1 11110 0 sz 10000 11101 10 rn:5 rd:5 - -FCVTNS_S2MISC A64_V 01 0 11110 0 sz 10000 11010 10 rn:5 rd:5 -FCVTMS_S2MISC A64_V 01 0 11110 0 sz 10000 11011 10 rn:5 rd:5 -FCVTAS_S2MISC A64_V 01 0 11110 0 sz 10000 11100 10 rn:5 rd:5 -FCVTPS_S2MISC A64_V 01 0 11110 1 sz 10000 11010 10 rn:5 rd:5 -FCVTZS_S2MISC A64_V 01 0 11110 1 sz 10000 11011 10 rn:5 rd:5 - -FCVTNU_S2MISC A64_V 01 1 11110 0 sz 10000 11010 10 rn:5 rd:5 -FCVTMU_S2MISC A64_V 01 1 11110 0 sz 10000 11011 10 rn:5 rd:5 -FCVTAU_S2MISC A64_V 01 1 11110 0 sz 10000 11100 10 rn:5 rd:5 -FCVTPU_S2MISC A64_V 01 1 11110 1 sz 10000 11010 10 rn:5 rd:5 -FCVTZU_S2MISC A64_V 01 1 11110 1 sz 10000 11011 10 rn:5 rd:5 - -FCVTXN_S2MISC A64_V 01 1 11110 0 sz 10000 10110 10 rn:5 rd:5 - -SUQADD_S2MISC A64_V 01 0 11110 size:2 10000 00011 10 rn:5 rd:5 -USQADD_S2MISC A64_V 01 1 11110 size:2 10000 00011 10 rn:5 rd:5 -SQABS_S2MISC A64_V 01 0 11110 size:2 10000 00111 10 rn:5 rd:5 -SQNEG_S2MISC A64_V 01 1 11110 size:2 10000 00111 10 rn:5 rd:5 - -# XXX lots of others in this group - # C3.6.12 AdvSIMD scalar two-reg misc # 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 -SUQADDs A64_V 01 0 11110 size:2 10000 00011 10 rn:5 rd:5 -SQABSs A64_V 01 0 11110 size:2 10000 00111 10 rn:5 rd:5 -CMGTzs A64_V 01 0 11110 size:2 10000 01000 10 rn:5 rd:5 -CMEQzs A64_V 01 0 11110 size:2 10000 01001 10 rn:5 rd:5 -CMLTzs A64_V 01 0 11110 size:2 10000 01010 10 rn:5 rd:5 -ABSs A64_V 01 0 11110 size:2 10000 01011 10 rn:5 rd:5 -SQXTN_SQXTN2s A64_V 01 0 11110 size:2 10000 10100 10 rn:5 rd:5 -FCVTNSvs A64_V 01 0 11110 0 size:1 10000 11010 10 rn:5 rd:5 -FCVTMSvs A64_V 01 0 11110 0 size:1 10000 11011 10 rn:5 rd:5 -FCVTASvs A64_V 01 0 11110 0 size:1 10000 11100 10 rn:5 rd:5 -SCVTFvis A64_V 01 0 11110 0 size:1 10000 11101 10 rn:5 rd:5 -FCMGTzs A64_V 01 0 11110 1 size:1 10000 01100 10 rn:5 rd:5 -FCMEQzs A64_V 01 0 11110 1 size:1 10000 01101 10 rn:5 rd:5 -FCMLTzs A64_V 01 0 11110 1 size:1 10000 01110 10 rn:5 rd:5 -FCVTPSvs A64_V 01 0 11110 1 size:1 10000 11010 10 rn:5 rd:5 -FCVTZSvis A64_V 01 0 11110 1 size:1 10000 11011 10 rn:5 rd:5 -FRECPEs A64_V 01 0 11110 1 size:1 10000 11101 10 rn:5 rd:5 -FRECPX A64_V 01 0 11110 1 size:1 10000 11111 10 rn:5 rd:5 -USQADDs A64_V 01 1 11110 size:2 10000 00011 10 rn:5 rd:5 -SQNEGs A64_V 01 1 11110 size:2 10000 00111 10 rn:5 rd:5 -CMGzs A64_V 01 1 11110 size:2 10000 01000 10 rn:5 rd:5 -CMLEzs A64_V 01 1 11110 size:2 10000 01001 10 rn:5 rd:5 -NEGvs A64_V 01 1 11110 size:2 10000 01011 10 rn:5 rd:5 -SQXTUN_SQXTUN2s A64_V 01 1 11110 size:2 10000 10010 10 rn:5 rd:5 -UQXTN_UQXTN2s A64_V 01 1 11110 size:2 10000 10100 10 rn:5 rd:5 -FCVTXN_FCVTXN2s A64_V 01 1 11110 0 size:1 10000 10110 10 rn:5 rd:5 -FCVTNUvs A64_V 01 1 11110 0 size:1 10000 11010 10 rn:5 rd:5 -FCVTMUvs A64_V 01 1 11110 0 size:1 10000 11011 10 rn:5 rd:5 -FCVTAUvs A64_V 01 1 11110 0 size:1 10000 11100 10 rn:5 rd:5 -UCVTFvis A64_V 01 1 11110 0 size:1 10000 11101 10 rn:5 rd:5 -FCMGEzs A64_V 01 1 11110 1 size:1 10000 01100 10 rn:5 rd:5 -FCMLEzs A64_V 01 1 11110 1 size:1 10000 01101 10 rn:5 rd:5 -FCVTPUvs A64_V 01 1 11110 1 size:1 10000 11010 10 rn:5 rd:5 -FCVTZUvis A64_V 01 1 11110 1 size:1 10000 11011 10 rn:5 rd:5 -FRSQRTEs A64_V 01 1 11110 1 size:1 10000 11101 10 rn:5 rd:5 - +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 +CMGzs A64_V 01 1 11110 size:2 10000 01000 10 rn:5 rd:5 +CMLEzs A64_V 01 1 11110 size:2 10000 01001 10 rn:5 rd:5 +CMLTzs A64_V 01 0 11110 size:2 10000 01010 10 rn:5 rd:5 +FCMEQzs A64_V 01 0 11110 1 size:1 10000 01101 10 rn:5 rd:5 +FCMGEzs A64_V 01 1 11110 1 size:1 10000 01100 10 rn:5 rd:5 +FCMGTzs A64_V 01 0 11110 1 size:1 10000 01100 10 rn:5 rd:5 +FCMLEzs A64_V 01 1 11110 1 size:1 10000 01101 10 rn:5 rd:5 +FCMLTzs A64_V 01 0 11110 1 size:1 10000 01110 10 rn:5 rd:5 +FCVTASvs A64_V 01 0 11110 0 size:1 10000 11100 10 rn:5 rd:5 +FCVTAUvs A64_V 01 1 11110 0 size:1 10000 11100 10 rn:5 rd:5 +FCVTMSvs A64_V 01 0 11110 0 size:1 10000 11011 10 rn:5 rd:5 +FCVTMUvs A64_V 01 1 11110 0 size:1 10000 11011 10 rn:5 rd:5 +FCVTNSvs A64_V 01 0 11110 0 size:1 10000 11010 10 rn:5 rd:5 +FCVTNUvs A64_V 01 1 11110 0 size:1 10000 11010 10 rn:5 rd:5 +FCVTPSvs A64_V 01 0 11110 1 size:1 10000 11010 10 rn:5 rd:5 +FCVTPUvs A64_V 01 1 11110 1 size:1 10000 11010 10 rn:5 rd:5 +FCVTXN_FCVTXN2s A64_V 01 1 11110 0 size:1 10000 10110 10 rn:5 rd:5 +FCVTZSvis A64_V 01 0 11110 1 size:1 10000 11011 10 rn:5 rd:5 +FCVTZUvis A64_V 01 1 11110 1 size:1 10000 11011 10 rn:5 rd:5 +FRECPEs A64_V 01 0 11110 1 size:1 10000 11101 10 rn:5 rd:5 +FRECPX A64_V 01 0 11110 1 size:1 10000 11111 10 rn:5 rd:5 +FRSQRTEs A64_V 01 1 11110 1 size:1 10000 11101 10 rn:5 rd:5 +NEGvs A64_V 01 1 11110 size:2 10000 01011 10 rn:5 rd:5 +SCVTFvis A64_V 01 0 11110 0 size:1 10000 11101 10 rn:5 rd:5 +SQABSs A64_V 01 0 11110 size:2 10000 00111 10 rn:5 rd:5 +SQNEGs A64_V 01 1 11110 size:2 10000 00111 10 rn:5 rd:5 +SQXTN_SQXTN2s A64_V 01 0 11110 size:2 10000 10100 10 rn:5 rd:5 +SQXTUN_SQXTUN2s A64_V 01 1 11110 size:2 10000 10010 10 rn:5 rd:5 +SUQADDs A64_V 01 0 11110 size:2 10000 00011 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 # Complete coverage. From patchwork Tue Oct 31 14:54:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 117636 Delivered-To: patch@linaro.org Received: by 10.80.245.45 with SMTP id t42csp4051098edm; Tue, 31 Oct 2017 07:57:09 -0700 (PDT) X-Google-Smtp-Source: ABhQp+QAr4pxClADTfTsk0HUqYGdQkJIDQV1HFh11mf6hE05npfwa1KJjNhhcwXS85/ZgSDbSLWy X-Received: by 10.37.104.133 with SMTP id d127mr1352177ybc.472.1509461829326; Tue, 31 Oct 2017 07:57:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509461829; cv=none; d=google.com; s=arc-20160816; b=J/MtwLMkflhUyC36aR1bydwIVDRi/E25CM5NY6oqxAkYcYE1LQiEu7fWArw8euO76S h7uL044/C2UelWoxWIDM8IrRIy9dnpA8lIc5mT/6Lf4skxOe2BeH6d9Q1yjEv5JLi4YS N9EH9DhF6i+ZNNItG6FiGNBNnrIDnh1Y48pRz55lpWCIMsZLiVOy2RQIufDjTv5URNE1 UwHg+DeTRAlJZP8qO9+zEdbgO1xYudyZ1h6tU5LS3tjkD/hSCbiD9WtzA4sUIOrTfuF0 efQek1MBtI72j8zgrRuuhLR01iCBnZhfwaL/ejb5456tbl2tVnKXpJOOR85qLWwc93w6 EqIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=MkYi4FkFidhmAtOxL7Y+t+aJmEgP/SyEoQB8/Z3LF2U=; b=yRs0RBEkVl1yL70E2hXmtd3TADxzmntW5I1XRmZA0ChlvoKFTUTKWXlv5dX3REBww0 VpEo5KCHcUuCDDX0EQki2R9N1yzdb9UEvWSsE/EwTR3YXrPr8qn8+za3z6glsBHnBWnO prV/suvruGK+Rx1OqFr24u5J725w+T8zqBaLL4/ASKrwSxRnVFBLk+fY6Q2NxLP6Xaz6 3VG1CwYQ1bW129uMBXAsSFKuEj1OrYSnElGaVkysfQT2OiWS1XOlphlOBz2PVHidrxdk ITCBSp2sKzy62yw25G3s0aJ6zebIv/pa/r8NBGEv4aYk2mKzUjnYod+rIjbzBVM73lY8 qGuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=fH70PIu3; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id m10si444021ywi.613.2017.10.31.07.57.09 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 31 Oct 2017 07:57:09 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=fH70PIu3; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:45995 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9XyW-0001kx-K0 for patch@linaro.org; Tue, 31 Oct 2017 10:57:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59283) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9XwW-0000aY-Ka for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9XwU-00070x-BS for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:04 -0400 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:51335) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e9XwU-00070S-2U for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:02 -0400 Received: by mail-wr0-x241.google.com with SMTP id j15so16216175wre.8 for ; Tue, 31 Oct 2017 07:55:01 -0700 (PDT) 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=MkYi4FkFidhmAtOxL7Y+t+aJmEgP/SyEoQB8/Z3LF2U=; b=fH70PIu32KnxXIk7e2bjtSRjynlFoXh+lnWHzd+PJOkGv1SHZMYLJr9Q01ScgPPOR3 TUAyHijwpjbhzSOKqiEsmjecThrQfD5ZS4X5gVsUaA4OpTOoXHG+RTkSEHMlf9QAvZPl l3fILFRz/AkKFVhlFnW8efXZ8+1TbAuIyWgos= 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=MkYi4FkFidhmAtOxL7Y+t+aJmEgP/SyEoQB8/Z3LF2U=; b=H6/c2R+XbZYz+MN5KY6lvPZ5iJvqIoZASmj75ycYjGuTyzNPW75lCphroK//mFptDk 1M09XgOCgtL1uDByHY6RZcjMmPECh0UTPXPTLbfzTtfL9asJWHXfQeCpjElHlNf+Q41O DLgvRElM/QDVw2DcrksXcpPENSvcdXFC4NWhsLktC+KugO4ndtUqpKSr5mXuwI8lI9i9 bv6quCRKxkTYPQLKp+nafBU9Cij7CnBo+muhL6OwG+zw8z1VDn69TNSzxCZvmRVHVwGv /Wgg7EXpgJf1Hf2ELJJZumhplVy9DZEOBe6Q65j88PflTpb3HFyUPu8+NBJsSVysDCeT I7OQ== X-Gm-Message-State: AMCzsaWeZkyFaGW8YGZQK+IU1xFDWK6vv43Mu/xR+nxsNnNSQYMJpFRj n/1w4oGh1c1MfDw7LPjFFMO/Rg== X-Received: by 10.223.182.19 with SMTP id f19mr2221491wre.166.1509461700750; Tue, 31 Oct 2017 07:55:00 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id m26sm1486912wrb.81.2017.10.31.07.54.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 07:54:58 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id C9E443E0DA9; Tue, 31 Oct 2017 14:54:57 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 31 Oct 2017 14:54:41 +0000 Message-Id: <20171031145444.13766-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171031145444.13766-1-alex.bennee@linaro.org> References: <20171031145444.13766-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [RISU PATCH 4/7] aarch64.risu: update AdvancedSIMD across lanes 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: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" - sorted alphabetically - aligned the instructions patterns Signed-off-by: Alex Bennée --- aarch64.risu | 81 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 40 insertions(+), 41 deletions(-) -- 2.14.2 diff --git a/aarch64.risu b/aarch64.risu index f3e588b..9667ef7 100644 --- a/aarch64.risu +++ b/aarch64.risu @@ -1953,50 +1953,49 @@ ZIP2 A64_V 0 Q:1 001110 size:2 0 rm:5 0 111 10 rn:5 rd:5 \ # ReservedValue: break the !($size == 3 && $Q == 0) constraint ZIP2_RES A64_V 0 0 001110 11 0 rm:5 0 111 10 rn:5 rd:5 -# C3.6.4 AdvSIMD across lanes +# C4-286 AdvSIMD across vector 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 -SADDLV A64_V 0 Q:1 0 01110 size:2 11000 00011 10 rn:5 rd:5 \ -!constraints { $size < 2 || ($size == 2 && $Q == 1); } -# ReservedValue: break the constraint (size==2) => (Q=1) -SADDLV_RES A64_V 0 0 0 01110 10 11000 00011 10 rn:5 rd:5 - -SMAXV A64_V 0 Q:1 0 01110 size:2 11000 01010 10 rn:5 rd:5 \ -!constraints { $size < 2 || ($size == 2 && $Q == 1); } -# ReservedValue: break the constraint (size==2) => (Q=1) -SMAXV_RES A64_V 0 0 0 01110 10 11000 01010 10 rn:5 rd:5 - -SMINV A64_V 0 Q:1 0 01110 size:2 11000 11010 10 rn:5 rd:5 \ -!constraints { $size < 2 || ($size == 2 && $Q == 1); } -# ReservedValue: break the constraint (size==2) => (Q=1) -SMINV_RES A64_V 0 0 0 01110 10 11000 11010 10 rn:5 rd:5 - -ADDV A64_V 0 Q:1 0 01110 size:2 11000 11011 10 rn:5 rd:5 \ -!constraints { $size < 2 || ($size == 2 && $Q == 1); } -# ReservedValue: break the constraint (size==2) => (Q=1) -ADDV_RES A64_V 0 0 0 01110 10 11000 11011 10 rn:5 rd:5 - -UADDLV A64_V 0 Q:1 1 01110 size:2 11000 00011 10 rn:5 rd:5 \ -!constraints { $size < 2 || ($size == 2 && $Q == 1); } -# ReservedValue: break the constraint (size==2) => (Q=1) -UADDLV_RES A64_V 0 0 1 01110 10 11000 00011 10 rn:5 rd:5 - -UMAXV A64_V 0 Q:1 1 01110 size:2 11000 01010 10 rn:5 rd:5 \ -!constraints { $size < 2 || ($size == 2 && $Q == 1); } -# ReservedValue: break the constraint (size==2) => (Q=1) -UMAXV_RES A64_V 0 0 1 01110 10 11000 01010 10 rn:5 rd:5 - -UMINV A64_V 0 Q:1 1 01110 size:2 11000 11010 10 rn:5 rd:5 \ -!constraints { $size < 2 || ($size == 2 && $Q == 1); } -# ReservedValue: break the constraint (size==2) => (Q=1) -UMINV_RES A64_V 0 0 1 01110 10 11000 11010 10 rn:5 rd:5 - -FMAXNMV A64_V 0 1 1 01110 00 11000 01100 10 rn:5 rd:5 -FMAXV A64_V 0 1 1 01110 00 11000 01111 10 rn:5 rd:5 - -FMINNMV A64_V 0 1 1 01110 10 11000 01100 10 rn:5 rd:5 -FMINV A64_V 0 1 1 01110 10 11000 01111 10 rn:5 rd:5 +ADDV A64_V 0 Q:1 0 01110 s:2 11000 11011 10 rn:5 rd:5 \ +!constraints { $s < 2 || ($s == 2 && $Q == 1); } +# ReservedValue: break the constraint (s==2) => (Q=1) +ADDV_RES A64_V 0 0 0 01110 10 11000 11011 10 rn:5 rd:5 + +FMAXNMV A64_V 0 1 1 01110 00 11000 01100 10 rn:5 rd:5 +FMAXV A64_V 0 1 1 01110 00 11000 01111 10 rn:5 rd:5 +FMINNMV A64_V 0 1 1 01110 10 11000 01100 10 rn:5 rd:5 +FMINV A64_V 0 1 1 01110 10 11000 01111 10 rn:5 rd:5 + +SADDLV A64_V 0 Q:1 0 01110 s:2 11000 00011 10 rn:5 rd:5 \ +!constraints { $s < 2 || ($s == 2 && $Q == 1); } +# ReservedValue: break the constraint (s==2) => (Q=1) +SADDLV_RES A64_V 0 0 0 01110 10 11000 00011 10 rn:5 rd:5 + +SMAXV A64_V 0 Q:1 0 01110 s:2 11000 01010 10 rn:5 rd:5 \ +!constraints { $s < 2 || ($s == 2 && $Q == 1); } +# ReservedValue: break the constraint (s==2) => (Q=1) +SMAXV_RES A64_V 0 0 0 01110 10 11000 01010 10 rn:5 rd:5 + +SMINV A64_V 0 Q:1 0 01110 s:2 11000 11010 10 rn:5 rd:5 \ +!constraints { $s < 2 || ($s == 2 && $Q == 1); } +# ReservedValue: break the constraint (s==2) => (Q=1) +SMINV_RES A64_V 0 0 0 01110 10 11000 11010 10 rn:5 rd:5 + +UADDLV A64_V 0 Q:1 1 01110 s:2 11000 00011 10 rn:5 rd:5 \ +!constraints { $s < 2 || ($s == 2 && $Q == 1); } +# ReservedValue: break the constraint (s==2) => (Q=1) +UADDLV_RES A64_V 0 0 1 01110 10 11000 00011 10 rn:5 rd:5 + +UMAXV A64_V 0 Q:1 1 01110 s:2 11000 01010 10 rn:5 rd:5 \ +!constraints { $s < 2 || ($s == 2 && $Q == 1); } +# ReservedValue: break the constraint (s==2) => (Q=1) +UMAXV_RES A64_V 0 0 1 01110 10 11000 01010 10 rn:5 rd:5 + +UMINV A64_V 0 Q:1 1 01110 s:2 11000 11010 10 rn:5 rd:5 \ +!constraints { $s < 2 || ($s == 2 && $Q == 1); } +# ReservedValue: break the constraint (s==2) => (Q=1) +UMINV_RES A64_V 0 0 1 01110 10 11000 11010 10 rn:5 rd:5 # C3.6.5 AdvSIMD copy # 31 30 29 28 27 26 25 24 23 22 21 20 16 15 14 11 10 9 5 4 0 From patchwork Tue Oct 31 14:54:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 117637 Delivered-To: patch@linaro.org Received: by 10.80.245.45 with SMTP id t42csp4051219edm; Tue, 31 Oct 2017 07:57:15 -0700 (PDT) X-Google-Smtp-Source: ABhQp+QKkFz+9HJRe9PI1WzxmOfm3mcOMZ7KMwtP/IevXK8h4JHAe4pGypHN9CgoPSJsy3KmD5em X-Received: by 10.129.26.197 with SMTP id a188mr1374253ywa.270.1509461834905; Tue, 31 Oct 2017 07:57:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509461834; cv=none; d=google.com; s=arc-20160816; b=KuMbRiyCfkCNjCfPYe1/7IUcBvpJWJ13x3HoP1n6uX4GBms7+r7H7dCDqoGhaGdYo/ lKYnMD70oqQAlSKBY3asSBBxzFKHMaelMJ7Ddg8YFkL1i5d8OHPzL3jL8AdqWVqM14jO i0dv5ui5DZD2qB7KPPpxPM07Y14QBaZS/llreI7eS3vwg4O3VTYFZgfnWoRYseX/riMN AHYlSZP0IoWatvnPX1qVv3oejxwURGLiMVMsCC8drLYzt/LFuII9hNzm9xOEE9VyLvHf KeifYc1oPAgnk/bJ1/UxYMdw0sbTIWbmfSOv0XbgK8MaIxV6VlUtr/JIvapLcWIVeI8n Kr/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=cEydfPx65PwbdTZVQ4HV8sNQnw206wmaDJ+KyKBZjTA=; b=a3MyzbxNpKGNLJAGZwuK+LkpG6kUiDINxsYDc4iwkuxhh2nGrU9kwkykGSbz3S58DN gNPXwjVE19J/xMi3m/2oWH4Fijm5kDuUe+IC1+Rcns29Mhur7FjRNb1ASFPhdmo1HS21 JvIxVlZXcXBJqw3C0N3o/KFfWigmGEJxPaj+7PuBg9UlOLu/3VmQj2qQ2dFvtZbfCr++ 9ATEIYpXRAhLOuP41mtBhpOH8AMnb7GTIIwwuwYFm3d490VzqwdTXJKJaBRxAANLo5yv L9hD2G4BR0wVwU5vrrOB+w10QvZojVYPHRimsAoLrYRfe3Yoq2zC4pDGuoftrmtqHbNc DvnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=CsK+YOar; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id w5si442910ywl.511.2017.10.31.07.57.14 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 31 Oct 2017 07:57:14 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=CsK+YOar; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:45996 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Xyc-0001qc-7N for patch@linaro.org; Tue, 31 Oct 2017 10:57:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59345) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9XwZ-0000ak-H9 for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9XwX-000739-T6 for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:07 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:55833) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e9XwX-00072T-Jn for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:05 -0400 Received: by mail-wm0-x244.google.com with SMTP id y83so23682205wmc.4 for ; Tue, 31 Oct 2017 07:55:05 -0700 (PDT) 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=cEydfPx65PwbdTZVQ4HV8sNQnw206wmaDJ+KyKBZjTA=; b=CsK+YOarPpcSC1JZnWbLEFpEmAcZgvE2Y27GBcbRWVxTpr9znZPQyz1ty14nNzUcno WK4As3yx52xJNoFsLJZr+uv94zTDrZ042bzL3zL6nC2g1do23K83nQMmEnEl0/eCd6Af +BfgLW9co1SIblEmyT2tHZBxZ02LOFYfcaEk8= 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=cEydfPx65PwbdTZVQ4HV8sNQnw206wmaDJ+KyKBZjTA=; b=bdj/wJPeC6EqB9zr5InMF3FWi4uAcW1dedZVP4ucPf5dDjyiZq0fMkbPzg2WpOYCPd 3iMbv/vLGds8PnxtHU3dJXCDaSbekfsI1BXHg/bQ0ehEW7FPLQMGt70RYSuOoxQY0lfB QvbCEUtHZuF0aVO5v/6m9fei4MDk5NObaDOHrgSwXpFAusvKxiL4umc2CVP5lHpi+qzE ZIzgMuhKSsrPvx7GTdwfFwcu+jrCIHEw/hRuEpujiaBb+RyOkP14KeVwkl25c98rkYZZ l9ATqHTPwf+Vnz+Khb2GVn8BKUjBmhDMJXxpHNUDBQdLtWqPtAItmqlN9ZFiruyuijT/ QaEg== X-Gm-Message-State: AMCzsaXZnkk2UcuRnmfaOI3CSNVrRk5qva4b13KX5TI9YO1FO7zDfHTm qFybN2bNYd3hSg8GWLdYCEaDzA== X-Received: by 10.28.155.18 with SMTP id d18mr2207577wme.107.1509461704308; Tue, 31 Oct 2017 07:55:04 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id k30sm3500874wrf.52.2017.10.31.07.54.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 07:55:03 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id D4E903E0DAA; Tue, 31 Oct 2017 14:54:57 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 31 Oct 2017 14:54:42 +0000 Message-Id: <20171031145444.13766-6-alex.bennee@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171031145444.13766-1-alex.bennee@linaro.org> References: <20171031145444.13766-1-alex.bennee@linaro.org> MIME-Version: 1.0 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] [RISU PATCH 5/7] risugen/risugen_$arch: factor out instruction selection 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: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This moves the instruction selection to the common code and passes a list of selection keys to write_test_code instead. This will allow us to add selection features to the common code later. Signed-off-by: Alex Bennée --- risugen | 29 +++++++++++++++++++++++++++-- risugen_arm.pm | 18 +----------------- risugen_m68k.pm | 18 +----------------- risugen_ppc64.pm | 18 +----------------- 4 files changed, 30 insertions(+), 53 deletions(-) -- 2.14.2 diff --git a/risugen b/risugen index 347cf12..8bfb0e9 100755 --- a/risugen +++ b/risugen @@ -26,7 +26,11 @@ use FindBin; use lib "$FindBin::Bin"; use risugen_common; +# insn_details is the full set of instruction definitions whereas +# insn_keys is array of (potentially filtered) keys to index into the +# insn_details hash. my %insn_details; +my @insn_keys; # The arch will be selected based on .mode directive defined in risu file. my $arch = ""; @@ -240,6 +244,26 @@ sub parse_config_file($) close(CFILE) or die "can't close $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 = sort keys %insn_details; + if (@pattern_re) { + my $re = '\b((' . join(')|(',@pattern_re) . '))\b'; + @insn_keys = grep /$re/, @insn_keys; + } + # exclude any specifics + if (@not_pattern_re) { + my $re = '\b((' . join(')|(',@not_pattern_re) . '))\b'; + @insn_keys = grep !/$re/, @insn_keys; + } + if (!@insn_keys) { + print STDERR "No instruction patterns available! (bad config file or --pattern argument?)\n"; + exit(1); + } +} + sub usage() { print < $numinsns, 'fp_enabled' => $fp_enabled, 'outfile' => $outfile, - 'pattern_re' => \@pattern_re, - 'not_pattern_re' => \@not_pattern_re, 'details' => \%insn_details, + 'keys' => \@insn_keys, 'arch' => $full_arch[0], 'subarch' => $full_arch[1] || '', 'bigendian' => $big_endian diff --git a/risugen_arm.pm b/risugen_arm.pm index 1024660..2f10d58 100644 --- a/risugen_arm.pm +++ b/risugen_arm.pm @@ -895,9 +895,8 @@ sub write_test_code($$$$$$$$) my $fp_enabled = $params->{ 'fp_enabled' }; my $outfile = $params->{ 'outfile' }; - my @pattern_re = @{ $params->{ 'pattern_re' } }; - my @not_pattern_re = @{ $params->{ 'not_pattern_re' } }; my %insn_details = %{ $params->{ 'details' } }; + my @keys = @{ $params->{ 'keys' } }; open_bin($outfile); @@ -908,21 +907,6 @@ sub write_test_code($$$$$$$$) # TODO better random number generator? srand(0); - # Get a list of the insn keys which are permitted by the re patterns - my @keys = sort keys %insn_details; - if (@pattern_re) { - my $re = '\b((' . join(')|(',@pattern_re) . '))\b'; - @keys = grep /$re/, @keys; - } - # exclude any specifics - if (@not_pattern_re) { - my $re = '\b((' . join(')|(',@not_pattern_re) . '))\b'; - @keys = grep !/$re/, @keys; - } - if (!@keys) { - print STDERR "No instruction patterns available! (bad config file or --pattern argument?)\n"; - exit(1); - } print "Generating code using patterns: @keys...\n"; progress_start(78, $numinsns); diff --git a/risugen_m68k.pm b/risugen_m68k.pm index 74e4937..7d62b13 100644 --- a/risugen_m68k.pm +++ b/risugen_m68k.pm @@ -160,9 +160,8 @@ sub write_test_code($) my $numinsns = $params->{ 'numinsns' }; my $outfile = $params->{ 'outfile' }; - my @pattern_re = @{ $params->{ 'pattern_re' } }; - my @not_pattern_re = @{ $params->{ 'not_pattern_re' } }; my %insn_details = %{ $params->{ 'details' } }; + my @keys = @{ $params->{ 'keys' } }; # Specify the order to use for insn32() and insn16() writes. set_endian(1); @@ -176,21 +175,6 @@ sub write_test_code($) # TODO better random number generator? srand(0); - # Get a list of the insn keys which are permitted by the re patterns - my @keys = sort keys %insn_details; - if (@pattern_re) { - my $re = '\b((' . join(')|(',@pattern_re) . '))\b'; - @keys = grep /$re/, @keys; - } - # exclude any specifics - if (@not_pattern_re) { - my $re = '\b((' . join(')|(',@not_pattern_re) . '))\b'; - @keys = grep !/$re/, @keys; - } - if (!@keys) { - print STDERR "No instruction patterns available! (bad config file or --pattern argument?)\n"; - exit(1); - } print "Generating code using patterns: @keys...\n"; progress_start(78, $numinsns); diff --git a/risugen_ppc64.pm b/risugen_ppc64.pm index c0e71cf..b241172 100644 --- a/risugen_ppc64.pm +++ b/risugen_ppc64.pm @@ -371,9 +371,8 @@ sub write_test_code($) my $fp_enabled = $params->{ 'fp_enabled' }; my $outfile = $params->{ 'outfile' }; - my @pattern_re = @{ $params->{ 'pattern_re' } }; - my @not_pattern_re = @{ $params->{ 'not_pattern_re' } }; my %insn_details = %{ $params->{ 'details' } }; + my @keys = @{ $params->{ 'keys' } }; if ($params->{ 'bigendian' } eq 1) { set_endian(1); @@ -388,21 +387,6 @@ sub write_test_code($) # TODO better random number generator? srand(0); - # Get a list of the insn keys which are permitted by the re patterns - my @keys = sort keys %insn_details; - if (@pattern_re) { - my $re = '\b((' . join(')|(',@pattern_re) . '))\b'; - @keys = grep /$re/, @keys; - } - # exclude any specifics - if (@not_pattern_re) { - my $re = '\b((' . join(')|(',@not_pattern_re) . '))\b'; - @keys = grep !/$re/, @keys; - } - if (!@keys) { - print STDERR "No instruction patterns available! (bad config file or --pattern argument?)\n"; - exit(1); - } print "Generating code using patterns: @keys...\n"; progress_start(78, $numinsns); From patchwork Tue Oct 31 14:54:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 117635 Delivered-To: patch@linaro.org Received: by 10.80.245.45 with SMTP id t42csp4049769edm; Tue, 31 Oct 2017 07:55:51 -0700 (PDT) X-Google-Smtp-Source: ABhQp+QkMws3RB0/sKdcLmQC1+MX/95NUQXXDGVYs6A5/3MSCoSOuo8/6SqIva9BUFKYR3HopnOt X-Received: by 10.37.228.67 with SMTP id b64mr1347845ybh.196.1509461750943; Tue, 31 Oct 2017 07:55:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509461750; cv=none; d=google.com; s=arc-20160816; b=P5uw1z2o2L29ALyq+nkN/vmkFwNPmuxDyVG4e6ScLQytK+AEF5LaQjQUr6jffaTAN5 NVgI7snySYXL/4pDA/gm5Xz4l7pxffzQ4CkTOYj/KNN/3y258sBpTebVvnIPAAHveYmY AR7JI+ua+dOFFXAbpD0e2U813gap1AlHAwzyQBCVwN+GgLuRavru7+3mFcL2RvbGza0w QbC9I1AEOHSNcCS+aPsgNI4/r1+/vjrwisu7XslLpUC+zg2HoLWq7szaH2AoyKSxgzG9 ArHvYlYXy/jXitsyu0p5c41kUlne5sIOfEwV1HsfxxiKojkzI5z87ZBW/d3cbpYW9diX SllQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=/2Qj1qfMNK+2DZhS7va2bYrvohJo86Kgg4xJvX62igU=; b=TaltaztPLWrOiPqhd56Dtkn9ZfixgjQ2V+uq+OKmG/CnLKXXc58Q19FrLqoC2SAKiy 63Nq8NRrEgkCPdpLOBlU/rbPxF+Dq1ux2/QqJcvreh6ljZg8JPREFJ6n59daCjOUeket L9VbvR0FzOvGo0Sed1G2uo+gghBx7D3Mt4j9OKEU3k+ZOcY7bAmfT7a+vp7WzactvJ/S 6ObRjZVczLiw8LKaBISs9UN14g60O/G5DpelltrVFCCLAmUYN3FY7710HZ8rVcrbzrTQ VZ4pZSCy2rcFrs2l7kD51sTgMC720EMKGXdMuAjH72XfZVx7unscBqmYLha4WsMvIadB OCaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=FyNxPm2t; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id n6si475919ywl.8.2017.10.31.07.55.50 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 31 Oct 2017 07:55:50 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=FyNxPm2t; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:45994 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9XxG-0000z1-9J for patch@linaro.org; Tue, 31 Oct 2017 10:55:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Xwc-0000ek-JU for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9XwY-00073l-H1 for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:10 -0400 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:52439) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e9XwY-00072j-8B for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:06 -0400 Received: by mail-wm0-x242.google.com with SMTP id t139so23845224wmt.1 for ; Tue, 31 Oct 2017 07:55:06 -0700 (PDT) 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=/2Qj1qfMNK+2DZhS7va2bYrvohJo86Kgg4xJvX62igU=; b=FyNxPm2ttSszKHSRwPur2AfJwI4pAmZDsFdsolFH3EEjAapSHnFUvIh89Wq7NeHA0z nIQMiMoOM9KiWNBY5AqwI1/r6f1642FoKH7cU3hlPZTdNh3QQGecoID01zj1vmD961Ps 4kiaKxvTou6cG2JZoFiGTGhXkRklY9z/ccRwU= 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=/2Qj1qfMNK+2DZhS7va2bYrvohJo86Kgg4xJvX62igU=; b=VlImHA7zEqMmPS1H1FJktdRLbq8lBd6/55oGVNDqhVyvdmkaXVVD3LXjxOiK6tloFZ 5YEVFX7DqaQiAy9OeDbMHC0sYZtigYPUD4hFCbKsD89DPzO0N3JXXFtd1541WW/l6VIx JDj5/Dv5/al0tOqkJDiw+uoLDE5T4SXz3Q3dd9F3Ob1udO4reBKCMJ++4lsfhPsb6mi/ sp7dE2ToZaAQbaydR9hrSrjM9uj2OUKcH5NoH67GRtVnjyaHyrGVX9atqn4pPLoJP1H+ NlT/dmsiAA94crgKNDtccM/hhXrCDUaVFU4X4RGApOIE9RvOg8PIOcfVAxvEB+FJgcRo bukA== X-Gm-Message-State: AMCzsaWpwsTfQiElc25ibqaC0tRD7Qjs6ZryYI2tr3rxsVC2GhGPGsnA D4V1k8PzlobWVW8aJm5YPnZ5dEv65jg= X-Received: by 10.28.178.81 with SMTP id b78mr2096875wmf.157.1509461705032; Tue, 31 Oct 2017 07:55:05 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id m25sm1495530wmi.7.2017.10.31.07.54.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 07:55:03 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id DF3C13E0EE2; Tue, 31 Oct 2017 14:54:57 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 31 Oct 2017 14:54:43 +0000 Message-Id: <20171031145444.13766-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171031145444.13766-1-alex.bennee@linaro.org> References: <20171031145444.13766-1-alex.bennee@linaro.org> MIME-Version: 1.0 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] [RISU PATCH 6/7] 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: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 Signed-off-by: Alex Bennée --- README | 10 ++++++++++ risugen | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) -- 2.14.2 diff --git a/README b/README index 312e9cd..9946e6e 100644 --- a/README +++ b/README @@ -75,6 +75,10 @@ reads the configuration file arm.risu, and generates 10000 instructions based on the instruction patterns matching the regular expression "VQSHL.*imm.*". The resulting binary is written to vqshlimm.out. +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' @@ -140,6 +144,12 @@ Lines starting with a '.' are directives to risu/risugen: * ".mode [thumb|arm]" specifies whether the file contains ARM or Thumb instructions; it must precede all instruction patterns. +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..aba4bb7 100755 --- a/risugen +++ b/risugen @@ -34,7 +34,10 @@ my @insn_keys; # The arch will be selected based on .mode directive defined in risu file. my $arch = ""; +# Current group, updated by @GroupName +my $insn_group = ""; +my @group = (); # include groups my @pattern_re = (); # include pattern my @not_pattern_re = (); # exclude pattern @@ -122,6 +125,11 @@ sub parse_config_file($) exit(1); } + if ($tokens[0] =~ /^@(.*)/ ) { + $insn_group = $1; + next; + } + if ($tokens[0] =~ /^\./) { parse_risu_directive($file, $seen_pattern, @tokens); next; @@ -239,6 +247,9 @@ sub parse_config_file($) $insnrec->{fixedbits} = $fixedbits; $insnrec->{fixedbitmask} = $fixedbitmask; $insnrec->{fields} = [ @fields ]; + if (length $insn_group) { + $insnrec->{group} = $insn_group; + } $insn_details{$insnname} = $insnrec; } close(CFILE) or die "can't close $file: $!"; @@ -249,6 +260,12 @@ sub select_insn_keys () { # Get a list of the insn keys which are permitted by the re patterns @insn_keys = sort keys %insn_details; + if (@group) { + my $re = join("|",@group); + @insn_keys = grep { + defined($insn_details{$_}->{group}) && + grep /$re/, $insn_details{$_}->{group}} @insn_keys + } if (@pattern_re) { my $re = '\b((' . join(')|(',@pattern_re) . '))\b'; @insn_keys = grep /$re/, @insn_keys; @@ -277,6 +294,7 @@ Valid options: --fpscr n : set initial FPSCR (arm) or FPCR (aarch64) value (default is 0) --condprob p : [ARM only] make instructions conditional with probability p (default is 0, ie all instructions are always executed) + --group name[,name..]: only use instructions in defined groups --pattern re[,re...] : only use instructions matching regular expression Each re must match a full word (that is, we match on the perl regex '\\b((re)|(re))\\b'). This means that @@ -305,6 +323,7 @@ sub main() GetOptions( "help" => sub { usage(); exit(0); }, "numinsns=i" => \$numinsns, "fpscr=o" => \$fpscr, + "group=s" => \@group, "pattern=s" => \@pattern_re, "not-pattern=s" => \@not_pattern_re, "condprob=f" => sub { @@ -319,6 +338,7 @@ sub main() # allow "--pattern re,re" and "--pattern re --pattern re" @pattern_re = split(/,/,join(',',@pattern_re)); @not_pattern_re = split(/,/,join(',',@not_pattern_re)); + @group = split(/,/,join(',',@group)); if ($#ARGV != 1) { usage(); From patchwork Tue Oct 31 14:54:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 117641 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp4022104qgn; Tue, 31 Oct 2017 08:01:12 -0700 (PDT) X-Google-Smtp-Source: ABhQp+Qy3rUyV01YkLjelIPW7ucrufncngWEFhTPkgvhJHk0Eaaf1ZgApw0aadYuVXT+W87uYktV X-Received: by 10.37.172.65 with SMTP id r1mr1475135ybd.229.1509462072163; Tue, 31 Oct 2017 08:01:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509462072; cv=none; d=google.com; s=arc-20160816; b=lthpYYhjISeRWr0aUHxfobXqCi0Gr/VZHE1EO3fd7wpyBYFWeCgnqyc6wKc6Z6M82o GvtA0ysIT/22TWmS1bVyJtFiuPrmHap2HsOG387ClHVaMZPLY81vANeMB/IKx7hLVh4z ToW09N/ihR61QBXUPsMj1CYAUjfN/63Qy08OvEjyLy2aFqmOVHLXjOOd7PlS0MxjZ+jY RawRUZpysK4Tpa5vVeUsJ/Ys05IzK86OqDs0Cca23/0/AyOUpZ4ZeZmhpPCYJ+NrbKXT pEIwICf14jY/hsqUYcR+EL6JH6G2qAaxUNdk3VLoXZJG8v8fqSpoKn0JEnDzrtHtth07 EHOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=1/zZQd8BdMDblwc0b1D5spRhCx3+6gsG3hDCa/8YLmk=; b=rCvrZCrQo+rqL7sXLEpXoUXPgrYUcGXp9s3gajSB/aVijpBNN35LCujinoVe1QtzmZ 3NUyrrE0ocrCimTGw1YBe2UbOwcttQCCJmQhqxo89Gtgf4hvr2U+KZ2hFrJVz0v3Lg7j MiXDGhHNRSeDITOuxsUzHJUsLgiGQXg+Wralfa0AyAuWB5fxHst9FRl7d0iySyeFxZC+ 013QLEQI5OOyIjl6/EdRifQ/bPM2yrsJ59FGRFW8j5Ts7Vu+iXL7ME1hbsAReK5ZoQeW jVuxLvkjitaT5cniWYcncRDPts5BVYf1QeFDni2C5fpefFtASFhISAuqffWAYAxtQZ7R wsMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ZG/p230o; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id a70si442839ywe.189.2017.10.31.08.01.10 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 31 Oct 2017 08:01:12 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ZG/p230o; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:46026 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Y2P-00057D-Ux for patch@linaro.org; Tue, 31 Oct 2017 11:01:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59410) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9Xwe-0000in-JI for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9Xwb-00077F-45 for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:12 -0400 Received: from mail-wm0-x22e.google.com ([2a00:1450:400c:c09::22e]:51001) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e9Xwa-00075q-OL for qemu-devel@nongnu.org; Tue, 31 Oct 2017 10:55:09 -0400 Received: by mail-wm0-x22e.google.com with SMTP id s66so23012656wmf.5 for ; Tue, 31 Oct 2017 07:55:08 -0700 (PDT) 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=1/zZQd8BdMDblwc0b1D5spRhCx3+6gsG3hDCa/8YLmk=; b=ZG/p230ob58acCqsrN6XaMstdB8MOKO9/FsmkfFA/zGX0ESaAxbkmrMoNHkJYFHHij Df+xSofOnx4K/YCaxN5PQd26mBSGO1BYROT1B308ZhnYntiqKesc05eHKscP3owocm49 d3L5kn8IKfpEk5cF5sa/yZ1pKvcZ40gyD7qbo= 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=1/zZQd8BdMDblwc0b1D5spRhCx3+6gsG3hDCa/8YLmk=; b=juFDoT70vwL8IaxfYBgLPlJA0Rx9abDVZH1vxTLgEJBEnlIG8RF+7a0cjmwXP6Keie vNCaUutQKcInHyQaijvk142tzg/Rp02p/rcnqJEdyaPcS3LvjwaY0FGveQig33p5b3gF BgXtTGpg+4jnU9iotbsWFfTgMdz/aC2zdElDa5BaERd6ufaGMnCwqQBHadH25McXF6id 8VBHpbm2pF7Ynu+ZgxyI/4e0udLCWBfm0LjqkIKWCTRYTEiHJ+oHRVc6QGq21EMl5kc+ loXMmMCFPvGhh6Dr0AHdf3Gghr4kS4+hfuWaI+eJQrC7gpjsHp6QY2ObH5SqaYD1dZko 27pg== X-Gm-Message-State: AMCzsaXewT5F3iyE7L+oR0HXQBy6YZ0asV/6iPQ0uxoziHUmso6rMKPG 6K9joNdPwi8IAFxX7ht2e/arkw== X-Received: by 10.28.185.196 with SMTP id j187mr2102698wmf.97.1509461706357; Tue, 31 Oct 2017 07:55:06 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id n14sm2259038wrg.38.2017.10.31.07.55.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 07:55:03 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id EA4C13E0F63; Tue, 31 Oct 2017 14:54:57 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 31 Oct 2017 14:54:44 +0000 Message-Id: <20171031145444.13766-8-alex.bennee@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171031145444.13766-1-alex.bennee@linaro.org> References: <20171031145444.13766-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::22e Subject: [Qemu-devel] [RISU PATCH 7/7] 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: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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ée --- aarch64.risu | 200 +++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 141 insertions(+), 59 deletions(-) -- 2.14.2 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 ] +@Store + ST1m_1 A64_V 0 Q:1 001100000 00000 0111 size:2 rn:5 rt:5 \ !constraints { $rn != 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 != 31 && $rn != $rm; } \ !memory { align(8); reg($rn); } - +@ # 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 LD1m_1 A64_V 0 Q:1 001100010 00000 0111 size:2 rn:5 rt:5 \ !constraints { $rn != 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 != 31 && $rn != $rm; } \ !memory { align(1 << $size); reg($rn); } +@ + # 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. +@Store + STXRB A64 00 001000 000 rs:5 0 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rs != $rt && $rs != $rn && $rn != $rt; } \ !memory { align(1); reg($rn); } @@ -812,6 +819,8 @@ STLRH A64 01 001000 100 11111 1 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(2); reg($rn); } +@Load + LDXRB A64 00 001000 010 11111 0 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(1); reg($rn); } @@ -836,6 +845,8 @@ LDARH A64 01 001000 110 11111 1 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(2); reg($rn); } +@Store + STXRW A64 10 001000 000 rs:5 0 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rs != $rt && $rs != $rn && $rn != $rt; } \ !memory { align(4); reg($rn); } @@ -848,6 +859,8 @@ STLRW A64 10 001000 100 11111 1 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(4); reg($rn); } +@Load + LDXRW A64 10 001000 010 11111 0 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(4); reg($rn); } @@ -860,6 +873,8 @@ LDARW A64 10 001000 110 11111 1 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(4); reg($rn); } +@Store + STXR A64 11 001000 000 rs:5 0 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rs != $rt && $rs != $rn && $rn != $rt; } \ !memory { align(8); reg($rn); } @@ -872,6 +887,8 @@ STLR A64 11 001000 100 11111 1 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(8); reg($rn); } +@Load + LDXR A64 11 001000 010 11111 0 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(8); reg($rn); } @@ -884,6 +901,8 @@ LDAR A64 11 001000 110 11111 1 11111 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt; } \ !memory { align(8); reg($rn); } +@ + # 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 +@Store + STXPW A64 10 001000 001 rs:5 0 rtt:5 rn:5 rt:5 \ !constraints { $rn != 31 && $rs != $rt && $rs != $rtt && $rs != $rn && $rn != $rt && $rn != $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 != 31 && $rs != $rt && $rs != $rtt && $rs != $rn && $rn != $rt && $rn != $rtt; } \ !memory { align(8); reg($rn); } +@Load + LDXPW A64 10 001000 011 11111 0 rtt:5 rn:5 rt:5 \ !constraints { $rn != 31 && $rt != $rtt && $rn != $rt && $rn != $rtt; } \ !memory { align(8); reg($rn); } @@ -913,6 +936,8 @@ LDAXPW A64 10 001000 011 11111 1 rtt:5 rn:5 rt:5 \ !constraints { $rn != 31 && $rt != $rtt && $rn != $rt && $rn != $rtt; } \ !memory { align(8); reg($rn); } +@Store + STXP A64 11 001000 001 rs:5 0 rtt:5 rn:5 rt:5 \ !constraints { $rn != 31 && $rs != $rt && $rs != $rtt && $rs != $rn && $rn != $rt && $rn != $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 != 31 && $rs != $rt && $rs != $rtt && $rs != $rn && $rn != $rt && $rn != $rtt; } \ !memory { align(16); reg($rn); } +@Load + LDXP A64 11 001000 011 11111 0 rtt:5 rn:5 rt:5 \ !constraints { $rn != 31 && $rt != $rtt && $rn != $rt && $rn != $rtt; } \ !memory { align(16); reg($rn); } @@ -929,6 +956,8 @@ LDAXP A64 11 001000 011 11111 1 rtt:5 rn:5 rt:5 \ !constraints { $rn != 31 && $rt != $rtt && $rn != $rt && $rn != $rtt; } \ !memory { align(16); reg($rn); } +@ + # 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 +@Store + STNPW A64 00 101 0 000 0 imm:7 rtt:5 rn:5 rt:5 \ !constraints { $rn != 31 && $rn != $rt && $rn != $rtt; } \ !memory { align(8); reg_plus_imm($rn, sextract($imm, 7) * 4); } -LDNPW A64 00 101 0 000 1 imm:7 rtt:5 rn:5 rt:5 \ -!constraints { $rn != 31 && $rt != $rtt && $rn != $rt && $rn != $rtt; } \ -!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 != 31 && $rn != $rt && $rn != $rtt; } \ !memory { align(16); reg_plus_imm($rn, sextract($imm, 7) * 8); } +@Load + +LDNPW A64 00 101 0 000 1 imm:7 rtt:5 rn:5 rt:5 \ +!constraints { $rn != 31 && $rt != $rtt && $rn != $rt && $rn != $rtt; } \ +!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 != 31 && $rt != $rtt && $rn != $rt && $rn != $rtt; } \ !memory { align(16); reg_plus_imm($rn, sextract($imm, 7) * 8); } +@ + # 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 == 1 ? 0 : sextract($imm, 7) * 16); } -# - - - 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 @@ -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 != 31 && $rd != 31; } -# 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 rd:5 # ReservedValue: break the ($imms <= 0x1f) constraint UBFM_RES3 A64 0 10 100110 sn:1 immr:6 1 imms:5 rn:5 rd:5 -# 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 @@ -1585,7 +1633,7 @@ EXTRW A64 0 00 100111 0 0 rm:5 0 imms:5 rn:5 rd:5 EXTR A64 1 00 100111 1 0 rm:5 imms:6 rn:5 rd:5 -# 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 @@ -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 -# 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 MOVK A64 sf:1 11 100101 hw:2 imm:16 rd:5 -# C3.4.6 PC-rel. addressing NIY +# PC-rel. addressing NIY + +@ +# End of Data Processing Immediate -# - - - - 1 0 1 - - - - - - - - - - - - - - - Data processing - 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 -# C3.5.1 Add/subtract (extended register) +# - 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; } -# 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 @@ -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 <= 0x1f) constraint SUBS_RES2 A64 0 11 01011 shft:2 0 rm:5 1 imm:5 rn:5 rd:5 -# 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 @@ -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 -# C3.5.4 Conditional compare (immediate) +# - Conditional compare (immediate) # 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 -# 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 nzcv: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 -# 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 @@ -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 -# 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 @@ -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 -# 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 @@ -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 -# 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 @@ -1846,7 +1901,7 @@ UMNEGL A64 1 00 11011 101 rm:5 1 11111 rn:5 rd:5 UMULH A64 1 00 11011 110 rm:5 0 ra:5 rn:5 rd:5 -# 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 @@ -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 <= 0x1f) constraint BICS_RES A64 0 11 01010 shft:2 1 rm:5 1 imm:5 rn:5 rd:5 -# C3.6 Data processing - SIMD and floating point +@ +# End of Data Processing - Register + +# 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 -# C3.6.1 AdvSIMD EXT +# - 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 @@ -1912,14 +1975,14 @@ EXT A64_V 0 Q:1 101110000 rm:5 0 imm:4 0 rn:5 rd:5 \ !constraints { $Q == 0 || !($imm & 0x08); } EXT_RES A64_V 0 0 101110000 rm:5 01 imm:3 0 rn:5 rd:5 -# 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 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 -# 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 @@ -1953,7 +2016,7 @@ ZIP2 A64_V 0 Q:1 001110 size:2 0 rm:5 0 111 10 rn:5 rd:5 \ # ReservedValue: break the !($size == 3 && $Q == 0) constraint ZIP2_RES A64_V 0 0 001110 11 0 rm:5 0 111 10 rn:5 rd:5 -# 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 @@ -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==2) => (Q=1) UMINV_RES A64_V 0 0 1 01110 10 11000 11010 10 rn:5 rd:5 -# 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 DUPe A64_V 0 Q:1 0 01110000 imm:5 0 0000 1 rn:5 rd:5 \ !constraints { ($imm & 0x07) || (($imm & 0x0f) && $Q == 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 -# 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 == 0 && $cm != 1 && $cm != 3 && $cm != 5 && $cm != 7 && $cm != 9 && $cm != 11 && $cm != 15) \ || ($op == 1 && $cm == 14); \ } -# 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 == 2 || $cm == 4 || $cm == 6 || $cm == 8 || $cm == 10 || $cm == 12 || $cm == 13); \ } -#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 <= 5; } -# 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 == 0 || $Q == 1; } # UnallocatedEncoding() op==1 with Q==0 FMOViv_RES A64_V 0 0 1 0111100000 abc:3 1111 01 defgh:5 rd:5 -# 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 <= 11 && ($cm & 0x1) == 1; } -# 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 -# 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 -# 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 ] [ Rd ] @@ -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 !constraints { $immh != 0; } SQRSHRUN_SSI A64_V 0 1 1 111110 immh:4 immb:3 10001 1 rn:5 rd:5 !constraints { $immh != 0; } -# 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 -# 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 != 11; } +@DataProcessingAdvSIMD -# 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 00011 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. # 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 -# 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 ] [ Rd ] @@ -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 != 0; } FCVTZU_SI A64_V 0 Q 1 011110 immh:4 immb:3 11111 1 rn:5 rd:5 !constraints { $immh != 0; } -# 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 -# 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 -# 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 rn:5 rd:5 \ FSQRTv A64_V 0 Q:1 1 01110 size:2 10000 11111 10 rn:5 rd:5 \ !constraints { $size > 1; } -# 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. @@ -2530,13 +2604,15 @@ FMLA_IDX A64_V 0 Q U 01111 sz:2 l m rm:4 0001 h 0 rn: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 -# 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 -# 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 -# 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 -# 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 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 rn: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 != 0; } -# 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 @@ -2587,7 +2664,7 @@ FCCMP_RES1 A64_V mos:3 11110 0 type:1 1 rm:5 cond:4 01 rn:5 op:1 nzcv:4 \ !constraints { $mos != 0 && !($mos & 2); } FCCMP_RES2 A64_V 000 11110 1 type:1 1 rm:5 cond:4 01 rn:5 op:1 nzcv:4 -# 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 @@ -2598,7 +2675,7 @@ FCSEL_RES1 A64_V mos:3 11110 0 type:1 1 rm:5 cond:4 11 rn:5 rd:5 \ !constraints { $mos != 0 && !($mos & 2); } FCSEL_RES2 A64_V 000 11110 1 type:1 1 rm:5 cond:4 11 rn:5 rd:5 -# 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 @@ -2645,7 +2722,7 @@ FRINT_RES1 A64_V 00011110 1 type:1 1 001 mode:3 10000 rn:5 rd:5 # UnallocatedEncoding: rounding mode == 5 FRINT_RES2 A64_V 00011110 type:2 1 001 101 10000 rn:5 rd:5 -# 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 @@ -2703,7 +2780,7 @@ FNMUL A64_V 00011110 type:2 1 rm:5 1000 10 rn:5 rd:5 \ # UnallocatedEncoding: type >= 2 FNMUL_RES A64_V 00011110 1 type:1 1 rm:5 1000 10 rn:5 rd:5 -# 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 @@ -2727,7 +2804,7 @@ FNMSUB A64_V 00011111 type:2 1 rm:5 1 ra:5 rn:5 rd:5 \ # UnallocatedEncoding: type >= 2 FNMSUB_RES A64_V 00011111 1 type:1 1 rm:5 1 ra:5 rn:5 rd:5 -# 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 @@ -2736,7 +2813,7 @@ FMOVi A64_V 00011110 type:2 1 imm:8 100 00000 rd:5 \ # UnallocatedEncoding: type >= 2 FMOVi_RES A64_V 00011110 1 type:1 1 imm:8 100 00000 rd:5 -# 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 @@ -2772,7 +2849,7 @@ FCVTZUsf_RES1 A64_V sf:1 0011110 1 type:1 0 11 001 scale:6 rn:5 rd:5 # UnallocatedEncoding: sf == 0 && $scale < 0x20 FCVTZUsf_RES2 A64_V 0 0011110 1 type:1 0 11 001 0 scale:5 rn:5 rd:5 -# 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 @@ -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 >= 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