mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-15 15:57:13 +00:00
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
1937 lines
31 KiB
ArmAsm
Executable File
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]
|