mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
b4391d0643
* docs: documentation pass * docs: main README pass
2332 lines
119 KiB
NASM
2332 lines
119 KiB
NASM
;; Register use (after init and effect setup)
|
|
;; to be extra annoying, they often stash stuff in
|
|
;; w (and sometimes z) and use xyz for other stuff.
|
|
|
|
;; vf01 = [lt0_dir.xyz, pfog0]
|
|
;; vf02 = [lt1_dir.xyz, fog-min]
|
|
;; vf03 = [lt2_dir.xyz, fog-max]
|
|
;; vf04 = [lt0_color]
|
|
;; vf05 = [lt1_color]
|
|
;; vf06 = [lt2_color]
|
|
;; vf07 = [lt_ambient]
|
|
;; vf17 = [2048, 255, -65537, xyz-add.x] (the ?? is set per fragment)
|
|
;; vf18 = [st-out-X, st-out-X, -65537, xyz-add.y] (X = a if xtop = 0, X = b otherwise)
|
|
;; vf19 = [st-magic, st-magic, -65537, xyz-add.z]
|
|
;; vf22 = hvdf-offset (does get set to others, but is always restored)
|
|
;; vf29 = [??, ??, ??, 0.003921569]
|
|
|
|
|
|
;; Low Memory use (after init and effect setup)
|
|
;; 1 - [adgif_giftag, use_mercprime]
|
|
;; 2 - hvdf-offset
|
|
;; 3 - [p0x, p1y, p2z, p2w] (note p2w, not p3w here!)
|
|
;; 4 - [p3x, p3y, p3z, p3w]
|
|
;; 5 - [p0x*sc, p1y*sc, p2z*sc, p2w*sc] (where sc is the xyz-scale of the header)
|
|
|
|
;; 132 - not double buffered, lights + merc-ctrl-header (per ctrl)
|
|
;; 132
|
|
;; 133 light 1 dir, w has flags (0x44 for ignore alpha, )
|
|
;; 134 light 2 dir, w has fade out parameter (how much to fade out)
|
|
;; 139 - [xyz_scale, st-magic, st-out-a, st-out-b]
|
|
;; 140 - not double buffered, header (per effect)
|
|
|
|
;; xtop + 140 + st-out
|
|
;; this contains the uploaded fp data.
|
|
;; the first
|
|
|
|
|
|
;; initialization - this runs after the merc program is uploaded and the vu1 low memory
|
|
;; block is uploaded. It sets constant registers and stashes some stuff in memory.
|
|
|
|
;; - set vf01.w to pfog0
|
|
lq.xyzw vf01, 7(vi00) | nop ;; vf01 = fog
|
|
lq.xyzw vf25, 3(vi00) | nop ;; vf25 = perspective.row0
|
|
lq.xyzw vf26, 4(vi00) | nop ;; vf26 = perspective.row1
|
|
lq.xyzw vf27, 5(vi00) | nop ;; vf27 = perspective.row2
|
|
lq.xyzw vf28, 6(vi00) | nop ;; vf28 = perspective.row3
|
|
mr32.xyzw vf01, vf01 | nop ;; rotate pfog0 into vf01.w
|
|
move.y vf25, vf26 | nop ;; setting up vf25
|
|
move.zw vf25, vf27 | nop ;; same
|
|
sq.xyzw vf25, 3(vi00) | nop ;; setting up low 3.
|
|
2048.0 | nop :i ;; setup I
|
|
255.0 | maxi.x vf17, vf00, I :i ;; setup vf17
|
|
-65537.0 | maxi.y vf17, vf00, I :i ;; setup vf17
|
|
mr32.xyzw vf02, vf01 | minii.z vf17, vf00, I ;; vf17, setup vf02.w
|
|
lq.xyzw vf22, 2(vi00) | minii.z vf18, vf00, I ;; vf18.z, vf22 as hvdf-offset
|
|
0.003921569 | minii.z vf19, vf00, I :i ;; vf19.z
|
|
sq.xyzw vf28, 4(vi00) | minii.w vf29, vf00, I :e ;; setup low 4
|
|
mr32.xyzw vf03, vf02 | nop ;; set up vf03
|
|
|
|
;; the 17/20 entry points are the same as 32/35, but should be used
|
|
;; on the first frag of an effect. they set up lights.
|
|
|
|
;; enter 17 (setup lights, with merc "prime")
|
|
iaddi vi07, vi00, 0x1 | nop ;; set vi07 mercprime
|
|
b L2 | nop
|
|
isw.w vi07, 1(vi00) | nop ;; leave behind mercprime flag.
|
|
ENTER_20: ;; (setup lights, no merc prime)
|
|
iaddi vi07, vi00, 0x0 | nop ;; no mercprime for us today.
|
|
L2: ;; (setup lights common)
|
|
lq.xyzw vf25, 139(vi00) | nop ;; vf25 = merc-ctrl-header
|
|
lq.xyzw vf26, 3(vi00) | nop ;; vf26 = persp-diag
|
|
lq.xyz vf01, 132(vi00) | nop ;; setup vf01 light 0 dir
|
|
lq.xyz vf02, 133(vi00) | nop ;; setup vf02 light 1 dir
|
|
lq.xyz vf03, 134(vi00) | addy.xy vf19, vf00, vf25 ;; vf03 light setup, st-magic
|
|
lq.xyzw vf04, 135(vi00) | mulx.xyzw vf26, vf26, vf25 ;; scaled persp diag
|
|
lq.xyzw vf05, 136(vi00) | nop
|
|
lq.xyzw vf06, 137(vi00) | nop
|
|
lq.xyzw vf07, 138(vi00) | nop
|
|
b L5 | nop
|
|
sq.xyzw vf26, 5(vi00) | nop ;; stash persp diag scaled
|
|
|
|
;; 32/35 are prime/normal entry points for normal drawing.
|
|
ENTER_32: ;; (run, use prev lights, with merc "prime")
|
|
iaddi vi07, vi00, 0x1 | nop ;; vi07 for mercprime
|
|
b L5 | nop
|
|
isw.w vi07, 1(vi00) | nop ;; stash mercprime flag
|
|
ENTER_35:
|
|
iaddi vi07, vi00, 0x0 | nop
|
|
|
|
L5: ;; common effect drawing entry point.
|
|
;; all draw paths go to here.
|
|
lq.xyzw vf28, 139(vi00) | minix.xyzw vf15, vf00, vf00 ;; vf28 = mch, vf15 = [0, 0, 0, 0]
|
|
xtop vi15 | nop ;; vi15 = 0 (output buffer)
|
|
iaddiu vi12, vi15, 0x8c | nop ;; vi12 = xtop + 140 (merc-byte-header, u4)
|
|
ibeq vi00, vi15, L6 | nop ;; branch if output buffer a (0)
|
|
ilwr.w vi03, vi12 | maxz.xy vf18, vf00, vf28 ;; set vf18.xy = [st-out-a, st-out-a] (for a buffer)
|
|
nop | maxw.xy vf18, vf00, vf28 ;; set vf18.xy = [st-out-b, st-out-b] (for b buffer)
|
|
L6:
|
|
ilw.w vi10, 133(vi00) | nop ;; vi10 = fade out flags
|
|
iaddiu vi15, vi15, 0x173 | nop ;; vi15 = xtop + 371
|
|
ilw.y vi02, 2(vi12) | nop ;; vi02 = strip-len
|
|
lq.xyzw vf14, 0(vi00) | nop ;; vf14 = tri-strip-gif-tag
|
|
ibeq vi00, vi10, L7 | nop ;; branch to L7 if no fade out.
|
|
iadd vi03, vi03, vi12 | nop ;; st-output location = {st-out-a, st-out-b} + xtop + 140
|
|
|
|
;; modify vf14 to have :abe, setup constants for fadeout.
|
|
mr32.xyzw vf27, vf14 | nop ;; vf27 = [yzwx] of the tri-strip-gif-tag
|
|
ilw.w vi11, 134(vi00) | nop ;; vi11 = fade-out parameter
|
|
iaddiu vi13, vi00, 0x42 | nop ;; vi13 = 0x42
|
|
mr32.y vf14, vf27 | nop ;; replace y of tag with w. (enables abe in the gs-prim)
|
|
|
|
;; next, we set up the memory layout of the output buffer.
|
|
;; the output buffer has two (poorly name) parts: "strip" and "shader".
|
|
;; the "strip" part will continue using the shader of the previous fragment.
|
|
;; it has a single tag. This "strip" part be left out, if desired. It is always first.
|
|
;; the "strip-len" is how large this data is.
|
|
|
|
;; the "shader" part contains a series of [shader, triangles] groups.
|
|
;; it sets the shader settings, then draws stuff.
|
|
;; the shader-cnt is how many [shader, triangle] groups there are.
|
|
;; the sizes are stored in the adgif data itself
|
|
|
|
;; the blocks below place the shaders and gif tags in memory, setting nloops and eops.
|
|
|
|
L7:
|
|
ilwr.w vi09, vi03 | nop ;; vi09 = fp-header u8's [shader-cnt, kick-off, kick-step, hword-cnt]
|
|
lqi.xyzw vf27, vi03 | nop ;; vf27 = xyz-add
|
|
ilw.x vi04, 1(vi12) | nop ;; vi04 = mat1-cnt
|
|
iaddiu vi05, vi00, 0x7f | addw.xyz vf15, vf15, vf00 ;; vf15 = [1, 1, 1, 0], vi05 = 0x7f
|
|
iand vi09, vi09, vi05 | nop ;; mask to get vi09 = shader-cnt
|
|
ilw.y vi06, 1(vi12) | miniz.w vf19, vf00, vf27 ;; set add, vi06 = mat2-cnt
|
|
ibeq vi00, vi02, L9 | miniy.w vf18, vf00, vf27 ;; skip to L9 if strip-len is 0
|
|
ilwr.z vi01, vi12 | minix.w vf17, vf00, vf27 ;; vi01 = lump-off
|
|
|
|
;; we have strip
|
|
ibne vi00, vi09, L8 | nop ;; goto L8 if we have nonzero shader-cnt
|
|
sq.yzw vf14, 0(vi15) | nop ;; store giftag (only upper 96 bits)
|
|
|
|
;; we have strip, but no shader. set eop.
|
|
iaddiu vi02, vi02, 0x4000 | nop ;; build the first 32-bits, strip-len + eop flag
|
|
iaddiu vi02, vi02, 0x4000 | nop ;; imm 0x8000 doesn't fit, have to add 2x.
|
|
iswr.x vi02, vi15 | nop ;; store nloop = strip-len, eop.
|
|
b L12 | nop ;; skip shader setup!
|
|
nop | nop
|
|
L8:
|
|
iswr.x vi02, vi15 | nop ;; nonzero shader and nonzero strip. set nloop on the strip tag, but not eop.
|
|
L9:
|
|
lq.xyzw vf13, 1(vi00) | nop ;; vf13 = adgif gif tag.
|
|
L10: ;; shader loop
|
|
ilwr.w vi02, vi03 | nop ;; vi02 = shader control word 0 (dest offset)
|
|
lqi.xyzw vf08, vi03 | nop ;; load shader data
|
|
lqi.xyzw vf09, vi03 | nop
|
|
lqi.xyzw vf10, vi03 | nop
|
|
lqi.xyzw vf11, vi03 | nop
|
|
lqi.xyzw vf12, vi03 | nop
|
|
iadd vi02, vi02, vi15 | nop ;; compute destination
|
|
mtir vi08, vf09.w | nop ;; vi08 = shader control word 1 ()
|
|
sqi.xyzw vf13, vi02 | nop ;; store giftag
|
|
sqi.xyzw vf08, vi02 | nop ;; store shader0/5
|
|
sqi.xyzw vf09, vi02 | nop ;; store shader1/5
|
|
mfir.x vf14, vi08 | nop ;; vf14 = post-shader giftag lower-32
|
|
sqi.xyzw vf10, vi02 | nop ;; store shader2/5
|
|
sqi.xyzw vf11, vi02 | nop ;; store shader3/5
|
|
ibeq vi00, vi10, L11 | nop ;; goto L11 if no fadeout
|
|
sqi.xyzw vf12, vi02 | nop ;; store shader4/5
|
|
|
|
;; fade out setup (todo). it just modifies shaders
|
|
mtir vi14, vf12.z | nop
|
|
isw.x vi10, -1(vi02) | nop
|
|
ibeq vi14, vi13, L11 | nop
|
|
isw.y vi11, -1(vi02) | nop
|
|
ilw.x vi13, -4(vi02) | nop
|
|
isubiu vi14, vi00, 0x1d | nop
|
|
iand vi13, vi13, vi14 | nop
|
|
iaddi vi13, vi13, 0xc | nop
|
|
isw.x vi13, -4(vi02) | nop
|
|
iaddiu vi13, vi00, 0x42 | nop
|
|
isw.z vi13, -1(vi02) | nop
|
|
|
|
;; loop!
|
|
L11:
|
|
ibgtz vi08, L10 | nop ;; cool trick, eop is the sign bit here.
|
|
sq.xyzw vf14, 0(vi02) | nop
|
|
|
|
;; end of shader and strip setup.
|
|
|
|
;; matrix crap 1
|
|
L12:
|
|
lq.xyzw vf28, 3(vi00) | nop ;; vf28 = persp-diag
|
|
ilw.y vi08, 3(vi12) | nop ;; vi08 = mat-slot.0
|
|
lq.xyzw vf16, 5(vi00) | nop ;; vf16 = scaled-persp-diag
|
|
lq.xyzw vf20, 4(vi00) | nop ;; vf20 = persp-off
|
|
ilw.z vi09, 3(vi12) | mul.xyzw vf27, vf28, vf15 ;; vf27 = [pdx, pdy, pdz, 0], vi09 = mat-slot.1
|
|
ior vi11, vi08, vi00 | mul.xyzw vf28, vf28, vf00 ;; vf28 = [0, 0, 0, pdw], vi11 = vi08 = mat-slot.0
|
|
ibeq vi00, vi08, L14 | mul.xyzw vf15, vf16, vf15 ;; vf15 = [spdx, spdy, spdz, 0], skip if slot = 0
|
|
iaddi vi13, vi12, 0x3 | mul.xyzw vf16, vf16, vf00 ;; vi13 = mat-slot-ptr, vf16 = [0, 0, 0, spdw]
|
|
|
|
;; pipelined matrix thing
|
|
;; multiply matrices and store them back
|
|
;; run until we get a slot of 0.
|
|
;; mula.xyzw ACC, vf15, vf08
|
|
;; maddz.xyzw vf09, vf16, vf08
|
|
;; mula.xyzw ACC, vf15, vf10
|
|
;; maddz.xyzw vf11, vf16, vf10
|
|
;; mula.xyzw ACC, vf15, vf12
|
|
;; maddz.xyzw vf13, vf16, vf12
|
|
;; addax.xyzw vf20, vf00
|
|
;; madda.xyzw ACC, vf27, vf25
|
|
;; maddz.xyzw vf26, vf28, vf25
|
|
|
|
L13:
|
|
lq.xyzw vf08, 0(vi08) | addax.xyzw vf20, vf00
|
|
lq.xyzw vf10, 1(vi08) | madda.xyzw ACC, vf27, vf25
|
|
lq.xyzw vf12, 2(vi08) | maddz.xyzw vf26, vf28, vf25
|
|
lq.xyzw vf25, 3(vi08) | nop
|
|
sq.xyzw vf09, 0(vi11) | mula.xyzw ACC, vf15, vf08
|
|
sq.xyzw vf11, 1(vi11) | maddz.xyzw vf09, vf16, vf08
|
|
sq.xyzw vf13, 2(vi11) | mula.xyzw ACC, vf15, vf10
|
|
sq.xyzw vf26, 3(vi11) | maddz.xyzw vf11, vf16, vf10
|
|
ibeq vi00, vi08, L14 | mula.xyzw ACC, vf15, vf12
|
|
ilwr.w vi10, vi13 | maddz.xyzw vf13, vf16, vf12
|
|
lq.xyzw vf08, 0(vi09) | addax.xyzw vf20, vf00
|
|
lq.xyzw vf10, 1(vi09) | madda.xyzw ACC, vf27, vf25
|
|
lq.xyzw vf12, 2(vi09) | maddz.xyzw vf26, vf28, vf25
|
|
lq.xyzw vf25, 3(vi09) | nop
|
|
sq.xyzw vf09, 0(vi08) | mula.xyzw ACC, vf15, vf08
|
|
sq.xyzw vf11, 1(vi08) | maddz.xyzw vf09, vf16, vf08
|
|
sq.xyzw vf13, 2(vi08) | mula.xyzw ACC, vf15, vf10
|
|
sq.xyzw vf26, 3(vi08) | maddz.xyzw vf11, vf16, vf10
|
|
ibeq vi00, vi09, L14 | mula.xyzw ACC, vf15, vf12
|
|
ilw.x vi11, 1(vi13) | maddz.xyzw vf13, vf16, vf12
|
|
lq.xyzw vf08, 0(vi10) | addax.xyzw vf20, vf00
|
|
lq.xyzw vf10, 1(vi10) | madda.xyzw ACC, vf27, vf25
|
|
lq.xyzw vf12, 2(vi10) | maddz.xyzw vf26, vf28, vf25
|
|
lq.xyzw vf25, 3(vi10) | nop
|
|
sq.xyzw vf09, 0(vi09) | mula.xyzw ACC, vf15, vf08
|
|
sq.xyzw vf11, 1(vi09) | maddz.xyzw vf09, vf16, vf08
|
|
sq.xyzw vf13, 2(vi09) | mula.xyzw ACC, vf15, vf10
|
|
sq.xyzw vf26, 3(vi09) | maddz.xyzw vf11, vf16, vf10
|
|
ibeq vi00, vi10, L14 | mula.xyzw ACC, vf15, vf12
|
|
ilw.y vi08, 1(vi13) | maddz.xyzw vf13, vf16, vf12
|
|
lq.xyzw vf08, 0(vi11) | addax.xyzw vf20, vf00
|
|
lq.xyzw vf10, 1(vi11) | madda.xyzw ACC, vf27, vf25
|
|
lq.xyzw vf12, 2(vi11) | maddz.xyzw vf26, vf28, vf25
|
|
lq.xyzw vf25, 3(vi11) | nop
|
|
sq.xyzw vf09, 0(vi10) | mula.xyzw ACC, vf15, vf08
|
|
sq.xyzw vf11, 1(vi10) | maddz.xyzw vf09, vf16, vf08
|
|
sq.xyzw vf13, 2(vi10) | mula.xyzw ACC, vf15, vf10
|
|
sq.xyzw vf26, 3(vi10) | maddz.xyzw vf11, vf16, vf10
|
|
iaddi vi13, vi13, 0x1 | nop
|
|
ibne vi00, vi11, L13 | mula.xyzw ACC, vf15, vf12
|
|
ilwr.z vi09, vi13 | maddz.xyzw vf13, vf16, vf12
|
|
;; end matrix setup
|
|
|
|
;; the L14 -> L26 area handles mat1s.
|
|
;; it appears to set vi03 as the rgba reading pointer
|
|
;; and vi04 as the end of mat1's rgba (poniter to last, not one past the end)
|
|
;; and vi06 as the end of mat2's rgba
|
|
;; and vi07 as the end of mat3's rgba
|
|
|
|
L14:
|
|
ilw.x vi02, 3(vi12) | nop ;; vi02 = perc-off
|
|
ibeq vi00, vi04, L26 | nop ;; goto L26 if mat1 count is 0
|
|
iadd vi01, vi01, vi12 | nop ;; vi01 = lump.
|
|
ilwr.x vi08, vi01 | nop ;; vi08 = lump[0].x = mat-0?
|
|
lqi.xyzw vf08, vi01 | nop ;; vf08 = lump[0] = [mat0, mat1, nrmx, posx]?
|
|
lqi.xyzw vf11, vi01 | nop ;; vf11 = lump[1] = [dst0, dst1, nrmy, posy]?
|
|
lqi.xyzw vf14, vi01 | nop ;; vf14 = lump[2] = [texs, text, nrmz, posz]?
|
|
lq.xyz vf29, 4(vi08) | nop ;; vf29 = [nmat0x, nmat0y, nmat0z, 0.003921569]
|
|
lq.xyz vf30, 5(vi08) | add.zw vf08, vf08, vf17 ;; add to nrm and pos, keep loading nmat (w is ? here)
|
|
lq.xyzw vf31, 6(vi08) | add.xyzw vf11, vf11, vf18 ;; lump unpack and add
|
|
iaddi vi04, vi04, -0x1 | add.xyzw vf14, vf14, vf19 ;; lump unpack and add, subtract 1 from mat1 count
|
|
iadd vi02, vi02, vi12 | nop ;; vi02 = perc
|
|
|
|
;; right does matrix mul with nmat and the vertex.
|
|
;; it rotates the normal
|
|
;; left lqi's from perc, unpacks dst0, dst1 to vi10 and vi13
|
|
lqi.xyzw vf24, vi02 | mulaz.xyzw ACC, vf29, vf08
|
|
mtir vi10, vf11.x | maddaz.xyzw ACC, vf30, vf11
|
|
mtir vi13, vf11.y | maddz.xyz vf11, vf31, vf14
|
|
|
|
;; vf25, vf26, vf27, vf28 is the tmat
|
|
lq.xyzw vf25, 0(vi08) | nop
|
|
lq.xyzw vf26, 1(vi08) | itof0.xyzw vf24, vf24 ;; perc to floats: no idea what this is yet.
|
|
lq.xyzw vf27, 2(vi08) | nop
|
|
erleng.xyz P, vf11 | nop ;; p = normal length.
|
|
lq.xyzw vf28, 3(vi08) | mulaw.xyzw ACC, vf25, vf08 ;; transform point, keep loading tmat
|
|
ior vi15, vi07, vi00 | maddaw.xyzw ACC, vf26, vf11 ;; vi15 = using mercprime
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 ;; vf14.z = 1. (clears nrmz)
|
|
lqi.xyzw vf09, vi01 | nop ;; vf09 = [mat0, mat1, nrmx, posx]? (P1)
|
|
ilwr.y vi03, vi12 | nop ;; vi03 = rgba-off
|
|
ilw.z vi07, 1(vi12) | nop ;; vi07 = mat3-cnt (why.....)
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 ;; P1 vert load | finish xf pt
|
|
lqi.xyzw vf15, vi01 | nop ;; P1 vert load
|
|
mtir vi08, vf09.x | nop ;; P1 mat0
|
|
ibeq vi00, vi15, L15 | nop
|
|
iadd vi03, vi03, vi12 | nop ;; vi03 = rgba
|
|
|
|
;; only if merc-prime
|
|
nop | miniw.w vf08, vf08, vf01
|
|
|
|
L15:
|
|
;; rhs is lump adding
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 ;; perspective divide!
|
|
iadd vi04, vi04, vi03 | add.xyzw vf12, vf12, vf18 ;; vi04 = rgba + mat1-cnt - 1 (??)
|
|
;; note: the -1 is because the last vertex is handled
|
|
lq.xyz vf29, 4(vi08) | add.xyzw vf15, vf15, vf19 ;; P1 load nmat | P1 lump add v2
|
|
|
|
lq.xyz vf30, 5(vi08) | nop ;; P1 load nmat
|
|
iadd vi06, vi06, vi04 | nop ;; vi06 = rgba + mat1-cnt + mat2-cnt - 1
|
|
lq.xyzw vf31, 6(vi08) | nop ;; p1 load mat
|
|
lq.xyzw vf25, 0(vi08) | nop ;; p1 load mat
|
|
lq.xyzw vf26, 1(vi08) | mul.xyz vf08, vf08, Q ;; p1 load mat | perspective multiply
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q ;; p1 get dst | vf14 = [s*Q, t*Q, Q, posz*Q]
|
|
mtir vi14, vf12.y | nop ;; p1 get dst
|
|
lq.xyzw vf27, 2(vi08) | nop ;; p1 load mat
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 ;; load rgba, hvdf offset
|
|
;; rhs is p1's normal xform
|
|
iadd vi07, vi07, vi06 | mulaz.xyzw ACC, vf29, vf09 ;; vi07 = rgba + mat1-cnt + mat2-cnt + mat3-cnt - 1
|
|
lq.xyzw vf28, 3(vi08) | maddaz.xyzw ACC, vf30, vf12 ;;
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 ;; vf20.w = normal length
|
|
nop | nop
|
|
1024.0 | miniw.w vf08, vf08, vf03 :i ;; fog max
|
|
ibne vi00, vi15, L82 | mulaw.xyzw ACC, vf25, vf09 ;; if mercprime, goto L82 | rhs is p1
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 ;; vi09 = p0 vtx's mat1 | normalization of normal
|
|
erleng.xyz P, vf12 | nop ;; p1's nrm length
|
|
nop | maddaw.xyzw ACC, vf26, vf12 ;; p1 nrm xf
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 ;; p1
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 ;; dot with light dir
|
|
ibne vi04, vi03, L17 | madday.xyzw ACC, vf02, vf11 ;; branch to L17 if not done
|
|
nop | maddz.xyzw vf11, vf03, vf11
|
|
ibne vi06, vi03, L31 | nop ;; branch to L31 if mat2's can be done
|
|
nop | nop
|
|
b L67 | nop ;; go to mat3
|
|
nop | nop
|
|
|
|
;; pipelined mat1 loop here
|
|
L16:
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
L17: ;; entry from above.
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 ;; all p1
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 ;; p1 | fog min
|
|
mtir vi08, vf10.x | itof0.xyzw vf23, vf23 ;; rgba to float
|
|
ilw.y vi09, -9(vi01) | maxx.xyzw vf11, vf11, vf00 ;; vi09 = mat1 | light clamp
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17 ;; pipe 1
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18 ;; move | pipe1
|
|
lq.xyz vf29, 4(vi08) | add.xyzw vf16, vf16, vf19 ;; pipe | pipe
|
|
lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf11 ;; more lights
|
|
ibgtz vi09, L18 | madday.xyzw ACC, vf05, vf11
|
|
lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L18:
|
|
lq.xyzw vf25, 0(vi08) | maddw.xyzw vf11, vf07, vf00 ;; p1 | add ambient
|
|
lq.xyzw vf26, 1(vi08) | mul.xyz vf09, vf09, Q ;; p | p
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q ;; p | p
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21 ;; p | position ftoi
|
|
lq.xyzw vf27, 2(vi08) | mul.xyzw vf11, vf11, vf23 ;; p | vertex coloring
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
ibne vi00, vi09, L19 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L19:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10
|
|
lq.xyzw vf28, 3(vi08) | mulw.xyzw vf12, vf12, vf20
|
|
erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11
|
|
;; branch to end (first version in this loop)
|
|
ibne vi04, vi03, L20 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
ibne vi06, vi03, L36 | nop ;; branch if there's mat2's to do
|
|
ilw.y vi09, -6(vi01) | nop ;; pipeline "exiting"
|
|
ibne vi07, vi03, L72 | nop
|
|
nop | nop
|
|
b L143 | nop
|
|
nop | nop
|
|
L20:
|
|
lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12 ;;
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 ;;
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 ;;
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28 ;;
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02 ;;
|
|
mtir vi08, vf08.x | itof0.xyzw vf23, vf23 ;;
|
|
ilw.y vi09, -9(vi01) | maxx.xyzw vf12, vf12, vf00 ;;
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17 ;;
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18 ;;
|
|
lq.xyz vf29, 4(vi08) | add.xyzw vf14, vf14, vf19
|
|
lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf12 ;;
|
|
ibgtz vi09, L21 | madday.xyzw ACC, vf05, vf12 ;;
|
|
lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf12 ;;
|
|
nop | addx.w vf21, vf21, vf17 ;;
|
|
L21:
|
|
lq.xyzw vf25, 0(vi08) | maddw.xyzw vf12, vf07, vf00 ;;
|
|
lq.xyzw vf26, 1(vi08) | mul.xyz vf10, vf10, Q ;;
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q ;;
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21 ;;
|
|
lq.xyzw vf27, 2(vi08) | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
ibne vi00, vi09, L22 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11 ;;
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L22:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14 ;;
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 ;;
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 ;;
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08 ;;
|
|
lq.xyzw vf28, 3(vi08) | mulw.xyzw vf13, vf13, vf20 ;;
|
|
erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12 ;;
|
|
ibne vi04, vi03, L23 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
ibne vi06, vi03, L41 | nop
|
|
ilw.y vi09, -6(vi01) | nop
|
|
ibne vi07, vi03, L77 | nop
|
|
nop | nop
|
|
b L153 | nop
|
|
nop | nop
|
|
L23:
|
|
lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13 ;;
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 ;;
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 ;;
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02 ;;
|
|
mtir vi08, vf09.x | itof0.xyzw vf23, vf23 ;;
|
|
ilw.y vi09, -9(vi01) | maxx.xyzw vf13, vf13, vf00
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18 ;;
|
|
lq.xyz vf29, 4(vi08) | add.xyzw vf15, vf15, vf19
|
|
lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf13 ;;
|
|
ibgtz vi09, L24 | madday.xyzw ACC, vf05, vf13 ;;
|
|
lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf13 ;;
|
|
nop | addx.w vf21, vf21, vf17 ;;
|
|
L24:
|
|
lq.xyzw vf25, 0(vi08) | maddw.xyzw vf13, vf07, vf00
|
|
lq.xyzw vf26, 1(vi08) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21 ;;
|
|
lq.xyzw vf27, 2(vi08) | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
ibne vi00, vi09, L25 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L25:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
lq.xyzw vf28, 3(vi08) | mulw.xyzw vf11, vf11, vf20
|
|
erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13
|
|
ibne vi04, vi03, L16 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
ibne vi06, vi03, L30 | nop
|
|
ilw.y vi09, -6(vi01) | nop
|
|
ibne vi07, vi03, L66 | nop
|
|
nop | nop
|
|
b L163 | nop
|
|
nop | nop
|
|
|
|
L26: ;; pipeline startup for mat2's (assuming you had no mat1's to get things started)
|
|
ibeq vi00, vi06, L61 | nop ;; goto L61 if no mat2's
|
|
iadd vi02, vi02, vi12 | nop ;; compute perc offset
|
|
lqi.xyzw vf08, vi01 | nop ;; vf08 = vtx0 = [mat0, mat1, nrmx, posx]
|
|
lqi.xyzw vf24, vi02 | nop ;; vf24 = perc
|
|
lqi.xyzw vf11, vi01 | nop ;; vf11 = vtx1 = [dst0, dst1, nrmy, posy]
|
|
lqi.xyzw vf14, vi01 | nop ;; vf14 = vtx2 = [texs, text, nrmz, posz]
|
|
mtir vi10, vf08.x | nop ;; vi10 = mat0
|
|
mtir vi13, vf08.y | itof0.xyzw vf24, vf24 ;; vi13 = mat1 | vf24 = itof0(perc)
|
|
iaddi vi06, vi06, -0x1 | add.zw vf08, vf08, vf17 ;; dec count | lump offset
|
|
nop | add.xyzw vf11, vf11, vf18 ;; lump offset
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19 ;; vi10 = mat0 & 0x7f | lump offset
|
|
nop | mulw.xyzw vf24, vf24, vf29 ;; scale perc
|
|
iand vi13, vi13, vi05 | nop ;; vi13 = mat1 & 0x7f
|
|
|
|
;; left col is loading matrices, right col is multiplication by perc.
|
|
lq.xyzw vf20, 0(vi10) | nop
|
|
lq.xyzw vf25, 0(vi13) | nop
|
|
lq.xyzw vf23, 1(vi10) | nop
|
|
lq.xyzw vf26, 1(vi13) | nop
|
|
lq.xyzw vf20, 2(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi13) | maddy.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi10) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi13) | maddy.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi13) | maddy.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi10) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi13) | maddy.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi13) | maddy.xyz vf29, vf29, vf24
|
|
mtir vi10, vf11.x | mulax.xyzw ACC, vf23, vf24
|
|
mtir vi13, vf11.y | maddy.xyz vf30, vf30, vf24
|
|
nop | mulax.xyzw ACC, vf20, vf24
|
|
nop | maddy.xyzw vf31, vf31, vf24 ;; last perc multiply
|
|
nop | mulaz.xyzw ACC, vf29, vf08 ;; rotate normal
|
|
nop | maddaz.xyzw ACC, vf30, vf11
|
|
nop | maddz.xyz vf11, vf31, vf14
|
|
nop | nop
|
|
nop | nop
|
|
nop | mulaw.xyzw ACC, vf25, vf08 ;; xf point
|
|
iaddiu vi08, vi00, 0x243 | nop ;; vi08 = 0x243 = 579
|
|
erleng.xyz P, vf11 | nop ;; length of normal
|
|
ior vi15, vi07, vi00 | maddaw.xyzw ACC, vf26, vf11 ;; vi15 = mercprimt | xf point
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14 ;; set vf14.z = 1.0 | xf point
|
|
lqi.xyzw vf09, vi01 | nop ;; pipe |
|
|
ilwr.y vi03, vi12 | nop ;; vi03 = rgba-off
|
|
ilw.z vi07, 1(vi12) | nop ;; vi07 = mat3-cnt
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28 ;; pipe | xf point
|
|
lqi.xyzw vf15, vi01 | nop ;; pipe
|
|
mtir vi11, vf09.x | nop ;; pipe
|
|
ibeq vi00, vi15, L27 | nop ;; goto L27 if no merc-prim
|
|
mtir vi14, vf09.y | nop ;; pipe
|
|
iaddiu vi08, vi00, 0x539 | miniw.w vf08, vf08, vf01 ;; ONLY RUN IF MERCPRIME
|
|
L27:
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17 ;; perspective divide | pipe
|
|
iadd vi03, vi03, vi12 | add.xyzw vf12, vf12, vf18 ;; rgba off | pipe
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19 ;; pipe | pipe
|
|
iadd vi06, vi06, vi03 | nop ;; end addr calc1
|
|
iadd vi07, vi07, vi06 | nop ;; end addr calc2
|
|
iand vi14, vi14, vi05 | nop ;; pipe
|
|
ibne vi05, vi11, L28 | nop ;; branch on next(?) vertex mat0 sign bit
|
|
nop | mul.xyz vf08, vf08, Q ;; perspective
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | nop
|
|
b L29 | nop ;; branch to skip matrix load, if possible
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22 ;; load rgba | hvdf offset
|
|
L28:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
lq.xyzw vf25, 0(vi14) | nop
|
|
lq.xyzw vf23, 1(vi11) | nop
|
|
lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 2(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi14) | maddw.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi11) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi14) | maddw.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi14) | maddw.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi11) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi14) | maddw.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi14) | maddw.xyz vf29, vf29, vf24
|
|
lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24
|
|
mtir vi11, vf12.x | maddw.xyz vf30, vf30, vf24
|
|
mtir vi14, vf12.y | mulaz.xyzw ACC, vf20, vf24
|
|
iaddiu vi08, vi00, 0x1a1 | maddw.xyzw vf31, vf31, vf24
|
|
ibeq vi00, vi15, L29 | nop
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
iaddiu vi08, vi00, 0x48e | nop
|
|
L29:
|
|
nop | mulaz.xyzw ACC, vf29, vf09 ;; pipe
|
|
nop | maddaz.xyzw ACC, vf30, vf12 ;; pipe
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15 ;; normal length | pipe
|
|
nop | nop
|
|
1024.0 | miniw.w vf08, vf08, vf03 :i ;; fog max
|
|
ibne vi00, vi15, L93 | mulaw.xyzw ACC, vf25, vf09 ;; mercprime | pipe
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20 ;; vi09 = mat1 | normalize
|
|
erleng.xyz P, vf12 | nop ;; pipe
|
|
ibeq vi06, vi03, L65 | maddaw.xyzw ACC, vf26, vf12 ;; check done | pipe
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15 ;; pipe | pipe
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11 ;; pipe | dot product with light
|
|
jr vi08 | madday.xyzw ACC, vf02, vf11
|
|
nop | maddz.xyzw vf11, vf03, vf11
|
|
L30: ;; mat2 cross entry 3
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
L31:
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02
|
|
mtir vi12, vf10.x | itof0.xyzw vf23, vf23
|
|
mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18
|
|
iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L32 | madday.xyzw ACC, vf05, vf11
|
|
iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L32:
|
|
ibne vi05, vi12, L33 | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21
|
|
b L34 | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
L33:
|
|
lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23
|
|
lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22
|
|
lq.xyzw vf20, 2(vi12) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi15) | maddy.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi12) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi15) | maddy.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi12) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi15) | maddy.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi12) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi15) | maddy.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi12) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi15) | maddy.xyz vf29, vf29, vf24
|
|
mtir vi12, vf13.x | mulax.xyzw ACC, vf23, vf24
|
|
mtir vi15, vf13.y | maddy.xyz vf30, vf30, vf24
|
|
b L49 | mulax.xyzw ACC, vf20, vf24
|
|
lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24
|
|
L34:
|
|
ibgez vi09, L35 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L35:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20
|
|
erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11
|
|
ibne vi06, vi03, L36 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
ibne vi07, vi03, L72 | nop
|
|
nop | nop
|
|
b L143 | nop
|
|
nop | nop
|
|
L36: ;; mat2 cross entry 1
|
|
lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
;; END of first vertex....
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02
|
|
mtir vi10, vf08.x | itof0.xyzw vf23, vf23
|
|
mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L37 | madday.xyzw ACC, vf05, vf12
|
|
iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L37:
|
|
ibne vi05, vi10, L38 | maddw.xyzw vf12, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21
|
|
b L39 | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
L38:
|
|
lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23
|
|
lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22
|
|
lq.xyzw vf20, 2(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi13) | maddy.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi10) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi13) | maddy.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi13) | maddy.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi10) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi13) | maddy.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi13) | maddy.xyz vf29, vf29, vf24
|
|
mtir vi10, vf11.x | mulax.xyzw ACC, vf23, vf24
|
|
mtir vi13, vf11.y | maddy.xyz vf30, vf30, vf24
|
|
b L54 | mulax.xyzw ACC, vf20, vf24
|
|
lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24
|
|
L39:
|
|
ibgez vi09, L40 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L40:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20
|
|
erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12
|
|
ibne vi06, vi03, L41 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
ibne vi07, vi03, L77 | nop
|
|
nop | nop
|
|
b L153 | nop
|
|
nop | nop
|
|
L41: ;; mat2 cross entry 2
|
|
lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02
|
|
mtir vi11, vf09.x | itof0.xyzw vf23, vf23
|
|
mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L42 | madday.xyzw ACC, vf05, vf13
|
|
iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L42:
|
|
ibne vi05, vi11, L43 | maddw.xyzw vf13, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21
|
|
b L44 | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
L43:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23
|
|
lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 2(vi11) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi14) | maddy.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi11) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi14) | maddy.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi11) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi14) | maddy.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi11) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi14) | maddy.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi11) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi14) | maddy.xyz vf29, vf29, vf24
|
|
mtir vi11, vf12.x | mulax.xyzw ACC, vf23, vf24
|
|
mtir vi14, vf12.y | maddy.xyz vf30, vf30, vf24
|
|
b L59 | mulax.xyzw ACC, vf20, vf24
|
|
lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24
|
|
L44:
|
|
ibgez vi09, L45 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L45:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13
|
|
ibne vi06, vi03, L30 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
ibne vi07, vi03, L66 | nop
|
|
nop | nop
|
|
b L163 | nop
|
|
nop | nop
|
|
L46:
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
;; ugh, I think we jump here.
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28 ;; pipe | pipe
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02 ;; pipe | fogmin
|
|
mtir vi12, vf10.x | itof0.xyzw vf23, vf23 ;; pipe | vtx color convert
|
|
mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00 ;; pipe | light clamp
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18
|
|
iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L47 | madday.xyzw ACC, vf05, vf11
|
|
iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L47:
|
|
ibne vi05, vi12, L48 | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21
|
|
b L49 | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
L48:
|
|
lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q
|
|
lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23
|
|
lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22
|
|
lq.xyzw vf20, 2(vi12) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi15) | maddw.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi12) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi15) | maddw.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi12) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi15) | maddw.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi12) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi15) | maddw.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi12) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi15) | maddw.xyz vf29, vf29, vf24
|
|
lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24
|
|
mtir vi12, vf13.x | maddw.xyz vf30, vf30, vf24
|
|
mtir vi15, vf13.y | mulaz.xyzw ACC, vf20, vf24
|
|
b L34 | maddw.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L49:
|
|
ibgez vi09, L50 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13 ;; first store
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L50:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10 ;; second store
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20
|
|
erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11
|
|
ibne vi06, vi03, L51 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
ibne vi07, vi03, L72 | nop
|
|
nop | nop
|
|
b L143 | nop
|
|
nop | nop
|
|
L51:
|
|
lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
;; end, for real this time.
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02
|
|
mtir vi10, vf08.x | itof0.xyzw vf23, vf23
|
|
mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L52 | madday.xyzw ACC, vf05, vf12
|
|
iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L52:
|
|
ibne vi05, vi10, L53 | maddw.xyzw vf12, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21
|
|
b L54 | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
L53:
|
|
lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q
|
|
lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23
|
|
lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22
|
|
lq.xyzw vf20, 2(vi10) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi13) | maddw.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi10) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi13) | maddw.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi10) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi13) | maddw.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi10) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi13) | maddw.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi10) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi13) | maddw.xyz vf29, vf29, vf24
|
|
lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24
|
|
mtir vi10, vf11.x | maddw.xyz vf30, vf30, vf24
|
|
mtir vi13, vf11.y | mulaz.xyzw ACC, vf20, vf24
|
|
b L39 | maddw.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L54:
|
|
ibgez vi09, L55 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L55:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20
|
|
erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12
|
|
ibne vi06, vi03, L56 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
ibne vi07, vi03, L77 | nop
|
|
nop | nop
|
|
b L153 | nop
|
|
nop | nop
|
|
L56:
|
|
lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02
|
|
mtir vi11, vf09.x | itof0.xyzw vf23, vf23
|
|
mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L57 | madday.xyzw ACC, vf05, vf13
|
|
iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L57:
|
|
ibne vi05, vi11, L58 | maddw.xyzw vf13, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21
|
|
b L59 | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
L58:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23
|
|
lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 2(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi14) | maddw.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi11) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi14) | maddw.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi14) | maddw.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi11) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi14) | maddw.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi14) | maddw.xyz vf29, vf29, vf24
|
|
lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24
|
|
mtir vi11, vf12.x | maddw.xyz vf30, vf30, vf24
|
|
mtir vi14, vf12.y | mulaz.xyzw ACC, vf20, vf24
|
|
b L44 | maddw.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L59:
|
|
ibgez vi09, L60 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L60:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13
|
|
ibne vi06, vi03, L46 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
ibne vi07, vi03, L72 | nop
|
|
nop | nop
|
|
b L163 | nop
|
|
nop | nop
|
|
|
|
;; maybe mat3s
|
|
L61:
|
|
lqi.xyzw vf08, vi01 | nop
|
|
lqi.xyzw vf24, vi02 | nop
|
|
lqi.xyzw vf11, vi01 | nop
|
|
lqi.xyzw vf14, vi01 | nop
|
|
mtir vi10, vf08.x | nop
|
|
mtir vi13, vf08.y | itof0.xyzw vf24, vf24
|
|
nop | add.zw vf08, vf08, vf17
|
|
nop | add.xyzw vf11, vf11, vf18
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19
|
|
ilw.w vi08, -1(vi02) | mulw.xyzw vf24, vf24, vf29
|
|
iand vi13, vi13, vi05 | nop
|
|
lq.xyzw vf20, 0(vi10) | nop
|
|
lq.xyzw vf31, 0(vi13) | nop
|
|
lq.xyzw vf25, 0(vi08) | nop
|
|
lq.xyzw vf23, 1(vi10) | nop
|
|
lq.xyzw vf20, 1(vi13) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi10) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi13) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi10) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi13) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi10) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi13) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi10) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi13) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi10) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi13) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi10, vf11.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi13, vf11.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
nop | itof0.xyzw vf24, vf23
|
|
nop | mulaz.xyzw ACC, vf29, vf08
|
|
nop | maddaz.xyzw ACC, vf30, vf11
|
|
nop | maddz.xyz vf11, vf31, vf14
|
|
nop | nop
|
|
nop | nop
|
|
nop | mulaw.xyzw ACC, vf25, vf08
|
|
nop | nop
|
|
erleng.xyz P, vf11 | nop
|
|
ior vi15, vi07, vi00 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
lqi.xyzw vf09, vi01 | nop
|
|
ilwr.y vi03, vi12 | nop
|
|
ilw.z vi07, 1(vi12) | nop
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | nop
|
|
mtir vi11, vf09.x | nop
|
|
ibeq vi00, vi15, L62 | nop
|
|
mtir vi14, vf09.y | nop
|
|
nop | miniw.w vf08, vf08, vf01
|
|
L62:
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
iadd vi03, vi03, vi12 | add.xyzw vf12, vf12, vf18
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19
|
|
ilw.w vi08, -1(vi02) | nop
|
|
iadd vi07, vi07, vi03 | nop
|
|
iand vi14, vi14, vi05 | nop
|
|
ibne vi05, vi11, L63 | nop
|
|
iaddi vi07, vi07, -0x1 | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | nop
|
|
b L64 | nop
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
L63:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf31, 0(vi14) | nop
|
|
lq.xyzw vf25, 0(vi08) | nop
|
|
lq.xyzw vf23, 1(vi11) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 1(vi14) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi11) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi14) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi11) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi14) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi11) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi14) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi11) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi14) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi11) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi14) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi11, vf12.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi14, vf12.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L64:
|
|
nop | mulaz.xyzw ACC, vf29, vf09
|
|
nop | maddaz.xyzw ACC, vf30, vf12
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
nop | nop
|
|
1024.0 | miniw.w vf08, vf08, vf03 :i
|
|
ibne vi00, vi15, L125 | mulaw.xyzw ACC, vf25, vf09
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
erleng.xyz P, vf12 | nop
|
|
nop | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
L65:
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
b L67 | madday.xyzw ACC, vf02, vf11
|
|
nop | maddz.xyzw vf11, vf03, vf11
|
|
L66: ;; mat3 cross entry
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
L67:
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02
|
|
mtir vi12, vf10.x | itof0.xyzw vf23, vf23
|
|
mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18
|
|
iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19
|
|
ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L68 | madday.xyzw ACC, vf05, vf11
|
|
iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L68:
|
|
ibne vi05, vi12, L69 | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21
|
|
b L70 | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
L69:
|
|
lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf31, 0(vi15) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf25, 0(vi08) | mul.xyzw vf11, vf11, vf23
|
|
lq.xyzw vf23, 1(vi12) | add.xyzw vf09, vf09, vf22
|
|
lq.xyzw vf20, 1(vi15) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi12) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi15) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi12) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi15) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi12) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi15) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi12) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi15) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi12) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi15) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi12, vf13.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi15, vf13.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L70:
|
|
ibgez vi09, L71 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L71:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20
|
|
erleng.xyz P, vf13 | ftoi0.xyzw vf11, vf11
|
|
ibeq vi07, vi03, L143 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
L72: ;; mat3 cross entry
|
|
lqi.xyzw vf08, vi01 | mulax.xyzw ACC, vf01, vf12
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02
|
|
mtir vi10, vf08.x | itof0.xyzw vf23, vf23
|
|
mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19
|
|
ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L73 | madday.xyzw ACC, vf05, vf12
|
|
iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L73:
|
|
ibne vi05, vi10, L74 | maddw.xyzw vf12, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21
|
|
b L75 | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
L74:
|
|
lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf31, 0(vi13) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf25, 0(vi08) | mul.xyzw vf12, vf12, vf23
|
|
lq.xyzw vf23, 1(vi10) | add.xyzw vf10, vf10, vf22
|
|
lq.xyzw vf20, 1(vi13) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi10) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi13) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi10) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi13) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi10) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi13) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi10) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi13) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi10) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi13) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi10, vf11.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi13, vf11.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L75:
|
|
ibgez vi09, L76 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L76:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20
|
|
erleng.xyz P, vf11 | ftoi0.xyzw vf12, vf12
|
|
ibeq vi07, vi03, L153 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
L77: ;; mat3 cross entry
|
|
lqi.xyzw vf09, vi01 | mulax.xyzw ACC, vf01, vf13
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02
|
|
mtir vi11, vf09.x | itof0.xyzw vf23, vf23
|
|
mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19
|
|
ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L78 | madday.xyzw ACC, vf05, vf13
|
|
iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L78:
|
|
ibne vi05, vi11, L79 | maddw.xyzw vf13, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21
|
|
b L80 | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
L79:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf31, 0(vi14) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf25, 0(vi08) | mul.xyzw vf13, vf13, vf23
|
|
lq.xyzw vf23, 1(vi11) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 1(vi14) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi11) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi14) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi11) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi14) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi11) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi14) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi11) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi14) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi11) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi14) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi11, vf12.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi14, vf12.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L80:
|
|
ibgez vi09, L81 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L81:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
erleng.xyz P, vf12 | ftoi0.xyzw vf13, vf13
|
|
ibne vi07, vi03, L66 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
b L163 | nop
|
|
nop | nop
|
|
|
|
;; merc prime, or other weird things.
|
|
L82:
|
|
erleng.xyz P, vf12 | maxi.xy vf08, vf08, I
|
|
3072.0 | nop :i
|
|
nop | minii.xy vf08, vf08, I
|
|
nop | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
ibne vi04, vi03, L84 | madday.xyzw ACC, vf02, vf11
|
|
nop | maddz.xyzw vf11, vf03, vf11
|
|
ibne vi06, vi03, L95 | nop
|
|
nop | nop
|
|
b L128 | nop
|
|
nop | nop
|
|
L83:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf11 :i
|
|
lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
L84:
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02
|
|
mtir vi08, vf10.x | itof0.xyzw vf23, vf23
|
|
ilw.y vi09, -9(vi01) | maxx.xyzw vf11, vf11, vf00
|
|
nop | miniw.w vf09, vf09, vf01
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18
|
|
lq.xyz vf29, 4(vi08) | add.xyzw vf16, vf16, vf19
|
|
lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L85 | madday.xyzw ACC, vf05, vf11
|
|
lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L85:
|
|
lq.xyzw vf25, 0(vi08) | maddw.xyzw vf11, vf07, vf00
|
|
lq.xyzw vf26, 1(vi08) | mul.xyz vf09, vf09, Q
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf27, 2(vi08) | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
ibne vi00, vi09, L86 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L86:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10
|
|
lq.xyzw vf28, 3(vi08) | mulw.xyzw vf12, vf12, vf20
|
|
1024.0 | ftoi0.xyzw vf11, vf11 :i
|
|
erleng.xyz P, vf13 | maxi.xy vf09, vf09, I
|
|
ibne vi04, vi03, L87 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
ibne vi06, vi03, L100 | nop
|
|
ilw.y vi09, -6(vi01) | nop
|
|
ibne vi07, vi03, L133 | nop
|
|
nop | nop
|
|
b L143 | nop
|
|
nop | nop
|
|
L87:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf12 :i
|
|
lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02
|
|
mtir vi08, vf08.x | itof0.xyzw vf23, vf23
|
|
ilw.y vi09, -9(vi01) | maxx.xyzw vf12, vf12, vf00
|
|
nop | miniw.w vf10, vf10, vf01
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18
|
|
lq.xyz vf29, 4(vi08) | add.xyzw vf14, vf14, vf19
|
|
lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L88 | madday.xyzw ACC, vf05, vf12
|
|
lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L88:
|
|
lq.xyzw vf25, 0(vi08) | maddw.xyzw vf12, vf07, vf00
|
|
lq.xyzw vf26, 1(vi08) | mul.xyz vf10, vf10, Q
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf27, 2(vi08) | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
ibne vi00, vi09, L89 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L89:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08
|
|
lq.xyzw vf28, 3(vi08) | mulw.xyzw vf13, vf13, vf20
|
|
1024.0 | ftoi0.xyzw vf12, vf12 :i
|
|
erleng.xyz P, vf11 | maxi.xy vf10, vf10, I
|
|
ibne vi04, vi03, L90 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
ibne vi06, vi03, L105 | nop
|
|
ilw.y vi09, -6(vi01) | nop
|
|
ibne vi07, vi03, L138 | nop
|
|
nop | nop
|
|
b L153 | nop
|
|
nop | nop
|
|
L90:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf13 :i
|
|
lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02
|
|
mtir vi08, vf09.x | itof0.xyzw vf23, vf23
|
|
ilw.y vi09, -9(vi01) | maxx.xyzw vf13, vf13, vf00
|
|
nop | miniw.w vf08, vf08, vf01
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18
|
|
lq.xyz vf29, 4(vi08) | add.xyzw vf15, vf15, vf19
|
|
lq.xyz vf30, 5(vi08) | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L91 | madday.xyzw ACC, vf05, vf13
|
|
lq.xyzw vf31, 6(vi08) | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L91:
|
|
lq.xyzw vf25, 0(vi08) | maddw.xyzw vf13, vf07, vf00
|
|
lq.xyzw vf26, 1(vi08) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf27, 2(vi08) | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
ibne vi00, vi09, L92 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L92:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
lq.xyzw vf28, 3(vi08) | mulw.xyzw vf11, vf11, vf20
|
|
1024.0 | ftoi0.xyzw vf13, vf13 :i
|
|
erleng.xyz P, vf12 | maxi.xy vf08, vf08, I
|
|
ibne vi04, vi03, L83 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
ibne vi06, vi03, L94 | nop
|
|
ilw.y vi09, -6(vi01) | nop
|
|
ibne vi07, vi03, L127 | nop
|
|
nop | nop
|
|
b L163 | nop
|
|
nop | nop
|
|
L93:
|
|
erleng.xyz P, vf12 | maxi.xy vf08, vf08, I
|
|
3072.0 | nop :i
|
|
nop | minii.xy vf08, vf08, I
|
|
ibeq vi06, vi03, L126 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
jr vi08 | madday.xyzw ACC, vf02, vf11
|
|
nop | maddz.xyzw vf11, vf03, vf11
|
|
L94:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf11 :i
|
|
lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
L95:
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02
|
|
mtir vi12, vf10.x | itof0.xyzw vf23, vf23
|
|
mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00
|
|
nop | miniw.w vf09, vf09, vf01
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18
|
|
iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L96 | madday.xyzw ACC, vf05, vf11
|
|
iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L96:
|
|
ibne vi05, vi12, L97 | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21
|
|
b L98 | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
L97:
|
|
lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23
|
|
lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22
|
|
lq.xyzw vf20, 2(vi12) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi15) | maddy.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi12) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi15) | maddy.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi12) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi15) | maddy.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi12) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi15) | maddy.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi12) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi15) | maddy.xyz vf29, vf29, vf24
|
|
mtir vi12, vf13.x | mulax.xyzw ACC, vf23, vf24
|
|
mtir vi15, vf13.y | maddy.xyz vf30, vf30, vf24
|
|
b L113 | mulax.xyzw ACC, vf20, vf24
|
|
lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24
|
|
L98:
|
|
ibgez vi09, L99 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L99:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20
|
|
1024.0 | ftoi0.xyzw vf11, vf11 :i
|
|
erleng.xyz P, vf13 | maxi.xy vf09, vf09, I
|
|
ibne vi06, vi03, L100 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
ibne vi07, vi03, L133 | nop
|
|
nop | nop
|
|
b L143 | nop
|
|
nop | nop
|
|
L100:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf12 :i
|
|
lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02
|
|
mtir vi10, vf08.x | itof0.xyzw vf23, vf23
|
|
mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00
|
|
nop | miniw.w vf10, vf10, vf01
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L101 | madday.xyzw ACC, vf05, vf12
|
|
iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L101:
|
|
ibne vi05, vi10, L102 | maddw.xyzw vf12, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21
|
|
b L103 | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
L102:
|
|
lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23
|
|
lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22
|
|
lq.xyzw vf20, 2(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi13) | maddy.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi10) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi13) | maddy.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi13) | maddy.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi10) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi13) | maddy.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi10) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi13) | maddy.xyz vf29, vf29, vf24
|
|
mtir vi10, vf11.x | mulax.xyzw ACC, vf23, vf24
|
|
mtir vi13, vf11.y | maddy.xyz vf30, vf30, vf24
|
|
b L118 | mulax.xyzw ACC, vf20, vf24
|
|
lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24
|
|
L103:
|
|
ibgez vi09, L104 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L104:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20
|
|
1024.0 | ftoi0.xyzw vf12, vf12 :i
|
|
erleng.xyz P, vf11 | maxi.xy vf10, vf10, I
|
|
ibne vi06, vi03, L105 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
ibne vi07, vi03, L138 | nop
|
|
nop | nop
|
|
b L153 | nop
|
|
nop | nop
|
|
L105:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf13 :i
|
|
lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02
|
|
mtir vi11, vf09.x | itof0.xyzw vf23, vf23
|
|
mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00
|
|
nop | miniw.w vf08, vf08, vf01
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L106 | madday.xyzw ACC, vf05, vf13
|
|
iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L106:
|
|
ibne vi05, vi11, L107 | maddw.xyzw vf13, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21
|
|
b L108 | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
L107:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23
|
|
lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 2(vi11) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi14) | maddy.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi11) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi14) | maddy.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi11) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi14) | maddy.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi11) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi14) | maddy.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi11) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi14) | maddy.xyz vf29, vf29, vf24
|
|
mtir vi11, vf12.x | mulax.xyzw ACC, vf23, vf24
|
|
mtir vi14, vf12.y | maddy.xyz vf30, vf30, vf24
|
|
b L123 | mulax.xyzw ACC, vf20, vf24
|
|
lqi.xyzw vf23, vi03 | maddy.xyzw vf31, vf31, vf24
|
|
L108:
|
|
ibgez vi09, L109 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L109:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
1024.0 | ftoi0.xyzw vf13, vf13 :i
|
|
erleng.xyz P, vf12 | maxi.xy vf08, vf08, I
|
|
ibne vi06, vi03, L94 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
ibne vi07, vi03, L127 | nop
|
|
nop | nop
|
|
b L163 | nop
|
|
nop | nop
|
|
L110:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf11 :i
|
|
lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02
|
|
mtir vi12, vf10.x | itof0.xyzw vf23, vf23
|
|
mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00
|
|
nop | miniw.w vf09, vf09, vf01
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18
|
|
iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L111 | madday.xyzw ACC, vf05, vf11
|
|
iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L111:
|
|
ibne vi05, vi12, L112 | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21
|
|
b L113 | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
L112:
|
|
lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q
|
|
lq.xyzw vf25, 0(vi15) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi12) | mul.xyzw vf11, vf11, vf23
|
|
lq.xyzw vf26, 1(vi15) | add.xyzw vf09, vf09, vf22
|
|
lq.xyzw vf20, 2(vi12) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi15) | maddw.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi12) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi15) | maddw.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi12) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi15) | maddw.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi12) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi15) | maddw.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi12) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi15) | maddw.xyz vf29, vf29, vf24
|
|
lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24
|
|
mtir vi12, vf13.x | maddw.xyz vf30, vf30, vf24
|
|
mtir vi15, vf13.y | mulaz.xyzw ACC, vf20, vf24
|
|
b L98 | maddw.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L113:
|
|
ibgez vi09, L114 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L114:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20
|
|
1024.0 | ftoi0.xyzw vf11, vf11 :i
|
|
erleng.xyz P, vf13 | maxi.xy vf09, vf09, I
|
|
ibne vi06, vi03, L115 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
ibne vi07, vi03, L133 | nop
|
|
nop | nop
|
|
b L143 | nop
|
|
nop | nop
|
|
L115:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf12 :i
|
|
lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02
|
|
mtir vi10, vf08.x | itof0.xyzw vf23, vf23
|
|
mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00
|
|
nop | miniw.w vf10, vf10, vf01
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L116 | madday.xyzw ACC, vf05, vf12
|
|
iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L116:
|
|
ibne vi05, vi10, L117 | maddw.xyzw vf12, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21
|
|
b L118 | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
L117:
|
|
lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q
|
|
lq.xyzw vf25, 0(vi13) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi10) | mul.xyzw vf12, vf12, vf23
|
|
lq.xyzw vf26, 1(vi13) | add.xyzw vf10, vf10, vf22
|
|
lq.xyzw vf20, 2(vi10) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi13) | maddw.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi10) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi13) | maddw.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi10) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi13) | maddw.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi10) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi13) | maddw.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi10) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi13) | maddw.xyz vf29, vf29, vf24
|
|
lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24
|
|
mtir vi10, vf11.x | maddw.xyz vf30, vf30, vf24
|
|
mtir vi13, vf11.y | mulaz.xyzw ACC, vf20, vf24
|
|
b L103 | maddw.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L118:
|
|
ibgez vi09, L119 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L119:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20
|
|
1024.0 | ftoi0.xyzw vf12, vf12 :i
|
|
erleng.xyz P, vf11 | maxi.xy vf10, vf10, I
|
|
ibne vi06, vi03, L120 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
ibne vi07, vi03, L138 | nop
|
|
nop | nop
|
|
b L153 | nop
|
|
nop | nop
|
|
L120:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf13 :i
|
|
lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02
|
|
mtir vi11, vf09.x | itof0.xyzw vf23, vf23
|
|
mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00
|
|
nop | miniw.w vf08, vf08, vf01
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19
|
|
nop | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L121 | madday.xyzw ACC, vf05, vf13
|
|
iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L121:
|
|
ibne vi05, vi11, L122 | maddw.xyzw vf13, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21
|
|
b L123 | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
L122:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
lq.xyzw vf25, 0(vi14) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf23, 1(vi11) | mul.xyzw vf13, vf13, vf23
|
|
lq.xyzw vf26, 1(vi14) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 2(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf27, 2(vi14) | maddw.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 3(vi11) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf28, 3(vi14) | maddw.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf20, 4(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi14) | maddw.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf23, 5(vi11) | mulaz.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi14) | maddw.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf20, 6(vi11) | mulaz.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf31, 6(vi14) | maddw.xyz vf29, vf29, vf24
|
|
lqi.xyzw vf23, vi02 | mulaz.xyzw ACC, vf23, vf24
|
|
mtir vi11, vf12.x | maddw.xyz vf30, vf30, vf24
|
|
mtir vi14, vf12.y | mulaz.xyzw ACC, vf20, vf24
|
|
b L108 | maddw.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L123:
|
|
ibgez vi09, L124 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L124:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
1024.0 | ftoi0.xyzw vf13, vf13 :i
|
|
erleng.xyz P, vf12 | maxi.xy vf08, vf08, I
|
|
ibne vi06, vi03, L110 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
ibne vi07, vi03, L133 | nop
|
|
nop | nop
|
|
b L163 | nop
|
|
nop | nop
|
|
L125:
|
|
erleng.xyz P, vf12 | maxi.xy vf08, vf08, I
|
|
3072.0 | nop :i
|
|
nop | minii.xy vf08, vf08, I
|
|
nop | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
L126:
|
|
lqi.xyzw vf10, vi01 | mulax.xyzw ACC, vf01, vf11
|
|
b L128 | madday.xyzw ACC, vf02, vf11
|
|
nop | maddz.xyzw vf11, vf03, vf11
|
|
L127:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf11 :i
|
|
lqi.xyzw vf10, vi01 | minii.xy vf08, vf08, I
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
L128:
|
|
lqi.xyzw vf13, vi01 | add.xyzw vf09, vf09, vf28
|
|
lqi.xyzw vf16, vi01 | maxw.w vf08, vf08, vf02
|
|
mtir vi12, vf10.x | itof0.xyzw vf23, vf23
|
|
mtir vi15, vf10.y | maxx.xyzw vf11, vf11, vf00
|
|
nop | miniw.w vf09, vf09, vf01
|
|
div Q, vf01.w, vf09.w | add.zw vf10, vf10, vf17
|
|
move.xyzw vf21, vf08 | add.xyzw vf13, vf13, vf18
|
|
iand vi12, vi12, vi05 | add.xyzw vf16, vf16, vf19
|
|
ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L129 | madday.xyzw ACC, vf05, vf11
|
|
iand vi15, vi15, vi05 | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L129:
|
|
ibne vi05, vi12, L130 | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf09, vf09, Q
|
|
mtir vi12, vf13.x | mul.xyzw vf15, vf15, Q
|
|
mtir vi15, vf13.y | ftoi4.xyzw vf21, vf21
|
|
b L131 | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
L130:
|
|
lq.xyzw vf20, 0(vi12) | mul.xyzw vf15, vf15, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf31, 0(vi15) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf25, 0(vi08) | mul.xyzw vf11, vf11, vf23
|
|
lq.xyzw vf23, 1(vi12) | add.xyzw vf09, vf09, vf22
|
|
lq.xyzw vf20, 1(vi15) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi12) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi15) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi12) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi15) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi12) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi15) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi12) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi15) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi12) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi15) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi12, vf13.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi15, vf13.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L131:
|
|
ibgez vi09, L132 | mulaz.xyzw ACC, vf29, vf10
|
|
sq.xyzw vf21, 2(vi10) | maddaz.xyzw ACC, vf30, vf13
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L132:
|
|
mfp.w vf20, P | maddz.xyz vf13, vf31, vf16
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | mulaw.xyzw ACC, vf25, vf10
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf12, vf12, vf20
|
|
1024.0 | ftoi0.xyzw vf11, vf11 :i
|
|
erleng.xyz P, vf13 | maxi.xy vf09, vf09, I
|
|
ibeq vi07, vi03, L143 | maddaw.xyzw ACC, vf26, vf13
|
|
mr32.z vf16, vf00 | maddw.xyzw vf10, vf27, vf16
|
|
L133:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf12 :i
|
|
lqi.xyzw vf08, vi01 | minii.xy vf09, vf09, I
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
lqi.xyzw vf11, vi01 | add.xyzw vf10, vf10, vf28
|
|
lqi.xyzw vf14, vi01 | maxw.w vf09, vf09, vf02
|
|
mtir vi10, vf08.x | itof0.xyzw vf23, vf23
|
|
mtir vi13, vf08.y | maxx.xyzw vf12, vf12, vf00
|
|
nop | miniw.w vf10, vf10, vf01
|
|
div Q, vf01.w, vf10.w | add.zw vf08, vf08, vf17
|
|
move.xyzw vf21, vf09 | add.xyzw vf11, vf11, vf18
|
|
iand vi10, vi10, vi05 | add.xyzw vf14, vf14, vf19
|
|
ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L134 | madday.xyzw ACC, vf05, vf12
|
|
iand vi13, vi13, vi05 | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L134:
|
|
ibne vi05, vi10, L135 | maddw.xyzw vf12, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf10, vf10, Q
|
|
mtir vi10, vf11.x | mul.xyzw vf16, vf16, Q
|
|
mtir vi13, vf11.y | ftoi4.xyzw vf21, vf21
|
|
b L136 | mul.xyzw vf12, vf12, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22
|
|
L135:
|
|
lq.xyzw vf20, 0(vi10) | mul.xyzw vf16, vf16, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf31, 0(vi13) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf25, 0(vi08) | mul.xyzw vf12, vf12, vf23
|
|
lq.xyzw vf23, 1(vi10) | add.xyzw vf10, vf10, vf22
|
|
lq.xyzw vf20, 1(vi13) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi10) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi13) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi10) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi13) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi10) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi13) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi10) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi13) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi10) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi13) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi10, vf11.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi13, vf11.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L136:
|
|
ibgez vi09, L137 | mulaz.xyzw ACC, vf29, vf08
|
|
sq.xyzw vf21, 2(vi11) | maddaz.xyzw ACC, vf30, vf11
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L137:
|
|
mfp.w vf20, P | maddz.xyz vf11, vf31, vf14
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03
|
|
sq.xyzw vf21, 2(vi14) | mulaw.xyzw ACC, vf25, vf08
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf13, vf13, vf20
|
|
1024.0 | ftoi0.xyzw vf12, vf12 :i
|
|
erleng.xyz P, vf11 | maxi.xy vf10, vf10, I
|
|
ibeq vi07, vi03, L153 | maddaw.xyzw ACC, vf26, vf11
|
|
mr32.z vf14, vf00 | maddw.xyzw vf08, vf27, vf14
|
|
L138:
|
|
3072.0 | mulax.xyzw ACC, vf01, vf13 :i
|
|
lqi.xyzw vf09, vi01 | minii.xy vf10, vf10, I
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
lqi.xyzw vf12, vi01 | add.xyzw vf08, vf08, vf28
|
|
lqi.xyzw vf15, vi01 | maxw.w vf10, vf10, vf02
|
|
mtir vi11, vf09.x | itof0.xyzw vf23, vf23
|
|
mtir vi14, vf09.y | maxx.xyzw vf13, vf13, vf00
|
|
nop | miniw.w vf08, vf08, vf01
|
|
div Q, vf01.w, vf08.w | add.zw vf09, vf09, vf17
|
|
move.xyzw vf21, vf10 | add.xyzw vf12, vf12, vf18
|
|
iand vi11, vi11, vi05 | add.xyzw vf15, vf15, vf19
|
|
ilw.w vi08, -1(vi02) | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L139 | madday.xyzw ACC, vf05, vf13
|
|
iand vi14, vi14, vi05 | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L139:
|
|
ibne vi05, vi11, L140 | maddw.xyzw vf13, vf07, vf00
|
|
ilw.x vi09, -9(vi01) | mul.xyz vf08, vf08, Q
|
|
mtir vi11, vf12.x | mul.xyzw vf14, vf14, Q
|
|
mtir vi14, vf12.y | ftoi4.xyzw vf21, vf21
|
|
b L141 | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
L140:
|
|
lq.xyzw vf20, 0(vi11) | mul.xyzw vf14, vf14, Q
|
|
nop | mulw.xyzw vf24, vf24, vf29
|
|
lq.xyzw vf31, 0(vi14) | ftoi4.xyzw vf21, vf21
|
|
lq.xyzw vf25, 0(vi08) | mul.xyzw vf13, vf13, vf23
|
|
lq.xyzw vf23, 1(vi11) | add.xyzw vf08, vf08, vf22
|
|
lq.xyzw vf20, 1(vi14) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf26, 1(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 2(vi11) | maddz.xyzw vf25, vf25, vf24
|
|
lq.xyzw vf23, 2(vi14) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf27, 2(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 3(vi11) | maddz.xyzw vf26, vf26, vf24
|
|
lq.xyzw vf31, 3(vi14) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf28, 3(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lq.xyzw vf23, 4(vi11) | maddz.xyzw vf27, vf27, vf24
|
|
lq.xyzw vf20, 4(vi14) | mulax.xyzw ACC, vf20, vf24
|
|
lq.xyz vf29, 4(vi08) | madday.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 5(vi11) | maddz.xyzw vf28, vf28, vf24
|
|
lq.xyzw vf23, 5(vi14) | mulax.xyzw ACC, vf23, vf24
|
|
lq.xyz vf30, 5(vi08) | madday.xyzw ACC, vf20, vf24
|
|
lq.xyzw vf20, 6(vi11) | maddz.xyz vf29, vf29, vf24
|
|
lq.xyzw vf22, 6(vi14) | mulax.xyzw ACC, vf31, vf24
|
|
lq.xyzw vf31, 6(vi08) | madday.xyzw ACC, vf23, vf24
|
|
lqi.xyzw vf23, vi02 | maddz.xyz vf30, vf30, vf24
|
|
mtir vi11, vf12.x | mulax.xyzw ACC, vf20, vf24
|
|
mtir vi14, vf12.y | madday.xyzw ACC, vf22, vf24
|
|
lq.xyzw vf22, 2(vi00) | maddz.xyzw vf31, vf31, vf24
|
|
lqi.xyzw vf23, vi03 | itof0.xyzw vf24, vf23
|
|
L141:
|
|
ibgez vi09, L142 | mulaz.xyzw ACC, vf29, vf09
|
|
sq.xyzw vf21, 2(vi12) | maddaz.xyzw ACC, vf30, vf12
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L142:
|
|
mfp.w vf20, P | maddz.xyz vf12, vf31, vf15
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | mulaw.xyzw ACC, vf25, vf09
|
|
ilw.y vi09, -6(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
1024.0 | ftoi0.xyzw vf13, vf13 :i
|
|
erleng.xyz P, vf12 | maxi.xy vf08, vf08, I
|
|
ibne vi07, vi03, L127 | maddaw.xyzw ACC, vf26, vf12
|
|
mr32.z vf15, vf00 | maddw.xyzw vf09, vf27, vf15
|
|
b L163 | nop
|
|
nop | nop
|
|
L143: ;; exit cross 1
|
|
ilw.w vi08, 1(vi00) | nop ;; vi08 = mercprime flag
|
|
xtop vi02 | mulax.xyzw ACC, vf01, vf12 ;; vi02 = out (0) | pipe
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12 ;; pipe | pipe
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12 ;; pipe | pipe
|
|
iaddiu vi04, vi02, 0x8c | add.xyzw vf10, vf10, vf28 ;; vi04 = 140 (byte header) | pipe
|
|
ilwr.x vi05, vi04 | maxw.w vf09, vf09, vf02 ;; vi05 = srcdest-off | pipe
|
|
ilw.w vi06, 1(vi04) | itof0.xyzw vf23, vf23 ;; vi06 = samecopy-cnt | pipe
|
|
ibne vi00, vi08, L151 | nop ;; goto L151 if merc prime (just a detour to set constants).
|
|
ilw.x vi07, 2(vi04) | maxx.xyzw vf12, vf12, vf00 ;; vi07 = crosscopy-cnt | pipe
|
|
L144:
|
|
div Q, vf01.w, vf10.w | minix.xyzw vf25, vf00, vf00 ;; pipe | vf25 = 0
|
|
move.xyzw vf21, vf09 | minix.xyzw vf26, vf00, vf00 ;; pipe | vf26 = 0
|
|
iadd vi05, vi05, vi04 | nop ;; vi05 = srcdest table addr
|
|
iaddiu vi04, vi02, 0x173 | mulax.xyzw ACC, vf04, vf12 ;; vi04 = "output zone" | pipe
|
|
ibgtz vi09, L145 | madday.xyzw ACC, vf05, vf12 ;; pipe | pipe
|
|
iadd vi06, vi06, vi05 | maddaz.xyzw ACC, vf06, vf12 ;; vi06 = cross copy table | pipe
|
|
nop | addx.w vf21, vf21, vf17 ;; pipe | pipe
|
|
L145:
|
|
iadd vi07, vi07, vi06 | maddw.xyzw vf12, vf07, vf00 ;; vi07 = end cross copy table | pipe
|
|
ilw.x vi09, -6(vi01) | mul.xyz vf10, vf10, Q ;; ?????? | pipe
|
|
iaddiu vi08, vi00, 0x1ba | mul.xyzw vf16, vf16, Q ;; vi08 = 442 | pipe
|
|
isub vi08, vi08, vi02 | ftoi4.xyzw vf21, vf21 ;; vi08 is the other buffer | pipe
|
|
iaddiu vi08, vi08, 0x173 | mul.xyzw vf12, vf12, vf23 ;; vi08 is the other buffer | pipe
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf10, vf10, vf22 ;; pipe | pipe
|
|
ibgez vi09, L146 | nop ;; pipe (but weird, not applicable for mat1, but still works)
|
|
sq.xyzw vf21, 2(vi11) | nop ;; pipe
|
|
nop | ftoi4.xyzw vf21, vf09 ;; pipe (slightly wrong for mat1, but might not matter?)
|
|
L146:
|
|
mfp.w vf20, P | nop ;; pipe
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17 ;; pipe
|
|
sq.xyzw vf15, 0(vi14) | miniw.w vf10, vf10, vf03 ;; pipe
|
|
sq.xyzw vf21, 2(vi14) | nop ;; pipe
|
|
ilw.y vi09, -3(vi01) | mulw.xyzw vf13, vf13, vf20 ;; werid pipe | pipe
|
|
mfir.x vf25, vi04 | ftoi0.xyzw vf12, vf12 ;; vf25.x = output zone | pipe
|
|
mfir.y vf25, vi04 | nop ;; vf25.y = output zone
|
|
mfir.x vf26, vi08 | nop ;; vf26.x = old output zone
|
|
ilw.w vi02, 1(vi00) | nop ;; vi02 = mercprime flag
|
|
mfir.y vf26, vi04 | mulax.xyzw ACC, vf01, vf13 ;; vf26.y = output zone | pipe
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13 ;; pipe | pipe
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13 ;; pipe | pipe
|
|
nop | nop ;; ? why the nop ?
|
|
ibne vi00, vi02, L152 | maxw.w vf10, vf10, vf02 ;; mercprime detour | pipe
|
|
nop | itof0.xyzw vf23, vf23 ;; pipe
|
|
L147:
|
|
8388608.0 | maxx.xyzw vf13, vf13, vf00 :i ;; vf13 = 0
|
|
256.0 | maxi.xy vf27, vf00, I :i ;; vf27.xy = 8388608.0
|
|
move.xyzw vf21, vf10 | maxi.w vf27, vf00, I ;; pipe | vf27.w = 256.0
|
|
nop | nop ;; ??
|
|
nop | mulax.xyzw ACC, vf04, vf13 ;; pipe
|
|
ibgtz vi09, L148 | madday.xyzw ACC, vf05, vf13 ;; pipe | pipe
|
|
nop | maddaz.xyzw ACC, vf06, vf13 ;; pipe
|
|
nop | addx.w vf21, vf21, vf17 ;; pipe
|
|
L148:
|
|
nop | maddw.xyzw vf13, vf07, vf00 ;; pipe
|
|
ilw.x vi09, -3(vi01) | itof0.xyzw vf25, vf25 ;; pipe | zone addrs to float
|
|
nop | itof0.xyzw vf26, vf26 ;; zone addrs to float
|
|
nop | ftoi4.xyzw vf21, vf21 ;; pipe
|
|
nop | mul.xyzw vf13, vf13, vf23 ;; pipe
|
|
ior vi02, vi05, vi00 | add.xyzw vf25, vf25, vf27 ;; vi02 = srcdst table | float trick
|
|
ibgez vi09, L149 | add.xyzw vf26, vf26, vf27 ;; pipe | float trick
|
|
sq.xyzw vf21, 2(vi12) | nop ;; pipe
|
|
nop | ftoi4.xyzw vf21, vf10 ;; pipe
|
|
L149:
|
|
ibne vi06, vi05, L150 | nop
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26
|
|
L150:
|
|
sq.xyzw vf16, 0(vi15) | nop ;; pipe
|
|
sq.xyzw vf21, 2(vi15) | nop ;; pipe
|
|
lqi.xyzw vf27, vi05 | nop
|
|
nop | ftoi0.xyzw vf13, vf13 ;; pipe
|
|
nop | nop
|
|
nop | nop
|
|
nop | itof0.xyzw vf27, vf27
|
|
sq.xyzw vf13, 1(vi12) | nop ;; pipe
|
|
b L173 | nop
|
|
sq.xyzw vf13, 1(vi15) | nop ;; pipe
|
|
L151:
|
|
3072.0 | miniw.w vf10, vf10, vf01 :i
|
|
b L144 | minii.xy vf09, vf09, I
|
|
nop | nop
|
|
L152:
|
|
1024.0 | nop :i
|
|
3072.0 | maxi.xy vf10, vf10, I :i
|
|
b L147 | minii.xy vf10, vf10, I
|
|
isw.w vi00, 1(vi00) | nop
|
|
|
|
L153: ;; exit cross 2
|
|
ilw.w vi08, 1(vi00) | nop
|
|
xtop vi02 | mulax.xyzw ACC, vf01, vf13
|
|
sq.xyzw vf12, 1(vi11) | madday.xyzw ACC, vf02, vf13
|
|
sq.xyzw vf12, 1(vi14) | maddz.xyzw vf13, vf03, vf13
|
|
iaddiu vi04, vi02, 0x8c | add.xyzw vf08, vf08, vf28
|
|
ilwr.x vi05, vi04 | maxw.w vf10, vf10, vf02
|
|
ilw.w vi06, 1(vi04) | itof0.xyzw vf23, vf23
|
|
ibne vi00, vi08, L161 | nop
|
|
ilw.x vi07, 2(vi04) | maxx.xyzw vf13, vf13, vf00
|
|
L154:
|
|
div Q, vf01.w, vf08.w | minix.xyzw vf25, vf00, vf00
|
|
move.xyzw vf21, vf10 | minix.xyzw vf26, vf00, vf00
|
|
iadd vi05, vi05, vi04 | nop
|
|
iaddiu vi04, vi02, 0x173 | mulax.xyzw ACC, vf04, vf13
|
|
ibgtz vi09, L155 | madday.xyzw ACC, vf05, vf13
|
|
iadd vi06, vi06, vi05 | maddaz.xyzw ACC, vf06, vf13
|
|
nop | addx.w vf21, vf21, vf17
|
|
L155:
|
|
iadd vi07, vi07, vi06 | maddw.xyzw vf13, vf07, vf00
|
|
ilw.x vi09, -6(vi01) | mul.xyz vf08, vf08, Q
|
|
iaddiu vi08, vi00, 0x1ba | mul.xyzw vf14, vf14, Q
|
|
isub vi08, vi08, vi02 | ftoi4.xyzw vf21, vf21
|
|
iaddiu vi08, vi08, 0x173 | mul.xyzw vf13, vf13, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf08, vf08, vf22
|
|
ibgez vi09, L156 | nop
|
|
sq.xyzw vf21, 2(vi12) | nop
|
|
nop | ftoi4.xyzw vf21, vf10
|
|
L156:
|
|
mfp.w vf20, P | nop
|
|
sq.xyzw vf16, 0(vi12) | miniy.xyzw vf13, vf13, vf17
|
|
sq.xyzw vf16, 0(vi15) | miniw.w vf08, vf08, vf03
|
|
sq.xyzw vf21, 2(vi15) | nop
|
|
ilw.y vi09, -3(vi01) | mulw.xyzw vf11, vf11, vf20
|
|
mfir.x vf25, vi04 | ftoi0.xyzw vf13, vf13
|
|
mfir.y vf25, vi04 | nop
|
|
mfir.x vf26, vi08 | nop
|
|
ilw.w vi02, 1(vi00) | nop
|
|
mfir.y vf26, vi04 | mulax.xyzw ACC, vf01, vf11
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
nop | nop
|
|
ibne vi00, vi02, L162 | maxw.w vf08, vf08, vf02
|
|
nop | itof0.xyzw vf23, vf23
|
|
L157:
|
|
8388608.0 | maxx.xyzw vf11, vf11, vf00 :i
|
|
256.0 | maxi.xy vf27, vf00, I :i
|
|
move.xyzw vf21, vf08 | maxi.w vf27, vf00, I
|
|
nop | nop
|
|
nop | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L158 | madday.xyzw ACC, vf05, vf11
|
|
nop | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L158:
|
|
nop | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -3(vi01) | itof0.xyzw vf25, vf25
|
|
nop | itof0.xyzw vf26, vf26
|
|
nop | ftoi4.xyzw vf21, vf21
|
|
nop | mul.xyzw vf11, vf11, vf23
|
|
ior vi02, vi05, vi00 | add.xyzw vf25, vf25, vf27
|
|
ibgez vi09, L159 | add.xyzw vf26, vf26, vf27
|
|
sq.xyzw vf21, 2(vi10) | nop
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L159:
|
|
ibne vi06, vi05, L160 | nop
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26
|
|
L160:
|
|
sq.xyzw vf14, 0(vi13) | nop
|
|
sq.xyzw vf21, 2(vi13) | nop
|
|
lqi.xyzw vf27, vi05 | nop
|
|
nop | ftoi0.xyzw vf11, vf11
|
|
nop | nop
|
|
nop | nop
|
|
nop | itof0.xyzw vf27, vf27
|
|
sq.xyzw vf11, 1(vi10) | nop
|
|
b L173 | nop
|
|
sq.xyzw vf11, 1(vi13) | nop
|
|
L161:
|
|
3072.0 | miniw.w vf08, vf08, vf01 :i
|
|
b L154 | minii.xy vf10, vf10, I
|
|
nop | nop
|
|
L162:
|
|
1024.0 | nop :i
|
|
3072.0 | maxi.xy vf08, vf08, I :i
|
|
b L157 | minii.xy vf08, vf08, I
|
|
isw.w vi00, 1(vi00) | nop
|
|
L163: ;; exit cross 3
|
|
ilw.w vi08, 1(vi00) | nop
|
|
xtop vi02 | mulax.xyzw ACC, vf01, vf11
|
|
sq.xyzw vf13, 1(vi12) | madday.xyzw ACC, vf02, vf11
|
|
sq.xyzw vf13, 1(vi15) | maddz.xyzw vf11, vf03, vf11
|
|
iaddiu vi04, vi02, 0x8c | add.xyzw vf09, vf09, vf28
|
|
ilwr.x vi05, vi04 | maxw.w vf08, vf08, vf02
|
|
ilw.w vi06, 1(vi04) | itof0.xyzw vf23, vf23
|
|
ibne vi00, vi08, L171 | nop
|
|
ilw.x vi07, 2(vi04) | maxx.xyzw vf11, vf11, vf00
|
|
L164:
|
|
div Q, vf01.w, vf09.w | minix.xyzw vf25, vf00, vf00
|
|
move.xyzw vf21, vf08 | minix.xyzw vf26, vf00, vf00
|
|
iadd vi05, vi05, vi04 | nop
|
|
iaddiu vi04, vi02, 0x173 | mulax.xyzw ACC, vf04, vf11
|
|
ibgtz vi09, L165 | madday.xyzw ACC, vf05, vf11
|
|
iadd vi06, vi06, vi05 | maddaz.xyzw ACC, vf06, vf11
|
|
nop | addx.w vf21, vf21, vf17
|
|
L165:
|
|
iadd vi07, vi07, vi06 | maddw.xyzw vf11, vf07, vf00
|
|
ilw.x vi09, -6(vi01) | mul.xyz vf09, vf09, Q
|
|
iaddiu vi08, vi00, 0x1ba | mul.xyzw vf15, vf15, Q
|
|
isub vi08, vi08, vi02 | ftoi4.xyzw vf21, vf21
|
|
iaddiu vi08, vi08, 0x173 | mul.xyzw vf11, vf11, vf23
|
|
lqi.xyzw vf23, vi03 | add.xyzw vf09, vf09, vf22
|
|
ibgez vi09, L166 | nop
|
|
sq.xyzw vf21, 2(vi10) | nop
|
|
nop | ftoi4.xyzw vf21, vf08
|
|
L166:
|
|
mfp.w vf20, P | nop
|
|
sq.xyzw vf14, 0(vi10) | miniy.xyzw vf11, vf11, vf17
|
|
sq.xyzw vf14, 0(vi13) | miniw.w vf09, vf09, vf03
|
|
sq.xyzw vf21, 2(vi13) | nop
|
|
ilw.y vi09, -3(vi01) | mulw.xyzw vf12, vf12, vf20
|
|
mfir.x vf25, vi04 | ftoi0.xyzw vf11, vf11
|
|
mfir.y vf25, vi04 | nop
|
|
mfir.x vf26, vi08 | nop
|
|
ilw.w vi02, 1(vi00) | nop
|
|
mfir.y vf26, vi04 | mulax.xyzw ACC, vf01, vf12
|
|
sq.xyzw vf11, 1(vi10) | madday.xyzw ACC, vf02, vf12
|
|
sq.xyzw vf11, 1(vi13) | maddz.xyzw vf12, vf03, vf12
|
|
nop | nop
|
|
ibne vi00, vi02, L172 | maxw.w vf09, vf09, vf02
|
|
nop | itof0.xyzw vf23, vf23
|
|
L167:
|
|
8388608.0 | maxx.xyzw vf12, vf12, vf00 :i
|
|
256.0 | maxi.xy vf27, vf00, I :i
|
|
move.xyzw vf21, vf09 | maxi.w vf27, vf00, I
|
|
nop | nop
|
|
nop | mulax.xyzw ACC, vf04, vf12
|
|
ibgtz vi09, L168 | madday.xyzw ACC, vf05, vf12
|
|
nop | maddaz.xyzw ACC, vf06, vf12
|
|
nop | addx.w vf21, vf21, vf17
|
|
L168:
|
|
nop | maddw.xyzw vf12, vf07, vf00
|
|
ilw.x vi09, -3(vi01) | itof0.xyzw vf25, vf25
|
|
nop | itof0.xyzw vf26, vf26
|
|
nop | ftoi4.xyzw vf21, vf21
|
|
nop | mul.xyzw vf12, vf12, vf23
|
|
ior vi02, vi05, vi00 | add.xyzw vf25, vf25, vf27
|
|
ibgez vi09, L169 | add.xyzw vf26, vf26, vf27
|
|
sq.xyzw vf21, 2(vi11) | nop
|
|
nop | ftoi4.xyzw vf21, vf09
|
|
L169:
|
|
ibne vi06, vi05, L170 | nop
|
|
sq.xyzw vf15, 0(vi11) | miniy.xyzw vf12, vf12, vf17
|
|
ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26
|
|
L170:
|
|
sq.xyzw vf15, 0(vi14) | nop
|
|
sq.xyzw vf21, 2(vi14) | nop
|
|
lqi.xyzw vf27, vi05 | nop
|
|
nop | ftoi0.xyzw vf12, vf12
|
|
nop | nop
|
|
nop | nop
|
|
nop | itof0.xyzw vf27, vf27
|
|
sq.xyzw vf12, 1(vi11) | nop
|
|
b L173 | nop
|
|
sq.xyzw vf12, 1(vi14) | nop
|
|
L171:
|
|
3072.0 | miniw.w vf09, vf09, vf01 :i
|
|
b L164 | minii.xy vf08, vf08, I
|
|
nop | nop
|
|
L172:
|
|
1024.0 | nop :i
|
|
3072.0 | maxi.xy vf09, vf09, I :i
|
|
b L167 | minii.xy vf09, vf09, I
|
|
isw.w vi00, 1(vi00) | nop
|
|
|
|
;; end routine.
|
|
L173:
|
|
ibeq vi07, vi02, L179 | nop
|
|
ilw.w vi15, 132(vi00) | nop
|
|
ibne vi06, vi05, L174 | add.xyzw vf11, vf27, vf25
|
|
nop | nop
|
|
ibne vi07, vi06, L174 | nop
|
|
ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26
|
|
nop | nop
|
|
nop | nop
|
|
mtir vi08, vf11.x | nop
|
|
mtir vi10, vf11.y | nop
|
|
nop | nop
|
|
nop | nop
|
|
lq.xyzw vf16, 2(vi08) | maxx.xyzw vf15, vf11, vf00
|
|
lq.xyzw vf13, 0(vi08) | nop
|
|
b L178 | nop
|
|
nop | nop
|
|
L174:
|
|
lqi.xyzw vf27, vi05 | nop
|
|
nop | nop
|
|
mtir vi08, vf11.x | nop
|
|
mtir vi09, vf11.y | nop
|
|
nop | itof0.xyzw vf27, vf27
|
|
nop | nop
|
|
lq.xyzw vf12, 2(vi08) | maxx.xyzw vf15, vf11, vf00
|
|
lq.xyzw vf13, 0(vi08) | nop
|
|
ibne vi06, vi05, L175 | add.xyzw vf11, vf27, vf25
|
|
nop | nop
|
|
ibeq vi07, vi06, L177 | nop
|
|
ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26
|
|
L175:
|
|
lqi.xyzw vf27, vi05 | itof15.w vf12, vf12
|
|
lq.xyzw vf14, 1(vi08) | nop
|
|
mtir vi08, vf11.x | nop
|
|
mtir vi10, vf11.y | nop
|
|
sq.xyzw vf13, 0(vi09) | itof0.xyzw vf27, vf27
|
|
sq.xyzw vf14, 1(vi09) | add.w vf12, vf12, vf15
|
|
lq.xyzw vf16, 2(vi08) | maxx.xyzw vf15, vf11, vf00
|
|
lq.xyzw vf13, 0(vi08) | nop
|
|
ibne vi06, vi05, L176 | add.xyzw vf11, vf27, vf25
|
|
sq.xyzw vf12, 2(vi09) | nop
|
|
ibne vi07, vi06, L176 | nop
|
|
ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26
|
|
move.xyzw vf12, vf16 | nop
|
|
b L177 | nop
|
|
ior vi09, vi10, vi00 | nop
|
|
L176:
|
|
lqi.xyzw vf27, vi05 | itof15.w vf16, vf16
|
|
lq.xyzw vf14, 1(vi08) | nop
|
|
mtir vi08, vf11.x | nop
|
|
mtir vi09, vf11.y | nop
|
|
sq.xyzw vf13, 0(vi10) | itof0.xyzw vf27, vf27
|
|
sq.xyzw vf14, 1(vi10) | add.w vf16, vf16, vf15
|
|
lq.xyzw vf12, 2(vi08) | maxx.xyzw vf15, vf11, vf00
|
|
lq.xyzw vf13, 0(vi08) | nop
|
|
ibne vi06, vi05, L175 | add.xyzw vf11, vf27, vf25
|
|
sq.xyzw vf16, 2(vi10) | nop
|
|
ibne vi07, vi06, L175 | nop
|
|
ior vi06, vi07, vi00 | max.xyzw vf25, vf26, vf26
|
|
L177:
|
|
nop | itof15.w vf12, vf12
|
|
lq.xyzw vf14, 1(vi08) | nop
|
|
mtir vi08, vf11.x | nop
|
|
mtir vi10, vf11.y | nop
|
|
sq.xyzw vf13, 0(vi09) | nop
|
|
sq.xyzw vf14, 1(vi09) | add.w vf12, vf12, vf15
|
|
lq.xyzw vf16, 2(vi08) | maxx.xyzw vf15, vf11, vf00
|
|
lq.xyzw vf13, 0(vi08) | nop
|
|
nop | nop
|
|
sq.xyzw vf12, 2(vi09) | nop
|
|
L178:
|
|
nop | itof15.w vf16, vf16
|
|
lq.xyzw vf14, 1(vi08) | nop
|
|
nop | nop
|
|
nop | nop
|
|
sq.xyzw vf13, 0(vi10) | nop
|
|
sq.xyzw vf14, 1(vi10) | add.w vf16, vf16, vf15
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
sq.xyzw vf16, 2(vi10) | nop
|
|
L179:
|
|
ibne vi00, vi15, L180 | nop
|
|
nop | nop
|
|
xgkick vi04 | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L180:
|
|
lq.xyzw vf20, 132(vi00) | nop
|
|
lq.xyzw vf21, 1(vi00) | nop
|
|
iaddi vi01, vi00, 0x1 | nop
|
|
isw.x vi01, -2(vi04) | nop
|
|
iaddiu vi02, vi00, 0x47 | maxw.x vf20, vf00, vf20
|
|
isw.z vi02, -1(vi04) | nop
|
|
sq.yzw vf21, -2(vi04) | nop
|
|
isw.w vi00, 132(vi00) | nop
|
|
sq.x vf20, -1(vi04) | nop
|
|
iaddi vi04, vi04, -0x2 | nop
|
|
xgkick vi04 | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
|