From patchwork Mon Jun 21 16:28:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 464579 Delivered-To: patch@linaro.org Received: by 2002:a17:906:71d0:0:0:0:0 with SMTP id i16csp4386624ejk; Mon, 21 Jun 2021 09:59:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyv0Xn8vIsrnGBUiMmzbsu/lPrK5oxciNgy2JuxSaSM1ycnDA3/dFUwmj7vsw0cG81CvD2P X-Received: by 2002:a05:6e02:1848:: with SMTP id b8mr4901019ilv.107.1624294779497; Mon, 21 Jun 2021 09:59:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624294779; cv=none; d=google.com; s=arc-20160816; b=l5h4ghhF3ssl/yo4zLWXfEdZ3LVua5CZcAhW/99NYBAXbpclX7Cx//tfUtc9Ib/eYL 5l9tGGggouyc7DuqSiascaw6gW2I0zT+4+MR/6hj9qwlOaJ56Nsb79OEgmJgqE2D1X0i 0oF14LJQC7vGp2ZPGjlihuTvTGPyC6VZd7UAN4g68RflUwLaFs//DVF0SkHmwPIOtcxU /gva1WHHtbgmE9P/H96wlk05AGm+8YfK2I7etDSsoKBTyFw0ZzYmgym/gjG3u6Lpp60J 3RAdzGjVV16pku+/yHngZC1ZsDrwGrOBd2Nm7XkAwGFOV/WxUttvMbM/CDLdydtREU9M etMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=HEeL4q9qD9Ck06kULZl6OktJLffeX96nlbK1ptY/wmI=; b=WVokKcLz6bU4gVJBH9NnVOoPFGvPwXkDMkIYEG4MD7P2XsDLXUjF9KFK5ugNpDcfa+ jes6obWvZIC59jNA3yRhdeXX3g9/aLmIGl05FNO0U1wm4v94oapc3keuYWBE+yuSzKqo PfkRWXQcQE3CTBRdwkKxvF3FrpasQR5Q+o6+OyA+i4uK8m7DP72IlrmirJ7koYQkFemL l/D22QnSywKMGE1njnBFh1F/g0GBg2UO2V7951cssHhK5MYjJ9P2Iaqmeu1MBGUdwuQn ApHLwx9BGrYFhnNw+jIEj6ZCNZGxh6ZwPoy+Onb6GIRsSEnPmxemB7TII08n16MneJJw PhXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="RcAUC/c5"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d25si21414353iop.15.2021.06.21.09.59.39 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 21 Jun 2021 09:59:39 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="RcAUC/c5"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:39352 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvNGs-000078-T4 for patch@linaro.org; Mon, 21 Jun 2021 12:59:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33482) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvMnQ-0007SC-NG for qemu-devel@nongnu.org; Mon, 21 Jun 2021 12:29:12 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:46643) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvMnK-0007el-Va for qemu-devel@nongnu.org; Mon, 21 Jun 2021 12:29:12 -0400 Received: by mail-wm1-x336.google.com with SMTP id v20-20020a05600c2154b02901dcefb16af0so396261wml.5 for ; Mon, 21 Jun 2021 09:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=HEeL4q9qD9Ck06kULZl6OktJLffeX96nlbK1ptY/wmI=; b=RcAUC/c5Y92N1jzF/c0jhEheCPJPdr3OSFwEUjjmtRIRH0FvbOWnRstnf4oV3N1ppq u2VfDCHmBseCDn19TZ2jDbci6EU50qaKNOeTKdFIdrg0Bsw30fdGp/PyKu1i0GHnny/A 7BuGIVfZEQ9q095ImLAmlnH0JH5cGQt5ee1OmCEJ5VrGJWwQ/ZcVzLMPTz4kzv768Oxj QyjdaDWY2YMj12+3wN6HCTwnwbJB6AAe0QuVwl2YSYyvT9CjAcpTdjxeM6h50arFJ9+P NBn3VmS/NvWGmvv6UiMX7HHF1eKQrAWvfYHThqC1N58NRjY4JDvUz432/ktUr4PW+F0o d7DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HEeL4q9qD9Ck06kULZl6OktJLffeX96nlbK1ptY/wmI=; b=HYttDmjcViN1xAF+EE1sbXRas8L4PGZ9PFuC9FttptstZ/bdKrql+iOhhhlvrI470p fGoNjuTth9Fl2BR0bEeVlQUvi+uZ9o8bjnpcBUJFjQHqQk2ahcJN2XrHUXCHrKgDHSWm DTDrmZDH1EU3ieZNYMBg5VHJE2MxrBVn2ibQ/nPi6BZxYSXb6trYNCvqEsqXlXAazcoA 84DAWidE91wdxfI879vqW3aGGKEy0BSV0UJ9drtb0zvmzJIHBFAn4mcbRm6UU5u1xNuc gTvjJ5qnsNL4MEqdAQuHFAYlsQBqarBkmOfyr8obY+mmKgKNfKsWDfrBckCxm54+csOz UwcA== X-Gm-Message-State: AOAM532qlo5fUgWGQr/zlzNdXShJ+sBO124ZEahpNe+45cVl+Z0JPaq6 5V0iqYXGomR8VUkdYFGWl4nxjWf3dAKovd9D X-Received: by 2002:a05:600c:3791:: with SMTP id o17mr14711553wmr.187.1624292945424; Mon, 21 Jun 2021 09:29:05 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n65sm11615496wme.21.2021.06.21.09.29.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 09:29:04 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 31/57] target/arm: Implement MVE VMLSLDAV Date: Mon, 21 Jun 2021 17:28:07 +0100 Message-Id: <20210621162833.32535-32-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210621162833.32535-1-peter.maydell@linaro.org> References: <20210621162833.32535-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Implement the MVE insn VMLSLDAV, which multiplies source elements, alternately adding and subtracting them, and accumulates into a 64-bit result in a pair of general purpose registers. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20210617121628.20116-21-peter.maydell@linaro.org --- target/arm/helper-mve.h | 5 +++++ target/arm/mve.decode | 2 ++ target/arm/mve_helper.c | 5 +++++ target/arm/translate-mve.c | 11 +++++++++++ 4 files changed, 23 insertions(+) -- 2.20.1 diff --git a/target/arm/helper-mve.h b/target/arm/helper-mve.h index 0138e28278a..7356385d60c 100644 --- a/target/arm/helper-mve.h +++ b/target/arm/helper-mve.h @@ -152,3 +152,8 @@ DEF_HELPER_FLAGS_4(mve_vmlaldavxsw, TCG_CALL_NO_WG, i64, env, ptr, ptr, i64) DEF_HELPER_FLAGS_4(mve_vmlaldavuh, TCG_CALL_NO_WG, i64, env, ptr, ptr, i64) DEF_HELPER_FLAGS_4(mve_vmlaldavuw, TCG_CALL_NO_WG, i64, env, ptr, ptr, i64) + +DEF_HELPER_FLAGS_4(mve_vmlsldavsh, TCG_CALL_NO_WG, i64, env, ptr, ptr, i64) +DEF_HELPER_FLAGS_4(mve_vmlsldavsw, TCG_CALL_NO_WG, i64, env, ptr, ptr, i64) +DEF_HELPER_FLAGS_4(mve_vmlsldavxsh, TCG_CALL_NO_WG, i64, env, ptr, ptr, i64) +DEF_HELPER_FLAGS_4(mve_vmlsldavxsw, TCG_CALL_NO_WG, i64, env, ptr, ptr, i64) diff --git a/target/arm/mve.decode b/target/arm/mve.decode index bde54d05bb9..1be2d6b270f 100644 --- a/target/arm/mve.decode +++ b/target/arm/mve.decode @@ -145,3 +145,5 @@ VDUP 1110 1110 1 0 10 ... 0 .... 1011 . 0 0 1 0000 @vdup size=2 qn=%qn rdahi=%rdahi rdalo=%rdalo size=%size_16 &vmlaldav VMLALDAV_S 1110 1110 1 ... ... . ... x:1 1110 . 0 a:1 0 ... 0 @vmlaldav VMLALDAV_U 1111 1110 1 ... ... . ... x:1 1110 . 0 a:1 0 ... 0 @vmlaldav + +VMLSLDAV 1110 1110 1 ... ... . ... x:1 1110 . 0 a:1 0 ... 1 @vmlaldav diff --git a/target/arm/mve_helper.c b/target/arm/mve_helper.c index 4d586c4d26f..b496e1f4d3c 100644 --- a/target/arm/mve_helper.c +++ b/target/arm/mve_helper.c @@ -522,3 +522,8 @@ DO_LDAV(vmlaldavxsw, 4, int32_t, true, +=, +=) DO_LDAV(vmlaldavuh, 2, uint16_t, false, +=, +=) DO_LDAV(vmlaldavuw, 4, uint32_t, false, +=, +=) + +DO_LDAV(vmlsldavsh, 2, int16_t, false, +=, -=) +DO_LDAV(vmlsldavxsh, 2, int16_t, true, +=, -=) +DO_LDAV(vmlsldavsw, 4, int32_t, false, +=, -=) +DO_LDAV(vmlsldavxsw, 4, int32_t, true, +=, -=) diff --git a/target/arm/translate-mve.c b/target/arm/translate-mve.c index f8ceeac5a4f..77b461c2186 100644 --- a/target/arm/translate-mve.c +++ b/target/arm/translate-mve.c @@ -461,3 +461,14 @@ static bool trans_VMLALDAV_U(DisasContext *s, arg_vmlaldav *a) }; return do_long_dual_acc(s, a, fns[a->size][a->x]); } + +static bool trans_VMLSLDAV(DisasContext *s, arg_vmlaldav *a) +{ + static MVEGenDualAccOpFn * const fns[4][2] = { + { NULL, NULL }, + { gen_helper_mve_vmlsldavsh, gen_helper_mve_vmlsldavxsh }, + { gen_helper_mve_vmlsldavsw, gen_helper_mve_vmlsldavxsw }, + { NULL, NULL }, + }; + return do_long_dual_acc(s, a, fns[a->size][a->x]); +}