From patchwork Thu Aug 17 18:03:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 110333 Delivered-To: patch@linaro.org Received: by 10.140.95.78 with SMTP id h72csp2521083qge; Thu, 17 Aug 2017 11:06:42 -0700 (PDT) X-Received: by 10.55.92.130 with SMTP id q124mr8032842qkb.274.1502993202024; Thu, 17 Aug 2017 11:06:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1502993202; cv=none; d=google.com; s=arc-20160816; b=dFCWZzFNNdd5MOA5Nr9aSjB34oyKYB6rDpY7WT7QD/9OBhUFgfeRz/s44qyTe8xusg 4INqNFtN9FIdfZB61k++O6fGeCc/YLh3bvx63adKHqZkE9STW7EmGh3aVm3yY8w7+w+B 0GW3cxWTVxelF3LvY3lsSMdgG0zLAmH1QiBzp1j7BnMhUQObXOCphCzk4zqPFp8BsOoH 6LG+2guHgKON6sDXDDErd9ybm4krj6Se96yKSPEa19wNvrQJCV0vrKOEJzXil5xkvKud RqtpX7sSUfQ/BffbR0BSEzhoOJUKB47NUEWDcXAaxsZmKg1p9YjqDotvV9X/w124NW60 z9QA== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=aQ5Q4N/tFeJRd7kL8iE6aNPDDKqWRl+nnZkLwu9w9+o=; b=nbmTUtczslZbd/AUnga0RORZungU627cv3+iMkYXhNd1LZiF4c0hqzyHSPWVfGTKXG nGmRVRHyqUo1pCgkVnuFx1z3wPkU/wT4O0wkhWbKlmCtZqU5/HHHUt4d3RxjoobGHdTY 3SPe6SgqWxjY2Z1Sf6/z8XVL34zxdzywDQuQYZCp7Gxw3W5UiuRCZckBK/PXVEe6raKW DtHhq8LffIGYWcyrc0v+lP4ba+6/GH/eeo3Qcr+8lSxIuf3vgVDT8jb3klTHletN2joN dfrmXsTGZ99aWIOXvGvU+0WhRH3UhTq9LswmixuDk72NT9fSvu0q70ywRDlsevGkkWCQ y6zQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=V6rtEqXG; 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 c126si3418834qkf.167.2017.08.17.11.06.41 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 17 Aug 2017 11:06:42 -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=V6rtEqXG; 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]:38484 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1diPBn-0005Vv-Sc for patch@linaro.org; Thu, 17 Aug 2017 14:06:39 -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) 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) 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) From: =?utf-8?q?Alex_Benn=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_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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(+) -- 2.13.0 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: 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) 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 */ /* 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 == 32 #define TCGv TCGv_i32 @@ -450,6 +452,11 @@ static inline TCGv_i64 QEMU_ARTIFICIAL MAKE_TCGV_I64(intptr_t i) return (TCGv_i64)i; } +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(TCGv_i64 t) return (intptr_t)t; } +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, intptr_t, const char *); 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); 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); } +static inline TCGv_vec tcg_global_mem_new_vec(TCGv_ptr reg, intptr_t offset, + const char *name) +{ + int idx = 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