From patchwork Mon Dec 18 17:30:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 122279 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp3139169qgn; Mon, 18 Dec 2017 09:58:05 -0800 (PST) X-Google-Smtp-Source: ACJfBosZz02FUEqGezFzzBTxJq68A47NyIBGa4w4wQhQBDlPDKHNqMF3CEqoWuM0WQDTF77wKm/i X-Received: by 10.37.171.48 with SMTP id u45mr506600ybi.108.1513619885431; Mon, 18 Dec 2017 09:58:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1513619885; cv=none; d=google.com; s=arc-20160816; b=u+8PzhuQujIiQiFyAv4LTMMNa/W/ERQ/amcx477aSw/qugDsPrVDEEJama/l80Qr7y 6/I2z2x291UaQ/RFepUAPzO3kVasNqxxwyDLP7eAznHg3B+3z8Y0Y43NvDcjHQPNaNSI 2OV1jUhaBdM7jHnzXmdrYvNq4lZrLNKcnZfafmV2u3KhxfCthCMwrrVN1TSOCLpfFJlR pjRJFysnXAnjwwkzYUjZikDR4MdcPcdhMeT35SYccxJv5aXCFyc51PWXCCqFO3vDkHe/ R5N8OIOQhbehbNEs4jmIYsbug0H4YZuWmPQTEJvb7LVNAbCK21sD//JDPw6nfw122OHR 394g== 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=w97zHg5wUthGNuq+jeq9m01tyUZWy6RWue7I9jUXJeY=; b=OrL16BoHI7ZUoSb4Lv0a9sEEIeszvrMZSmeB23ixxh2YmusW0qo2D11ghbI4PQ9tvm kPdBxRYH0/ucsNCar8+blVqJK/y72wU2uHOMwj83+WPkl+MGCW7rve0/r9sJxyWe6pfi 9aRv0g+eQ1uaBY5fVgCIybqiovxPZ177JotwMchc2QsDSo6m8LxreD2dpzlDAm43SIaj Oj5wbu/CwQ4HVCoMfV/Y6TKIdmdp6KXwu3wATiC/NZfOUW2eyM1wFzDJMYdZeKC5jBHd VSEzJXcZJG7wTx3bXWIQYc7IvfMGVwaYaY30hq3agT7FrufLTTwswCXA+vZ4mTv/VUWH Jumw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=brS4wGpI; 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 u123si2612904ybf.509.2017.12.18.09.58.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 18 Dec 2017 09:58:05 -0800 (PST) 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=brS4wGpI; 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]:59730 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQzfx-0002FY-07 for patch@linaro.org; Mon, 18 Dec 2017 12:58:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44330) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQzFL-0002da-61 for qemu-devel@nongnu.org; Mon, 18 Dec 2017 12:30:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQzFJ-0004h5-7n for qemu-devel@nongnu.org; Mon, 18 Dec 2017 12:30:35 -0500 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:36814) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eQzFI-0004g3-Ds for qemu-devel@nongnu.org; Mon, 18 Dec 2017 12:30:32 -0500 Received: by mail-pf0-x241.google.com with SMTP id p84so9958320pfd.3 for ; Mon, 18 Dec 2017 09:30:32 -0800 (PST) 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=w97zHg5wUthGNuq+jeq9m01tyUZWy6RWue7I9jUXJeY=; b=brS4wGpInY67iIfHqFY4TgtdQY02Ugw6ZeQdRm8wRIl3Cxwf3SP5h7RuZvN38MJtEF DD47op3Sqyg07R7uN1ANE9ZJVYJgfI/YJsPw2E16VtzzMLuKmaPpK+r+ry5IqeGhxaDe jCpdq1M9SxeK6CiTFVOJbx6lUznJzPbQxTamg= 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=w97zHg5wUthGNuq+jeq9m01tyUZWy6RWue7I9jUXJeY=; b=s3cuT4dPOmmi+mCzDjdIDGX/wbeq6EwZvZvQ9aI31hDkJJYA5Ml/GErqxc9eQZ20ib I4MOX1gbWgFabCmUZtcM1BXZ3ozDXqBAKigaztGND4ffi4MQuJVEhK+3Mqz8sscZozCb 053EDlva3soupf/Rl8MXvE2ceBjVwlGYWQ+XmcZmcTEpBGXVxudA9b4WtOBP+csCK4fM zIgbpzVrqokdjjvgxTdM7uLG5R4KNMKnGR9q6GmfYKBSUDbKQTcK8gZpYCR98FtTlxjg l/B7hZz5YSTjIhJ4chuAQVbY8srk0fJhGJgA2JsSDRJtyaVV+3GP0wrz+0evO4FP6dGT yE1Q== X-Gm-Message-State: AKGB3mI0XwzkQTt8osg/Hmonv6mYDqjpgJfChUNJ268asW/A3Kq7JKo/ ZzdYGj4repODAO7IiS0Xa8UYzJMPVy8= X-Received: by 10.101.85.3 with SMTP id f3mr384392pgr.45.1513618231159; Mon, 18 Dec 2017 09:30:31 -0800 (PST) Received: from cloudburst.twiddle.net (174-21-7-63.tukw.qwest.net. [174.21.7.63]) by smtp.gmail.com with ESMTPSA id h69sm26553411pfe.107.2017.12.18.09.30.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Dec 2017 09:30:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Mon, 18 Dec 2017 09:30:17 -0800 Message-Id: <20171218173022.18418-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171218173022.18418-1-richard.henderson@linaro.org> References: <20171218173022.18418-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::241 Subject: [Qemu-devel] [PATCH 4/9] target/arm: Use pointers in neon tbl helper 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@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Rather than passing a regno to the helper, pass pointers to the vector register directly. This eliminates the need to pass in the environment pointer and reduces the number of places that directly access env->vfp.regs[]. Signed-off-by: Richard Henderson --- target/arm/helper.h | 2 +- target/arm/op_helper.c | 17 +++++++---------- target/arm/translate.c | 8 ++++---- 3 files changed, 12 insertions(+), 15 deletions(-) -- 2.14.3 Reviewed-by: Peter Maydell diff --git a/target/arm/helper.h b/target/arm/helper.h index d39ca11cbd..206e39a207 100644 --- a/target/arm/helper.h +++ b/target/arm/helper.h @@ -201,7 +201,7 @@ DEF_HELPER_FLAGS_2(rsqrte_f32, TCG_CALL_NO_RWG, f32, f32, ptr) DEF_HELPER_FLAGS_2(rsqrte_f64, TCG_CALL_NO_RWG, f64, f64, ptr) DEF_HELPER_2(recpe_u32, i32, i32, ptr) DEF_HELPER_FLAGS_2(rsqrte_u32, TCG_CALL_NO_RWG, i32, i32, ptr) -DEF_HELPER_5(neon_tbl, i32, env, i32, i32, i32, i32) +DEF_HELPER_FLAGS_4(neon_tbl, TCG_CALL_NO_RWG, i32, i32, i32, ptr, i32) DEF_HELPER_3(shl_cc, i32, env, i32, i32) DEF_HELPER_3(shr_cc, i32, env, i32, i32) diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c index c2bb4f3a43..df3aab170b 100644 --- a/target/arm/op_helper.c +++ b/target/arm/op_helper.c @@ -54,20 +54,17 @@ static int exception_target_el(CPUARMState *env) return target_el; } -uint32_t HELPER(neon_tbl)(CPUARMState *env, uint32_t ireg, uint32_t def, - uint32_t rn, uint32_t maxindex) +uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def, void *vn, + uint32_t maxindex) { - uint32_t val; - uint32_t tmp; - int index; - int shift; - uint64_t *table; - table = (uint64_t *)&env->vfp.regs[rn]; + uint32_t val, shift; + uint64_t *table = vn; + val = 0; for (shift = 0; shift < 32; shift += 8) { - index = (ireg >> shift) & 0xff; + uint32_t index = (ireg >> shift) & 0xff; if (index < maxindex) { - tmp = (table[index >> 3] >> ((index & 7) << 3)) & 0xff; + uint32_t tmp = (table[index >> 3] >> ((index & 7) << 3)) & 0xff; val |= tmp << shift; } else { val |= def & (0xff << shift); diff --git a/target/arm/translate.c b/target/arm/translate.c index 68e928640f..55afd29b21 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -7623,9 +7623,9 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) tcg_gen_movi_i32(tmp, 0); } tmp2 = neon_load_reg(rm, 0); - tmp4 = tcg_const_i32(rn); + ptr1 = vfp_reg_ptr(true, rn); tmp5 = tcg_const_i32(n); - gen_helper_neon_tbl(tmp2, cpu_env, tmp2, tmp, tmp4, tmp5); + gen_helper_neon_tbl(tmp2, tmp2, tmp, ptr1, tmp5); tcg_temp_free_i32(tmp); if (insn & (1 << 6)) { tmp = neon_load_reg(rd, 1); @@ -7634,9 +7634,9 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) tcg_gen_movi_i32(tmp, 0); } tmp3 = neon_load_reg(rm, 1); - gen_helper_neon_tbl(tmp3, cpu_env, tmp3, tmp, tmp4, tmp5); + gen_helper_neon_tbl(tmp3, tmp3, tmp, ptr1, tmp5); tcg_temp_free_i32(tmp5); - tcg_temp_free_i32(tmp4); + tcg_temp_free_ptr(ptr1); neon_store_reg(rd, 0, tmp2); neon_store_reg(rd, 1, tmp3); tcg_temp_free_i32(tmp);