From nobody Wed Nov 12 13:12:19 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1571415389; cv=none; d=zoho.com; s=zohoarc; b=joVAUdWK0pNVFmTLjpepwvHN1ymdlOXFu+w2kLPyvHTMH0tZR8iZ7XZMg5snCJiuK56GZ+vryUKXi+ee7R1SV65T0xbOY/Iqphh/W+dRsBg9Cyt0J8ij3VPiYF1ahP9iFM+UQ4QM5MbojZvhxBnr2LZyeosXgSd5AvkIFqYEots= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571415389; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=d0e5wdfUC2ldhQ+JTwrrjBUY4/lI0kGoQksUjcTNspk=; b=J9JUAi23n8Sm5bsBqDh5JLa5pinsQXQZGy554/FbmRCc3zOjiDrK2GT7m2nVngfK0CIs1OFXQjD5CZGcW7BrF2F2ZE3/Uk+lGV98CHYHwwxfYaO6+vmRZnxhMxpqOgWPa8MyFcSRAER0stAaUUWKE1pmSrlR8l6b3JZxO6RziHU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571415389943134.48937020116637; Fri, 18 Oct 2019 09:16:29 -0700 (PDT) Received: from localhost ([::1]:42802 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUvU-0004aE-JD for importer@patchew.org; Fri, 18 Oct 2019 12:16:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48924) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUq8-0007N5-Vw for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:10:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iLUq7-0007QY-Kx for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:10:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56346) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iLUq7-0007P7-Fb; Fri, 18 Oct 2019 12:10:55 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B669419D04A; Fri, 18 Oct 2019 16:10:53 +0000 (UTC) Received: from t460s.redhat.com (unknown [10.36.118.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 381791C92A; Fri, 18 Oct 2019 16:10:52 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v1 1/6] s390x/tcg: Fix VECTOR MULTIPLY LOGICAL ODD Date: Fri, 18 Oct 2019 18:10:39 +0200 Message-Id: <20191018161044.6983-2-david@redhat.com> In-Reply-To: <20191018161044.6983-1-david@redhat.com> References: <20191018161044.6983-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 18 Oct 2019 16:10:53 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 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: , Cc: Thomas Huth , David Hildenbrand , Ivan Warren , Cornelia Huck , Richard Henderson , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" We have to read from odd offsets. Fixes: 2bf3ee38f1f8 ("s390x/tcg: Implement VECTOR MULTIPLY *") Signed-off-by: David Hildenbrand Reviewed-by: Richard Henderson --- target/s390x/vec_int_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/vec_int_helper.c b/target/s390x/vec_int_helper.c index 68eaae407b..03ae8631d9 100644 --- a/target/s390x/vec_int_helper.c +++ b/target/s390x/vec_int_helper.c @@ -488,7 +488,7 @@ void HELPER(gvec_vmlo##BITS)(void *v1, const void *v2, = const void *v3, \ { = \ int i, j; = \ = \ - for (i =3D 0, j =3D 0; i < (128 / TBITS); i++, j +=3D 2) { = \ + for (i =3D 0, j =3D 1; i < (128 / TBITS); i++, j +=3D 2) { = \ const uint##TBITS##_t a =3D s390_vec_read_element##BITS(v2, j); = \ const uint##TBITS##_t b =3D s390_vec_read_element##BITS(v3, j); = \ = \ --=20 2.21.0 From nobody Wed Nov 12 13:12:19 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1571415387; cv=none; d=zoho.com; s=zohoarc; b=M3Yqnh3TcY5L1iTsUyGuih8uxI6XOegOTOJbAtW5HQly6faBfd5Lw10LzmZGnos+QJzKoo6dnomgRF1iBojtbVRipkkNIpMVdGEk/Rv8nV5zOzOk7UDhKVxLWUrM6SXcOJuXYb5o58hfJJL6YKcnPfuBiT6gdN6aYt2Ckdec0Bc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571415387; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AVNC9WFZe0qg+2aoe5EX/8LGsGe+/YBhttu/ndIcEmE=; b=ADKIuXaah6tleTmLn4+HF/xirvgCqhvQpo8M/zxDA1+dHDjOtnBkXvVPgepmap1/LJPCS/tA6o1Qh5jjU6mpHxUqQ1uE1CYYUGZ5ljQJGyxmAPXUFVmYXOD4OTQWlrXso0qwkNkeKh0n9s2A/7a6HpLBr3hZbyjEqB87gdflA/M= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571415387543679.5109524096418; Fri, 18 Oct 2019 09:16:27 -0700 (PDT) Received: from localhost ([::1]:42798 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUvS-0004We-3G for importer@patchew.org; Fri, 18 Oct 2019 12:16:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48939) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUqA-0007N8-0G for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:10:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iLUq8-0007RY-VS for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:10:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52394) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iLUq8-0007Qf-Ar; Fri, 18 Oct 2019 12:10:56 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8F1E210CC1E6; Fri, 18 Oct 2019 16:10:55 +0000 (UTC) Received: from t460s.redhat.com (unknown [10.36.118.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0DA493DB4; Fri, 18 Oct 2019 16:10:53 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v1 2/6] s390x/tcg: Fix VECTOR MULTIPLY AND ADD * Date: Fri, 18 Oct 2019 18:10:40 +0200 Message-Id: <20191018161044.6983-3-david@redhat.com> In-Reply-To: <20191018161044.6983-1-david@redhat.com> References: <20191018161044.6983-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.65]); Fri, 18 Oct 2019 16:10:55 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 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: , Cc: Thomas Huth , David Hildenbrand , Ivan Warren , Cornelia Huck , Richard Henderson , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" We missed that we always read a "double-wide even-odd element pair of the fourth operand". Fix it in all four variants. Fixes: 1b430aec4157 ("s390x/tcg: Implement VECTOR MULTIPLY AND ADD *") Signed-off-by: David Hildenbrand Reviewed-by: Richard Henderson --- target/s390x/vec_int_helper.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/s390x/vec_int_helper.c b/target/s390x/vec_int_helper.c index 03ae8631d9..1b3aaecbdb 100644 --- a/target/s390x/vec_int_helper.c +++ b/target/s390x/vec_int_helper.c @@ -336,7 +336,7 @@ void HELPER(gvec_vmae##BITS)(void *v1, const void *v2, = const void *v3, \ for (i =3D 0, j =3D 0; i < (128 / TBITS); i++, j +=3D 2) { = \ int##TBITS##_t a =3D (int##BITS##_t)s390_vec_read_element##BITS(v2= , j); \ int##TBITS##_t b =3D (int##BITS##_t)s390_vec_read_element##BITS(v3= , j); \ - int##TBITS##_t c =3D (int##BITS##_t)s390_vec_read_element##BITS(v4= , j); \ + int##TBITS##_t c =3D s390_vec_read_element##TBITS(v4, i); = \ = \ s390_vec_write_element##TBITS(v1, i, a * b + c); = \ } = \ @@ -354,7 +354,7 @@ void HELPER(gvec_vmale##BITS)(void *v1, const void *v2,= const void *v3, \ for (i =3D 0, j =3D 0; i < (128 / TBITS); i++, j +=3D 2) { = \ uint##TBITS##_t a =3D s390_vec_read_element##BITS(v2, j); = \ uint##TBITS##_t b =3D s390_vec_read_element##BITS(v3, j); = \ - uint##TBITS##_t c =3D s390_vec_read_element##BITS(v4, j); = \ + uint##TBITS##_t c =3D s390_vec_read_element##TBITS(v4, i); = \ = \ s390_vec_write_element##TBITS(v1, i, a * b + c); = \ } = \ @@ -372,7 +372,7 @@ void HELPER(gvec_vmao##BITS)(void *v1, const void *v2, = const void *v3, \ for (i =3D 0, j =3D 1; i < (128 / TBITS); i++, j +=3D 2) { = \ int##TBITS##_t a =3D (int##BITS##_t)s390_vec_read_element##BITS(v2= , j); \ int##TBITS##_t b =3D (int##BITS##_t)s390_vec_read_element##BITS(v3= , j); \ - int##TBITS##_t c =3D (int##BITS##_t)s390_vec_read_element##BITS(v4= , j); \ + int##TBITS##_t c =3D s390_vec_read_element##TBITS(v4, i); = \ = \ s390_vec_write_element##TBITS(v1, i, a * b + c); = \ } = \ @@ -390,7 +390,7 @@ void HELPER(gvec_vmalo##BITS)(void *v1, const void *v2,= const void *v3, \ for (i =3D 0, j =3D 1; i < (128 / TBITS); i++, j +=3D 2) { = \ uint##TBITS##_t a =3D s390_vec_read_element##BITS(v2, j); = \ uint##TBITS##_t b =3D s390_vec_read_element##BITS(v3, j); = \ - uint##TBITS##_t c =3D s390_vec_read_element##BITS(v4, j); = \ + uint##TBITS##_t c =3D s390_vec_read_element##TBITS(v4, i); = \ = \ s390_vec_write_element##TBITS(v1, i, a * b + c); = \ } = \ --=20 2.21.0 From nobody Wed Nov 12 13:12:19 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1571415602; cv=none; d=zoho.com; s=zohoarc; b=Tzesu7llslTiqiuGBMF6vbnIhTyX3YTxtQiAxP3Hs4qwj1MF06wuYs0K52XOLU4QN6NnOjkq2Zss7otr1yZwdedONTYCh6F8FJVSLoKWKmzYs8zaCxiC1mk1DhAGi5jaqe1OfRy4qRQkeZUJsVmnIPIRl2rIhKjLGNC6T2GHDiU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571415602; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=COJrhRknkQWmvEzNXMYR9kJVSuAp6FXTGo7oPALRfMY=; b=dcW0QC5Z51XQsdqAMO6liOd297RapoIBXwo1mUcVnuy7NGUlpQJJjCfyAl5rKpXSVZci95Q9yr6YxS9PyRqsCam5/R7iIL3GzDXU4WzCuxx6gCMgy0JaNv3SyCuaubj+TrIlzbdjtB7k3zgyvhPU7mM+p3cLR6dv9Sh+AON18z4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571415602551733.6584145766099; Fri, 18 Oct 2019 09:20:02 -0700 (PDT) Received: from localhost ([::1]:42824 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUyv-0007W5-BX for importer@patchew.org; Fri, 18 Oct 2019 12:20:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48979) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUqF-0007T4-BX for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iLUqA-0007Se-Iu for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:00 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53458) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iLUqA-0007Rx-5O; Fri, 18 Oct 2019 12:10:58 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6354418CCEE2; Fri, 18 Oct 2019 16:10:57 +0000 (UTC) Received: from t460s.redhat.com (unknown [10.36.118.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id D95383DB4; Fri, 18 Oct 2019 16:10:55 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v1 3/6] s390x/tcg: Fix VECTOR SHIFT RIGHT ARITHMETIC BY BYTE Date: Fri, 18 Oct 2019 18:10:41 +0200 Message-Id: <20191018161044.6983-4-david@redhat.com> In-Reply-To: <20191018161044.6983-1-david@redhat.com> References: <20191018161044.6983-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.63]); Fri, 18 Oct 2019 16:10:57 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 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: , Cc: Thomas Huth , David Hildenbrand , Ivan Warren , Cornelia Huck , Richard Henderson , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" We forgot to propagate the highest bit accross the high doubleword in two cases (shift >=3D64). Fixes: 5f724887e3dd ("s390x/tcg: Implement VECTOR SHIFT RIGHT ARITHMETIC") Signed-off-by: David Hildenbrand Reviewed-by: Richard Henderson --- target/s390x/vec_int_helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/s390x/vec_int_helper.c b/target/s390x/vec_int_helper.c index 1b3aaecbdb..d38405848f 100644 --- a/target/s390x/vec_int_helper.c +++ b/target/s390x/vec_int_helper.c @@ -70,15 +70,17 @@ static void s390_vec_sar(S390Vector *d, const S390Vecto= r *a, uint64_t count) d->doubleword[0] =3D a->doubleword[0]; d->doubleword[1] =3D a->doubleword[1]; } else if (count =3D=3D 64) { + tmp =3D (int64_t)a->doubleword[0] >> 63; d->doubleword[1] =3D a->doubleword[0]; - d->doubleword[0] =3D 0; + d->doubleword[0] =3D tmp; } else if (count < 64) { tmp =3D a->doubleword[1] >> count; d->doubleword[1] =3D deposit64(tmp, 64 - count, count, a->doublewo= rd[0]); d->doubleword[0] =3D (int64_t)a->doubleword[0] >> count; } else { + tmp =3D (int64_t)a->doubleword[0] >> 63; d->doubleword[1] =3D (int64_t)a->doubleword[0] >> (count - 64); - d->doubleword[0] =3D 0; + d->doubleword[0] =3D tmp; } } =20 --=20 2.21.0 From nobody Wed Nov 12 13:12:19 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1571415602; cv=none; d=zoho.com; s=zohoarc; b=Gr92zS6kXr6V2yM+ONvZSTuA0qjauSnH9e2R9kBv1/GVigfEtCpgkcLM6jyGCdix3e1WxSfhDSZK3ljsUd8Fn6kHuvxHeEa5rXuSlQswmbTQSg2oGcbW++WzgQkkXB1yYIg+Eyv8is7yoCENDsQvPNp2yGVM234L5AY/iSU1ZLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571415602; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1sAOsVMckRTSfve45Rnff/Fh+UxGK+DyyE9OiK2aiU8=; b=GM9VHIemGbttWzbaSRXkGXj/Mvxp7w1UB3/r14SMRrIL9o82ZCTTjDqclRB/l9i6dzau7LCCw6q6G8YJFxKeonKAaou2Md32Jgf1HtGg+5Sw1+s+8I1EpTTDCct/4zDUJJ0YLBEdHD9u34kw923kU9gDUuggVLWo9wOlKcNvRIg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571415602481340.2523849364866; Fri, 18 Oct 2019 09:20:02 -0700 (PDT) Received: from localhost ([::1]:42822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUyu-0007Ug-4R for importer@patchew.org; Fri, 18 Oct 2019 12:20:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49001) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUqJ-0007WN-9s for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iLUqE-0007UZ-CA for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55636) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iLUqD-0007Su-AB; Fri, 18 Oct 2019 12:11:02 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 37FEEC0495A1; Fri, 18 Oct 2019 16:10:59 +0000 (UTC) Received: from t460s.redhat.com (unknown [10.36.118.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id AF6CE3CC8; Fri, 18 Oct 2019 16:10:57 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v1 4/6] s390x/tcg: Fix VECTOR SUBTRACT COMPUTE BORROW INDICATION Date: Fri, 18 Oct 2019 18:10:42 +0200 Message-Id: <20191018161044.6983-5-david@redhat.com> In-Reply-To: <20191018161044.6983-1-david@redhat.com> References: <20191018161044.6983-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Fri, 18 Oct 2019 16:10:59 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 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: , Cc: Thomas Huth , David Hildenbrand , Ivan Warren , Cornelia Huck , Richard Henderson , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Looks like my idea of what a "borrow" is was wrong. We are dealing with unsigned numbers. A subtraction is simply an addition with the bitwise complement. If we get a carry during the addition, that's the borrow. "The operands are treated as unsigned binary integers." This is nice, as we can reuse the VECTOR ADD COMPUTE CARRY functions and avoid helpers, all we have to do is compute the bitwise complement. Fixes: 1ee2d7ba72f6 ("s390x/tcg: Implement VECTOR SUBTRACT COMPUTE BORROW I= NDICATION") Signed-off-by: David Hildenbrand --- target/s390x/helper.h | 2 -- target/s390x/translate_vx.inc.c | 45 ++++++++++++++++++++++++--------- target/s390x/vec_int_helper.c | 16 ------------ 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 56e8149866..ca1e08100a 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -207,8 +207,6 @@ DEF_HELPER_FLAGS_4(gvec_verim16, TCG_CALL_NO_RWG, void,= ptr, cptr, cptr, i32) DEF_HELPER_FLAGS_4(gvec_vsl, TCG_CALL_NO_RWG, void, ptr, cptr, i64, i32) DEF_HELPER_FLAGS_4(gvec_vsra, TCG_CALL_NO_RWG, void, ptr, cptr, i64, i32) DEF_HELPER_FLAGS_4(gvec_vsrl, TCG_CALL_NO_RWG, void, ptr, cptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_vscbi8, TCG_CALL_NO_RWG, void, ptr, cptr, cptr, i3= 2) -DEF_HELPER_FLAGS_4(gvec_vscbi16, TCG_CALL_NO_RWG, void, ptr, cptr, cptr, i= 32) DEF_HELPER_4(gvec_vtm, void, ptr, cptr, env, i32) =20 /* =3D=3D=3D Vector String Instructions =3D=3D=3D */ diff --git a/target/s390x/translate_vx.inc.c b/target/s390x/translate_vx.in= c.c index 5ce7bfb0af..40bcc1604e 100644 --- a/target/s390x/translate_vx.inc.c +++ b/target/s390x/translate_vx.inc.c @@ -2130,14 +2130,40 @@ static DisasJumpType op_vs(DisasContext *s, DisasOp= s *o) return DISAS_NEXT; } =20 +static void gen_scbi8_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b) +{ + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_not_i64(t, b); + gen_acc(d, a, t, ES_8); + tcg_temp_free_i64(t); +} + +static void gen_scbi16_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b) +{ + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_not_i64(t, b); + gen_acc(d, a, t, ES_16); + tcg_temp_free_i64(t); +} + static void gen_scbi_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b) { - tcg_gen_setcond_i32(TCG_COND_LTU, d, a, b); + TCGv_i32 t =3D tcg_temp_new_i32(); + + tcg_gen_not_i32(t, b); + gen_acc_i32(d, a, t); + tcg_temp_free_i32(t); } =20 static void gen_scbi_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b) { - tcg_gen_setcond_i64(TCG_COND_LTU, d, a, b); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_not_i64(t, b); + gen_acc_i64(d, a, t); + tcg_temp_free_i64(t); } =20 static void gen_scbi2_i64(TCGv_i64 dl, TCGv_i64 dh, TCGv_i64 al, @@ -2145,26 +2171,21 @@ static void gen_scbi2_i64(TCGv_i64 dl, TCGv_i64 dh,= TCGv_i64 al, { TCGv_i64 th =3D tcg_temp_new_i64(); TCGv_i64 tl =3D tcg_temp_new_i64(); - TCGv_i64 zero =3D tcg_const_i64(0); =20 - tcg_gen_sub2_i64(tl, th, al, zero, bl, zero); - tcg_gen_andi_i64(th, th, 1); - tcg_gen_sub2_i64(tl, th, ah, zero, th, zero); - tcg_gen_sub2_i64(tl, th, tl, th, bh, zero); - tcg_gen_andi_i64(dl, th, 1); - tcg_gen_mov_i64(dh, zero); + tcg_gen_not_i64(tl, bl); + tcg_gen_not_i64(th, bh); + gen_acc2_i64(dl, dh, al, ah, tl, th); =20 tcg_temp_free_i64(th); tcg_temp_free_i64(tl); - tcg_temp_free_i64(zero); } =20 static DisasJumpType op_vscbi(DisasContext *s, DisasOps *o) { const uint8_t es =3D get_field(s->fields, m4); static const GVecGen3 g[4] =3D { - { .fno =3D gen_helper_gvec_vscbi8, }, - { .fno =3D gen_helper_gvec_vscbi16, }, + { .fni8 =3D gen_scbi8_i64, }, + { .fni8 =3D gen_scbi16_i64, }, { .fni4 =3D gen_scbi_i32, }, { .fni8 =3D gen_scbi_i64, }, }; diff --git a/target/s390x/vec_int_helper.c b/target/s390x/vec_int_helper.c index d38405848f..e8fe7af496 100644 --- a/target/s390x/vec_int_helper.c +++ b/target/s390x/vec_int_helper.c @@ -583,22 +583,6 @@ void HELPER(gvec_vsrl)(void *v1, const void *v2, uint6= 4_t count, s390_vec_shr(v1, v2, count); } =20 -#define DEF_VSCBI(BITS) = \ -void HELPER(gvec_vscbi##BITS)(void *v1, const void *v2, const void *v3, = \ - uint32_t desc) = \ -{ = \ - int i; = \ - = \ - for (i =3D 0; i < (128 / BITS); i++) { = \ - const uint##BITS##_t a =3D s390_vec_read_element##BITS(v2, i); = \ - const uint##BITS##_t b =3D s390_vec_read_element##BITS(v3, i); = \ - = \ - s390_vec_write_element##BITS(v1, i, a < b); = \ - } = \ -} -DEF_VSCBI(8) -DEF_VSCBI(16) - void HELPER(gvec_vtm)(void *v1, const void *v2, CPUS390XState *env, uint32_t desc) { --=20 2.21.0 From nobody Wed Nov 12 13:12:19 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1571415205; cv=none; d=zoho.com; s=zohoarc; b=nbg4nx+NMM7Z1oHR7q+RwJKdtUMPAQ90PWx5lkCHhGoBAmd1C9+hybqqkMk1pPRIc6g91A3eBDWWwKEuhg3X1N2FgVViMhY7gq8DMtGbiHcTLFhH8H188JLjULcX84KETlyvsrqiaAWyNXWbrRu1z7rb4ipsLoOff6/gUvdTAcQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571415205; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ytw+K8j8a5n4RQ5nGQcAoN3gRkY+CK1a2iEwV3HxH08=; b=YskX//L9KWwkaVZ6Gv1699qFOarL8GZuXjcx+x6+qhc7rlOLCK+i6b56mdNYquUN2RWjL0Dv3OzCvru1FUD+HcmBAGRnFkd2xd8EZE65wR07oioQL43NY+KeXvqB3yyxrDUTjtkjPQWMyUz56HK/NviLfFh59tCgi99EAVz3uO8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571415205358373.12960775474414; Fri, 18 Oct 2019 09:13:25 -0700 (PDT) Received: from localhost ([::1]:42760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUsU-0000uR-JD for importer@patchew.org; Fri, 18 Oct 2019 12:13:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49017) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUqL-0007Xb-7m for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iLUqJ-0007XS-95 for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35194) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iLUqF-0007TS-Aa; Fri, 18 Oct 2019 12:11:04 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 09D701017C0D; Fri, 18 Oct 2019 16:11:01 +0000 (UTC) Received: from t460s.redhat.com (unknown [10.36.118.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 821F63DA3; Fri, 18 Oct 2019 16:10:59 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v1 5/6] s390x/tcg: Fix VECTOR SUBTRACT WITH BORROW INDICATION Date: Fri, 18 Oct 2019 18:10:43 +0200 Message-Id: <20191018161044.6983-6-david@redhat.com> In-Reply-To: <20191018161044.6983-1-david@redhat.com> References: <20191018161044.6983-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.64]); Fri, 18 Oct 2019 16:11:01 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 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: , Cc: Thomas Huth , David Hildenbrand , Ivan Warren , Cornelia Huck , Richard Henderson , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Testing this, there seems to be something messed up. We are dealing with unsigned numbers. "Each operand is treated as an unsigned binary integer." Let's just implement as written in the PoP: "A subtraction is performed by adding the contents of the second operand with the bitwise complement of the third operand along with a borrow indication from the rightmost bit position of the fourth operand and the result is placed in the first operand." Fixes: 48390a7c2716 ("s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW INDI= CATION") Signed-off-by: David Hildenbrand Reviewed-by: Richard Henderson --- target/s390x/translate_vx.inc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/target/s390x/translate_vx.inc.c b/target/s390x/translate_vx.in= c.c index 40bcc1604e..87b5790db4 100644 --- a/target/s390x/translate_vx.inc.c +++ b/target/s390x/translate_vx.inc.c @@ -2207,12 +2207,18 @@ static void gen_sbi2_i64(TCGv_i64 dl, TCGv_i64 dh, = TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh, TCGv_i64 cl, TCGv_i64 c= h) { TCGv_i64 tl =3D tcg_temp_new_i64(); + TCGv_i64 th =3D tcg_temp_new_i64(); + TCGv_i64 t =3D tcg_temp_new_i64(); TCGv_i64 zero =3D tcg_const_i64(0); =20 - tcg_gen_andi_i64(tl, cl, 1); - tcg_gen_sub2_i64(dl, dh, al, ah, bl, bh); - tcg_gen_sub2_i64(dl, dh, dl, dh, tl, zero); + tcg_gen_andi_i64(t, cl, 1); + tcg_gen_not_i64(tl, bl); + tcg_gen_not_i64(th, bh); + tcg_gen_add2_i64(dl, dh, al, ah, tl, th); + tcg_gen_add2_i64(dl, dh, dl, dh, t, zero); tcg_temp_free_i64(tl); + tcg_temp_free_i64(th); + tcg_temp_free_i64(t); tcg_temp_free_i64(zero); } =20 --=20 2.21.0 From nobody Wed Nov 12 13:12:19 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1571415388; cv=none; d=zoho.com; s=zohoarc; b=kaS3l2FJedgT4hljkGUgbWjRZbqkViQh719zWHiU2fefUhU3mZUmS9Z2Lwqb5W+rEDO8PJt6clTjDPKZs19H35C/S/hCtgnJMjxRrHuX/LMUfM3UNVxNBCcSCyIo5yUkhz8n3W379R+dHJJm3G15TlOUOfZwsV1LfllAd3gl1wk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571415388; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9hM7atNHFXg2nTRx8Ns5a4Pi2xphjxDelulfBwBk510=; b=i7nn3EyE/KgZ8vqrk4ifUke7OLR3NjS3TyRjVT1qx5p9n25aa2naolN7Pm+PkUVUlYBIiw3dBlCwXIrLzdDulDxD7su6k5AEqyObj/Dvm4YAwbBy8E7aojhW+1uq0gji5TQH8JFbNBSDUKuf/c8F+DevaE7Ry/MHHsL7n4litiQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1571415388868948.0104313214385; Fri, 18 Oct 2019 09:16:28 -0700 (PDT) Received: from localhost ([::1]:42800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUvT-0004ZD-GF for importer@patchew.org; Fri, 18 Oct 2019 12:16:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49065) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iLUqP-0007bP-Ui for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iLUqL-0007Yz-6X for qemu-devel@nongnu.org; Fri, 18 Oct 2019 12:11:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40240) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iLUqL-0007Uy-0D; Fri, 18 Oct 2019 12:11:09 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D424418C4276; Fri, 18 Oct 2019 16:11:02 +0000 (UTC) Received: from t460s.redhat.com (unknown [10.36.118.23]) by smtp.corp.redhat.com (Postfix) with ESMTP id 54A963DB4; Fri, 18 Oct 2019 16:11:01 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v1 6/6] s390x/tcg: Fix VECTOR SUBTRACT WITH BORROW COMPUTE BORROW INDICATION Date: Fri, 18 Oct 2019 18:10:44 +0200 Message-Id: <20191018161044.6983-7-david@redhat.com> In-Reply-To: <20191018161044.6983-1-david@redhat.com> References: <20191018161044.6983-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.62]); Fri, 18 Oct 2019 16:11:02 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 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: , Cc: Thomas Huth , David Hildenbrand , Ivan Warren , Cornelia Huck , Richard Henderson , qemu-s390x@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The numbers are unsigned, the computation is wrong. "Each operand is treated as an unsigned binary integer". Let's implement as given in the PoP: "A subtraction is performed by adding the contents of the second operand with the bitwise complement of the third operand along with a borrow indication from the rightmost bit of the fourth operand." Fixes: bc725e65152c ("s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW COMP= UTE BORROW INDICATION") Signed-off-by: David Hildenbrand --- target/s390x/translate_vx.inc.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/target/s390x/translate_vx.inc.c b/target/s390x/translate_vx.in= c.c index 87b5790db4..2015af9012 100644 --- a/target/s390x/translate_vx.inc.c +++ b/target/s390x/translate_vx.inc.c @@ -2240,17 +2240,30 @@ static void gen_sbcbi2_i64(TCGv_i64 dl, TCGv_i64 dh= , TCGv_i64 al, TCGv_i64 ah, { TCGv_i64 th =3D tcg_temp_new_i64(); TCGv_i64 tl =3D tcg_temp_new_i64(); + TCGv_i64 sh =3D tcg_temp_new_i64(); + TCGv_i64 sl =3D tcg_temp_new_i64(); TCGv_i64 zero =3D tcg_const_i64(0); =20 tcg_gen_andi_i64(tl, cl, 1); - tcg_gen_sub2_i64(tl, th, al, zero, tl, zero); - tcg_gen_sub2_i64(tl, th, tl, th, bl, zero); + tcg_gen_not_i64(sl, bl); + tcg_gen_not_i64(sh, bh); + + /* Add the borrow to the low doubleword of a */ + tcg_gen_add2_i64(tl, th, al, zero, tl, zero); + /* Add the bit-wise complement of b to the low doubleword */ + tcg_gen_add2_i64(tl, th, tl, th, sl, zero); + /* Isolate the carry to the high doubleword */ tcg_gen_andi_i64(th, th, 1); - tcg_gen_sub2_i64(tl, th, ah, zero, th, zero); - tcg_gen_sub2_i64(tl, th, tl, th, bh, zero); + /* Add the carry to the high doubleword of a */ + tcg_gen_add2_i64(tl, th, ah, zero, th, zero); + /* Add the bit-wise complement of b to the high doubleword */ + tcg_gen_add2_i64(tl, th, tl, th, sh, zero); + /* Isolate the carry to the next doubleword */ tcg_gen_andi_i64(dl, th, 1); tcg_gen_mov_i64(dh, zero); =20 + tcg_temp_free_i64(sl); + tcg_temp_free_i64(sh); tcg_temp_free_i64(tl); tcg_temp_free_i64(th); tcg_temp_free_i64(zero); --=20 2.21.0