1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-15 15:57:13 +00:00
Interlisp.maiko/src/bbtSPARC.s
Nick Briggs 6528ac38e3 Remove proprietary license from all files.
The code is being re-licensed under the MIT license.

	modified:   bin/fixid
	modified:   bin/launch.asm
	modified:   bin/makefile-hpux.hp9000-x
	modified:   bin/makefile-init.sgi
	modified:   bin/makefile-init.sparc
	modified:   bin/makefile-init.sparc-multi
	modified:   bin/makefile-irix.sgi-x
	modified:   bin/makefile-sunos4.sparc
	modified:   bin/makefile-sunos4.sparc%
	modified:   bin/makefile-sunos4.sparc-multi
	modified:   bin/makefile-sunos5.386-x
	modified:   bin/makefile-sunos5.i386-x
	modified:   bin/makefile-sunos5.sparc-x
	modified:   bin/makefile-tail
	modified:   bin/makeisc
	modified:   bin/makeright
	modified:   inc/Check.h
	modified:   inc/MyWindow.h
	modified:   inc/Stipple.h
	modified:   inc/XCursors.h
	modified:   inc/XKeymap.h
	modified:   inc/XVersion.h
	modified:   inc/Xdeflt.h
	modified:   inc/Xicon.h
	modified:   inc/address.h
	modified:   inc/arith.h
	modified:   inc/arith2.h
	modified:   inc/array.h
	modified:   inc/bb.h
	modified:   inc/cell.h
	modified:   inc/cell.h%
	modified:   inc/copyright
	modified:   inc/dbprint.h
	modified:   inc/debug.h
	modified:   inc/devif.h
	modified:   inc/display.h
	modified:   inc/dspdata.h
	modified:   inc/ether.h
	modified:   inc/fast_dsp.h
	modified:   inc/fp.h
	modified:   inc/gc.h
	modified:   inc/gc.h.save
	modified:   inc/gcscan.h
	modified:   inc/hdw_conf.h
	modified:   inc/ifpage.h
	modified:   inc/inlineC.h
	modified:   inc/inlnMIPS.h
	modified:   inc/inlnPS2.h
	modified:   inc/inlndos.h
	modified:   inc/iopage.h
	modified:   inc/kbdif.h
	modified:   inc/keyboard.h
	modified:   inc/keyboard.h%
	modified:   inc/keysym.h
	modified:   inc/ldeXdefs.h
	modified:   inc/lispemul.h
	modified:   inc/lispemul.h.save
	modified:   inc/lispmap.h
	modified:   inc/lldsp.h
	modified:   inc/lnk-Xdeflt.h
	modified:   inc/lnk-debug.h
	modified:   inc/lnk-fast_dsp.h
	modified:   inc/lnk-inlineC.h
	modified:   inc/lnk-lispmap.h
	modified:   inc/lnk-tosfns.h
	modified:   inc/lnk-tosret.h
	modified:   inc/locfile.h
	modified:   inc/lpdefs.h
	modified:   inc/lpglobl.h
	modified:   inc/lspglob.h
	modified:   inc/lsptypes.h
	modified:   inc/medleyfp.h
	modified:   inc/mnxdefs.h
	modified:   inc/my.h
	modified:   inc/native.h
	modified:   inc/ocr.h
	modified:   inc/osmsg.h
	modified:   inc/picture.h
	modified:   inc/pilotbbt.h
	modified:   inc/print.h
	modified:   inc/profile.h
	modified:   inc/rawrs232c.h
	modified:   inc/return.h
	modified:   inc/rs232c.h
	modified:   inc/stack.h
	modified:   inc/stream.h
	modified:   inc/stream.h%
	modified:   inc/stream.h2
	modified:   inc/sysatms.h
	modified:   inc/timeout.h
	modified:   inc/tos1defs.h
	modified:   inc/tosfns.h
	modified:   inc/tosret.h
	modified:   inc/tty.h
	modified:   inc/version.h
	modified:   inc/vmemsave.h
	modified:   inc/xbitmaps.h
	modified:   inc/xdefs.h
	modified:   src/Cldeetr.c
	modified:   src/allocmds.c
	modified:   src/arith2.c
	modified:   src/arith3.c
	modified:   src/arith4.c
	modified:   src/array.c
	modified:   src/array2.c
	modified:   src/array3.c
	modified:   src/array4.c
	modified:   src/array5.c
	modified:   src/array6.c
	modified:   src/asmbbt.c
	modified:   src/asmbitblt.c
	modified:   src/atom.c
	modified:   src/bbtSPARC.s
	modified:   src/bbtsub.c
	modified:   src/bin.c
	modified:   src/binds.c
	modified:   src/bitblt.c
	modified:   src/blt.c
	modified:   src/byteswap.c
	modified:   src/call-c.c
	modified:   src/car-cdr.c
	modified:   src/cdaudio.c
	modified:   src/cdrom.c
	modified:   src/chardev.c
	modified:   src/chatter.c
	modified:   src/codeconv.c
	modified:   src/codetbl.c
	modified:   src/colorbltfns.c
	modified:   src/common.c
	modified:   src/conspage.c
	modified:   src/cr
	modified:   src/dbgtool.c
	modified:   src/dir.c
	modified:   src/doscomm.c
	modified:   src/doskbd.c
	modified:   src/dosmouse.c
	modified:   src/draw.c
	modified:   src/dsk.c
	modified:   src/dspif.c
	modified:   src/dspsubrs.c
	modified:   src/ejlisp.c
	modified:   src/eqf.c
	modified:   src/ether.c
	modified:   src/findkey.c
	modified:   src/foreign.c
	modified:   src/fp.c
	modified:   src/fvar.c
	modified:   src/gc.c
	modified:   src/gc2.c
	modified:   src/gcarray.c
	modified:   src/gccode.c
	modified:   src/gcfinal.c
	modified:   src/gchtfind.c
	modified:   src/gcmain3.c
	modified:   src/gcoflow.c
	modified:   src/gcr.c
	modified:   src/gcrcell.c
	modified:   src/gcscan.c
	modified:   src/gvar2.c
	modified:   src/hacks.c
	modified:   src/hardrtn.c
	modified:   src/imagefile.c
	modified:   src/imagefile2.c
	modified:   src/inet.c
	modified:   src/initdsp.c
	modified:   src/initkbd.c
	modified:   src/initsout.c
	modified:   src/intcall.c
	modified:   src/kbdif.c
	modified:   src/kbdsubrs.c
	modified:   src/keyevent.c
	modified:   src/keylib.c
	modified:   src/keymaker.c
	modified:   src/keytst.c
	modified:   src/keytstno.c
	modified:   src/kprint.c
	modified:   src/launch.asm
	modified:   src/ldeboot.c
	modified:   src/ldeether.c
	modified:   src/ldsout.c
	modified:   src/lineblt8.c
	modified:   src/lisp2c.c
	modified:   src/llcolor.c
	modified:   src/llstk.c
	modified:   src/loader.c
	modified:   src/loopsops.c
	modified:   src/lowlev1.c
	modified:   src/lowlev2.c
	modified:   src/lpdual.c
	modified:   src/lpkit.c
	modified:   src/lplexyy.c
	modified:   src/lpmain.c
	modified:   src/lpread.c
	modified:   src/lpsolve.c
	modified:   src/lptran.c
	modified:   src/lpwrite.c
	modified:   src/lpytab.c
	modified:   src/lsthandl.c
	modified:   src/main.c
	modified:   src/misc7.c
	modified:   src/miscn.c
	modified:   src/mkatom.c
	modified:   src/mkcell.c
	modified:   src/mkkey.c
	modified:   src/mkvdate.c
	modified:   src/mnwevent.c
	modified:   src/mnxmeth.c
	modified:   src/mouseif.c
	modified:   src/mvs.c
	modified:   src/ocr.c
	modified:   src/ocrproc.c
	modified:   src/oether.c
	modified:   src/oldeether.c
	modified:   src/optck.c
	modified:   src/osmsg.c
	modified:   src/perrno.c
	modified:   src/picture.c
	modified:   src/rawcolor.c
	modified:   src/rawrs232c.c
	modified:   src/return.c
	modified:   src/rpc.c
	modified:   src/rplcons.c
	modified:   src/rs232c.c
	modified:   src/setsout.c
	modified:   src/shift.c
	modified:   src/socdvr.c
	modified:   src/storage.c
	modified:   src/subr.c
	modified:   src/subr0374.c
	modified:   src/sxhash.c
	modified:   src/testdsp.c
	modified:   src/testtool.c
	modified:   src/timeoday.c
	modified:   src/timeofday.c
	modified:   src/timer.c
	modified:   src/truecolor.c
	modified:   src/tstsout.c
	modified:   src/tty.c
	modified:   src/typeof.c
	modified:   src/ubf1.c
	modified:   src/ubf2.c
	modified:   src/ubf3.c
	modified:   src/ufn.c
	modified:   src/ufs.c
	modified:   src/unixcomm.c
	modified:   src/unixfork.c
	modified:   src/unwind.c
	modified:   src/uraid.c
	modified:   src/usrsubr.c
	modified:   src/uutils.c
	modified:   src/vars3.c
	modified:   src/vesafns.asm
	modified:   src/vesainit.c
	modified:   src/vgainit.c
	modified:   src/vmemsave.c
	modified:   src/xbbt.c
	modified:   src/xc.c
	modified:   src/xc.c.orig
	modified:   src/xcursor.c
	modified:   src/xinit.c
	modified:   src/xlspwin.c
	modified:   src/xmkicon.c
	modified:   src/xrdopt.c
	modified:   src/xscroll.c
	modified:   src/xwinman.c
	modified:   src/z2.c
2020-08-11 18:39:45 -07:00

1937 lines
31 KiB
ArmAsm
Executable File

! @(#) bbtSPARC.s Version 1.2 (4/22/92). copyright Venue & Fuji Xerox #
!
!************************************************************************/
!* */
!* (C) Copyright 1989-92 Venue. All Rights Reserved. */
!* Manufactured in the United States of America. */
!* */
!************************************************************************/
! Argument stack offsets, for rational naming.
!
#define srcbase [%fp+68]
#define dstbase [%fp+72]
#define sx [%fp+76]
#define dx [%fp+80]
#define w [%fp+84]
#define height [%fp+88]
#define srcbpl [%fp+92]
#define dstbpl [%fp+96]
#define backwardflg [%fp+100]
#define src_comp [%fp+104]
#define op [%fp+108]
#define gray [%fp+112]
#define num_gray [%fp+116]
#define curr_gray_line [%fp+120]
!
!
!
#define num_lines_remaining [%fp-4]
#define fwd [%fp-8]
#define bb_fast [%fp-12]
#define temp
#define dstnumL
#define src32lbit
#define srcLshift
#define dst32lbit
#define srcRmask
#define dstold
#define dstdata
#define mask
#define x32byta
#define x32nbyt
#define x32ia
#define abc
#define dst32rbit
#define src32rbit [%fp-32]
#define OrigSrcAddr [%fp-36]
#define OrigDstAddr [%fp-20]
#define preloop_mask
#define postloop_mask
#define sdw_mask [%fp-24]
#define dst32addr [%fp-16]
#define src32addr [%fp-28]
#define shS
#define savedS
#define newS
#define srcRshift
!
! Computed intermediate values
!
! srcbpl_rshift_3 saved value of (srcbpl>>3)
! dstbpl_rshift_3 saved value of (dstbpl>>3)
! num_gray_1 saved value of (num_gray-1)
! ffff saved value of 0xFFFF
#define srcbpl_rshift_3 [%fp-52]
#define num_gray_1 [%fp-48]
#define dstbpl_rshift_3 [%fp-56]
#define ffff [%fp-44]
!
! Register Usage
!
! %i0 (arg srcbase)
! %i1 srcLshift (arg dstbase)
! %i2 srcRshift (arg sx)
! %i3 dx, newS (arg dx)
! %i4 (arg width)
! %i5 bb_fast (arg height)
! %i6
! %i7
!
! %o0
! %o1
! %o2
! %o3
! %04
! %o5
! %o6
! %o7
!
! %g0 [always zero]
! %g1
! %g2
! %g3
! %g4
! %g5
! %g6
! %g7
!
! %l0 srcRmask
! %l1 op (left shifted 2 by JDS as of 11/7/89)
! %l2 postloop_mask
! %l3 preloop_mask
! %l4 dst32rbit
! %l5 src32lbit
! %l6 dst32lbit
! %l7
!
! Definitions for register assignments, to make code clear.
! All are of the form R<varname>, to indicate the R<egister>
! version of the variable, in case there is also a storage place
! for it.
!
#define RsrcRmask %l0
#define Rop %l1
#define Rpostloop_mask %l2
#define Rpreloop_mask %l3
#define Rdst32rbit %l4
#define Rsrc32lbit %l5
#define Rdst32lbit %l6
#define RsrcRshift %i2
!
.seg "text" ! [internal]
.proc 4
.global _bitblt
_bitblt:
!#PROLOGUE# 0
!#PROLOGUE# 1
save %sp,-120,%sp
ld backwardflg,%o0
st %i5,num_lines_remaining
tst %o0
st %i4,w
bne L77003
st %i0,srcbase
mov 1,%o1
b L77004
st %o1,fwd
L77003:
st %g0,fwd
L77004:
ld dstbpl,%o3
ld srcbpl,%o2
or %o2,%o3,%o2
andcc %o2,31,%g0
bne,a L77007
mov 0,%i5 ! bb_fast = %i5
mov 1,%i5
L77007:
ld gray,%o5
st %i5,bb_fast
tst %o5 ! are we doing the gray case?
be,a LY53 ! no => LY53
ld fwd,%o5
tst %i3 ! dx
bge,a LY52
sra %i3,3,%o4
mov 7,%o7
sub %o7,%i3,%o7
sra %o7,3,%o7
b LY12
sub %i1,%o7,%i1
LY52: ! [internal]
add %i1,%o4,%i1
LY12: ! [internal]
and %i1,3,Rdst32lbit
sub %i1,Rdst32lbit,%i1
st %i1,dst32addr
ld w,%i1
ld dst32addr,%o2
sll Rdst32lbit,3,Rdst32lbit
and %i3,7,%i3
add Rdst32lbit,%i3,Rdst32lbit !dst32lbit
add Rdst32lbit,%i1,%i1
sub %i1,1,Rdst32rbit
tst Rdst32lbit
st %o2,OrigDstAddr ! OrigDstAddr?
be L77013
and Rdst32rbit,31,Rdst32rbit ! dst32rbit
mov 32,%o3
sub %o3,Rdst32lbit,%o3
mov -1,%i3
sll %i3,%o3,%i3
b L77014
xor %i3,-1,%i3 ! preloop_mask
L77013:
mov -1,%i3
L77014:
ld dstbpl,%o3
mov 31,%o2
sub %o2,Rdst32rbit,%o2
mov -1,Rpostloop_mask
sll Rpostloop_mask,%o2,Rpostloop_mask ! postloop_mask
mov %i3,Rpreloop_mask
and Rpreloop_mask,Rpostloop_mask,%o0
andcc %o3,31,%g0
sra %i1,5,%l7
st %o0,sdw_mask ! sdw_mask?
bne L77016
dec %l7 ! dstnumL seems to be in %l7.
b L77017
mov 1,%i3
L77016:
mov 0,%i3 ! bb_fast
L77017:
st %i3,bb_fast
b L77396
and %i2,15,Rsrc32lbit !srclbit
!
! Loop-advance, for either the forward or backward case
!
LY53: ! [internal]
tst %o5 ! going forward?
be,a LY51 ! No. => LY51
ld w,%o3
tst %i3
bge,a LY50
sra %i3,3,%o4
mov 7,%o7
sub %o7,%i3,%o7
sra %o7,3,%o7
b LY13
sub %i1,%o7,%i1
LY50: ! [internal]
add %i1,%o4,%i1
LY13: ! [internal]
and %i1,3,Rdst32lbit
sub %i1,Rdst32lbit,%i1
st %i1,dst32addr
ld w,%i1
ld dst32addr,%o2
sll Rdst32lbit,3,Rdst32lbit
and %i3,7,%i3
add Rdst32lbit,%i3,Rdst32lbit
add Rdst32lbit,%i1,%i1
sub %i1,1,Rdst32rbit
tst Rdst32lbit
st %o2,OrigDstAddr
be L77024
and Rdst32rbit,31,Rdst32rbit
mov 32,%o3
sub %o3,Rdst32lbit,%o3
mov -1,%i3
sll %i3,%o3,%i3
b L77025
xor %i3,-1,%i3
L77024:
mov -1,%i3
L77025:
mov 31,%o2
sub %o2,Rdst32rbit,%o2
mov -1,Rpostloop_mask
sll Rpostloop_mask,%o2,Rpostloop_mask
mov %i3,Rpreloop_mask
and Rpreloop_mask,Rpostloop_mask,%o0
tst %i2
sra %i1,5,%l7
st %o0,sdw_mask
bge L77027
dec %l7
ld srcbase,%i3
mov 7,%o3
sub %o3,%i2,%o3
sra %o3,3,%o3
b LY14
sub %i3,%o3,%i3
L77027:
ld srcbase,%i3
sra %i2,3,%o2
add %i3,%o2,%i3
LY14: ! [internal]
ld w,%o4
and %i3,3,Rsrc32lbit
sub %i3,Rsrc32lbit,%i3
sll Rsrc32lbit,3,Rsrc32lbit
and %i2,7,%i2
add Rsrc32lbit,%i2,Rsrc32lbit
add Rsrc32lbit,%o4,%o4
sub Rsrc32lbit,Rdst32lbit,%i1
and %i1,31,%i1
dec %o4
and %o4,31,%o4
tst %i1
sub Rdst32lbit,Rsrc32lbit,RsrcRshift
st %i3,src32addr
st %o4,src32rbit
be L77030
and RsrcRshift,31,RsrcRshift
mov -1,%i3
sll %i3,%i1,%i3
b L77031
xor %i3,-1,%i3
L77030:
mov -1,%i3
L77031:
ld src32addr,%o2
mov %i3,RsrcRmask
b L77396
st %o2,OrigSrcAddr
!
!
! Loop advance for the blt-backward case.
!
LY51: ! [internal]
add %i3,%o3,%i3
deccc %i3
bpos,a LY49
sra %i3,3,%o4
mov 7,%o7
sub %o7,%i3,%o7
sra %o7,3,%o7
b LY15
sub %i1,%o7,%i1
LY49: ! [internal]
add %i1,%o4,%i1
LY15: ! [internal]
and %i1,3,Rdst32rbit
sub %i1,Rdst32rbit,%i1
sll Rdst32rbit,3,Rdst32rbit
and %i3,7,%i3
add Rdst32rbit,%i3,Rdst32rbit
sub Rdst32rbit,%o3,Rdst32lbit
inc Rdst32lbit
and Rdst32lbit,31,Rdst32lbit
tst Rdst32lbit ! replaced by andCC
st %i1,OrigDstAddr
mov -1,Rpostloop_mask
be Ldstl0
st %i1,dst32addr
mov 32,%o1
sub %o1,Rdst32lbit,%o1
sll Rpostloop_mask,%o1,Rpostloop_mask
xor Rpostloop_mask,-1,Rpostloop_mask
Ldstl0: ld w,%o1
mov 31,%o3
sub %o3,Rdst32rbit,%o3
sub %o1,Rdst32rbit,%i3
mov -1,Rpreloop_mask
sll Rpreloop_mask,%o3,Rpreloop_mask
dec %i3
tst %i3
and Rpreloop_mask,Rpostloop_mask,%o0
ble L77037
st %o0,sdw_mask
b L77038
sra %i3,5,%i3
L77037:
mov 0,%i3
L77038:
mov %i3,%l7
add %i2,%o1,%i3
deccc %i3
bpos LY48
ld srcbase,%i1
mov 7,%o1
sub %o1,%i3,%o1
sra %o1,3,%o1
b LY16
sub %i1,%o1,%i1
LY48: ! [internal]
sra %i3,3,%o0
add %i1,%o0,%i1
LY16: ! [internal]
ld w,Rsrc32lbit
and %i1,3,%i2
sub %i1,%i2,%i1
sll %i2,3,%i2
and %i3,7,%i3
add %i2,%i3,%i2 !src32rbit
st %i2,src32rbit ! moved from below for clarity
sub %i2,Rsrc32lbit,Rsrc32lbit
inc Rsrc32lbit
and Rsrc32lbit,31,Rsrc32lbit
st %i1,src32addr
sub Rsrc32lbit,Rdst32lbit,%i1
and %i1,31,%i1
! st %i2,src32rbit
sub Rdst32lbit,Rsrc32lbit,RsrcRshift
tst %i1
be L77043
and RsrcRshift,31,RsrcRshift
mov -1,%i3
sll %i3,%i1,%i3
b L77044
xor %i3,-1,%i3
L77043:
mov 0,%i3
L77044:
ld src32addr,%o1
mov %i3,RsrcRmask ! srcRmask
st %o1,OrigSrcAddr
L77396:
ld srcbpl,%o3
ld num_lines_remaining,%i5
ld num_gray,%o0
ld dstbpl,%o5
ld op,Rop
sll Rop,2,Rop ! op << 2, for jump dispatch
sra %o3,3,%o3
st %o3,srcbpl_rshift_3 ! srcbpl >> 3, for later use.
ld num_lines_remaining,%o3
dec %o0
sethi %hi(0xffff),%o2
or %o2,%lo(0xffff),%o2 ! [internal]
sll %o0,1,%o0
dec %o3
sra %o5,3,%o5
tst %i5
st %o2,ffff
st %o0,num_gray_1
st %o3,num_lines_remaining
ble LY1
st %o5,dstbpl_rshift_3
LY8: ! [internal]
ld gray,%o4
tst %o4
be,a LY47
ld fwd,%o3
ld srcbase,%i5
ld ffff,%o0
lduh [%i5],%i5
sub Rsrc32lbit,Rdst32lbit,%i1
sll %i5,16,%o3
or %i5,%o3,%i5
ld src_comp,%o3
and %i1,15,%i1
sll %i5,%i1,%i5
srl %i5,16,%o7
and %o7,%o0,%o7
tst %o3
be L77051
or %i5,%o7,%i5
xor %i5,-1,%i5
L77051:
ld w,%o5
add Rdst32lbit,%o5,%o5
cmp %o5,32
bg,a LY46
ld dst32addr,%i4
b L77305
ld sdw_mask,%i0
LY46: ! [internal]
! cmp Rop,3
ld [%i4],%i4
! sll Rop,2,%o0
! bgu L77060
andn %i4,Rpreloop_mask,%i0
sethi %hi(L2000000),%o1
or %o1,%lo(L2000000),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
b L77060
L2000000:
.word L77054
.word L77055
.word L77056
.word L77057
L77054:
mov %i5,%i4
L77055:
and %i4,%i5,%i4
L77056:
or %i4,%i5,%i4
L77057:
xor %i4,%i5,%i4
L77060:
ld dst32addr,%o7 ! o7 = dst32addr down to ~ LY45
and %i4,Rpreloop_mask,%i4
or %i4,%i0,%i4
st %i4,[%o7]
! ld dst32addr,%o7
! cmp Rop,3
inc 4,%o7
! sll Rop,2,%o0
! bgu L77079
! st %o7,dst32addr
sethi %hi(L2000001),%o1
or %o1,%lo(L2000001),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i4
L2000001:
.word L77061
.word L77065
.word L77069
.word L77073
L77061:
! mov %l7,%i4
L77062:
deccc %i4
bneg,a LY45
cmp Rdst32rbit,31
! ld dst32addr,%o0
st %i5,[%o7]
! ld dst32addr,%o1
! inc 4,%o1
b L77062
inc 4,%o7
! st %o1,dst32addr
L77065:
! mov %l7,%i4
L77066:
deccc %i4
bneg,a LY45
cmp Rdst32rbit,31
ld [%o7],%o3
and %o3,%i5,%o3
st %o3,[%o7]
! ld dst32addr,%o7
! inc 4,%o7
b L77066
inc 4,%o7
! st %o7,dst32addr
L77069:
! mov %l7,%i4
L77070:
deccc %i4
bneg,a LY45
cmp Rdst32rbit,31
! ld dst32addr,%o0
ld [%o7],%o1
or %o1,%i5,%o1
st %o1,[%o7]
! ld dst32addr,%o4
! inc 4,%o4
b L77070
inc 4,%o7
! st %o4,dst32addr
L77073:
! sub %l7,1,%i4
! tst %i4
deccc %i4
bl,a LY45
cmp Rdst32rbit,31
!LY9: ! [internal]
! ld dst32addr,%o5
LY9a: deccc %i4
ld [%o7],%o1
xor %o1,%i5,%o1
st %o1,[%o7]
! ld dst32addr,%o2
! inc 4,%o2
bpos LY9a
inc 4,%o7
! st %o5,dst32addr
L77079:
cmp Rdst32rbit,31
LY45: ! [internal]
! be,a LY31
be LY31
st %o7,dst32addr ! end of dst32addr in o7
ld gray,%o2
b L77305
mov Rpostloop_mask,%i0
LY47: ! [internal]
tst %o3 !fwd
be,a LY44
ld src32rbit,%o7
cmp Rsrc32lbit,Rdst32lbit
ble,a LY43
cmp Rsrc32lbit,Rdst32lbit
ld w,%o4
add Rsrc32lbit,%o4,%o4
cmp %o4,32
ble,a LY43
cmp Rsrc32lbit,Rdst32lbit
ld src32addr,%o1
ld [%o1],%i3
inc 4,%o1
! st %o1,src32addr
ld [%o1],%o3
sll %i3,%i1,%i3
srl %o3,RsrcRshift,%i5
and %i5,RsrcRmask,%i5
or %i3,%i5,%i5
sll %o3,%i1,%i3
inc 4,%o1
andn %i3,RsrcRmask,%i3
b LY19
st %o1,src32addr
LY43: ! [internal]
bg LY42
ld src32addr,%o7
ld [%o7],%i3
inc 4,%o7
srl %i3,RsrcRshift,%i5
sll %i3,%i1,%i3
st %o7,src32addr
and %i5,RsrcRmask,%i5
b LY19
andn %i3,RsrcRmask,%i3
LY42: ! [internal]
ld [%o7],%i5
inc 4,%o7
st %o7,src32addr
sll %i5,%i1,%i5
LY19: ! [internal]
ld src_comp,%o1
tst %o1
be,a LY41
ld w,%o3
xor %i5,-1,%i5
ld w,%o3
LY41: ! [internal]
add Rdst32lbit,%o3,%o3
cmp %o3,32
bg,a LY40
ld dst32addr,%i4
b L77305
ld sdw_mask,%i0
LY40: ! [internal]
! cmp Rop,3
ld [%i4],%i4
! sll Rop,2,%o0
! bgu L77101
andn %i4,Rpreloop_mask,%i0
sethi %hi(L2000002),%o1
or %o1,%lo(L2000002),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
b L77101
L2000002:
.word L77095
.word L77096
.word L77097
.word L77098
L77095:
! b L77101
mov %i5,%i4
L77096:
! b L77101
and %i4,%i5,%i4
L77097:
! b L77101
or %i4,%i5,%i4
L77098:
xor %i4,%i5,%i4
L77101:
ld dst32addr,%o4 ! o4 = dst32addr
and %i4,Rpreloop_mask,%i4
or %i4,%i0,%i4
st %i4,[%o4]
! ld dst32addr,%o4
cmp Rsrc32lbit,Rdst32lbit
inc 4,%o4
bne L77144
st %o4,dst32addr
ld src_comp,%o5
tst %o5
bne LY39
! cmp Rop,3
! bgu L77186
! sll Rop,2,%o0
ld src32addr,%o5 ! o5 = src32addr
sethi %hi(L2000004),%o1
or %o1,%lo(L2000004),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i5
L2000004:
.word L77124
.word L77128
.word L77132
.word L77136
L77104:
! mov %l7,%i5
L77105:
deccc %i5
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o7
! ld dst32addr,%o4
ld [%o5],%o7
xor %o7,-1,%o7
st %o7,[%o4]
! ld src32addr,%o3
! ld dst32addr,%o4
inc 4,%o4
! inc 4,%o5
! st %o3,src32addr
b L77105
inc 4,%o5
! st %o4,dst32addr
L77108:
! mov %l7,%i5
L77109:
deccc %i5
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o5
! ld dst32addr,%o0
ld [%o5],%o7
ld [%o4],%o1
andn %o1,%o7,%o1
st %o1,[%o4]
! ld src32addr,%o4
! ld dst32addr,%o5
inc 4,%o4
! inc 4,%o5
! st %o4,src32addr
b L77109
inc 4,%o5
! st %o5,dst32addr
L77112:
! mov %l7,%i5
L77113:
deccc %i5
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o7
! ld dst32addr,%o1
ld [%o5],%o7
ld [%o4],%o2
orn %o2,%o7,%o2
st %o2,[%o4]
! ld src32addr,%o5
! ld dst32addr,%o7
inc 4,%o5
! inc 4,%o4
! st %o5,src32addr
b L77113
inc 4,%o4
! st %o7,dst32addr
L77116:
! mov %l7,%i5
L77117:
deccc %i5
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o0
! ld dst32addr,%o2
ld [%o5],%o0
ld [%o4],%o3
xnor %o3,%o0,%o3
st %o3,[%o4]
! ld src32addr,%o7
! ld dst32addr,%o0
inc 4,%o5
! inc 4,%o4
! st %o7,src32addr
b L77117
inc 4,%o4
! st %o0,dst32addr
LY39: ! [internal] o4 = dst32addr getting here
! bgu L77186
! sll Rop,2,%o0
! ld src32addr,%o5 ! o5 = src32addr when getting to LY39
sethi %hi(L2000003),%o1
or %o1,%lo(L2000003),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i5
L2000003:
.word L77104
.word L77108
.word L77112
.word L77116
L77124:
! mov %l7,%i5
L77125:
deccc %i5
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o2
! ld dst32addr,%o1
ld [%o5],%o2
st %o2,[%o4]
! ld src32addr,%o4
! ld dst32addr,%o5
inc 4,%o4
! inc 4,%o5
! st %o4,src32addr
b L77125
inc 4,%o5
! st %o5,dst32addr
L77128:
! mov %l7,%i5
L77129:
deccc %i5
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o7
! ld dst32addr,%o1
ld [%o5],%o7
ld [%o4],%o2
and %o2,%o7,%o2
st %o2,[%o4]
! ld src32addr,%o5
! ld dst32addr,%o7
inc 4,%o5
! inc 4,%o4
! st %o5,src32addr
b L77129
inc 4,%o4
! st %o7,dst32addr
L77132:
! mov %l7,%i5
L77133:
deccc %i5
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o0
! ld dst32addr,%o2
ld [%o5],%o0
ld [%o4],%o3
or %o3,%o0,%o3
st %o3,[%o4]
! ld src32addr,%o7
! ld dst32addr,%o0
inc 4,%o4
! inc 4,%o5
! st %o7,src32addr
b L77133
inc 4,%o5
! st %o0,dst32addr
L77136:
! sub %l7,1,%i5
! tst %i5
deccc %i5
bl,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
LY10: ! [internal]
! ld src32addr,%o1
! ld dst32addr,%o3
ld [%o5],%o1
ld [%o4],%o2
deccc %i5
xor %o2,%o1,%o2
st %o2,[%o4]
! ld src32addr,%o0
! ld dst32addr,%o1
inc 4,%o4
! inc 4,%o5
! st %o0,src32addr
bpos LY10
inc 4,%o5
! st %o1,dst32addr
L77186:
! cmp Rdst32rbit,31
st %o4,dst32addr
LY37: ! [internal]
st %o5,src32addr
cmp Rdst32rbit,31
be,a LY31
ld gray,%o2
ld src32rbit,%o5
cmp %o5,Rdst32rbit
bg,a L77190
mov %i3,%i5
ld src32addr,%i5
ld [%i5],%i5
srl %i5,RsrcRshift,%i5
and %i5,RsrcRmask,%i5
b L77190
or %i3,%i5,%i5
L77144: ! o4 = dst32addr when getting here.
ld src_comp,%o2
tst %o2
bne LY38
! cmp Rop,3
! bgu L77186
! sll Rop,2,%o0
ld src32addr,%o5 ! o5 = src322addr
sethi %hi(L2000006),%o1
or %o1,%lo(L2000006),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i4
L2000006:
.word L77166
.word L77170
.word L77174
.word L77178
L77146:
! mov %l7,%i4
L77147:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o5
! ld dst32addr,%o3
ld [%o5],%o1
inc 4,%o5
srl %o1,RsrcRshift,%o7
or %i3,%o7,%o7
xor %o7,-1,%o7
! st %o5,src32addr
st %o7,[%o4]
sll %o1,%i1,%i3
! ld dst32addr,%o4
! inc 4,%o4
b L77147
inc 4,%o4
! st %o4,dst32addr
L77150:
! mov %l7,%i4
L77151:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o0
! ld dst32addr,%o5
ld [%o5],%o7
inc 4,%o5
srl %o7,RsrcRshift,%o1
or %i3,%o1,%o1
sll %o7,%i1,%i3
! st %o0,src32addr
ld [%o4],%o7
xor %o1,-1,%o1
and %o7,%o1,%o7
st %o7,[%o4]
! ld dst32addr,%o2
! inc 4,%o2
b L77151
inc 4,%o4
! st %o2,dst32addr
L77154:
! mov %l7,%i4
L77155:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o5
! ld dst32addr,%o3
ld [%o5],%o1
inc 4,%o5
srl %o1,RsrcRshift,%o7
or %i3,%o7,%o7
sll %o1,%i1,%i3
! st %o5,src32addr
ld [%o4],%o1
xor %o7,-1,%o7
or %o1,%o7,%o1
st %o1,[%o4]
! ld dst32addr,%o0
! inc 4,%o4
b L77155
inc 4,%o4
! st %o0,dst32addr
L77158:
! mov %l7,%i4
L77159:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o3
! ld dst32addr,%o1
ld [%o5],%o2
inc 4,%o5
srl %o2,RsrcRshift,%o1
or %i3,%o1,%o1
sll %o2,%i1,%i3
! st %o3,src32addr
ld [%o4],%o2
xor %o1,-1,%o1
xor %o2,%o1,%o2
st %o2,[%o4]
! ld dst32addr,%o5
! inc 4,%o4
b L77159
inc 4,%o4
! st %o5,dst32addr
LY38: ! [internal]
! bgu L77186
! sll Rop,2,%o0
ld src32addr,%o5
sethi %hi(L2000005),%o1
or %o1,%lo(L2000005),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i4
L2000005:
.word L77146
.word L77150
.word L77154
.word L77158
! b LY37
! st %o4,dst32addr
! cmp Rdst32rbit,31
L77166:
! mov %l7,%i4
L77167:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o1
! ld dst32addr,%o5
ld [%o5],%o0
inc 4,%o5
srl %o0,RsrcRshift,%o2
or %i3,%o2,%o2
! st %o1,src32addr
st %o2,[%o4]
! ld dst32addr,%o7
sll %o0,%i1,%i3
! inc 4,%o4
b L77167
inc 4,%o4
! st %o7,dst32addr
L77170:
! mov %l7,%i4
L77171:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o2
! ld dst32addr,%o7
ld [%o5],%o1
inc 4,%o5
srl %o1,RsrcRshift,%o3
or %i3,%o3,%o3
! st %o2,src32addr
ld [%o4],%o0
sll %o1,%i1,%i3
and %o0,%o3,%o0
st %o0,[%o4]
! ld dst32addr,%o3
! inc 4,%o4
b L77171
inc 4,%o4
! st %o3,dst32addr
L77174:
! mov %l7,%i4
L77175:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o7
! ld dst32addr,%o3
ld [%o5],%o7
inc 4,%o5
srl %o7,RsrcRshift,%o0
or %i3,%o0,%o0
! st %o7,src32addr
ld [%o4],%o1
sll %o7,%i1,%i3
or %o1,%o0,%o1
st %o1,[%o4]
! ld dst32addr,%o0
! inc 4,%o4
b L77175
inc 4,%o4
! st %o0,dst32addr
L77178:
! mov %l7,%i4
L77179:
deccc %i4
bneg,a LY37
st %o4,dst32addr
! cmp Rdst32rbit,31
! ld src32addr,%o3
! ld dst32addr,%o0
ld [%o5],%o2
inc 4,%o5
srl %o2,RsrcRshift,%o3
or %i3,%o3,%o3
! st %o3,src32addr
ld [%o4],%o1
sll %o2,%i1,%i3
xor %o1,%o3,%o1
st %o1,[%o4]
! ld dst32addr,%o4
! inc 4,%o4
b L77179
inc 4,%o4
! st %o4,dst32addr
L77190:
ld src_comp,%o4
b LY17
tst %o4
LY44: ! [internal]
cmp %o7,Rdst32rbit
bge,a LY36
cmp %o7,Rdst32rbit
ld w,%o1
add Rdst32lbit,1,%o0
add Rsrc32lbit,%o1,%o1
cmp %o1,%o0
ble,a LY36
cmp %o7,Rdst32rbit
ld src32addr,%o3
ld [%o3],%i3
dec 4,%o3
st %o3,src32addr
ld [%o3],%o2
srl %i3,RsrcRshift,%i3
and %i3,RsrcRmask,%i3
sll %o2,%i1,%i5
or %i3,%i5,%i5
srl %o2,RsrcRshift,%i3
dec 4,%o3
and %i3,RsrcRmask,%i3
b LY21
st %o3,src32addr
LY36: ! [internal]
bl,a LY35
ld src32addr,%o3
ld src32addr,%o4
ld [%o4],%i3
dec 4,%o4
sll %i3,%i1,%i5
srl %i3,RsrcRshift,%i3
st %o4,src32addr
b LY21
and %i3,RsrcRmask,%i3
LY35: ! [internal]
ld [%o3],%i5
dec 4,%o3
srl %i5,RsrcRshift,%i5
and %i5,RsrcRmask,%i5
st %o3,src32addr
LY21: ! [internal]
ld src_comp,%o7
tst %o7
be,a LY34
ld w,%o1
xor %i5,-1,%i5
ld w,%o1
LY34: ! [internal]
add Rdst32lbit,%o1,%o1
cmp %o1,32
bg,a LY33
ld dst32addr,%i4
b L77305
ld sdw_mask,%i0
LY33: ! [internal]
! cmp Rop,3
ld [%i4],%i4
! sll Rop,2,%o0
! bgu L77212
andn %i4,Rpreloop_mask,%i0
sethi %hi(L2000007),%o1
or %o1,%lo(L2000007),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
b L77212
L2000007:
.word L77206
.word L77207
.word L77208
.word L77209
L77206:
! b L77212
mov %i5,%i4
L77207:
! b L77212
and %i4,%i5,%i4
L77208:
! b L77212
or %i4,%i5,%i4
L77209:
xor %i4,%i5,%i4
L77212:
ld dst32addr,%o4 ! o4 = dst32addr
ld src32addr,%o5 ! o5 = src32addr
and %i4,Rpreloop_mask,%i4
or %i4,%i0,%i4
st %i4,[%o4]
! ld dst32addr,%o4
cmp Rsrc32lbit,Rdst32lbit
dec 4,%o4
bne L77255
st %o4,dst32addr
ld src_comp,%o3
tst %o3
bne LY32
! cmp Rop,3
! bgu L77297
! sll Rop,2,%o0
sethi %hi(L2000009),%o1
or %o1,%lo(L2000009),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i5
L2000009:
.word L77235
.word L77239
.word L77243
.word L77247
L77215:
! mov %l7,%i5
L77216:
deccc %i5
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o4
! ld dst32addr,%o0
ld [%o5],%o1
xor %o1,-1,%o1
st %o1,[%o4]
! ld src32addr,%o1
! ld dst32addr,%o2
dec 4,%o5
! st %o1,src32addr
b L77216
dec 4,%o4
! st %o2,dst32addr
L77219:
! mov %l7,%i5
L77220:
deccc %i5
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o3
! ld dst32addr,%o5
ld [%o5],%o3
ld [%o4],%o7
andn %o7,%o3,%o7
st %o7,[%o4]
! ld src32addr,%o2
! ld dst32addr,%o3
dec 4,%o4
! st %o2,src32addr
b L77220
dec 4,%o5
! st %o3,dst32addr
L77223:
! mov %l7,%i5
L77224:
deccc %i5
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o4
! ld dst32addr,%o7
ld [%o5],%o1
ld [%o4],%o0
orn %o0,%o1,%o0
st %o0,[%o4]
! ld src32addr,%o3
! ld dst32addr,%o4
dec 4,%o5
! st %o3,src32addr
b L77224
dec 4,%o4
! st %o4,dst32addr
L77227:
! mov %l7,%i5
L77228:
deccc %i5
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o5
! ld dst32addr,%o0
ld [%o5],%o0
ld [%o4],%o1
xnor %o1,%o0,%o1
st %o1,[%o4]
! ld src32addr,%o4
! ld dst32addr,%o5
dec 4,%o4
! st %o4,src32addr
b L77228
dec 4,%o5
! st %o5,dst32addr
LY32: ! [internal]
! bgu L77297
! sll Rop,2,%o0
ld dst32addr,%o4
ld src32addr,%o5
sethi %hi(L2000008),%o1
or %o1,%lo(L2000008),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i5
L2000008:
.word L77215
.word L77219
.word L77223
.word L77227
L77235:
! mov %l7,%i5
L77236:
deccc %i5
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o0
! ld dst32addr,%o7
ld [%o5],%o0
st %o0,[%o4]
! ld src32addr,%o2
! ld dst32addr,%o3
dec 4,%o4
! dec 4,%o5
! st %o2,src32addr
b L77236
dec 4,%o5
! st %o3,dst32addr
L77239:
! mov %l7,%i5
L77240:
deccc %i5
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o4
! ld dst32addr,%o7
ld [%o5],%o2
ld [%o4],%o0
and %o0,%o2,%o0
st %o0,[%o4]
! ld src32addr,%o3
! ld dst32addr,%o4
dec 4,%o5
! dec 4,%o4
! st %o3,src32addr
b L77240
dec 4,%o4
! st %o4,dst32addr
L77243:
! mov %l7,%i5
L77244:
deccc %i5
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o5
! ld dst32addr,%o0
ld [%o5],%o2
ld [%o4],%o1
or %o1,%o2,%o1
st %o1,[%o4]
! ld src32addr,%o4
! ld dst32addr,%o5
dec 4,%o4
! dec 4,%o5
! st %o4,src32addr
b L77244
dec 4,%o5
! st %o5,dst32addr
L77247:
! sub %l7,1,%i5
! tst %i5
deccc %i5
bl,a LY29
st %o4,dst32addr
! tst Rdst32lbit
LY11: ! [internal]
! ld src32addr,%o7
! ld dst32addr,%o1
ld [%o5],%o7
ld [%o4],%o2
deccc %i5
xor %o2,%o7,%o2
st %o2,[%o4]
! ld src32addr,%o5
! ld dst32addr,%o7
dec 4,%o5
! dec 4,%o4
! st %o5,src32addr
bpos LY11
dec 4,%o4
! st %o7,dst32addr
!L77297:
! tst Rdst32lbit
st %o4,dst32addr
LY29: ! [internal]
st %o5,src32addr
tst Rdst32lbit
be,a LY31
ld gray,%o2
cmp Rsrc32lbit,Rdst32lbit
bl,a L77301
mov %i3,%i5
ld src32addr,%i5
ld [%i5],%i5
sll %i5,%i1,%i5
b L77301
or %i3,%i5,%i5
L77255:
ld src_comp,%o0
tst %o0
bne LY30
! cmp Rop,3
! bgu L77297
! sll Rop,2,%o0
ld dst32addr,%o4
ld src32addr,%o5
sethi %hi(L2000011),%o1
or %o1,%lo(L2000011),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i4
L2000011:
.word L77277
.word L77281
.word L77285
.word L77289
L77257:
! mov %l7,%i4
L77258:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o3
! ld dst32addr,%o1
ld [%o5],%o2
dec 4,%o5
sll %o2,%i1,%o3
or %i3,%o3,%o3
xor %o3,-1,%o3
! st %o3,src32addr
st %o3,[%o1]
srl %o2,RsrcRshift,%i3
! ld dst32addr,%o2
b L77258
dec 4,%o4
! st %o2,dst32addr
L77261:
! mov %l7,%i4
L77262:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o5
! ld dst32addr,%o3
ld [%o5],%o3
dec 4,%o5
sll %o4,%i1,%o7
or %i3,%o7,%o7
srl %o3,RsrcRshift,%i3
! st %o5,src32addr
ld [%o4],%o3
xor %o7,-1,%o7
and %o3,%o7,%o3
st %o3,[%o4]
! ld dst32addr,%o0
b L77262
dec 4,%o4
! st %o0,dst32addr
L77265:
! mov %l7,%i4
L77266:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o3
! ld dst32addr,%o1
ld [%o5],%o2
dec 4,%o5
sll %o2,%i1,%o3
or %i3,%o4,%o3
srl %o2,RsrcRshift,%i3
! st %o3,src32addr
ld [%o4],%o2
xor %o3,-1,%o3
or %o2,%o3,%o2
st %o2,[%o4]
! ld dst32addr,%o5
b L77266
dec 4,%o4
! st %o5,dst32addr
L77269:
! mov %l7,%i4
L77270:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o1
! ld dst32addr,%o7
ld [%o5],%o0
dec 4,%o5
sll %o0,%i1,%o2
or %i3,%o2,%o2
srl %o0,RsrcRshift,%i3
! st %o1,src32addr
ld [%o4],%o0
xor %o2,-1,%o2
xor %o0,%o2,%o0
st %o0,[%o4]
! ld dst32addr,%o3
b L77270
dec 4,%o4
! st %o3,dst32addr
LY30: ! [internal]
! bgu L77297
! sll Rop,2,%o0
ld dst32addr,%o4
ld src32addr,%o5
sethi %hi(L2000010),%o1
or %o1,%lo(L2000010),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
mov %l7,%i4
L2000010:
.word L77257
.word L77261
.word L77265
.word L77269
! b LY29
! tst Rdst32lbit
L77277:
! mov %l7,%i4
L77278:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o7
! ld dst32addr,%o3
ld [%o5],%o7
dec 4,%o5
sll %o7,%i1,%o0
or %i3,%o0,%o0
! st %o7,src32addr
st %o0,[%o4]
! ld dst32addr,%o4
srl %o7,RsrcRshift,%i3
b L77278
dec 4,%o4
! st %o4,dst32addr
L77281:
! mov %l7,%i4
L77282:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o0
! ld dst32addr,%o4
ld [%o5],%o7
dec 4,%o5
sll %o7,%i1,%o1
or %i3,%o1,%o1
!st %o0,src32addr
ld [%o4],%o2
srl %o7,RsrcRshift,%i3
and %o2,%o1,%o2
st %o2,[%o4]
! ld dst32addr,%o1
b L77282
dec 4,%o4
! st %o1,dst32addr
L77285:
! mov %l7,%i4
L77286:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o4
! ld dst32addr,%o1
ld [%o5],%o3
dec 4,%o5
sll %o3,%i1,%o1
or %i3,%o1,%o1
! st %o4,src32addr
ld [%o4],%o2
srl %o3,RsrcRshift,%i3
or %o2,%o1,%o2
st %o2,[%o4]
! ld dst32addr,%o1
b L77286
dec 4,%o4
! st %o5,dst32addr
L77289:
! mov %l7,%i4
L77290:
deccc %i4
bneg,a LY29
st %o4,dst32addr
! tst Rdst32lbit
! ld src32addr,%o1
! ld dst32addr,%o5
ld [%o5],%o0
dec 4,%o5
sll %o0,%i1,%o2
or %i3,%o2,%o2
! st %o1,src32addr
ld [%o4],%o7
srl %o0,RsrcRshift,%i3
xor %o7,%o2,%o7
st %o7,[%o4]
! ld dst32addr,%o2
b L77290
dec 4,%o4
! st %o2,dst32addr
L77301:
ld src_comp,%o0
tst %o0
LY17: ! [internal]
be,a L77305
mov Rpostloop_mask,%i0
xor %i5,-1,%i5
mov Rpostloop_mask,%i0
L77305:
ld dst32addr,%i4
! cmp Rop,3
ld [%i4],%i4
! sll Rop,2,%o0
andn %i4,%i0,%o4
! bgu L77312
! st %o4,[%fp-40]
sethi %hi(L2000012),%o1
or %o1,%lo(L2000012),%o1 ! [internal]
ld [Rop+%o1],%o0
jmp %o0
! nop
b L77312
L2000012:
.word L77306
.word L77307
.word L77308
.word L77309
L77306:
! b L77312
mov %i5,%i4
L77307:
! b L77312
and %i4,%i5,%i4
L77308:
! b L77312
or %i4,%i5,%i4
L77309:
xor %i4,%i5,%i4
L77312:
! ld [%fp-40],%o7
ld dst32addr,%o1
and %i4,%i0,%i4
! or %i4,%o7,%i4
or %i4,%o4,%i4
st %i4,[%o1]
ld gray,%o2
LY31: ! [internal]
tst %o2
be,a LY28
ld fwd,%o7
ld bb_fast,%o3
tst %o3
be,a LY27
ld dstbpl,%o2
ld dstbpl_rshift_3,%o5
ld OrigDstAddr,%o4
add %o4,%o5,%o4
st %o4,dst32addr
b L77320
st %o4,OrigDstAddr
LY27: ! [internal]
ld OrigDstAddr,%o1
ld w,%l7
add Rdst32lbit,%o2,Rdst32lbit
sra Rdst32lbit,5,%o7
and Rdst32lbit,31,Rdst32lbit
sll %o7,2,%o7
add %o1,%o7,%o7
add Rdst32lbit,%l7,%l7
sub %l7,1,Rdst32rbit
tst Rdst32lbit
st %o1,dst32addr
st %o7,OrigDstAddr
and Rdst32rbit,31,Rdst32rbit
be L77318
st %o7,dst32addr
mov 32,%o0
sub %o0,Rdst32lbit,%o0
mov -1,%i5
sll %i5,%o0,%i5
b L77319
xor %i5,-1,%i5
L77318:
mov -1,%i5
L77319:
mov 31,%o7
sub %o7,Rdst32rbit,%o7
mov -1,Rpostloop_mask
sll Rpostloop_mask,%o7,Rpostloop_mask
mov %i5,Rpreloop_mask
and Rpreloop_mask,Rpostloop_mask,%o4
sra %l7,5,%l7
dec %l7
st %o4,sdw_mask
L77320:
ld curr_gray_line,%o0
ld num_gray,%o2
inc %o0
cmp %o0,%o2
bl L77322
st %o0,curr_gray_line
ld srcbase,%o4
ld num_gray_1,%o3
st %g0,curr_gray_line
sub %o4,%o3,%o4
b L77047
st %o4,srcbase
L77322:
ld srcbase,%o5
inc 2,%o5
b L77047
st %o5,srcbase
LY28: ! [internal]
tst %o7
be,a LY26
ld bb_fast,%o2
ld bb_fast,%o0
tst %o0
be,a LY25
ld dstbpl,%o7
ld dstbpl_rshift_3,%o2
ld OrigDstAddr,%o1
add %o1,%o2,%o1
st %o1,dst32addr
b L77331
st %o1,OrigDstAddr
LY25: ! [internal]
ld OrigDstAddr,%o5
ld w,%l7
add Rdst32lbit,%o7,Rdst32lbit
sra Rdst32lbit,5,%o3
and Rdst32lbit,31,Rdst32lbit
sll %o3,2,%o3
add %o5,%o3,%o3
add Rdst32lbit,%l7,%l7
sub %l7,1,Rdst32rbit
tst Rdst32lbit
st %o5,dst32addr
st %o3,OrigDstAddr
and Rdst32rbit,31,Rdst32rbit
be L77329
st %o3,dst32addr
mov 32,%o4
sub %o4,Rdst32lbit,%o4
mov -1,%i5
sll %i5,%o4,%i5
b L77330
xor %i5,-1,%i5
L77329:
mov -1,%i5
L77330:
mov 31,%o3
sub %o3,Rdst32rbit,%o3
mov -1,Rpostloop_mask
sll Rpostloop_mask,%o3,Rpostloop_mask
mov %i5,Rpreloop_mask
and Rpreloop_mask,Rpostloop_mask,%o1
sra %l7,5,%l7
dec %l7
st %o1,sdw_mask
L77331:
tst %o0
be,a LY24
ld srcbpl,%o3
ld srcbpl_rshift_3,%o7
ld OrigSrcAddr,%o5
add %o5,%o7,%o5
st %o5,src32addr
b L77047
st %o5,OrigSrcAddr
LY24: ! [internal]
ld OrigSrcAddr,%o2
add Rsrc32lbit,%o3,Rsrc32lbit
ld w,%o3
sra Rsrc32lbit,5,%o0
and Rsrc32lbit,31,Rsrc32lbit
add Rsrc32lbit,%o3,%o3
sub Rsrc32lbit,Rdst32lbit,%i1
sll %o0,2,%o0
add %o2,%o0,%o0
and %i1,31,%i1
dec %o3
and %o3,31,%o3
tst %i1
sub Rdst32lbit,Rsrc32lbit,RsrcRshift
st %o2,src32addr
st %o0,OrigSrcAddr
st %o3,src32rbit
and RsrcRshift,31,RsrcRshift
be L77335
st %o0,src32addr
mov -1,%i5
sll %i5,%i1,%i5
b L77336
xor %i5,-1,%i5
L77335:
mov -1,%i5
L77336:
b L77047
mov %i5,RsrcRmask
LY26: ! [internal]
tst %o2
be,a LY23
ld dstbpl,%i5
ld dstbpl_rshift_3,%o4
ld OrigDstAddr,%o3
add %o3,%o4,%o3
st %o3,dst32addr
b L77347
st %o3,OrigDstAddr
LY23: ! [internal]
ld OrigDstAddr,%o0
add Rdst32rbit,%i5,%i5
tst %i5
bge L77342
st %o0,dst32addr
mov 31,%l7
sub %l7,%i5,%l7
sra %l7,5,%l7
sll %l7,2,%l7
sub %o0,%l7,%o0
b L77343
st %o0,dst32addr
L77342:
sra Rdst32lbit,5,Rdst32lbit
sll Rdst32lbit,2,Rdst32lbit
add %o0,Rdst32lbit,Rdst32lbit
st Rdst32lbit,dst32addr
L77343:
ld w,Rdst32lbit
ld dst32addr,%o4
and %i5,31,Rdst32rbit
ld w,%i5
sub Rdst32rbit,Rdst32lbit,Rdst32lbit
inc Rdst32lbit
! and Rdst32lbit,31,Rdst32lbit
andcc Rdst32lbit,31,Rdst32lbit
be Ldst0b
mov -1,Rpostloop_mask
mov 32,%o3
sub %o3,Rdst32lbit,%o3
mov 31,%o5
sub %o5,Rdst32rbit,%o5
sll Rpostloop_mask,%o3,Rpostloop_mask
xor Rpostloop_mask,-1,Rpostloop_mask ! from below
Ldst0b: sub %i5,Rdst32rbit,%i5
mov -1,Rpreloop_mask
sll Rpreloop_mask,%o5,Rpreloop_mask
dec %i5
! xor Rpostloop_mask,-1,Rpostloop_mask
and Rpreloop_mask,Rpostloop_mask,%o2
tst %i5
st %o4,OrigDstAddr
ble L77345
st %o2,sdw_mask
b L77346
sra %i5,5,%i5
L77345:
mov 0,%i5
L77346:
mov %i5,%l7
L77347:
ld bb_fast,%o0
tst %o0
be,a LY22
ld srcbpl,%i1
ld srcbpl_rshift_3,%o2
ld OrigSrcAddr,%o1
add %o1,%o2,%o1
st %o1,src32addr
b L77047
st %o1,OrigSrcAddr
LY22: ! [internal]
ld src32rbit,%o7 ! src32rbit loaded
ld OrigSrcAddr,%o5
add %o7,%i1,%i1
tst %i1
bge L77351
st %o5,src32addr
mov 31,%i2
sub %i2,%i1,%i2
sra %i2,5,%i2
sll %i2,2,%i2
sub %o5,%i2,%o5
b L77352
st %o5,src32addr
L77351:
sra %i1,5,%o3
sll %o3,2,%o3
add %o5,%o3,%o3
st %o3,src32addr
L77352:
ld w,Rsrc32lbit
and %i1,31,%i1
sub %i1,Rsrc32lbit,Rsrc32lbit
inc Rsrc32lbit
and Rsrc32lbit,31,Rsrc32lbit
st %i1,src32rbit
sub Rsrc32lbit,Rdst32lbit,%i1
and %i1,31,%i1
tst %i1
sub Rdst32lbit,Rsrc32lbit,RsrcRshift
be L77354
and RsrcRshift,31,RsrcRshift
mov -1,%i5
sll %i5,%i1,%i5
b L77355
xor %i5,-1,%i5
L77354:
mov 0,%i5
L77355:
ld src32addr,%o5
mov %i5,RsrcRmask
st %o5,OrigSrcAddr
L77047:
ld num_lines_remaining,%i5
ld num_lines_remaining,%o3
tst %i5
dec %o3
bg LY8
st %o3,num_lines_remaining
LY1: ! [internal]
ret
restore %g0,0,%o0
.seg "data" ! [internal]