mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 11:26:18 -04:00
f0ceea8b2e
* wip, taking a break to work on asm stuff first * the goal code for sparticle * mips2c the first sparticle asm function * temp * particle processing no longer crashing * temp * working texture cache for vi1 and hud textures * sprites * cleanup 1 * temp * temp * add zstd library * temp * working * tests * include fix * uncomment * better decomp of sparticle stuff, part 1 * update references
1026 lines
42 KiB
Plaintext
1026 lines
42 KiB
Plaintext
;; Packets:
|
|
|
|
;; run the distorters
|
|
|
|
|
|
;; setup the gs registers
|
|
;; - ate 1
|
|
;; - atst >=
|
|
;; - aref 38
|
|
;; - afail 1
|
|
;; - zte 1
|
|
;; - ztst >=
|
|
;; - texture clamp
|
|
|
|
;; upload the program
|
|
|
|
;; upload the frame data (41 qw's)
|
|
|
|
;; mscalf 0. with flushe
|
|
|
|
;; base/offset (0, 400)
|
|
|
|
;; matrix data upload 0
|
|
|
|
;; 3d all
|
|
|
|
;; 2d all (group 0's)
|
|
|
|
;; shadow
|
|
|
|
;; nop fluhse
|
|
|
|
;; matrix 1
|
|
|
|
;; add 2d all
|
|
|
|
|
|
;;;; Program memory
|
|
;; 0: sprite init
|
|
;; 3: 2d group0
|
|
;; 109: 2d group1
|
|
;; 211: 3d and shadow
|
|
|
|
;;;;; Data memory
|
|
|
|
;; 0 : header
|
|
;; 1 : vector data
|
|
;; 145: adgif data
|
|
;; 400: header (2nd buffer)
|
|
;; ...
|
|
;; 800: giftag building zone.
|
|
;; 900: matrix
|
|
;; 904: hvdf offset
|
|
;; 905+: user matrices
|
|
;; 980: frame data.
|
|
|
|
|
|
------------------------------------------------------
|
|
;; Initialization
|
|
lq.xyzw vf29, 996(vi00) | nop ;; vf29 = hmge-scale
|
|
lq.xyzw vf31, 997(vi00) | nop :e ;; vf31 = (pfog0 deg2rad min-scale inv-area)
|
|
iaddiu vi15, vi00, 0x320 | nop ;; vi15 = 800
|
|
------------------------------------------------------
|
|
;;2D - group 0
|
|
|
|
;; vi02: vec-data-ptr
|
|
;; vi03: adgif-data-ptr
|
|
;; vi04: num-sprites
|
|
;; vi08: group idx (giftag selector)
|
|
|
|
;; vf01 vector0 (position)
|
|
;; vf02: main-matrix * vector0
|
|
;; vf03: main-matrix * vector0 .* hmge-scale
|
|
;; vf04: (?, ?, rot_rad^2, ?)
|
|
;; vf05 vector1 ()
|
|
;; vf06: adgif
|
|
;; vf07: adgif
|
|
;; vf08: adgif
|
|
;; vf09: adgif
|
|
;; vf11 vector2
|
|
;; vf12 fog: (min, max, max-scale)
|
|
;; vf25 main matrix
|
|
;; vf26 ^
|
|
;; vf27 ^
|
|
;; vf28 ^
|
|
;; vf29: hmge-scale
|
|
;; vf30 hvdf offset
|
|
;; vf31 (pfog0, deg2rad, min-scale, inv-area)
|
|
|
|
|
|
;; first, set up the double buffer. here vi02 points to the block data.
|
|
xtop vi02 | nop
|
|
nop | nop
|
|
ilwr.x vi04, vi02 | nop ;; vi04 = num-sprites (from header)
|
|
iaddi vi02, vi02, 0x1 | nop ;; inc past header. vi02 now vector data
|
|
iaddiu vi03, vi02, 0x90 | nop ;; vi03 = adgif data
|
|
;; Block Loop Top
|
|
;; load the constants that we want to keep always.
|
|
L1:
|
|
ilw.y vi08, 1(vi02) | nop ;; should be 0 or 1, pick between sprite-2d-giftag/sprite-2d-giftag-2
|
|
|
|
lq.xyzw vf25, 900(vi00) | nop ;; load the main matrix.
|
|
lq.xyzw vf26, 901(vi00) | nop
|
|
lq.xyzw vf27, 902(vi00) | nop
|
|
lq.xyzw vf28, 903(vi00) | nop
|
|
lq.xyzw vf30, 904(vi00) | nop ;; hvdf offset
|
|
|
|
lqi.xyzw vf01, vi02 | nop ;; vector 0 (px, py, pz, sx)
|
|
lqi.xyzw vf05, vi02 | nop ;; vector 1 (flag, matrix?, )
|
|
lqi.xyzw vf11, vi02 | nop ;; vector 2
|
|
|
|
;; load fog consts, matrix multiply vf01.
|
|
lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00 ;; just add offset, w != 1.
|
|
nop | maddax.xyzw ACC, vf25, vf01 ;; normal matrix multiplication
|
|
nop | madday.xyzw ACC, vf26, vf01
|
|
nop | maddz.xyzw vf02, vf27, vf01
|
|
|
|
;; set w = 1 in vf05 ;; vf01.z = sy
|
|
move.w vf05, vf00 | addw.z vf01, vf00, vf05
|
|
nop | nop
|
|
|
|
;; Q = pfog / pos_mul.w vf05.z = deg2rad * rot (woo! this actually makes sense!)
|
|
div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31
|
|
;; ;; scale with hmge
|
|
nop | mul.xyzw vf03, vf02, vf29
|
|
nop | nop
|
|
nop | nop
|
|
;; vf04.z = rot^2
|
|
nop | mulz.z vf04, vf05, vf05
|
|
;; sincos-01 ;; clip!
|
|
lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03
|
|
;; vi06 = 1
|
|
iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11 ;; SETS FLAGS for FMAND
|
|
|
|
;; kicking loop.
|
|
L2:
|
|
;; vi05 = kickplace ;; multiply scales by by Q.
|
|
ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q
|
|
;; adgif vf15 = rot^3
|
|
lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04
|
|
;; vf16 = sincos23 taylor series for sine and cosine begins, result in acc.zw
|
|
lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14
|
|
;; vi01 = 1 when a = 0. scale position by Q
|
|
fmand vi01, vi06 | mul.xyz vf02, vf02, Q
|
|
;; reject a=0's vf01.x = vf01.z (which is sy)
|
|
ibne vi00, vi01, L5 | addz.x vf01, vf00, vf01
|
|
;; load first adgif. more taylor series
|
|
lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04
|
|
;; more sincos more taylor series
|
|
lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14
|
|
;; load 2nd adgifs add offset
|
|
lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30
|
|
;; load 3rd adgif vf01.x = vf01.x * vf01.w (which is sy * sx)
|
|
lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01
|
|
;; store first adgif more taylor series
|
|
sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04
|
|
;; more sincos more taylor series
|
|
lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14
|
|
;; store adgif saturate fog (against min)
|
|
sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12
|
|
;; store adgif saturate scales (not the sx*sy though)
|
|
sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31
|
|
;; store adgif more taylor series
|
|
sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04
|
|
;; more sincos more taylor series
|
|
lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14
|
|
;; load 4th adgif vf01.x *= inv-area
|
|
lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31
|
|
;; load 5th last adgif saturate fog (against max)
|
|
lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12
|
|
;; load gt or gt2 saturate scales (against max)
|
|
lq.xyzw vf08, 999(vi08) | miniz.zw vf01, vf01, vf12
|
|
;; load flag done with the taylor series (ugh)
|
|
ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14
|
|
;; next vector0? saturate sx*sy*inv-area?
|
|
lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00
|
|
;;
|
|
nop | suby.w vf02, vf10, vf12
|
|
lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01
|
|
fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00
|
|
lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23
|
|
fmand vi09, vi06 | nop
|
|
ibne vi00, vi09, L6 | nop
|
|
lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23
|
|
L3:
|
|
lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11
|
|
lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23
|
|
lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05
|
|
lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05
|
|
sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05
|
|
lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05
|
|
move.w vf24, vf00 | addw.z vf23, vf00, vf24
|
|
div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01
|
|
ibne vi00, vi01, L4 | muly.z vf24, vf24, vf31
|
|
ilw.y vi08, -2(vi02) | mulz.xyzw vf13, vf13, vf01
|
|
sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29
|
|
sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00
|
|
sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19
|
|
lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19
|
|
lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00
|
|
lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20
|
|
lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20
|
|
sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00
|
|
sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21
|
|
sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21
|
|
sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00
|
|
nop | maddax.xyzw ACC, vf12, vf22
|
|
nop | maddy.xyzw vf22, vf13, vf22
|
|
lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19
|
|
lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20
|
|
move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21
|
|
move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22
|
|
sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24
|
|
sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03
|
|
sq.xyzw vf21, 6(vi05) | nop
|
|
sq.xyzw vf22, 8(vi05) | nop
|
|
xgkick vi15 | nop
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddiu vi01, vi00, 0x672 | nop
|
|
ibne vi00, vi04, L2 | nop
|
|
isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11
|
|
nop | nop :e
|
|
nop | nop
|
|
L4:
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddi vi02, vi02, -0x3 | nop
|
|
ibne vi00, vi04, L1 | nop
|
|
nop | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L5:
|
|
iaddi vi04, vi04, -0x1 | nop ;; decrement sprite count
|
|
iaddi vi03, vi03, 0x4 | nop ;; skip remaining 4 adgifs.
|
|
ibne vi00, vi04, L1 | nop ;; if we have remainig sprites, try again.
|
|
nop | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L6:
|
|
b L3 | nop
|
|
lq.xyzw vf08, 1000(vi00) | nop
|
|
--------------------------------------
|
|
xtop vi02 | nop
|
|
nop | nop
|
|
ilwr.x vi04, vi02 | nop
|
|
iaddi vi02, vi02, 0x1 | nop
|
|
iaddiu vi03, vi02, 0x90 | nop
|
|
L7:
|
|
ilw.y vi08, 1(vi02) | nop
|
|
lq.xyzw vf25, 900(vi00) | nop
|
|
lq.xyzw vf26, 901(vi00) | nop
|
|
lq.xyzw vf27, 902(vi00) | nop
|
|
lq.xyzw vf28, 903(vi00) | nop
|
|
lq.xyzw vf30, 904(vi08) | nop
|
|
lqi.xyzw vf01, vi02 | nop
|
|
lqi.xyzw vf05, vi02 | nop
|
|
lqi.xyzw vf11, vi02 | nop
|
|
lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00
|
|
ilw.y vi08, 1(vi02) | maddax.xyzw ACC, vf25, vf01
|
|
nop | madday.xyzw ACC, vf26, vf01
|
|
nop | maddz.xyzw vf02, vf27, vf01
|
|
move.w vf05, vf00 | addw.z vf01, vf00, vf05
|
|
nop | nop
|
|
div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31
|
|
nop | mul.xyzw vf03, vf02, vf29
|
|
nop | nop
|
|
nop | nop
|
|
nop | mulz.z vf04, vf05, vf05
|
|
lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03
|
|
iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11
|
|
L8:
|
|
ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q
|
|
lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04
|
|
lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14
|
|
fmand vi01, vi06 | mul.xyz vf02, vf02, Q
|
|
ibne vi00, vi01, L10 | addz.x vf01, vf00, vf01
|
|
lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04
|
|
lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14
|
|
lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30
|
|
lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01
|
|
sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04
|
|
lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14
|
|
sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12
|
|
sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31
|
|
sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04
|
|
lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14
|
|
lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31
|
|
lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12
|
|
lq.xyzw vf08, 1000(vi00) | nop
|
|
ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14
|
|
lq.xyzw vf30, 904(vi08) | nop
|
|
lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00
|
|
lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01
|
|
fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00
|
|
lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23
|
|
lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23
|
|
lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11
|
|
lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23
|
|
lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05
|
|
lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05
|
|
sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05
|
|
lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05
|
|
move.w vf24, vf00 | addw.z vf23, vf00, vf24
|
|
div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01
|
|
ibne vi00, vi01, L9 | muly.z vf24, vf24, vf31
|
|
ilw.y vi08, 1(vi02) | mulz.xyzw vf13, vf13, vf01
|
|
sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29
|
|
sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00
|
|
sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19
|
|
lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19
|
|
lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00
|
|
lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20
|
|
lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20
|
|
sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00
|
|
sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21
|
|
sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21
|
|
sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00
|
|
nop | maddax.xyzw ACC, vf12, vf22
|
|
nop | maddy.xyzw vf22, vf13, vf22
|
|
lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19
|
|
lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20
|
|
move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21
|
|
move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22
|
|
sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24
|
|
sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03
|
|
sq.xyzw vf21, 6(vi05) | nop
|
|
sq.xyzw vf22, 8(vi05) | nop
|
|
xgkick vi15 | nop
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddiu vi01, vi00, 0x672 | nop
|
|
ibne vi00, vi04, L8 | nop
|
|
isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11
|
|
nop | nop :e
|
|
nop | nop
|
|
L9:
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddi vi02, vi02, -0x3 | nop
|
|
ibne vi00, vi04, L7 | nop
|
|
nop | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L10:
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddi vi03, vi03, 0x4 | nop
|
|
ibne vi00, vi04, L7 | nop
|
|
nop | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
-----------------------------------------------
|
|
lq.xyzw vf25, 900(vi00) | nop
|
|
lq.xyzw vf26, 901(vi00) | nop
|
|
lq.xyzw vf27, 902(vi00) | nop
|
|
lq.xyzw vf28, 903(vi00) | nop
|
|
lq.xyzw vf30, 904(vi00) | nop
|
|
xtop vi02 | nop
|
|
nop | nop
|
|
ilwr.x vi04, vi02 | nop
|
|
iaddi vi02, vi02, 0x1 | nop
|
|
iaddiu vi03, vi02, 0x90 | nop
|
|
lq.xyzw vf23, 1020(vi00) | nop
|
|
iaddi vi06, vi00, 0x1 | nop
|
|
L11:
|
|
lq.xyzw vf06, 1(vi02) | nop
|
|
lq.xyzw vf07, 2(vi02) | nop
|
|
iaddi vi01, vi00, 0x2 | nop
|
|
nop | nop
|
|
nop | mul.xyzw vf05, vf06, vf06
|
|
nop | addw.y vf08, vf00, vf06
|
|
nop | subw.w vf06, vf06, vf06
|
|
nop | adda.xyzw ACC, vf07, vf07
|
|
nop | addy.x vf05, vf05, vf05
|
|
nop | nop
|
|
nop | nop
|
|
fmand vi01, vi06 | nop
|
|
ibne vi00, vi01, L15 | addz.x vf05, vf05, vf05
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | subx.w vf05, vf00, vf05
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
sqrt Q, vf05.w | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | addq.w vf06, vf06, Q
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | add.xyzw vf13, vf06, vf06
|
|
nop | addw.x vf09, vf00, vf06
|
|
nop | addz.y vf09, vf00, vf06
|
|
nop | suby.z vf09, vf00, vf06
|
|
nop | subw.w vf09, vf00, vf00
|
|
nop | subz.x vf10, vf00, vf06
|
|
nop | addw.y vf10, vf00, vf06
|
|
nop | addx.z vf10, vf00, vf06
|
|
nop | subw.w vf10, vf00, vf00
|
|
nop | addy.x vf11, vf00, vf06
|
|
nop | subx.y vf11, vf00, vf06
|
|
nop | addw.z vf11, vf00, vf06
|
|
nop | subw.w vf11, vf00, vf00
|
|
L12:
|
|
lq.xyzw vf12, 0(vi02) | opmula.xyz ACC, vf13, vf09
|
|
lq.xyzw vf07, 2(vi02) | opmsub.xyz vf09, vf09, vf13
|
|
iaddi vi02, vi02, 0x3 | opmula.xyz ACC, vf13, vf10
|
|
lq.xyzw vf06, 1(vi02) | opmsub.xyz vf10, vf10, vf13
|
|
ior vi05, vi15, vi00 | opmula.xyz ACC, vf13, vf11
|
|
lq.xyzw vf01, 998(vi00) | opmsub.xyz vf11, vf11, vf13
|
|
lqi.xyzw vf02, vi03 | addw.x vf09, vf09, vf00
|
|
lqi.xyzw vf03, vi03 | addw.y vf10, vf10, vf00
|
|
lqi.xyzw vf04, vi03 | addw.z vf11, vf11, vf00
|
|
sqi.xyzw vf01, vi05 | mul.xyzw vf05, vf06, vf06
|
|
move.w vf12, vf00 | mulw.xyzw vf09, vf09, vf12
|
|
iaddi vi06, vi00, 0x1 | muly.xyzw vf11, vf11, vf08
|
|
lq.xyzw vf14, 992(vi00) | adda.xyzw ACC, vf07, vf07
|
|
lq.xyzw vf15, 993(vi00) | ftoi0.xyzw vf07, vf07
|
|
lq.xyzw vf16, 994(vi00) | addw.y vf08, vf00, vf06
|
|
lq.xyzw vf17, 995(vi00) | subw.w vf06, vf06, vf06
|
|
fmand vi01, vi06 | mulax.xyzw ACC, vf09, vf14
|
|
ibne vi00, vi01, L14 | madday.xyzw ACC, vf10, vf14
|
|
sq.xyzw vf07, 7(vi05) | maddaz.xyzw ACC, vf11, vf14
|
|
sq.xyzw vf07, 10(vi05) | maddw.xyzw vf14, vf12, vf00
|
|
sqi.xyzw vf02, vi05 | addy.x vf05, vf05, vf05
|
|
sq.xyzw vf07, 12(vi05) | mulax.xyzw ACC, vf09, vf15
|
|
sq.xyzw vf07, 15(vi05) | madday.xyzw ACC, vf10, vf15
|
|
sqi.xyzw vf03, vi05 | maddaz.xyzw ACC, vf11, vf15
|
|
sqi.xyzw vf04, vi05 | addz.x vf05, vf05, vf05
|
|
lqi.xyzw vf01, vi03 | maddw.xyzw vf15, vf12, vf00
|
|
lqi.xyzw vf02, vi03 | mulax.xyzw ACC, vf09, vf16
|
|
lq.xyzw vf03, 1008(vi00) | madday.xyzw ACC, vf10, vf16
|
|
nop | subx.w vf05, vf00, vf05
|
|
sqi.xyzw vf01, vi05 | maddaz.xyzw ACC, vf11, vf16
|
|
sqi.xyzw vf02, vi05 | maddw.xyzw vf16, vf12, vf00
|
|
sqi.xyzw vf03, vi05 | mulax.xyzw ACC, vf09, vf17
|
|
sqrt Q, vf05.w | madday.xyzw ACC, vf10, vf17
|
|
nop | maddaz.xyzw ACC, vf11, vf17
|
|
nop | maddw.xyzw vf17, vf12, vf00
|
|
lq.xyzw vf18, 988(vi00) | mulax.xyzw ACC, vf25, vf14
|
|
lq.xyzw vf19, 989(vi00) | madday.xyzw ACC, vf26, vf14
|
|
lq.xyzw vf20, 990(vi00) | maddaz.xyzw ACC, vf27, vf14
|
|
lq.xyzw vf21, 991(vi00) | maddw.xyzw vf14, vf28, vf00
|
|
nop | addq.w vf06, vf06, Q
|
|
nop | mulax.xyzw ACC, vf25, vf15
|
|
nop | madday.xyzw ACC, vf26, vf15
|
|
nop | maddaz.xyzw ACC, vf27, vf15
|
|
div Q, vf31.x, vf14.w | mul.xyzw vf09, vf14, vf29
|
|
nop | maddw.xyzw vf15, vf28, vf00
|
|
nop | mulax.xyzw ACC, vf25, vf16
|
|
nop | madday.xyzw ACC, vf26, vf16
|
|
nop | maddaz.xyzw ACC, vf27, vf16
|
|
nop | mul.xyzw vf10, vf15, vf29
|
|
nop | maddw.xyzw vf16, vf28, vf00
|
|
div Q, vf31.x, vf15.w | mul.xyz vf14, vf14, Q
|
|
nop | mul.xyzw vf18, vf18, Q
|
|
nop | mulax.xyzw ACC, vf25, vf17
|
|
nop | madday.xyzw ACC, vf26, vf17
|
|
nop | maddaz.xyzw ACC, vf27, vf17
|
|
sq.xyzw vf18, 0(vi05) | mul.xyzw vf11, vf16, vf29
|
|
nop | maddw.xyzw vf17, vf28, vf00
|
|
div Q, vf31.x, vf16.w | mul.xyz vf15, vf15, Q
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | add.xyzw vf14, vf14, vf30
|
|
nop | add.xyzw vf15, vf15, vf30
|
|
nop | mul.xyzw vf12, vf17, vf29
|
|
sq.xyzw vf19, 3(vi05) | clipw.xyz vf09, vf09
|
|
nop | clipw.xyz vf10, vf10
|
|
div Q, vf31.x, vf17.w | mul.xyz vf16, vf16, Q
|
|
nop | mul.xyzw vf20, vf20, Q
|
|
nop | clipw.xyz vf11, vf11
|
|
nop | clipw.xyz vf12, vf12
|
|
nop | add.xyzw vf16, vf16, vf30
|
|
sq.xyzw vf20, 6(vi05) | maxx.w vf14, vf14, vf23
|
|
nop | maxx.w vf15, vf15, vf23
|
|
fcand vi01, 0x410410 | mul.xyz vf17, vf17, Q
|
|
ibne vi00, vi01, L13 | mul.xyzw vf21, vf21, Q
|
|
fcand vi01, 0xffffff | maxx.w vf16, vf16, vf23
|
|
ibne vi00, vi01, L16 | miniy.w vf14, vf14, vf23
|
|
nop | add.xyzw vf17, vf17, vf30
|
|
sq.xyzw vf21, 9(vi05) | miniy.w vf15, vf15, vf23
|
|
nop | miniy.w vf16, vf16, vf23
|
|
nop | ftoi4.xyzw vf14, vf14
|
|
nop | maxx.w vf17, vf17, vf23
|
|
nop | ftoi4.xyzw vf15, vf15
|
|
nop | ftoi4.xyzw vf16, vf16
|
|
sq.xyzw vf14, 2(vi05) | add.xyzw vf13, vf06, vf06
|
|
nop | miniy.w vf17, vf17, vf23
|
|
sq.xyzw vf15, 5(vi05) | addw.x vf09, vf00, vf06
|
|
sq.xyzw vf16, 8(vi05) | addz.y vf09, vf00, vf06
|
|
nop | suby.z vf09, vf00, vf06
|
|
nop | ftoi4.xyzw vf17, vf17
|
|
nop | subw.w vf09, vf00, vf00
|
|
nop | subz.x vf10, vf00, vf06
|
|
nop | addw.y vf10, vf00, vf06
|
|
sq.xyzw vf17, 11(vi05) | addx.z vf10, vf00, vf06
|
|
xgkick vi15 | subw.w vf10, vf00, vf00
|
|
iaddi vi04, vi04, -0x1 | addy.x vf11, vf00, vf06
|
|
iaddiu vi01, vi00, 0x672 | subx.y vf11, vf00, vf06
|
|
ibne vi00, vi04, L12 | addw.z vf11, vf00, vf06
|
|
isub vi15, vi01, vi15 | subw.w vf11, vf00, vf00
|
|
nop | nop :e
|
|
nop | nop
|
|
L13:
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
nop | nop
|
|
ibne vi00, vi04, L11 | nop
|
|
nop | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L14:
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddi vi03, vi03, 0x2 | nop
|
|
ibne vi00, vi04, L11 | nop
|
|
nop | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L15:
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddi vi03, vi03, 0x5 | nop
|
|
ibne vi00, vi04, L11 | nop
|
|
iaddi vi02, vi02, 0x3 | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L16:
|
|
fcor vi01, 0x7df7df | nop
|
|
ibne vi00, vi01, L13 | nop
|
|
fcor vi01, 0xdf7df7 | nop
|
|
ibne vi00, vi01, L13 | nop
|
|
fcor vi01, 0xefbefb | nop
|
|
ibne vi00, vi01, L13 | nop
|
|
fcor vi01, 0xf7df7d | nop
|
|
ibne vi00, vi01, L13 | nop
|
|
fcor vi01, 0xfbefbe | nop
|
|
ibne vi00, vi01, L13 | nop
|
|
ior vi07, vi05, vi00 | nop
|
|
nop | itof0.xyzw vf07, vf07
|
|
sq.xyzw vf09, 2(vi07) | nop
|
|
sq.xyzw vf10, 5(vi07) | nop
|
|
sq.xyzw vf11, 8(vi07) | nop
|
|
sq.xyzw vf12, 11(vi07) | nop
|
|
sq.xyzw vf09, 14(vi07) | nop
|
|
lq.xyzw vf18, 988(vi00) | nop
|
|
lq.xyzw vf19, 989(vi00) | nop
|
|
lq.xyzw vf20, 990(vi00) | nop
|
|
lq.xyzw vf21, 991(vi00) | nop
|
|
sq.xyzw vf18, 0(vi07) | nop
|
|
sq.xyzw vf19, 3(vi07) | nop
|
|
sq.xyzw vf20, 6(vi07) | nop
|
|
sq.xyzw vf21, 9(vi07) | nop
|
|
sq.xyzw vf18, 12(vi07) | nop
|
|
sq.xyzw vf07, 1(vi07) | nop
|
|
sq.xyzw vf07, 4(vi07) | nop
|
|
sq.xyzw vf07, 7(vi07) | nop
|
|
sq.xyzw vf07, 10(vi07) | nop
|
|
sq.xyzw vf07, 13(vi07) | nop
|
|
iaddi vi09, vi00, 0x4 | nop
|
|
bal vi11, L18 | nop
|
|
nop | nop
|
|
lq.xyzw vf01, 1014(vi00) | nop
|
|
ibeq vi00, vi09, L13 | nop
|
|
iaddiu vi10, vi09, 0x4000 | nop
|
|
iaddiu vi10, vi10, 0x4000 | nop
|
|
sqd.xyzw vf01, vi05 | nop
|
|
iswr.x vi10, vi05 | nop
|
|
iaddi vi05, vi05, 0x1 | nop
|
|
lq.xyzw vf29, 1015(vi00) | nop
|
|
L17:
|
|
lqi.xyzw vf17, vi05 | nop
|
|
lqi.xyzw vf20, vi05 | nop
|
|
lqi.xyzw vf14, vi05 | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
div Q, vf00.w, vf14.w | mul.xyzw vf14, vf14, vf29
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | mul.xyz vf14, vf14, Q
|
|
nop | mul.xyzw vf17, vf17, Q
|
|
nop | nop
|
|
nop | nop
|
|
nop | add.xyzw vf14, vf14, vf30
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | maxx.w vf14, vf14, vf23
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
nop | miniy.w vf14, vf14, vf23
|
|
nop | nop
|
|
nop | nop
|
|
nop | ftoi0.xyzw vf20, vf20
|
|
nop | ftoi4.xyzw vf14, vf14
|
|
nop | nop
|
|
sq.xyzw vf17, -3(vi05) | nop
|
|
sq.xyzw vf20, -2(vi05) | nop
|
|
sq.xyzw vf14, -1(vi05) | nop
|
|
iaddi vi09, vi09, -0x1 | nop
|
|
nop | nop
|
|
ibne vi00, vi09, L17 | nop
|
|
nop | nop
|
|
lq.xyzw vf29, 996(vi00) | nop
|
|
xgkick vi15 | nop
|
|
iaddi vi04, vi04, -0x1 | nop
|
|
iaddiu vi01, vi00, 0x672 | nop
|
|
ibne vi00, vi04, L11 | nop
|
|
isub vi15, vi01, vi15 | nop
|
|
nop | nop :e
|
|
nop | nop
|
|
L18:
|
|
ior vi08, vi07, vi00 | nop
|
|
lq.xyzw vf14, 2(vi07) | nop
|
|
ior vi10, vi09, vi00 | nop
|
|
lq.xyzw vf17, 0(vi07) | nop
|
|
lq.xyzw vf20, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
|
L19:
|
|
lq.xyzw vf15, 2(vi07) | nop
|
|
lq.xyzw vf18, 0(vi07) | nop
|
|
lq.xyzw vf21, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | nop
|
|
nop | clipw.xyz vf15, vf15
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
fcor vi01, 0xfff7df | nop
|
|
ibne vi00, vi01, L30 | nop
|
|
fcand vi01, 0x20 | nop
|
|
ibne vi00, vi01, L31 | nop
|
|
fcand vi01, 0x800 | nop
|
|
ibne vi00, vi01, L32 | nop
|
|
nop | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
L20:
|
|
move.xyzw vf17, vf18 | nop
|
|
iaddi vi09, vi09, -0x1 | nop
|
|
move.xyzw vf20, vf21 | nop
|
|
ibne vi00, vi09, L19 | nop
|
|
move.xyzw vf14, vf15 | nop
|
|
lq.xyzw vf17, 0(vi05) | nop
|
|
lq.xyzw vf20, 1(vi05) | nop
|
|
lq.xyzw vf14, 2(vi05) | nop
|
|
ior vi07, vi05, vi00 | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
ibeq vi00, vi10, L29 | nop
|
|
ior vi09, vi10, vi00 | nop
|
|
ior vi08, vi07, vi00 | nop
|
|
lq.xyzw vf14, 2(vi07) | nop
|
|
ior vi10, vi09, vi00 | nop
|
|
lq.xyzw vf17, 0(vi07) | nop
|
|
lq.xyzw vf20, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
|
L21:
|
|
lq.xyzw vf15, 2(vi07) | nop
|
|
lq.xyzw vf18, 0(vi07) | nop
|
|
lq.xyzw vf21, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | nop
|
|
nop | clipw.xyz vf15, vf15
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
fcor vi01, 0xfffdf7 | nop
|
|
ibne vi00, vi01, L33 | nop
|
|
fcand vi01, 0x8 | nop
|
|
ibne vi00, vi01, L34 | nop
|
|
fcand vi01, 0x200 | nop
|
|
ibne vi00, vi01, L35 | nop
|
|
nop | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
L22:
|
|
move.xyzw vf17, vf18 | nop
|
|
iaddi vi09, vi09, -0x1 | nop
|
|
move.xyzw vf20, vf21 | nop
|
|
ibne vi00, vi09, L21 | nop
|
|
move.xyzw vf14, vf15 | nop
|
|
lq.xyzw vf17, 0(vi05) | nop
|
|
lq.xyzw vf20, 1(vi05) | nop
|
|
lq.xyzw vf14, 2(vi05) | nop
|
|
ior vi07, vi05, vi00 | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
ibeq vi00, vi10, L29 | nop
|
|
ior vi09, vi10, vi00 | nop
|
|
ior vi08, vi07, vi00 | nop
|
|
lq.xyzw vf14, 2(vi07) | nop
|
|
ior vi10, vi09, vi00 | nop
|
|
lq.xyzw vf17, 0(vi07) | nop
|
|
lq.xyzw vf20, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
|
L23:
|
|
lq.xyzw vf15, 2(vi07) | nop
|
|
lq.xyzw vf18, 0(vi07) | nop
|
|
lq.xyzw vf21, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | nop
|
|
nop | clipw.xyz vf15, vf15
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
fcor vi01, 0xfffefb | nop
|
|
ibne vi00, vi01, L36 | nop
|
|
fcand vi01, 0x4 | nop
|
|
ibne vi00, vi01, L37 | nop
|
|
fcand vi01, 0x100 | nop
|
|
ibne vi00, vi01, L38 | nop
|
|
nop | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
L24:
|
|
move.xyzw vf17, vf18 | nop
|
|
iaddi vi09, vi09, -0x1 | nop
|
|
move.xyzw vf20, vf21 | nop
|
|
ibne vi00, vi09, L23 | nop
|
|
move.xyzw vf14, vf15 | nop
|
|
lq.xyzw vf17, 0(vi05) | nop
|
|
lq.xyzw vf20, 1(vi05) | nop
|
|
lq.xyzw vf14, 2(vi05) | nop
|
|
ior vi07, vi05, vi00 | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
ibeq vi00, vi10, L29 | nop
|
|
ior vi09, vi10, vi00 | nop
|
|
ior vi08, vi07, vi00 | nop
|
|
lq.xyzw vf14, 2(vi07) | nop
|
|
ior vi10, vi09, vi00 | nop
|
|
lq.xyzw vf17, 0(vi07) | nop
|
|
lq.xyzw vf20, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
|
L25:
|
|
lq.xyzw vf15, 2(vi07) | nop
|
|
lq.xyzw vf18, 0(vi07) | nop
|
|
lq.xyzw vf21, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | nop
|
|
nop | clipw.xyz vf15, vf15
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
fcor vi01, 0xffff7d | nop
|
|
ibne vi00, vi01, L39 | nop
|
|
fcand vi01, 0x2 | nop
|
|
ibne vi00, vi01, L40 | nop
|
|
fcand vi01, 0x80 | nop
|
|
ibne vi00, vi01, L41 | nop
|
|
nop | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
L26:
|
|
move.xyzw vf17, vf18 | nop
|
|
iaddi vi09, vi09, -0x1 | nop
|
|
move.xyzw vf20, vf21 | nop
|
|
ibne vi00, vi09, L25 | nop
|
|
move.xyzw vf14, vf15 | nop
|
|
lq.xyzw vf17, 0(vi05) | nop
|
|
lq.xyzw vf20, 1(vi05) | nop
|
|
lq.xyzw vf14, 2(vi05) | nop
|
|
ior vi07, vi05, vi00 | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
ibeq vi00, vi10, L29 | nop
|
|
ior vi09, vi10, vi00 | nop
|
|
ior vi08, vi07, vi00 | nop
|
|
lq.xyzw vf14, 2(vi07) | nop
|
|
ior vi10, vi09, vi00 | nop
|
|
lq.xyzw vf17, 0(vi07) | nop
|
|
lq.xyzw vf20, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
|
L27:
|
|
lq.xyzw vf15, 2(vi07) | nop
|
|
lq.xyzw vf18, 0(vi07) | nop
|
|
lq.xyzw vf21, 1(vi07) | nop
|
|
iaddi vi07, vi07, 0x3 | nop
|
|
nop | clipw.xyz vf15, vf15
|
|
nop | nop
|
|
nop | nop
|
|
nop | nop
|
|
fcor vi01, 0xffffbe | nop
|
|
ibne vi00, vi01, L42 | nop
|
|
fcand vi01, 0x1 | nop
|
|
ibne vi00, vi01, L43 | nop
|
|
fcand vi01, 0x40 | nop
|
|
ibne vi00, vi01, L44 | nop
|
|
nop | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
L28:
|
|
move.xyzw vf17, vf18 | nop
|
|
iaddi vi09, vi09, -0x1 | nop
|
|
move.xyzw vf20, vf21 | nop
|
|
ibne vi00, vi09, L27 | nop
|
|
move.xyzw vf14, vf15 | nop
|
|
lq.xyzw vf17, 0(vi05) | nop
|
|
lq.xyzw vf20, 1(vi05) | nop
|
|
lq.xyzw vf14, 2(vi05) | nop
|
|
ior vi07, vi05, vi00 | nop
|
|
sqi.xyzw vf17, vi08 | nop
|
|
sqi.xyzw vf20, vi08 | nop
|
|
sqi.xyzw vf14, vi08 | nop
|
|
ibeq vi00, vi10, L29 | nop
|
|
ior vi09, vi10, vi00 | nop
|
|
L29:
|
|
jr vi11 | nop
|
|
nop | nop
|
|
L30:
|
|
b L20 | nop
|
|
iaddi vi10, vi10, -0x1 | nop
|
|
L31:
|
|
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
|
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
|
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
|
ibeq vi07, vi08, L20 | nop
|
|
nop | addz.w vf13, vf16, vf16
|
|
nop | addw.z vf13, vf14, vf14
|
|
div Q, vf13.z, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | sub.xyzw vf19, vf17, vf19
|
|
nop | sub.xyzw vf22, vf20, vf22
|
|
nop | sub.xyzw vf16, vf14, vf16
|
|
iaddi vi10, vi10, 0x1 | nop
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L20 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L32:
|
|
nop | sub.xyzw vf16, vf14, vf15
|
|
nop | sub.xyzw vf19, vf17, vf18
|
|
nop | sub.xyzw vf22, vf20, vf21
|
|
nop | addz.w vf13, vf16, vf16
|
|
nop | addw.z vf13, vf15, vf15
|
|
div Q, vf13.z, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | sub.xyzw vf19, vf18, vf19
|
|
nop | sub.xyzw vf22, vf21, vf22
|
|
nop | sub.xyzw vf16, vf15, vf16
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L20 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L33:
|
|
b L22 | nop
|
|
iaddi vi10, vi10, -0x1 | nop
|
|
L34:
|
|
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
|
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
|
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
|
ibeq vi07, vi08, L22 | nop
|
|
nop | addy.w vf13, vf16, vf16
|
|
nop | addw.y vf13, vf14, vf14
|
|
div Q, vf13.y, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | sub.xyzw vf19, vf17, vf19
|
|
nop | sub.xyzw vf22, vf20, vf22
|
|
nop | sub.xyzw vf16, vf14, vf16
|
|
iaddi vi10, vi10, 0x1 | nop
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L22 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L35:
|
|
nop | sub.xyzw vf16, vf14, vf15
|
|
nop | sub.xyzw vf19, vf17, vf18
|
|
nop | sub.xyzw vf22, vf20, vf21
|
|
nop | addy.w vf13, vf16, vf16
|
|
nop | addw.y vf13, vf15, vf15
|
|
div Q, vf13.y, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | sub.xyzw vf19, vf18, vf19
|
|
nop | sub.xyzw vf22, vf21, vf22
|
|
nop | sub.xyzw vf16, vf15, vf16
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L22 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L36:
|
|
b L24 | nop
|
|
iaddi vi10, vi10, -0x1 | nop
|
|
L37:
|
|
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
|
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
|
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
|
ibeq vi07, vi08, L24 | nop
|
|
nop | suby.w vf13, vf16, vf16
|
|
nop | subw.y vf13, vf14, vf14
|
|
div Q, vf13.y, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | add.xyzw vf19, vf17, vf19
|
|
nop | add.xyzw vf22, vf20, vf22
|
|
nop | add.xyzw vf16, vf14, vf16
|
|
iaddi vi10, vi10, 0x1 | nop
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L24 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L38:
|
|
nop | sub.xyzw vf16, vf14, vf15
|
|
nop | sub.xyzw vf19, vf17, vf18
|
|
nop | sub.xyzw vf22, vf20, vf21
|
|
nop | suby.w vf13, vf16, vf16
|
|
nop | subw.y vf13, vf15, vf15
|
|
div Q, vf13.y, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | add.xyzw vf19, vf18, vf19
|
|
nop | add.xyzw vf22, vf21, vf22
|
|
nop | add.xyzw vf16, vf15, vf16
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L24 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L39:
|
|
b L26 | nop
|
|
iaddi vi10, vi10, -0x1 | nop
|
|
L40:
|
|
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
|
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
|
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
|
ibeq vi07, vi08, L26 | nop
|
|
nop | addx.w vf13, vf16, vf16
|
|
nop | addw.x vf13, vf14, vf14
|
|
div Q, vf13.x, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | sub.xyzw vf19, vf17, vf19
|
|
nop | sub.xyzw vf22, vf20, vf22
|
|
nop | sub.xyzw vf16, vf14, vf16
|
|
iaddi vi10, vi10, 0x1 | nop
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L26 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L41:
|
|
nop | sub.xyzw vf16, vf14, vf15
|
|
nop | sub.xyzw vf19, vf17, vf18
|
|
nop | sub.xyzw vf22, vf20, vf21
|
|
nop | addx.w vf13, vf16, vf16
|
|
nop | addw.x vf13, vf15, vf15
|
|
div Q, vf13.x, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | sub.xyzw vf19, vf18, vf19
|
|
nop | sub.xyzw vf22, vf21, vf22
|
|
nop | sub.xyzw vf16, vf15, vf16
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L26 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L42:
|
|
b L28 | nop
|
|
iaddi vi10, vi10, -0x1 | nop
|
|
L43:
|
|
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
|
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
|
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
|
ibeq vi07, vi08, L28 | nop
|
|
nop | subx.w vf13, vf16, vf16
|
|
nop | subw.x vf13, vf14, vf14
|
|
div Q, vf13.x, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | add.xyzw vf19, vf17, vf19
|
|
nop | add.xyzw vf22, vf20, vf22
|
|
nop | add.xyzw vf16, vf14, vf16
|
|
iaddi vi10, vi10, 0x1 | nop
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L28 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|
|
L44:
|
|
nop | sub.xyzw vf16, vf14, vf15
|
|
nop | sub.xyzw vf19, vf17, vf18
|
|
nop | sub.xyzw vf22, vf20, vf21
|
|
nop | subx.w vf13, vf16, vf16
|
|
nop | subw.x vf13, vf15, vf15
|
|
div Q, vf13.x, vf13.w | nop
|
|
waitq | nop
|
|
nop | mul.xyzw vf19, vf19, Q
|
|
nop | mul.xyzw vf22, vf22, Q
|
|
nop | mul.xyzw vf16, vf16, Q
|
|
nop | add.xyzw vf19, vf18, vf19
|
|
nop | add.xyzw vf22, vf21, vf22
|
|
nop | add.xyzw vf16, vf15, vf16
|
|
sqi.xyzw vf19, vi08 | nop
|
|
sqi.xyzw vf22, vi08 | nop
|
|
b L28 | nop
|
|
sqi.xyzw vf16, vi08 | nop
|