mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
3d08d079c9
Initial implementation of the `ocean-mid`, `ocean-far` and `ocean-near` renderers for Jak 2. There's still a few things to sort out, mainly: - [x] ~Backwards compatibility with Jak 1. The only thing that currently stands in the way of that is figuring out a clean way to "un-hardcode" the texture base pointer in C++ without creating a completely separate `OceanTexture` class for Jak 2. One thing I thought of would be modifying `BucketRenderer`'s virtual `init_textures` method to also pass the `GameVersion`, but I'm not sure if there's a better way.~ - [x] ~The sudden transition from `ocean-near` to `ocean-mid`. Not sure why it's happening or how to fix it.~ - [x] The ocean has two new methods in Jak 2, `ocean::89` and `ocean::79`, one of which seems to be related to time of day sky colors. ~Even without them implemented, the end result looks quite close, so we may be able to skip them?~ `ocean::89` generates `ocean-mid` envmap textures, so it will likely be required, but will not be handled right now. Reverted the VU prologue removals because it made the tests fail.
4233 lines
174 KiB
C++
4233 lines
174 KiB
C++
#include "OceanNear.h"
|
|
|
|
void OceanNear::run_call0_vu2c() {
|
|
bool bc;
|
|
// lq.xyzw vf01, 951(vi00) | nop 0
|
|
lq_buffer(Mask::xyzw, vu.vf01, 951);
|
|
// lq.xyzw vf02, 953(vi00) | nop 1
|
|
lq_buffer(Mask::xyzw, vu.vf02, 953);
|
|
// lq.xyzw vf03, 954(vi00) | nop 2
|
|
lq_buffer(Mask::xyzw, vu.vf03, 954);
|
|
// lq.xyzw vf05, 955(vi00) | nop 3
|
|
lq_buffer(Mask::xyzw, vu.vf05, 955);
|
|
// lq.xyzw vf06, 956(vi00) | nop 4
|
|
lq_buffer(Mask::xyzw, vu.vf06, 956);
|
|
// iaddiu vi09, vi00, 0x213 | nop 5
|
|
vu.vi09 = 0x213; /* 531 */
|
|
// iaddi vi01, vi00, 0x6 | nop 6
|
|
vu.vi01 = 6;
|
|
L1:
|
|
// lq.xyzw vf12, 962(vi01) | nop 7
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 962);
|
|
// lq.xyzw vf13, 969(vi01) | nop 8
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 969);
|
|
// sq.xyzw vf12, 531(vi01) | nop 9
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 531);
|
|
// sq.xyzw vf12, 671(vi01) | nop 10
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 671);
|
|
// sq.xyzw vf13, 592(vi01) | nop 11
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 592);
|
|
// sq.xyzw vf13, 732(vi01) | nop 12
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 732);
|
|
// sq.xyzw vf12, 811(vi01) | nop 13
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 811);
|
|
// sq.xyzw vf12, 881(vi01) | nop 14
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 881);
|
|
// sq.xyzw vf13, 846(vi01) | nop 15
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 846);
|
|
// sq.xyzw vf13, 916(vi01) | nop 16
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 916);
|
|
// BRANCH!
|
|
// ibgtz vi01, L1 | nop 17
|
|
bc = ((s16)vu.vi01) > 0;
|
|
// iaddi vi01, vi01, -0x1 | nop 18
|
|
vu.vi01 = vu.vi01 + -1;
|
|
if (bc) {
|
|
goto L1;
|
|
}
|
|
|
|
// lq.xyzw vf08, 976(vi00) | nop 19
|
|
lq_buffer(Mask::xyzw, vu.vf08, 976);
|
|
// iaddi vi04, vi00, 0x8 | nop 20
|
|
vu.vi04 = 8;
|
|
// iaddiu vi06, vi00, 0x11 | ftoi0.xyzw vf08, vf08 21
|
|
vu.vf08.ftoi0(Mask::xyzw, vu.vf08);
|
|
vu.vi06 = 0x11; /* 17 */
|
|
L2:
|
|
// sq.xyzw vf08, 592(vi04) | nop 22
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi04 + 592);
|
|
// sq.xyzw vf08, 732(vi04) | nop 23
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi04 + 732);
|
|
// iaddi vi04, vi04, 0x3 | nop 24
|
|
vu.vi04 = vu.vi04 + 3;
|
|
// BRANCH!
|
|
// ibgtz vi06, L2 | nop 25
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 26
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L2;
|
|
}
|
|
|
|
// lq.xyzw vf07, 957(vi00) | nop 27
|
|
lq_buffer(Mask::xyzw, vu.vf07, 957);
|
|
// iaddi vi05, vi00, 0x0 | mul.xyzw vf16, vf00, vf00 28
|
|
vu.vf16.mul(Mask::xyzw, vu.vf00, vu.vf00);
|
|
vu.vi05 = 0;
|
|
// iaddi vi07, vi00, 0x8 | nop 29
|
|
vu.vi07 = 8;
|
|
L3:
|
|
// iaddi vi06, vi00, 0x8 | mul.x vf16, vf00, vf00 30
|
|
vu.vf16.mul(Mask::x, vu.vf00, vu.vf00);
|
|
vu.vi06 = 8;
|
|
L4:
|
|
// sq.xyzw vf16, 290(vi05) | nop 31
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi05 + 290);
|
|
// iaddi vi05, vi05, 0x3 | addx.x vf16, vf16, vf07 32
|
|
vu.vf16.add(Mask::x, vu.vf16, vu.vf07.x());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// BRANCH!
|
|
// ibgtz vi06, L4 | nop 33
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 34
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L4;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibgtz vi07, L3 | addx.z vf16, vf16, vf07 35
|
|
vu.vf16.add(Mask::z, vu.vf16, vu.vf07.x());
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 36
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L3;
|
|
}
|
|
|
|
// nop | nop :e 37
|
|
|
|
// nop | nop 38
|
|
}
|
|
|
|
void OceanNear::run_call39_vu2c() {
|
|
bool bc;
|
|
// xtop vi02 | nop 39
|
|
vu.vi02 = xtop();
|
|
// ilw.x vi03, 10(vi02) | nop 40
|
|
ilw_buffer(Mask::x, vu.vi03, vu.vi02 + 10);
|
|
// ilw.y vi04, 10(vi02) | nop 41
|
|
ilw_buffer(Mask::y, vu.vi04, vu.vi02 + 10);
|
|
// iaddi vi05, vi00, 0x0 | nop 42
|
|
vu.vi05 = 0;
|
|
// iaddi vi07, vi00, 0x7 | nop 43
|
|
vu.vi07 = 7;
|
|
L6:
|
|
// lq.xyzw vf28, 32(vi03) | nop 44
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 32);
|
|
// lq.xyzw vf29, 33(vi03) | nop 45
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 33);
|
|
// lq.xyzw vf30, 32(vi04) | nop 46
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi04 + 32);
|
|
// lq.xyzw vf24, 290(vi05) | nop 47
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// lq.xyzw vf25, 293(vi05) | nop 48
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// lq.xyzw vf26, 296(vi05) | nop 49
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// lq.xyzw vf27, 299(vi05) | nop 50
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// lq.xyzw vf12, 302(vi05) | addx.y vf24, vf00, vf28 51
|
|
vu.vf24.add(Mask::y, vu.vf00, vu.vf28.x());
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// lq.xyzw vf13, 305(vi05) | addy.y vf25, vf00, vf28 52
|
|
vu.vf25.add(Mask::y, vu.vf00, vu.vf28.y());
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// lq.xyzw vf14, 308(vi05) | addz.y vf26, vf00, vf28 53
|
|
vu.vf26.add(Mask::y, vu.vf00, vu.vf28.z());
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// lq.xyzw vf15, 311(vi05) | addw.y vf27, vf00, vf28 54
|
|
vu.vf27.add(Mask::y, vu.vf00, vu.vf28.w());
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// lq.xyzw vf08, 314(vi05) | addx.y vf12, vf00, vf29 55
|
|
vu.vf12.add(Mask::y, vu.vf00, vu.vf29.x());
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// sq.xyzw vf24, 290(vi05) | addy.y vf13, vf00, vf29 56
|
|
vu.vf13.add(Mask::y, vu.vf00, vu.vf29.y());
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// sq.xyzw vf25, 293(vi05) | addz.y vf14, vf00, vf29 57
|
|
vu.vf14.add(Mask::y, vu.vf00, vu.vf29.z());
|
|
sq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// sq.xyzw vf26, 296(vi05) | addw.y vf15, vf00, vf29 58
|
|
vu.vf15.add(Mask::y, vu.vf00, vu.vf29.w());
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// sq.xyzw vf27, 299(vi05) | addx.y vf08, vf00, vf30 59
|
|
vu.vf08.add(Mask::y, vu.vf00, vu.vf30.x());
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// sq.xyzw vf12, 302(vi05) | nop 60
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// sq.xyzw vf13, 305(vi05) | nop 61
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// sq.xyzw vf14, 308(vi05) | nop 62
|
|
sq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// sq.xyzw vf15, 311(vi05) | nop 63
|
|
sq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// sq.xyzw vf08, 314(vi05) | nop 64
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// iaddi vi03, vi03, 0x8 | nop 65
|
|
vu.vi03 = vu.vi03 + 8;
|
|
// iaddi vi04, vi04, 0x8 | nop 66
|
|
vu.vi04 = vu.vi04 + 8;
|
|
// iaddiu vi05, vi05, 0x1b | nop 67
|
|
vu.vi05 = vu.vi05 + 0x1b; /* 27 */
|
|
// BRANCH!
|
|
// ibgtz vi07, L6 | nop 68
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 69
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L6;
|
|
}
|
|
|
|
// ilw.z vi03, 10(vi02) | nop 70
|
|
ilw_buffer(Mask::z, vu.vi03, vu.vi02 + 10);
|
|
// ilw.w vi04, 10(vi02) | nop 71
|
|
ilw_buffer(Mask::w, vu.vi04, vu.vi02 + 10);
|
|
// lq.xyzw vf28, 32(vi03) | nop 72
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 32);
|
|
// lq.xyzw vf29, 33(vi03) | nop 73
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 33);
|
|
// lq.xyzw vf30, 32(vi04) | nop 74
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi04 + 32);
|
|
// lq.xyzw vf24, 290(vi05) | nop 75
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// lq.xyzw vf25, 293(vi05) | nop 76
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// lq.xyzw vf26, 296(vi05) | nop 77
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// lq.xyzw vf27, 299(vi05) | nop 78
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// lq.xyzw vf12, 302(vi05) | addx.y vf24, vf00, vf28 79
|
|
vu.vf24.add(Mask::y, vu.vf00, vu.vf28.x());
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// lq.xyzw vf13, 305(vi05) | addy.y vf25, vf00, vf28 80
|
|
vu.vf25.add(Mask::y, vu.vf00, vu.vf28.y());
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// lq.xyzw vf14, 308(vi05) | addz.y vf26, vf00, vf28 81
|
|
vu.vf26.add(Mask::y, vu.vf00, vu.vf28.z());
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// lq.xyzw vf15, 311(vi05) | addw.y vf27, vf00, vf28 82
|
|
vu.vf27.add(Mask::y, vu.vf00, vu.vf28.w());
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// lq.xyzw vf08, 314(vi05) | addx.y vf12, vf00, vf29 83
|
|
vu.vf12.add(Mask::y, vu.vf00, vu.vf29.x());
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// sq.xyzw vf24, 290(vi05) | addy.y vf13, vf00, vf29 84
|
|
vu.vf13.add(Mask::y, vu.vf00, vu.vf29.y());
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// sq.xyzw vf25, 293(vi05) | addz.y vf14, vf00, vf29 85
|
|
vu.vf14.add(Mask::y, vu.vf00, vu.vf29.z());
|
|
sq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// sq.xyzw vf26, 296(vi05) | addw.y vf15, vf00, vf29 86
|
|
vu.vf15.add(Mask::y, vu.vf00, vu.vf29.w());
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// sq.xyzw vf27, 299(vi05) | addx.y vf08, vf00, vf30 87
|
|
vu.vf08.add(Mask::y, vu.vf00, vu.vf30.x());
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// sq.xyzw vf12, 302(vi05) | nop 88
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// sq.xyzw vf13, 305(vi05) | nop 89
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// sq.xyzw vf14, 308(vi05) | nop 90
|
|
sq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// sq.xyzw vf15, 311(vi05) | nop 91
|
|
sq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// sq.xyzw vf08, 314(vi05) | nop 92
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// lq.xyzw vf07, 957(vi00) | nop 93
|
|
lq_buffer(Mask::xyzw, vu.vf07, 957);
|
|
// lq.xyzw vf12, 11(vi02) | nop 94
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi02 + 11);
|
|
// lq.xyzw vf13, 11(vi02) | nop 95
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi02 + 11);
|
|
// lq.xyzw vf22, 12(vi02) | nop 96
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi02 + 12);
|
|
// lq.xyzw vf23, 13(vi02) | nop 97
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi02 + 13);
|
|
// lq.xyzw vf16, 14(vi02) | nop 98
|
|
lq_buffer(Mask::xyzw, vu.vf16, vu.vi02 + 14);
|
|
// lq.xyzw vf17, 15(vi02) | nop 99
|
|
lq_buffer(Mask::xyzw, vu.vf17, vu.vi02 + 15);
|
|
// nop | sub.xyzw vf09, vf16, vf22 100
|
|
vu.vf09.sub(Mask::xyzw, vu.vf16, vu.vf22);
|
|
// nop | sub.xyzw vf11, vf17, vf23 101
|
|
vu.vf11.sub(Mask::xyzw, vu.vf17, vu.vf23);
|
|
// nop | muly.xyzw vf09, vf09, vf07 102
|
|
vu.vf09.mul(Mask::xyzw, vu.vf09, vu.vf07.y());
|
|
// nop | muly.xyzw vf11, vf11, vf07 103
|
|
vu.vf11.mul(Mask::xyzw, vu.vf11, vu.vf07.y());
|
|
// iaddi vi05, vi00, 0x0 | nop 104
|
|
vu.vi05 = 0;
|
|
// iaddi vi07, vi00, 0x8 | nop 105
|
|
vu.vi07 = 8;
|
|
L7:
|
|
// nop | sub.xyzw vf08, vf23, vf22 106
|
|
vu.vf08.sub(Mask::xyzw, vu.vf23, vu.vf22);
|
|
// nop | mulw.xyzw vf16, vf22, vf00 107
|
|
vu.vf16.mul(Mask::xyzw, vu.vf22, vu.vf00.w());
|
|
// iaddi vi06, vi00, 0x8 | mulw.x vf12, vf13, vf00 108
|
|
vu.vf12.mul(Mask::x, vu.vf13, vu.vf00.w());
|
|
vu.vi06 = 8;
|
|
// nop | muly.xyzw vf08, vf08, vf07 109
|
|
vu.vf08.mul(Mask::xyzw, vu.vf08, vu.vf07.y());
|
|
L8:
|
|
// sq.xyzw vf12, 288(vi05) | nop 110
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 288);
|
|
// sq.xyzw vf16, 289(vi05) | nop 111
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi05 + 289);
|
|
// iaddi vi05, vi05, 0x3 | addw.x vf12, vf12, vf07 112
|
|
vu.vf12.add(Mask::x, vu.vf12, vu.vf07.w());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// BRANCH!
|
|
// ibgtz vi06, L8 | add.xyzw vf16, vf16, vf08 113
|
|
vu.vf16.add(Mask::xyzw, vu.vf16, vu.vf08);
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 114
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L8;
|
|
}
|
|
|
|
// nop | add.xyzw vf22, vf22, vf09 115
|
|
vu.vf22.add(Mask::xyzw, vu.vf22, vu.vf09);
|
|
// nop | add.xyzw vf23, vf23, vf11 116
|
|
vu.vf23.add(Mask::xyzw, vu.vf23, vu.vf11);
|
|
// BRANCH!
|
|
// ibgtz vi07, L7 | addw.y vf12, vf12, vf07 117
|
|
vu.vf12.add(Mask::y, vu.vf12, vu.vf07.w());
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 118
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L7;
|
|
}
|
|
|
|
// lq.xyzw vf08, 0(vi02) | nop 119
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi02);
|
|
// lq.xyzw vf09, 1(vi02) | nop 120
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi02 + 1);
|
|
// lq.xyzw vf10, 2(vi02) | nop 121
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi02 + 2);
|
|
// lq.xyzw vf04, 8(vi02) | nop 122
|
|
lq_buffer(Mask::xyzw, vu.vf04, vu.vi02 + 8);
|
|
// iaddi vi07, vi00, 0x3 | nop 123
|
|
vu.vi07 = 3;
|
|
L9:
|
|
// mtir vi10, vf04.x | nop 124
|
|
vu.vi10 = vu.vf04.x_as_u16();
|
|
// iaddiu vi11, vi00, 0xff | nop 125
|
|
vu.vi11 = 0xff; /* 255 */
|
|
// mr32.xyzw vf04, vf04 | nop 126
|
|
vu.vf04.mr32(Mask::xyzw, vu.vf04);
|
|
// BRANCH!
|
|
// ibeq vi11, vi10, L11 | nop 127
|
|
bc = (vu.vi11 == vu.vi10);
|
|
// lq.xyzw vf11, 3(vi02) | nop 128
|
|
lq_buffer(Mask::xyzw, vu.vf11, vu.vi02 + 3);
|
|
if (bc) {
|
|
goto L11;
|
|
}
|
|
|
|
// lq.xyzw vf12, 4(vi02) | nop 129
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi02 + 4);
|
|
// lq.xyzw vf13, 5(vi02) | nop 130
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi02 + 5);
|
|
// lq.xyzw vf14, 6(vi02) | nop 131
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi02 + 6);
|
|
// lq.xyzw vf15, 7(vi02) | nop 132
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi02 + 7);
|
|
// ilw.x vi05, 983(vi07) | nop 133
|
|
ilw_buffer(Mask::x, vu.vi05, vu.vi07 + 983);
|
|
// BRANCH!
|
|
// bal vi15, L15 | nop 134
|
|
// ASSERT(false);
|
|
// iaddi vi08, vi09, 0x7 | nop 135
|
|
vu.vi08 = vu.vi09 + 7;
|
|
// if (bc) { goto L15; }
|
|
run_L15_vu2c();
|
|
|
|
// lq.xyzw vf07, 968(vi00) | nop 136
|
|
lq_buffer(Mask::xyzw, vu.vf07, 968);
|
|
// iaddiu vi08, vi00, 0x3d1 | nop 137
|
|
vu.vi08 = 0x3d1; /* 977 */
|
|
// sq.xyzw vf07, 6(vi09) | nop 138
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// xgkick vi09 | nop 139
|
|
xgkick(vu.vi09);
|
|
// lq.xyzw vf07, 980(vi00) | nop 140
|
|
lq_buffer(Mask::xyzw, vu.vf07, 980);
|
|
// xgkick vi08 | nop 141
|
|
xgkick(vu.vi08);
|
|
// sq.xyzw vf07, 6(vi09) | nop 142
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// iaddi vi08, vi09, 0x6 | nop 143
|
|
vu.vi08 = vu.vi09 + 6;
|
|
// nop | nop 144
|
|
|
|
// xgkick vi08 | nop 145
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi00, 0x3d5 | nop 146
|
|
vu.vi08 = 0x3d5; /* 981 */
|
|
// nop | nop 147
|
|
|
|
// xgkick vi08 | nop 148
|
|
xgkick(vu.vi08);
|
|
// BRANCH!
|
|
// bal vi15, L21 | nop 149
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 150
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L21; }
|
|
run_L21_vu2c();
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi14, L10 | nop 151
|
|
bc = (vu.vi14 == 0);
|
|
// nop | nop 152
|
|
|
|
if (bc) {
|
|
goto L10;
|
|
}
|
|
|
|
// BRANCH!
|
|
// bal vi15, L25 | nop 153
|
|
// ASSERT(false);
|
|
// nop | nop 154
|
|
|
|
// if (bc) { goto L25; }
|
|
run_L25_vu2c();
|
|
|
|
L10:
|
|
// BRANCH!
|
|
// bal vi15, L23 | nop 155
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 156
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L23; }
|
|
run_L23_vu2c();
|
|
|
|
// iaddiu vi08, vi09, 0x3d | nop 157
|
|
vu.vi08 = vu.vi09 + 0x3d; /* 61 */
|
|
// iaddiu vi01, vi00, 0x4b2 | nop 158
|
|
vu.vi01 = 0x4b2; /* 1202 */
|
|
// xgkick vi08 | nop 159
|
|
xgkick(vu.vi08);
|
|
// isub vi09, vi01, vi09 | nop 160
|
|
vu.vi09 = vu.vi01 - vu.vi09;
|
|
L11:
|
|
// BRANCH!
|
|
// ibgtz vi07, L9 | nop 161
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 162
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L9;
|
|
}
|
|
|
|
// lq.xyzw vf04, 9(vi02) | nop 163
|
|
lq_buffer(Mask::xyzw, vu.vf04, vu.vi02 + 9);
|
|
// iaddi vi07, vi00, 0x3 | nop 164
|
|
vu.vi07 = 3;
|
|
L12:
|
|
// mtir vi10, vf04.x | nop 165
|
|
vu.vi10 = vu.vf04.x_as_u16();
|
|
// iaddiu vi11, vi00, 0xff | nop 166
|
|
vu.vi11 = 0xff; /* 255 */
|
|
// mr32.xyzw vf04, vf04 | nop 167
|
|
vu.vf04.mr32(Mask::xyzw, vu.vf04);
|
|
// BRANCH!
|
|
// ibeq vi11, vi10, L14 | nop 168
|
|
bc = (vu.vi11 == vu.vi10);
|
|
// lq.xyzw vf11, 3(vi02) | nop 169
|
|
lq_buffer(Mask::xyzw, vu.vf11, vu.vi02 + 3);
|
|
if (bc) {
|
|
goto L14;
|
|
}
|
|
|
|
// lq.xyzw vf12, 4(vi02) | nop 170
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi02 + 4);
|
|
// lq.xyzw vf13, 5(vi02) | nop 171
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi02 + 5);
|
|
// lq.xyzw vf14, 6(vi02) | nop 172
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi02 + 6);
|
|
// lq.xyzw vf15, 7(vi02) | nop 173
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi02 + 7);
|
|
// ilw.y vi05, 983(vi07) | nop 174
|
|
ilw_buffer(Mask::y, vu.vi05, vu.vi07 + 983);
|
|
// BRANCH!
|
|
// bal vi15, L15 | nop 175
|
|
// ASSERT(false);
|
|
// iaddi vi08, vi09, 0x7 | nop 176
|
|
vu.vi08 = vu.vi09 + 7;
|
|
// if (bc) { goto L15; }
|
|
run_L15_vu2c();
|
|
|
|
// lq.xyzw vf07, 968(vi00) | nop 177
|
|
lq_buffer(Mask::xyzw, vu.vf07, 968);
|
|
// iaddiu vi08, vi00, 0x3d1 | nop 178
|
|
vu.vi08 = 0x3d1; /* 977 */
|
|
// sq.xyzw vf07, 6(vi09) | nop 179
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// xgkick vi09 | nop 180
|
|
xgkick(vu.vi09);
|
|
// lq.xyzw vf07, 980(vi00) | nop 181
|
|
lq_buffer(Mask::xyzw, vu.vf07, 980);
|
|
// xgkick vi08 | nop 182
|
|
xgkick(vu.vi08);
|
|
// sq.xyzw vf07, 6(vi09) | nop 183
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// iaddi vi08, vi09, 0x6 | nop 184
|
|
vu.vi08 = vu.vi09 + 6;
|
|
// nop | nop 185
|
|
|
|
// xgkick vi08 | nop 186
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi00, 0x3d5 | nop 187
|
|
vu.vi08 = 0x3d5; /* 981 */
|
|
// nop | nop 188
|
|
|
|
// xgkick vi08 | nop 189
|
|
xgkick(vu.vi08);
|
|
// BRANCH!
|
|
// bal vi15, L21 | nop 190
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 191
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L21; }
|
|
run_L21_vu2c();
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi14, L13 | nop 192
|
|
bc = (vu.vi14 == 0);
|
|
// nop | nop 193
|
|
|
|
if (bc) {
|
|
goto L13;
|
|
}
|
|
|
|
// BRANCH!
|
|
// bal vi15, L25 | nop 194
|
|
// ASSERT(false);
|
|
// nop | nop 195
|
|
|
|
// if (bc) { goto L25; }
|
|
run_L25_vu2c();
|
|
|
|
L13:
|
|
// BRANCH!
|
|
// bal vi15, L23 | nop 196
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 197
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L23; }
|
|
run_L23_vu2c();
|
|
|
|
// iaddiu vi08, vi09, 0x3d | nop 198
|
|
vu.vi08 = vu.vi09 + 0x3d; /* 61 */
|
|
// iaddiu vi01, vi00, 0x4b2 | nop 199
|
|
vu.vi01 = 0x4b2; /* 1202 */
|
|
// nop | nop 200
|
|
|
|
// xgkick vi08 | nop 201
|
|
xgkick(vu.vi08);
|
|
// isub vi09, vi01, vi09 | nop 202
|
|
vu.vi09 = vu.vi01 - vu.vi09;
|
|
L14:
|
|
// BRANCH!
|
|
// ibgtz vi07, L12 | nop 203
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 204
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L12;
|
|
}
|
|
|
|
// nop | nop :e 205
|
|
|
|
// nop | nop 206
|
|
}
|
|
|
|
void OceanNear::run_call0_vu2c_jak2() {
|
|
bool bc;
|
|
// lq.xyzw vf01, 951(vi00) | nop 0
|
|
lq_buffer(Mask::xyzw, vu.vf01, 951);
|
|
// lq.xyzw vf02, 953(vi00) | nop 1
|
|
lq_buffer(Mask::xyzw, vu.vf02, 953);
|
|
// lq.xyzw vf03, 954(vi00) | nop 2
|
|
lq_buffer(Mask::xyzw, vu.vf03, 954);
|
|
// lq.xyzw vf05, 955(vi00) | nop 3
|
|
lq_buffer(Mask::xyzw, vu.vf05, 955);
|
|
// lq.xyzw vf06, 956(vi00) | nop 4
|
|
lq_buffer(Mask::xyzw, vu.vf06, 956);
|
|
// iaddiu vi09, vi00, 0x213 | nop 5
|
|
vu.vi09 = 0x213; /* 531 */
|
|
// iaddi vi01, vi00, 0x6 | nop 6
|
|
vu.vi01 = 6;
|
|
L1:
|
|
// lq.xyzw vf12, 962(vi01) | nop 7
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 963);
|
|
// lq.xyzw vf13, 969(vi01) | nop 8
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 970);
|
|
// sq.xyzw vf12, 531(vi01) | nop 9
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 531);
|
|
// sq.xyzw vf12, 671(vi01) | nop 10
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 671);
|
|
// sq.xyzw vf13, 592(vi01) | nop 11
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 592);
|
|
// sq.xyzw vf13, 732(vi01) | nop 12
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 732);
|
|
// sq.xyzw vf12, 811(vi01) | nop 13
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 811);
|
|
// sq.xyzw vf12, 881(vi01) | nop 14
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi01 + 881);
|
|
// sq.xyzw vf13, 846(vi01) | nop 15
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 846);
|
|
// sq.xyzw vf13, 916(vi01) | nop 16
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi01 + 916);
|
|
// BRANCH!
|
|
// ibgtz vi01, L1 | nop 17
|
|
bc = ((s16)vu.vi01) > 0;
|
|
// iaddi vi01, vi01, -0x1 | nop 18
|
|
vu.vi01 = vu.vi01 + -1;
|
|
if (bc) {
|
|
goto L1;
|
|
}
|
|
|
|
// lq.xyzw vf08, 977(vi00) | nop 19
|
|
lq_buffer(Mask::xyzw, vu.vf08, 977);
|
|
// iaddi vi04, vi00, 0x8 | nop 20
|
|
vu.vi04 = 8;
|
|
// iaddiu vi06, vi00, 0x11 | ftoi0.xyzw vf08, vf08 21
|
|
vu.vf08.ftoi0(Mask::xyzw, vu.vf08);
|
|
vu.vi06 = 0x11; /* 17 */
|
|
L2:
|
|
// sq.xyzw vf08, 592(vi04) | nop 22
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi04 + 592);
|
|
// sq.xyzw vf08, 732(vi04) | nop 23
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi04 + 732);
|
|
// iaddi vi04, vi04, 0x3 | nop 24
|
|
vu.vi04 = vu.vi04 + 3;
|
|
// BRANCH!
|
|
// ibgtz vi06, L2 | nop 25
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 26
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L2;
|
|
}
|
|
|
|
// lq.xyzw vf07, 957(vi00) | nop 27
|
|
lq_buffer(Mask::xyzw, vu.vf07, 957);
|
|
// iaddi vi05, vi00, 0x0 | mul.xyzw vf16, vf00, vf00 28
|
|
vu.vf16.mul(Mask::xyzw, vu.vf00, vu.vf00);
|
|
vu.vi05 = 0;
|
|
// iaddi vi07, vi00, 0x8 | nop 29
|
|
vu.vi07 = 8;
|
|
L3:
|
|
// iaddi vi06, vi00, 0x8 | mul.x vf16, vf00, vf00 30
|
|
vu.vf16.mul(Mask::x, vu.vf00, vu.vf00);
|
|
vu.vi06 = 8;
|
|
L4:
|
|
// sq.xyzw vf16, 290(vi05) | nop 31
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi05 + 290);
|
|
// iaddi vi05, vi05, 0x3 | addx.x vf16, vf16, vf07 32
|
|
vu.vf16.add(Mask::x, vu.vf16, vu.vf07.x());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// BRANCH!
|
|
// ibgtz vi06, L4 | nop 33
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 34
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L4;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibgtz vi07, L3 | addx.z vf16, vf16, vf07 35
|
|
vu.vf16.add(Mask::z, vu.vf16, vu.vf07.x());
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 36
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L3;
|
|
}
|
|
|
|
// nop | nop :e 37
|
|
|
|
// nop | nop 38
|
|
}
|
|
|
|
void OceanNear::run_call39_vu2c_jak2() {
|
|
bool bc;
|
|
// xtop vi02 | nop 39
|
|
vu.vi02 = xtop();
|
|
// ilw.x vi03, 10(vi02) | nop 40
|
|
ilw_buffer(Mask::x, vu.vi03, vu.vi02 + 10);
|
|
// ilw.y vi04, 10(vi02) | nop 41
|
|
ilw_buffer(Mask::y, vu.vi04, vu.vi02 + 10);
|
|
// iaddi vi05, vi00, 0x0 | nop 42
|
|
vu.vi05 = 0;
|
|
// iaddi vi07, vi00, 0x7 | nop 43
|
|
vu.vi07 = 7;
|
|
L6:
|
|
// lq.xyzw vf28, 32(vi03) | nop 44
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 32);
|
|
// lq.xyzw vf29, 33(vi03) | nop 45
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 33);
|
|
// lq.xyzw vf30, 32(vi04) | nop 46
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi04 + 32);
|
|
// lq.xyzw vf24, 290(vi05) | nop 47
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// lq.xyzw vf25, 293(vi05) | nop 48
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// lq.xyzw vf26, 296(vi05) | nop 49
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// lq.xyzw vf27, 299(vi05) | nop 50
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// lq.xyzw vf12, 302(vi05) | addx.y vf24, vf00, vf28 51
|
|
vu.vf24.add(Mask::y, vu.vf00, vu.vf28.x());
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// lq.xyzw vf13, 305(vi05) | addy.y vf25, vf00, vf28 52
|
|
vu.vf25.add(Mask::y, vu.vf00, vu.vf28.y());
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// lq.xyzw vf14, 308(vi05) | addz.y vf26, vf00, vf28 53
|
|
vu.vf26.add(Mask::y, vu.vf00, vu.vf28.z());
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// lq.xyzw vf15, 311(vi05) | addw.y vf27, vf00, vf28 54
|
|
vu.vf27.add(Mask::y, vu.vf00, vu.vf28.w());
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// lq.xyzw vf08, 314(vi05) | addx.y vf12, vf00, vf29 55
|
|
vu.vf12.add(Mask::y, vu.vf00, vu.vf29.x());
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// sq.xyzw vf24, 290(vi05) | addy.y vf13, vf00, vf29 56
|
|
vu.vf13.add(Mask::y, vu.vf00, vu.vf29.y());
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// sq.xyzw vf25, 293(vi05) | addz.y vf14, vf00, vf29 57
|
|
vu.vf14.add(Mask::y, vu.vf00, vu.vf29.z());
|
|
sq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// sq.xyzw vf26, 296(vi05) | addw.y vf15, vf00, vf29 58
|
|
vu.vf15.add(Mask::y, vu.vf00, vu.vf29.w());
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// sq.xyzw vf27, 299(vi05) | addx.y vf08, vf00, vf30 59
|
|
vu.vf08.add(Mask::y, vu.vf00, vu.vf30.x());
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// sq.xyzw vf12, 302(vi05) | nop 60
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// sq.xyzw vf13, 305(vi05) | nop 61
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// sq.xyzw vf14, 308(vi05) | nop 62
|
|
sq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// sq.xyzw vf15, 311(vi05) | nop 63
|
|
sq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// sq.xyzw vf08, 314(vi05) | nop 64
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// iaddi vi03, vi03, 0x8 | nop 65
|
|
vu.vi03 = vu.vi03 + 8;
|
|
// iaddi vi04, vi04, 0x8 | nop 66
|
|
vu.vi04 = vu.vi04 + 8;
|
|
// iaddiu vi05, vi05, 0x1b | nop 67
|
|
vu.vi05 = vu.vi05 + 0x1b; /* 27 */
|
|
// BRANCH!
|
|
// ibgtz vi07, L6 | nop 68
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 69
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L6;
|
|
}
|
|
|
|
// ilw.z vi03, 10(vi02) | nop 70
|
|
ilw_buffer(Mask::z, vu.vi03, vu.vi02 + 10);
|
|
// ilw.w vi04, 10(vi02) | nop 71
|
|
ilw_buffer(Mask::w, vu.vi04, vu.vi02 + 10);
|
|
// lq.xyzw vf28, 32(vi03) | nop 72
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 32);
|
|
// lq.xyzw vf29, 33(vi03) | nop 73
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 33);
|
|
// lq.xyzw vf30, 32(vi04) | nop 74
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi04 + 32);
|
|
// lq.xyzw vf24, 290(vi05) | nop 75
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// lq.xyzw vf25, 293(vi05) | nop 76
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// lq.xyzw vf26, 296(vi05) | nop 77
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// lq.xyzw vf27, 299(vi05) | nop 78
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// lq.xyzw vf12, 302(vi05) | addx.y vf24, vf00, vf28 79
|
|
vu.vf24.add(Mask::y, vu.vf00, vu.vf28.x());
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// lq.xyzw vf13, 305(vi05) | addy.y vf25, vf00, vf28 80
|
|
vu.vf25.add(Mask::y, vu.vf00, vu.vf28.y());
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// lq.xyzw vf14, 308(vi05) | addz.y vf26, vf00, vf28 81
|
|
vu.vf26.add(Mask::y, vu.vf00, vu.vf28.z());
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// lq.xyzw vf15, 311(vi05) | addw.y vf27, vf00, vf28 82
|
|
vu.vf27.add(Mask::y, vu.vf00, vu.vf28.w());
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// lq.xyzw vf08, 314(vi05) | addx.y vf12, vf00, vf29 83
|
|
vu.vf12.add(Mask::y, vu.vf00, vu.vf29.x());
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// sq.xyzw vf24, 290(vi05) | addy.y vf13, vf00, vf29 84
|
|
vu.vf13.add(Mask::y, vu.vf00, vu.vf29.y());
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// sq.xyzw vf25, 293(vi05) | addz.y vf14, vf00, vf29 85
|
|
vu.vf14.add(Mask::y, vu.vf00, vu.vf29.z());
|
|
sq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 293);
|
|
// sq.xyzw vf26, 296(vi05) | addw.y vf15, vf00, vf29 86
|
|
vu.vf15.add(Mask::y, vu.vf00, vu.vf29.w());
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 296);
|
|
// sq.xyzw vf27, 299(vi05) | addx.y vf08, vf00, vf30 87
|
|
vu.vf08.add(Mask::y, vu.vf00, vu.vf30.x());
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 299);
|
|
// sq.xyzw vf12, 302(vi05) | nop 88
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 302);
|
|
// sq.xyzw vf13, 305(vi05) | nop 89
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi05 + 305);
|
|
// sq.xyzw vf14, 308(vi05) | nop 90
|
|
sq_buffer(Mask::xyzw, vu.vf14, vu.vi05 + 308);
|
|
// sq.xyzw vf15, 311(vi05) | nop 91
|
|
sq_buffer(Mask::xyzw, vu.vf15, vu.vi05 + 311);
|
|
// sq.xyzw vf08, 314(vi05) | nop 92
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi05 + 314);
|
|
// lq.xyzw vf07, 957(vi00) | nop 93
|
|
lq_buffer(Mask::xyzw, vu.vf07, 957);
|
|
// lq.xyzw vf12, 11(vi02) | nop 94
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi02 + 11);
|
|
// lq.xyzw vf13, 11(vi02) | nop 95
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi02 + 11);
|
|
// lq.xyzw vf22, 12(vi02) | nop 96
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi02 + 12);
|
|
// lq.xyzw vf23, 13(vi02) | nop 97
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi02 + 13);
|
|
// lq.xyzw vf16, 14(vi02) | nop 98
|
|
lq_buffer(Mask::xyzw, vu.vf16, vu.vi02 + 14);
|
|
// lq.xyzw vf17, 15(vi02) | nop 99
|
|
lq_buffer(Mask::xyzw, vu.vf17, vu.vi02 + 15);
|
|
// nop | sub.xyzw vf09, vf16, vf22 100
|
|
vu.vf09.sub(Mask::xyzw, vu.vf16, vu.vf22);
|
|
// nop | sub.xyzw vf11, vf17, vf23 101
|
|
vu.vf11.sub(Mask::xyzw, vu.vf17, vu.vf23);
|
|
// nop | muly.xyzw vf09, vf09, vf07 102
|
|
vu.vf09.mul(Mask::xyzw, vu.vf09, vu.vf07.y());
|
|
// nop | muly.xyzw vf11, vf11, vf07 103
|
|
vu.vf11.mul(Mask::xyzw, vu.vf11, vu.vf07.y());
|
|
// iaddi vi05, vi00, 0x0 | nop 104
|
|
vu.vi05 = 0;
|
|
// iaddi vi07, vi00, 0x8 | nop 105
|
|
vu.vi07 = 8;
|
|
L7:
|
|
// nop | sub.xyzw vf08, vf23, vf22 106
|
|
vu.vf08.sub(Mask::xyzw, vu.vf23, vu.vf22);
|
|
// nop | mulw.xyzw vf16, vf22, vf00 107
|
|
vu.vf16.mul(Mask::xyzw, vu.vf22, vu.vf00.w());
|
|
// iaddi vi06, vi00, 0x8 | mulw.x vf12, vf13, vf00 108
|
|
vu.vf12.mul(Mask::x, vu.vf13, vu.vf00.w());
|
|
vu.vi06 = 8;
|
|
// nop | muly.xyzw vf08, vf08, vf07 109
|
|
vu.vf08.mul(Mask::xyzw, vu.vf08, vu.vf07.y());
|
|
L8:
|
|
// sq.xyzw vf12, 288(vi05) | nop 110
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi05 + 288);
|
|
// sq.xyzw vf16, 289(vi05) | nop 111
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi05 + 289);
|
|
// iaddi vi05, vi05, 0x3 | addw.x vf12, vf12, vf07 112
|
|
vu.vf12.add(Mask::x, vu.vf12, vu.vf07.w());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// BRANCH!
|
|
// ibgtz vi06, L8 | add.xyzw vf16, vf16, vf08 113
|
|
vu.vf16.add(Mask::xyzw, vu.vf16, vu.vf08);
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 114
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L8;
|
|
}
|
|
|
|
// nop | add.xyzw vf22, vf22, vf09 115
|
|
vu.vf22.add(Mask::xyzw, vu.vf22, vu.vf09);
|
|
// nop | add.xyzw vf23, vf23, vf11 116
|
|
vu.vf23.add(Mask::xyzw, vu.vf23, vu.vf11);
|
|
// BRANCH!
|
|
// ibgtz vi07, L7 | addw.y vf12, vf12, vf07 117
|
|
vu.vf12.add(Mask::y, vu.vf12, vu.vf07.w());
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 118
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L7;
|
|
}
|
|
|
|
// lq.xyzw vf08, 0(vi02) | nop 119
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi02);
|
|
// lq.xyzw vf09, 1(vi02) | nop 120
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi02 + 1);
|
|
// lq.xyzw vf10, 2(vi02) | nop 121
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi02 + 2);
|
|
// lq.xyzw vf04, 8(vi02) | nop 122
|
|
lq_buffer(Mask::xyzw, vu.vf04, vu.vi02 + 8);
|
|
// iaddi vi07, vi00, 0x3 | nop 123
|
|
vu.vi07 = 3;
|
|
L9:
|
|
// mtir vi10, vf04.x | nop 124
|
|
vu.vi10 = vu.vf04.x_as_u16();
|
|
// iaddiu vi11, vi00, 0xff | nop 125
|
|
vu.vi11 = 0xff; /* 255 */
|
|
// mr32.xyzw vf04, vf04 | nop 126
|
|
vu.vf04.mr32(Mask::xyzw, vu.vf04);
|
|
// BRANCH!
|
|
// ibeq vi11, vi10, L11 | nop 127
|
|
bc = (vu.vi11 == vu.vi10);
|
|
// lq.xyzw vf11, 3(vi02) | nop 128
|
|
lq_buffer(Mask::xyzw, vu.vf11, vu.vi02 + 3);
|
|
if (bc) {
|
|
goto L11;
|
|
}
|
|
|
|
// lq.xyzw vf12, 4(vi02) | nop 129
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi02 + 4);
|
|
// lq.xyzw vf13, 5(vi02) | nop 130
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi02 + 5);
|
|
// lq.xyzw vf14, 6(vi02) | nop 131
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi02 + 6);
|
|
// lq.xyzw vf15, 7(vi02) | nop 132
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi02 + 7);
|
|
// ilw.x vi05, 984(vi07) | nop 133
|
|
ilw_buffer(Mask::x, vu.vi05, vu.vi07 + 984);
|
|
// BRANCH!
|
|
// bal vi15, L15 | nop 134
|
|
// ASSERT(false);
|
|
// iaddi vi08, vi09, 0x7 | nop 135
|
|
vu.vi08 = vu.vi09 + 7;
|
|
// if (bc) { goto L15; }
|
|
run_L15_vu2c_jak2();
|
|
|
|
// lq.xyzw vf07, 969(vi00) | nop 136
|
|
lq_buffer(Mask::xyzw, vu.vf07, 969);
|
|
// iaddiu vi08, vi00, 0x3d2 | nop 137
|
|
vu.vi08 = 0x3d2; /* 977 */
|
|
// sq.xyzw vf07, 6(vi09) | nop 138
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// xgkick vi09 | nop 139
|
|
xgkick(vu.vi09);
|
|
// lq.xyzw vf07, 981(vi00) | nop 140
|
|
lq_buffer(Mask::xyzw, vu.vf07, 981);
|
|
// xgkick vi08 | nop 141
|
|
xgkick(vu.vi08);
|
|
// sq.xyzw vf07, 6(vi09) | nop 142
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// iaddi vi08, vi09, 0x6 | nop 143
|
|
vu.vi08 = vu.vi09 + 6;
|
|
// nop | nop 144
|
|
|
|
// xgkick vi08 | nop 145
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi00, 0x3d6 | nop 146
|
|
vu.vi08 = 0x3d6; /* 981 */
|
|
// nop | nop 147
|
|
|
|
// xgkick vi08 | nop 148
|
|
xgkick(vu.vi08);
|
|
// BRANCH!
|
|
// bal vi15, L21 | nop 149
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 150
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L21; }
|
|
run_L21_vu2c_jak2();
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi14, L10 | nop 151
|
|
bc = (vu.vi14 == 0);
|
|
// nop | nop 152
|
|
|
|
if (bc) {
|
|
goto L10;
|
|
}
|
|
|
|
// BRANCH!
|
|
// bal vi15, L25 | nop 153
|
|
// ASSERT(false);
|
|
// nop | nop 154
|
|
|
|
// if (bc) { goto L25; }
|
|
run_L25_vu2c_jak2();
|
|
|
|
L10:
|
|
// BRANCH!
|
|
// bal vi15, L23 | nop 155
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 156
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L23; }
|
|
run_L23_vu2c();
|
|
|
|
// iaddiu vi08, vi09, 0x3d | nop 157
|
|
vu.vi08 = vu.vi09 + 0x3d; /* 61 */
|
|
// iaddiu vi01, vi00, 0x4b2 | nop 158
|
|
vu.vi01 = 0x4b2; /* 1202 */
|
|
// xgkick vi08 | nop 159
|
|
xgkick(vu.vi08);
|
|
// isub vi09, vi01, vi09 | nop 160
|
|
vu.vi09 = vu.vi01 - vu.vi09;
|
|
L11:
|
|
// BRANCH!
|
|
// ibgtz vi07, L9 | nop 161
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 162
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L9;
|
|
}
|
|
|
|
// lq.xyzw vf04, 9(vi02) | nop 163
|
|
lq_buffer(Mask::xyzw, vu.vf04, vu.vi02 + 9);
|
|
// iaddi vi07, vi00, 0x3 | nop 164
|
|
vu.vi07 = 3;
|
|
L12:
|
|
// mtir vi10, vf04.x | nop 165
|
|
vu.vi10 = vu.vf04.x_as_u16();
|
|
// iaddiu vi11, vi00, 0xff | nop 166
|
|
vu.vi11 = 0xff; /* 255 */
|
|
// mr32.xyzw vf04, vf04 | nop 167
|
|
vu.vf04.mr32(Mask::xyzw, vu.vf04);
|
|
// BRANCH!
|
|
// ibeq vi11, vi10, L14 | nop 168
|
|
bc = (vu.vi11 == vu.vi10);
|
|
// lq.xyzw vf11, 3(vi02) | nop 169
|
|
lq_buffer(Mask::xyzw, vu.vf11, vu.vi02 + 3);
|
|
if (bc) {
|
|
goto L14;
|
|
}
|
|
|
|
// lq.xyzw vf12, 4(vi02) | nop 170
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi02 + 4);
|
|
// lq.xyzw vf13, 5(vi02) | nop 171
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi02 + 5);
|
|
// lq.xyzw vf14, 6(vi02) | nop 172
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi02 + 6);
|
|
// lq.xyzw vf15, 7(vi02) | nop 173
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi02 + 7);
|
|
// ilw.y vi05, 984(vi07) | nop 174
|
|
ilw_buffer(Mask::y, vu.vi05, vu.vi07 + 984);
|
|
// BRANCH!
|
|
// bal vi15, L15 | nop 175
|
|
// ASSERT(false);
|
|
// iaddi vi08, vi09, 0x7 | nop 176
|
|
vu.vi08 = vu.vi09 + 7;
|
|
// if (bc) { goto L15; }
|
|
run_L15_vu2c_jak2();
|
|
|
|
// lq.xyzw vf07, 969(vi00) | nop 177
|
|
lq_buffer(Mask::xyzw, vu.vf07, 969);
|
|
// iaddiu vi08, vi00, 0x3d1 | nop 178
|
|
vu.vi08 = 0x3d2; /* 977 */
|
|
// sq.xyzw vf07, 6(vi09) | nop 179
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// xgkick vi09 | nop 180
|
|
xgkick(vu.vi09);
|
|
// lq.xyzw vf07, 981(vi00) | nop 181
|
|
lq_buffer(Mask::xyzw, vu.vf07, 981);
|
|
// xgkick vi08 | nop 182
|
|
xgkick(vu.vi08);
|
|
// sq.xyzw vf07, 6(vi09) | nop 183
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi09 + 6);
|
|
// iaddi vi08, vi09, 0x6 | nop 184
|
|
vu.vi08 = vu.vi09 + 6;
|
|
// nop | nop 185
|
|
|
|
// xgkick vi08 | nop 186
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi00, 0x3d6 | nop 187
|
|
vu.vi08 = 0x3d6; /* 981 */
|
|
// nop | nop 188
|
|
|
|
// xgkick vi08 | nop 189
|
|
xgkick(vu.vi08);
|
|
// BRANCH!
|
|
// bal vi15, L21 | nop 190
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 191
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L21; }
|
|
run_L21_vu2c_jak2();
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi14, L13 | nop 192
|
|
bc = (vu.vi14 == 0);
|
|
// nop | nop 193
|
|
|
|
if (bc) {
|
|
goto L13;
|
|
}
|
|
|
|
// BRANCH!
|
|
// bal vi15, L25 | nop 194
|
|
// ASSERT(false);
|
|
// nop | nop 195
|
|
|
|
// if (bc) { goto L25; }
|
|
run_L25_vu2c_jak2();
|
|
|
|
L13:
|
|
// BRANCH!
|
|
// bal vi15, L23 | nop 196
|
|
// ASSERT(false);
|
|
// iaddiu vi08, vi09, 0x44 | nop 197
|
|
vu.vi08 = vu.vi09 + 0x44; /* 68 */
|
|
// if (bc) { goto L23; }
|
|
run_L23_vu2c();
|
|
|
|
// iaddiu vi08, vi09, 0x3d | nop 198
|
|
vu.vi08 = vu.vi09 + 0x3d; /* 61 */
|
|
// iaddiu vi01, vi00, 0x4b2 | nop 199
|
|
vu.vi01 = 0x4b2; /* 1202 */
|
|
// nop | nop 200
|
|
|
|
// xgkick vi08 | nop 201
|
|
xgkick(vu.vi08);
|
|
// isub vi09, vi01, vi09 | nop 202
|
|
vu.vi09 = vu.vi01 - vu.vi09;
|
|
L14:
|
|
// BRANCH!
|
|
// ibgtz vi07, L12 | nop 203
|
|
bc = ((s16)vu.vi07) > 0;
|
|
// iaddi vi07, vi07, -0x1 | nop 204
|
|
vu.vi07 = vu.vi07 + -1;
|
|
if (bc) {
|
|
goto L12;
|
|
}
|
|
|
|
// nop | nop :e 205
|
|
|
|
// nop | nop 206
|
|
}
|
|
|
|
static inline REALLY_INLINE float eleng(const Vf& in) {
|
|
float len = in.x() * in.x() + in.y() * in.y() + in.z() * in.z();
|
|
return std::sqrt(len);
|
|
}
|
|
|
|
namespace {
|
|
u32 clip(const Vf& vector, float val, u32 old_clip) {
|
|
u32 result = (old_clip << 6);
|
|
float plus = std::abs(val);
|
|
float minus = -plus;
|
|
|
|
if (vector.x() > plus) {
|
|
result |= 0b1;
|
|
}
|
|
if (vector.x() < minus) {
|
|
result |= 0b10;
|
|
}
|
|
|
|
if (vector.y() > plus) {
|
|
result |= 0b100;
|
|
}
|
|
if (vector.y() < minus) {
|
|
result |= 0b1000;
|
|
}
|
|
|
|
if (vector.z() > plus) {
|
|
result |= 0b10000;
|
|
}
|
|
if (vector.z() < minus) {
|
|
result |= 0b100000;
|
|
}
|
|
return result & 0xffffff; // only 24 bits
|
|
}
|
|
|
|
void fcand(u16& dest, u32 imm, u32 cf) {
|
|
// dest = (cf & imm) ? 1 : 0;
|
|
if ((cf & 0xFFFFFF) & (imm & 0xFFFFFF))
|
|
dest = 1;
|
|
else
|
|
dest = 0;
|
|
// dest = cf & imm; // wrong
|
|
}
|
|
|
|
void fcor(u16& dest, u32 imm, u32 cf) {
|
|
// dest = ((0xffffff & (cf | imm)) == 0xffffff) ? 1 : 0;
|
|
u32 hold = (cf & 0xFFFFFF) | (imm & 0xFFFFFF);
|
|
if (hold == 0xFFFFFF)
|
|
dest = 1;
|
|
else
|
|
dest = 0;
|
|
|
|
// dest = cf | imm;
|
|
}
|
|
} // namespace
|
|
|
|
void OceanNear::run_L15_vu2c() {
|
|
u32 cf;
|
|
bool bc;
|
|
// iaddi vi01, vi05, 0x9 | nop 207
|
|
vu.vi01 = vu.vi05 + 9;
|
|
// lq.xyzw vf24, 290(vi05) | nop 208
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// lq.xyzw vf25, 317(vi05) | nop 209
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 317);
|
|
// lq.xyzw vf07, 958(vi00) | mulax.xyzw ACC, vf08, vf24 210
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf24.x());
|
|
lq_buffer(Mask::xyzw, vu.vf07, 958);
|
|
// iaddi vi05, vi05, 0x3 | madday.xyzw ACC, vf09, vf24 211
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf24.y());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// isw.x vi01, 987(vi00) | nop 212
|
|
isw_buffer(Mask::x, vu.vi01, 987);
|
|
// iaddi vi01, vi00, 0x0 | maddaz.xyzw ACC, vf10, vf24 213
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf24.z());
|
|
vu.vi01 = 0;
|
|
// iaddi vi13, vi00, 0x0 | maddw.xyzw vf26, vf11, vf00 214
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf11, vu.vf00.w());
|
|
vu.vi13 = 0;
|
|
// iaddi vi11, vi00, 0x0 | mulax.xyzw ACC, vf08, vf25 215
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf25.x());
|
|
vu.vi11 = 0;
|
|
// fcset 0x0 | madday.xyzw ACC, vf09, vf25 216
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf25.y());
|
|
cf = 0x0;
|
|
|
|
// lq.xyzw vf28, 287(vi05) | maddaz.xyzw ACC, vf10, vf25 217
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf25.z());
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi05 + 287);
|
|
// eleng.xyz P, vf26 | maddw.xyzw vf27, vf11, vf00 218
|
|
vu.acc.madd(Mask::xyzw, vu.vf27, vu.vf11, vu.vf00.w());
|
|
vu.P = eleng(vu.vf26);
|
|
// iaddi vi14, vi00, 0x0 | mulw.xyzw vf20, vf26, vf00 219
|
|
vu.vf20.mul(Mask::xyzw, vu.vf26, vu.vf00.w());
|
|
vu.vi14 = 0;
|
|
// lq.xyzw vf22, 286(vi05) | nop 220
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi05 + 286);
|
|
// waitp | nop 221
|
|
// ASSERT(false);
|
|
// mfp.w vf20, P | nop 222
|
|
vu.vf20.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf27 | mulw.xyzw vf21, vf27, vf00 223
|
|
vu.vf21.mul(Mask::xyzw, vu.vf27, vu.vf00.w());
|
|
vu.P = eleng(vu.vf27);
|
|
// nop | nop 224
|
|
|
|
// nop | nop 225
|
|
|
|
// iaddi vi12, vi00, 0x1 | mulw.w vf22, vf20, vf05 226
|
|
vu.vf22.mul(Mask::w, vu.vf20, vu.vf05.w());
|
|
vu.vi12 = 1;
|
|
// nop | nop 227
|
|
|
|
// nop | nop 228
|
|
|
|
// nop | nop 229
|
|
|
|
// nop | miniw.w vf22, vf22, vf00 230
|
|
vu.vf22.mini(Mask::w, vu.vf22, vu.vf00.w());
|
|
// nop | nop 231
|
|
|
|
// nop | nop 232
|
|
|
|
// nop | nop 233
|
|
|
|
// nop | subw.w vf28, vf00, vf22 234
|
|
vu.vf28.sub(Mask::w, vu.vf00, vu.vf22.w());
|
|
// nop | maxx.w vf22, vf22, vf05 235
|
|
vu.vf22.max(Mask::w, vu.vf22, vu.vf05.x());
|
|
// nop | nop 236
|
|
|
|
// nop | mulaz.w ACC, vf00, vf07 237
|
|
vu.acc.mula(Mask::w, vu.vf00, vu.vf07.z());
|
|
// nop | mulw.y vf28, vf28, vf28 238
|
|
vu.vf28.mul(Mask::y, vu.vf28, vu.vf28.w());
|
|
// lq.xyzw vf24, 290(vi05) | msubx.w vf07, vf22, vf07 239
|
|
vu.acc.msub(Mask::w, vu.vf07, vu.vf22, vu.vf07.x());
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// nop | mulax.xyzw ACC, vf12, vf28 240
|
|
vu.acc.mula(Mask::xyzw, vu.vf12, vu.vf28.x());
|
|
// nop | madday.xyzw ACC, vf13, vf28 241
|
|
vu.acc.madda(Mask::xyzw, vu.vf13, vu.vf28.y());
|
|
// nop | maddaz.xyzw ACC, vf14, vf28 242
|
|
vu.acc.madda(Mask::xyzw, vu.vf14, vu.vf28.z());
|
|
// nop | maddw.xyzw vf30, vf15, vf00 243
|
|
vu.acc.madd(Mask::xyzw, vu.vf30, vu.vf15, vu.vf00.w());
|
|
// nop | mulax.xyzw ACC, vf08, vf24 244
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf24.x());
|
|
// nop | madday.xyzw ACC, vf09, vf24 245
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf24.y());
|
|
// nop | maddaz.xyzw ACC, vf10, vf24 246
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf24.z());
|
|
// nop | maddw.xyzw vf26, vf11, vf00 247
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf11, vu.vf00.w());
|
|
// div Q, vf03.x, vf30.w | mul.xyzw vf18, vf30, vf01 248
|
|
vu.vf18.mul(Mask::xyzw, vu.vf30, vu.vf01);
|
|
vu.Q = vu.vf03.x() / vu.vf30.w();
|
|
// lq.xyzw vf23, 313(vi05) | mulw.w vf22, vf22, vf06 249
|
|
vu.vf22.mul(Mask::w, vu.vf22, vu.vf06.w());
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi05 + 313);
|
|
// waitp | mulw.xyz vf22, vf22, vf07 250
|
|
vu.vf22.mul(Mask::xyz, vu.vf22, vu.vf07.w());
|
|
// mfp.w vf21, P | nop 251
|
|
vu.vf21.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf26 | nop 252
|
|
vu.P = eleng(vu.vf26);
|
|
// nop | clipw.xyz vf18, vf18 253
|
|
cf = clip(vu.vf18, vu.vf18.w(), cf);
|
|
// nop | mulaw.w ACC, vf30, vf00 254
|
|
vu.acc.mula(Mask::w, vu.vf30, vu.vf00.w());
|
|
// lq.xyzw vf29, 314(vi05) | mulw.w vf23, vf21, vf05 255
|
|
vu.vf23.mul(Mask::w, vu.vf21, vu.vf05.w());
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi05 + 314);
|
|
// nop | mula.xyz ACC, vf30, Q 256
|
|
vu.acc.mula(Mask::xyz, vu.vf30, vu.Q);
|
|
// nop | maddw.xyzw vf16, vf02, vf00 257
|
|
vu.acc.madd(Mask::xyzw, vu.vf16, vu.vf02, vu.vf00.w());
|
|
// nop | miniy.xyzw vf22, vf22, vf07 258
|
|
vu.vf22.mini(Mask::xyzw, vu.vf22, vu.vf07.y());
|
|
// nop | miniw.w vf23, vf23, vf00 259
|
|
vu.vf23.mini(Mask::w, vu.vf23, vu.vf00.w());
|
|
// nop | nop 260
|
|
|
|
// nop | miniz.w vf16, vf16, vf03 261
|
|
vu.vf16.mini(Mask::w, vu.vf16, vu.vf03.z());
|
|
// nop | ftoi0.xyzw vf22, vf22 262
|
|
vu.vf22.ftoi0(Mask::xyzw, vu.vf22);
|
|
// waitp | subw.w vf29, vf00, vf23 263
|
|
vu.vf29.sub(Mask::w, vu.vf00, vu.vf23.w());
|
|
// BRANCH!
|
|
// b L18 | maxx.w vf23, vf23, vf05 264
|
|
vu.vf23.max(Mask::w, vu.vf23, vu.vf05.x());
|
|
bc = true;
|
|
// iaddi vi06, vi00, 0x8 | maxy.w vf16, vf16, vf03 265
|
|
vu.vf16.max(Mask::w, vu.vf16, vu.vf03.y());
|
|
vu.vi06 = 8;
|
|
if (bc) {
|
|
goto L18;
|
|
}
|
|
|
|
L16:
|
|
// BRANCH!
|
|
// ibeq vi00, vi01, L17 | nop 266
|
|
bc = (vu.vi01 == 0);
|
|
// lq.xyzw vf26, 309(vi05) | nop 267
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 309);
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi13, L17 | addw.w vf17, vf17, vf03 268
|
|
vu.vf17.add(Mask::w, vu.vf17, vu.vf03.w());
|
|
bc = (vu.vi13 != 0);
|
|
// fcor vi01, 0xfdf7df | nop 269
|
|
fcor(vu.vi01, 0xfdf7df, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isw.x vi12, 988(vi14) | nop 270
|
|
isw_buffer(Mask::x, vu.vi12, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 271
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xff7df7 | nop 272
|
|
fcor(vu.vi01, 0xff7df7, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isw.y vi05, 988(vi14) | nop 273
|
|
isw_buffer(Mask::y, vu.vi05, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 274
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffbefb | nop 275
|
|
fcor(vu.vi01, 0xffbefb, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// ilw.x vi11, 987(vi00) | nop 276
|
|
ilw_buffer(Mask::x, vu.vi11, 987);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 277
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffdf7d | nop 278
|
|
fcor(vu.vi01, 0xffdf7d, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isw.z vi08, 988(vi14) | nop 279
|
|
isw_buffer(Mask::z, vu.vi08, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 280
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffefbe | nop 281
|
|
fcor(vu.vi01, 0xffefbe, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isub vi11, vi05, vi11 | nop 282
|
|
vu.vi11 = vu.vi05 - vu.vi11;
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 283
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 284
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibltz vi11, L17 | nop 285
|
|
bc = ((s16)vu.vi11) < 0;
|
|
// nop | nop 286
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// iaddi vi14, vi14, 0x1 | nop 287
|
|
vu.vi14 = vu.vi14 + 1;
|
|
L17:
|
|
// nop | mulw.y vf28, vf28, vf28 288
|
|
vu.vf28.mul(Mask::y, vu.vf28, vu.vf28.w());
|
|
// nop | mulaz.w ACC, vf00, vf07 289
|
|
vu.acc.mula(Mask::w, vu.vf00, vu.vf07.z());
|
|
// nop | msubx.w vf07, vf22, vf07 290
|
|
vu.acc.msub(Mask::w, vu.vf07, vu.vf22, vu.vf07.x());
|
|
// nop | ftoi4.xyzw vf17, vf17 291
|
|
vu.vf17.ftoi4(Mask::xyzw, vu.vf17);
|
|
// lq.xyzw vf24, 290(vi05) | mul.xyzw vf26, vf26, Q 292
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// sq.xyzw vf21, 64(vi08) | mulax.xyzw ACC, vf12, vf28 293
|
|
vu.acc.mula(Mask::xyzw, vu.vf12, vu.vf28.x());
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 64);
|
|
// sq.xyzw vf23, 4(vi08) | madday.xyzw ACC, vf13, vf28 294
|
|
vu.acc.madda(Mask::xyzw, vu.vf13, vu.vf28.y());
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi08 + 4);
|
|
// sq.xyzw vf17, 5(vi08) | maddaz.xyzw ACC, vf14, vf28 295
|
|
vu.acc.madda(Mask::xyzw, vu.vf14, vu.vf28.z());
|
|
sq_buffer(Mask::xyzw, vu.vf17, vu.vi08 + 5);
|
|
// sq.xyzw vf19, 66(vi08) | maddw.xyzw vf30, vf15, vf00 296
|
|
vu.acc.madd(Mask::xyzw, vu.vf30, vu.vf15, vu.vf00.w());
|
|
sq_buffer(Mask::xyzw, vu.vf19, vu.vi08 + 66);
|
|
// sq.xyzw vf26, 3(vi08) | mulax.xyzw ACC, vf08, vf24 297
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf24.x());
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi08 + 3);
|
|
// nop | madday.xyzw ACC, vf09, vf24 298
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf24.y());
|
|
// nop | maddaz.xyzw ACC, vf10, vf24 299
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf24.z());
|
|
// nop | maddw.xyzw vf26, vf11, vf00 300
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf11, vu.vf00.w());
|
|
// div Q, vf03.x, vf30.w | mul.xyzw vf18, vf30, vf01 301
|
|
vu.vf18.mul(Mask::xyzw, vu.vf30, vu.vf01);
|
|
vu.Q = vu.vf03.x() / vu.vf30.w();
|
|
// lq.xyzw vf23, 313(vi05) | mulw.xyz vf21, vf27, vf00 302
|
|
vu.vf21.mul(Mask::xyz, vu.vf27, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi05 + 313);
|
|
// mfp.w vf21, P | mulw.w vf22, vf22, vf06 303
|
|
vu.vf22.mul(Mask::w, vu.vf22, vu.vf06.w());
|
|
vu.vf21.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf26 | mulw.xyz vf22, vf22, vf07 304
|
|
vu.vf22.mul(Mask::xyz, vu.vf22, vu.vf07.w());
|
|
vu.P = eleng(vu.vf26);
|
|
// iaddi vi08, vi08, 0x6 | clipw.xyz vf18, vf18 305
|
|
cf = clip(vu.vf18, vu.vf18.w(), cf);
|
|
vu.vi08 = vu.vi08 + 6;
|
|
// nop | mulaw.w ACC, vf30, vf00 306
|
|
vu.acc.mula(Mask::w, vu.vf30, vu.vf00.w());
|
|
// nop | mulw.w vf23, vf21, vf05 307
|
|
vu.vf23.mul(Mask::w, vu.vf21, vu.vf05.w());
|
|
// iand vi13, vi10, vi12 | mula.xyz ACC, vf30, Q 308
|
|
vu.acc.mula(Mask::xyz, vu.vf30, vu.Q);
|
|
vu.vi13 = vu.vi10 & vu.vi12;
|
|
// fcand vi01, 0x3ffff | maddw.xyzw vf16, vf02, vf00 309
|
|
vu.acc.madd(Mask::xyzw, vu.vf16, vu.vf02, vu.vf00.w());
|
|
fcand(vu.vi01, 0x3ffff, cf);
|
|
|
|
// iadd vi12, vi12, vi12 | miniy.xyzw vf22, vf22, vf07 310
|
|
vu.vf22.mini(Mask::xyzw, vu.vf22, vu.vf07.y());
|
|
vu.vi12 = vu.vi12 + vu.vi12;
|
|
// lq.xyzw vf29, 314(vi05) | miniw.w vf23, vf23, vf00 311
|
|
vu.vf23.mini(Mask::w, vu.vf23, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi05 + 314);
|
|
// nop | nop 312
|
|
|
|
// ior vi01, vi01, vi13 | miniz.w vf16, vf16, vf03 313
|
|
vu.vf16.mini(Mask::w, vu.vf16, vu.vf03.z());
|
|
vu.vi01 = vu.vi01 | vu.vi13;
|
|
// nop | ftoi0.xyzw vf22, vf22 314
|
|
vu.vf22.ftoi0(Mask::xyzw, vu.vf22);
|
|
// nop | subw.w vf29, vf00, vf23 315
|
|
vu.vf29.sub(Mask::w, vu.vf00, vu.vf23.w());
|
|
// nop | maxx.w vf23, vf23, vf05 316
|
|
vu.vf23.max(Mask::w, vu.vf23, vu.vf05.x());
|
|
// nop | maxy.w vf16, vf16, vf03 317
|
|
vu.vf16.max(Mask::w, vu.vf16, vu.vf03.y());
|
|
// nop | nop 318
|
|
|
|
L18:
|
|
// BRANCH!
|
|
// ibeq vi00, vi01, L19 | nop 319
|
|
bc = (vu.vi01 == 0);
|
|
// lq.xyzw vf27, 285(vi05) | nop 320
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 285);
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi13, L19 | addw.w vf16, vf16, vf03 321
|
|
vu.vf16.add(Mask::w, vu.vf16, vu.vf03.w());
|
|
bc = (vu.vi13 != 0);
|
|
// fcor vi01, 0xfdf7df | nop 322
|
|
fcor(vu.vi01, 0xfdf7df, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// isw.x vi00, 988(vi14) | nop 323
|
|
isw_buffer(Mask::x, 0, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 324
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xff7df7 | nop 325
|
|
fcor(vu.vi01, 0xff7df7, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// isw.y vi05, 988(vi14) | nop 326
|
|
isw_buffer(Mask::y, vu.vi05, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 327
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffbefb | nop 328
|
|
fcor(vu.vi01, 0xffbefb, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// isw.z vi08, 988(vi14) | nop 329
|
|
isw_buffer(Mask::z, vu.vi08, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 330
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffdf7d | nop 331
|
|
fcor(vu.vi01, 0xffdf7d, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// nop | nop 332
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 333
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffefbe | nop 334
|
|
fcor(vu.vi01, 0xffefbe, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// nop | nop 335
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 336
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 337
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// iaddi vi14, vi14, 0x1 | nop 338
|
|
vu.vi14 = vu.vi14 + 1;
|
|
L19:
|
|
// nop | mulw.y vf29, vf29, vf29 339
|
|
vu.vf29.mul(Mask::y, vu.vf29, vu.vf29.w());
|
|
// nop | mulaz.w ACC, vf00, vf07 340
|
|
vu.acc.mula(Mask::w, vu.vf00, vu.vf07.z());
|
|
// nop | msubx.w vf07, vf23, vf07 341
|
|
vu.acc.msub(Mask::w, vu.vf07, vu.vf23, vu.vf07.x());
|
|
// nop | ftoi4.xyzw vf16, vf16 342
|
|
vu.vf16.ftoi4(Mask::xyzw, vu.vf16);
|
|
// lq.xyzw vf25, 317(vi05) | mul.xyzw vf27, vf27, Q 343
|
|
vu.vf27.mul(Mask::xyzw, vu.vf27, vu.Q);
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 317);
|
|
// sq.xyzw vf20, 61(vi08) | mulax.xyzw ACC, vf12, vf29 344
|
|
vu.acc.mula(Mask::xyzw, vu.vf12, vu.vf29.x());
|
|
sq_buffer(Mask::xyzw, vu.vf20, vu.vi08 + 61);
|
|
// sq.xyzw vf22, 1(vi08) | madday.xyzw ACC, vf13, vf29 345
|
|
vu.acc.madda(Mask::xyzw, vu.vf13, vu.vf29.y());
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 1);
|
|
// sq.xyzw vf16, 2(vi08) | maddaz.xyzw ACC, vf14, vf29 346
|
|
vu.acc.madda(Mask::xyzw, vu.vf14, vu.vf29.z());
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi08 + 2);
|
|
// sq.xyzw vf18, 63(vi08) | maddw.xyzw vf31, vf15, vf00 347
|
|
vu.acc.madd(Mask::xyzw, vu.vf31, vu.vf15, vu.vf00.w());
|
|
sq_buffer(Mask::xyzw, vu.vf18, vu.vi08 + 63);
|
|
// sq.xyzw vf27, 0(vi08) | mulax.xyzw ACC, vf08, vf25 348
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf25.x());
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi08);
|
|
// nop | madday.xyzw ACC, vf09, vf25 349
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf25.y());
|
|
// iaddi vi05, vi05, 0x3 | maddaz.xyzw ACC, vf10, vf25 350
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf25.z());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// nop | maddw.xyzw vf27, vf11, vf00 351
|
|
vu.acc.madd(Mask::xyzw, vu.vf27, vu.vf11, vu.vf00.w());
|
|
// div Q, vf03.x, vf31.w | mul.xyzw vf19, vf31, vf01 352
|
|
vu.vf19.mul(Mask::xyzw, vu.vf31, vu.vf01);
|
|
vu.Q = vu.vf03.x() / vu.vf31.w();
|
|
// lq.xyzw vf22, 286(vi05) | mulw.xyz vf20, vf26, vf00 353
|
|
vu.vf20.mul(Mask::xyz, vu.vf26, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi05 + 286);
|
|
// mfp.w vf20, P | mulw.w vf23, vf23, vf06 354
|
|
vu.vf23.mul(Mask::w, vu.vf23, vu.vf06.w());
|
|
vu.vf20.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf27 | mulw.xyz vf23, vf23, vf07 355
|
|
vu.vf23.mul(Mask::xyz, vu.vf23, vu.vf07.w());
|
|
vu.P = eleng(vu.vf27);
|
|
// nop | clipw.xyz vf19, vf19 356
|
|
cf = clip(vu.vf19, vu.vf19.w(), cf);
|
|
// nop | mulaw.w ACC, vf31, vf00 357
|
|
vu.acc.mula(Mask::w, vu.vf31, vu.vf00.w());
|
|
// nop | mulw.w vf22, vf20, vf05 358
|
|
vu.vf22.mul(Mask::w, vu.vf20, vu.vf05.w());
|
|
// nop | mula.xyz ACC, vf31, Q 359
|
|
vu.acc.mula(Mask::xyz, vu.vf31, vu.Q);
|
|
// fcand vi01, 0x3ffff | maddw.xyzw vf17, vf02, vf00 360
|
|
vu.acc.madd(Mask::xyzw, vu.vf17, vu.vf02, vu.vf00.w());
|
|
fcand(vu.vi01, 0x3ffff, cf);
|
|
|
|
// nop | miniy.xyzw vf23, vf23, vf07 361
|
|
vu.vf23.mini(Mask::xyzw, vu.vf23, vu.vf07.y());
|
|
// lq.xyzw vf28, 287(vi05) | miniw.w vf22, vf22, vf00 362
|
|
vu.vf22.mini(Mask::w, vu.vf22, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi05 + 287);
|
|
// nop | nop 363
|
|
|
|
// ior vi01, vi01, vi13 | miniz.w vf17, vf17, vf03 364
|
|
vu.vf17.mini(Mask::w, vu.vf17, vu.vf03.z());
|
|
vu.vi01 = vu.vi01 | vu.vi13;
|
|
// nop | ftoi0.xyzw vf23, vf23 365
|
|
vu.vf23.ftoi0(Mask::xyzw, vu.vf23);
|
|
// nop | subw.w vf28, vf00, vf22 366
|
|
vu.vf28.sub(Mask::w, vu.vf00, vu.vf22.w());
|
|
// nop | maxx.w vf22, vf22, vf05 367
|
|
vu.vf22.max(Mask::w, vu.vf22, vu.vf05.x());
|
|
// BRANCH!
|
|
// ibgtz vi06, L16 | maxy.w vf17, vf17, vf03 368
|
|
vu.vf17.max(Mask::w, vu.vf17, vu.vf03.y());
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 369
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L16;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi01, L20 | nop 370
|
|
bc = (vu.vi01 == 0);
|
|
// lq.xyzw vf26, 309(vi05) | nop 371
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 309);
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi13, L20 | addw.w vf17, vf17, vf03 372
|
|
vu.vf17.add(Mask::w, vu.vf17, vu.vf03.w());
|
|
bc = (vu.vi13 != 0);
|
|
// fcor vi01, 0xfdf7df | nop 373
|
|
fcor(vu.vi01, 0xfdf7df, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// isw.x vi12, 988(vi14) | nop 374
|
|
isw_buffer(Mask::x, vu.vi12, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 375
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xff7df7 | nop 376
|
|
fcor(vu.vi01, 0xff7df7, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// isw.y vi05, 988(vi14) | nop 377
|
|
isw_buffer(Mask::y, vu.vi05, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 378
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffbefb | nop 379
|
|
fcor(vu.vi01, 0xffbefb, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// isw.z vi08, 988(vi14) | nop 380
|
|
isw_buffer(Mask::z, vu.vi08, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 381
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffdf7d | nop 382
|
|
fcor(vu.vi01, 0xffdf7d, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// nop | nop 383
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 384
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffefbe | nop 385
|
|
fcor(vu.vi01, 0xffefbe, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// nop | nop 386
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 387
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 388
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// iaddi vi14, vi14, 0x1 | nop 389
|
|
vu.vi14 = vu.vi14 + 1;
|
|
L20:
|
|
// isw.y vi14, 987(vi00) | ftoi4.xyzw vf17, vf17 390
|
|
vu.vf17.ftoi4(Mask::xyzw, vu.vf17);
|
|
isw_buffer(Mask::y, vu.vi14, 987);
|
|
// sq.xyzw vf21, 64(vi08) | mul.xyzw vf26, vf26, Q 391
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 64);
|
|
// sq.xyzw vf23, 4(vi08) | nop 392
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi08 + 4);
|
|
// sq.xyzw vf17, 5(vi08) | nop 393
|
|
sq_buffer(Mask::xyzw, vu.vf17, vu.vi08 + 5);
|
|
// sq.xyzw vf19, 66(vi08) | nop 394
|
|
sq_buffer(Mask::xyzw, vu.vf19, vu.vi08 + 66);
|
|
// sq.xyzw vf26, 3(vi08) | nop 395
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi08 + 3);
|
|
// jr vi15 | nop 396
|
|
// nop | nop 397
|
|
}
|
|
|
|
void OceanNear::run_L15_vu2c_jak2() {
|
|
u32 cf;
|
|
bool bc;
|
|
// iaddi vi01, vi05, 0x9 | nop 207
|
|
vu.vi01 = vu.vi05 + 9;
|
|
// lq.xyzw vf24, 290(vi05) | nop 208
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// lq.xyzw vf25, 317(vi05) | nop 209
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 317);
|
|
// lq.xyzw vf05, 959(vi00) | mulax.xyzw ACC, vf08, vf24 210
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf24.x());
|
|
lq_buffer(Mask::xyzw, vu.vf05, 959);
|
|
// iaddi vi05, vi05, 0x3 | madday.xyzw ACC, vf09, vf24 211
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf24.y());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// isw.x vi01, 988(vi00) | nop 212
|
|
isw_buffer(Mask::x, vu.vi01, 988);
|
|
// iaddi vi01, vi00, 0x0 | maddaz.xyzw ACC, vf10, vf24 213
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf24.z());
|
|
vu.vi01 = 0;
|
|
// iaddi vi13, vi00, 0x0 | maddw.xyzw vf26, vf11, vf00 214
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf11, vu.vf00.w());
|
|
vu.vi13 = 0;
|
|
// iaddi vi11, vi00, 0x0 | mulax.xyzw ACC, vf08, vf25 215
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf25.x());
|
|
vu.vi11 = 0;
|
|
// fcset 0x0 | madday.xyzw ACC, vf09, vf25 216
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf25.y());
|
|
cf = 0x0;
|
|
|
|
// lq.xyzw vf28, 287(vi05) | maddaz.xyzw ACC, vf10, vf25 217
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf25.z());
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi05 + 287);
|
|
// eleng.xyz P, vf26 | maddw.xyzw vf27, vf11, vf00 218
|
|
vu.acc.madd(Mask::xyzw, vu.vf27, vu.vf11, vu.vf00.w());
|
|
vu.P = eleng(vu.vf26);
|
|
// iaddi vi14, vi00, 0x0 | mulw.xyzw vf20, vf26, vf00 219
|
|
vu.vf20.mul(Mask::xyzw, vu.vf26, vu.vf00.w());
|
|
vu.vi14 = 0;
|
|
// lq.xyzw vf22, 286(vi05) | nop 220
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi05 + 286);
|
|
// waitp | nop 221
|
|
// ASSERT(false);
|
|
// mfp.w vf20, P | nop 222
|
|
vu.vf20.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf27 | mulw.xyzw vf21, vf27, vf00 223
|
|
vu.vf21.mul(Mask::xyzw, vu.vf27, vu.vf00.w());
|
|
vu.P = eleng(vu.vf27);
|
|
// lq.xyzw vf07, 958(vi00) | nop 224
|
|
lq_buffer(Mask::xyzw, vu.vf07, 958);
|
|
// nop | nop 225
|
|
|
|
// iaddi vi12, vi00, 0x1 | mulw.w vf22, vf20, vf05 226
|
|
vu.vf22.mul(Mask::w, vu.vf20, vu.vf05.w());
|
|
vu.vi12 = 1;
|
|
// nop | nop 227
|
|
|
|
// nop | nop 228
|
|
|
|
// nop | nop 229
|
|
|
|
// nop | miniw.w vf22, vf22, vf00 230
|
|
vu.vf22.mini(Mask::w, vu.vf22, vu.vf00.w());
|
|
// nop | nop 231
|
|
|
|
// nop | nop 232
|
|
|
|
// nop | nop 233
|
|
|
|
// nop | subw.w vf28, vf00, vf22 234
|
|
vu.vf28.sub(Mask::w, vu.vf00, vu.vf22.w());
|
|
// nop | maxx.w vf22, vf22, vf05 235
|
|
vu.vf22.max(Mask::w, vu.vf22, vu.vf05.x());
|
|
// nop | nop 236
|
|
|
|
// nop | mulaz.w ACC, vf00, vf07 237
|
|
vu.acc.mula(Mask::w, vu.vf00, vu.vf07.z());
|
|
// nop | mulw.y vf28, vf28, vf28 238
|
|
vu.vf28.mul(Mask::y, vu.vf28, vu.vf28.w());
|
|
// lq.xyzw vf24, 290(vi05) | msubx.w vf07, vf22, vf07 239
|
|
vu.acc.msub(Mask::w, vu.vf07, vu.vf22, vu.vf07.x());
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// nop | mulax.xyzw ACC, vf12, vf28 240
|
|
vu.acc.mula(Mask::xyzw, vu.vf12, vu.vf28.x());
|
|
// nop | madday.xyzw ACC, vf13, vf28 241
|
|
vu.acc.madda(Mask::xyzw, vu.vf13, vu.vf28.y());
|
|
// nop | maddaz.xyzw ACC, vf14, vf28 242
|
|
vu.acc.madda(Mask::xyzw, vu.vf14, vu.vf28.z());
|
|
// nop | maddw.xyzw vf30, vf15, vf00 243
|
|
vu.acc.madd(Mask::xyzw, vu.vf30, vu.vf15, vu.vf00.w());
|
|
// nop | mulax.xyzw ACC, vf08, vf24 244
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf24.x());
|
|
// nop | madday.xyzw ACC, vf09, vf24 245
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf24.y());
|
|
// nop | maddaz.xyzw ACC, vf10, vf24 246
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf24.z());
|
|
// nop | maddw.xyzw vf26, vf11, vf00 247
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf11, vu.vf00.w());
|
|
// div Q, vf03.x, vf30.w | mul.xyzw vf18, vf30, vf01 248
|
|
vu.vf18.mul(Mask::xyzw, vu.vf30, vu.vf01);
|
|
vu.Q = vu.vf03.x() / vu.vf30.w();
|
|
// lq.xyzw vf23, 313(vi05) | mulw.w vf22, vf22, vf06 249
|
|
vu.vf22.mul(Mask::w, vu.vf22, vu.vf06.w());
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi05 + 313);
|
|
// waitp | mulw.xyz vf22, vf22, vf07 250
|
|
vu.vf22.mul(Mask::xyz, vu.vf22, vu.vf07.w());
|
|
// mfp.w vf21, P | nop 251
|
|
vu.vf21.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf26 | nop 252
|
|
vu.P = eleng(vu.vf26);
|
|
// nop | clipw.xyz vf18, vf18 253
|
|
cf = clip(vu.vf18, vu.vf18.w(), cf);
|
|
// nop | mulaw.w ACC, vf30, vf00 254
|
|
vu.acc.mula(Mask::w, vu.vf30, vu.vf00.w());
|
|
// lq.xyzw vf29, 314(vi05) | mulw.w vf23, vf21, vf05 255
|
|
vu.vf23.mul(Mask::w, vu.vf21, vu.vf05.w());
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi05 + 314);
|
|
// nop | mula.xyz ACC, vf30, Q 256
|
|
vu.acc.mula(Mask::xyz, vu.vf30, vu.Q);
|
|
// nop | maddw.xyzw vf16, vf02, vf00 257
|
|
vu.acc.madd(Mask::xyzw, vu.vf16, vu.vf02, vu.vf00.w());
|
|
// nop | miniy.xyzw vf22, vf22, vf07 258
|
|
vu.vf22.mini(Mask::xyzw, vu.vf22, vu.vf07.y());
|
|
// nop | miniw.w vf23, vf23, vf00 259
|
|
vu.vf23.mini(Mask::w, vu.vf23, vu.vf00.w());
|
|
// nop | nop 260
|
|
|
|
// nop | miniz.w vf16, vf16, vf03 261
|
|
vu.vf16.mini(Mask::w, vu.vf16, vu.vf03.z());
|
|
// nop | ftoi0.xyzw vf22, vf22 262
|
|
vu.vf22.ftoi0(Mask::xyzw, vu.vf22);
|
|
// waitp | subw.w vf29, vf00, vf23 263
|
|
vu.vf29.sub(Mask::w, vu.vf00, vu.vf23.w());
|
|
// BRANCH!
|
|
// b L18 | maxx.w vf23, vf23, vf05 264
|
|
vu.vf23.max(Mask::w, vu.vf23, vu.vf05.x());
|
|
bc = true;
|
|
// iaddi vi06, vi00, 0x8 | maxy.w vf16, vf16, vf03 265
|
|
vu.vf16.max(Mask::w, vu.vf16, vu.vf03.y());
|
|
vu.vi06 = 8;
|
|
if (bc) {
|
|
goto L18;
|
|
}
|
|
|
|
L16:
|
|
// BRANCH!
|
|
// ibeq vi00, vi01, L17 | nop 266
|
|
bc = (vu.vi01 == 0);
|
|
// lq.xyzw vf26, 309(vi05) | nop 267
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 309);
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi13, L17 | addw.w vf17, vf17, vf03 268
|
|
vu.vf17.add(Mask::w, vu.vf17, vu.vf03.w());
|
|
bc = (vu.vi13 != 0);
|
|
// fcor vi01, 0xfdf7df | nop 269
|
|
fcor(vu.vi01, 0xfdf7df, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isw.x vi12, 989(vi14) | nop 270
|
|
isw_buffer(Mask::x, vu.vi12, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 271
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xff7df7 | nop 272
|
|
fcor(vu.vi01, 0xff7df7, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isw.y vi05, 989(vi14) | nop 273
|
|
isw_buffer(Mask::y, vu.vi05, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 274
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffbefb | nop 275
|
|
fcor(vu.vi01, 0xffbefb, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// ilw.x vi11, 988(vi00) | nop 276
|
|
ilw_buffer(Mask::x, vu.vi11, 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 277
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffdf7d | nop 278
|
|
fcor(vu.vi01, 0xffdf7d, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isw.z vi08, 989(vi14) | nop 279
|
|
isw_buffer(Mask::z, vu.vi08, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 280
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffefbe | nop 281
|
|
fcor(vu.vi01, 0xffefbe, cf);
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// isub vi11, vi05, vi11 | nop 282
|
|
vu.vi11 = vu.vi05 - vu.vi11;
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L17 | nop 283
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 284
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibltz vi11, L17 | nop 285
|
|
bc = ((s16)vu.vi11) < 0;
|
|
// nop | nop 286
|
|
|
|
if (bc) {
|
|
goto L17;
|
|
}
|
|
|
|
// iaddi vi14, vi14, 0x1 | nop 287
|
|
vu.vi14 = vu.vi14 + 1;
|
|
L17:
|
|
// nop | mulw.y vf28, vf28, vf28 288
|
|
vu.vf28.mul(Mask::y, vu.vf28, vu.vf28.w());
|
|
// nop | mulaz.w ACC, vf00, vf07 289
|
|
vu.acc.mula(Mask::w, vu.vf00, vu.vf07.z());
|
|
// nop | msubx.w vf07, vf22, vf07 290
|
|
vu.acc.msub(Mask::w, vu.vf07, vu.vf22, vu.vf07.x());
|
|
// nop | ftoi4.xyzw vf17, vf17 291
|
|
vu.vf17.ftoi4(Mask::xyzw, vu.vf17);
|
|
// lq.xyzw vf24, 290(vi05) | mul.xyzw vf26, vf26, Q 292
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi05 + 290);
|
|
// sq.xyzw vf21, 64(vi08) | mulax.xyzw ACC, vf12, vf28 293
|
|
vu.acc.mula(Mask::xyzw, vu.vf12, vu.vf28.x());
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 64);
|
|
// sq.xyzw vf23, 4(vi08) | madday.xyzw ACC, vf13, vf28 294
|
|
vu.acc.madda(Mask::xyzw, vu.vf13, vu.vf28.y());
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi08 + 4);
|
|
// sq.xyzw vf17, 5(vi08) | maddaz.xyzw ACC, vf14, vf28 295
|
|
vu.acc.madda(Mask::xyzw, vu.vf14, vu.vf28.z());
|
|
sq_buffer(Mask::xyzw, vu.vf17, vu.vi08 + 5);
|
|
// sq.xyzw vf19, 66(vi08) | maddw.xyzw vf30, vf15, vf00 296
|
|
vu.acc.madd(Mask::xyzw, vu.vf30, vu.vf15, vu.vf00.w());
|
|
sq_buffer(Mask::xyzw, vu.vf19, vu.vi08 + 66);
|
|
// sq.xyzw vf26, 3(vi08) | mulax.xyzw ACC, vf08, vf24 297
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf24.x());
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi08 + 3);
|
|
// nop | madday.xyzw ACC, vf09, vf24 298
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf24.y());
|
|
// nop | maddaz.xyzw ACC, vf10, vf24 299
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf24.z());
|
|
// nop | maddw.xyzw vf26, vf11, vf00 300
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf11, vu.vf00.w());
|
|
// div Q, vf03.x, vf30.w | mul.xyzw vf18, vf30, vf01 301
|
|
vu.vf18.mul(Mask::xyzw, vu.vf30, vu.vf01);
|
|
vu.Q = vu.vf03.x() / vu.vf30.w();
|
|
// lq.xyzw vf23, 313(vi05) | mulw.xyz vf21, vf27, vf00 302
|
|
vu.vf21.mul(Mask::xyz, vu.vf27, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi05 + 313);
|
|
// mfp.w vf21, P | mulw.w vf22, vf22, vf06 303
|
|
vu.vf22.mul(Mask::w, vu.vf22, vu.vf06.w());
|
|
vu.vf21.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf26 | mulw.xyz vf22, vf22, vf07 304
|
|
vu.vf22.mul(Mask::xyz, vu.vf22, vu.vf07.w());
|
|
vu.P = eleng(vu.vf26);
|
|
// iaddi vi08, vi08, 0x6 | clipw.xyz vf18, vf18 305
|
|
cf = clip(vu.vf18, vu.vf18.w(), cf);
|
|
vu.vi08 = vu.vi08 + 6;
|
|
// nop | mulaw.w ACC, vf30, vf00 306
|
|
vu.acc.mula(Mask::w, vu.vf30, vu.vf00.w());
|
|
// nop | mulw.w vf23, vf21, vf05 307
|
|
vu.vf23.mul(Mask::w, vu.vf21, vu.vf05.w());
|
|
// iand vi13, vi10, vi12 | mula.xyz ACC, vf30, Q 308
|
|
vu.acc.mula(Mask::xyz, vu.vf30, vu.Q);
|
|
vu.vi13 = vu.vi10 & vu.vi12;
|
|
// fcand vi01, 0x3ffff | maddw.xyzw vf16, vf02, vf00 309
|
|
vu.acc.madd(Mask::xyzw, vu.vf16, vu.vf02, vu.vf00.w());
|
|
fcand(vu.vi01, 0x3ffff, cf);
|
|
|
|
// iadd vi12, vi12, vi12 | miniy.xyzw vf22, vf22, vf07 310
|
|
vu.vf22.mini(Mask::xyzw, vu.vf22, vu.vf07.y());
|
|
vu.vi12 = vu.vi12 + vu.vi12;
|
|
// lq.xyzw vf29, 314(vi05) | miniw.w vf23, vf23, vf00 311
|
|
vu.vf23.mini(Mask::w, vu.vf23, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi05 + 314);
|
|
// nop | nop 312
|
|
|
|
// ior vi01, vi01, vi13 | miniz.w vf16, vf16, vf03 313
|
|
vu.vf16.mini(Mask::w, vu.vf16, vu.vf03.z());
|
|
vu.vi01 = vu.vi01 | vu.vi13;
|
|
// nop | ftoi0.xyzw vf22, vf22 314
|
|
vu.vf22.ftoi0(Mask::xyzw, vu.vf22);
|
|
// nop | subw.w vf29, vf00, vf23 315
|
|
vu.vf29.sub(Mask::w, vu.vf00, vu.vf23.w());
|
|
// nop | maxx.w vf23, vf23, vf05 316
|
|
vu.vf23.max(Mask::w, vu.vf23, vu.vf05.x());
|
|
// nop | maxy.w vf16, vf16, vf03 317
|
|
vu.vf16.max(Mask::w, vu.vf16, vu.vf03.y());
|
|
// nop | nop 318
|
|
|
|
L18:
|
|
// BRANCH!
|
|
// ibeq vi00, vi01, L19 | nop 319
|
|
bc = (vu.vi01 == 0);
|
|
// lq.xyzw vf27, 285(vi05) | nop 320
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi05 + 285);
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi13, L19 | addw.w vf16, vf16, vf03 321
|
|
vu.vf16.add(Mask::w, vu.vf16, vu.vf03.w());
|
|
bc = (vu.vi13 != 0);
|
|
// fcor vi01, 0xfdf7df | nop 322
|
|
fcor(vu.vi01, 0xfdf7df, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// isw.x vi00, 989(vi14) | nop 323
|
|
isw_buffer(Mask::x, 0, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 324
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xff7df7 | nop 325
|
|
fcor(vu.vi01, 0xff7df7, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// isw.y vi05, 989(vi14) | nop 326
|
|
isw_buffer(Mask::y, vu.vi05, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 327
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffbefb | nop 328
|
|
fcor(vu.vi01, 0xffbefb, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// isw.z vi08, 989(vi14) | nop 329
|
|
isw_buffer(Mask::z, vu.vi08, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 330
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffdf7d | nop 331
|
|
fcor(vu.vi01, 0xffdf7d, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// nop | nop 332
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 333
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffefbe | nop 334
|
|
fcor(vu.vi01, 0xffefbe, cf);
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// nop | nop 335
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L19 | nop 336
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 337
|
|
|
|
if (bc) {
|
|
goto L19;
|
|
}
|
|
|
|
// iaddi vi14, vi14, 0x1 | nop 338
|
|
vu.vi14 = vu.vi14 + 1;
|
|
L19:
|
|
// nop | mulw.y vf29, vf29, vf29 339
|
|
vu.vf29.mul(Mask::y, vu.vf29, vu.vf29.w());
|
|
// nop | mulaz.w ACC, vf00, vf07 340
|
|
vu.acc.mula(Mask::w, vu.vf00, vu.vf07.z());
|
|
// nop | msubx.w vf07, vf23, vf07 341
|
|
vu.acc.msub(Mask::w, vu.vf07, vu.vf23, vu.vf07.x());
|
|
// nop | ftoi4.xyzw vf16, vf16 342
|
|
vu.vf16.ftoi4(Mask::xyzw, vu.vf16);
|
|
// lq.xyzw vf25, 317(vi05) | mul.xyzw vf27, vf27, Q 343
|
|
vu.vf27.mul(Mask::xyzw, vu.vf27, vu.Q);
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi05 + 317);
|
|
// sq.xyzw vf20, 61(vi08) | mulax.xyzw ACC, vf12, vf29 344
|
|
vu.acc.mula(Mask::xyzw, vu.vf12, vu.vf29.x());
|
|
sq_buffer(Mask::xyzw, vu.vf20, vu.vi08 + 61);
|
|
// sq.xyzw vf22, 1(vi08) | madday.xyzw ACC, vf13, vf29 345
|
|
vu.acc.madda(Mask::xyzw, vu.vf13, vu.vf29.y());
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 1);
|
|
// sq.xyzw vf16, 2(vi08) | maddaz.xyzw ACC, vf14, vf29 346
|
|
vu.acc.madda(Mask::xyzw, vu.vf14, vu.vf29.z());
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi08 + 2);
|
|
// sq.xyzw vf18, 63(vi08) | maddw.xyzw vf31, vf15, vf00 347
|
|
vu.acc.madd(Mask::xyzw, vu.vf31, vu.vf15, vu.vf00.w());
|
|
sq_buffer(Mask::xyzw, vu.vf18, vu.vi08 + 63);
|
|
// sq.xyzw vf27, 0(vi08) | mulax.xyzw ACC, vf08, vf25 348
|
|
vu.acc.mula(Mask::xyzw, vu.vf08, vu.vf25.x());
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi08);
|
|
// nop | madday.xyzw ACC, vf09, vf25 349
|
|
vu.acc.madda(Mask::xyzw, vu.vf09, vu.vf25.y());
|
|
// iaddi vi05, vi05, 0x3 | maddaz.xyzw ACC, vf10, vf25 350
|
|
vu.acc.madda(Mask::xyzw, vu.vf10, vu.vf25.z());
|
|
vu.vi05 = vu.vi05 + 3;
|
|
// nop | maddw.xyzw vf27, vf11, vf00 351
|
|
vu.acc.madd(Mask::xyzw, vu.vf27, vu.vf11, vu.vf00.w());
|
|
// div Q, vf03.x, vf31.w | mul.xyzw vf19, vf31, vf01 352
|
|
vu.vf19.mul(Mask::xyzw, vu.vf31, vu.vf01);
|
|
vu.Q = vu.vf03.x() / vu.vf31.w();
|
|
// lq.xyzw vf22, 286(vi05) | mulw.xyz vf20, vf26, vf00 353
|
|
vu.vf20.mul(Mask::xyz, vu.vf26, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi05 + 286);
|
|
// mfp.w vf20, P | mulw.w vf23, vf23, vf06 354
|
|
vu.vf23.mul(Mask::w, vu.vf23, vu.vf06.w());
|
|
vu.vf20.mfp(Mask::w, vu.P);
|
|
// eleng.xyz P, vf27 | mulw.xyz vf23, vf23, vf07 355
|
|
vu.vf23.mul(Mask::xyz, vu.vf23, vu.vf07.w());
|
|
vu.P = eleng(vu.vf27);
|
|
// nop | clipw.xyz vf19, vf19 356
|
|
cf = clip(vu.vf19, vu.vf19.w(), cf);
|
|
// nop | mulaw.w ACC, vf31, vf00 357
|
|
vu.acc.mula(Mask::w, vu.vf31, vu.vf00.w());
|
|
// nop | mulw.w vf22, vf20, vf05 358
|
|
vu.vf22.mul(Mask::w, vu.vf20, vu.vf05.w());
|
|
// nop | mula.xyz ACC, vf31, Q 359
|
|
vu.acc.mula(Mask::xyz, vu.vf31, vu.Q);
|
|
// fcand vi01, 0x3ffff | maddw.xyzw vf17, vf02, vf00 360
|
|
vu.acc.madd(Mask::xyzw, vu.vf17, vu.vf02, vu.vf00.w());
|
|
fcand(vu.vi01, 0x3ffff, cf);
|
|
|
|
// nop | miniy.xyzw vf23, vf23, vf07 361
|
|
vu.vf23.mini(Mask::xyzw, vu.vf23, vu.vf07.y());
|
|
// lq.xyzw vf28, 287(vi05) | miniw.w vf22, vf22, vf00 362
|
|
vu.vf22.mini(Mask::w, vu.vf22, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi05 + 287);
|
|
// nop | nop 363
|
|
|
|
// ior vi01, vi01, vi13 | miniz.w vf17, vf17, vf03 364
|
|
vu.vf17.mini(Mask::w, vu.vf17, vu.vf03.z());
|
|
vu.vi01 = vu.vi01 | vu.vi13;
|
|
// nop | ftoi0.xyzw vf23, vf23 365
|
|
vu.vf23.ftoi0(Mask::xyzw, vu.vf23);
|
|
// nop | subw.w vf28, vf00, vf22 366
|
|
vu.vf28.sub(Mask::w, vu.vf00, vu.vf22.w());
|
|
// nop | maxx.w vf22, vf22, vf05 367
|
|
vu.vf22.max(Mask::w, vu.vf22, vu.vf05.x());
|
|
// BRANCH!
|
|
// ibgtz vi06, L16 | maxy.w vf17, vf17, vf03 368
|
|
vu.vf17.max(Mask::w, vu.vf17, vu.vf03.y());
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 369
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L16;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi01, L20 | nop 370
|
|
bc = (vu.vi01 == 0);
|
|
// lq.xyzw vf26, 309(vi05) | nop 371
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi05 + 309);
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi13, L20 | addw.w vf17, vf17, vf03 372
|
|
vu.vf17.add(Mask::w, vu.vf17, vu.vf03.w());
|
|
bc = (vu.vi13 != 0);
|
|
// fcor vi01, 0xfdf7df | nop 373
|
|
fcor(vu.vi01, 0xfdf7df, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// isw.x vi12, 989(vi14) | nop 374
|
|
isw_buffer(Mask::x, vu.vi12, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 375
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xff7df7 | nop 376
|
|
fcor(vu.vi01, 0xff7df7, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// isw.y vi05, 989(vi14) | nop 377
|
|
isw_buffer(Mask::y, vu.vi05, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 378
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffbefb | nop 379
|
|
fcor(vu.vi01, 0xffbefb, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// isw.z vi08, 989(vi14) | nop 380
|
|
isw_buffer(Mask::z, vu.vi08, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 381
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffdf7d | nop 382
|
|
fcor(vu.vi01, 0xffdf7d, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// nop | nop 383
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 384
|
|
bc = (vu.vi01 != 0);
|
|
// fcor vi01, 0xffefbe | nop 385
|
|
fcor(vu.vi01, 0xffefbe, cf);
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// nop | nop 386
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L20 | nop 387
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 388
|
|
|
|
if (bc) {
|
|
goto L20;
|
|
}
|
|
|
|
// iaddi vi14, vi14, 0x1 | nop 389
|
|
vu.vi14 = vu.vi14 + 1;
|
|
L20:
|
|
// isw.y vi14, 988(vi00) | ftoi4.xyzw vf17, vf17 390
|
|
vu.vf17.ftoi4(Mask::xyzw, vu.vf17);
|
|
isw_buffer(Mask::y, vu.vi14, 988);
|
|
// sq.xyzw vf21, 64(vi08) | mul.xyzw vf26, vf26, Q 391
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 64);
|
|
// sq.xyzw vf23, 4(vi08) | nop 392
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi08 + 4);
|
|
// sq.xyzw vf17, 5(vi08) | nop 393
|
|
sq_buffer(Mask::xyzw, vu.vf17, vu.vi08 + 5);
|
|
// sq.xyzw vf19, 66(vi08) | nop 394
|
|
sq_buffer(Mask::xyzw, vu.vf19, vu.vi08 + 66);
|
|
// sq.xyzw vf26, 3(vi08) | nop 395
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi08 + 3);
|
|
// jr vi15 | nop 396
|
|
// nop | nop 397
|
|
}
|
|
|
|
void OceanNear::run_L21_vu2c() {
|
|
bool bc;
|
|
// iaddi vi06, vi00, 0x5 | nop 398
|
|
vu.vi06 = 5;
|
|
L22:
|
|
// lq.xyzw vf20, 0(vi08) | nop 399
|
|
lq_buffer(Mask::xyzw, vu.vf20, vu.vi08);
|
|
// lq.xyzw vf21, 3(vi08) | nop 400
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 3);
|
|
// lq.xyzw vf18, 6(vi08) | nop 401
|
|
lq_buffer(Mask::xyzw, vu.vf18, vu.vi08 + 6);
|
|
// lq.xyzw vf19, 9(vi08) | maxw.xyzw vf11, vf00, vf00 402
|
|
vu.vf11.max(Mask::xyzw, vu.vf00, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf19, vu.vi08 + 9);
|
|
// div Q, vf00.w, vf20.w | nop 403
|
|
vu.Q = vu.vf00.w() / vu.vf20.w();
|
|
// nop | addz.y vf20, vf00, vf20 404
|
|
vu.vf20.add(Mask::y, vu.vf00, vu.vf20.z());
|
|
// nop | addz.y vf21, vf00, vf21 405
|
|
vu.vf21.add(Mask::y, vu.vf00, vu.vf21.z());
|
|
// nop | addz.y vf18, vf00, vf18 406
|
|
vu.vf18.add(Mask::y, vu.vf00, vu.vf18.z());
|
|
// nop | addz.y vf19, vf00, vf19 407
|
|
vu.vf19.add(Mask::y, vu.vf00, vu.vf19.z());
|
|
// nop | nop 408
|
|
|
|
// nop | nop 409
|
|
|
|
// div Q, vf00.w, vf21.w | mul.xy vf20, vf20, Q 410
|
|
vu.vf20.mul(Mask::xy, vu.vf20, vu.Q);
|
|
vu.Q = vu.vf00.w() / vu.vf21.w();
|
|
// nop | nop 411
|
|
|
|
// nop | nop 412
|
|
|
|
// nop | nop 413
|
|
|
|
// nop | nop 414
|
|
|
|
// nop | nop 415
|
|
|
|
// nop | nop 416
|
|
|
|
// div Q, vf00.w, vf18.w | mul.xy vf21, vf21, Q 417
|
|
vu.vf21.mul(Mask::xy, vu.vf21, vu.Q);
|
|
vu.Q = vu.vf00.w() / vu.vf18.w();
|
|
// nop | mula.xyzw ACC, vf20, vf05 418
|
|
vu.acc.mula(Mask::xyzw, vu.vf20, vu.vf05);
|
|
// nop | maddw.xyzw vf20, vf06, vf00 419
|
|
vu.acc.madd(Mask::xyzw, vu.vf20, vu.vf06, vu.vf00.w());
|
|
// nop | nop 420
|
|
|
|
// nop | mula.xyzw ACC, vf21, vf05 421
|
|
vu.acc.mula(Mask::xyzw, vu.vf21, vu.vf05);
|
|
// nop | maddw.xyzw vf21, vf06, vf00 422
|
|
vu.acc.madd(Mask::xyzw, vu.vf21, vu.vf06, vu.vf00.w());
|
|
// nop | nop 423
|
|
|
|
// div Q, vf00.w, vf19.w | mul.xy vf18, vf18, Q 424
|
|
vu.vf18.mul(Mask::xy, vu.vf18, vu.Q);
|
|
vu.Q = vu.vf00.w() / vu.vf19.w();
|
|
// nop | nop 425
|
|
|
|
// nop | nop 426
|
|
|
|
// nop | nop 427
|
|
|
|
// nop | nop 428
|
|
|
|
// nop | nop 429
|
|
|
|
// nop | nop 430
|
|
|
|
// sq.xyz vf20, 0(vi08) | mul.xy vf19, vf19, Q 431
|
|
vu.vf19.mul(Mask::xy, vu.vf19, vu.Q);
|
|
sq_buffer(Mask::xyz, vu.vf20, vu.vi08);
|
|
// sq.xyz vf21, 3(vi08) | mula.xyzw ACC, vf18, vf05 432
|
|
vu.acc.mula(Mask::xyzw, vu.vf18, vu.vf05);
|
|
sq_buffer(Mask::xyz, vu.vf21, vu.vi08 + 3);
|
|
// nop | maddw.xyzw vf18, vf06, vf00 433
|
|
vu.acc.madd(Mask::xyzw, vu.vf18, vu.vf06, vu.vf00.w());
|
|
// nop | nop 434
|
|
|
|
// nop | mula.xyzw ACC, vf19, vf05 435
|
|
vu.acc.mula(Mask::xyzw, vu.vf19, vu.vf05);
|
|
// iaddi vi08, vi08, 0xc | maddw.xyzw vf19, vf06, vf00 436
|
|
vu.acc.madd(Mask::xyzw, vu.vf19, vu.vf06, vu.vf00.w());
|
|
vu.vi08 = vu.vi08 + 12;
|
|
// iaddi vi06, vi06, -0x1 | nop 437
|
|
vu.vi06 = vu.vi06 + -1;
|
|
// sq.xyz vf18, -6(vi08) | nop 438
|
|
sq_buffer(Mask::xyz, vu.vf18, vu.vi08 + -6);
|
|
// BRANCH!
|
|
// ibgtz vi06, L22 | nop 439
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// sq.xyz vf19, -3(vi08) | nop 440
|
|
sq_buffer(Mask::xyz, vu.vf19, vu.vi08 + -3);
|
|
if (bc) {
|
|
goto L22;
|
|
}
|
|
|
|
// jr vi15 | nop 441
|
|
// nop | nop 442
|
|
}
|
|
|
|
void OceanNear::run_L21_vu2c_jak2() {
|
|
bool bc;
|
|
// lq.xyzw vf05, 955(vi00) | nop 398
|
|
lq_buffer(Mask::xyzw, vu.vf05, 955);
|
|
// iaddi vi06, vi00, 0x5 | nop 398
|
|
vu.vi06 = 5;
|
|
L22:
|
|
// lq.xyzw vf20, 0(vi08) | nop 399
|
|
lq_buffer(Mask::xyzw, vu.vf20, vu.vi08);
|
|
// lq.xyzw vf21, 3(vi08) | nop 400
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 3);
|
|
// lq.xyzw vf18, 6(vi08) | nop 401
|
|
lq_buffer(Mask::xyzw, vu.vf18, vu.vi08 + 6);
|
|
// lq.xyzw vf19, 9(vi08) | maxw.xyzw vf11, vf00, vf00 402
|
|
vu.vf11.max(Mask::xyzw, vu.vf00, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf19, vu.vi08 + 9);
|
|
// div Q, vf00.w, vf20.w | nop 403
|
|
vu.Q = vu.vf00.w() / vu.vf20.w();
|
|
// nop | nop 404
|
|
|
|
// nop | nop 405
|
|
|
|
// nop | nop 406
|
|
|
|
// nop | nop 407
|
|
|
|
// nop | nop 408
|
|
|
|
// nop | nop 409
|
|
|
|
// div Q, vf00.w, vf21.w | mul.xy vf20, vf20, Q 410
|
|
vu.vf20.mul(Mask::xy, vu.vf20, vu.Q);
|
|
vu.Q = vu.vf00.w() / vu.vf21.w();
|
|
// nop | nop 411
|
|
|
|
// nop | nop 412
|
|
|
|
// nop | nop 413
|
|
|
|
// nop | nop 414
|
|
|
|
// nop | nop 415
|
|
|
|
// nop | nop 416
|
|
|
|
// div Q, vf00.w, vf18.w | mul.xy vf21, vf21, Q 417
|
|
vu.vf21.mul(Mask::xy, vu.vf21, vu.Q);
|
|
vu.Q = vu.vf00.w() / vu.vf18.w();
|
|
// nop | mula.xyzw ACC, vf20, vf05 418
|
|
vu.acc.mula(Mask::xyzw, vu.vf20, vu.vf05);
|
|
// nop | maddw.xyzw vf20, vf06, vf00 419
|
|
vu.acc.madd(Mask::xyzw, vu.vf20, vu.vf06, vu.vf00.w());
|
|
// nop | nop 420
|
|
|
|
// nop | mula.xyzw ACC, vf21, vf05 421
|
|
vu.acc.mula(Mask::xyzw, vu.vf21, vu.vf05);
|
|
// nop | maddw.xyzw vf21, vf06, vf00 422
|
|
vu.acc.madd(Mask::xyzw, vu.vf21, vu.vf06, vu.vf00.w());
|
|
// nop | nop 423
|
|
|
|
// div Q, vf00.w, vf19.w | mul.xy vf18, vf18, Q 424
|
|
vu.vf18.mul(Mask::xy, vu.vf18, vu.Q);
|
|
vu.Q = vu.vf00.w() / vu.vf19.w();
|
|
// nop | nop 425
|
|
|
|
// nop | nop 426
|
|
|
|
// nop | nop 427
|
|
|
|
// nop | nop 428
|
|
|
|
// nop | nop 429
|
|
|
|
// nop | nop 430
|
|
|
|
// sq.xyz vf20, 0(vi08) | mul.xy vf19, vf19, Q 431
|
|
vu.vf19.mul(Mask::xy, vu.vf19, vu.Q);
|
|
sq_buffer(Mask::xyz, vu.vf20, vu.vi08);
|
|
// sq.xyz vf21, 3(vi08) | mula.xyzw ACC, vf18, vf05 432
|
|
vu.acc.mula(Mask::xyzw, vu.vf18, vu.vf05);
|
|
sq_buffer(Mask::xyz, vu.vf21, vu.vi08 + 3);
|
|
// nop | maddw.xyzw vf18, vf06, vf00 433
|
|
vu.acc.madd(Mask::xyzw, vu.vf18, vu.vf06, vu.vf00.w());
|
|
// nop | nop 434
|
|
|
|
// nop | mula.xyzw ACC, vf19, vf05 435
|
|
vu.acc.mula(Mask::xyzw, vu.vf19, vu.vf05);
|
|
// iaddi vi08, vi08, 0xc | maddw.xyzw vf19, vf06, vf00 436
|
|
vu.acc.madd(Mask::xyzw, vu.vf19, vu.vf06, vu.vf00.w());
|
|
vu.vi08 = vu.vi08 + 12;
|
|
// iaddi vi06, vi06, -0x1 | nop 437
|
|
vu.vi06 = vu.vi06 + -1;
|
|
// sq.xyz vf18, -6(vi08) | nop 438
|
|
sq_buffer(Mask::xyz, vu.vf18, vu.vi08 + -6);
|
|
// BRANCH!
|
|
// ibgtz vi06, L22 | nop 439
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// sq.xyz vf19, -3(vi08) | nop 440
|
|
sq_buffer(Mask::xyz, vu.vf19, vu.vi08 + -3);
|
|
if (bc) {
|
|
goto L22;
|
|
}
|
|
|
|
// jr vi15 | nop 441
|
|
// nop | nop 442
|
|
}
|
|
|
|
void OceanNear::run_L23_vu2c() {
|
|
bool bc;
|
|
// iaddi vi06, vi00, 0x4 | nop 443
|
|
vu.vi06 = 4;
|
|
L24:
|
|
// lq.xyzw vf12, 0(vi08) | nop 444
|
|
lq_buffer(Mask::xyzw, vu.vf12, vu.vi08);
|
|
// lq.xyzw vf13, 3(vi08) | nop 445
|
|
lq_buffer(Mask::xyzw, vu.vf13, vu.vi08 + 3);
|
|
// lq.xyzw vf14, 6(vi08) | nop 446
|
|
lq_buffer(Mask::xyzw, vu.vf14, vu.vi08 + 6);
|
|
// lq.xyzw vf15, 9(vi08) | nop 447
|
|
lq_buffer(Mask::xyzw, vu.vf15, vu.vi08 + 9);
|
|
// lq.xyzw vf24, -59(vi08) | nop 448
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi08 + -59);
|
|
// lq.xyzw vf25, -56(vi08) | nop 449
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi08 + -56);
|
|
// lq.xyzw vf26, -53(vi08) | nop 450
|
|
lq_buffer(Mask::xyzw, vu.vf26, vu.vi08 + -53);
|
|
// lq.xyzw vf27, -50(vi08) | nop 451
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + -50);
|
|
// lq.xyzw vf28, -61(vi08) | nop 452
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + -61);
|
|
// lq.xyzw vf29, -58(vi08) | nop 453
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi08 + -58);
|
|
// lq.xyzw vf30, -55(vi08) | nop 454
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi08 + -55);
|
|
// lq.xyzw vf31, -52(vi08) | nop 455
|
|
lq_buffer(Mask::xyzw, vu.vf31, vu.vi08 + -52);
|
|
// iaddi vi08, vi08, 0xc | mulz.xyzw vf12, vf12, vf28 456
|
|
vu.vf12.mul(Mask::xyzw, vu.vf12, vu.vf28.z());
|
|
vu.vi08 = vu.vi08 + 12;
|
|
// sq.xyzw vf24, -10(vi08) | mulz.xyzw vf13, vf13, vf29 457
|
|
vu.vf13.mul(Mask::xyzw, vu.vf13, vu.vf29.z());
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi08 + -10);
|
|
// sq.xyzw vf25, -7(vi08) | mulz.xyzw vf14, vf14, vf30 458
|
|
vu.vf14.mul(Mask::xyzw, vu.vf14, vu.vf30.z());
|
|
sq_buffer(Mask::xyzw, vu.vf25, vu.vi08 + -7);
|
|
// sq.xyzw vf26, -4(vi08) | mulz.xyzw vf15, vf15, vf31 459
|
|
vu.vf15.mul(Mask::xyzw, vu.vf15, vu.vf31.z());
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi08 + -4);
|
|
// sq.xyzw vf27, -1(vi08) | nop 460
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + -1);
|
|
// sq.xyzw vf12, -12(vi08) | nop 461
|
|
sq_buffer(Mask::xyzw, vu.vf12, vu.vi08 + -12);
|
|
// sq.xyzw vf13, -9(vi08) | nop 462
|
|
sq_buffer(Mask::xyzw, vu.vf13, vu.vi08 + -9);
|
|
// sq.xyzw vf14, -6(vi08) | nop 463
|
|
sq_buffer(Mask::xyzw, vu.vf14, vu.vi08 + -6);
|
|
// sq.xyzw vf15, -3(vi08) | nop 464
|
|
sq_buffer(Mask::xyzw, vu.vf15, vu.vi08 + -3);
|
|
// BRANCH!
|
|
// ibgtz vi06, L24 | nop 465
|
|
bc = ((s16)vu.vi06) > 0;
|
|
// iaddi vi06, vi06, -0x1 | nop 466
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L24;
|
|
}
|
|
|
|
// jr vi15 | nop 467
|
|
// nop | nop 468
|
|
}
|
|
|
|
void OceanNear::run_L25_vu2c() {
|
|
bool bc;
|
|
// lq.xyzw vf31, 952(vi00) | nop 469
|
|
lq_buffer(Mask::xyzw, vu.vf31, 952);
|
|
// iaddiu vi10, vi00, 0x32b | nop 470
|
|
vu.vi10 = 0x32b; /* 811 */
|
|
L26:
|
|
// iaddi vi14, vi14, -0x1 | nop 471
|
|
vu.vi14 = vu.vi14 + -1;
|
|
// iaddi vi08, vi10, 0x7 | nop 472
|
|
vu.vi08 = vu.vi10 + 7;
|
|
// ilw.x vi12, 988(vi14) | nop 473
|
|
ilw_buffer(Mask::x, vu.vi12, vu.vi14 + 988);
|
|
// ilw.y vi05, 988(vi14) | nop 474
|
|
ilw_buffer(Mask::y, vu.vi05, vu.vi14 + 988);
|
|
// BRANCH!
|
|
// ibne vi00, vi12, L27 | nop 475
|
|
bc = (vu.vi12 != 0);
|
|
// ilw.z vi03, 988(vi14) | nop 476
|
|
ilw_buffer(Mask::z, vu.vi03, vu.vi14 + 988);
|
|
if (bc) {
|
|
goto L27;
|
|
}
|
|
|
|
// lq.xyzw vf20, 282(vi05) | nop 477
|
|
lq_buffer(Mask::xyzw, vu.vf20, vu.vi05 + 282);
|
|
// lq.xyzw vf21, 309(vi05) | nop 478
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi05 + 309);
|
|
// lq.xyzw vf18, 285(vi05) | nop 479
|
|
lq_buffer(Mask::xyzw, vu.vf18, vu.vi05 + 285);
|
|
// lq.xyzw vf22, -5(vi03) | nop 480
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + -5);
|
|
// lq.xyzw vf23, -2(vi03) | nop 481
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi03 + -2);
|
|
// lq.xyzw vf16, 1(vi03) | nop 482
|
|
lq_buffer(Mask::xyzw, vu.vf16, vu.vi03 + 1);
|
|
// lq.xyzw vf08, 55(vi03) | nop 483
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi03 + 55);
|
|
// lq.xyzw vf09, 58(vi03) | nop 484
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi03 + 58);
|
|
// lq.xyzw vf10, 61(vi03) | nop 485
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi03 + 61);
|
|
// lq.xyzw vf28, 57(vi03) | nop 486
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 57);
|
|
// lq.xyzw vf29, 60(vi03) | nop 487
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 60);
|
|
// BRANCH!
|
|
// b L28 | nop 488
|
|
bc = true;
|
|
// lq.xyzw vf30, 63(vi03) | nop 489
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi03 + 63);
|
|
if (bc) {
|
|
goto L28;
|
|
}
|
|
|
|
L27:
|
|
// lq.xyzw vf20, 306(vi05) | nop 490
|
|
lq_buffer(Mask::xyzw, vu.vf20, vu.vi05 + 306);
|
|
// lq.xyzw vf21, 282(vi05) | nop 491
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi05 + 282);
|
|
// lq.xyzw vf18, 309(vi05) | nop 492
|
|
lq_buffer(Mask::xyzw, vu.vf18, vu.vi05 + 309);
|
|
// lq.xyzw vf22, -2(vi03) | nop 493
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + -2);
|
|
// lq.xyzw vf23, 1(vi03) | nop 494
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi03 + 1);
|
|
// lq.xyzw vf16, 4(vi03) | nop 495
|
|
lq_buffer(Mask::xyzw, vu.vf16, vu.vi03 + 4);
|
|
// lq.xyzw vf08, 58(vi03) | nop 496
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi03 + 58);
|
|
// lq.xyzw vf09, 61(vi03) | nop 497
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi03 + 61);
|
|
// lq.xyzw vf10, 64(vi03) | nop 498
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi03 + 64);
|
|
// lq.xyzw vf28, 60(vi03) | nop 499
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 60);
|
|
// lq.xyzw vf29, 63(vi03) | nop 500
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 63);
|
|
// lq.xyzw vf30, 66(vi03) | nop 501
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi03 + 66);
|
|
L28:
|
|
// sq.xyzw vf20, 0(vi08) | itof0.xyzw vf22, vf22 502
|
|
vu.vf22.itof0(Mask::xyzw, vu.vf22);
|
|
sq_buffer(Mask::xyzw, vu.vf20, vu.vi08);
|
|
// sq.xyzw vf21, 3(vi08) | itof0.xyzw vf23, vf23 503
|
|
vu.vf23.itof0(Mask::xyzw, vu.vf23);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 3);
|
|
// sq.xyzw vf18, 6(vi08) | itof0.xyzw vf16, vf16 504
|
|
vu.vf16.itof0(Mask::xyzw, vu.vf16);
|
|
sq_buffer(Mask::xyzw, vu.vf18, vu.vi08 + 6);
|
|
// sq.xyzw vf20, 9(vi08) | nop 505
|
|
sq_buffer(Mask::xyzw, vu.vf20, vu.vi08 + 9);
|
|
// sq.xyzw vf22, 1(vi08) | nop 506
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 1);
|
|
// sq.xyzw vf23, 4(vi08) | nop 507
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi08 + 4);
|
|
// sq.xyzw vf16, 7(vi08) | nop 508
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi08 + 7);
|
|
// sq.xyzw vf22, 10(vi08) | nop 509
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 10);
|
|
// sq.xyzw vf28, 2(vi08) | nop 510
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 2);
|
|
// sq.xyzw vf29, 5(vi08) | nop 511
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi08 + 5);
|
|
// sq.xyzw vf30, 8(vi08) | nop 512
|
|
sq_buffer(Mask::xyzw, vu.vf30, vu.vi08 + 8);
|
|
// sq.xyzw vf28, 11(vi08) | nop 513
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 11);
|
|
// lq.xyzw vf22, 976(vi00) | nop 514
|
|
lq_buffer(Mask::xyzw, vu.vf22, 976);
|
|
// sq.xyzw vf08, 35(vi08) | nop 515
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi08 + 35);
|
|
// sq.xyzw vf09, 38(vi08) | nop 516
|
|
sq_buffer(Mask::xyzw, vu.vf09, vu.vi08 + 38);
|
|
// sq.xyzw vf10, 41(vi08) | nop 517
|
|
sq_buffer(Mask::xyzw, vu.vf10, vu.vi08 + 41);
|
|
// sq.xyzw vf08, 44(vi08) | nop 518
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi08 + 44);
|
|
// sq.xyzw vf22, 36(vi08) | nop 519
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 36);
|
|
// sq.xyzw vf22, 39(vi08) | nop 520
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 39);
|
|
// sq.xyzw vf22, 42(vi08) | nop 521
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 42);
|
|
// sq.xyzw vf22, 45(vi08) | nop 522
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 45);
|
|
// sq.xyzw vf28, 37(vi08) | nop 523
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 37);
|
|
// sq.xyzw vf29, 40(vi08) | nop 524
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi08 + 40);
|
|
// sq.xyzw vf30, 43(vi08) | nop 525
|
|
sq_buffer(Mask::xyzw, vu.vf30, vu.vi08 + 43);
|
|
// sq.xyzw vf28, 46(vi08) | nop 526
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 46);
|
|
// lq.xyzw vf07, 959(vi00) | maddw.xyzw vf26, vf06, vf00 527
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf06, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf07, 959);
|
|
// ior vi03, vi08, vi00 | nop 528
|
|
vu.vi03 = vu.vi08;
|
|
// BRANCH!
|
|
// bal vi13, L32 | nop 529
|
|
// ASSERT(false);
|
|
// iaddi vi05, vi00, 0x3 | nop 530
|
|
vu.vi05 = 3;
|
|
// if (bc) { goto L32; }
|
|
run_L32_vu2c();
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi05, L29 | nop 531
|
|
bc = (vu.vi05 == 0);
|
|
// iaddiu vi06, vi05, 0x4000 | nop 532
|
|
vu.vi06 = vu.vi05 + 0x4000; /* 16384 */
|
|
if (bc) {
|
|
goto L29;
|
|
}
|
|
|
|
// BRANCH!
|
|
// bal vi13, L30 | nop 533
|
|
// ASSERT(false);
|
|
// iaddiu vi06, vi06, 0x4000 | nop 534
|
|
vu.vi06 = vu.vi06 + 0x4000; /* 16384 */
|
|
// if (bc) { goto L30; }
|
|
run_L30_vu2c();
|
|
|
|
// iaddiu vi08, vi00, 0x3d1 | nop 535
|
|
vu.vi08 = 0x3d1; /* 977 */
|
|
// xgkick vi10 | nop 536
|
|
xgkick(vu.vi10);
|
|
// lq.xyzw vf07, 960(vi00) | nop 537
|
|
lq_buffer(Mask::xyzw, vu.vf07, 960);
|
|
// xgkick vi08 | nop 538
|
|
xgkick(vu.vi08);
|
|
// iaddi vi08, vi10, 0x6 | nop 539
|
|
vu.vi08 = vu.vi10 + 6;
|
|
// sq.xyzw vf07, 6(vi10) | nop 540
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi10 + 6);
|
|
// isw.x vi06, 6(vi10) | nop 541
|
|
isw_buffer(Mask::x, vu.vi06, vu.vi10 + 6);
|
|
// xgkick vi08 | nop 542
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi00, 0x3d5 | nop 543
|
|
vu.vi08 = 0x3d5; /* 981 */
|
|
// nop | nop 544
|
|
|
|
// xgkick vi08 | nop 545
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi10, 0x2a | nop 546
|
|
vu.vi08 = vu.vi10 + 0x2a; /* 42 */
|
|
// iaddiu vi03, vi10, 0x2a | nop 547
|
|
vu.vi03 = vu.vi10 + 0x2a; /* 42 */
|
|
// iaddi vi05, vi00, 0x3 | nop 548
|
|
vu.vi05 = 3;
|
|
// BRANCH!
|
|
// bal vi13, L32 | nop 549
|
|
// ASSERT(false);
|
|
// lq.xyzw vf07, 961(vi00) | nop 550
|
|
lq_buffer(Mask::xyzw, vu.vf07, 961);
|
|
// if (bc) { goto L32; }
|
|
run_L32_vu2c();
|
|
|
|
// iaddiu vi06, vi05, 0x4000 | nop 551
|
|
vu.vi06 = vu.vi05 + 0x4000; /* 16384 */
|
|
// BRANCH!
|
|
// bal vi13, L30 | nop 552
|
|
// ASSERT(false);
|
|
// iaddiu vi06, vi06, 0x4000 | nop 553
|
|
vu.vi06 = vu.vi06 + 0x4000; /* 16384 */
|
|
// if (bc) { goto L30; }
|
|
run_L30_vu2c();
|
|
|
|
// iaddiu vi08, vi10, 0x23 | nop 554
|
|
vu.vi08 = vu.vi10 + 0x23; /* 35 */
|
|
// iaddiu vi01, vi00, 0x69c | nop 555
|
|
vu.vi01 = 0x69c; /* 1692 */
|
|
// xgkick vi08 | nop 556
|
|
xgkick(vu.vi08);
|
|
// isub vi10, vi01, vi10 | nop 557
|
|
vu.vi10 = vu.vi01 - vu.vi10;
|
|
L29:
|
|
// BRANCH!
|
|
// ibgtz vi14, L26 | nop 558
|
|
bc = ((s16)vu.vi14) > 0;
|
|
// nop | nop 559
|
|
|
|
if (bc) {
|
|
goto L26;
|
|
}
|
|
|
|
// lq.xyzw vf08, 0(vi02) | nop 560
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi02);
|
|
// lq.xyzw vf09, 1(vi02) | nop 561
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi02 + 1);
|
|
// jr vi15 | nop 562
|
|
// ASSERT(false);
|
|
// lq.xyzw vf10, 2(vi02) | nop 563
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi02 + 2);
|
|
}
|
|
|
|
void OceanNear::run_L25_vu2c_jak2() {
|
|
bool bc;
|
|
// lq.xyzw vf31, 952(vi00) | nop 469
|
|
lq_buffer(Mask::xyzw, vu.vf31, 952);
|
|
// iaddiu vi10, vi00, 0x32b | nop 470
|
|
vu.vi10 = 0x32b; /* 811 */
|
|
L26:
|
|
// iaddi vi14, vi14, -0x1 | nop 471
|
|
vu.vi14 = vu.vi14 + -1;
|
|
// iaddi vi08, vi10, 0x7 | nop 472
|
|
vu.vi08 = vu.vi10 + 7;
|
|
// ilw.x vi12, 989(vi14) | nop 473
|
|
ilw_buffer(Mask::x, vu.vi12, vu.vi14 + 989);
|
|
// ilw.y vi05, 989(vi14) | nop 474
|
|
ilw_buffer(Mask::y, vu.vi05, vu.vi14 + 989);
|
|
// BRANCH!
|
|
// ibne vi00, vi12, L27 | nop 475
|
|
bc = (vu.vi12 != 0);
|
|
// ilw.z vi03, 989(vi14) | nop 476
|
|
ilw_buffer(Mask::z, vu.vi03, vu.vi14 + 989);
|
|
if (bc) {
|
|
goto L27;
|
|
}
|
|
|
|
// lq.xyzw vf20, 282(vi05) | nop 477
|
|
lq_buffer(Mask::xyzw, vu.vf20, vu.vi05 + 282);
|
|
// lq.xyzw vf21, 309(vi05) | nop 478
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi05 + 309);
|
|
// lq.xyzw vf18, 285(vi05) | nop 479
|
|
lq_buffer(Mask::xyzw, vu.vf18, vu.vi05 + 285);
|
|
// lq.xyzw vf22, -5(vi03) | nop 480
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + -5);
|
|
// lq.xyzw vf23, -2(vi03) | nop 481
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi03 + -2);
|
|
// lq.xyzw vf16, 1(vi03) | nop 482
|
|
lq_buffer(Mask::xyzw, vu.vf16, vu.vi03 + 1);
|
|
// lq.xyzw vf08, 55(vi03) | nop 483
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi03 + 55);
|
|
// lq.xyzw vf09, 58(vi03) | nop 484
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi03 + 58);
|
|
// lq.xyzw vf10, 61(vi03) | nop 485
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi03 + 61);
|
|
// lq.xyzw vf28, 57(vi03) | nop 486
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 57);
|
|
// lq.xyzw vf29, 60(vi03) | nop 487
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 60);
|
|
// BRANCH!
|
|
// b L28 | nop 488
|
|
bc = true;
|
|
// lq.xyzw vf30, 63(vi03) | nop 489
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi03 + 63);
|
|
if (bc) {
|
|
goto L28;
|
|
}
|
|
|
|
L27:
|
|
// lq.xyzw vf20, 306(vi05) | nop 490
|
|
lq_buffer(Mask::xyzw, vu.vf20, vu.vi05 + 306);
|
|
// lq.xyzw vf21, 282(vi05) | nop 491
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi05 + 282);
|
|
// lq.xyzw vf18, 309(vi05) | nop 492
|
|
lq_buffer(Mask::xyzw, vu.vf18, vu.vi05 + 309);
|
|
// lq.xyzw vf22, -2(vi03) | nop 493
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + -2);
|
|
// lq.xyzw vf23, 1(vi03) | nop 494
|
|
lq_buffer(Mask::xyzw, vu.vf23, vu.vi03 + 1);
|
|
// lq.xyzw vf16, 4(vi03) | nop 495
|
|
lq_buffer(Mask::xyzw, vu.vf16, vu.vi03 + 4);
|
|
// lq.xyzw vf08, 58(vi03) | nop 496
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi03 + 58);
|
|
// lq.xyzw vf09, 61(vi03) | nop 497
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi03 + 61);
|
|
// lq.xyzw vf10, 64(vi03) | nop 498
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi03 + 64);
|
|
// lq.xyzw vf28, 60(vi03) | nop 499
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 60);
|
|
// lq.xyzw vf29, 63(vi03) | nop 500
|
|
lq_buffer(Mask::xyzw, vu.vf29, vu.vi03 + 63);
|
|
// lq.xyzw vf30, 66(vi03) | nop 501
|
|
lq_buffer(Mask::xyzw, vu.vf30, vu.vi03 + 66);
|
|
L28:
|
|
// sq.xyzw vf20, 0(vi08) | itof0.xyzw vf22, vf22 502
|
|
vu.vf22.itof0(Mask::xyzw, vu.vf22);
|
|
sq_buffer(Mask::xyzw, vu.vf20, vu.vi08);
|
|
// sq.xyzw vf21, 3(vi08) | itof0.xyzw vf23, vf23 503
|
|
vu.vf23.itof0(Mask::xyzw, vu.vf23);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 3);
|
|
// sq.xyzw vf18, 6(vi08) | itof0.xyzw vf16, vf16 504
|
|
vu.vf16.itof0(Mask::xyzw, vu.vf16);
|
|
sq_buffer(Mask::xyzw, vu.vf18, vu.vi08 + 6);
|
|
// sq.xyzw vf20, 9(vi08) | nop 505
|
|
sq_buffer(Mask::xyzw, vu.vf20, vu.vi08 + 9);
|
|
// sq.xyzw vf22, 1(vi08) | nop 506
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 1);
|
|
// sq.xyzw vf23, 4(vi08) | nop 507
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi08 + 4);
|
|
// sq.xyzw vf16, 7(vi08) | nop 508
|
|
sq_buffer(Mask::xyzw, vu.vf16, vu.vi08 + 7);
|
|
// sq.xyzw vf22, 10(vi08) | nop 509
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 10);
|
|
// sq.xyzw vf28, 2(vi08) | nop 510
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 2);
|
|
// sq.xyzw vf29, 5(vi08) | nop 511
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi08 + 5);
|
|
// sq.xyzw vf30, 8(vi08) | nop 512
|
|
sq_buffer(Mask::xyzw, vu.vf30, vu.vi08 + 8);
|
|
// sq.xyzw vf28, 11(vi08) | nop 513
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 11);
|
|
// lq.xyzw vf22, 977(vi00) | nop 514
|
|
lq_buffer(Mask::xyzw, vu.vf22, 977);
|
|
// sq.xyzw vf08, 35(vi08) | nop 515
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi08 + 35);
|
|
// sq.xyzw vf09, 38(vi08) | nop 516
|
|
sq_buffer(Mask::xyzw, vu.vf09, vu.vi08 + 38);
|
|
// sq.xyzw vf10, 41(vi08) | nop 517
|
|
sq_buffer(Mask::xyzw, vu.vf10, vu.vi08 + 41);
|
|
// sq.xyzw vf08, 44(vi08) | nop 518
|
|
sq_buffer(Mask::xyzw, vu.vf08, vu.vi08 + 44);
|
|
// sq.xyzw vf22, 36(vi08) | nop 519
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 36);
|
|
// sq.xyzw vf22, 39(vi08) | nop 520
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 39);
|
|
// sq.xyzw vf22, 42(vi08) | nop 521
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 42);
|
|
// sq.xyzw vf22, 45(vi08) | nop 522
|
|
sq_buffer(Mask::xyzw, vu.vf22, vu.vi08 + 45);
|
|
// sq.xyzw vf28, 37(vi08) | nop 523
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 37);
|
|
// sq.xyzw vf29, 40(vi08) | nop 524
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi08 + 40);
|
|
// sq.xyzw vf30, 43(vi08) | nop 525
|
|
sq_buffer(Mask::xyzw, vu.vf30, vu.vi08 + 43);
|
|
// sq.xyzw vf28, 46(vi08) | nop 526
|
|
sq_buffer(Mask::xyzw, vu.vf28, vu.vi08 + 46);
|
|
// lq.xyzw vf07, 960(vi00) | maddw.xyzw vf26, vf06, vf00 527
|
|
vu.acc.madd(Mask::xyzw, vu.vf26, vu.vf06, vu.vf00.w());
|
|
lq_buffer(Mask::xyzw, vu.vf07, 960);
|
|
// ior vi03, vi08, vi00 | nop 528
|
|
vu.vi03 = vu.vi08;
|
|
// BRANCH!
|
|
// bal vi13, L32 | nop 529
|
|
// ASSERT(false);
|
|
// iaddi vi05, vi00, 0x3 | nop 530
|
|
vu.vi05 = 3;
|
|
// if (bc) { goto L32; }
|
|
run_L32_vu2c();
|
|
|
|
// BRANCH!
|
|
// ibeq vi00, vi05, L29 | nop 531
|
|
bc = (vu.vi05 == 0);
|
|
// iaddiu vi06, vi05, 0x4000 | nop 532
|
|
vu.vi06 = vu.vi05 + 0x4000; /* 16384 */
|
|
if (bc) {
|
|
goto L29;
|
|
}
|
|
|
|
// BRANCH!
|
|
// bal vi13, L30 | nop 533
|
|
// ASSERT(false);
|
|
// iaddiu vi06, vi06, 0x4000 | nop 534
|
|
vu.vi06 = vu.vi06 + 0x4000; /* 16384 */
|
|
// if (bc) { goto L30; }
|
|
run_L30_vu2c();
|
|
|
|
// iaddiu vi08, vi00, 0x3d2 | nop 535
|
|
vu.vi08 = 0x3d2; /* 977 */
|
|
// xgkick vi10 | nop 536
|
|
xgkick(vu.vi10);
|
|
// lq.xyzw vf07, 960(vi00) | nop 537
|
|
lq_buffer(Mask::xyzw, vu.vf07, 960);
|
|
// xgkick vi08 | nop 538
|
|
xgkick(vu.vi08);
|
|
// iaddi vi08, vi10, 0x6 | nop 539
|
|
vu.vi08 = vu.vi10 + 6;
|
|
// sq.xyzw vf07, 6(vi10) | nop 540
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi10 + 6);
|
|
// isw.x vi06, 6(vi10) | nop 541
|
|
isw_buffer(Mask::x, vu.vi06, vu.vi10 + 6);
|
|
// xgkick vi08 | nop 542
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi00, 0x3d6 | nop 543
|
|
vu.vi08 = 0x3d6; /* 981 */
|
|
// nop | nop 544
|
|
|
|
// xgkick vi08 | nop 545
|
|
xgkick(vu.vi08);
|
|
// iaddiu vi08, vi10, 0x2a | nop 546
|
|
vu.vi08 = vu.vi10 + 0x2a; /* 42 */
|
|
// iaddiu vi03, vi10, 0x2a | nop 547
|
|
vu.vi03 = vu.vi10 + 0x2a; /* 42 */
|
|
// iaddi vi05, vi00, 0x3 | nop 548
|
|
vu.vi05 = 3;
|
|
// BRANCH!
|
|
// bal vi13, L32 | nop 549
|
|
// ASSERT(false);
|
|
// lq.xyzw vf07, 962(vi00) | nop 550
|
|
lq_buffer(Mask::xyzw, vu.vf07, 962);
|
|
// if (bc) { goto L32; }
|
|
run_L32_vu2c();
|
|
|
|
// iaddiu vi06, vi05, 0x4000 | nop 551
|
|
vu.vi06 = vu.vi05 + 0x4000; /* 16384 */
|
|
// BRANCH!
|
|
// bal vi13, L30 | nop 552
|
|
// ASSERT(false);
|
|
// iaddiu vi06, vi06, 0x4000 | nop 553
|
|
vu.vi06 = vu.vi06 + 0x4000; /* 16384 */
|
|
// if (bc) { goto L30; }
|
|
run_L30_vu2c();
|
|
|
|
// iaddiu vi08, vi10, 0x23 | nop 554
|
|
vu.vi08 = vu.vi10 + 0x23; /* 35 */
|
|
// iaddiu vi01, vi00, 0x69c | nop 555
|
|
vu.vi01 = 0x69c; /* 1692 */
|
|
// xgkick vi08 | nop 556
|
|
xgkick(vu.vi08);
|
|
// isub vi10, vi01, vi10 | nop 557
|
|
vu.vi10 = vu.vi01 - vu.vi10;
|
|
L29:
|
|
// BRANCH!
|
|
// ibgtz vi14, L26 | nop 558
|
|
bc = ((s16)vu.vi14) > 0;
|
|
// nop | nop 559
|
|
|
|
if (bc) {
|
|
goto L26;
|
|
}
|
|
|
|
// lq.xyzw vf08, 0(vi02) | nop 560
|
|
lq_buffer(Mask::xyzw, vu.vf08, vu.vi02);
|
|
// lq.xyzw vf09, 1(vi02) | nop 561
|
|
lq_buffer(Mask::xyzw, vu.vf09, vu.vi02 + 1);
|
|
// jr vi15 | nop 562
|
|
// ASSERT(false);
|
|
// lq.xyzw vf10, 2(vi02) | nop 563
|
|
lq_buffer(Mask::xyzw, vu.vf10, vu.vi02 + 2);
|
|
}
|
|
|
|
void OceanNear::run_L30_vu2c() {
|
|
bool bc;
|
|
// sq.xyzw vf07, -1(vi08) | nop 564
|
|
sq_buffer(Mask::xyzw, vu.vf07, vu.vi08 + -1);
|
|
// isw.x vi06, -1(vi08) | nop 565
|
|
isw_buffer(Mask::x, vu.vi06, vu.vi08 + -1);
|
|
L31:
|
|
// lqi.xyzw vf24, vi08 | nop 566
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi08++);
|
|
// lqi.xyzw vf27, vi08 | nop 567
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi08++);
|
|
// lqi.xyzw vf21, vi08 | nop 568
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08++);
|
|
// nop | nop 569
|
|
|
|
// nop | nop 570
|
|
|
|
// nop | nop 571
|
|
|
|
// div Q, vf00.w, vf21.w | mul.xyzw vf21, vf21, vf31 572
|
|
// SWAP here
|
|
vu.Q = vu.vf00.w() / vu.vf21.w();
|
|
vu.vf21.mul(Mask::xyzw, vu.vf21, vu.vf31);
|
|
// nop | nop 573
|
|
|
|
// nop | nop 574
|
|
|
|
// nop | nop 575
|
|
|
|
// nop | nop 576
|
|
|
|
// nop | nop 577
|
|
|
|
// nop | nop 578
|
|
|
|
// nop | mul.xyz vf21, vf21, Q 579
|
|
vu.vf21.mul(Mask::xyz, vu.vf21, vu.Q);
|
|
// nop | mul.xyzw vf24, vf24, Q 580
|
|
vu.vf24.mul(Mask::xyzw, vu.vf24, vu.Q);
|
|
// nop | nop 581
|
|
|
|
// nop | nop 582
|
|
|
|
// nop | add.xyzw vf21, vf21, vf02 583
|
|
vu.vf21.add(Mask::xyzw, vu.vf21, vu.vf02);
|
|
// nop | nop 584
|
|
|
|
// nop | nop 585
|
|
|
|
// nop | nop 586
|
|
|
|
// nop | maxy.w vf21, vf21, vf03 587
|
|
vu.vf21.max(Mask::w, vu.vf21, vu.vf03.y());
|
|
// nop | nop 588
|
|
|
|
// nop | nop 589
|
|
|
|
// nop | nop 590
|
|
|
|
// nop | miniz.w vf21, vf21, vf03 591
|
|
vu.vf21.mini(Mask::w, vu.vf21, vu.vf03.z());
|
|
// nop | nop 592
|
|
|
|
// nop | nop 593
|
|
|
|
// nop | ftoi0.xyzw vf27, vf27 594
|
|
vu.vf27.ftoi0(Mask::xyzw, vu.vf27);
|
|
// nop | ftoi4.xyzw vf21, vf21 595
|
|
vu.vf21.ftoi4(Mask::xyzw, vu.vf21);
|
|
// nop | nop 596
|
|
|
|
// sq.xyzw vf24, -3(vi08) | nop 597
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi08 + -3);
|
|
// sq.xyzw vf27, -2(vi08) | nop 598
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + -2);
|
|
// sq.xyzw vf21, -1(vi08) | nop 599
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + -1);
|
|
// iaddi vi05, vi05, -0x1 | nop 600
|
|
vu.vi05 = vu.vi05 + -1;
|
|
// nop | nop 601
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi05, L31 | nop 602
|
|
bc = (vu.vi05 != 0);
|
|
// nop | nop 603
|
|
|
|
if (bc) {
|
|
goto L31;
|
|
}
|
|
|
|
// jr vi13 | nop 604
|
|
// nop | nop 605
|
|
}
|
|
|
|
void OceanNear::run_L32_vu2c() {
|
|
bool bc;
|
|
u32 cf = 0;
|
|
// ior vi04, vi03, vi00 | nop 606
|
|
vu.vi04 = vu.vi03;
|
|
// lq.xyzw vf21, 2(vi03) | nop 607
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi03 + 2);
|
|
// ior vi06, vi05, vi00 | nop 608
|
|
vu.vi06 = vu.vi05;
|
|
// lq.xyzw vf24, 0(vi03) | nop 609
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi03);
|
|
// lq.xyzw vf27, 1(vi03) | nop 610
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | clipw.xyz vf21, vf21 611
|
|
cf = clip(vu.vf21, vu.vf21.w(), cf);
|
|
vu.vi03 = vu.vi03 + 3;
|
|
L33:
|
|
// lq.xyzw vf22, 2(vi03) | nop 612
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + 2);
|
|
// lq.xyzw vf25, 0(vi03) | nop 613
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi03);
|
|
// lq.xyzw vf28, 1(vi03) | nop 614
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | nop 615
|
|
vu.vi03 = vu.vi03 + 3;
|
|
// nop | clipw.xyz vf22, vf22 616
|
|
cf = clip(vu.vf22, vu.vf22.w(), cf);
|
|
// nop | nop 617
|
|
|
|
// nop | nop 618
|
|
|
|
// nop | nop 619
|
|
|
|
// fcor vi01, 0xfff7df | nop 620
|
|
fcor(vu.vi01, 0xfff7df, cf);
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L44 | nop 621
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x20 | nop 622
|
|
fcand(vu.vi01, 0x20, cf);
|
|
|
|
if (bc) {
|
|
goto L44;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L45 | nop 623
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x800 | nop 624
|
|
fcand(vu.vi01, 0x800, cf);
|
|
|
|
if (bc) {
|
|
goto L45;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L46 | nop 625
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 626
|
|
|
|
if (bc) {
|
|
goto L46;
|
|
}
|
|
|
|
// sqi.xyzw vf24, vi04 | nop 627
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 628
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 629
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
L34:
|
|
// move.xyzw vf24, vf25 | nop 630
|
|
vu.vf24.move(Mask::xyzw, vu.vf25);
|
|
// iaddi vi05, vi05, -0x1 | nop 631
|
|
vu.vi05 = vu.vi05 + -1;
|
|
// move.xyzw vf27, vf28 | nop 632
|
|
vu.vf27.move(Mask::xyzw, vu.vf28);
|
|
// BRANCH!
|
|
// ibne vi00, vi05, L33 | nop 633
|
|
bc = (vu.vi05 != 0);
|
|
// move.xyzw vf21, vf22 | nop 634
|
|
vu.vf21.move(Mask::xyzw, vu.vf22);
|
|
if (bc) {
|
|
goto L33;
|
|
}
|
|
|
|
// lq.xyzw vf24, 0(vi08) | nop 635
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi08);
|
|
// lq.xyzw vf27, 1(vi08) | nop 636
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + 1);
|
|
// lq.xyzw vf21, 2(vi08) | nop 637
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 2);
|
|
// ior vi03, vi08, vi00 | nop 638
|
|
vu.vi03 = vu.vi08;
|
|
// sqi.xyzw vf24, vi04 | nop 639
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 640
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 641
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi00, vi06, L43 | nop 642
|
|
bc = (vu.vi06 == 0);
|
|
// ior vi05, vi06, vi00 | nop 643
|
|
vu.vi05 = vu.vi06;
|
|
if (bc) {
|
|
goto L43;
|
|
}
|
|
|
|
// ior vi04, vi03, vi00 | nop 644
|
|
vu.vi04 = vu.vi03;
|
|
// lq.xyzw vf21, 2(vi03) | nop 645
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi03 + 2);
|
|
// ior vi06, vi05, vi00 | nop 646
|
|
vu.vi06 = vu.vi05;
|
|
// lq.xyzw vf24, 0(vi03) | nop 647
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi03);
|
|
// lq.xyzw vf27, 1(vi03) | nop 648
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | clipw.xyz vf21, vf21 649
|
|
cf = clip(vu.vf21, vu.vf21.w(), cf);
|
|
vu.vi03 = vu.vi03 + 3;
|
|
L35:
|
|
// lq.xyzw vf22, 2(vi03) | nop 650
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + 2);
|
|
// lq.xyzw vf25, 0(vi03) | nop 651
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi03);
|
|
// lq.xyzw vf28, 1(vi03) | nop 652
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | nop 653
|
|
vu.vi03 = vu.vi03 + 3;
|
|
// nop | clipw.xyz vf22, vf22 654
|
|
cf = clip(vu.vf22, vu.vf22.w(), cf);
|
|
// nop | nop 655
|
|
|
|
// nop | nop 656
|
|
|
|
// nop | nop 657
|
|
|
|
// fcor vi01, 0xfffdf7 | nop 658
|
|
fcor(vu.vi01, 0xfffdf7, cf);
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L47 | nop 659
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x8 | nop 660
|
|
fcand(vu.vi01, 0x8, cf);
|
|
|
|
if (bc) {
|
|
goto L47;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L48 | nop 661
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x200 | nop 662
|
|
fcand(vu.vi01, 0x200, cf);
|
|
|
|
if (bc) {
|
|
goto L48;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L49 | nop 663
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 664
|
|
|
|
if (bc) {
|
|
goto L49;
|
|
}
|
|
|
|
// sqi.xyzw vf24, vi04 | nop 665
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 666
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 667
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
L36:
|
|
// move.xyzw vf24, vf25 | nop 668
|
|
vu.vf24.move(Mask::xyzw, vu.vf25);
|
|
// iaddi vi05, vi05, -0x1 | nop 669
|
|
vu.vi05 = vu.vi05 + -1;
|
|
// move.xyzw vf27, vf28 | nop 670
|
|
vu.vf27.move(Mask::xyzw, vu.vf28);
|
|
// BRANCH!
|
|
// ibne vi00, vi05, L35 | nop 671
|
|
bc = (vu.vi05 != 0);
|
|
// move.xyzw vf21, vf22 | nop 672
|
|
vu.vf21.move(Mask::xyzw, vu.vf22);
|
|
if (bc) {
|
|
goto L35;
|
|
}
|
|
|
|
// lq.xyzw vf24, 0(vi08) | nop 673
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi08);
|
|
// lq.xyzw vf27, 1(vi08) | nop 674
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + 1);
|
|
// lq.xyzw vf21, 2(vi08) | nop 675
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 2);
|
|
// ior vi03, vi08, vi00 | nop 676
|
|
vu.vi03 = vu.vi08;
|
|
// sqi.xyzw vf24, vi04 | nop 677
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 678
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 679
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi00, vi06, L43 | nop 680
|
|
bc = (vu.vi06 == 0);
|
|
// ior vi05, vi06, vi00 | nop 681
|
|
vu.vi05 = vu.vi06;
|
|
if (bc) {
|
|
goto L43;
|
|
}
|
|
|
|
// ior vi04, vi03, vi00 | nop 682
|
|
vu.vi04 = vu.vi03;
|
|
// lq.xyzw vf21, 2(vi03) | nop 683
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi03 + 2);
|
|
// ior vi06, vi05, vi00 | nop 684
|
|
vu.vi06 = vu.vi05;
|
|
// lq.xyzw vf24, 0(vi03) | nop 685
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi03);
|
|
// lq.xyzw vf27, 1(vi03) | nop 686
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | clipw.xyz vf21, vf21 687
|
|
cf = clip(vu.vf21, vu.vf21.w(), cf);
|
|
vu.vi03 = vu.vi03 + 3;
|
|
L37:
|
|
// lq.xyzw vf22, 2(vi03) | nop 688
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + 2);
|
|
// lq.xyzw vf25, 0(vi03) | nop 689
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi03);
|
|
// lq.xyzw vf28, 1(vi03) | nop 690
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | nop 691
|
|
vu.vi03 = vu.vi03 + 3;
|
|
// nop | clipw.xyz vf22, vf22 692
|
|
cf = clip(vu.vf22, vu.vf22.w(), cf);
|
|
// nop | nop 693
|
|
|
|
// nop | nop 694
|
|
|
|
// nop | nop 695
|
|
|
|
// fcor vi01, 0xfffefb | nop 696
|
|
fcor(vu.vi01, 0xfffefb, cf);
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L50 | nop 697
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x4 | nop 698
|
|
fcand(vu.vi01, 0x4, cf);
|
|
|
|
if (bc) {
|
|
goto L50;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L51 | nop 699
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x100 | nop 700
|
|
fcand(vu.vi01, 0x100, cf);
|
|
|
|
if (bc) {
|
|
goto L51;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L52 | nop 701
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 702
|
|
|
|
if (bc) {
|
|
goto L52;
|
|
}
|
|
|
|
// sqi.xyzw vf24, vi04 | nop 703
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 704
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 705
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
L38:
|
|
// move.xyzw vf24, vf25 | nop 706
|
|
vu.vf24.move(Mask::xyzw, vu.vf25);
|
|
// iaddi vi05, vi05, -0x1 | nop 707
|
|
vu.vi05 = vu.vi05 + -1;
|
|
// move.xyzw vf27, vf28 | nop 708
|
|
vu.vf27.move(Mask::xyzw, vu.vf28);
|
|
// BRANCH!
|
|
// ibne vi00, vi05, L37 | nop 709
|
|
bc = (vu.vi05 != 0);
|
|
// move.xyzw vf21, vf22 | nop 710
|
|
vu.vf21.move(Mask::xyzw, vu.vf22);
|
|
if (bc) {
|
|
goto L37;
|
|
}
|
|
|
|
// lq.xyzw vf24, 0(vi08) | nop 711
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi08);
|
|
// lq.xyzw vf27, 1(vi08) | nop 712
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + 1);
|
|
// lq.xyzw vf21, 2(vi08) | nop 713
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 2);
|
|
// ior vi03, vi08, vi00 | nop 714
|
|
vu.vi03 = vu.vi08;
|
|
// sqi.xyzw vf24, vi04 | nop 715
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 716
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 717
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi00, vi06, L43 | nop 718
|
|
bc = (vu.vi06 == 0);
|
|
// ior vi05, vi06, vi00 | nop 719
|
|
vu.vi05 = vu.vi06;
|
|
if (bc) {
|
|
goto L43;
|
|
}
|
|
|
|
// ior vi04, vi03, vi00 | nop 720
|
|
vu.vi04 = vu.vi03;
|
|
// lq.xyzw vf21, 2(vi03) | nop 721
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi03 + 2);
|
|
// ior vi06, vi05, vi00 | nop 722
|
|
vu.vi06 = vu.vi05;
|
|
// lq.xyzw vf24, 0(vi03) | nop 723
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi03);
|
|
// lq.xyzw vf27, 1(vi03) | nop 724
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | clipw.xyz vf21, vf21 725
|
|
cf = clip(vu.vf21, vu.vf21.w(), cf);
|
|
vu.vi03 = vu.vi03 + 3;
|
|
L39:
|
|
// lq.xyzw vf22, 2(vi03) | nop 726
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + 2);
|
|
// lq.xyzw vf25, 0(vi03) | nop 727
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi03);
|
|
// lq.xyzw vf28, 1(vi03) | nop 728
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | nop 729
|
|
vu.vi03 = vu.vi03 + 3;
|
|
// nop | clipw.xyz vf22, vf22 730
|
|
cf = clip(vu.vf22, vu.vf22.w(), cf);
|
|
// nop | nop 731
|
|
|
|
// nop | nop 732
|
|
|
|
// nop | nop 733
|
|
|
|
// fcor vi01, 0xffff7d | nop 734
|
|
fcor(vu.vi01, 0xffff7d, cf);
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L53 | nop 735
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x2 | nop 736
|
|
fcand(vu.vi01, 0x2, cf);
|
|
|
|
if (bc) {
|
|
goto L53;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L54 | nop 737
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x80 | nop 738
|
|
fcand(vu.vi01, 0x80, cf);
|
|
|
|
if (bc) {
|
|
goto L54;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L55 | nop 739
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 740
|
|
|
|
if (bc) {
|
|
goto L55;
|
|
}
|
|
|
|
// sqi.xyzw vf24, vi04 | nop 741
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 742
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 743
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
L40:
|
|
// move.xyzw vf24, vf25 | nop 744
|
|
vu.vf24.move(Mask::xyzw, vu.vf25);
|
|
// iaddi vi05, vi05, -0x1 | nop 745
|
|
vu.vi05 = vu.vi05 + -1;
|
|
// move.xyzw vf27, vf28 | nop 746
|
|
vu.vf27.move(Mask::xyzw, vu.vf28);
|
|
// BRANCH!
|
|
// ibne vi00, vi05, L39 | nop 747
|
|
bc = (vu.vi05 != 0);
|
|
// move.xyzw vf21, vf22 | nop 748
|
|
vu.vf21.move(Mask::xyzw, vu.vf22);
|
|
if (bc) {
|
|
goto L39;
|
|
}
|
|
|
|
// lq.xyzw vf24, 0(vi08) | nop 749
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi08);
|
|
// lq.xyzw vf27, 1(vi08) | nop 750
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + 1);
|
|
// lq.xyzw vf21, 2(vi08) | nop 751
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 2);
|
|
// ior vi03, vi08, vi00 | nop 752
|
|
vu.vi03 = vu.vi08;
|
|
// sqi.xyzw vf24, vi04 | nop 753
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 754
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 755
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi00, vi06, L43 | nop 756
|
|
bc = (vu.vi06 == 0);
|
|
// ior vi05, vi06, vi00 | nop 757
|
|
vu.vi05 = vu.vi06;
|
|
if (bc) {
|
|
goto L43;
|
|
}
|
|
|
|
// ior vi04, vi03, vi00 | nop 758
|
|
vu.vi04 = vu.vi03;
|
|
// lq.xyzw vf21, 2(vi03) | nop 759
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi03 + 2);
|
|
// ior vi06, vi05, vi00 | nop 760
|
|
vu.vi06 = vu.vi05;
|
|
// lq.xyzw vf24, 0(vi03) | nop 761
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi03);
|
|
// lq.xyzw vf27, 1(vi03) | nop 762
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | clipw.xyz vf21, vf21 763
|
|
cf = clip(vu.vf21, vu.vf21.w(), cf);
|
|
vu.vi03 = vu.vi03 + 3;
|
|
L41:
|
|
// lq.xyzw vf22, 2(vi03) | nop 764
|
|
lq_buffer(Mask::xyzw, vu.vf22, vu.vi03 + 2);
|
|
// lq.xyzw vf25, 0(vi03) | nop 765
|
|
lq_buffer(Mask::xyzw, vu.vf25, vu.vi03);
|
|
// lq.xyzw vf28, 1(vi03) | nop 766
|
|
lq_buffer(Mask::xyzw, vu.vf28, vu.vi03 + 1);
|
|
// iaddi vi03, vi03, 0x3 | nop 767
|
|
vu.vi03 = vu.vi03 + 3;
|
|
// nop | clipw.xyz vf22, vf22 768
|
|
cf = clip(vu.vf22, vu.vf22.w(), cf);
|
|
// nop | nop 769
|
|
|
|
// nop | nop 770
|
|
|
|
// nop | nop 771
|
|
|
|
// fcor vi01, 0xffffbe | nop 772
|
|
fcor(vu.vi01, 0xffffbe, cf);
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L56 | nop 773
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x1 | nop 774
|
|
fcand(vu.vi01, 0x1, cf);
|
|
|
|
if (bc) {
|
|
goto L56;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L57 | nop 775
|
|
bc = (vu.vi01 != 0);
|
|
// fcand vi01, 0x40 | nop 776
|
|
fcand(vu.vi01, 0x40, cf);
|
|
|
|
if (bc) {
|
|
goto L57;
|
|
}
|
|
|
|
// BRANCH!
|
|
// ibne vi00, vi01, L58 | nop 777
|
|
bc = (vu.vi01 != 0);
|
|
// nop | nop 778
|
|
|
|
if (bc) {
|
|
goto L58;
|
|
}
|
|
|
|
// sqi.xyzw vf24, vi04 | nop 779
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 780
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 781
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
L42:
|
|
// move.xyzw vf24, vf25 | nop 782
|
|
vu.vf24.move(Mask::xyzw, vu.vf25);
|
|
// iaddi vi05, vi05, -0x1 | nop 783
|
|
vu.vi05 = vu.vi05 + -1;
|
|
// move.xyzw vf27, vf28 | nop 784
|
|
vu.vf27.move(Mask::xyzw, vu.vf28);
|
|
// BRANCH!
|
|
// ibne vi00, vi05, L41 | nop 785
|
|
bc = (vu.vi05 != 0);
|
|
// move.xyzw vf21, vf22 | nop 786
|
|
vu.vf21.move(Mask::xyzw, vu.vf22);
|
|
if (bc) {
|
|
goto L41;
|
|
}
|
|
|
|
// lq.xyzw vf24, 0(vi08) | nop 787
|
|
lq_buffer(Mask::xyzw, vu.vf24, vu.vi08);
|
|
// lq.xyzw vf27, 1(vi08) | nop 788
|
|
lq_buffer(Mask::xyzw, vu.vf27, vu.vi08 + 1);
|
|
// lq.xyzw vf21, 2(vi08) | nop 789
|
|
lq_buffer(Mask::xyzw, vu.vf21, vu.vi08 + 2);
|
|
// ior vi03, vi08, vi00 | nop 790
|
|
vu.vi03 = vu.vi08;
|
|
// sqi.xyzw vf24, vi04 | nop 791
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | nop 792
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | nop 793
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi00, vi06, L43 | nop 794
|
|
bc = (vu.vi06 == 0);
|
|
// ior vi05, vi06, vi00 | nop 795
|
|
vu.vi05 = vu.vi06;
|
|
if (bc) {
|
|
goto L43;
|
|
}
|
|
|
|
L43:
|
|
// jr vi13 | nop 796
|
|
// ASSERT(false);
|
|
return;
|
|
// nop | nop 797
|
|
|
|
L44:
|
|
// BRANCH!
|
|
// b L34 | nop 798
|
|
bc = true;
|
|
// iaddi vi06, vi06, -0x1 | nop 799
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L34;
|
|
}
|
|
|
|
L45:
|
|
// sqi.xyzw vf24, vi04 | sub.xyzw vf23, vf22, vf21 800
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf21);
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | sub.xyzw vf26, vf25, vf24 801
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf24);
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | sub.xyzw vf29, vf28, vf27 802
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf27);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi03, vi04, L34 | nop 803
|
|
bc = (vu.vi03 == vu.vi04);
|
|
// nop | addz.w vf30, vf23, vf23 804
|
|
vu.vf30.add(Mask::w, vu.vf23, vu.vf23.z());
|
|
if (bc) {
|
|
goto L34;
|
|
}
|
|
|
|
// nop | addw.z vf30, vf21, vf21 805
|
|
vu.vf30.add(Mask::z, vu.vf21, vu.vf21.w());
|
|
// div Q, vf30.z, vf30.w | nop 806
|
|
vu.Q = vu.vf30.z() / vu.vf30.w();
|
|
// waitq | nop 807
|
|
|
|
// nop | mul.xyzw vf26, vf26, Q 808
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 809
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 810
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | sub.xyzw vf26, vf24, vf26 811
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf26);
|
|
// nop | sub.xyzw vf29, vf27, vf29 812
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf29);
|
|
// nop | sub.xyzw vf23, vf21, vf23 813
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf23);
|
|
// iaddi vi06, vi06, 0x1 | nop 814
|
|
vu.vi06 = vu.vi06 + 1;
|
|
// sqi.xyzw vf26, vi04 | nop 815
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 816
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L34 | nop 817
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 818
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L34;
|
|
}
|
|
|
|
L46:
|
|
// nop | sub.xyzw vf23, vf21, vf22 819
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf22);
|
|
// nop | sub.xyzw vf26, vf24, vf25 820
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf25);
|
|
// nop | sub.xyzw vf29, vf27, vf28 821
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf28);
|
|
// nop | addz.w vf30, vf23, vf23 822
|
|
vu.vf30.add(Mask::w, vu.vf23, vu.vf23.z());
|
|
// nop | addw.z vf30, vf22, vf22 823
|
|
vu.vf30.add(Mask::z, vu.vf22, vu.vf22.w());
|
|
// div Q, vf30.z, vf30.w | nop 824
|
|
vu.Q = vu.vf30.z() / vu.vf30.w();
|
|
// waitq | nop 825
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 826
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 827
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 828
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | sub.xyzw vf26, vf25, vf26 829
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf26);
|
|
// nop | sub.xyzw vf29, vf28, vf29 830
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf29);
|
|
// nop | sub.xyzw vf23, vf22, vf23 831
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf23);
|
|
// sqi.xyzw vf26, vi04 | nop 832
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 833
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L34 | nop 834
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 835
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L34;
|
|
}
|
|
|
|
L47:
|
|
// BRANCH!
|
|
// b L36 | nop 836
|
|
bc = true;
|
|
// iaddi vi06, vi06, -0x1 | nop 837
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L36;
|
|
}
|
|
|
|
L48:
|
|
// sqi.xyzw vf24, vi04 | sub.xyzw vf23, vf22, vf21 838
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf21);
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | sub.xyzw vf26, vf25, vf24 839
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf24);
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | sub.xyzw vf29, vf28, vf27 840
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf27);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi03, vi04, L36 | nop 841
|
|
bc = (vu.vi03 == vu.vi04);
|
|
// nop | addy.w vf30, vf23, vf23 842
|
|
vu.vf30.add(Mask::w, vu.vf23, vu.vf23.y());
|
|
if (bc) {
|
|
goto L36;
|
|
}
|
|
|
|
// nop | addw.y vf30, vf21, vf21 843
|
|
vu.vf30.add(Mask::y, vu.vf21, vu.vf21.w());
|
|
// div Q, vf30.y, vf30.w | nop 844
|
|
vu.Q = vu.vf30.y() / vu.vf30.w();
|
|
// waitq | nop 845
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 846
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 847
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 848
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | sub.xyzw vf26, vf24, vf26 849
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf26);
|
|
// nop | sub.xyzw vf29, vf27, vf29 850
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf29);
|
|
// nop | sub.xyzw vf23, vf21, vf23 851
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf23);
|
|
// iaddi vi06, vi06, 0x1 | nop 852
|
|
vu.vi06 = vu.vi06 + 1;
|
|
// sqi.xyzw vf26, vi04 | nop 853
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 854
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L36 | nop 855
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 856
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L36;
|
|
}
|
|
|
|
L49:
|
|
// nop | sub.xyzw vf23, vf21, vf22 857
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf22);
|
|
// nop | sub.xyzw vf26, vf24, vf25 858
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf25);
|
|
// nop | sub.xyzw vf29, vf27, vf28 859
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf28);
|
|
// nop | addy.w vf30, vf23, vf23 860
|
|
vu.vf30.add(Mask::w, vu.vf23, vu.vf23.y());
|
|
// nop | addw.y vf30, vf22, vf22 861
|
|
vu.vf30.add(Mask::y, vu.vf22, vu.vf22.w());
|
|
// div Q, vf30.y, vf30.w | nop 862
|
|
vu.Q = vu.vf30.y() / vu.vf30.w();
|
|
// waitq | nop 863
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 864
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 865
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 866
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | sub.xyzw vf26, vf25, vf26 867
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf26);
|
|
// nop | sub.xyzw vf29, vf28, vf29 868
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf29);
|
|
// nop | sub.xyzw vf23, vf22, vf23 869
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf23);
|
|
// sqi.xyzw vf26, vi04 | nop 870
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 871
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L36 | nop 872
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 873
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L36;
|
|
}
|
|
|
|
L50:
|
|
// BRANCH!
|
|
// b L38 | nop 874
|
|
bc = true;
|
|
// iaddi vi06, vi06, -0x1 | nop 875
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L38;
|
|
}
|
|
|
|
L51:
|
|
// sqi.xyzw vf24, vi04 | sub.xyzw vf23, vf22, vf21 876
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf21);
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | sub.xyzw vf26, vf25, vf24 877
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf24);
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | sub.xyzw vf29, vf28, vf27 878
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf27);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi03, vi04, L38 | nop 879
|
|
bc = (vu.vi03 == vu.vi04);
|
|
// nop | suby.w vf30, vf23, vf23 880
|
|
vu.vf30.sub(Mask::w, vu.vf23, vu.vf23.y());
|
|
if (bc) {
|
|
goto L38;
|
|
}
|
|
|
|
// nop | subw.y vf30, vf21, vf21 881
|
|
vu.vf30.sub(Mask::y, vu.vf21, vu.vf21.w());
|
|
// div Q, vf30.y, vf30.w | nop 882
|
|
vu.Q = vu.vf30.y() / vu.vf30.w();
|
|
// waitq | nop 883
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 884
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 885
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 886
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | add.xyzw vf26, vf24, vf26 887
|
|
vu.vf26.add(Mask::xyzw, vu.vf24, vu.vf26);
|
|
// nop | add.xyzw vf29, vf27, vf29 888
|
|
vu.vf29.add(Mask::xyzw, vu.vf27, vu.vf29);
|
|
// nop | add.xyzw vf23, vf21, vf23 889
|
|
vu.vf23.add(Mask::xyzw, vu.vf21, vu.vf23);
|
|
// iaddi vi06, vi06, 0x1 | nop 890
|
|
vu.vi06 = vu.vi06 + 1;
|
|
// sqi.xyzw vf26, vi04 | nop 891
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 892
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L38 | nop 893
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 894
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L38;
|
|
}
|
|
|
|
L52:
|
|
// nop | sub.xyzw vf23, vf21, vf22 895
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf22);
|
|
// nop | sub.xyzw vf26, vf24, vf25 896
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf25);
|
|
// nop | sub.xyzw vf29, vf27, vf28 897
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf28);
|
|
// nop | suby.w vf30, vf23, vf23 898
|
|
vu.vf30.sub(Mask::w, vu.vf23, vu.vf23.y());
|
|
// nop | subw.y vf30, vf22, vf22 899
|
|
vu.vf30.sub(Mask::y, vu.vf22, vu.vf22.w());
|
|
// div Q, vf30.y, vf30.w | nop 900
|
|
vu.Q = vu.vf30.y() / vu.vf30.w();
|
|
// waitq | nop 901
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 902
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 903
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 904
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | add.xyzw vf26, vf25, vf26 905
|
|
vu.vf26.add(Mask::xyzw, vu.vf25, vu.vf26);
|
|
// nop | add.xyzw vf29, vf28, vf29 906
|
|
vu.vf29.add(Mask::xyzw, vu.vf28, vu.vf29);
|
|
// nop | add.xyzw vf23, vf22, vf23 907
|
|
vu.vf23.add(Mask::xyzw, vu.vf22, vu.vf23);
|
|
// sqi.xyzw vf26, vi04 | nop 908
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 909
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L38 | nop 910
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 911
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L38;
|
|
}
|
|
|
|
L53:
|
|
// BRANCH!
|
|
// b L40 | nop 912
|
|
bc = true;
|
|
// iaddi vi06, vi06, -0x1 | nop 913
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L40;
|
|
}
|
|
|
|
L54:
|
|
// sqi.xyzw vf24, vi04 | sub.xyzw vf23, vf22, vf21 914
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf21);
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | sub.xyzw vf26, vf25, vf24 915
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf24);
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | sub.xyzw vf29, vf28, vf27 916
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf27);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi03, vi04, L40 | nop 917
|
|
bc = (vu.vi03 == vu.vi04);
|
|
// nop | addx.w vf30, vf23, vf23 918
|
|
vu.vf30.add(Mask::w, vu.vf23, vu.vf23.x());
|
|
if (bc) {
|
|
goto L40;
|
|
}
|
|
|
|
// nop | addw.x vf30, vf21, vf21 919
|
|
vu.vf30.add(Mask::x, vu.vf21, vu.vf21.w());
|
|
// div Q, vf30.x, vf30.w | nop 920
|
|
vu.Q = vu.vf30.x() / vu.vf30.w();
|
|
// waitq | nop 921
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 922
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 923
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 924
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | sub.xyzw vf26, vf24, vf26 925
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf26);
|
|
// nop | sub.xyzw vf29, vf27, vf29 926
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf29);
|
|
// nop | sub.xyzw vf23, vf21, vf23 927
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf23);
|
|
// iaddi vi06, vi06, 0x1 | nop 928
|
|
vu.vi06 = vu.vi06 + 1;
|
|
// sqi.xyzw vf26, vi04 | nop 929
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 930
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L40 | nop 931
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 932
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L40;
|
|
}
|
|
|
|
L55:
|
|
// nop | sub.xyzw vf23, vf21, vf22 933
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf22);
|
|
// nop | sub.xyzw vf26, vf24, vf25 934
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf25);
|
|
// nop | sub.xyzw vf29, vf27, vf28 935
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf28);
|
|
// nop | addx.w vf30, vf23, vf23 936
|
|
vu.vf30.add(Mask::w, vu.vf23, vu.vf23.x());
|
|
// nop | addw.x vf30, vf22, vf22 937
|
|
vu.vf30.add(Mask::x, vu.vf22, vu.vf22.w());
|
|
// div Q, vf30.x, vf30.w | nop 938
|
|
vu.Q = vu.vf30.x() / vu.vf30.w();
|
|
// waitq | nop 939
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 940
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 941
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 942
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | sub.xyzw vf26, vf25, vf26 943
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf26);
|
|
// nop | sub.xyzw vf29, vf28, vf29 944
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf29);
|
|
// nop | sub.xyzw vf23, vf22, vf23 945
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf23);
|
|
// sqi.xyzw vf26, vi04 | nop 946
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 947
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L40 | nop 948
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 949
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L40;
|
|
}
|
|
|
|
L56:
|
|
// BRANCH!
|
|
// b L42 | nop 950
|
|
bc = true;
|
|
// iaddi vi06, vi06, -0x1 | nop 951
|
|
vu.vi06 = vu.vi06 + -1;
|
|
if (bc) {
|
|
goto L42;
|
|
}
|
|
|
|
L57:
|
|
// sqi.xyzw vf24, vi04 | sub.xyzw vf23, vf22, vf21 952
|
|
vu.vf23.sub(Mask::xyzw, vu.vf22, vu.vf21);
|
|
sq_buffer(Mask::xyzw, vu.vf24, vu.vi04++);
|
|
// sqi.xyzw vf27, vi04 | sub.xyzw vf26, vf25, vf24 953
|
|
vu.vf26.sub(Mask::xyzw, vu.vf25, vu.vf24);
|
|
sq_buffer(Mask::xyzw, vu.vf27, vu.vi04++);
|
|
// sqi.xyzw vf21, vi04 | sub.xyzw vf29, vf28, vf27 954
|
|
vu.vf29.sub(Mask::xyzw, vu.vf28, vu.vf27);
|
|
sq_buffer(Mask::xyzw, vu.vf21, vu.vi04++);
|
|
// BRANCH!
|
|
// ibeq vi03, vi04, L42 | nop 955
|
|
bc = (vu.vi03 == vu.vi04);
|
|
// nop | subx.w vf30, vf23, vf23 956
|
|
vu.vf30.sub(Mask::w, vu.vf23, vu.vf23.x());
|
|
if (bc) {
|
|
goto L42;
|
|
}
|
|
|
|
// nop | subw.x vf30, vf21, vf21 957
|
|
vu.vf30.sub(Mask::x, vu.vf21, vu.vf21.w());
|
|
// div Q, vf30.x, vf30.w | nop 958
|
|
vu.Q = vu.vf30.x() / vu.vf30.w();
|
|
// waitq | nop 959
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 960
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 961
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 962
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | add.xyzw vf26, vf24, vf26 963
|
|
vu.vf26.add(Mask::xyzw, vu.vf24, vu.vf26);
|
|
// nop | add.xyzw vf29, vf27, vf29 964
|
|
vu.vf29.add(Mask::xyzw, vu.vf27, vu.vf29);
|
|
// nop | add.xyzw vf23, vf21, vf23 965
|
|
vu.vf23.add(Mask::xyzw, vu.vf21, vu.vf23);
|
|
// iaddi vi06, vi06, 0x1 | nop 966
|
|
vu.vi06 = vu.vi06 + 1;
|
|
// sqi.xyzw vf26, vi04 | nop 967
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 968
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L42 | nop 969
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 970
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L42;
|
|
}
|
|
|
|
L58:
|
|
// nop | sub.xyzw vf23, vf21, vf22 971
|
|
vu.vf23.sub(Mask::xyzw, vu.vf21, vu.vf22);
|
|
// nop | sub.xyzw vf26, vf24, vf25 972
|
|
vu.vf26.sub(Mask::xyzw, vu.vf24, vu.vf25);
|
|
// nop | sub.xyzw vf29, vf27, vf28 973
|
|
vu.vf29.sub(Mask::xyzw, vu.vf27, vu.vf28);
|
|
// nop | subx.w vf30, vf23, vf23 974
|
|
vu.vf30.sub(Mask::w, vu.vf23, vu.vf23.x());
|
|
// nop | subw.x vf30, vf22, vf22 975
|
|
vu.vf30.sub(Mask::x, vu.vf22, vu.vf22.w());
|
|
// div Q, vf30.x, vf30.w | nop 976
|
|
vu.Q = vu.vf30.x() / vu.vf30.w();
|
|
// waitq | nop 977
|
|
// ASSERT(false);
|
|
// nop | mul.xyzw vf26, vf26, Q 978
|
|
vu.vf26.mul(Mask::xyzw, vu.vf26, vu.Q);
|
|
// nop | mul.xyzw vf29, vf29, Q 979
|
|
vu.vf29.mul(Mask::xyzw, vu.vf29, vu.Q);
|
|
// nop | mul.xyzw vf23, vf23, Q 980
|
|
vu.vf23.mul(Mask::xyzw, vu.vf23, vu.Q);
|
|
// nop | add.xyzw vf26, vf25, vf26 981
|
|
vu.vf26.add(Mask::xyzw, vu.vf25, vu.vf26);
|
|
// nop | add.xyzw vf29, vf28, vf29 982
|
|
vu.vf29.add(Mask::xyzw, vu.vf28, vu.vf29);
|
|
// nop | add.xyzw vf23, vf22, vf23 983
|
|
vu.vf23.add(Mask::xyzw, vu.vf22, vu.vf23);
|
|
// sqi.xyzw vf26, vi04 | nop 984
|
|
sq_buffer(Mask::xyzw, vu.vf26, vu.vi04++);
|
|
// sqi.xyzw vf29, vi04 | nop 985
|
|
sq_buffer(Mask::xyzw, vu.vf29, vu.vi04++);
|
|
// BRANCH!
|
|
// b L42 | nop 986
|
|
bc = true;
|
|
// sqi.xyzw vf23, vi04 | nop 987
|
|
sq_buffer(Mask::xyzw, vu.vf23, vu.vi04++);
|
|
if (bc) {
|
|
goto L42;
|
|
}
|
|
} |