From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150299318967639.700741707928046; Thu, 17 Aug 2017 11:06:29 -0700 (PDT) Received: from localhost ([::1]:38485 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPBc-0005Yg-6R for importer@patchew.org; Thu, 17 Aug 2017 14:06:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37432) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9R-000430-VM for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9N-0005Gt-I2 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:13 -0400 Received: from mail-wr0-x22f.google.com ([2a00:1450:400c:c0c::22f]:33099) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9N-0005F9-Aq for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:09 -0400 Received: by mail-wr0-x22f.google.com with SMTP id b65so50611301wrd.0 for ; Thu, 17 Aug 2017 11:04:07 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id h190sm3716635wmd.4.2017.08.17.11.04.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:05 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 90E3B3E0190; Thu, 17 Aug 2017 19:04:04 +0100 (BST) 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=e20I73/xAIYyMK8gdgDNzImGouaSewvZsy/sZSnO7oQ=; b=IJ4+peoHJOziwFTXbrMQpBThWuV6Ya/09ZYjgJcK7JjhMsiHlZnkzcoxCBqg+2INLv o6dRQqKFxPeHtcMRQVCF86fZ0dhLMlj9HwIuQ3jTE0Mxir1vVccBvYx2zM4J7PEUY/fN 35jsCpqKdW2NsjvZWR6PmGP+aoTYmYaUmUrYw= 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=e20I73/xAIYyMK8gdgDNzImGouaSewvZsy/sZSnO7oQ=; b=CXeDid2Z9fw5SLSvG0lOLPKVjfFyGjiPTXo/alfKgkpzUHMhcDmVxK5J8nqNEZH4k3 rg1KIF3pKVz6o7Kawv2Gw8LrQtwXPyotao3nIZ6cQqy/uVE8bspebK37ksTlJR3ZevyI g11zqCyvcqdE7K89MM2TIgyRqziF0+59eFNTfWywpaFSWyLK2xl/g+f74Tr8+/yC6tQt welB56MXNFvIFYWA8rlPc1o0DciJQlXbDkYWr8nIeTxiuIBEsLwMpO39hKZPHatjc43i sLjHfNYGRevBLxhZlc7bC8WIVZ7xf0b4leaoP0iZpDYDYNMOOIRypJl/fly+K5OPN/Aa iyVg== X-Gm-Message-State: AHYfb5iTwIJUm4BsVfmi6AamIyUyxfs+p2zcqhYHUFb+BH+RhHSJV7uM 3CffE1QDjLk5rIFI X-Received: by 10.28.28.146 with SMTP id c140mr1962112wmc.7.1502993046915; Thu, 17 Aug 2017 11:04:06 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:03:56 +0100 Message-Id: <20170817180404.29334-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22f Subject: [Qemu-devel] [RFC PATCH 1/9] tcg/README: listify the TCG types. 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=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Although the other types are aliases lets make it clear what TCG types are available. Signed-off-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson --- tcg/README | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tcg/README b/tcg/README index 03bfb6acd4..f116b7b694 100644 --- a/tcg/README +++ b/tcg/README @@ -53,9 +53,12 @@ an "undefined result". =20 TCG instructions operate on variables which are temporaries, local temporaries or globals. TCG instructions and variables are strongly -typed. Two types are supported: 32 bit integers and 64 bit -integers. Pointers are defined as an alias to 32 bit or 64 bit -integers depending on the TCG target word size. +typed. A number of types are supported: + + TCGv_i32 - 32 bit integer + TCGv_i64 - 64 bit integer + TCGv - target pointer (aliased to 32 or 64 bit integer) + TCGv_ptr - host pointer (used for direct access to host structures) =20 Each instruction has a fixed number of output variable operands, input variable operands and always constant operands. --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502993188858958.8156535057062; Thu, 17 Aug 2017 11:06:28 -0700 (PDT) Received: from localhost ([::1]:38484 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPBZ-0005Vv-N7 for importer@patchew.org; Thu, 17 Aug 2017 14:06:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37433) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9R-000431-Vi for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9O-0005HZ-G9 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:13 -0400 Received: from mail-wr0-x235.google.com ([2a00:1450:400c:c0c::235]:33996) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9O-0005Gx-A0 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:10 -0400 Received: by mail-wr0-x235.google.com with SMTP id y96so47728748wrc.1 for ; Thu, 17 Aug 2017 11:04:10 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id n17sm3690203wra.6.2017.08.17.11.04.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:05 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id A2A443E08D5; Thu, 17 Aug 2017 19:04:04 +0100 (BST) 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; bh=aQ5Q4N/tFeJRd7kL8iE6aNPDDKqWRl+nnZkLwu9w9+o=; b=V6rtEqXGlBKEDKDjIarb21w2nsYq2yefT/2J1YqAlS4BFvtxRh127m+XHnNJzYQ0i9 U4OQrgBGRAEetvvjzWBdLdVlHOakzwxVWTRLUmE7+LQXynV8q068p1xdv1GDfkkngFWT V1gQm2OAwMZ8liOwM/mZp8Xyw6K5+IIAJ4lVc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=aQ5Q4N/tFeJRd7kL8iE6aNPDDKqWRl+nnZkLwu9w9+o=; b=m8ZB9b/WU4Q2zslN5MX1nnsg8ezW+3kMGh3vMc9Bjg/z7fnQLHKwzffi8FhG9CBIGA sml0iVOvjvCfMn0ouTbk8ABo1WHSPYaCmT3pA+ZNBn40kfi2v74iO/WeoCrg8brym+Ja RKfJUpsix7jy7hT5FJxzv961xBhrdrM3AIHMHfxzroGGA4DEOUnag8QdScxHcGMDR8sw U4/yd08pamS5uQVN90zutVAD9tWMIW7KY3EqRCNl9tLcx9Q6pWX7CMNS11v9zfYx/iCr eYrUyxSriRS25OduAa2WfYKrjlhTNqd2+lw7kggP8FFzVQMb7a4/8zcBz0vZ07X5Xkyd YJXQ== X-Gm-Message-State: AHYfb5ghZYXhA1ipd8OgecOYOlAkq8e+G7HnEE64YmqOYbLnTFSPUCJE Gl7gokaICMgnw8yK X-Received: by 10.28.141.140 with SMTP id p134mr1655091wmd.84.1502993049094; Thu, 17 Aug 2017 11:04:09 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:03:57 +0100 Message-Id: <20170817180404.29334-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::235 Subject: [Qemu-devel] [RFC PATCH 2/9] tcg: introduce the concepts of a TCGv_vec register type 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=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently it only makes sense for globals - i.e. registers directly mapped to CPUEnv. --- tcg/README | 1 + tcg/tcg.h | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/tcg/README b/tcg/README index f116b7b694..e0868d95b4 100644 --- a/tcg/README +++ b/tcg/README @@ -57,6 +57,7 @@ typed. A number of types are supported: =20 TCGv_i32 - 32 bit integer TCGv_i64 - 64 bit integer + TCGv_vec - an arbitrary sized vector register TCGv - target pointer (aliased to 32 or 64 bit integer) TCGv_ptr - host pointer (used for direct access to host structures) =20 diff --git a/tcg/tcg.h b/tcg/tcg.h index 17b7750ee6..d75636b6ab 100644 --- a/tcg/tcg.h +++ b/tcg/tcg.h @@ -256,6 +256,7 @@ typedef struct TCGPool { typedef enum TCGType { TCG_TYPE_I32, TCG_TYPE_I64, + TCG_TYPE_VECTOR, TCG_TYPE_COUNT, /* number of different types */ =20 /* An alias for the size of the host register. */ @@ -431,6 +432,7 @@ typedef tcg_target_ulong TCGArg; typedef struct TCGv_i32_d *TCGv_i32; typedef struct TCGv_i64_d *TCGv_i64; typedef struct TCGv_ptr_d *TCGv_ptr; +typedef struct TCGv_vec_d *TCGv_vec; typedef TCGv_ptr TCGv_env; #if TARGET_LONG_BITS =3D=3D 32 #define TCGv TCGv_i32 @@ -450,6 +452,11 @@ static inline TCGv_i64 QEMU_ARTIFICIAL MAKE_TCGV_I64(i= ntptr_t i) return (TCGv_i64)i; } =20 +static inline TCGv_vec QEMU_ARTIFICIAL MAKE_TCGV_VEC(intptr_t i) +{ + return (TCGv_vec)i; +} + static inline TCGv_ptr QEMU_ARTIFICIAL MAKE_TCGV_PTR(intptr_t i) { return (TCGv_ptr)i; @@ -465,6 +472,11 @@ static inline intptr_t QEMU_ARTIFICIAL GET_TCGV_I64(TC= Gv_i64 t) return (intptr_t)t; } =20 +static inline intptr_t QEMU_ARTIFICIAL GET_TCGV_VEC(TCGv_vec t) +{ + return (intptr_t)t; +} + static inline intptr_t QEMU_ARTIFICIAL GET_TCGV_PTR(TCGv_ptr t) { return (intptr_t)t; @@ -788,6 +800,7 @@ int tcg_global_mem_new_internal(TCGType, TCGv_ptr, intp= tr_t, const char *); =20 TCGv_i32 tcg_global_reg_new_i32(TCGReg reg, const char *name); TCGv_i64 tcg_global_reg_new_i64(TCGReg reg, const char *name); +TCGv_vec tcg_global_reg_new_vec(TCGReg reg, const char *name); =20 TCGv_i32 tcg_temp_new_internal_i32(int temp_local); TCGv_i64 tcg_temp_new_internal_i64(int temp_local); @@ -829,6 +842,13 @@ static inline TCGv_i64 tcg_temp_local_new_i64(void) return tcg_temp_new_internal_i64(1); } =20 +static inline TCGv_vec tcg_global_mem_new_vec(TCGv_ptr reg, intptr_t offse= t, + const char *name) +{ + int idx =3D tcg_global_mem_new_internal(TCG_TYPE_VECTOR, reg, offset, = name); + return MAKE_TCGV_VEC(idx); +} + #if defined(CONFIG_DEBUG_TCG) /* If you call tcg_clear_temp_count() at the start of a section of * code which is not supposed to leak any TCG temporaries, then --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502993374006346.2547695514097; Thu, 17 Aug 2017 11:09:34 -0700 (PDT) Received: from localhost ([::1]:38553 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPEa-0008BS-Qk for importer@patchew.org; Thu, 17 Aug 2017 14:09:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37478) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9S-00043O-Sb for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9N-0005GW-6J for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:14 -0400 Received: from mail-wr0-x22e.google.com ([2a00:1450:400c:c0c::22e]:35769) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9N-0005Fc-0L for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:09 -0400 Received: by mail-wr0-x22e.google.com with SMTP id 49so41956846wrw.2 for ; Thu, 17 Aug 2017 11:04:08 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id f9sm3909910wmf.18.2017.08.17.11.04.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:05 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id B377E3E11D6; Thu, 17 Aug 2017 19:04:04 +0100 (BST) 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=MB+PXXB6umsS0QP7qT6V2jBQgssQbx5IiHKDlGxcoXY=; b=U56+y9+xFluDLG7d5k07kN+g1t49cBqCNAXuEMw4FKJevuSbL85oMcz2gMPiDU7x77 N6EMhwiamfYJ+3OWT7B38PB4oONlpqKpU0jKymjMSMWXLyFAY4dUmkA21/Dq3hOxXTjE B2GF4Vd4RkVBAVqNDQHZKrK/CkLcUO7hsG1zk= 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=MB+PXXB6umsS0QP7qT6V2jBQgssQbx5IiHKDlGxcoXY=; b=CG2Kj4BmEH4f3OB3/UvesR2sHySgGcpLAdut3NHW40OCxECyy9fIvefLyvQrT+OfZb 2XXyYeVR6cxnUj+oKB6zX3bRbQ2u7VAYcQ3o+0Gd+SU3krFQ7Exr4EUTBvH11CGgImPT M9Obv8BF0ua2q3npirZI6J8Nc5ryQrLfMCf1d5d02frcCJXX9h4S6pw6BXmsnPpRinWj dWM+AjFZ9Ark5qPgJ6ImKGN/3XB2H3g8vOzKE09FCvNNQ/I81mGhdTyeTt9F6gy4AFrd AoyU38d16PPqUUJCo5q2vV05Pr23LMERs3gfoz2AfT1REw+NSEjwWmEPLp+8HE28J6ie DSYw== X-Gm-Message-State: AHYfb5jcwC7XBl44zmUYZKlbUbbO2bG6gTW/KZhjRqyk4oB8y7ZLzKWA hKfMif+MjenDzsfd X-Received: by 10.28.61.4 with SMTP id k4mr1697194wma.148.1502993047872; Thu, 17 Aug 2017 11:04:07 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:03:58 +0100 Message-Id: <20170817180404.29334-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22e Subject: [Qemu-devel] [RFC PATCH 3/9] tcg: generate ptrs to vector registers 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=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 As we operate directly on the vectors in memory we pass around the address for TCG_TYPE_VECTOR. Currently only helpers ever see these values but if we were to generate simd backend instructions they would load directly from the backing store. We also need to ensure when copying from one temp register to the other the right size is used. Signed-off-by: Alex Benn=C3=A9e --- tcg/tcg.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/tcg/tcg.c b/tcg/tcg.c index 35598296c5..e16811d68d 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2034,7 +2034,21 @@ static void temp_load(TCGContext *s, TCGTemp *ts, TC= GRegSet desired_regs, break; case TEMP_VAL_MEM: reg =3D tcg_reg_alloc(s, desired_regs, allocated_regs, ts->indirec= t_base); - tcg_out_ld(s, ts->type, reg, ts->mem_base->reg, ts->mem_offset); + if (ts->type =3D=3D TCG_TYPE_VECTOR) { + /* Vector registers are ptr's to the memory representation */ + TCGArg args[TCG_MAX_OP_ARGS]; + int const_args[TCG_MAX_OP_ARGS]; + args[0] =3D reg; + args[1] =3D ts->mem_base->reg; + args[2] =3D ts->mem_offset; + const_args[0] =3D 0; + const_args[1] =3D 0; + const_args[2] =3D 1; + /* FIXME: needs to by host_ptr centric */ + tcg_out_op(s, INDEX_op_add_i64, args, const_args); + } else { + tcg_out_ld(s, ts->type, reg, ts->mem_base->reg, ts->mem_offset= ); + } ts->mem_coherent =3D 1; break; case TEMP_VAL_DEAD: @@ -2196,6 +2210,10 @@ static void tcg_reg_alloc_mov(TCGContext *s, const T= CGOpDef *def, ots->reg =3D tcg_reg_alloc(s, tcg_target_available_regs[ot= ype], allocated_regs, ots->indirect_bas= e); } + /* For the purposes of moving stuff about it is a host ptr */ + if (otype =3D=3D TCG_TYPE_VECTOR) { + otype =3D TCG_TYPE_PTR; + } tcg_out_mov(s, otype, ots->reg, ts->reg); } ots->val_type =3D TEMP_VAL_REG; @@ -2440,7 +2458,11 @@ static void tcg_reg_alloc_call(TCGContext *s, int nb= _oargs, int nb_iargs, =20 if (ts->val_type =3D=3D TEMP_VAL_REG) { if (ts->reg !=3D reg) { - tcg_out_mov(s, ts->type, reg, ts->reg); + if (ts->type =3D=3D TCG_TYPE_VECTOR) { + tcg_out_mov(s, TCG_TYPE_PTR, reg, ts->reg); + } else { + tcg_out_mov(s, ts->type, reg, ts->reg); + } } } else { TCGRegSet arg_set; --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 15029931920161000.4105628872443; Thu, 17 Aug 2017 11:06:32 -0700 (PDT) Received: from localhost ([::1]:38486 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPBe-0005cA-Hk for importer@patchew.org; Thu, 17 Aug 2017 14:06:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37431) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9R-00042z-VJ for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9P-0005IR-Ki for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:13 -0400 Received: from mail-wr0-x233.google.com ([2a00:1450:400c:c0c::233]:33116) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9P-0005Hz-EV for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:11 -0400 Received: by mail-wr0-x233.google.com with SMTP id b65so50612553wrd.0 for ; Thu, 17 Aug 2017 11:04:11 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id l23sm3956278wrb.30.2017.08.17.11.04.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:05 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id C4CDA3E128A; Thu, 17 Aug 2017 19:04:04 +0100 (BST) 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; bh=w838pJBKi9FO1w7BOjy9IbZ2bNjPtkChS6A9ODn8p/8=; b=QXmhNw6jrcADGhmvsIoAsSfoUtwltZtl0ObAepkptCNOg0pf0M+d27w7ubjqO8CKVE lGlVsMVLK0RGIxMV+dw8V7kCAS5acMkjKFYQ7RqT1AZ5fBcqe3Pq6Pf3o8WrZJ1bS1/a XLPqADRC7AwYcSQBYvwgleOrMY4CroqRt6qao= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=w838pJBKi9FO1w7BOjy9IbZ2bNjPtkChS6A9ODn8p/8=; b=ENfzm5LZEk+2q9ba7VVbIHC49TQZiudln77W+m7R+dzHTgtvRZq+b5QaTZpk9B+aaG kfSlL0G3thcKP5F/ha1CAAxEY6GidqApZMvMGgSHTyxVAacJ3y2+U1Bj1ZgXvH+yBoVL Pd1RrCoh306Q58A9+e0BYvdfr0+TOocDqSBpMEm2/FhdAGOWCXaTsBaP3wb3vXq4iygK /PiGcMdws/ZOkVRbstfMtGNH9skhpou7NgyD7VVEhLfu6Fy2p0QpPsIo6I97t77TaH1K aukTB626hqzAfNABQEqCAW4x7kk1gxOG7NROy6o1prc3o8nTF3KmnkDi3uZTnGXUPGUR mfIg== X-Gm-Message-State: AHYfb5gjWOX9+CRoM5sTK6OVGp5bKpyQ2Flw8bujQ7PRhMpEVbxObfuh 4MYRVnpcY4DfdoSW X-Received: by 10.223.199.212 with SMTP id y20mr4105289wrg.279.1502993050361; Thu, 17 Aug 2017 11:04:10 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:03:59 +0100 Message-Id: <20170817180404.29334-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::233 Subject: [Qemu-devel] [RFC PATCH 4/9] helper-head: add support for vec type 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: Paolo Bonzini , qemu-arm@nongnu.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org, Peter Crosthwaite Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" --- include/exec/helper-head.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/exec/helper-head.h b/include/exec/helper-head.h index 1cfc43b9ff..3fb4c3fc39 100644 --- a/include/exec/helper-head.h +++ b/include/exec/helper-head.h @@ -23,6 +23,7 @@ #define GET_TCGV_i32 GET_TCGV_I32 #define GET_TCGV_i64 GET_TCGV_I64 #define GET_TCGV_ptr GET_TCGV_PTR +#define GET_TCGV_vec GET_TCGV_VEC =20 /* Some types that make sense in C, but not for TCG. */ #define dh_alias_i32 i32 @@ -33,6 +34,7 @@ #define dh_alias_f32 i32 #define dh_alias_f64 i64 #define dh_alias_ptr ptr +#define dh_alias_vec vec #define dh_alias_void void #define dh_alias_noreturn noreturn #define dh_alias(t) glue(dh_alias_, t) @@ -45,6 +47,7 @@ #define dh_ctype_f32 float32 #define dh_ctype_f64 float64 #define dh_ctype_ptr void * +#define dh_ctype_vec void * #define dh_ctype_void void #define dh_ctype_noreturn void QEMU_NORETURN #define dh_ctype(t) dh_ctype_##t @@ -90,6 +93,7 @@ #define dh_is_64bit_i32 0 #define dh_is_64bit_i64 1 #define dh_is_64bit_ptr (sizeof(void *) =3D=3D 8) +#define dh_is_64bit_vec (sizeof(void *) =3D=3D 8) #define dh_is_64bit(t) glue(dh_is_64bit_, dh_alias(t)) =20 #define dh_is_signed_void 0 @@ -106,6 +110,7 @@ extension instructions that may be required, e.g. ia64's addp4. But for now we don't support any 64-bit targets with 32-bit pointers. */ #define dh_is_signed_ptr 0 +#define dh_is_signed_vec dh_is_signed_ptr #define dh_is_signed_env dh_is_signed_ptr #define dh_is_signed(t) dh_is_signed_##t =20 --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 15029933817051022.8261587206663; Thu, 17 Aug 2017 11:09:41 -0700 (PDT) Received: from localhost ([::1]:38555 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPEi-0008FV-Hm for importer@patchew.org; Thu, 17 Aug 2017 14:09:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9T-00043l-B1 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9S-0005LA-5O for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:15 -0400 Received: from mail-wr0-x230.google.com ([2a00:1450:400c:c0c::230]:34014) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9R-0005Je-UG for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:14 -0400 Received: by mail-wr0-x230.google.com with SMTP id y96so47730115wrc.1 for ; Thu, 17 Aug 2017 11:04:13 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id f80sm3066124wmh.16.2017.08.17.11.04.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:10 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id D5C7D3E12CF; Thu, 17 Aug 2017 19:04:04 +0100 (BST) 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=GgVZo7p5mIkOZRxHVwEM7z1GJnFzidDYAWt+rKTnK7Y=; b=V/mCCcbor+EvYHDTAQcaVmqe/Kjmgr/zJjQbYiJqR7X9HHUCZWbFaIaY830t5X7J5Y HOVDSwEOB/nP6kBX5uq+j1Ab2+bgLC7T6FcbGAjtiy5ofOThoW8T/I2On34DH9xXY6lt VsZ/8cMPHn+uPoQpekVQ2xIbNJihlucsUjFu4= 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=GgVZo7p5mIkOZRxHVwEM7z1GJnFzidDYAWt+rKTnK7Y=; b=VbIqNPIFcvBdXIFjKJwIDZdJsnef7SOhPbjpSd4p6/nQTP9kMLWJM03cjfAc7SAdEl z4RGBRLZEHaVzMEdJEMJskajiDLVD378bDD8o48yLbhR9Ej863HnPs9J66gWx0APtIGu n75MgfqHrX7rDu17xW6zwZ1vlLEHV9sNzFGMkTWOm5Rde3If7vvkj8jZYP6+Ll/CXpoV nY57/Gjz/HN2rytv/SRGvrypidHpmaZAFTCyda2dGfldZv4N2kgLnD4xxUCTH5MCx0k/ dsapmK7zMN4lh2v0uq6OFZlvJBiaVG5s6A1RE06jurZ0pCW8WMoPoAv2JMSIPU8gEE6+ sFog== X-Gm-Message-State: AHYfb5gNzNwmuPFih+Wzfm4e8v1YejRLhzkNlOMKDn447PL1QjhbElt9 d2eGsppY9E+1Dxls X-Received: by 10.28.72.133 with SMTP id v127mr1923040wma.36.1502993052833; Thu, 17 Aug 2017 11:04:12 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:04:00 +0100 Message-Id: <20170817180404.29334-6-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::230 Subject: [Qemu-devel] [RFC PATCH 5/9] arm/cpu.h: align VFP registers 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: Peter Maydell , qemu-arm@nongnu.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson --- target/arm/cpu.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index b39d64aa0b..cdd47cb868 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -457,8 +457,8 @@ typedef struct CPUARMState { * the two execution states, and means we do not need to explicitly * map these registers when changing states. */ - float64 regs[64]; - + float64 regs[64] __attribute__((aligned(16))); + /* VFP system registers */ uint32_t xregs[16]; /* We store these fpcsr fields separately for convenience. */ int vec_len; --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502993646994585.2896026292601; Thu, 17 Aug 2017 11:14:06 -0700 (PDT) Received: from localhost ([::1]:38892 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPIz-0003Yd-I3 for importer@patchew.org; Thu, 17 Aug 2017 14:14:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37561) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9W-00047u-6F for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9R-0005Ja-98 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:18 -0400 Received: from mail-wr0-x232.google.com ([2a00:1450:400c:c0c::232]:36418) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9R-0005J7-3p for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:13 -0400 Received: by mail-wr0-x232.google.com with SMTP id f8so6194330wrf.3 for ; Thu, 17 Aug 2017 11:04:12 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id z9sm5090096wrz.0.2017.08.17.11.04.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:10 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id E70AD3E1337; Thu, 17 Aug 2017 19:04:04 +0100 (BST) 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=ieNsD6GEr3OWd7Ih++yjO7tL6HCDLmZ0Skj6lrfUXPw=; b=kdrXeD2WrZ+Jn95vSs7jaewrO3cd02UwYpETFJ2Mz3YglwTT4sCTAa6hb+fpjojt3R ZpAX2LjglYrZKZ22V8b9t8Y11eIannqgqXMj0lYOxwQOOoX6GhO++TCDFw/UBLDl6Fqh FJ5RMW6mSept+W1/UHBUE7y4idpQAeMzy50Sg= 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=ieNsD6GEr3OWd7Ih++yjO7tL6HCDLmZ0Skj6lrfUXPw=; b=cYk4nXhbS3S9iMHuMvyQ++3q7MQU95uqxQfHFHuBoY6PSmxboEepZF7aqk5zr06MxL hy4pCho8jId6zga0tZV2k4/7tRSjR5/3DQ414c7/HZbKAvT6HX21I7xgZHwmI6wZ1M+o 9YYCD+B0L711bWH4uYE3mA2iweTEIKh8nOsqHxCGXrWVYiR+4YUyefb0jnaDr+Um06uu PbxUSXQ4ox/IiUuguCsbArWZzXrHo6/8rNLufjpISXwDKyYLWRoJja2bj6dDYTRUAf7c wKaC+JlbaIsuV0yL4EVPADEWRts+qguTB1qSkwsEbFDemlwQ9gBbipFYBxkhTUk8icww mkpA== X-Gm-Message-State: AHYfb5jBCOPI8cy0qE6QCuWj+7C9f7aXif1jTygHEeHKK+Us8dX2dkaY fSaEOQ+jbJBtQ7Jtj9gcfw== X-Received: by 10.223.170.2 with SMTP id p2mr4296928wrd.22.1502993052079; Thu, 17 Aug 2017 11:04:12 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:04:01 +0100 Message-Id: <20170817180404.29334-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::232 Subject: [Qemu-devel] [RFC PATCH 6/9] target/arm/translate-a64: regnames -> x_regnames 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: Peter Maydell , qemu-arm@nongnu.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 These are the integer registers as will become clear when we start declaring the vector ones. Signed-off-by: Alex Benn=C3=A9e --- target/arm/translate-a64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 2200e25be0..805af51900 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -43,7 +43,7 @@ static TCGv_i64 cpu_pc; static TCGv_i64 cpu_exclusive_high; static TCGv_i64 cpu_reg(DisasContext *s, int reg); =20 -static const char *regnames[] =3D { +static const char *x_regnames[] =3D { "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23", --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502993206588401.3788841088642; Thu, 17 Aug 2017 11:06:46 -0700 (PDT) Received: from localhost ([::1]:38487 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPBt-0005kY-Ak for importer@patchew.org; Thu, 17 Aug 2017 14:06:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37540) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9V-00046O-81 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9U-0005NN-9v for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:17 -0400 Received: from mail-wr0-x229.google.com ([2a00:1450:400c:c0c::229]:38353) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9U-0005Mt-3O for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:16 -0400 Received: by mail-wr0-x229.google.com with SMTP id 5so25944188wrz.5 for ; Thu, 17 Aug 2017 11:04:15 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id e76sm5963760wmd.36.2017.08.17.11.04.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:10 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 036333E1363; Thu, 17 Aug 2017 19:04:05 +0100 (BST) 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=qBqCHRzziGBTUuTJ+hFC9PK4+Y6PwFoHW4T6DhMi7Ss=; b=iQWKJmPdcXWsMryC4GIoHzFXpkmBOXMqQLhqLHuL+Crby+MSH+Max6e0jSeWMEkSHD tR5n5/1mSXV/QYWx7OgPH6jWCvyh96xlxZHJB8fFYm9fLSmW+oGTvC0sG3q43oji7FVR KJlYT3Hxt8+i1b2kdKtFz3Z4Jq9R02fKeUxlY= 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=qBqCHRzziGBTUuTJ+hFC9PK4+Y6PwFoHW4T6DhMi7Ss=; b=EB+XmdHGTS21DY6dfnHnSX0dY4Bn5HRiZefvBvQvZLWcFFY303zYet7+zXIyKO83Yh J/QAE6keyykulwNf3vxoKG8mj9Yzr1DNnhLd3YfDeOuoTLDQ97VBLRdQL94Yy0FDaY31 D5T1ICLne4LdJok6sueH5uQeSDEQ0ZpwiUDPl0NA39Bj8hGE5IRsea6JMSo/sgs3CkxY emPI8fv+l5ksMsScea8OZe+zTS/F4h0g8KeuEWQBuxb+Kf4Jky4P2RU+BZaF606uNWwS 66cRIgVOOqyRq6HnLcQE2mylimXHNzZ48FRlmEf0X5KP6ZKIqQVmuGsgXMaluqhugQ99 pwXw== X-Gm-Message-State: AHYfb5jiE4igqWJNOq/RlQVawy2HXSV9T/JiHr7h0f+toougnKkAKX+6 2cnFRKK6WetYh7fl X-Received: by 10.28.66.18 with SMTP id p18mr2104650wma.60.1502993055039; Thu, 17 Aug 2017 11:04:15 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:04:02 +0100 Message-Id: <20170817180404.29334-8-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::229 Subject: [Qemu-devel] [RFC PATCH 7/9] target/arm/translate-a64: register global vectors 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: Peter Maydell , qemu-arm@nongnu.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Register the vector registers with TCG. Signed-off-by: Alex Benn=C3=A9e --- target/arm/translate-a64.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 805af51900..b5f48605a7 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -36,8 +36,10 @@ =20 #include "trace-tcg.h" =20 +/* Global registers */ static TCGv_i64 cpu_X[32]; static TCGv_i64 cpu_pc; +static TCGv_vec cpu_V[32]; =20 /* Load/store exclusive handling */ static TCGv_i64 cpu_exclusive_high; @@ -50,6 +52,13 @@ static const char *x_regnames[] =3D { "x24", "x25", "x26", "x27", "x28", "x29", "lr", "sp" }; =20 +static const char *v_regnames[] =3D { + "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", + "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", + "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", + "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31" +}; + enum a64_shift_type { A64_SHIFT_TYPE_LSL =3D 0, A64_SHIFT_TYPE_LSR =3D 1, @@ -91,10 +100,18 @@ void a64_translate_init(void) cpu_pc =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUARMState, pc), "pc"); - for (i =3D 0; i < 32; i++) { + + for (i =3D 0; i < ARRAY_SIZE(cpu_X); i++) { cpu_X[i] =3D tcg_global_mem_new_i64(cpu_env, offsetof(CPUARMState, xregs[i]), - regnames[i]); + x_regnames[i]); + } + + for (i =3D 0; i < ARRAY_SIZE(cpu_V); i++) { + cpu_V[i] =3D tcg_global_mem_new_vec(cpu_env, + offsetof(CPUARMState, + vfp.regs[i * 2]), + v_regnames[i]); } =20 cpu_exclusive_high =3D tcg_global_mem_new_i64(cpu_env, --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502993526078555.9714512735237; Thu, 17 Aug 2017 11:12:06 -0700 (PDT) Received: from localhost ([::1]:38663 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPH2-0001o8-DA for importer@patchew.org; Thu, 17 Aug 2017 14:12:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37528) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9U-00044k-ED for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9T-0005MX-81 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:16 -0400 Received: from mail-wr0-x236.google.com ([2a00:1450:400c:c0c::236]:35804) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9T-0005Lh-11 for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:15 -0400 Received: by mail-wr0-x236.google.com with SMTP id 49so41959017wrw.2 for ; Thu, 17 Aug 2017 11:04:14 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id m16sm2376115wrg.11.2017.08.17.11.04.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:10 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 167703E13AA; Thu, 17 Aug 2017 19:04:05 +0100 (BST) 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=1OZ/Z1R6iCyFdgPfKV/7hVu1PAMlL7gRWtPozZg3jDk=; b=feTPYjQRxGv8XofMiuQEUBzH/3p0ANcoETRYVVTtYjpAMygYse25ImpXaWJG3m4JJG qwB1rSZBOJQJmZPvOBNaiXln2NfU8xYGvLJ+83KwHW9lcJBD7SjxywVuNUEQw3VkMu+J 48kzZs44N4SS9dKk/rsHlvKXYpHCljhmmd6hk= 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=1OZ/Z1R6iCyFdgPfKV/7hVu1PAMlL7gRWtPozZg3jDk=; b=qvZ6C3yZh7vF+lsADo/rGIb4/FlK4Rd0TBrgIze6nOR1m3s0pK06i78VA1t2EK8Kjm ZT90yAri1bRqAwi6ZUbxl1qBn+C0AYag9OoAWhCjbcPmR3WRA+iSl/9wvRSqbcNvgs6d 8AT7Fth5vOzeaDSv2bSWBVh6KWtrhHpvxPxNOYfGiqsdCR5rXv9fIKQ1oEmKQosMblyC imzL4BvrrjHb5wZ+vR96hLsYNFAnh9R4Jzd34588/f9RkQMRf7+h9LF44Yxh6ssdjDfK tIg60fGdbBLgScpU/ZTZ4vgZpzWzorPyfhCAvGhBwSnGRYoSiyeT9iAQ9AeIxi2/jWik qFCA== X-Gm-Message-State: AHYfb5iI/FZfB3E1nlZF+fEDeYsHEF+m2LQD3ds3YcXc4ODFtVu7taVj AYWiYiGRNPkrQEpQ X-Received: by 10.28.174.209 with SMTP id x200mr1698448wme.106.1502993053921; Thu, 17 Aug 2017 11:04:13 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:04:03 +0100 Message-Id: <20170817180404.29334-9-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::236 Subject: [Qemu-devel] [RFC PATCH 8/9] target/arm/helpers: introduce ADVSIMD flags X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 This is used to pass constant information to the helper. This includes immediate data and element counts/offsets. Signed-off-by: Alex Benn=C3=A9e --- target/arm/advsimd_helper_flags.h | 50 +++++++++++++++++++++++++++++++++++= ++++ target/arm/helper-a64.c | 1 + target/arm/translate-a64.c | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 target/arm/advsimd_helper_flags.h diff --git a/target/arm/advsimd_helper_flags.h b/target/arm/advsimd_helper_= flags.h new file mode 100644 index 0000000000..47429e6fd1 --- /dev/null +++ b/target/arm/advsimd_helper_flags.h @@ -0,0 +1,50 @@ +/* + * AArch64 Vector Flags + * + * Copyright (c) 2017 Linaro + * Author: Alex Benn=C3=A9e + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* AdvSIMD element data + * + * We pack all the additional information for elements into a single + * 32 bit constant passed by register. Hopefully for groups of + * identical operations on different registers this should propergate + * nicely in the TCG. + * + * The following control element iteration: + * ADVSIMD_OPR_ELT - the count of elements affected + * ADVSIMD_ALL_ELT - the total count of elements (e.g. clear all-opr el= ements) + * ADVSIMD_DOFF_ELT - the offset for the destination register (e.g. foo2= ops) + * + * We encode immediate data in: + * ADVSIMD_DATA + * + * Typically this is things like shift counts and the like. + */ + +#define ADVSIMD_OPR_ELT_BITS 5 +#define ADVSIMD_OPR_ELT_SHIFT 0 +#define ADVSIMD_ALL_ELT_BITS 5 +#define ADVSIMD_ALL_ELT_SHIFT 5 +#define ADVSIMD_DOFF_ELT_BITS 5 +#define ADVSIMD_DOFF_ELT_SHIFT 10 +#define ADVSIMD_DATA_BITS 16 +#define ADVSIMD_DATA_SHIFT 16 + +#define GET_SIMD_DATA(t, d) extract32(d, \ + ADVSIMD_ ## t ## _SHIFT, \ + ADVSIMD_ ## t ## _BITS) diff --git a/target/arm/helper-a64.c b/target/arm/helper-a64.c index d9df82cff5..17b1edfb5f 100644 --- a/target/arm/helper-a64.c +++ b/target/arm/helper-a64.c @@ -30,6 +30,7 @@ #include "exec/exec-all.h" #include "exec/cpu_ldst.h" #include "qemu/int128.h" +#include "advsimd_helper_flags.h" #include "tcg.h" #include /* For crc32 */ =20 diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index b5f48605a7..f474c5008b 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -34,6 +34,8 @@ #include "exec/helper-gen.h" #include "exec/log.h" =20 +#include "advsimd_helper_flags.h" + #include "trace-tcg.h" =20 /* Global registers */ --=20 2.13.0 From nobody Sun Apr 28 20:13:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502993554697422.4117239342838; Thu, 17 Aug 2017 11:12:34 -0700 (PDT) Received: from localhost ([::1]:38667 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPHV-0002A2-AP for importer@patchew.org; Thu, 17 Aug 2017 14:12:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37577) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diP9W-00049O-VY for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1diP9V-0005Of-TD for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:18 -0400 Received: from mail-wr0-x22e.google.com ([2a00:1450:400c:c0c::22e]:34032) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1diP9V-0005Nu-Gh for qemu-devel@nongnu.org; Thu, 17 Aug 2017 14:04:17 -0400 Received: by mail-wr0-x22e.google.com with SMTP id y96so47731454wrc.1 for ; Thu, 17 Aug 2017 11:04:17 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id f9sm3877162wmf.9.2017.08.17.11.04.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 11:04:10 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 2A0ED3E1403; Thu, 17 Aug 2017 19:04:05 +0100 (BST) 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=UC4iwuAR4yeyWBSDbELSGaxnBCBHWMws/wQFfSoxQ0g=; b=FRRxoY1V+wZWgrDUDBiQAimwI4n4lFdaoYE0qCsrWD9lf0h5ocOy9utlQVqBMAg2bU AT0VFoIohLYSlqYKiHmrBHo2u00Rrt3dkXW3RHVG/WrM///P0XAlZcHBAQ6l45VIAKbK 3h6CRCNHdoR3CBV8eugaOqAjjvh3D4nDll7MM= 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=UC4iwuAR4yeyWBSDbELSGaxnBCBHWMws/wQFfSoxQ0g=; b=gGhQFXaoQPF0czSRIbyQv/U/1A79qjzbfXGfA8d3hSyr0nBl2PDEVxAWwolIkEKhd2 FbprRBbDWRjGkJMC2R76v6i6CHEZmLDABmkS2aVdQGRJ+CTBzJ+G/B83p6hr7PSIapfS OKsbCh9kfbKJmQBJ1dyDsaBPD/UfHordNh/MGyQESPDMUC+dBx9Km+DyqgGkxK66ZmRj m+nyJhHvQKfBsuJ2QtQVqcdICH/0Dy4t7ODflYTwa6Sel7FVjugBRgdGl5+bF9CNb3pR UblWnwEztWpJncutOZzdHu5f8MHMDN15ZshzLhX7ntxVLlK6zT50ef5d6Q1uGPSMlQkH ZElg== X-Gm-Message-State: AHYfb5i9EF7deWAtjigZVJSNS4t7JnHPhCik/xPYFIPodIrtRr0OGrUy 3BGCDSlusRpOEA2n X-Received: by 10.223.152.19 with SMTP id v19mr4134516wrb.60.1502993056413; Thu, 17 Aug 2017 11:04:16 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: rth@twiddle.net, cota@braap.org, batuzovk@ispras.ru Date: Thu, 17 Aug 2017 19:04:04 +0100 Message-Id: <20170817180404.29334-10-alex.bennee@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170817180404.29334-1-alex.bennee@linaro.org> References: <20170817180404.29334-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22e Subject: [Qemu-devel] [RFC PATCH 9/9] target/arm/translate-a64: vectorise smull vD.4s, vN.[48]s, vM.h[] 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: Peter Maydell , qemu-arm@nongnu.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 These instructions show up in the ffmpeg profile from the ff_simple_idct_put_neon function. WARNING: this is experimental and essentially shortcuts to the vectorised helper for the one instruction that shows up a lot in the ffmpeg trace. Otherwise it falls through to the normal code generation. We also skip where rd =3D=3D rn to avoid having to explicitly deal with the aliasing in the helper. Signed-off-by: Alex Benn=C3=A9e --- target/arm/helper-a64.c | 17 +++++++++++ target/arm/helper-a64.h | 2 ++ target/arm/translate-a64.c | 72 ++++++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 91 insertions(+) diff --git a/target/arm/helper-a64.c b/target/arm/helper-a64.c index 17b1edfb5f..ae0f8da5c4 100644 --- a/target/arm/helper-a64.c +++ b/target/arm/helper-a64.c @@ -538,3 +538,20 @@ uint64_t HELPER(paired_cmpxchg64_be)(CPUARMState *env,= uint64_t addr, =20 return !success; } + +/* Multiply Long (vector, by element) */ +void HELPER(advsimd_smull_idx_s32)(void *d, void *n, uint32_t m, + uint32_t simd_data) +{ + int opr_elt =3D GET_SIMD_DATA(OPR_ELT, simd_data); + int doff_elt =3D GET_SIMD_DATA(DOFF_ELT, simd_data); + int32_t *rd =3D (int32_t *) d; + int16_t *rn =3D (int16_t *) n; + int16_t rm =3D (int16_t) m; + int i; + + #pragma GCC ivdep + for (i =3D 0; i < opr_elt; ++i) { + rd[i] =3D rn[i + doff_elt] * rm; + } +} diff --git a/target/arm/helper-a64.h b/target/arm/helper-a64.h index 6f9eaba533..0bd7942cec 100644 --- a/target/arm/helper-a64.h +++ b/target/arm/helper-a64.h @@ -44,3 +44,5 @@ DEF_HELPER_FLAGS_3(crc32_64, TCG_CALL_NO_RWG_SE, i64, i64= , i64, i32) DEF_HELPER_FLAGS_3(crc32c_64, TCG_CALL_NO_RWG_SE, i64, i64, i64, i32) DEF_HELPER_FLAGS_4(paired_cmpxchg64_le, TCG_CALL_NO_WG, i64, env, i64, i64= , i64) DEF_HELPER_FLAGS_4(paired_cmpxchg64_be, TCG_CALL_NO_WG, i64, env, i64, i64= , i64) + +DEF_HELPER_4(advsimd_smull_idx_s32, void, vec, vec, i32, i32) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index f474c5008b..3a609e571c 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -10466,6 +10466,74 @@ static void disas_simd_two_reg_misc(DisasContext *= s, uint32_t insn) } } =20 +typedef void AdvSIMDGenTwoPlusOneVectorFn(TCGv_vec, TCGv_vec, TCGv_i32, TC= Gv_i32); + +/* Handle [U/S]ML[S/A]L instructions + * + * This splits off from bellow only to aid experimentation. + */ +static bool handle_vec_simd_mul_addsub(DisasContext *s, uint32_t insn, int= opcode, int size, bool is_q, bool u, int rn, int rm, int rd) +{ + /* fprintf(stderr, "%s: %#04x op:%x sz:%d rn:%d rm:%d rd:%d\n", __func= __, */ + /* insn, opcode, size, rn, rm, rd); */ + + if (size =3D=3D 1) { + AdvSIMDGenTwoPlusOneVectorFn *fn =3D NULL; + uint32_t simd_info =3D 0; + + switch (opcode) { + case 0x2: /* SMLAL, SMLAL2, UMLAL, UMLAL2 */ + break; + case 0x6: /* SMLSL, SMLSL2, UMLSL, UMLSL2 */ + break; + case 0xa: /* SMULL, SMULL2, UMULL, UMULL2 */ + if (!u) + { + /* helper assumes no aliasing */ + if (rd =3D=3D rn) { + return false; + } + + fn =3D gen_helper_advsimd_smull_idx_s32; + simd_info =3D deposit32(simd_info, + ADVSIMD_OPR_ELT_SHIFT, ADVSIMD_OPR_E= LT_BITS, 4); + + if (is_q) { + simd_info =3D deposit32(simd_info, + ADVSIMD_DOFF_ELT_SHIFT, ADVSIMD_= DOFF_ELT_BITS, 4); + } + }; + break; + default: + break; + } + + /* assert(fn); */ + + if (fn) { + TCGv_i32 tcg_idx =3D tcg_temp_new_i32(); + TCGv_i32 tcg_simd_info =3D tcg_const_i32(simd_info); + int h =3D extract32(insn, 11, 1); + int lm =3D extract32(insn, 20, 2); + int index =3D h << 2 | lm; + + if (!fp_access_check(s)) { + return false; + } + + read_vec_element_i32(s, tcg_idx, rm, index, size); + + fn(cpu_V[rd], cpu_V[rn], tcg_idx, tcg_simd_info); + + tcg_temp_free_i32(tcg_simd_info); + tcg_temp_free_i32(tcg_idx); + return true; + } + } + + return false; +} + /* C3.6.13 AdvSIMD scalar x indexed element * 31 30 29 28 24 23 22 21 20 19 16 15 12 11 10 9 5 4 0 * +-----+---+-----------+------+---+---+------+-----+---+---+------+-----= -+ @@ -10518,6 +10586,10 @@ static void disas_simd_indexed(DisasContext *s, ui= nt32_t insn) unallocated_encoding(s); return; } + /* Shortcut if we have a vectorised helper */ + if (handle_vec_simd_mul_addsub(s, insn, opcode, size, is_q, u, rn,= rm, rd)) { + return; + } is_long =3D true; break; case 0x3: /* SQDMLAL, SQDMLAL2 */ --=20 2.13.0