diff options
author | 2016-05-11 21:52:48 +0000 | |
---|---|---|
committer | 2016-05-11 21:52:48 +0000 | |
commit | 0f5275725014ab6098a7071ceda8a67d6abb48b4 (patch) | |
tree | 90e5307a03d24b7e626e0a2d9972ae3e4502786c /sys/lib/libkern/arch | |
parent | sync (diff) | |
download | wireguard-openbsd-0f5275725014ab6098a7071ceda8a67d6abb48b4.tar.xz wireguard-openbsd-0f5275725014ab6098a7071ceda8a67d6abb48b4.zip |
remove hppa64 port, which we never got going beyond broken single users.
hppa reverse-stack gives us a valuable test case, but most developers don't
have a 2nd one to proceed further with this.
ok kettenis
Diffstat (limited to 'sys/lib/libkern/arch')
-rw-r--r-- | sys/lib/libkern/arch/hppa64/Makefile | 14 | ||||
-rw-r--r-- | sys/lib/libkern/arch/hppa64/bcopy.S | 152 | ||||
-rw-r--r-- | sys/lib/libkern/arch/hppa64/bcopy.m4 | 252 | ||||
-rw-r--r-- | sys/lib/libkern/arch/hppa64/memcpy.S | 1 | ||||
-rw-r--r-- | sys/lib/libkern/arch/hppa64/memmove.S | 1 | ||||
-rw-r--r-- | sys/lib/libkern/arch/hppa64/milli.S | 1448 | ||||
-rw-r--r-- | sys/lib/libkern/arch/hppa64/spcopy.S | 167 |
7 files changed, 0 insertions, 2035 deletions
diff --git a/sys/lib/libkern/arch/hppa64/Makefile b/sys/lib/libkern/arch/hppa64/Makefile deleted file mode 100644 index 0083c47ba1a..00000000000 --- a/sys/lib/libkern/arch/hppa64/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# $OpenBSD: Makefile,v 1.1 2008/04/20 16:51:52 kettenis Exp $ - -all: ${.CURDIR}/bcopy.S ${.CURDIR}/spcopy.S - -${.CURDIR}/bcopy.S: bcopy.m4 - @echo 'building ${.TARGET} from ${.ALLSRC}' - @m4 -DNAME=bcopy ${.ALLSRC} > ${.TARGET} - -${.CURDIR}/spcopy.S: bcopy.m4 - @echo 'building ${.TARGET} from ${.ALLSRC}' - @m4 -DNAME=spcopy ${.ALLSRC} > ${.TARGET} - -.include <bsd.own.mk> -.include <bsd.obj.mk> diff --git a/sys/lib/libkern/arch/hppa64/bcopy.S b/sys/lib/libkern/arch/hppa64/bcopy.S deleted file mode 100644 index 8a201ee4e9b..00000000000 --- a/sys/lib/libkern/arch/hppa64/bcopy.S +++ /dev/null @@ -1,152 +0,0 @@ -/* This is a generated file. DO NOT EDIT. */ -/* - * Generated from: - * - * OpenBSD: bcopy.m4 - */ -/* - * Copyright (c) 1999,2004 Michael Shalayeff - * All rights reserved. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - - -#undef _LOCORE -#define _LOCORE -#include <machine/asm.h> -#include <machine/frame.h> - - -LEAF_ENTRY(bcopy) - copy %arg0, %ret0 - copy %arg1, %arg0 - copy %ret0, %arg1 -ALTENTRY(memmove) - cmpb,*>,n %arg0, %arg1, $bcopy.reverse -ALTENTRY(memcpy) - copy %arg0, %ret0 - - cmpib,*>=,n 15, %arg2, $bcopy_f.byte - - extrd,u %arg1, 63, 2, %r20 - extrd,u %arg0, 63, 2, %r19 - add %arg2, %r19, %arg2 - cmpb,*<> %r20, %r19, $bcopy_f.unaligned - depd %r0, 63, 2, %arg1 - - addi -16, %arg2, %arg2 -$bcopy_f.loop16a - ldw 32(%sr0, %arg1), %r0 - ldw,ma 4(%sr0, %arg1), %r22 - ldw,ma 4(%sr0, %arg1), %r21 - ldw,ma 4(%sr0, %arg1), %r20 - ldw,ma 4(%sr0, %arg1), %r19 - stby,b,m %r22, 4(%sr0, %arg0) - stw,ma %r21, 4(%sr0, %arg0) - stw,ma %r20, 4(%sr0, %arg0) - addib,*>= -16, %arg2, $bcopy_f.loop16a - stw,ma %r19, 4(%sr0, %arg0) - - addib,*<,n 12, %arg2, $bcopy_f.cleanup -$bcopy_f.word - ldw,ma 4(%sr0, %arg1), %r22 - addib,*>= -4, %arg2, $bcopy_f.word - stw,ma %r22, 4(%sr0, %arg0) - -$bcopy_f.cleanup - addib,*=,n 4, %arg2, $bcopy_f.done - ldw 0(%sr0, %arg1), %r22 - add %arg0, %arg2, %arg0 - b $bcopy_f.done - stby,e %r22, 0(%sr0, %arg0) - -$bcopy_f.unaligned - sub,*>= %r19, %r20, %r21 - ldw,ma 4(%sr0, %arg1), %ret1 - depd,z %r21, 60, 61, %r22 - mtsar %r22 - - addi -16, %arg2, %arg2 -$bcopy_f.loop16u - ldw 32(%sr0, %arg1), %r0 - ldw,ma 4(%sr0, %arg1), %r22 - ldw,ma 4(%sr0, %arg1), %r21 - ldw,ma 4(%sr0, %arg1), %r20 - ldw,ma 4(%sr0, %arg1), %r19 - shrpw %ret1, %r22, %sar, %r31 - stby,b,m %r31, 4(%sr0, %arg0) - shrpw %r22, %r21, %sar, %r31 - stw,ma %r31, 4(%sr0, %arg0) - shrpw %r21, %r20, %sar, %r31 - stw,ma %r31, 4(%sr0, %arg0) - shrpw %r20, %r19, %sar, %r31 - stw,ma %r31, 4(%sr0, %arg0) - addib,*>= -16, %arg2, $bcopy_f.loop16u - copy %r19, %ret1 - - addib,*<,n 12, %arg2, $bcopy_f.cleanup_un -$bcopy_f.word_un - ldw,ma 4(%sr0, %arg1), %r22 - shrpw %ret1, %r22, %sar, %r21 - addib,*< -4, %arg2, $bcopy_f.cleanup1_un - stw,ma %r21, 4(%sr0, %arg0) - ldw,ma 4(%sr0, %arg1), %ret1 - shrpw %r22, %ret1, %sar, %r21 - addib,*>= -4, %arg2, $bcopy_f.word_un - stw,ma %r21, 4(%sr0, %arg0) - -$bcopy_f.cleanup_un - addib,*<=,n 4, %arg2, $bcopy_f.done - mfctl %sar, %r19 - add %arg0, %arg2, %arg0 - extrd,u %r19, 60, 2, %r19 - sub,*<= %arg2, %r19, %r0 - ldw,ma 4(%sr0, %arg1), %r22 - shrpw %ret1, %r22, %sar, %r21 - b $bcopy_f.done - stby,e %r21, 0(%sr0, %arg0) - -$bcopy_f.cleanup1_un - b $bcopy_f.cleanup_un - copy %r22, %ret1 - -$bcopy_f.byte - cmpb,*>=,n %r0, %arg2, $bcopy_f.done -$bcopy_f.byte_loop - ldbs,ma 1(%sr0, %arg1), %r22 - addib,*<> -1, %arg2, $bcopy_f.byte_loop - stbs,ma %r22, 1(%sr0, %arg0) -$bcopy_f.done - - bv %r0(%rp) - nop -$bcopy.reverse - copy %arg0, %ret0 - add %arg1, %arg2, %arg1 - add %arg0, %arg2, %arg0 - - -$bcopy_r.byte - cmpb,*>=,n %r0, %arg2, $bcopy_r.done -$bcopy_r.byte_loop - ldbs,mb -1(%sr0, %arg1), %r22 - addib,*<> -1, %arg2, $bcopy_r.byte_loop - stbs,mb %r22, -1(%sr0, %arg0) -$bcopy_r.done - - bv %r0(%rp) - nop -EXIT(bcopy) - - .end diff --git a/sys/lib/libkern/arch/hppa64/bcopy.m4 b/sys/lib/libkern/arch/hppa64/bcopy.m4 deleted file mode 100644 index b8aa4d2bcc7..00000000000 --- a/sys/lib/libkern/arch/hppa64/bcopy.m4 +++ /dev/null @@ -1,252 +0,0 @@ -define(_rcsid,``$OpenBSD: bcopy.m4,v 1.12 2013/06/14 12:45:18 kettenis Exp $'')dnl -dnl -dnl -dnl This is the source file for bcopy.S, spcopy.S -dnl -dnl -define(`versionmacro',substr(_rcsid,1,eval(len(_rcsid)-2)))dnl -dnl -/* This is a generated file. DO NOT EDIT. */ -/* - * Generated from: - * - * versionmacro - */ -/* - * Copyright (c) 1999,2004 Michael Shalayeff - * All rights reserved. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -dnl -dnl macro: L(`%arg1',`%arg2') -dnl synopsis: creates an assembly label based on args resulting in $%arg1.%arg2 -dnl -define(`L', `$$1.$2')dnl -dnl -dnl -dnl -define(`STWS',`ifelse($5, `u',dnl -`ifelse($1, `22', `shrpw $4, %r`$1', %sar, %r31 - stby,B,m %r31, F`'4($2, $3)', -`0', `0', `shrpw %r`'incr($1), %r`$1', %sar, %r31 - stw,M %r31, F`'4($2, $3)')',dnl -`0', `0', -`ifelse($1, `22', -`stby,B`'ifelse(B, `b', `,m ', `0', `0', ` ')`'%r`$1', F`'4($2, $3)', -`0', `0', `stw,M %r`$1', F`'4($2, $3)')')')dnl -define(`STWSS', `ifelse(`$3', `22', `dnl', -`0', `0', `STWSS($1, $2, eval($3 + 1), $4, $5)') - STWS($3, $1, $2, $4, $5)dnl -')dnl -define(`LDWSS', `ifelse(`$3', `22', `dnl', -`0', `0', `LDWSS($1, $2, eval($3 + 1))') - ldw,M F`'4($1, $2), %r`'$3`'dnl -')dnl -dnl -dnl copy data in 4-words blocks -dnl -define(`hppa_blcopy',` - addi -16, $6, $6 -L($1, `loop16'`$7') - ldw F 32($2, $3), %r0 -ifelse(F, `-', `dnl - addi F`'4, $5, $5', `0', `0', `dnl') -LDWSS($2, $3, 19) -STWSS($4, $5, 20, `%ret1', $7) -ifelse($7, `u', `dnl - STWS(19, $4, $5, `%ret1', $7)', $7, `a', `dnl') - addib,*>= -16, $6, L($1, `loop16'`$7') -ifelse($7, `a', `dnl - STWS(19, $4, $5, `%ret1', $7)dnl -', $7, `u', `dnl - copy %r19, %ret1')')dnl -dnl -dnl copy in words -dnl -define(`STWL', `addib,*<,n 12, $6, L($1, cleanup) -ifelse($7, `u', ` copy %ret1, %r22', $7, `a', `dnl') -L($1, word) - ldw,M F`'4($2, $3), %r22 - addib,*>= -4, $6, L($1, word) - stw,M %r22, F`'4($4, $5) - -L($1, cleanup) - addib,*=,n 4, $6, L($1, done) - ldw 0($2, $3), %r22 - add $5, $6, $5 - b L($1, done) - stby,E %r22, 0($4, $5) -') -dnl -dnl -dnl parameters: -dnl $1 name -dnl $2 source space -dnl $3 source address -dnl $4 destination space -dnl $5 destination address -dnl $6 length -dnl $7 direction -dnl -define(hppa_copy, -`dnl -dnl -dnl if direction is `-' (backwards copy), adjust src, dst -dnl -ifelse($7,`-', `add $3, $6, $3 - add $5, $6, $5 -define(`F', `-')dnl -define(`R', `')dnl -define(`M', `mb')dnl -define(`B', `e')dnl -define(`E', `b')dnl -',dnl ifelse -`0',`0', -`define(`F', `')dnl -define(`R', `-')dnl -define(`M', `ma')dnl -define(`B', `b')dnl -define(`E', `e')dnl -')dnl ifelse - -ifelse($7,`-', `', `0',`0', -` cmpib,*>=,n 15, $6, L($1, byte) - - extrd,u $3, 63, 2, %r20 - extrd,u $5, 63, 2, %r19 - add $6, %r19, $6 - cmpb,*<> %r20, %r19, L($1, unaligned) - depd %r0, 63, 2, $3 - hppa_blcopy($1, $2, $3, $4, $5, $6, `a') - - STWL($1, $2, $3, $4, $5, $6, `a')dnl - -L($1, unaligned) - sub,*>= %r19, %r20, %r21 - ldw,ma F`'4($2, $3), %ret1 - depd,z %r21, 60, 61, %r22 - mtsar %r22 - hppa_blcopy($1, $2, $3, $4, $5, $6, `u') - -dnl STWL($1, $2, $3, $4, $5, $6, `u') - addib,*<,n 12, $6, L($1, cleanup_un) -L($1, word_un) - ldw,M F`'4($2, $3), %r22 - shrpw %ret1, %r22, %sar, %r21 - addib,*< -4, $6, L($1, cleanup1_un) - stw,M %r21, F`'4($4, $5) - ldw,M F`'4($2, $3), %ret1 - shrpw %r22, %ret1, %sar, %r21 - addib,*>= -4, $6, L($1, word_un) - stw,M %r21, F`'4($4, $5) - -L($1, cleanup_un) - addib,*<=,n 4, $6, L($1, done) - mfctl %sar, %r19 - add $5, $6, $5 - extrd,u %r19, 60, 2, %r19 - sub,*<= $6, %r19, %r0 - ldw,M F`'4($2, $3), %r22 - shrpw %ret1, %r22, %sar, %r21 - b L($1, done) - stby,E %r21, 0($4, $5) - -L($1, cleanup1_un) - b L($1, cleanup_un) - copy %r22, %ret1 -')dnl ifelse - -L($1, byte) - cmpb,*>=,n %r0, $6, L($1, done) -L($1, byte_loop) - ldbs,M F`'1($2, $3), %r22 - addib,*<> -1, $6, L($1, byte_loop) - stbs,M %r22, F`'1($4, $5) -L($1, done) -')dnl -` -#undef _LOCORE -#define _LOCORE -#include <machine/asm.h> -#include <machine/frame.h> -' -ifelse(NAME, `bcopy', -` -LEAF_ENTRY(bcopy) - copy %arg0, %ret0 - copy %arg1, %arg0 - copy %ret0, %arg1 -ALTENTRY(memmove) - cmpb,*>,n %arg0, %arg1, L(bcopy, reverse) -ALTENTRY(memcpy) - copy %arg0, %ret0 - hppa_copy(bcopy_f, %sr0, %arg1, %sr0, %arg0, %arg2, `+') - bv %r0(%rp) - nop -L(bcopy, reverse) - copy %arg0, %ret0 - hppa_copy(bcopy_r, %sr0, %arg1, %sr0, %arg0, %arg2, `-') - bv %r0(%rp) - nop -EXIT(bcopy) -')dnl -dnl -ifelse(NAME, `spcopy', -` -#ifdef _KERNEL -#include <assym.h> - -/* - * int spcopy (pa_space_t ssp, const void *src, pa_space_t dsp, void *dst, - * size_t size) - * do a space to space bcopy. - * - * assumes that spaces do not clash, otherwise we lose - */ - .import copy_on_fault, code -LEAF_ENTRY(spcopy) - sub,*<> %r0, arg4, %r0 - bv %r0(%rp) - nop -` - std %rp, HPPA_FRAME_RP(%sp) - ldo HPPA_FRAME_SIZE(%sp), %sp - /* setup fault handler */ - mfctl %cr24, %r1 - ldd CI_CURPROC(%r1), %r1 - ldil L%copy_on_fault, %r21 - ldd P_ADDR(%r1), %r2 - ldo R%copy_on_fault(%r21), %r21 - ldd PCB_ONFAULT+U_PCB(%r2), %r1 - std %r21, PCB_ONFAULT+U_PCB(%r2) -' - mtsp %arg0, %sr1 - mtsp %arg2, %sr2 - - copy arg4, %ret0 - hppa_copy(spcopy, %sr1, %arg1, %sr2, %arg3, %ret0, `+') - - mtsp %r0, %sr1 - mtsp %r0, %sr2 - /* reset fault handler */ - std %r1, PCB_ONFAULT+U_PCB(%r2) - ldo -HPPA_FRAME_SIZE(%sp), %sp - ldd HPPA_FRAME_RP(%sp), %rp - bv %r0(%rp) - copy %r0, %ret0 -EXIT(spcopy) -#endif -')dnl - - .end diff --git a/sys/lib/libkern/arch/hppa64/memcpy.S b/sys/lib/libkern/arch/hppa64/memcpy.S deleted file mode 100644 index c9361568da4..00000000000 --- a/sys/lib/libkern/arch/hppa64/memcpy.S +++ /dev/null @@ -1 +0,0 @@ -/* This code is contained in memmove.S */ diff --git a/sys/lib/libkern/arch/hppa64/memmove.S b/sys/lib/libkern/arch/hppa64/memmove.S deleted file mode 100644 index b34338a26e6..00000000000 --- a/sys/lib/libkern/arch/hppa64/memmove.S +++ /dev/null @@ -1 +0,0 @@ -/* No code here since kernel implements this itself */ diff --git a/sys/lib/libkern/arch/hppa64/milli.S b/sys/lib/libkern/arch/hppa64/milli.S deleted file mode 100644 index f8cceece8c5..00000000000 --- a/sys/lib/libkern/arch/hppa64/milli.S +++ /dev/null @@ -1,1448 +0,0 @@ -; $OpenBSD: milli.S,v 1.1 2005/04/01 10:45:29 mickey Exp $ -; -; (c) Copyright 1986 HEWLETT-PACKARD COMPANY -; -; To anyone who acknowledges that this file is provided "AS IS" -; without any express or implied warranty: -; permission to use, copy, modify, and distribute this file -; for any purpose is hereby granted without fee, provided that -; the above copyright notice and this notice appears in all -; copies, and that the name of Hewlett-Packard Company not be -; used in advertising or publicity pertaining to distribution -; of the software without specific, written prior permission. -; Hewlett-Packard Company makes no representations about the -; suitability of this software for any purpose. -; - - .text - .EXPORT $$remI,millicode -$$remI: - .PROC - .CALLINFO NO_CALLS - .ENTRY - addit,= 0,%arg1,%r0 - add,>= %r0,%arg0,%ret1 - sub %r0,%ret1,%ret1 - sub %r0,%arg1,%r1 - ds %r0,%r1,%r0 - or %r0,%r0,%r1 - add %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - ds %r1,%arg1,%r1 - addc %ret1,%ret1,%ret1 - movb,>=,n %r1,%ret1,remI300 - add,< %arg1,%r0,%r0 - add,tr %r1,%arg1,%ret1 - sub %r1,%arg1,%ret1 -remI300: add,>= %arg0,%r0,%r0 - - bv %r0(%rp) - sub %r0,%ret1,%ret1 - .EXIT - .PROCEND - - .export $$divU,millicode - .import $$divU_3,millicode - .import $$divU_5,millicode - .import $$divU_6,millicode - .import $$divU_7,millicode - .import $$divU_9,millicode - .import $$divU_10,millicode - .import $$divU_12,millicode - .import $$divU_14,millicode - .import $$divU_15,millicode -$$divU: - .proc - .callinfo NO_CALLS -; The subtract is not nullified since it does no harm and can be used -; by the two cases that branch back to "normal". - comib,>= 15,%arg1,special_divisor - sub %r0,%arg1,%r1 ; clear carry, negate the divisor - ds %r0,%r1,%r0 ; set V-bit to 1 -normal: - add %arg0,%arg0,%ret1 ; shift msb bit into carry - ds %r0,%arg1,%r1 ; 1st divide step, if no carry - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 2nd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 3rd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 4th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 5th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 6th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 7th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 8th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 9th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 10th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 11th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 12th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 13th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 14th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 15th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 16th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 17th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 18th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 19th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 20th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 21st divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 22nd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 23rd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 24th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 25th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 26th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 27th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 28th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 29th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 30th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 31st divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 32nd divide step, - bv 0(%rp) - addc %ret1,%ret1,%ret1 ; shift last %ret1 bit into %ret1 -;_____________________________________________________________________________ -; handle the cases where divisor is a small constant or has high bit on -special_divisor: - depd %r0,31,32,%arg1 - - comib,>,n 0,%arg1,big_divisor ; nullify previous instruction - nop - blr %arg1,%r0 - nop -zero_divisor: ; this label is here to provide external visibility - - addit,= 0,%arg1,0 ; trap for zero dvr - nop - bv 0(%rp) ; divisor == 1 - copy %arg0,%ret1 - bv 0(%rp) ; divisor == 2 - extru %arg0,30,31,%ret1 - b,n $$divU_3 ; divisor == 3 - nop - bv 0(%rp) ; divisor == 4 - extru %arg0,29,30,%ret1 - b,n $$divU_5 ; divisor == 5 - nop - b,n $$divU_6 ; divisor == 6 - nop - b,n $$divU_7 ; divisor == 7 - nop - bv 0(%rp) ; divisor == 8 - extru %arg0,28,29,%ret1 - b,n $$divU_9 ; divisor == 9 - nop - b,n $$divU_10 ; divisor == 10 - nop - b normal ; divisor == 11 - ds %r0,%r1,%r0 ; set V-bit to 1 - b,n $$divU_12 ; divisor == 12 - nop - b normal ; divisor == 13 - ds %r0,%r1,%r0 ; set V-bit to 1 - b,n $$divU_14 ; divisor == 14 - nop - b,n $$divU_15 ; divisor == 15 - nop -;_____________________________________________________________________________ -; Handle the case where the high bit is on in the divisor. -; Compute: if( dividend>=divisor) quotient=1; else quotient=0; -; Note: dividend>==divisor iff dividend-divisor does not borrow -; and not borrow iff carry -big_divisor: - sub %arg0,%arg1,%r0 - bv 0(%rp) - addc %r0,%r0,%ret1 - .procend - .end - -;_____________________________________________________________________________ - -$$divide_by_constant: - .PROC - .CALLINFO NO_CALLS - .export $$divide_by_constant,millicode -; Provides a "nice" label for the code covered by the unwind descriptor -; for things like gprof. - -$$divI_2: - .EXPORT $$divI_2,MILLICODE - COMCLR,>= %arg0,0,0 - ADDI 1,%arg0,%arg0 - bv 0(%rp) - EXTRS %arg0,30,31,%ret1 - -$$divI_4: - .EXPORT $$divI_4,MILLICODE - COMCLR,>= %arg0,0,0 - ADDI 3,%arg0,%arg0 - bv 0(%rp) - EXTRS %arg0,29,30,%ret1 - -$$divI_8: - .EXPORT $$divI_8,MILLICODE - COMCLR,>= %arg0,0,0 - ADDI 7,%arg0,%arg0 - bv 0(%rp) - EXTRS %arg0,28,29,%ret1 - -$$divI_16: - .EXPORT $$divI_16,MILLICODE - COMCLR,>= %arg0,0,0 - ADDI 15,%arg0,%arg0 - bv 0(%rp) - EXTRS %arg0,27,28,%ret1 - -$$divI_3: - .EXPORT $$divI_3,MILLICODE - COMB,<,N %arg0,0,$neg3 - - ADDI 1,%arg0,%arg0 - EXTRU %arg0,1,2,%ret1 - SH2ADD %arg0,%arg0,%arg0 - B $pos - ADDC %ret1,0,%ret1 - -$neg3: - SUBI 1,%arg0,%arg0 - EXTRU %arg0,1,2,%ret1 - SH2ADD %arg0,%arg0,%arg0 - B $neg - ADDC %ret1,0,%ret1 - -$$divU_3: - .EXPORT $$divU_3,MILLICODE - ADDI 1,%arg0,%arg0 - ADDC 0,0,%ret1 - SHD %ret1,%arg0,30,%arg1 - SH2ADD %arg0,%arg0,%arg0 - B $pos - ADDC %ret1,%arg1,%ret1 - -$$divI_5: - .EXPORT $$divI_5,MILLICODE - COMB,<,N %arg0,0,$neg5 - ADDI 3,%arg0,%arg1 - SH1ADD %arg0,%arg1,%arg0 - B $pos - ADDC 0,0,%ret1 - -$neg5: - SUB 0,%arg0,%arg0 - ADDI 1,%arg0,%arg0 - SHD 0,%arg0,31,%ret1 - SH1ADD %arg0,%arg0,%arg0 - B $neg - ADDC %ret1,0,%ret1 - -$$divU_5: - .EXPORT $$divU_5,MILLICODE - ADDI 1,%arg0,%arg0 - ADDC 0,0,%ret1 - SHD %ret1,%arg0,31,%arg1 - SH1ADD %arg0,%arg0,%arg0 - B $pos - ADDC %arg1,%ret1,%ret1 - -$$divI_6: - .EXPORT $$divI_6,MILLICODE - COMB,<,N %arg0,0,$neg6 - EXTRU %arg0,30,31,%arg0 - ADDI 5,%arg0,%arg1 - SH2ADD %arg0,%arg1,%arg0 - B $pos - ADDC 0,0,%ret1 - -$neg6: - SUBI 2,%arg0,%arg0 - EXTRU %arg0,30,31,%arg0 - SHD 0,%arg0,30,%ret1 - SH2ADD %arg0,%arg0,%arg0 - B $neg - ADDC %ret1,0,%ret1 - -$$divU_6: - .EXPORT $$divU_6,MILLICODE - EXTRU %arg0,30,31,%arg0 - ADDI 1,%arg0,%arg0 - SHD 0,%arg0,30,%ret1 - SH2ADD %arg0,%arg0,%arg0 - B $pos - ADDC %ret1,0,%ret1 - -$$divU_10: - .EXPORT $$divU_10,MILLICODE - EXTRU %arg0,30,31,%arg0 - ADDI 3,%arg0,%arg1 - SH1ADD %arg0,%arg1,%arg0 - ADDC 0,0,%ret1 -$pos: - SHD %ret1,%arg0,28,%arg1 - SHD %arg0,0,28,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%ret1 -$pos_for_17: - SHD %ret1,%arg0,24,%arg1 - SHD %arg0,0,24,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%ret1 - - SHD %ret1,%arg0,16,%arg1 - SHD %arg0,0,16,%r1 - ADD %arg0,%r1,%arg0 - bv 0(%rp) - ADDC %ret1,%arg1,%ret1 - -$$divI_10: - .EXPORT $$divI_10,MILLICODE - COMB,< %arg0,0,$neg10 - COPY 0,%ret1 - EXTRU %arg0,30,31,%arg0 - ADDIB,TR 1,%arg0,$pos - SH1ADD %arg0,%arg0,%arg0 - -$neg10: - SUBI 2,%arg0,%arg0 - EXTRU %arg0,30,31,%arg0 - SH1ADD %arg0,%arg0,%arg0 -$neg: - SHD %ret1,%arg0,28,%arg1 - SHD %arg0,0,28,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%ret1 -$neg_for_17: - SHD %ret1,%arg0,24,%arg1 - SHD %arg0,0,24,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%ret1 - - SHD %ret1,%arg0,16,%arg1 - SHD %arg0,0,16,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%ret1 - bv 0(%rp) - SUB 0,%ret1,%ret1 - -$$divI_12: - .EXPORT $$divI_12,MILLICODE - COMB,< %arg0,0,$neg12 - COPY 0,%ret1 - EXTRU %arg0,29,30,%arg0 - ADDIB,TR 1,%arg0,$pos - SH2ADD %arg0,%arg0,%arg0 - -$neg12: - SUBI 4,%arg0,%arg0 - EXTRU %arg0,29,30,%arg0 - B $neg - SH2ADD %arg0,%arg0,%arg0 - -$$divU_12: - .EXPORT $$divU_12,MILLICODE - EXTRU %arg0,29,30,%arg0 - ADDI 5,%arg0,%arg1 - SH2ADD %arg0,%arg1,%arg0 - B $pos - ADDC 0,0,%ret1 - -$$divI_15: - .EXPORT $$divI_15,MILLICODE - COMB,< %arg0,0,$neg15 - COPY 0,%ret1 - ADDIB,TR 1,%arg0,$pos+4 - SHD %ret1,%arg0,28,%arg1 - -$neg15: - B $neg - SUBI 1,%arg0,%arg0 - -$$divU_15: - .EXPORT $$divU_15,MILLICODE - ADDI 1,%arg0,%arg0 - B $pos - ADDC 0,0,%ret1 - -$$divI_17: - .EXPORT $$divI_17,MILLICODE - COMB,<,N %arg0,0,$neg17 - ADDI 1,%arg0,%arg0 - SHD 0,%arg0,28,%arg1 - SHD %arg0,0,28,%r1 - SUB %r1,%arg0,%arg0 - B $pos_for_17 - SUBB %arg1,0,%ret1 - -$neg17: - SUBI 1,%arg0,%arg0 - SHD 0,%arg0,28,%arg1 - SHD %arg0,0,28,%r1 - SUB %r1,%arg0,%arg0 - B $neg_for_17 - SUBB %arg1,0,%ret1 - -$$divU_17: - .EXPORT $$divU_17,MILLICODE - ADDI 1,%arg0,%arg0 - ADDC 0,0,%ret1 - SHD %ret1,%arg0,28,%arg1 -$u17: - SHD %arg0,0,28,%r1 - SUB %r1,%arg0,%arg0 - B $pos_for_17 - SUBB %arg1,%ret1,%ret1 - -$$divI_7: - .EXPORT $$divI_7,MILLICODE - COMB,<,N %arg0,0,$neg7 -$7: - ADDI 1,%arg0,%arg0 - SHD 0,%arg0,29,%ret1 - SH3ADD %arg0,%arg0,%arg0 - ADDC %ret1,0,%ret1 -$pos7: - SHD %ret1,%arg0,26,%arg1 - SHD %arg0,0,26,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%ret1 - - SHD %ret1,%arg0,20,%arg1 - SHD %arg0,0,20,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%arg1 - - COPY 0,%ret1 - SHD,= %arg1,%arg0,24,%arg1 -$1: - ADDB,TR %arg1,%ret1,$2 - EXTRU %arg0,31,24,%arg0 - - bv,n 0(%rp) - -$2: - ADDB,TR %arg1,%arg0,$1 - EXTRU,= %arg0,7,8,%arg1 - -$neg7: - SUBI 1,%arg0,%arg0 -$8: - SHD 0,%arg0,29,%ret1 - SH3ADD %arg0,%arg0,%arg0 - ADDC %ret1,0,%ret1 - -$neg7_shift: - SHD %ret1,%arg0,26,%arg1 - SHD %arg0,0,26,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%ret1 - - SHD %ret1,%arg0,20,%arg1 - SHD %arg0,0,20,%r1 - ADD %arg0,%r1,%arg0 - ADDC %ret1,%arg1,%arg1 - - COPY 0,%ret1 - SHD,= %arg1,%arg0,24,%arg1 -$3: - ADDB,TR %arg1,%ret1,$4 - EXTRU %arg0,31,24,%arg0 - - bv 0(%rp) - SUB 0,%ret1,%ret1 - -$4: - ADDB,TR %arg1,%arg0,$3 - EXTRU,= %arg0,7,8,%arg1 - -$$divU_7: - .EXPORT $$divU_7,MILLICODE - ADDI 1,%arg0,%arg0 - ADDC 0,0,%ret1 - SHD %ret1,%arg0,29,%arg1 - SH3ADD %arg0,%arg0,%arg0 - B $pos7 - ADDC %arg1,%ret1,%ret1 - -$$divI_9: - .EXPORT $$divI_9,MILLICODE - COMB,<,N %arg0,0,$neg9 - ADDI 1,%arg0,%arg0 - SHD 0,%arg0,29,%arg1 - SHD %arg0,0,29,%r1 - SUB %r1,%arg0,%arg0 - B $pos7 - SUBB %arg1,0,%ret1 - -$neg9: - SUBI 1,%arg0,%arg0 - SHD 0,%arg0,29,%arg1 - SHD %arg0,0,29,%r1 - SUB %r1,%arg0,%arg0 - B $neg7_shift - SUBB %arg1,0,%ret1 - -$$divU_9: - .EXPORT $$divU_9,MILLICODE - ADDI 1,%arg0,%arg0 - ADDC 0,0,%ret1 - SHD %ret1,%arg0,29,%arg1 - SHD %arg0,0,29,%r1 - SUB %r1,%arg0,%arg0 - B $pos7 - SUBB %arg1,%ret1,%ret1 - -$$divI_14: - .EXPORT $$divI_14,MILLICODE - COMB,<,N %arg0,0,$neg14 -$$divU_14: - .EXPORT $$divU_14,MILLICODE - B $7 - EXTRU %arg0,30,31,%arg0 - -$neg14: - SUBI 2,%arg0,%arg0 - B $8 - EXTRU %arg0,30,31,%arg0 - - .PROCEND - .END - - .export $$remU,millicode -$$remU: - .proc - .callinfo NO_CALLS - .entry - - comib,>=,n 0,%arg1,special_case - sub %r0,%arg1,%ret1 ; clear carry, negate the divisor - ds %r0,%ret1,%r0 ; set V-bit to 1 - add %arg0,%arg0,%r1 ; shift msb bit into carry - ds %r0,%arg1,%ret1 ; 1st divide step, if no carry - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 2nd divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 3rd divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 4th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 5th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 6th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 7th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 8th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 9th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 10th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 11th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 12th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 13th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 14th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 15th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 16th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 17th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 18th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 19th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 20th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 21st divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 22nd divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 23rd divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 24th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 25th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 26th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 27th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 28th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 29th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 30th divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 31st divide step - addc %r1,%r1,%r1 ; shift %r1 with/into carry - ds %ret1,%arg1,%ret1 ; 32nd divide step, - comiclr,<= 0,%ret1,%r0 - add %ret1,%arg1,%ret1 ; correction -; .exit - bv,n 0(%rp) - nop -; Putting >= on the last DS and deleting COMICLR does not work! -;_____________________________________________________________________________ -special_case: - addit,= 0,%arg1,%r0 ; trap on div by zero - sub,>>= %arg0,%arg1,%ret1 - copy %arg0,%ret1 - .exit - bv,n 0(%rp) - nop - .procend - .end - - .align 16 -$$mulI: - - .proc - .callinfo NO_CALLS - .export $$mulI, millicode - combt,<<= %arg1,%arg0,l4 ; swap args if unsigned %arg1>%arg0 - copy 0,%ret1 ; zero out the result - xor %arg0,%arg1,%arg0 ; swap %arg0 & %arg1 using the - xor %arg0,%arg1,%arg1 ; old xor trick - xor %arg0,%arg1,%arg0 -l4: combt,<= 0,%arg0,l3 ; if %arg0>=0 then proceed like unsigned - - zdep %arg1,30,8,%r1 ; %r1 = (%arg1&0xff)<<1 ********* - sub,> 0,%arg1,%r1 ; otherwise negate both and - combt,<=,n %arg0,%r1,l2 ; swap back if |%arg0|<|%arg1| - sub 0,%arg0,%arg1 - movb,tr,n %r1,%arg0,l2 ; 10th inst. - -l0: add %ret1,%r1,%ret1 ; add in this partial product - -l1: zdep %arg0,23,24,%arg0 ; %arg0 <<= 8 ****************** - -l2: zdep %arg1,30,8,%r1 ; %r1 = (%arg1&0xff)<<1 ********* - -l3: blr %r1,0 ; case on these 8 bits ****** - - extru %arg1,23,24,%arg1 ; %arg1 >>= 8 ****************** - -;16 insts before this. -; %arg0 <<= 8 ************************** -x0: comb,<> %arg1,0,l2 ! zdep %arg0,23,24,%arg0 ! bv,n 0(%rp) ! nop - -x1: comb,<> %arg1,0,l1 ! add %ret1,%arg0,%ret1 ! bv,n 0(%rp) ! nop - -x2: comb,<> %arg1,0,l1 ! sh1add %arg0,%ret1,%ret1 ! bv,n 0(%rp) ! nop - -x3: comb,<> %arg1,0,l0 ! sh1add %arg0,%arg0,%r1 ! bv 0(%rp) ! add %ret1,%r1,%ret1 - -x4: comb,<> %arg1,0,l1 ! sh2add %arg0,%ret1,%ret1 ! bv,n 0(%rp) ! nop - -x5: comb,<> %arg1,0,l0 ! sh2add %arg0,%arg0,%r1 ! bv 0(%rp) ! add %ret1,%r1,%ret1 - -x6: sh1add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh1add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x7: sh1add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh2add %arg0,%ret1,%ret1 ! b,n ret_t0 - -x8: comb,<> %arg1,0,l1 ! sh3add %arg0,%ret1,%ret1 ! bv,n 0(%rp) ! nop - -x9: comb,<> %arg1,0,l0 ! sh3add %arg0,%arg0,%r1 ! bv 0(%rp) ! add %ret1,%r1,%ret1 - -x10: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh1add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x11: sh1add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh3add %arg0,%ret1,%ret1 ! b,n ret_t0 - -x12: sh1add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh2add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x13: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh3add %arg0,%ret1,%ret1 ! b,n ret_t0 - -x14: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x15: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh1add %r1,%r1,%r1 ! b,n ret_t0 - -x16: zdep %arg0,27,28,%r1 ! comb,<> %arg1,0,l1 ! add %ret1,%r1,%ret1 ! bv,n 0(%rp) - -x17: sh3add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh3add %arg0,%r1,%r1 ! b,n ret_t0 - -x18: sh3add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh1add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x19: sh3add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh1add %r1,%arg0,%r1 ! b,n ret_t0 - -x20: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh2add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x21: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh2add %r1,%arg0,%r1 ! b,n ret_t0 - -x22: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x23: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x24: sh1add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh3add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x25: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh2add %r1,%r1,%r1 ! b,n ret_t0 - -x26: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x27: sh1add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh3add %r1,%r1,%r1 ! b,n ret_t0 - -x28: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x29: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x30: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x31: zdep %arg0,26,27,%r1 ! comb,<> %arg1,0,l0 ! sub %r1,%arg0,%r1 ! b,n ret_t0 - -x32: zdep %arg0,26,27,%r1 ! comb,<> %arg1,0,l1 ! add %ret1,%r1,%ret1 ! bv,n 0(%rp) - -x33: sh3add %arg0,0,%r1 ! comb,<> %arg1,0,l0 ! sh2add %r1,%arg0,%r1 ! b,n ret_t0 - -x34: zdep %arg0,27,28,%r1 ! add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x35: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh3add %arg0,%r1,%r1 - -x36: sh3add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh2add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x37: sh3add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh2add %r1,%arg0,%r1 ! b,n ret_t0 - -x38: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x39: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x40: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh3add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x41: sh2add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh3add %r1,%arg0,%r1 ! b,n ret_t0 - -x42: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x43: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x44: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x45: sh3add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! sh2add %r1,%r1,%r1 ! b,n ret_t0 - -x46: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! add %r1,%arg0,%r1 - -x47: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh1add %arg0,%r1,%r1 - -x48: sh1add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l0 ! zdep %r1,27,28,%r1 ! b,n ret_t0 - -x49: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh2add %arg0,%r1,%r1 - -x50: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x51: sh3add %arg0,%arg0,%r1 ! sh3add %arg0,%r1,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x52: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x53: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x54: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x55: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x56: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x57: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x58: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x59: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t02a0 ! sh1add %r1,%r1,%r1 - -x60: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x61: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x62: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x63: zdep %arg0,25,26,%r1 ! comb,<> %arg1,0,l0 ! sub %r1,%arg0,%r1 ! b,n ret_t0 - -x64: zdep %arg0,25,26,%r1 ! comb,<> %arg1,0,l1 ! add %ret1,%r1,%ret1 ! bv,n 0(%rp) - -x65: sh3add %arg0,0,%r1 ! comb,<> %arg1,0,l0 ! sh3add %r1,%arg0,%r1 ! b,n ret_t0 - -x66: zdep %arg0,26,27,%r1 ! add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x67: sh3add %arg0,0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x68: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x69: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x70: zdep %arg0,25,26,%r1 ! sh2add %arg0,%r1,%r1 ! b e_t0 ! sh1add %arg0,%r1,%r1 - -x71: sh3add %arg0,%arg0,%r1 ! sh3add %r1,0,%r1 ! b e_t0 ! sub %r1,%arg0,%r1 - -x72: sh3add %arg0,%arg0,%r1 ! comb,<> %arg1,0,l1 ! sh3add %r1,%ret1,%ret1 ! bv,n 0(%rp) - -x73: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_shift ! add %ret1,%r1,%ret1 - -x74: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x75: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x76: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x77: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x78: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%arg0,%r1 - -x79: zdep %arg0,27,28,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sub %r1,%arg0,%r1 - -x80: zdep %arg0,27,28,%r1 ! sh2add %r1,%r1,%r1 ! b e_shift ! add %ret1,%r1,%ret1 - -x81: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_shift ! add %ret1,%r1,%ret1 - -x82: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x83: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x84: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x85: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x86: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%arg0,%r1 - -x87: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_t02a0 ! sh2add %arg0,%r1,%r1 - -x88: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x89: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x90: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x91: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x92: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0 ! sh1add %r1,%arg0,%r1 - -x93: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x94: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0 ! sh1add %arg0,%r1,%r1 - -x95: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x96: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x97: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x98: zdep %arg0,26,27,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh1add %arg0,%r1,%r1 - -x99: sh3add %arg0,0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x100: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x101: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x102: zdep %arg0,26,27,%r1 ! sh1add %arg0,%r1,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x103: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t02a0 ! sh2add %r1,%arg0,%r1 - -x104: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x105: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x106: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x107: sh3add %arg0,%arg0,%r1 ! sh2add %arg0,%r1,%r1 ! b e_t02a0 ! sh3add %r1,%arg0,%r1 - -x108: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x109: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x110: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_2t0 ! sh1add %r1,%arg0,%r1 - -x111: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x112: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! zdep %r1,27,28,%r1 - -x113: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t02a0 ! sh1add %r1,%r1,%r1 - -x114: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%r1,%r1 - -x115: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0a0 ! sh1add %r1,%r1,%r1 - -x116: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0 ! sh2add %r1,%arg0,%r1 - -x117: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%r1,%r1 - -x118: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0a0 ! sh3add %r1,%r1,%r1 - -x119: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t02a0 ! sh3add %r1,%r1,%r1 - -x120: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x121: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x122: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x123: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x124: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x125: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x126: zdep %arg0,25,26,%r1 ! sub %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x127: zdep %arg0,24,25,%r1 ! comb,<> %arg1,0,l0 ! sub %r1,%arg0,%r1 ! b,n ret_t0 - -x128: zdep %arg0,24,25,%r1 ! comb,<> %arg1,0,l1 ! add %ret1,%r1,%ret1 ! bv,n 0(%rp) - -x129: zdep %arg0,24,25,%r1 ! comb,<> %arg1,0,l0 ! add %r1,%arg0,%r1 ! b,n ret_t0 - -x130: zdep %arg0,25,26,%r1 ! add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x131: sh3add %arg0,0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x132: sh3add %arg0,0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x133: sh3add %arg0,0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x134: sh3add %arg0,0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%arg0,%r1 - -x135: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x136: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x137: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x138: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x139: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0a0 ! sh2add %r1,%arg0,%r1 - -x140: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0 ! sh2add %r1,%r1,%r1 - -x141: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0a0 ! sh1add %r1,%arg0,%r1 - -x142: sh3add %arg0,%arg0,%r1 ! sh3add %r1,0,%r1 ! b e_2t0 ! sub %r1,%arg0,%r1 - -x143: zdep %arg0,27,28,%r1 ! sh3add %r1,%r1,%r1 ! b e_t0 ! sub %r1,%arg0,%r1 - -x144: sh3add %arg0,%arg0,%r1 ! sh3add %r1,0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x145: sh3add %arg0,%arg0,%r1 ! sh3add %r1,0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x146: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x147: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x148: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x149: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x150: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%arg0,%r1 - -x151: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0a0 ! sh1add %r1,%arg0,%r1 - -x152: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x153: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x154: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x155: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x156: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0 ! sh1add %r1,%arg0,%r1 - -x157: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_t02a0 ! sh2add %r1,%r1,%r1 - -x158: zdep %arg0,27,28,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0 ! sub %r1,%arg0,%r1 - -x159: zdep %arg0,26,27,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sub %r1,%arg0,%r1 - -x160: sh2add %arg0,%arg0,%r1 ! sh2add %r1,0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x161: sh3add %arg0,0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x162: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x163: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_t0 ! sh1add %r1,%arg0,%r1 - -x164: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x165: sh3add %arg0,0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x166: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%arg0,%r1 - -x167: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_2t0a0 ! sh1add %r1,%arg0,%r1 - -x168: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x169: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x170: zdep %arg0,26,27,%r1 ! sh1add %arg0,%r1,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x171: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%r1,%r1 - -x172: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_4t0 ! sh1add %r1,%arg0,%r1 - -x173: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t02a0 ! sh3add %r1,%r1,%r1 - -x174: zdep %arg0,26,27,%r1 ! sh1add %arg0,%r1,%r1 ! b e_t04a0 ! sh2add %r1,%r1,%r1 - -x175: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_5t0 ! sh1add %r1,%arg0,%r1 - -x176: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_8t0 ! add %r1,%arg0,%r1 - -x177: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_8t0a0 ! add %r1,%arg0,%r1 - -x178: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0 ! sh3add %r1,%arg0,%r1 - -x179: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0a0 ! sh3add %r1,%arg0,%r1 - -x180: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x181: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x182: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0 ! sh1add %r1,%arg0,%r1 - -x183: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0a0 ! sh1add %r1,%arg0,%r1 - -x184: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_4t0 ! add %r1,%arg0,%r1 - -x185: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x186: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%r1,%r1 - -x187: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t02a0 ! sh2add %r1,%r1,%r1 - -x188: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_4t0 ! sh1add %arg0,%r1,%r1 - -x189: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%r1,%r1 - -x190: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_2t0 ! sh2add %r1,%r1,%r1 - -x191: zdep %arg0,25,26,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sub %r1,%arg0,%r1 - -x192: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x193: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x194: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x195: sh3add %arg0,0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x196: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_4t0 ! sh1add %r1,%arg0,%r1 - -x197: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_4t0a0 ! sh1add %r1,%arg0,%r1 - -x198: zdep %arg0,25,26,%r1 ! sh1add %arg0,%r1,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x199: sh3add %arg0,0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0a0 ! sh1add %r1,%r1,%r1 - -x200: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x201: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x202: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x203: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0a0 ! sh2add %r1,%arg0,%r1 - -x204: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0 ! sh1add %r1,%r1,%r1 - -x205: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x206: zdep %arg0,25,26,%r1 ! sh2add %arg0,%r1,%r1 ! b e_t02a0 ! sh1add %r1,%r1,%r1 - -x207: sh3add %arg0,0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_3t0 ! sh2add %r1,%arg0,%r1 - -x208: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_8t0 ! add %r1,%arg0,%r1 - -x209: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_8t0a0 ! add %r1,%arg0,%r1 - -x210: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0 ! sh2add %r1,%r1,%r1 - -x211: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0a0 ! sh2add %r1,%r1,%r1 - -x212: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_4t0 ! sh2add %r1,%arg0,%r1 - -x213: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_4t0a0 ! sh2add %r1,%arg0,%r1 - -x214: sh3add %arg0,%arg0,%r1 ! sh2add %arg0,%r1,%r1 ! b e2t04a0 ! sh3add %r1,%arg0,%r1 - -x215: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_5t0 ! sh1add %r1,%arg0,%r1 - -x216: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x217: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x218: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_2t0 ! sh2add %r1,%arg0,%r1 - -x219: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x220: sh1add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_4t0 ! sh1add %r1,%arg0,%r1 - -x221: sh1add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_4t0a0 ! sh1add %r1,%arg0,%r1 - -x222: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%r1,%r1 - -x223: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0a0 ! sh1add %r1,%r1,%r1 - -x224: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_8t0 ! add %r1,%arg0,%r1 - -x225: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0 ! sh2add %r1,%r1,%r1 - -x226: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_t02a0 ! zdep %r1,26,27,%r1 - -x227: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_t02a0 ! sh2add %r1,%r1,%r1 - -x228: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0 ! sh1add %r1,%r1,%r1 - -x229: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_4t0a0 ! sh1add %r1,%r1,%r1 - -x230: sh3add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_5t0 ! add %r1,%arg0,%r1 - -x231: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_3t0 ! sh2add %r1,%arg0,%r1 - -x232: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_8t0 ! sh2add %r1,%arg0,%r1 - -x233: sh1add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e_8t0a0 ! sh2add %r1,%arg0,%r1 - -x234: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0 ! sh3add %r1,%r1,%r1 - -x235: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e_2t0a0 ! sh3add %r1,%r1,%r1 - -x236: sh3add %arg0,%arg0,%r1 ! sh1add %r1,%arg0,%r1 ! b e4t08a0 ! sh1add %r1,%r1,%r1 - -x237: zdep %arg0,27,28,%r1 ! sh2add %r1,%r1,%r1 ! b e_3t0 ! sub %r1,%arg0,%r1 - -x238: sh1add %arg0,%arg0,%r1 ! sh2add %r1,%arg0,%r1 ! b e2t04a0 ! sh3add %r1,%r1,%r1 - -x239: zdep %arg0,27,28,%r1 ! sh2add %r1,%r1,%r1 ! b e_t0ma0 ! sh1add %r1,%r1,%r1 - -x240: sh3add %arg0,%arg0,%r1 ! add %r1,%arg0,%r1 ! b e_8t0 ! sh1add %r1,%r1,%r1 - -x241: sh3add %arg0,%arg0,%r1 ! add %r1,%arg0,%r1 ! b e_8t0a0 ! sh1add %r1,%r1,%r1 - -x242: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_2t0 ! sh3add %r1,%arg0,%r1 - -x243: sh3add %arg0,%arg0,%r1 ! sh3add %r1,%r1,%r1 ! b e_t0 ! sh1add %r1,%r1,%r1 - -x244: sh2add %arg0,%arg0,%r1 ! sh1add %r1,%r1,%r1 ! b e_4t0 ! sh2add %r1,%arg0,%r1 - -x245: sh3add %arg0,0,%r1 ! sh1add %r1,%r1,%r1 ! b e_5t0 ! sh1add %r1,%arg0,%r1 - -x246: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_2t0 ! sh1add %r1,%r1,%r1 - -x247: sh2add %arg0,%arg0,%r1 ! sh3add %r1,%arg0,%r1 ! b e_2t0a0 ! sh1add %r1,%r1,%r1 - -x248: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_shift ! sh3add %r1,%ret1,%ret1 - -x249: zdep %arg0,26,27,%r1 ! sub %r1,%arg0,%r1 ! b e_t0 ! sh3add %r1,%arg0,%r1 - -x250: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0 ! sh2add %r1,%r1,%r1 - -x251: sh2add %arg0,%arg0,%r1 ! sh2add %r1,%r1,%r1 ! b e_2t0a0 ! sh2add %r1,%r1,%r1 - -x252: zdep %arg0,25,26,%r1 ! sub %r1,%arg0,%r1 ! b e_shift ! sh2add %r1,%ret1,%ret1 - -x253: zdep %arg0,25,26,%r1 ! sub %r1,%arg0,%r1 ! b e_t0 ! sh2add %r1,%arg0,%r1 - -x254: zdep %arg0,24,25,%r1 ! sub %r1,%arg0,%r1 ! b e_shift ! sh1add %r1,%ret1,%ret1 - -x255: zdep %arg0,23,24,%r1 ! comb,<> %arg1,0,l0 ! sub %r1,%arg0,%r1 ! b,n ret_t0 - -;1040 insts before this. -ret_t0: bv 0(%rp) - -e_t0: add %ret1,%r1,%ret1 - -e_shift: comb,<> %arg1,0,l2 - - zdep %arg0,23,24,%arg0 ; %arg0 <<= 8 *********** - bv,n 0(%rp) -e_t0ma0: comb,<> %arg1,0,l0 - - sub %r1,%arg0,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e_t0a0: comb,<> %arg1,0,l0 - - add %r1,%arg0,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e_t02a0: comb,<> %arg1,0,l0 - - sh1add %arg0,%r1,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e_t04a0: comb,<> %arg1,0,l0 - - sh2add %arg0,%r1,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e_2t0: comb,<> %arg1,0,l1 - - sh1add %r1,%ret1,%ret1 - bv,n 0(%rp) -e_2t0a0: comb,<> %arg1,0,l0 - - sh1add %r1,%arg0,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e2t04a0: sh1add %arg0,%r1,%r1 - - comb,<> %arg1,0,l1 - sh1add %r1,%ret1,%ret1 - bv,n 0(%rp) -e_3t0: comb,<> %arg1,0,l0 - - sh1add %r1,%r1,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e_4t0: comb,<> %arg1,0,l1 - - sh2add %r1,%ret1,%ret1 - bv,n 0(%rp) -e_4t0a0: comb,<> %arg1,0,l0 - - sh2add %r1,%arg0,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e4t08a0: sh1add %arg0,%r1,%r1 - - comb,<> %arg1,0,l1 - sh2add %r1,%ret1,%ret1 - bv,n 0(%rp) -e_5t0: comb,<> %arg1,0,l0 - - sh2add %r1,%r1,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 -e_8t0: comb,<> %arg1,0,l1 - - sh3add %r1,%ret1,%ret1 - bv,n 0(%rp) -e_8t0a0: comb,<> %arg1,0,l0 - - sh3add %r1,%arg0,%r1 - bv 0(%rp) - add %ret1,%r1,%ret1 - - .procend - .end - - .import $$divI_2,millicode - .import $$divI_3,millicode - .import $$divI_4,millicode - .import $$divI_5,millicode - .import $$divI_6,millicode - .import $$divI_7,millicode - .import $$divI_8,millicode - .import $$divI_9,millicode - .import $$divI_10,millicode - .import $$divI_12,millicode - .import $$divI_14,millicode - .import $$divI_15,millicode - .export $$divI,millicode - .export $$divoI,millicode -$$divoI: - .proc - .callinfo NO_CALLS - comib,=,n -1,%arg1,negative1 ; when divisor == -1 -$$divI: - comib,>>=,n 15,%arg1,small_divisor - add,>= 0,%arg0,%ret1 ; move dividend, if %ret1 < 0, -normal1: - sub 0,%ret1,%ret1 ; make it positive - sub 0,%arg1,%r1 ; clear carry, - ; negate the divisor - ds 0,%r1,0 ; set V-bit to the comple- - ; ment of the divisor sign - add %ret1,%ret1,%ret1 ; shift msb bit into carry - ds %r0,%arg1,%r1 ; 1st divide step, if no carry - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 2nd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 3rd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 4th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 5th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 6th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 7th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 8th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 9th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 10th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 11th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 12th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 13th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 14th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 15th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 16th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 17th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 18th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 19th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 20th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 21st divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 22nd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 23rd divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 24th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 25th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 26th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 27th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 28th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 29th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 30th divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 31st divide step - addc %ret1,%ret1,%ret1 ; shift %ret1 with/into carry - ds %r1,%arg1,%r1 ; 32nd divide step, - addc %ret1,%ret1,%ret1 ; shift last %ret1 bit into %ret1 - xor,>= %arg0,%arg1,0 ; get correct sign of quotient - sub 0,%ret1,%ret1 ; based on operand signs - bv,n 0(%rp) - nop -;______________________________________________________________________ -small_divisor: - depd %r0,31,32,%arg1 - blr,n %arg1,%r0 - nop -; table for divisor == 0,1, ... ,15 - addit,= 0,%arg1,%r0 ; trap if divisor == 0 - nop - bv %r0(%rp) ; divisor == 1 - copy %arg0,%ret1 - b,n $$divI_2 ; divisor == 2 - nop - b,n $$divI_3 ; divisor == 3 - nop - b,n $$divI_4 ; divisor == 4 - nop - b,n $$divI_5 ; divisor == 5 - nop - b,n $$divI_6 ; divisor == 6 - nop - b,n $$divI_7 ; divisor == 7 - nop - b,n $$divI_8 ; divisor == 8 - nop - b,n $$divI_9 ; divisor == 9 - nop - b,n $$divI_10 ; divisor == 10 - nop - b normal1 ; divisor == 11 - add,>= 0,%arg0,%ret1 - b,n $$divI_12 ; divisor == 12 - nop - b normal1 ; divisor == 13 - add,>= 0,%arg0,%ret1 - b,n $$divI_14 ; divisor == 14 - nop - b,n $$divI_15 ; divisor == 15 - nop -;______________________________________________________________________ -negative1: - sub %r0,%arg0,%ret1 ; result is negation of dividend - bv 0(%rp) - addo %arg0,%arg1,%r0 ; trap iff dividend==0x80000000 && divisor==-1 - .procend - .end diff --git a/sys/lib/libkern/arch/hppa64/spcopy.S b/sys/lib/libkern/arch/hppa64/spcopy.S deleted file mode 100644 index 9b3ecb9acbc..00000000000 --- a/sys/lib/libkern/arch/hppa64/spcopy.S +++ /dev/null @@ -1,167 +0,0 @@ -/* This is a generated file. DO NOT EDIT. */ -/* - * Generated from: - * - * OpenBSD: bcopy.m4 - */ -/* - * Copyright (c) 1999,2004 Michael Shalayeff - * All rights reserved. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - - -#undef _LOCORE -#define _LOCORE -#include <machine/asm.h> -#include <machine/frame.h> - - -#ifdef _KERNEL -#include <assym.h> - -/* - * int spcopy (pa_space_t ssp, const void *src, pa_space_t dsp, void *dst, - * size_t size) - * do a space to space bcopy. - * - * assumes that spaces do not clash, otherwise we lose - */ - .import copy_on_fault, code -LEAF_ENTRY(spcopy) - sub,*<> %r0, arg4, %r0 - bv %r0(%rp) - nop - - std %rp, HPPA_FRAME_RP(%sp) - ldo HPPA_FRAME_SIZE(%sp), %sp - /* setup fault handler */ - mfctl %cr24, %r1 - ldd CI_CURPROC(%r1), %r1 - ldil L%copy_on_fault, %r21 - ldd P_ADDR(%r1), %r2 - ldo R%copy_on_fault(%r21), %r21 - ldd PCB_ONFAULT+U_PCB(%r2), %r1 - std %r21, PCB_ONFAULT+U_PCB(%r2) - - mtsp %arg0, %sr1 - mtsp %arg2, %sr2 - - copy arg4, %ret0 - - cmpib,*>=,n 15, %ret0, $spcopy.byte - - extrd,u %arg1, 63, 2, %r20 - extrd,u %arg3, 63, 2, %r19 - add %ret0, %r19, %ret0 - cmpb,*<> %r20, %r19, $spcopy.unaligned - depd %r0, 63, 2, %arg1 - - addi -16, %ret0, %ret0 -$spcopy.loop16a - ldw 32(%sr1, %arg1), %r0 - ldw,ma 4(%sr1, %arg1), %r22 - ldw,ma 4(%sr1, %arg1), %r21 - ldw,ma 4(%sr1, %arg1), %r20 - ldw,ma 4(%sr1, %arg1), %r19 - stby,b,m %r22, 4(%sr2, %arg3) - stw,ma %r21, 4(%sr2, %arg3) - stw,ma %r20, 4(%sr2, %arg3) - addib,*>= -16, %ret0, $spcopy.loop16a - stw,ma %r19, 4(%sr2, %arg3) - - addib,*<,n 12, %ret0, $spcopy.cleanup -$spcopy.word - ldw,ma 4(%sr1, %arg1), %r22 - addib,*>= -4, %ret0, $spcopy.word - stw,ma %r22, 4(%sr2, %arg3) - -$spcopy.cleanup - addib,*=,n 4, %ret0, $spcopy.done - ldw 0(%sr1, %arg1), %r22 - add %arg3, %ret0, %arg3 - b $spcopy.done - stby,e %r22, 0(%sr2, %arg3) - -$spcopy.unaligned - sub,*>= %r19, %r20, %r21 - ldw,ma 4(%sr1, %arg1), %ret1 - depd,z %r21, 60, 61, %r22 - mtsar %r22 - - addi -16, %ret0, %ret0 -$spcopy.loop16u - ldw 32(%sr1, %arg1), %r0 - ldw,ma 4(%sr1, %arg1), %r22 - ldw,ma 4(%sr1, %arg1), %r21 - ldw,ma 4(%sr1, %arg1), %r20 - ldw,ma 4(%sr1, %arg1), %r19 - shrpw %ret1, %r22, %sar, %r31 - stby,b,m %r31, 4(%sr2, %arg3) - shrpw %r22, %r21, %sar, %r31 - stw,ma %r31, 4(%sr2, %arg3) - shrpw %r21, %r20, %sar, %r31 - stw,ma %r31, 4(%sr2, %arg3) - shrpw %r20, %r19, %sar, %r31 - stw,ma %r31, 4(%sr2, %arg3) - addib,*>= -16, %ret0, $spcopy.loop16u - copy %r19, %ret1 - - addib,*<,n 12, %ret0, $spcopy.cleanup_un -$spcopy.word_un - ldw,ma 4(%sr1, %arg1), %r22 - shrpw %ret1, %r22, %sar, %r21 - addib,*< -4, %ret0, $spcopy.cleanup1_un - stw,ma %r21, 4(%sr2, %arg3) - ldw,ma 4(%sr1, %arg1), %ret1 - shrpw %r22, %ret1, %sar, %r21 - addib,*>= -4, %ret0, $spcopy.word_un - stw,ma %r21, 4(%sr2, %arg3) - -$spcopy.cleanup_un - addib,*<=,n 4, %ret0, $spcopy.done - mfctl %sar, %r19 - add %arg3, %ret0, %arg3 - extrd,u %r19, 60, 2, %r19 - sub,*<= %ret0, %r19, %r0 - ldw,ma 4(%sr1, %arg1), %r22 - shrpw %ret1, %r22, %sar, %r21 - b $spcopy.done - stby,e %r21, 0(%sr2, %arg3) - -$spcopy.cleanup1_un - b $spcopy.cleanup_un - copy %r22, %ret1 - -$spcopy.byte - cmpb,*>=,n %r0, %ret0, $spcopy.done -$spcopy.byte_loop - ldbs,ma 1(%sr1, %arg1), %r22 - addib,*<> -1, %ret0, $spcopy.byte_loop - stbs,ma %r22, 1(%sr2, %arg3) -$spcopy.done - - - mtsp %r0, %sr1 - mtsp %r0, %sr2 - /* reset fault handler */ - std %r1, PCB_ONFAULT+U_PCB(%r2) - ldo -HPPA_FRAME_SIZE(%sp), %sp - ldd HPPA_FRAME_RP(%sp), %rp - bv %r0(%rp) - copy %r0, %ret0 -EXIT(spcopy) -#endif - - .end |