From patchwork Thu Jul 29 11:14:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 488672 Delivered-To: patch@linaro.org Received: by 2002:a05:6638:1185:0:0:0:0 with SMTP id f5csp2069091jas; Thu, 29 Jul 2021 04:24:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJztRzuFQlZCK8LlxCTO8iBdkqUwiIOBtyhhoaBNvsKgGkVs4fMV2vd+8Qb44FB9csekhrrL X-Received: by 2002:a37:a78d:: with SMTP id q135mr4713114qke.192.1627557863773; Thu, 29 Jul 2021 04:24:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627557863; cv=none; d=google.com; s=arc-20160816; b=JsRMMl1DgERbZQEciNlf4B++fOTjrUv64RzY8/hMj1aHkKfV/MXbc/X5fYy6j5IPRA kRm1Bx7ZoOyIrgWkFHZ6jZQbM6w72aF9H+i3nsjCLmqBG6o75ir0tZkOzVGle57nxBc1 jU76eOCetCTZMr1kjvskz6PUPmYg69+tU+TqdtmKuh9OM9x0gtAk9Y4IZ47ZQ3CXT+hc qww0Oh3uceNPzqX3TOfCBQZMwBtWBvcLeIYizHZweh5LYTql7guDrEaJIHB2kgdUslFD Ifh6W9zRzlILAtMT7wKlMDwLVk8g0QT3F4aJPGz2+WOZUDkhK7BiGND56LsH40RifYbO bkDg== 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=AdQbpZh4Nsn4ZEWXMN8/5MXfv9l4tGOGQ949NSeXfXg=; b=elZKoByHWCyeRkEHAGUWtMxLnJpDAHL5vBzlbPwtKltXzexZy70xYehy6dhY992h1T tP9xz4Dz8jIeBrLvVwxAMYWVYpqYDIlhevwGBctiRwQnvyLCkR2eNJ5GwrpCPje7j9Df ObdKqZRpSCE5a4zk04x+GPvrPFzJ4GJLvF/zTyT+Dd2TDQaPV7w1W98cjOZw/s1Hlw5H LBWNaaXzFKml9kSB5/Rapbqe3xVgnidRcTJV8z1Vt4Y1wD9SC/YO/v4z3Iubai+C/5pq Lq9U3nbak2NYz7LBuiG4/xrQDEUYH56Glu8tHQyCxleAWoKVxY/OMClnSR09TYgwwoBM Nr+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="leis0gb/"; 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 t6si2016978qkp.271.2021.07.29.04.24.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 29 Jul 2021 04:24:23 -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="leis0gb/"; 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]:45580 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m949H-0001vg-3P for patch@linaro.org; Thu, 29 Jul 2021 07:24:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39704) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m940d-0000D1-Mk for qemu-devel@nongnu.org; Thu, 29 Jul 2021 07:15:27 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:39881) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1m940W-0000y3-95 for qemu-devel@nongnu.org; Thu, 29 Jul 2021 07:15:27 -0400 Received: by mail-wr1-x42f.google.com with SMTP id b11so1107200wrx.6 for ; Thu, 29 Jul 2021 04:15:19 -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=AdQbpZh4Nsn4ZEWXMN8/5MXfv9l4tGOGQ949NSeXfXg=; b=leis0gb/ZagYqBhoF55uD2lsIcnPdessnkG1zNgwKzmkH+5NePet1CdV0o8JWIkN/+ m2B7xWgpsjV2DurZkQCsNA7Bp0nqWhS4JS01xZXTqZChLxGA4xwGhijOD75x/fGigxkA yOqw8BmqA8hT/rotU7L2IBbtP4ognFNezVRT+UUOeW5Zpql2tuIiavjryyckkvCseSN2 Xkv8l6yx1IyE+fNWN652Bdpf6dwpuJ8aAd1NT8hZWNS5JVvdkANZw0oWdUUD71yAHXg1 hjtAtg4Uj3ivDoOrMcNabeI0XfLjZYlF2+Tnbx40yQs0ZE26xNIudcCFiTPN3DsmXayQ eQdA== 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=AdQbpZh4Nsn4ZEWXMN8/5MXfv9l4tGOGQ949NSeXfXg=; b=CzGgwHKwzXXB1XbYdcAb58Ad+apcS1/3fmqnl881Ifytp4aW22PMVyABVU8ndqCkvy osax3jWZk8UMp7qJ3BIN92WuSqTkm7JwVKC+Yk2zfuzMv/SmRW6Fm3t4xyiApuNuwVnV LH9bO2ONmzwMpEjcHD6RpINFM3iwV8/FKPu5+K3CDcYI47y8I55PLESrHvWFXNOhj4Vm dvdqQsMcOABHtVuCPW5imv9/dmReI3DoxfvERAt6v9iCT8H0c36K9ACG/GWQ4MxxP+uf FkzTFm20/2fVUt2nmyu3xxJQS5YodUe1OUvbnp21imM54G16NbnhaHwH8wINKG/ZOL1k HXxA== X-Gm-Message-State: AOAM532lzXngNHBjAf/sDrmbqSIXjP/4KkNO/Umx1cabbI7b4hZ4g3J+ iPb8Ynow8rbgMf5qf9cDE42jqA== X-Received: by 2002:a5d:61c8:: with SMTP id q8mr4188401wrv.151.1627557318849; Thu, 29 Jul 2021 04:15:18 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id j140sm3037829wmj.37.2021.07.29.04.15.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jul 2021 04:15:18 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH for-6.2 05/53] target/arm: Fix mask handling for MVE narrowing operations Date: Thu, 29 Jul 2021 12:14:24 +0100 Message-Id: <20210729111512.16541-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210729111512.16541-1-peter.maydell@linaro.org> References: <20210729111512.16541-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42f.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=unavailable 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" In the MVE helpers for the narrowing operations (DO_VSHRN and DO_VSHRN_SAT) we were using the wrong bits of the predicate mask for the 'top' versions of the insn. This is because the loop works over the double-sized input elements and shifts the predicate mask by that many bits each time, but when we write out the half-sized output we must look at the mask bits for whichever half of the element we are writing to. Correct this by shifting the whole mask right by ESIZE bits for the 'top' insns. This allows us also to simplify the saturation bit checking (where we had noticed that we needed to look at a different mask bit for the 'top' insn.) Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/mve_helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- 2.20.1 diff --git a/target/arm/mve_helper.c b/target/arm/mve_helper.c index 82151b06200..847ef5156ad 100644 --- a/target/arm/mve_helper.c +++ b/target/arm/mve_helper.c @@ -1358,6 +1358,7 @@ DO_VSHLL_ALL(vshllt, true) TYPE *d = vd; \ uint16_t mask = mve_element_mask(env); \ unsigned le; \ + mask >>= ESIZE * TOP; \ for (le = 0; le < 16 / LESIZE; le++, mask >>= LESIZE) { \ TYPE r = FN(m[H##LESIZE(le)], shift); \ mergemask(&d[H##ESIZE(le * 2 + TOP)], r, mask); \ @@ -1419,11 +1420,12 @@ static inline int32_t do_sat_bhs(int64_t val, int64_t min, int64_t max, uint16_t mask = mve_element_mask(env); \ bool qc = false; \ unsigned le; \ + mask >>= ESIZE * TOP; \ for (le = 0; le < 16 / LESIZE; le++, mask >>= LESIZE) { \ bool sat = false; \ TYPE r = FN(m[H##LESIZE(le)], shift, &sat); \ mergemask(&d[H##ESIZE(le * 2 + TOP)], r, mask); \ - qc |= sat && (mask & 1 << (TOP * ESIZE)); \ + qc |= sat & mask & 1; \ } \ if (qc) { \ env->vfp.qc[0] = qc; \