From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:38233) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hMCPw-0007qe-Jq for qemu-devel@nongnu.org; Thu, 02 May 2019 10:10:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hMCPv-0005wM-CI for qemu-devel@nongnu.org; Thu, 02 May 2019 10:10:32 -0400 From: David Hildenbrand Date: Thu, 2 May 2019 16:09:39 +0200 Message-Id: <20190502141019.6385-1-david@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v3 00/40] s390x/tcg: Vector Instruction Support Part 2 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Thomas Huth , Cornelia Huck , Richard Henderson , David Hildenbrand This is the second part of vector instruction support for s390x. It is based on the series by Richard: [PATCH v2 00/29] tcg vector improvements Part 1: Vector Support Instructions Part 2: Vector Integer Instructions Part 3: Vector String Instructions Part 4: Vector Floating-Point Instructions The current state can be found at (kept updated): https://github.com/davidhildenbrand/qemu/tree/vx With the current state I can boot Linux kernel + user space compiled with SIMD support. This allows to boot distributions compiled exclusively for z13, requiring SIMD support. Also, it is now possible to build a complete kernel using rpmbuild as quite some issues have been sorted out. In this part, all Vector Integer Instructions introduced with the "Vector Facility" are added. Some instructions part of the Vector Extensi= on Facilities are also added. v2 -> v3: - Use new vector helpers tcg_gen_gvec_abs(), tcg_gen_gvec_shl() and frien= ds and tcg_gen_gvec_shlv() and friends. v1 -> v2: - Many suggestions and fixes as outlined by Richard H. -- Mostly avoid oom helpers for 128-bit add/sub variants -- New vector helpers are not considered for now David Hildenbrand (40): s390x/tcg: Implement VECTOR ADD s390x/tcg: Implement VECTOR ADD COMPUTE CARRY s390x/tcg: Implement VECTOR ADD WITH CARRY s390x/tcg: Implement VECTOR ADD WITH CARRY COMPUTE CARRY s390x/tcg: Implement VECTOR AND (WITH COMPLEMENT) s390x/tcg: Implement VECTOR AVERAGE s390x/tcg: Implement VECTOR AVERAGE LOGICAL s390x/tcg: Implement VECTOR CHECKSUM s390x/tcg: Implement VECTOR ELEMENT COMPARE * s390x/tcg: Implement VECTOR COMPARE * s390x/tcg: Implement VECTOR COUNT LEADING ZEROS s390x/tcg: Implement VECTOR COUNT TRAILING ZEROS s390x/tcg: Implement VECTOR EXCLUSIVE OR s390x/tcg: Implement VECTOR GALOIS FIELD MULTIPLY SUM (AND ACCUMULATE) s390x/tcg: Implement VECTOR LOAD COMPLEMENT s390x/tcg: Implement VECTOR LOAD POSITIVE s390x/tcg: Implement VECTOR (MAXIMUM|MINIMUM) (LOGICAL) s390x/tcg: Implement VECTOR MULTIPLY AND ADD * s390x/tcg: Implement VECTOR MULTIPLY * s390x/tcg: Implement VECTOR NAND s390x/tcg: Implement VECTOR NOR s390x/tcg: Implement VECTOR NOT EXCLUSIVE OR s390x/tcg: Implement VECTOR OR s390x/tcg: Implement VECTOR OR WITH COMPLEMENT s390x/tcg: Implement VECTOR POPULATION COUNT s390x/tcg: Implement VECTOR ELEMENT ROTATE LEFT LOGICAL s390x/tcg: Implement VECTOR ELEMENT ROTATE AND INSERT UNDER MASK s390x/tcg: Implement VECTOR ELEMENT SHIFT s390x/tcg: Implement VECTOR SHIFT LEFT (BY BYTE) s390x/tcg: Implement VECTOR SHIFT LEFT DOUBLE BY BYTE s390x/tcg: Implement VECTOR SHIFT RIGHT ARITHMETIC s390x/tcg: Implement VECTOR SHIFT RIGHT LOGICAL * s390x/tcg: Implement VECTOR SUBTRACT s390x/tcg: Implement VECTOR SUBTRACT COMPUTE BORROW INDICATION s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW INDICATION s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW COMPUTE BORROW INDICATION s390x/tcg: Implement VECTOR SUM ACROSS DOUBLEWORD s390x/tcg: Implement VECTOR SUM ACROSS QUADWORD s390x/tcg: Implement VECTOR SUM ACROSS WORD s390x/tcg: Implement VECTOR TEST UNDER MASK target/s390x/Makefile.objs | 2 +- target/s390x/cc_helper.c | 17 + target/s390x/helper.c | 1 + target/s390x/helper.h | 66 ++ target/s390x/insn-data.def | 137 +++ target/s390x/internal.h | 1 + target/s390x/translate.c | 2 + target/s390x/translate_vx.inc.c | 1416 +++++++++++++++++++++++++++++++ target/s390x/vec_int_helper.c | 603 +++++++++++++ 9 files changed, 2244 insertions(+), 1 deletion(-) create mode 100644 target/s390x/vec_int_helper.c --=20 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 041E9C43219 for ; Thu, 2 May 2019 14:12:31 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CC299206DF for ; Thu, 2 May 2019 14:12:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CC299206DF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([127.0.0.1]:51735 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hMCRp-0001YS-UZ for qemu-devel@archiver.kernel.org; Thu, 02 May 2019 10:12:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:38233) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hMCPw-0007qe-Jq for qemu-devel@nongnu.org; Thu, 02 May 2019 10:10:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hMCPv-0005wM-CI for qemu-devel@nongnu.org; Thu, 02 May 2019 10:10:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52236) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hMCPv-0005vj-4c; Thu, 02 May 2019 10:10:31 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 65B213003B36; Thu, 2 May 2019 14:10:26 +0000 (UTC) Received: from t460s.redhat.com (ovpn-117-88.ams2.redhat.com [10.36.117.88]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0AA72182DB; Thu, 2 May 2019 14:10:19 +0000 (UTC) From: David Hildenbrand To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 16:09:39 +0200 Message-Id: <20190502141019.6385-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Thu, 02 May 2019 14:10:30 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v3 00/40] s390x/tcg: Vector Instruction Support Part 2 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-s390x@nongnu.org, Cornelia Huck , David Hildenbrand , Thomas Huth , Richard Henderson Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="UTF-8" Message-ID: <20190502140939.9_3_Y2dEHFqjY5gXHdWXN-JELfqDVRJoL148RflI0sE@z> This is the second part of vector instruction support for s390x. It is based on the series by Richard: [PATCH v2 00/29] tcg vector improvements Part 1: Vector Support Instructions Part 2: Vector Integer Instructions Part 3: Vector String Instructions Part 4: Vector Floating-Point Instructions The current state can be found at (kept updated): https://github.com/davidhildenbrand/qemu/tree/vx With the current state I can boot Linux kernel + user space compiled with SIMD support. This allows to boot distributions compiled exclusively for z13, requiring SIMD support. Also, it is now possible to build a complete kernel using rpmbuild as quite some issues have been sorted out. In this part, all Vector Integer Instructions introduced with the "Vector Facility" are added. Some instructions part of the Vector Extensi= on Facilities are also added. v2 -> v3: - Use new vector helpers tcg_gen_gvec_abs(), tcg_gen_gvec_shl() and frien= ds and tcg_gen_gvec_shlv() and friends. v1 -> v2: - Many suggestions and fixes as outlined by Richard H. -- Mostly avoid oom helpers for 128-bit add/sub variants -- New vector helpers are not considered for now David Hildenbrand (40): s390x/tcg: Implement VECTOR ADD s390x/tcg: Implement VECTOR ADD COMPUTE CARRY s390x/tcg: Implement VECTOR ADD WITH CARRY s390x/tcg: Implement VECTOR ADD WITH CARRY COMPUTE CARRY s390x/tcg: Implement VECTOR AND (WITH COMPLEMENT) s390x/tcg: Implement VECTOR AVERAGE s390x/tcg: Implement VECTOR AVERAGE LOGICAL s390x/tcg: Implement VECTOR CHECKSUM s390x/tcg: Implement VECTOR ELEMENT COMPARE * s390x/tcg: Implement VECTOR COMPARE * s390x/tcg: Implement VECTOR COUNT LEADING ZEROS s390x/tcg: Implement VECTOR COUNT TRAILING ZEROS s390x/tcg: Implement VECTOR EXCLUSIVE OR s390x/tcg: Implement VECTOR GALOIS FIELD MULTIPLY SUM (AND ACCUMULATE) s390x/tcg: Implement VECTOR LOAD COMPLEMENT s390x/tcg: Implement VECTOR LOAD POSITIVE s390x/tcg: Implement VECTOR (MAXIMUM|MINIMUM) (LOGICAL) s390x/tcg: Implement VECTOR MULTIPLY AND ADD * s390x/tcg: Implement VECTOR MULTIPLY * s390x/tcg: Implement VECTOR NAND s390x/tcg: Implement VECTOR NOR s390x/tcg: Implement VECTOR NOT EXCLUSIVE OR s390x/tcg: Implement VECTOR OR s390x/tcg: Implement VECTOR OR WITH COMPLEMENT s390x/tcg: Implement VECTOR POPULATION COUNT s390x/tcg: Implement VECTOR ELEMENT ROTATE LEFT LOGICAL s390x/tcg: Implement VECTOR ELEMENT ROTATE AND INSERT UNDER MASK s390x/tcg: Implement VECTOR ELEMENT SHIFT s390x/tcg: Implement VECTOR SHIFT LEFT (BY BYTE) s390x/tcg: Implement VECTOR SHIFT LEFT DOUBLE BY BYTE s390x/tcg: Implement VECTOR SHIFT RIGHT ARITHMETIC s390x/tcg: Implement VECTOR SHIFT RIGHT LOGICAL * s390x/tcg: Implement VECTOR SUBTRACT s390x/tcg: Implement VECTOR SUBTRACT COMPUTE BORROW INDICATION s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW INDICATION s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW COMPUTE BORROW INDICATION s390x/tcg: Implement VECTOR SUM ACROSS DOUBLEWORD s390x/tcg: Implement VECTOR SUM ACROSS QUADWORD s390x/tcg: Implement VECTOR SUM ACROSS WORD s390x/tcg: Implement VECTOR TEST UNDER MASK target/s390x/Makefile.objs | 2 +- target/s390x/cc_helper.c | 17 + target/s390x/helper.c | 1 + target/s390x/helper.h | 66 ++ target/s390x/insn-data.def | 137 +++ target/s390x/internal.h | 1 + target/s390x/translate.c | 2 + target/s390x/translate_vx.inc.c | 1416 +++++++++++++++++++++++++++++++ target/s390x/vec_int_helper.c | 603 +++++++++++++ 9 files changed, 2244 insertions(+), 1 deletion(-) create mode 100644 target/s390x/vec_int_helper.c --=20 2.20.1