From nobody Sat Jul 1 19:23:21 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QthtK5QVRz4l9Vw; Sat, 1 Jul 2023 19:23:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QthtK4Ns9z4Yq6; Sat, 1 Jul 2023 19:23:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688239401; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3NhKtZLYVse1ovsjRE2Yh3n+P21m1ZuojUk7zHQLAG0=; b=SZkft5VtJWu/uo5oCsKhat/z1rwbOIllIXN2O1Zp2jXvHEf6LUpnMkNqfk0Z21lycAk+10 ovKHcbGHGXXZu3TezGwvsqh9db2gannnYphYcqo1Gx2KEkWsDLBXxkA1AemRpBmEJzjTqt atU0WJjXUVvkggpuFycO1RdiCeJoF1Ph3km+YR1WeLp/qxHCYwV6Qv11n21n1dzF7C+urQ KY5K0qmaTG1ZBP+Qrk2zhkLlmu6IRn4cvW8/rAI20bI1Svv0W4EuI+25ryaXu7Uu+xhmUu SXN5q6F8TyQqWVTMA61umMawBmbunVxMv6+cBp5VTkDB6Fqmt9ZKcdoza8UZHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688239401; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3NhKtZLYVse1ovsjRE2Yh3n+P21m1ZuojUk7zHQLAG0=; b=UGoM1Q6EvALUwEa3OS8y6EwPr5xeS5FUGLHDiDTKnncJqrp4v/OFDKRJjwOK3uCYSbEtJY EL7zYWAR5/hdIt2m6FHFDboXGN5fjBvDnEEfIFdjiH4/fFfRozsGLl4lWsmAedkBpSu8eU gJOIMdK11IcUeLbc61UkaXYLymF/4GZ3ViVNZie24Oqs3y/LI1LhGk6iwfRx2nJDMc8q+U /CJO0l6cPA4SEoMdjjEav8Z9H5zJ/vbGzbVFNWiZqkl8uJ/da/mzmVAUdyPHhArhe3djgg Q2HOgjD8Mbd64xBfrG1LZWd52AsgU9Zd+AFkUGZ9SiM2Uwww8M1EFRJIRZ5Vmw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1688239401; a=rsa-sha256; cv=none; b=cD2FT9qQwUPOt2POyrUQlQdtfshkfiabrKeC16gN+UN2cbyqB1MWBzGFLsW4xjSwOrQDya pW5Ea4g/Eue6Lm1yfZnpSm8N6Rn44zFMOdY/cgPre+5sMsknjgQbwpmaql2uvSe63hrVhY wYc5BGHbd39ptx1jtwQCP4QIyVZEkFtD1BXcCfDjyW5TiC1u381i+P/tNNfGwAaUEHdHc7 qHPI4ocQG0jCU00/wtG8uLFeRgrecfIX2hZoymrRv4Z0ZwtBYkozWBiyJE5kyXYmagkaZt NbqgF/RqOImdr2PaxWlidsByeLpbDZZiqcX83LwDLD394tOQqaEV4wBPAcAiwA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QthtK3MxszdJ5; Sat, 1 Jul 2023 19:23:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 361JNL9L070334; Sat, 1 Jul 2023 19:23:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 361JNLn6070333; Sat, 1 Jul 2023 19:23:21 GMT (envelope-from git) Date: Sat, 1 Jul 2023 19:23:21 GMT Message-Id: <202307011923.361JNLn6070333@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: cc4f247fb946 - main - sys: Add [u]divmoddi4 intrinsics on i386. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cc4f247fb9468bbece5286557ab2d6810704aaf3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=cc4f247fb9468bbece5286557ab2d6810704aaf3 commit cc4f247fb9468bbece5286557ab2d6810704aaf3 Author: John Baldwin AuthorDate: 2023-07-01 19:22:44 +0000 Commit: John Baldwin CommitDate: 2023-07-01 19:22:44 +0000 sys: Add [u]divmoddi4 intrinsics on i386. GCC 12 uses these in several places when building the i386 kernel. They are very similar to [u]divdiv3 except that they return both the quotient and the remainder. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D40817 --- sys/conf/files.i386 | 2 ++ sys/libkern/divmoddi4.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ sys/libkern/quad.h | 2 ++ sys/libkern/udivmoddi4.c | 46 +++++++++++++++++++++++++++++++++++++ 4 files changed, 110 insertions(+) diff --git a/sys/conf/files.i386 b/sys/conf/files.i386 index f0aa4007d8d3..cd1aeb4850b7 100644 --- a/sys/conf/files.i386 +++ b/sys/conf/files.i386 @@ -140,6 +140,7 @@ isa/vga_isa.c optional vga kern/imgact_aout.c optional compat_aout kern/subr_sfbuf.c standard libkern/divdi3.c standard +libkern/divmoddi4.c standard libkern/ffsll.c standard libkern/flsll.c standard libkern/memcmp.c standard @@ -149,6 +150,7 @@ libkern/qdivrem.c standard libkern/strlen.c standard libkern/ucmpdi2.c standard libkern/udivdi3.c standard +libkern/udivmoddi4.c standard libkern/umoddi3.c standard # # x86 real mode BIOS support, required by dpms/pci/vesa diff --git a/sys/libkern/divmoddi4.c b/sys/libkern/divmoddi4.c new file mode 100644 index 000000000000..e5bd81a90ad7 --- /dev/null +++ b/sys/libkern/divmoddi4.c @@ -0,0 +1,60 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +/* + * Divide two signed quads. + * ??? if -1/2 should produce -1 on this machine, this code is wrong + */ +quad_t +__divmoddi4(quad_t a, quad_t b, quad_t *rem) +{ + u_quad_t ua, ub, uq, urem; + int neg; + + if (a < 0) + ua = -(u_quad_t)a, neg = 1; + else + ua = a, neg = 0; + if (b < 0) + ub = -(u_quad_t)b, neg ^= 1; + else + ub = b; + uq = __qdivrem(ua, ub, &urem); + if (rem != 0) + *rem = urem; + return (neg ? -uq : uq); +} diff --git a/sys/libkern/quad.h b/sys/libkern/quad.h index 452f331661b3..e6be1c7bde15 100644 --- a/sys/libkern/quad.h +++ b/sys/libkern/quad.h @@ -105,10 +105,12 @@ quad_t __ashldi3(quad_t, qshift_t); quad_t __ashrdi3(quad_t, qshift_t); int __cmpdi2(quad_t a, quad_t b); quad_t __divdi3(quad_t a, quad_t b); +quad_t __divmoddi4(quad_t a, quad_t b, quad_t *rem); quad_t __lshrdi3(quad_t, qshift_t); quad_t __moddi3(quad_t a, quad_t b); u_quad_t __qdivrem(u_quad_t u, u_quad_t v, u_quad_t *rem); u_quad_t __udivdi3(u_quad_t a, u_quad_t b); +u_quad_t __udivmoddi4(u_quad_t a, u_quad_t b, u_quad_t *rem); u_quad_t __umoddi3(u_quad_t a, u_quad_t b); int __ucmpdi2(u_quad_t a, u_quad_t b); diff --git a/sys/libkern/udivmoddi4.c b/sys/libkern/udivmoddi4.c new file mode 100644 index 000000000000..bb9b06917e2e --- /dev/null +++ b/sys/libkern/udivmoddi4.c @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +/* + * Divide two unsigned quads. + */ +u_quad_t +__udivmoddi4(u_quad_t a, u_quad_t b, u_quad_t *rem) +{ + + return (__qdivrem(a, b, rem)); +}