From ff3bd4df335e84d8a39ef2ec8b5229c2abe00e53 Mon Sep 17 00:00:00 2001 From: jtc Date: Fri, 31 May 1996 02:05:33 +0000 Subject: [PATCH] m68k assembly versions of 64 bit shift functions --- lib/libc/arch/m68k/quad/ashldi3.S | 67 ++++++++++++++++++++++++++++++ lib/libc/arch/m68k/quad/ashrdi3.S | 68 +++++++++++++++++++++++++++++++ lib/libc/arch/m68k/quad/lshrdi3.S | 67 ++++++++++++++++++++++++++++++ 3 files changed, 202 insertions(+) create mode 100644 lib/libc/arch/m68k/quad/ashldi3.S create mode 100644 lib/libc/arch/m68k/quad/ashrdi3.S create mode 100644 lib/libc/arch/m68k/quad/lshrdi3.S diff --git a/lib/libc/arch/m68k/quad/ashldi3.S b/lib/libc/arch/m68k/quad/ashldi3.S new file mode 100644 index 000000000000..ec7f1e9d772e --- /dev/null +++ b/lib/libc/arch/m68k/quad/ashldi3.S @@ -0,0 +1,67 @@ +/* $NetBSD: ashldi3.S,v 1.1 1996/05/31 02:05:33 jtc Exp $ */ + +/*- + * Copyright (c) 1996 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by J.T. Conklin. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 + +| d0 msw +| d1 lsw +| d2 shift +| d3 offset (32 - shift) + +ENTRY(__ashldi3) + link a6,#0 + moveml d2-d4,sp@- + movel a6@(8),d0 + movel a6@(12),d1 + movel a6@(16),d2 + moveq #32,d3 + subl d2,d3 + jgt L2 + negl d3 + movel d1,d0 + asll d3,d0 + clrl d1 + jra L3 +L2: asll d2,d0 + movel d1,d4 + lsrl d3,d4 + orl d4,d0 + asll d2,d1 +L3: moveml a6@(-12),d2-d4 + unlk a6 + rts diff --git a/lib/libc/arch/m68k/quad/ashrdi3.S b/lib/libc/arch/m68k/quad/ashrdi3.S new file mode 100644 index 000000000000..0774da439a4c --- /dev/null +++ b/lib/libc/arch/m68k/quad/ashrdi3.S @@ -0,0 +1,68 @@ +/* $NetBSD: ashrdi3.S,v 1.1 1996/05/31 02:05:42 jtc Exp $ */ + +/*- + * Copyright (c) 1996 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by J.T. Conklin. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 + +| d0 msw +| d1 lsw +| d2 shift +| d3 offset (32 - shift) + +ENTRY(__ashrdi3) + link a6,#0 + moveml d2-d4,sp@- + movel a6@(8),d0 + movel a6@(12),d1 + movel a6@(16),d2 + moveq #32,d3 + subl d2,d3 + jgt L2 + negl d3 + movel d0,d1 + asrl d3,d1 + smi d0 + extbl d0 + jra L3 +L2: lsrl d2,d1 + movel d0,d4 + asll d3,d4 + orl d4,d1 + asrl d2,d0 +L3: moveml a6@(-12),d2-d4 + unlk a6 + rts diff --git a/lib/libc/arch/m68k/quad/lshrdi3.S b/lib/libc/arch/m68k/quad/lshrdi3.S new file mode 100644 index 000000000000..de35fb1d77e1 --- /dev/null +++ b/lib/libc/arch/m68k/quad/lshrdi3.S @@ -0,0 +1,67 @@ +/* $NetBSD: lshrdi3.S,v 1.1 1996/05/31 02:05:47 jtc Exp $ */ + +/*- + * Copyright (c) 1996 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by J.T. Conklin. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 + +| d0 msw +| d1 lsw +| d2 shift +| d3 offset (32 - shift) + +ENTRY(__lshrdi3) + link a6,#0 + moveml d2-d4,sp@- + movel a6@(8),d0 + movel a6@(12),d1 + movel a6@(16),d2 + moveq #32,d3 + subl d2,d3 + jgt L2 + negl d3 + movel d0,d1 + lsrl d3,d1 + clrl d0 + jra L3 +L2: lsrl d2,d1 + movel d0,d4 + asll d3,d4 + orl d4,d1 + lsrl d2,d0 +L3: moveml a6@(-12),d2-d4 + unlk a6 + rts