mirror of
https://github.com/open-goal/jak-project
synced 2026-07-09 14:55:51 -04:00
VU micro mode disassembler (#517)
* wip * more * the rest of the disassembler
This commit is contained in:
@@ -56,6 +56,10 @@ add_library(
|
||||
util/DecompilerTypeSystem.cpp
|
||||
util/TP_Type.cpp
|
||||
|
||||
VuDisasm/VuDisassembler.cpp
|
||||
VuDisasm/VuInstruction.cpp
|
||||
VuDisasm/VuProgram.cpp
|
||||
|
||||
config.cpp)
|
||||
|
||||
target_link_libraries(decomp
|
||||
|
||||
@@ -0,0 +1,708 @@
|
||||
#include <cstring>
|
||||
#include <algorithm>
|
||||
|
||||
#include "VuDisassembler.h"
|
||||
#include "third-party/fmt/core.h"
|
||||
#include "common/util/assert.h"
|
||||
#include "common/util/print_float.h"
|
||||
|
||||
namespace decompiler {
|
||||
|
||||
namespace {
|
||||
int upper_op6(u32 in) {
|
||||
return in & 0b111111;
|
||||
}
|
||||
|
||||
int upper_op11(u32 in) {
|
||||
return in & 0b11111111111;
|
||||
}
|
||||
|
||||
int upper_dest_mask(u32 in) {
|
||||
return 0b1111 & (in >> 21);
|
||||
}
|
||||
|
||||
int upper_ft(u32 in) {
|
||||
return 0b11111 & (in >> 16);
|
||||
}
|
||||
|
||||
int upper_fs(u32 in) {
|
||||
return 0b11111 & (in >> 11);
|
||||
}
|
||||
|
||||
int upper_fd(u32 in) {
|
||||
return 0b11111 & (in >> 6);
|
||||
}
|
||||
|
||||
int upper_bc(u32 in) {
|
||||
return 0b11 & in;
|
||||
}
|
||||
|
||||
int lower_op(u32 in) {
|
||||
return (in >> 25);
|
||||
}
|
||||
|
||||
int upper_imm15_unsigned(u32 in) {
|
||||
u32 p1 = (in & 0b11111111111);
|
||||
u32 p2 = (in >> 21) & 0b1111;
|
||||
return p1 | (p2 << 11);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
VuDisassembler::VuDisassembler() {
|
||||
m_upper_op6_table[0b000000].set(VuInstrK::ADDbc); // 0
|
||||
m_upper_op6_table[0b000001].set(VuInstrK::ADDbc); // 1
|
||||
m_upper_op6_table[0b000010].set(VuInstrK::ADDbc); // 2
|
||||
m_upper_op6_table[0b000011].set(VuInstrK::ADDbc); // 3
|
||||
m_upper_op6_table[0b000100].set(VuInstrK::SUBbc); // 4
|
||||
m_upper_op6_table[0b000101].set(VuInstrK::SUBbc); // 5
|
||||
m_upper_op6_table[0b000110].set(VuInstrK::SUBbc); // 6
|
||||
m_upper_op6_table[0b000111].set(VuInstrK::SUBbc); // 7
|
||||
m_upper_op6_table[0b001000].set(VuInstrK::MADDbc); // 8
|
||||
m_upper_op6_table[0b001001].set(VuInstrK::MADDbc); // 9
|
||||
m_upper_op6_table[0b001010].set(VuInstrK::MADDbc); // 10
|
||||
m_upper_op6_table[0b001011].set(VuInstrK::MADDbc); // 11
|
||||
m_upper_op6_table[0b001100].set(VuInstrK::MSUBbc); // 12
|
||||
m_upper_op6_table[0b001101].set(VuInstrK::MSUBbc); // 13
|
||||
m_upper_op6_table[0b001110].set(VuInstrK::MSUBbc); // 14
|
||||
m_upper_op6_table[0b001111].set(VuInstrK::MSUBbc); // 15
|
||||
m_upper_op6_table[0b010000].set(VuInstrK::MAXbc); // 16
|
||||
m_upper_op6_table[0b010001].set(VuInstrK::MAXbc); // 17
|
||||
m_upper_op6_table[0b010010].set(VuInstrK::MAXbc); // 18
|
||||
m_upper_op6_table[0b010011].set(VuInstrK::MAXbc); // 19
|
||||
m_upper_op6_table[0b010100].set(VuInstrK::MINIbc); // 20
|
||||
m_upper_op6_table[0b010101].set(VuInstrK::MINIbc); // 21
|
||||
m_upper_op6_table[0b010110].set(VuInstrK::MINIbc); // 22
|
||||
m_upper_op6_table[0b010111].set(VuInstrK::MINIbc); // 23
|
||||
m_upper_op6_table[0b011000].set(VuInstrK::MULbc); // 24
|
||||
m_upper_op6_table[0b011001].set(VuInstrK::MULbc); // 25
|
||||
m_upper_op6_table[0b011010].set(VuInstrK::MULbc); // 26
|
||||
m_upper_op6_table[0b011011].set(VuInstrK::MULbc); // 27
|
||||
m_upper_op6_table[0b011100].set(VuInstrK::MULq); // 28
|
||||
m_upper_op6_table[0b011101].set(VuInstrK::MAXi); // 29
|
||||
m_upper_op6_table[0b011110].set(VuInstrK::MULi); // 30
|
||||
m_upper_op6_table[0b011111].set(VuInstrK::MINIi); // 31
|
||||
|
||||
m_upper_op6_table[0b100000].set(VuInstrK::ADDq); // 32
|
||||
// m_upper_op6_table[0b100001].set(VuInstrK::MADDq); // 33
|
||||
m_upper_op6_table[0b100010].set(VuInstrK::ADDi); // 34
|
||||
// m_upper_op6_table[0b100011].set(VuInstrK::MADDi); // 35
|
||||
// m_upper_op6_table[0b100100].set(VuInstrK::SUBq); // 36
|
||||
// m_upper_op6_table[0b100101].set(VuInstrK::MSUBq); // 37
|
||||
// m_upper_op6_table[0b100110].set(VuInstrK::SUBi); // 38
|
||||
// m_upper_op6_table[0b100111].set(VuInstrK::MSUBi); // 39
|
||||
m_upper_op6_table[0b101000].set(VuInstrK::ADD); // 40
|
||||
m_upper_op6_table[0b101001].set(VuInstrK::MADD); // 41
|
||||
m_upper_op6_table[0b101010].set(VuInstrK::MUL); // 42
|
||||
m_upper_op6_table[0b101011].set(VuInstrK::MAX); // 43
|
||||
m_upper_op6_table[0b101100].set(VuInstrK::SUB); // 44
|
||||
// m_upper_op6_table[0b101101].set(VuInstrK::MSUB); // 45
|
||||
m_upper_op6_table[0b101110].set(VuInstrK::OPMSUB); // 46
|
||||
m_upper_op6_table[0b101111].set(VuInstrK::MINI); // 47
|
||||
// ???
|
||||
m_upper_op6_table[0b111100].set_11(); // 60
|
||||
m_upper_op6_table[0b111101].set_11(); // 61
|
||||
m_upper_op6_table[0b111110].set_11(); // 62
|
||||
m_upper_op6_table[0b111111].set_11(); // 63
|
||||
|
||||
add_op(VuInstrK::NOP, "nop").iemdt();
|
||||
add_op(VuInstrK::LOWER_NOP, "nop");
|
||||
add_op(VuInstrK::FTOI4, "ftoi4").iemdt().dst_mask().dst_vf_ft().src_vf_fs();
|
||||
add_op(VuInstrK::FTOI0, "ftoi0").iemdt().dst_mask().dst_vf_ft().src_vf_fs();
|
||||
add_op(VuInstrK::ITOF0, "itof0").iemdt().dst_mask().dst_vf_ft().src_vf_fs();
|
||||
add_op(VuInstrK::ITOF12, "itof12").iemdt().dst_mask().dst_vf_ft().src_vf_fs();
|
||||
add_op(VuInstrK::ITOF15, "itof15").iemdt().dst_mask().dst_vf_ft().src_vf_fs();
|
||||
add_op(VuInstrK::FTOI12, "ftoi12").iemdt().dst_mask().dst_vf_ft().src_vf_fs();
|
||||
add_op(VuInstrK::ADD, "add").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::MULbc, "mul").iemdt().dst_mask().bc().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::ADDbc, "add").iemdt().dst_mask().dss_fd_fs_ft().bc();
|
||||
add_op(VuInstrK::MAXbc, "max").iemdt().dst_mask().dss_fd_fs_ft().bc();
|
||||
add_op(VuInstrK::MULAbc, "mula").iemdt().bc().dst_mask().dst_acc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MADDAbc, "madda").iemdt().bc().dst_mask().dst_acc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MSUBAbc, "msuba").iemdt().bc().dst_mask().dst_acc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MADDbc, "madd").iemdt().dst_mask().dss_fd_fs_ft().bc();
|
||||
add_op(VuInstrK::SUBbc, "sub").iemdt().dst_mask().dss_fd_fs_ft().bc();
|
||||
add_op(VuInstrK::OPMULA, "opmula").iemdt().dst_mask().dst_acc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::OPMSUB, "opmsub").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::MUL, "mul").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::MULq, "mul").iemdt().dst_mask().dst_vfd().src_vfs().src_q().vft_zero();
|
||||
add_op(VuInstrK::SUB, "sub").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::MSUBbc, "msub").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::MADDA, "madda").iemdt().dst_mask().dst_acc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MULA, "mula").iemdt().dst_mask().dst_acc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MINIbc, "mini").iemdt().dst_mask().bc().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::MAXi, "maxi").iemdt().dst_mask().dst_vfd().src_vfs().vft_zero().src_i();
|
||||
add_op(VuInstrK::MINIi, "minii").iemdt().dst_mask().dst_vfd().src_vfs().vft_zero().src_i();
|
||||
add_op(VuInstrK::ADDAbc, "adda").iemdt().dst_mask().bc().dst_vfs().src_vft();
|
||||
add_op(VuInstrK::CLIP, "clip").iemdt().dst_mask().bc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MINI, "mini").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::MAX, "max").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::ADDA, "adda").iemdt().dst_mask().dst_acc().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MADD, "madd").iemdt().dst_mask().dss_fd_fs_ft();
|
||||
add_op(VuInstrK::ADDq, "addq").iemdt().dst_mask().vft_zero().dst_vfd().src_vfs().src_q();
|
||||
add_op(VuInstrK::MULi, "muli").iemdt().dst_mask().vft_zero().dst_vfd().src_vfs().src_i();
|
||||
add_op(VuInstrK::ADDi, "addi").iemdt().dst_mask().vft_zero().dst_vfd().src_vfs().src_i();
|
||||
|
||||
m_lower_op6_table[0b000000].set(VuInstrK::LQ);
|
||||
m_lower_op6_table[0b000001].set(VuInstrK::SQ);
|
||||
m_lower_op6_table[0b000100].set(VuInstrK::ILW);
|
||||
m_lower_op6_table[0b000101].set(VuInstrK::ISW);
|
||||
m_lower_op6_table[0b001000].set(VuInstrK::IADDIU);
|
||||
m_lower_op6_table[0b001001].set(VuInstrK::ISUBIU);
|
||||
// m_lower_op6_table[0b010000].set(VuInstrK::FCEQ);
|
||||
m_lower_op6_table[0b010001].set(VuInstrK::FCSET);
|
||||
m_lower_op6_table[0b010010].set(VuInstrK::FCAND);
|
||||
m_lower_op6_table[0b010011].set(VuInstrK::FCOR);
|
||||
// m_lower_op6_table[0b010100].set(VuInstrK::FSEQ);
|
||||
// m_lower_op6_table[0b010101].set(VuInstrK::FSSET);
|
||||
m_lower_op6_table[0b010110].set(VuInstrK::FSAND);
|
||||
// m_lower_op6_table[0b010111].set(VuInstrK::FSOR);
|
||||
// m_lower_op6_table[0b011000].set(VuInstrK::FMEQ);
|
||||
// ??
|
||||
m_lower_op6_table[0b011010].set(VuInstrK::FMAND);
|
||||
// m_lower_op6_table[0b011011].set(VuInstrK::FMOR);
|
||||
m_lower_op6_table[0b011100].set(VuInstrK::FCGET);
|
||||
// ??
|
||||
m_lower_op6_table[0b100000].set(VuInstrK::B);
|
||||
m_lower_op6_table[0b100001].set(VuInstrK::BAL);
|
||||
m_lower_op6_table[0b100100].set(VuInstrK::JR);
|
||||
m_lower_op6_table[0b100101].set(VuInstrK::JALR);
|
||||
m_lower_op6_table[0b101000].set(VuInstrK::IBEQ);
|
||||
m_lower_op6_table[0b101001].set(VuInstrK::IBNE);
|
||||
m_lower_op6_table[0b101100].set(VuInstrK::IBLTZ);
|
||||
m_lower_op6_table[0b101101].set(VuInstrK::IBGTZ);
|
||||
m_lower_op6_table[0b101110].set(VuInstrK::IBLEZ);
|
||||
m_lower_op6_table[0b101111].set(VuInstrK::IBGEZ);
|
||||
|
||||
add_op(VuInstrK::IBNE, "ibne").dst_mask_zero().src_vit().src_vis().rel_branch11();
|
||||
add_op(VuInstrK::LQ, "lq").dst_mask().dst_vft().src_imm11_load_store().src_vis();
|
||||
add_op(VuInstrK::ILW, "ilw").dst_mask().dst_vit().src_imm11_load_store().src_vis();
|
||||
add_op(VuInstrK::IADDIU, "iaddiu").dst_vit().src_vis().src_imm15_unsigned();
|
||||
add_op(VuInstrK::IADDI, "iaddi").dst_vit().src_vis().src_imm5_signed().dst_mask_zero();
|
||||
add_op(VuInstrK::IOR, "ior").dst_vid().src_vis().src_vit().dst_mask_zero();
|
||||
add_op(VuInstrK::SQI, "sqi").dst_vfs().src_vit().dst_mask();
|
||||
add_op(VuInstrK::ISW, "isw").src_vit().src_imm11_load_store().src_vis().dst_mask();
|
||||
add_op(VuInstrK::LQI, "lqi").dst_mask().dst_vft().src_vis();
|
||||
add_op(VuInstrK::IADD, "iadd").dst_mask_zero().dst_vid().src_vis().src_vit();
|
||||
add_op(VuInstrK::XGKICK, "xgkick").dst_mask_zero().vft_zero().src_vis();
|
||||
add_op(VuInstrK::ISUB, "isub").dst_mask_zero().dst_vid().src_vis().src_vit();
|
||||
add_op(VuInstrK::SQ, "sq").dst_mask().dst_vfs().src_imm11_load_store().src_vit();
|
||||
add_op(VuInstrK::FMAND, "fmand").imm15_zero().dst_vit().src_vis();
|
||||
add_op(VuInstrK::DIV, "div").ftf_1().fsf_0().dst_q().src_vfs().src_vft();
|
||||
add_op(VuInstrK::MOVE, "move").dst_mask().dst_vft().src_vfs();
|
||||
add_op(VuInstrK::MR32, "mr32").dst_mask().dst_vft().src_vfs();
|
||||
add_op(VuInstrK::RSQRT, "rsqrt").ftf_1().fsf_0().dst_q().src_vfs().src_vft();
|
||||
add_op(VuInstrK::ILWR, "ilwr").dst_mask().dst_vit().src_vis();
|
||||
add_op(VuInstrK::MTIR, "mtir").ftf_zero().fsf_0().dst_vit().src_vfs();
|
||||
add_op(VuInstrK::JR, "jr").dst_mask_zero().vit_zero().src_vis().imm11_zero();
|
||||
add_op(VuInstrK::IAND, "iand").dst_mask_zero().dst_vid().src_vis().src_vit();
|
||||
add_op(VuInstrK::IBEQ, "ibeq").src_vit().src_vis().dst_mask_zero().rel_branch11();
|
||||
add_op(VuInstrK::B, "b").dst_mask_zero().vit_zero().vis_zero().rel_branch11();
|
||||
// add_op(VuInstrK::XITOP, "xitop").dst_mask_zero().vis_zero().src_vit();
|
||||
add_op(VuInstrK::XTOP, "xtop").dst_mask_zero().vis_zero().src_vit();
|
||||
add_op(VuInstrK::BAL, "bal").dst_mask_zero().vis_zero().dst_vit().rel_branch11();
|
||||
add_op(VuInstrK::MFIR, "mfir").dst_mask().dst_vft().src_vis();
|
||||
add_op(VuInstrK::IBGTZ, "ibgtz").dst_mask_zero().vit_zero().src_vis().rel_branch11();
|
||||
add_op(VuInstrK::FCGET, "fcget").imm15_zero().vis_zero().dst_vit();
|
||||
add_op(VuInstrK::ISUBIU, "isubiu").dst_vit().src_vis().imm15_unsigned();
|
||||
add_op(VuInstrK::FSAND, "fsand").dst_vit().imm15_unsigned().vis_zero(); // really imm12.
|
||||
add_op(VuInstrK::IBLTZ, "ibltz").dst_mask_zero().vit_zero().src_vis().rel_branch11();
|
||||
add_op(VuInstrK::FCSET, "fcset").src_imm24_unsigned();
|
||||
add_op(VuInstrK::FCAND, "fcand vi01,").src_imm24_unsigned();
|
||||
add_op(VuInstrK::FCOR, "fcor vi01,").src_imm24_unsigned();
|
||||
add_op(VuInstrK::IBGEZ, "ibgez").dst_mask_zero().vit_zero().src_vis().rel_branch11();
|
||||
add_op(VuInstrK::ISWR, "iswr").dst_mask().src_vit().src_vis();
|
||||
add_op(VuInstrK::JALR, "jalr").dst_mask_zero().dst_vit().src_vis().imm11_zero();
|
||||
add_op(VuInstrK::WAITQ, "waitq").dst_mask_zero().vft_zero().vis_zero();
|
||||
add_op(VuInstrK::IBLEZ, "iblez").dst_mask_zero().vit_zero().src_vis().rel_branch11();
|
||||
add_op(VuInstrK::SQRT, "sqrt").fsf_zero().ftf_0().vis_zero().dst_q().src_vft();
|
||||
add_op(VuInstrK::SQD, "sqd").dst_mask().src_vfs().src_vit();
|
||||
add_op(VuInstrK::ERLENG, "erleng").dst_mask().vft_zero().src_vfs().dst_p();
|
||||
add_op(VuInstrK::MFP, "mfp").dst_mask().dst_vft().src_p();
|
||||
}
|
||||
|
||||
VuDisassembler::OpInfo& VuDisassembler::add_op(VuInstrK kind, const std::string& name) {
|
||||
assert((int)kind < (int)VuInstrK::INVALID);
|
||||
auto& elt = m_op_info[(int)kind];
|
||||
elt.name = name;
|
||||
elt.known = true;
|
||||
return elt;
|
||||
}
|
||||
|
||||
VuInstrK VuDisassembler::lower_kind(u32 in) {
|
||||
auto op = lower_op(in);
|
||||
if (in == 0b10000000000000000000000000110000) {
|
||||
return VuInstrK::LOWER_NOP;
|
||||
}
|
||||
if (op == 0b1000000) {
|
||||
switch (in & 0b111111) {
|
||||
case 0b110010:
|
||||
return VuInstrK::IADDI;
|
||||
case 0b110101:
|
||||
return VuInstrK::IOR;
|
||||
case 0b110000:
|
||||
return VuInstrK::IADD;
|
||||
case 0b110001:
|
||||
return VuInstrK::ISUB;
|
||||
case 0b110100:
|
||||
return VuInstrK::IAND;
|
||||
}
|
||||
switch (in & 0b11111111111) {
|
||||
case 0b01100'1111'00:
|
||||
return VuInstrK::MOVE;
|
||||
case 0b01100'1111'01:
|
||||
return VuInstrK::MR32;
|
||||
case 0b01101'1111'00:
|
||||
return VuInstrK::LQI;
|
||||
case 0b01101'1111'01:
|
||||
return VuInstrK::SQI;
|
||||
case 0b01101'1111'11:
|
||||
return VuInstrK::SQD;
|
||||
case 0b01110'1111'00:
|
||||
return VuInstrK::DIV;
|
||||
case 0b01110'1111'01:
|
||||
return VuInstrK::SQRT;
|
||||
case 0b01110'1111'10:
|
||||
return VuInstrK::RSQRT;
|
||||
case 0b01110'1111'11:
|
||||
return VuInstrK::WAITQ;
|
||||
case 0b01111'1111'00:
|
||||
return VuInstrK::MTIR;
|
||||
case 0b01111'1111'01:
|
||||
return VuInstrK::MFIR;
|
||||
case 0b01111'1111'10:
|
||||
return VuInstrK::ILWR;
|
||||
case 0b01111'1111'11:
|
||||
return VuInstrK::ISWR;
|
||||
case 0b11001'1111'00:
|
||||
return VuInstrK::MFP;
|
||||
case 0b11010'1111'00:
|
||||
return VuInstrK::XTOP;
|
||||
case 0b11011'1111'00:
|
||||
return VuInstrK::XGKICK;
|
||||
case 0b11100'1111'11:
|
||||
return VuInstrK::ERLENG;
|
||||
}
|
||||
fmt::print("Unknown lower special: 0b{:b}\n", in);
|
||||
assert(false);
|
||||
} else {
|
||||
assert((op & 0b1000000) == 0);
|
||||
assert(op < 64);
|
||||
auto elt = m_lower_op6_table[(int)op];
|
||||
if (!elt.known) {
|
||||
fmt::print("Invalid lower op6: 0b{:b} 0b{:b} 0x{:x}\n", op, in, in);
|
||||
assert(false);
|
||||
}
|
||||
return elt.kind;
|
||||
}
|
||||
}
|
||||
|
||||
VuInstrK VuDisassembler::upper_kind(u32 in) {
|
||||
auto& upper_info = m_upper_op6_table[upper_op6(in)];
|
||||
if (upper_info.goto_11) {
|
||||
switch (upper_op11(in)) {
|
||||
case 0b00000'1111'00:
|
||||
case 0b00000'1111'01:
|
||||
case 0b00000'1111'10:
|
||||
case 0b00000'1111'11:
|
||||
return VuInstrK::ADDAbc;
|
||||
case 0b00010'1111'00:
|
||||
case 0b00010'1111'01:
|
||||
case 0b00010'1111'10:
|
||||
case 0b00010'1111'11:
|
||||
return VuInstrK::MADDAbc;
|
||||
case 0b00011'1111'00:
|
||||
case 0b00011'1111'01:
|
||||
case 0b00011'1111'10:
|
||||
case 0b00011'1111'11:
|
||||
return VuInstrK::MSUBAbc;
|
||||
case 0b00100'1111'00:
|
||||
return VuInstrK::ITOF0;
|
||||
case 0b00100'1111'10:
|
||||
return VuInstrK::ITOF12;
|
||||
case 0b00100'1111'11:
|
||||
return VuInstrK::ITOF15;
|
||||
case 0b00101'1111'00:
|
||||
return VuInstrK::FTOI0;
|
||||
case 0b00101'1111'01:
|
||||
return VuInstrK::FTOI4;
|
||||
case 0b00101'1111'10:
|
||||
return VuInstrK::FTOI12;
|
||||
case 0b00110'1111'00:
|
||||
case 0b00110'1111'01:
|
||||
case 0b00110'1111'10:
|
||||
case 0b00110'1111'11:
|
||||
return VuInstrK::MULAbc;
|
||||
case 0b00111'1111'11:
|
||||
return VuInstrK::CLIP;
|
||||
case 0b01010'1111'00:
|
||||
return VuInstrK::ADDA;
|
||||
case 0b01010'1111'01:
|
||||
return VuInstrK::MADDA;
|
||||
case 0b01010'1111'10:
|
||||
return VuInstrK::MULA;
|
||||
case 0b01011'1111'10:
|
||||
return VuInstrK::OPMULA;
|
||||
case 0b01011'1111'11:
|
||||
assert(upper_dest_mask(in) == 0);
|
||||
assert(upper_fs(in) == 0);
|
||||
assert(upper_ft(in) == 0);
|
||||
return VuInstrK::NOP;
|
||||
break;
|
||||
|
||||
default:
|
||||
fmt::print("Invalid op11: 0b{:b}\n", upper_op11(in));
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
if (!upper_info.known) {
|
||||
fmt::print("Invalid upper op6: 0b{:b}\n", upper_op6(in));
|
||||
assert(false);
|
||||
}
|
||||
return upper_info.kind;
|
||||
}
|
||||
|
||||
VuProgram VuDisassembler::disassemble(void* data, int size_bytes, bool debug_print) {
|
||||
auto bytes = (u8*)data;
|
||||
// should be 8 byte aligned size.
|
||||
assert((size_bytes & 0x7) == 0);
|
||||
VuProgram prog;
|
||||
int instruction_count = size_bytes / 8;
|
||||
for (int i = 0; i < instruction_count; i++) {
|
||||
u32 lower, upper;
|
||||
memcpy(&lower, bytes + i * 8, 4);
|
||||
memcpy(&upper, bytes + i * 8 + 4, 4);
|
||||
|
||||
// decode
|
||||
auto upper_instr = decode(upper_kind(upper), upper, i);
|
||||
auto lower_instr = upper_instr.i_bit() ? VuInstruction::make_fp_constant(lower)
|
||||
: decode(lower_kind(lower), lower, i);
|
||||
|
||||
prog.add_instruction(upper_instr, lower_instr);
|
||||
|
||||
// debug
|
||||
if (debug_print) {
|
||||
fmt::print("{}\n", to_string(VuInstructionPair{upper_instr, lower_instr}));
|
||||
}
|
||||
}
|
||||
|
||||
name_labels();
|
||||
|
||||
if (debug_print) {
|
||||
fmt::print("----------------------------------\n");
|
||||
fmt::print("{}\n", to_string(prog));
|
||||
}
|
||||
|
||||
return prog;
|
||||
}
|
||||
|
||||
VuInstruction VuDisassembler::decode(VuInstrK kind, u32 data, int instr_idx) {
|
||||
VuInstruction instr;
|
||||
instr.kind = kind;
|
||||
auto& inst = info(kind);
|
||||
if (!inst.known) {
|
||||
fmt::print("instr idx {} is unknown\n", (int)kind);
|
||||
assert(false);
|
||||
}
|
||||
for (auto& step : inst.decode) {
|
||||
s64 value = -1;
|
||||
switch (step.field) {
|
||||
case VuDecodeStep::FieldK::IEMDT:
|
||||
value = data >> 25;
|
||||
assert((value & 3) == 0);
|
||||
break;
|
||||
case VuDecodeStep::FieldK::DST_MASK:
|
||||
value = upper_dest_mask(data);
|
||||
break;
|
||||
case VuDecodeStep::FieldK::FS:
|
||||
value = upper_fs(data);
|
||||
break;
|
||||
case VuDecodeStep::FieldK::FT:
|
||||
value = upper_ft(data);
|
||||
break;
|
||||
case VuDecodeStep::FieldK::FD:
|
||||
value = upper_fd(data);
|
||||
break;
|
||||
case VuDecodeStep::FieldK::BC:
|
||||
value = upper_bc(data);
|
||||
break;
|
||||
case VuDecodeStep::FieldK::NONE:
|
||||
break;
|
||||
case VuDecodeStep::FieldK::IMM11_BRANCH: {
|
||||
s32 signed_11 = upper_op11(data) << 21;
|
||||
signed_11 >>= 21;
|
||||
value = add_label(signed_11 + instr_idx + 1);
|
||||
} break;
|
||||
case VuDecodeStep::FieldK::IMM11_SIGNED: {
|
||||
s32 signed_value = (data << 21);
|
||||
signed_value = (signed_value >> 21);
|
||||
value = signed_value;
|
||||
} break;
|
||||
case VuDecodeStep::FieldK::IMM15_UNSIGNED:
|
||||
value = upper_imm15_unsigned(data);
|
||||
break;
|
||||
case VuDecodeStep::FieldK::IMM5_SIGNED: {
|
||||
s32 signed_value = (data << 21);
|
||||
value = (signed_value >> 27);
|
||||
break;
|
||||
}
|
||||
case VuDecodeStep::FieldK::FTF:
|
||||
value = (data >> 23) & 0b11;
|
||||
break;
|
||||
|
||||
case VuDecodeStep::FieldK::FSF:
|
||||
value = (data >> 21) & 0b11;
|
||||
break;
|
||||
|
||||
case VuDecodeStep::FieldK::IMM24_UNSIGNED:
|
||||
value = (data & 0b1111'1111'1111'1111'1111'1111);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
|
||||
switch (step.atom) {
|
||||
case VuDecodeStep::AtomK::IEMDT:
|
||||
instr.iemdt = value;
|
||||
break;
|
||||
case VuDecodeStep::AtomK::DST_MASK:
|
||||
instr.mask = value;
|
||||
break;
|
||||
case VuDecodeStep::AtomK::DST_VF:
|
||||
assert(!instr.dst);
|
||||
instr.dst = VuInstructionAtom::make_vf(value);
|
||||
break;
|
||||
case VuDecodeStep::AtomK::DST_VI:
|
||||
assert(!instr.dst);
|
||||
instr.dst = VuInstructionAtom::make_vi(value);
|
||||
break;
|
||||
case VuDecodeStep::AtomK::SRC_VF:
|
||||
instr.src.push_back(VuInstructionAtom::make_vf(value));
|
||||
break;
|
||||
case VuDecodeStep::AtomK::BC:
|
||||
assert(!instr.bc);
|
||||
instr.bc = value;
|
||||
break;
|
||||
case VuDecodeStep::AtomK::ASSERT_ZERO:
|
||||
assert(value == 0);
|
||||
break;
|
||||
case VuDecodeStep::AtomK::SRC_VI:
|
||||
instr.src.push_back(VuInstructionAtom::make_vi(value));
|
||||
break;
|
||||
case VuDecodeStep::AtomK::BRANCH_TARGET:
|
||||
instr.src.push_back(VuInstructionAtom::make_label(value));
|
||||
break;
|
||||
case VuDecodeStep::AtomK::LOAD_STORE_OFFSET:
|
||||
instr.src.push_back(VuInstructionAtom::make_load_store_imm(value));
|
||||
break;
|
||||
case VuDecodeStep::AtomK::SRC_IMM:
|
||||
instr.src.push_back(VuInstructionAtom::make_imm(value));
|
||||
break;
|
||||
case VuDecodeStep::AtomK::DST_ACC:
|
||||
assert(!instr.dst);
|
||||
instr.dst = VuInstructionAtom::make_acc();
|
||||
break;
|
||||
case VuDecodeStep::AtomK::DST_Q:
|
||||
assert(!instr.dst);
|
||||
instr.dst = VuInstructionAtom::make_q();
|
||||
break;
|
||||
case VuDecodeStep::AtomK::DST_P:
|
||||
assert(!instr.dst);
|
||||
instr.dst = VuInstructionAtom::make_p();
|
||||
break;
|
||||
case VuDecodeStep::AtomK::SRC_Q:
|
||||
instr.src.push_back(VuInstructionAtom::make_q());
|
||||
break;
|
||||
case VuDecodeStep::AtomK::SRC_I:
|
||||
instr.src.push_back(VuInstructionAtom::make_i());
|
||||
break;
|
||||
case VuDecodeStep::AtomK::SRC_P:
|
||||
instr.src.push_back(VuInstructionAtom::make_p());
|
||||
break;
|
||||
case VuDecodeStep::AtomK::SECOND_SOURCE_FIELD:
|
||||
instr.second_src_field = value;
|
||||
break;
|
||||
case VuDecodeStep::AtomK::FIRST_SOURCE_FIELD:
|
||||
instr.first_src_field = value;
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
|
||||
return instr;
|
||||
}
|
||||
|
||||
namespace {
|
||||
char bc_to_part(int x) {
|
||||
switch (x) {
|
||||
case 0:
|
||||
return 'x';
|
||||
case 1:
|
||||
return 'y';
|
||||
case 2:
|
||||
return 'z';
|
||||
case 3:
|
||||
return 'w';
|
||||
default:
|
||||
return '?';
|
||||
}
|
||||
}
|
||||
} // namespace
|
||||
|
||||
std::string VuDisassembler::to_string(const VuInstruction& instr) const {
|
||||
if (instr.kind == VuInstrK::FP_CONSTANT) {
|
||||
return float_to_string(instr.fp);
|
||||
}
|
||||
|
||||
auto& in = info(instr.kind);
|
||||
if (!in.known) {
|
||||
assert(false);
|
||||
}
|
||||
|
||||
std::string result;
|
||||
result += in.name;
|
||||
|
||||
if (instr.bc) {
|
||||
result += bc_to_part(*instr.bc);
|
||||
}
|
||||
|
||||
if (instr.mask) {
|
||||
u8 val = *instr.mask;
|
||||
result += '.';
|
||||
if (val & 8) {
|
||||
result += 'x';
|
||||
}
|
||||
if (val & 4) {
|
||||
result += 'y';
|
||||
}
|
||||
if (val & 2) {
|
||||
result += 'z';
|
||||
}
|
||||
if (val & 1) {
|
||||
result += 'w';
|
||||
}
|
||||
}
|
||||
|
||||
bool comma = false;
|
||||
if (instr.dst) {
|
||||
result += " ";
|
||||
result += instr.dst->to_string(m_label_names);
|
||||
result += ',';
|
||||
comma = true;
|
||||
}
|
||||
|
||||
bool close = false;
|
||||
int idx = 0;
|
||||
for (auto& src : instr.src) {
|
||||
if (close) {
|
||||
} else {
|
||||
result += " ";
|
||||
}
|
||||
|
||||
result += src.to_string(m_label_names);
|
||||
|
||||
if (idx == 0 && instr.first_src_field) {
|
||||
result += '.';
|
||||
result += bc_to_part(*instr.first_src_field);
|
||||
}
|
||||
|
||||
if (idx == 1 && instr.second_src_field) {
|
||||
result += '.';
|
||||
result += bc_to_part(*instr.second_src_field);
|
||||
}
|
||||
|
||||
if (src.kind() == VuInstructionAtom::Kind::LOAD_STORE_IMM) {
|
||||
result += '(';
|
||||
close = true;
|
||||
} else {
|
||||
if (close) {
|
||||
result += ")";
|
||||
close = false;
|
||||
comma = false;
|
||||
} else {
|
||||
result += ',';
|
||||
comma = true;
|
||||
}
|
||||
}
|
||||
|
||||
idx++;
|
||||
}
|
||||
|
||||
assert(!close);
|
||||
|
||||
if (comma) {
|
||||
result.pop_back();
|
||||
}
|
||||
|
||||
if (instr.iemdt) {
|
||||
u8 val = *instr.iemdt;
|
||||
if (val & 0b100) {
|
||||
result += " :t";
|
||||
}
|
||||
|
||||
if (val & 0b1000) {
|
||||
result += " :d";
|
||||
}
|
||||
|
||||
if (val & 0b10000) {
|
||||
result += " :m";
|
||||
}
|
||||
|
||||
if (val & 0b100000) {
|
||||
result += " :e";
|
||||
}
|
||||
|
||||
if (val & 0b1000000) {
|
||||
result += " :i";
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string VuDisassembler::to_string(const VuInstructionPair& pair) const {
|
||||
return fmt::format(" {:25s} | {:25s}", to_string(pair.lower), to_string(pair.upper));
|
||||
}
|
||||
|
||||
std::string VuDisassembler::to_string(const VuProgram& prog) const {
|
||||
std::string result;
|
||||
for (int i = 0; i < (int)prog.instructions().size(); i++) {
|
||||
auto lab = m_labels.find(i);
|
||||
if (lab != m_labels.end()) {
|
||||
result += m_label_names.at(lab->second);
|
||||
result += ':';
|
||||
result += '\n';
|
||||
}
|
||||
result += to_string(prog.instructions().at(i));
|
||||
result += '\n';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int VuDisassembler::add_label(int instr) {
|
||||
auto existing = m_labels.find(instr);
|
||||
if (existing == m_labels.end()) {
|
||||
int new_idx = m_labels.size();
|
||||
m_labels[instr] = new_idx;
|
||||
return new_idx;
|
||||
} else {
|
||||
return existing->second;
|
||||
}
|
||||
}
|
||||
|
||||
void VuDisassembler::name_labels() {
|
||||
std::vector<int> instrs_with_labels;
|
||||
for (auto [instr, label_idx] : m_labels) {
|
||||
instrs_with_labels.push_back(instr);
|
||||
}
|
||||
|
||||
m_label_names.resize(instrs_with_labels.size());
|
||||
std::sort(instrs_with_labels.begin(), instrs_with_labels.end());
|
||||
int idx = 1;
|
||||
for (auto& instr : instrs_with_labels) {
|
||||
auto label_idx = m_labels.at(instr);
|
||||
m_label_names.at(label_idx) = fmt::format("L{}", idx++);
|
||||
}
|
||||
}
|
||||
} // namespace decompiler
|
||||
@@ -0,0 +1,228 @@
|
||||
#pragma once
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
#include "decompiler/VuDisasm/VuProgram.h"
|
||||
#include "common/util/assert.h"
|
||||
|
||||
namespace decompiler {
|
||||
|
||||
struct VuDecodeStep {
|
||||
enum class FieldK {
|
||||
IEMDT,
|
||||
DST_MASK,
|
||||
FT,
|
||||
FS,
|
||||
FD,
|
||||
BC,
|
||||
IMM11_BRANCH,
|
||||
IMM11_SIGNED,
|
||||
IMM15_UNSIGNED,
|
||||
IMM5_SIGNED,
|
||||
IMM24_UNSIGNED,
|
||||
FTF,
|
||||
FSF,
|
||||
NONE,
|
||||
} field;
|
||||
|
||||
enum class AtomK {
|
||||
IEMDT,
|
||||
DST_MASK,
|
||||
DST_VF,
|
||||
DST_VI,
|
||||
DST_ACC,
|
||||
DST_Q,
|
||||
DST_P,
|
||||
SRC_P,
|
||||
SRC_Q,
|
||||
SRC_I,
|
||||
SRC_VF,
|
||||
SRC_VI,
|
||||
SRC_IMM,
|
||||
BC,
|
||||
ASSERT_ZERO,
|
||||
LOAD_STORE_OFFSET,
|
||||
SECOND_SOURCE_FIELD,
|
||||
FIRST_SOURCE_FIELD,
|
||||
BRANCH_TARGET
|
||||
} atom;
|
||||
};
|
||||
|
||||
class VuDisassembler {
|
||||
public:
|
||||
VuDisassembler();
|
||||
VuProgram disassemble(void* data, int size_bytes, bool debug_print = false);
|
||||
std::string to_string(const VuInstruction& instr) const;
|
||||
std::string to_string(const VuInstructionPair& pair) const;
|
||||
std::string to_string(const VuProgram& prog) const;
|
||||
|
||||
private:
|
||||
VuInstrK upper_kind(u32 in);
|
||||
VuInstrK lower_kind(u32 in);
|
||||
VuInstruction decode(VuInstrK kind, u32 data, int instr_idx);
|
||||
|
||||
struct VuUpperOp6 {
|
||||
bool goto_11 = false;
|
||||
VuInstrK kind = VuInstrK::INVALID;
|
||||
bool known = false;
|
||||
void set_11() {
|
||||
known = true;
|
||||
goto_11 = true;
|
||||
}
|
||||
|
||||
void set(VuInstrK _kind) {
|
||||
known = true;
|
||||
kind = _kind;
|
||||
}
|
||||
};
|
||||
|
||||
struct VuLowerOp6 {
|
||||
bool goto_other = false;
|
||||
VuInstrK kind = VuInstrK::INVALID;
|
||||
bool known = false;
|
||||
void set_other() {
|
||||
known = true;
|
||||
goto_other = true;
|
||||
}
|
||||
|
||||
void set(VuInstrK _kind) {
|
||||
known = true;
|
||||
kind = _kind;
|
||||
}
|
||||
};
|
||||
|
||||
struct OpInfo {
|
||||
OpInfo() = default;
|
||||
OpInfo(const std::string& _name) : name(_name) {}
|
||||
|
||||
OpInfo& iemdt() { return step({VuDecodeStep::FieldK::IEMDT, VuDecodeStep::AtomK::IEMDT}); }
|
||||
OpInfo& bc() { return step({VuDecodeStep::FieldK::BC, VuDecodeStep::AtomK::BC}); }
|
||||
OpInfo& dst_vf_ft() { return step({VuDecodeStep::FieldK::FT, VuDecodeStep::AtomK::DST_VF}); }
|
||||
OpInfo& src_vf_fs() { return step({VuDecodeStep::FieldK::FS, VuDecodeStep::AtomK::SRC_VF}); }
|
||||
OpInfo& dss_fd_fs_ft() {
|
||||
return step({VuDecodeStep::FieldK::FD, VuDecodeStep::AtomK::DST_VF})
|
||||
.step({VuDecodeStep::FieldK::FS, VuDecodeStep::AtomK::SRC_VF})
|
||||
.step({VuDecodeStep::FieldK::FT, VuDecodeStep::AtomK::SRC_VF});
|
||||
}
|
||||
|
||||
OpInfo& dst_mask() {
|
||||
return step({VuDecodeStep::FieldK::DST_MASK, VuDecodeStep::AtomK::DST_MASK});
|
||||
}
|
||||
|
||||
OpInfo& dst_acc() { return step({VuDecodeStep::FieldK::NONE, VuDecodeStep::AtomK::DST_ACC}); }
|
||||
OpInfo& dst_vfd() { return step({VuDecodeStep::FieldK::FD, VuDecodeStep::AtomK::DST_VF}); }
|
||||
OpInfo& dst_q() { return step({VuDecodeStep::FieldK::NONE, VuDecodeStep::AtomK::DST_Q}); }
|
||||
OpInfo& dst_p() { return step({VuDecodeStep::FieldK::NONE, VuDecodeStep::AtomK::DST_P}); }
|
||||
OpInfo& src_q() { return step({VuDecodeStep::FieldK::NONE, VuDecodeStep::AtomK::SRC_Q}); }
|
||||
OpInfo& src_i() { return step({VuDecodeStep::FieldK::NONE, VuDecodeStep::AtomK::SRC_I}); }
|
||||
OpInfo& src_p() { return step({VuDecodeStep::FieldK::NONE, VuDecodeStep::AtomK::SRC_P}); }
|
||||
|
||||
OpInfo& step(VuDecodeStep x) {
|
||||
decode.push_back(x);
|
||||
return *this;
|
||||
}
|
||||
|
||||
OpInfo& dst_mask_zero() {
|
||||
return step({VuDecodeStep::FieldK::DST_MASK, VuDecodeStep::AtomK::ASSERT_ZERO});
|
||||
}
|
||||
|
||||
OpInfo& vft_zero() {
|
||||
return step({VuDecodeStep::FieldK::FT, VuDecodeStep::AtomK::ASSERT_ZERO});
|
||||
}
|
||||
|
||||
OpInfo& vit_zero() { return vft_zero(); }
|
||||
|
||||
OpInfo& vis_zero() {
|
||||
return step({VuDecodeStep::FieldK::FS, VuDecodeStep::AtomK::ASSERT_ZERO});
|
||||
}
|
||||
|
||||
OpInfo& ftf_zero() {
|
||||
return step({VuDecodeStep::FieldK::FTF, VuDecodeStep::AtomK::ASSERT_ZERO});
|
||||
}
|
||||
|
||||
OpInfo& fsf_zero() {
|
||||
return step({VuDecodeStep::FieldK::FSF, VuDecodeStep::AtomK::ASSERT_ZERO});
|
||||
}
|
||||
|
||||
OpInfo& src_vit() { return step({VuDecodeStep::FieldK::FT, VuDecodeStep::AtomK::SRC_VI}); }
|
||||
|
||||
OpInfo& src_vis() { return step({VuDecodeStep::FieldK::FS, VuDecodeStep::AtomK::SRC_VI}); }
|
||||
|
||||
OpInfo& src_vft() { return step({VuDecodeStep::FieldK::FT, VuDecodeStep::AtomK::SRC_VF}); }
|
||||
|
||||
OpInfo& src_vfs() { return step({VuDecodeStep::FieldK::FS, VuDecodeStep::AtomK::SRC_VF}); }
|
||||
|
||||
OpInfo& rel_branch11() {
|
||||
return step({VuDecodeStep::FieldK::IMM11_BRANCH, VuDecodeStep::AtomK::BRANCH_TARGET});
|
||||
}
|
||||
|
||||
OpInfo& imm15_unsigned() {
|
||||
return step({VuDecodeStep::FieldK::IMM15_UNSIGNED, VuDecodeStep::AtomK::SRC_IMM});
|
||||
}
|
||||
|
||||
OpInfo& dst_vft() { return step({VuDecodeStep::FieldK::FT, VuDecodeStep::AtomK::DST_VF}); }
|
||||
|
||||
OpInfo& dst_vfs() { return step({VuDecodeStep::FieldK::FS, VuDecodeStep::AtomK::DST_VF}); }
|
||||
|
||||
OpInfo& dst_vit() { return step({VuDecodeStep::FieldK::FT, VuDecodeStep::AtomK::DST_VI}); }
|
||||
|
||||
OpInfo& dst_vid() { return step({VuDecodeStep::FieldK::FD, VuDecodeStep::AtomK::DST_VI}); }
|
||||
|
||||
OpInfo& ftf_1() {
|
||||
return step({VuDecodeStep::FieldK::FTF, VuDecodeStep::AtomK::SECOND_SOURCE_FIELD});
|
||||
}
|
||||
OpInfo& ftf_0() {
|
||||
return step({VuDecodeStep::FieldK::FTF, VuDecodeStep::AtomK::FIRST_SOURCE_FIELD});
|
||||
}
|
||||
OpInfo& fsf_0() {
|
||||
return step({VuDecodeStep::FieldK::FSF, VuDecodeStep::AtomK::FIRST_SOURCE_FIELD});
|
||||
}
|
||||
|
||||
OpInfo& src_imm11_load_store() {
|
||||
return step({VuDecodeStep::FieldK::IMM11_SIGNED, VuDecodeStep::AtomK::LOAD_STORE_OFFSET});
|
||||
}
|
||||
|
||||
OpInfo& imm11_zero() {
|
||||
return step({VuDecodeStep::FieldK::IMM11_SIGNED, VuDecodeStep::AtomK::ASSERT_ZERO});
|
||||
}
|
||||
|
||||
OpInfo& src_imm15_unsigned() {
|
||||
return step({VuDecodeStep::FieldK::IMM15_UNSIGNED, VuDecodeStep::AtomK::SRC_IMM});
|
||||
}
|
||||
|
||||
OpInfo& src_imm24_unsigned() {
|
||||
return step({VuDecodeStep::FieldK::IMM24_UNSIGNED, VuDecodeStep::AtomK::SRC_IMM});
|
||||
}
|
||||
|
||||
OpInfo& src_imm5_signed() {
|
||||
return step({VuDecodeStep::FieldK::IMM5_SIGNED, VuDecodeStep::AtomK::SRC_IMM});
|
||||
}
|
||||
|
||||
OpInfo& imm15_zero() {
|
||||
return step({VuDecodeStep::FieldK::IMM15_UNSIGNED, VuDecodeStep::AtomK::ASSERT_ZERO});
|
||||
}
|
||||
|
||||
std::string name;
|
||||
std::vector<VuDecodeStep> decode;
|
||||
bool known = false;
|
||||
};
|
||||
|
||||
const OpInfo& info(VuInstrK op) const {
|
||||
assert((int)op < (int)VuInstrK::INVALID);
|
||||
return m_op_info[(int)op];
|
||||
}
|
||||
|
||||
VuUpperOp6 m_upper_op6_table[64];
|
||||
VuLowerOp6 m_lower_op6_table[64];
|
||||
OpInfo m_op_info[(int)VuInstrK::INVALID];
|
||||
|
||||
std::unordered_map<int, int> m_labels;
|
||||
std::vector<std::string> m_label_names;
|
||||
|
||||
int add_label(int instr);
|
||||
void name_labels();
|
||||
|
||||
OpInfo& add_op(VuInstrK kind, const std::string& name);
|
||||
};
|
||||
|
||||
} // namespace decompiler
|
||||
@@ -0,0 +1,92 @@
|
||||
#include "common/util/assert.h"
|
||||
#include "third-party/fmt/core.h"
|
||||
|
||||
#include "VuInstruction.h"
|
||||
|
||||
namespace decompiler {
|
||||
VuInstructionAtom VuInstructionAtom::make_vf(int idx) {
|
||||
assert(idx >= 0 && idx <= 31);
|
||||
return {Kind::VF, idx};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_vi(int idx) {
|
||||
assert(idx >= 0 && idx <= 15);
|
||||
return {Kind::VI, idx};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_label(int idx) {
|
||||
return {Kind::LABEL, idx};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_q() {
|
||||
return {Kind::Q};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_acc() {
|
||||
return {Kind::ACC};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_imm(u64 value) {
|
||||
return {Kind::IMM, (s64)value};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_load_store_imm(s64 value) {
|
||||
return {Kind::LOAD_STORE_IMM, value};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_i() {
|
||||
return {Kind::I};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_p() {
|
||||
return {Kind::P};
|
||||
}
|
||||
|
||||
VuInstructionAtom VuInstructionAtom::make_r() {
|
||||
return {Kind::R};
|
||||
}
|
||||
|
||||
std::string VuInstructionAtom::to_string(const std::vector<std::string>& labels) const {
|
||||
switch (m_kind) {
|
||||
case Kind::VF:
|
||||
return fmt::format("vf{:02d}", m_value);
|
||||
case Kind::Q:
|
||||
return "Q";
|
||||
case Kind::ACC:
|
||||
return "ACC";
|
||||
case Kind::IMM:
|
||||
if (m_value < 0) {
|
||||
return fmt::format("-0x{:x}", -m_value);
|
||||
} else {
|
||||
return fmt::format("0x{:x}", m_value);
|
||||
}
|
||||
|
||||
case Kind::I:
|
||||
return "I";
|
||||
case Kind::P:
|
||||
return "P";
|
||||
case Kind::R:
|
||||
return "R";
|
||||
case Kind::LABEL:
|
||||
if (m_value < (int)labels.size()) {
|
||||
return labels.at(m_value);
|
||||
} else {
|
||||
return "BAD-LABEL";
|
||||
}
|
||||
case Kind::LOAD_STORE_IMM:
|
||||
return fmt::format("{}", m_value);
|
||||
case Kind::VI:
|
||||
return fmt::format("vi{:02d}", m_value);
|
||||
case Kind::INVALID:
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
|
||||
VuInstruction VuInstruction::make_fp_constant(u32 value) {
|
||||
VuInstruction result;
|
||||
memcpy(&result.fp, &value, sizeof(float));
|
||||
result.kind = VuInstrK::FP_CONSTANT;
|
||||
return result;
|
||||
}
|
||||
} // namespace decompiler
|
||||
@@ -0,0 +1,209 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <optional>
|
||||
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace decompiler {
|
||||
|
||||
enum class VuInstrK {
|
||||
// upper
|
||||
// ABS,
|
||||
ADD,
|
||||
ADDi,
|
||||
ADDq,
|
||||
ADDbc,
|
||||
ADDA,
|
||||
// ADDAi,
|
||||
// ADDAq,
|
||||
ADDAbc,
|
||||
SUB,
|
||||
// SUBi, // 10
|
||||
// SUBq,
|
||||
SUBbc,
|
||||
// SUBA,
|
||||
// SUBAi,
|
||||
// SUBAq,
|
||||
// SUBAbc,
|
||||
MUL,
|
||||
MULi,
|
||||
MULq,
|
||||
MULbc, // 20
|
||||
MULA,
|
||||
// MULAi,
|
||||
// MULAq,
|
||||
MULAbc,
|
||||
MADD,
|
||||
// MADDi,
|
||||
// MADDq,
|
||||
MADDbc,
|
||||
MADDA,
|
||||
// MADDAi, // 30
|
||||
// MADDAq,
|
||||
MADDAbc,
|
||||
// MSUB,
|
||||
// MSUBi,
|
||||
// MSUBq,
|
||||
MSUBbc,
|
||||
// MSUBA,
|
||||
// MSUBAi,
|
||||
// MSUBAq,
|
||||
MSUBAbc, // 40
|
||||
MAX,
|
||||
MAXi,
|
||||
MAXbc,
|
||||
MINI,
|
||||
MINIi,
|
||||
MINIbc,
|
||||
OPMULA,
|
||||
OPMSUB,
|
||||
NOP, // 49
|
||||
FTOI0, // 50
|
||||
FTOI4,
|
||||
FTOI12,
|
||||
// FTOI15,
|
||||
ITOF0,
|
||||
// ITOF4,
|
||||
ITOF12,
|
||||
ITOF15,
|
||||
CLIP,
|
||||
|
||||
// lower
|
||||
DIV,
|
||||
SQRT, // 60
|
||||
RSQRT,
|
||||
IADD,
|
||||
IADDI,
|
||||
IADDIU,
|
||||
IAND,
|
||||
IOR,
|
||||
ISUB,
|
||||
ISUBIU,
|
||||
MOVE,
|
||||
MFIR, // 70
|
||||
MTIR,
|
||||
MR32,
|
||||
LQ,
|
||||
LQD,
|
||||
LQI,
|
||||
SQ,
|
||||
SQD,
|
||||
SQI,
|
||||
ILW,
|
||||
ISW, // 80
|
||||
ILWR,
|
||||
ISWR,
|
||||
// LOI,
|
||||
// RINIT,
|
||||
// RGET,
|
||||
// RNEXT,
|
||||
// RXOR,
|
||||
WAITQ,
|
||||
FSAND,
|
||||
// FSEQ, // 90
|
||||
// FSOR,
|
||||
// FSSET,
|
||||
FMAND,
|
||||
// FMEQ,
|
||||
// FMOR,
|
||||
FCAND,
|
||||
// FCEQ,
|
||||
FCOR,
|
||||
FCSET,
|
||||
FCGET, // 100
|
||||
IBEQ,
|
||||
// IBEZ,
|
||||
IBGEZ,
|
||||
IBGTZ,
|
||||
IBLEZ,
|
||||
IBLTZ,
|
||||
IBNE,
|
||||
B,
|
||||
BAL,
|
||||
JR, // 110
|
||||
JALR,
|
||||
MFP,
|
||||
// WAITP,
|
||||
// ESADD,
|
||||
// ERSADD,
|
||||
// ELENG,
|
||||
ERLENG,
|
||||
// EATANxy,
|
||||
// EATANxz,
|
||||
// ESUM,
|
||||
// ERCPR,
|
||||
// ESQRT,
|
||||
// ERSQRT,
|
||||
// ESIN,
|
||||
// IATAN,
|
||||
// EEXP,
|
||||
XGKICK,
|
||||
XTOP,
|
||||
// XITOP,
|
||||
LOWER_NOP, // really iadd vi0 vi0 vi0
|
||||
|
||||
FP_CONSTANT,
|
||||
|
||||
INVALID
|
||||
};
|
||||
|
||||
/*!
|
||||
* Represents an operand in a VU instruction.
|
||||
*/
|
||||
class VuInstructionAtom {
|
||||
public:
|
||||
enum class Kind {
|
||||
VF,
|
||||
VI,
|
||||
Q,
|
||||
ACC,
|
||||
IMM,
|
||||
LOAD_STORE_IMM,
|
||||
I,
|
||||
P,
|
||||
R,
|
||||
LABEL,
|
||||
INVALID,
|
||||
};
|
||||
|
||||
static VuInstructionAtom make_vf(int idx);
|
||||
static VuInstructionAtom make_vi(int idx);
|
||||
static VuInstructionAtom make_label(int idx);
|
||||
static VuInstructionAtom make_q();
|
||||
static VuInstructionAtom make_acc();
|
||||
static VuInstructionAtom make_imm(u64 value);
|
||||
static VuInstructionAtom make_load_store_imm(s64 value);
|
||||
static VuInstructionAtom make_i();
|
||||
static VuInstructionAtom make_p();
|
||||
static VuInstructionAtom make_r();
|
||||
|
||||
std::string to_string(const std::vector<std::string>& labels) const;
|
||||
Kind kind() const { return m_kind; }
|
||||
|
||||
private:
|
||||
VuInstructionAtom(Kind kind, s64 idx = -1) : m_kind(kind), m_value(idx) {}
|
||||
Kind m_kind = Kind::INVALID;
|
||||
s64 m_value = -1;
|
||||
};
|
||||
|
||||
struct VuInstruction {
|
||||
VuInstrK kind = VuInstrK::INVALID;
|
||||
std::optional<VuInstructionAtom> dst;
|
||||
std::vector<VuInstructionAtom> src;
|
||||
std::optional<int> bc;
|
||||
std::optional<int> mask;
|
||||
std::optional<int> iemdt;
|
||||
std::optional<int> first_src_field, second_src_field;
|
||||
float fp;
|
||||
|
||||
bool i_bit() const { return iemdt && (*iemdt & 0b1000000); }
|
||||
|
||||
static VuInstruction make_fp_constant(u32 value);
|
||||
};
|
||||
|
||||
struct VuInstructionPair {
|
||||
VuInstruction upper, lower;
|
||||
};
|
||||
|
||||
} // namespace decompiler
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
|
||||
#include "VuProgram.h"
|
||||
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "decompiler/VuDisasm/VuInstruction.h"
|
||||
|
||||
namespace decompiler {
|
||||
class VuProgram {
|
||||
public:
|
||||
VuProgram() = default;
|
||||
void add_instruction(const VuInstruction& upper, const VuInstruction& lower) {
|
||||
VuInstructionPair p;
|
||||
p.upper = upper;
|
||||
p.lower = lower;
|
||||
m_instructions.push_back(p);
|
||||
}
|
||||
const std::vector<VuInstructionPair>& instructions() const { return m_instructions; }
|
||||
|
||||
private:
|
||||
std::vector<VuInstructionPair> m_instructions;
|
||||
};
|
||||
} // namespace decompiler
|
||||
@@ -30,6 +30,7 @@ add_executable(goalc-test
|
||||
${CMAKE_CURRENT_LIST_DIR}/decompiler/test_math_decomp.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/decompiler/test_DataParser.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/decompiler/test_DisasmVifDecompile.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/decompiler/test_VuDisasm.cpp
|
||||
${GOALC_TEST_FRAMEWORK_SOURCES}
|
||||
${GOALC_TEST_CASES})
|
||||
|
||||
|
||||
@@ -384,4 +384,4 @@ TEST_F(DataDecompTest, KernelContext) {
|
||||
" :current-process #f\n"
|
||||
" :relocating-process #f\n"
|
||||
" :low-memory-message #t)\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,162 @@
|
||||
|
||||
#include "third-party/fmt/core.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "decompiler/util/DataParser.h"
|
||||
#include "decompiler/VuDisasm/VuDisassembler.h"
|
||||
#include "common/util/FileUtil.h"
|
||||
|
||||
using namespace decompiler;
|
||||
|
||||
namespace {
|
||||
std::vector<u32> get_test_data(const std::string& name) {
|
||||
auto text = file_util::read_text_file(
|
||||
file_util::get_file_path({fmt::format("test/decompiler/vu_reference/{}.txt", name)}));
|
||||
|
||||
auto parsed = parse_data(text);
|
||||
|
||||
std::vector<u32> data;
|
||||
for (auto& w : parsed.words) {
|
||||
EXPECT_EQ(w.kind, LinkedWord::Kind::PLAIN_DATA);
|
||||
data.push_back(w.data);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
std::string get_expected(const std::string& name) {
|
||||
return file_util::read_text_file(
|
||||
file_util::get_file_path({fmt::format("test/decompiler/vu_reference/{}-result.txt", name)}));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
TEST(VuDisasm, SpriteDistort) {
|
||||
auto data = get_test_data("sprite-distort");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("sprite-distort"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, BackgroundVu0) {
|
||||
auto data = get_test_data("background-vu0");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("background-vu0"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, CollideVu0) {
|
||||
auto data = get_test_data("collide-vu0");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("collide-vu0"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, BonesVu0) {
|
||||
auto data = get_test_data("bones-vu0");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("bones-vu0"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, ShadowVu0) {
|
||||
auto data = get_test_data("shadow-vu0");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("shadow-vu0"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, OceanVu0) {
|
||||
auto data = get_test_data("ocean-vu0");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("ocean-vu0"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, GenericVu0) {
|
||||
auto data = get_test_data("generic-vu0");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("generic-vu0"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, MercnericVu0) {
|
||||
auto data = get_test_data("mercneric-vu0");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("mercneric-vu0"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, OceanTexture) {
|
||||
auto data = get_test_data("ocean-texture");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("ocean-texture"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Sky) {
|
||||
auto data = get_test_data("sky");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("sky"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Shrub) {
|
||||
auto data = get_test_data("shrub");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("shrub"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Shadow) {
|
||||
auto data = get_test_data("shadow");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("shadow"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, TNear) {
|
||||
auto data = get_test_data("tnear");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("tnear"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Sprite) {
|
||||
auto data = get_test_data("sprite");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("sprite"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Tie) {
|
||||
auto data = get_test_data("tie");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("tie"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Generic) {
|
||||
auto data = get_test_data("generic");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("generic"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, TieNear) {
|
||||
auto data = get_test_data("tie-near");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("tie-near"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Tfrag) {
|
||||
auto data = get_test_data("tfrag");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("tfrag"));
|
||||
}
|
||||
|
||||
TEST(VuDisasm, Merc) {
|
||||
auto data = get_test_data("merc");
|
||||
VuDisassembler disasm;
|
||||
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
|
||||
EXPECT_EQ(disasm.to_string(prog), get_expected("merc"));
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
sq.xyzw vf24, 4(vi00) | maxw.xyzw vf01, vf00, vf00
|
||||
sq.xyzw vf25, 5(vi00) | nop
|
||||
sq.xyzw vf26, 6(vi00) | nop
|
||||
sq.xyzw vf27, 7(vi00) | nop
|
||||
sq.xyzw vf16, 0(vi00) | mulz.xyzw vf24, vf01, vf24
|
||||
sq.xyzw vf17, 1(vi00) | mulz.xyzw vf25, vf01, vf25
|
||||
sq.xyzw vf18, 2(vi00) | mulz.xyzw vf26, vf01, vf26
|
||||
sq.xyzw vf19, 3(vi00) | mulz.xyzw vf27, vf01, vf27
|
||||
sq.xyzw vf24, 12(vi00) | nop
|
||||
sq.xyzw vf25, 13(vi00) | nop
|
||||
sq.xyzw vf26, 14(vi00) | nop
|
||||
sq.xyzw vf27, 15(vi00) | nop
|
||||
sq.xyzw vf28, 8(vi00) | nop
|
||||
sq.xyzw vf29, 9(vi00) | nop
|
||||
sq.xyzw vf30, 10(vi00) | nop
|
||||
sq.xyzw vf31, 11(vi00) | nop :e
|
||||
iaddiu vi02, vi00, 0xf0 | nop
|
||||
lq.xyzw vf16, 0(vi00) | nop
|
||||
lq.xyzw vf17, 1(vi00) | nop
|
||||
lq.xyzw vf18, 2(vi00) | nop
|
||||
lq.xyzw vf19, 3(vi00) | nop
|
||||
lq.xyzw vf24, 12(vi00) | nop
|
||||
lq.xyzw vf25, 13(vi00) | nop
|
||||
lq.xyzw vf26, 14(vi00) | nop :e
|
||||
lq.xyzw vf27, 15(vi00) | nop
|
||||
lq.xyzw vf16, 0(vi00) | nop
|
||||
lq.xyzw vf17, 1(vi00) | nop
|
||||
lq.xyzw vf18, 2(vi00) | nop :e
|
||||
lq.xyzw vf19, 3(vi00) | nop
|
||||
lq.xyzw vf24, 4(vi00) | nop
|
||||
lq.xyzw vf25, 5(vi00) | nop
|
||||
lq.xyzw vf26, 6(vi00) | nop :e
|
||||
lq.xyzw vf27, 7(vi00) | nop
|
||||
lq.xyzw vf24, 12(vi00) | mulax.xyzw ACC, vf16, vf02
|
||||
lq.xyzw vf25, 13(vi00) | madday.xyzw ACC, vf17, vf02
|
||||
lq.xyzw vf26, 14(vi00) | maddaz.xyzw ACC, vf18, vf02
|
||||
lq.xyzw vf27, 15(vi00) | msubaw.xyzw ACC, vf19, vf00
|
||||
nop | maddw.xyzw vf04, vf01, vf02
|
||||
nop | mulax.xyzw ACC, vf24, vf02
|
||||
nop | madday.xyzw ACC, vf25, vf02
|
||||
nop | maddaz.xyzw ACC, vf26, vf02 :e
|
||||
fmand vi01, vi02 | maddw.xyzw vf06, vf27, vf00
|
||||
lq.xyzw vf16, 0(vi00) | nop
|
||||
lq.xyzw vf17, 1(vi00) | nop
|
||||
lq.xyzw vf18, 2(vi00) | nop
|
||||
lq.xyzw vf19, 3(vi00) | nop
|
||||
lq.xyzw vf28, 8(vi00) | mulax.xyzw ACC, vf16, vf02
|
||||
lq.xyzw vf29, 9(vi00) | madday.xyzw ACC, vf17, vf02
|
||||
lq.xyzw vf30, 10(vi00) | maddaz.xyzw ACC, vf18, vf02
|
||||
lq.xyzw vf31, 11(vi00) | msubaw.xyzw ACC, vf19, vf00
|
||||
lq.xyzw vf24, 4(vi00) | maddw.xyzw vf04, vf01, vf02
|
||||
lq.xyzw vf25, 5(vi00) | mulax.xyzw ACC, vf28, vf02
|
||||
lq.xyzw vf26, 6(vi00) | madday.xyzw ACC, vf29, vf02
|
||||
lq.xyzw vf27, 7(vi00) | maddaz.xyzw ACC, vf30, vf02
|
||||
fmand vi01, vi02 | maddw.xyzw vf05, vf31, vf00
|
||||
nop | mulax.xyzw ACC, vf24, vf02
|
||||
nop | madday.xyzw ACC, vf25, vf02
|
||||
nop | maddaz.xyzw ACC, vf26, vf02 :e
|
||||
nop | maddw.xyzw vf06, vf27, vf00
|
||||
@@ -0,0 +1,118 @@
|
||||
.word 0x3e0c004
|
||||
.word 0x1e00053
|
||||
.word 0x3e0c805
|
||||
.word 0x2ff
|
||||
.word 0x3e0d006
|
||||
.word 0x2ff
|
||||
.word 0x3e0d807
|
||||
.word 0x2ff
|
||||
.word 0x3e08000
|
||||
.word 0x1f80e1a
|
||||
.word 0x3e08801
|
||||
.word 0x1f90e5a
|
||||
.word 0x3e09002
|
||||
.word 0x1fa0e9a
|
||||
.word 0x3e09803
|
||||
.word 0x1fb0eda
|
||||
.word 0x3e0c00c
|
||||
.word 0x2ff
|
||||
.word 0x3e0c80d
|
||||
.word 0x2ff
|
||||
.word 0x3e0d00e
|
||||
.word 0x2ff
|
||||
.word 0x3e0d80f
|
||||
.word 0x2ff
|
||||
.word 0x3e0e008
|
||||
.word 0x2ff
|
||||
.word 0x3e0e809
|
||||
.word 0x2ff
|
||||
.word 0x3e0f00a
|
||||
.word 0x2ff
|
||||
.word 0x3e0f80b
|
||||
.word 0x400002ff
|
||||
.word 0x100200f0
|
||||
.word 0x2ff
|
||||
.word 0x1f00000
|
||||
.word 0x2ff
|
||||
.word 0x1f10001
|
||||
.word 0x2ff
|
||||
.word 0x1f20002
|
||||
.word 0x2ff
|
||||
.word 0x1f30003
|
||||
.word 0x2ff
|
||||
.word 0x1f8000c
|
||||
.word 0x2ff
|
||||
.word 0x1f9000d
|
||||
.word 0x2ff
|
||||
.word 0x1fa000e
|
||||
.word 0x400002ff
|
||||
.word 0x1fb000f
|
||||
.word 0x2ff
|
||||
.word 0x1f00000
|
||||
.word 0x2ff
|
||||
.word 0x1f10001
|
||||
.word 0x2ff
|
||||
.word 0x1f20002
|
||||
.word 0x400002ff
|
||||
.word 0x1f30003
|
||||
.word 0x2ff
|
||||
.word 0x1f80004
|
||||
.word 0x2ff
|
||||
.word 0x1f90005
|
||||
.word 0x2ff
|
||||
.word 0x1fa0006
|
||||
.word 0x400002ff
|
||||
.word 0x1fb0007
|
||||
.word 0x2ff
|
||||
.word 0x1f8000c
|
||||
.word 0x1e281bc
|
||||
.word 0x1f9000d
|
||||
.word 0x1e288bd
|
||||
.word 0x1fa000e
|
||||
.word 0x1e290be
|
||||
.word 0x1fb000f
|
||||
.word 0x1e098ff
|
||||
.word 0x80000030
|
||||
.word 0x1e2090b
|
||||
.word 0x80000030
|
||||
.word 0x1e2c1bc
|
||||
.word 0x80000030
|
||||
.word 0x1e2c8bd
|
||||
.word 0x80000030
|
||||
.word 0x41e2d0be
|
||||
.word 0x34011000
|
||||
.word 0x1e0d98b
|
||||
.word 0x1f00000
|
||||
.word 0x2ff
|
||||
.word 0x1f10001
|
||||
.word 0x2ff
|
||||
.word 0x1f20002
|
||||
.word 0x2ff
|
||||
.word 0x1f30003
|
||||
.word 0x2ff
|
||||
.word 0x1fc0008
|
||||
.word 0x1e281bc
|
||||
.word 0x1fd0009
|
||||
.word 0x1e288bd
|
||||
.word 0x1fe000a
|
||||
.word 0x1e290be
|
||||
.word 0x1ff000b
|
||||
.word 0x1e098ff
|
||||
.word 0x1f80004
|
||||
.word 0x1e2090b
|
||||
.word 0x1f90005
|
||||
.word 0x1e2e1bc
|
||||
.word 0x1fa0006
|
||||
.word 0x1e2e8bd
|
||||
.word 0x1fb0007
|
||||
.word 0x1e2f0be
|
||||
.word 0x34011000
|
||||
.word 0x1e0f94b
|
||||
.word 0x80000030
|
||||
.word 0x1e2c1bc
|
||||
.word 0x80000030
|
||||
.word 0x1e2c8bd
|
||||
.word 0x80000030
|
||||
.word 0x41e2d0be
|
||||
.word 0x80000030
|
||||
.word 0x1e0d98b
|
||||
@@ -0,0 +1,63 @@
|
||||
nop | mulax.xyzw ACC, vf05, vf01
|
||||
nop | madday.xyzw ACC, vf06, vf01
|
||||
nop | maddaz.xyzw ACC, vf07, vf01
|
||||
nop | maddw.xyzw vf13, vf08, vf01
|
||||
nop | mulax.xyzw ACC, vf05, vf02
|
||||
nop | madday.xyzw ACC, vf06, vf02
|
||||
nop | maddaz.xyzw ACC, vf07, vf02
|
||||
nop | maddw.xyzw vf14, vf08, vf02
|
||||
nop | mulax.xyzw ACC, vf05, vf03
|
||||
nop | madday.xyzw ACC, vf06, vf03
|
||||
nop | maddaz.xyzw ACC, vf07, vf03
|
||||
nop | maddw.xyzw vf15, vf08, vf03
|
||||
nop | mulax.xyzw ACC, vf05, vf04
|
||||
nop | madday.xyzw ACC, vf06, vf04
|
||||
nop | maddaz.xyzw ACC, vf07, vf04
|
||||
nop | maddw.xyzw vf16, vf08, vf04
|
||||
nop | opmula.xyz ACC, vf14, vf15
|
||||
nop | opmsub.xyz vf09, vf15, vf14
|
||||
nop | opmula.xyz ACC, vf15, vf13
|
||||
nop | opmsub.xyz vf10, vf13, vf15
|
||||
nop | opmula.xyz ACC, vf13, vf14
|
||||
nop | mul.xyz vf12, vf13, vf09
|
||||
nop | opmsub.xyz vf11, vf14, vf13
|
||||
nop | mulax.xyzw ACC, vf28, vf13
|
||||
nop | madday.xyzw ACC, vf29, vf13
|
||||
nop | maddaz.xyzw ACC, vf30, vf13
|
||||
nop | maddw.xyzw vf13, vf31, vf13
|
||||
nop | mulax.w ACC, vf00, vf12
|
||||
nop | madday.w ACC, vf00, vf12
|
||||
nop | maddz.w vf12, vf00, vf12
|
||||
nop | mulax.xyzw ACC, vf28, vf14
|
||||
nop | madday.xyzw ACC, vf29, vf14
|
||||
nop | maddaz.xyzw ACC, vf30, vf14
|
||||
div Q, vf00.w, vf12.w | maddw.xyzw vf14, vf31, vf14
|
||||
nop | mulax.xyzw ACC, vf28, vf15
|
||||
nop | madday.xyzw ACC, vf29, vf15
|
||||
nop | maddaz.xyzw ACC, vf30, vf15
|
||||
nop | maddw.xyzw vf15, vf31, vf15
|
||||
nop | mulax.xyzw ACC, vf28, vf16
|
||||
nop | madday.xyzw ACC, vf29, vf16
|
||||
nop | maddaz.xyzw ACC, vf30, vf16
|
||||
nop | maddw.xyzw vf16, vf31, vf16
|
||||
nop | mul.xyzw vf09, vf09, Q
|
||||
nop | mul.xyzw vf10, vf10, Q
|
||||
nop | mul.xyzw vf11, vf11, Q
|
||||
nop | mulax.xyzw ACC, vf25, vf09
|
||||
nop | madday.xyzw ACC, vf26, vf09
|
||||
nop | maddz.xyzw vf09, vf27, vf09
|
||||
nop | mulax.xyzw ACC, vf25, vf10
|
||||
nop | madday.xyzw ACC, vf26, vf10
|
||||
nop | maddz.xyzw vf10, vf27, vf10
|
||||
nop | mulax.xyzw ACC, vf25, vf11
|
||||
nop | madday.xyzw ACC, vf26, vf11 :e
|
||||
nop | maddz.xyzw vf11, vf27, vf11
|
||||
nop | mulax.xyzw ACC, vf01, vf04
|
||||
nop | madday.xyzw ACC, vf02, vf04
|
||||
nop | maddz.xyzw vf07, vf03, vf04
|
||||
nop | mulax.xyzw ACC, vf01, vf05
|
||||
nop | madday.xyzw ACC, vf02, vf05
|
||||
nop | maddz.xyzw vf08, vf03, vf05
|
||||
nop | mulax.xyzw ACC, vf01, vf06
|
||||
nop | madday.xyzw ACC, vf02, vf06 :e
|
||||
nop | maddz.xyzw vf09, vf03, vf06
|
||||
@@ -0,0 +1,126 @@
|
||||
.word 0x80000030
|
||||
.word 0x1e129bc
|
||||
.word 0x80000030
|
||||
.word 0x1e130bd
|
||||
.word 0x80000030
|
||||
.word 0x1e138be
|
||||
.word 0x80000030
|
||||
.word 0x1e1434b
|
||||
.word 0x80000030
|
||||
.word 0x1e229bc
|
||||
.word 0x80000030
|
||||
.word 0x1e230bd
|
||||
.word 0x80000030
|
||||
.word 0x1e238be
|
||||
.word 0x80000030
|
||||
.word 0x1e2438b
|
||||
.word 0x80000030
|
||||
.word 0x1e329bc
|
||||
.word 0x80000030
|
||||
.word 0x1e330bd
|
||||
.word 0x80000030
|
||||
.word 0x1e338be
|
||||
.word 0x80000030
|
||||
.word 0x1e343cb
|
||||
.word 0x80000030
|
||||
.word 0x1e429bc
|
||||
.word 0x80000030
|
||||
.word 0x1e430bd
|
||||
.word 0x80000030
|
||||
.word 0x1e438be
|
||||
.word 0x80000030
|
||||
.word 0x1e4440b
|
||||
.word 0x80000030
|
||||
.word 0x1cf72fe
|
||||
.word 0x80000030
|
||||
.word 0x1ce7a6e
|
||||
.word 0x80000030
|
||||
.word 0x1cd7afe
|
||||
.word 0x80000030
|
||||
.word 0x1cf6aae
|
||||
.word 0x80000030
|
||||
.word 0x1ce6afe
|
||||
.word 0x80000030
|
||||
.word 0x1c96b2a
|
||||
.word 0x80000030
|
||||
.word 0x1cd72ee
|
||||
.word 0x80000030
|
||||
.word 0x1ede1bc
|
||||
.word 0x80000030
|
||||
.word 0x1ede8bd
|
||||
.word 0x80000030
|
||||
.word 0x1edf0be
|
||||
.word 0x80000030
|
||||
.word 0x1edfb4b
|
||||
.word 0x80000030
|
||||
.word 0x2c01bc
|
||||
.word 0x80000030
|
||||
.word 0x2c00bd
|
||||
.word 0x80000030
|
||||
.word 0x2c030a
|
||||
.word 0x80000030
|
||||
.word 0x1eee1bc
|
||||
.word 0x80000030
|
||||
.word 0x1eee8bd
|
||||
.word 0x80000030
|
||||
.word 0x1eef0be
|
||||
.word 0x81ec03bc
|
||||
.word 0x1eefb8b
|
||||
.word 0x80000030
|
||||
.word 0x1efe1bc
|
||||
.word 0x80000030
|
||||
.word 0x1efe8bd
|
||||
.word 0x80000030
|
||||
.word 0x1eff0be
|
||||
.word 0x80000030
|
||||
.word 0x1effbcb
|
||||
.word 0x80000030
|
||||
.word 0x1f0e1bc
|
||||
.word 0x80000030
|
||||
.word 0x1f0e8bd
|
||||
.word 0x80000030
|
||||
.word 0x1f0f0be
|
||||
.word 0x80000030
|
||||
.word 0x1f0fc0b
|
||||
.word 0x80000030
|
||||
.word 0x1e04a5c
|
||||
.word 0x80000030
|
||||
.word 0x1e0529c
|
||||
.word 0x80000030
|
||||
.word 0x1e05adc
|
||||
.word 0x80000030
|
||||
.word 0x1e9c9bc
|
||||
.word 0x80000030
|
||||
.word 0x1e9d0bd
|
||||
.word 0x80000030
|
||||
.word 0x1e9da4a
|
||||
.word 0x80000030
|
||||
.word 0x1eac9bc
|
||||
.word 0x80000030
|
||||
.word 0x1ead0bd
|
||||
.word 0x80000030
|
||||
.word 0x1eada8a
|
||||
.word 0x80000030
|
||||
.word 0x1ebc9bc
|
||||
.word 0x80000030
|
||||
.word 0x41ebd0bd
|
||||
.word 0x80000030
|
||||
.word 0x1ebdaca
|
||||
.word 0x80000030
|
||||
.word 0x1e409bc
|
||||
.word 0x80000030
|
||||
.word 0x1e410bd
|
||||
.word 0x80000030
|
||||
.word 0x1e419ca
|
||||
.word 0x80000030
|
||||
.word 0x1e509bc
|
||||
.word 0x80000030
|
||||
.word 0x1e510bd
|
||||
.word 0x80000030
|
||||
.word 0x1e51a0a
|
||||
.word 0x80000030
|
||||
.word 0x1e609bc
|
||||
.word 0x80000030
|
||||
.word 0x41e610bd
|
||||
.word 0x80000030
|
||||
.word 0x1e61a4a
|
||||
@@ -0,0 +1,90 @@
|
||||
nop | mulaw.xyzw ACC, vf04, vf00
|
||||
nop | maddax.xyzw ACC, vf01, vf05
|
||||
nop | madday.xyzw ACC, vf02, vf05
|
||||
nop | maddz.xyz vf05, vf03, vf05
|
||||
nop | mulaw.xyzw ACC, vf04, vf00
|
||||
nop | maddax.xyzw ACC, vf01, vf06
|
||||
nop | madday.xyzw ACC, vf02, vf06
|
||||
nop | maddz.xyz vf06, vf03, vf06
|
||||
nop | mulaw.xyzw ACC, vf04, vf00
|
||||
nop | maddax.xyzw ACC, vf01, vf07
|
||||
nop | madday.xyzw ACC, vf02, vf07
|
||||
nop | maddz.xyz vf07, vf03, vf07
|
||||
nop | mulaw.xyzw ACC, vf04, vf00
|
||||
nop | maddax.xyzw ACC, vf01, vf08
|
||||
nop | madday.xyzw ACC, vf02, vf08
|
||||
nop | maddz.xyz vf08, vf03, vf08
|
||||
nop | subw.xyz vf09, vf05, vf05
|
||||
nop | subw.xyz vf11, vf06, vf06
|
||||
nop | subw.xyz vf13, vf07, vf07
|
||||
nop | subw.xyz vf15, vf08, vf08
|
||||
nop | addw.xyz vf10, vf05, vf05
|
||||
nop | addw.xyz vf12, vf06, vf06
|
||||
nop | addw.xyz vf14, vf07, vf07
|
||||
nop | addw.xyz vf16, vf08, vf08
|
||||
nop | ftoi0.xyzw vf09, vf09
|
||||
nop | ftoi0.xyzw vf11, vf11
|
||||
nop | ftoi0.xyzw vf13, vf13
|
||||
nop | ftoi0.xyzw vf15, vf15
|
||||
nop | ftoi0.xyzw vf10, vf10
|
||||
nop | ftoi0.xyzw vf12, vf12
|
||||
nop | ftoi0.xyzw vf14, vf14 :e
|
||||
nop | ftoi0.xyzw vf16, vf16
|
||||
nop | itof0.xyzw vf20, vf20
|
||||
nop | itof12.xyzw vf17, vf17
|
||||
nop | itof12.xyzw vf18, vf18
|
||||
nop | itof12.xyzw vf19, vf19
|
||||
nop | add.xyz vf20, vf20, vf23
|
||||
nop | itof12.xyzw vf21, vf21
|
||||
nop | mulax.xyzw ACC, vf01, vf20
|
||||
nop | madday.xyzw ACC, vf02, vf20
|
||||
nop | maddaz.xyzw ACC, vf03, vf20
|
||||
nop | maddw.xyz vf20, vf04, vf00
|
||||
nop | mulax.xyzw ACC, vf01, vf17
|
||||
nop | madday.xyzw ACC, vf02, vf17
|
||||
nop | maddaz.xyzw ACC, vf03, vf17
|
||||
nop | maddx.xyz vf17, vf04, vf00
|
||||
nop | mulax.xyzw ACC, vf01, vf18
|
||||
nop | madday.xyzw ACC, vf02, vf18
|
||||
nop | maddaz.xyzw ACC, vf03, vf18
|
||||
nop | maddx.xyz vf18, vf04, vf00
|
||||
nop | mulax.xyzw ACC, vf01, vf19
|
||||
nop | madday.xyzw ACC, vf02, vf19
|
||||
nop | maddaz.xyzw ACC, vf03, vf19 :e
|
||||
nop | maddx.xyz vf19, vf04, vf00
|
||||
nop | mulaw.xyzw ACC, vf20, vf00
|
||||
nop | maddax.xyzw ACC, vf17, vf05
|
||||
nop | madday.xyzw ACC, vf18, vf05
|
||||
nop | maddz.xyzw vf09, vf19, vf05
|
||||
nop | mulaw.xyzw ACC, vf20, vf00
|
||||
nop | maddax.xyzw ACC, vf17, vf06
|
||||
nop | madday.xyzw ACC, vf18, vf06
|
||||
nop | maddz.xyzw vf11, vf19, vf06
|
||||
nop | mulaw.xyzw ACC, vf20, vf00
|
||||
nop | maddax.xyzw ACC, vf17, vf07
|
||||
nop | madday.xyzw ACC, vf18, vf07
|
||||
nop | maddz.xyzw vf13, vf19, vf07
|
||||
nop | mulaw.xyzw ACC, vf20, vf00
|
||||
nop | maddax.xyzw ACC, vf17, vf08
|
||||
nop | madday.xyzw ACC, vf18, vf08
|
||||
nop | maddz.xyzw vf15, vf19, vf08
|
||||
nop | mulw.x vf22, vf21, vf05
|
||||
nop | mulw.y vf22, vf21, vf06
|
||||
nop | mulw.z vf22, vf21, vf07
|
||||
nop | mulw.w vf22, vf21, vf08
|
||||
nop | addx.xyz vf10, vf09, vf22
|
||||
nop | subx.xyz vf09, vf09, vf22
|
||||
nop | addy.xyz vf12, vf11, vf22
|
||||
nop | suby.xyz vf11, vf11, vf22
|
||||
nop | addz.xyz vf14, vf13, vf22
|
||||
nop | subz.xyz vf13, vf13, vf22
|
||||
nop | addw.xyz vf16, vf15, vf22
|
||||
nop | subw.xyz vf15, vf15, vf22
|
||||
nop | ftoi0.xyzw vf10, vf10
|
||||
nop | ftoi0.xyzw vf09, vf09
|
||||
nop | ftoi0.xyzw vf12, vf12
|
||||
nop | ftoi0.xyzw vf11, vf11
|
||||
nop | ftoi0.xyzw vf14, vf14
|
||||
nop | ftoi0.xyzw vf13, vf13
|
||||
nop | ftoi0.xyzw vf16, vf16 :e
|
||||
nop | ftoi0.xyzw vf15, vf15
|
||||
@@ -0,0 +1,180 @@
|
||||
.word 0x80000030
|
||||
.word 0x1e021bf
|
||||
.word 0x80000030
|
||||
.word 0x1e508bc
|
||||
.word 0x80000030
|
||||
.word 0x1e510bd
|
||||
.word 0x80000030
|
||||
.word 0x1c5194a
|
||||
.word 0x80000030
|
||||
.word 0x1e021bf
|
||||
.word 0x80000030
|
||||
.word 0x1e608bc
|
||||
.word 0x80000030
|
||||
.word 0x1e610bd
|
||||
.word 0x80000030
|
||||
.word 0x1c6198a
|
||||
.word 0x80000030
|
||||
.word 0x1e021bf
|
||||
.word 0x80000030
|
||||
.word 0x1e708bc
|
||||
.word 0x80000030
|
||||
.word 0x1e710bd
|
||||
.word 0x80000030
|
||||
.word 0x1c719ca
|
||||
.word 0x80000030
|
||||
.word 0x1e021bf
|
||||
.word 0x80000030
|
||||
.word 0x1e808bc
|
||||
.word 0x80000030
|
||||
.word 0x1e810bd
|
||||
.word 0x80000030
|
||||
.word 0x1c81a0a
|
||||
.word 0x80000030
|
||||
.word 0x1c52a47
|
||||
.word 0x80000030
|
||||
.word 0x1c632c7
|
||||
.word 0x80000030
|
||||
.word 0x1c73b47
|
||||
.word 0x80000030
|
||||
.word 0x1c843c7
|
||||
.word 0x80000030
|
||||
.word 0x1c52a83
|
||||
.word 0x80000030
|
||||
.word 0x1c63303
|
||||
.word 0x80000030
|
||||
.word 0x1c73b83
|
||||
.word 0x80000030
|
||||
.word 0x1c84403
|
||||
.word 0x80000030
|
||||
.word 0x1e9497c
|
||||
.word 0x80000030
|
||||
.word 0x1eb597c
|
||||
.word 0x80000030
|
||||
.word 0x1ed697c
|
||||
.word 0x80000030
|
||||
.word 0x1ef797c
|
||||
.word 0x80000030
|
||||
.word 0x1ea517c
|
||||
.word 0x80000030
|
||||
.word 0x1ec617c
|
||||
.word 0x80000030
|
||||
.word 0x41ee717c
|
||||
.word 0x80000030
|
||||
.word 0x1f0817c
|
||||
.word 0x80000030
|
||||
.word 0x1f4a13c
|
||||
.word 0x80000030
|
||||
.word 0x1f1893e
|
||||
.word 0x80000030
|
||||
.word 0x1f2913e
|
||||
.word 0x80000030
|
||||
.word 0x1f3993e
|
||||
.word 0x80000030
|
||||
.word 0x1d7a528
|
||||
.word 0x80000030
|
||||
.word 0x1f5a93e
|
||||
.word 0x80000030
|
||||
.word 0x1f409bc
|
||||
.word 0x80000030
|
||||
.word 0x1f410bd
|
||||
.word 0x80000030
|
||||
.word 0x1f418be
|
||||
.word 0x80000030
|
||||
.word 0x1c0250b
|
||||
.word 0x80000030
|
||||
.word 0x1f109bc
|
||||
.word 0x80000030
|
||||
.word 0x1f110bd
|
||||
.word 0x80000030
|
||||
.word 0x1f118be
|
||||
.word 0x80000030
|
||||
.word 0x1c02448
|
||||
.word 0x80000030
|
||||
.word 0x1f209bc
|
||||
.word 0x80000030
|
||||
.word 0x1f210bd
|
||||
.word 0x80000030
|
||||
.word 0x1f218be
|
||||
.word 0x80000030
|
||||
.word 0x1c02488
|
||||
.word 0x80000030
|
||||
.word 0x1f309bc
|
||||
.word 0x80000030
|
||||
.word 0x1f310bd
|
||||
.word 0x80000030
|
||||
.word 0x41f318be
|
||||
.word 0x80000030
|
||||
.word 0x1c024c8
|
||||
.word 0x80000030
|
||||
.word 0x1e0a1bf
|
||||
.word 0x80000030
|
||||
.word 0x1e588bc
|
||||
.word 0x80000030
|
||||
.word 0x1e590bd
|
||||
.word 0x80000030
|
||||
.word 0x1e59a4a
|
||||
.word 0x80000030
|
||||
.word 0x1e0a1bf
|
||||
.word 0x80000030
|
||||
.word 0x1e688bc
|
||||
.word 0x80000030
|
||||
.word 0x1e690bd
|
||||
.word 0x80000030
|
||||
.word 0x1e69aca
|
||||
.word 0x80000030
|
||||
.word 0x1e0a1bf
|
||||
.word 0x80000030
|
||||
.word 0x1e788bc
|
||||
.word 0x80000030
|
||||
.word 0x1e790bd
|
||||
.word 0x80000030
|
||||
.word 0x1e79b4a
|
||||
.word 0x80000030
|
||||
.word 0x1e0a1bf
|
||||
.word 0x80000030
|
||||
.word 0x1e888bc
|
||||
.word 0x80000030
|
||||
.word 0x1e890bd
|
||||
.word 0x80000030
|
||||
.word 0x1e89bca
|
||||
.word 0x80000030
|
||||
.word 0x105ad9b
|
||||
.word 0x80000030
|
||||
.word 0x86ad9b
|
||||
.word 0x80000030
|
||||
.word 0x47ad9b
|
||||
.word 0x80000030
|
||||
.word 0x28ad9b
|
||||
.word 0x80000030
|
||||
.word 0x1d64a80
|
||||
.word 0x80000030
|
||||
.word 0x1d64a44
|
||||
.word 0x80000030
|
||||
.word 0x1d65b01
|
||||
.word 0x80000030
|
||||
.word 0x1d65ac5
|
||||
.word 0x80000030
|
||||
.word 0x1d66b82
|
||||
.word 0x80000030
|
||||
.word 0x1d66b46
|
||||
.word 0x80000030
|
||||
.word 0x1d67c03
|
||||
.word 0x80000030
|
||||
.word 0x1d67bc7
|
||||
.word 0x80000030
|
||||
.word 0x1ea517c
|
||||
.word 0x80000030
|
||||
.word 0x1e9497c
|
||||
.word 0x80000030
|
||||
.word 0x1ec617c
|
||||
.word 0x80000030
|
||||
.word 0x1eb597c
|
||||
.word 0x80000030
|
||||
.word 0x1ee717c
|
||||
.word 0x80000030
|
||||
.word 0x1ed697c
|
||||
.word 0x80000030
|
||||
.word 0x41f0817c
|
||||
.word 0x80000030
|
||||
.word 0x1ef797c
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,295 @@
|
||||
move.xyzw vf21, vf17 | mulax.xyzw ACC, vf10, vf01
|
||||
move.xyzw vf22, vf18 | madday.xyzw ACC, vf11, vf01
|
||||
move.xyzw vf23, vf19 | maddz.xyzw vf01, vf12, vf01
|
||||
move.xyzw vf24, vf20 | mulax.xyzw ACC, vf10, vf02
|
||||
nop | itof0.xyzw vf17, vf05
|
||||
nop | itof0.xyzw vf18, vf06
|
||||
nop | itof0.xyzw vf19, vf07
|
||||
nop | itof0.xyzw vf20, vf08
|
||||
nop | madday.xyzw ACC, vf11, vf02
|
||||
nop | maddz.xyzw vf02, vf12, vf02
|
||||
nop | mulax.xyzw ACC, vf10, vf03
|
||||
nop | madday.xyzw ACC, vf11, vf03
|
||||
nop | maddz.xyzw vf03, vf12, vf03
|
||||
nop | mulax.xyzw ACC, vf10, vf04
|
||||
nop | madday.xyzw ACC, vf11, vf04
|
||||
nop | maddz.xyzw vf04, vf12, vf04
|
||||
nop | maxx.xyzw vf01, vf01, vf00
|
||||
nop | maxx.xyzw vf02, vf02, vf00
|
||||
nop | maxx.xyzw vf03, vf03, vf00
|
||||
nop | maxx.xyzw vf04, vf04, vf00
|
||||
nop | mulaw.xyzw ACC, vf13, vf00
|
||||
nop | maddax.xyzw ACC, vf14, vf01
|
||||
nop | madday.xyzw ACC, vf15, vf01
|
||||
nop | maddz.xyzw vf01, vf16, vf01
|
||||
nop | mulaw.xyzw ACC, vf13, vf00
|
||||
nop | maddax.xyzw ACC, vf14, vf02
|
||||
nop | madday.xyzw ACC, vf15, vf02
|
||||
nop | maddz.xyzw vf02, vf16, vf02
|
||||
nop | mulaw.xyzw ACC, vf13, vf00
|
||||
nop | maddax.xyzw ACC, vf14, vf03
|
||||
nop | madday.xyzw ACC, vf15, vf03
|
||||
nop | maddz.xyzw vf03, vf16, vf03
|
||||
nop | mulaw.xyzw ACC, vf13, vf00
|
||||
nop | maddax.xyzw ACC, vf14, vf04
|
||||
nop | madday.xyzw ACC, vf15, vf04
|
||||
nop | maddz.xyzw vf04, vf16, vf04
|
||||
nop | mul.xyzw vf17, vf17, vf01
|
||||
nop | mul.xyzw vf18, vf18, vf02
|
||||
nop | mul.xyzw vf19, vf19, vf03
|
||||
nop | mul.xyzw vf20, vf20, vf04
|
||||
nop | minix.xyzw vf17, vf17, vf09
|
||||
nop | minix.xyzw vf18, vf18, vf09
|
||||
nop | minix.xyzw vf19, vf19, vf09
|
||||
nop | minix.xyzw vf20, vf20, vf09
|
||||
nop | ftoi0.xyzw vf17, vf17
|
||||
nop | ftoi0.xyzw vf18, vf18
|
||||
nop | ftoi0.xyzw vf19, vf19 :e
|
||||
nop | ftoi0.xyzw vf20, vf20
|
||||
nop | mulx.xyzw vf13, vf09, vf31
|
||||
nop | subw.z vf21, vf21, vf00
|
||||
nop | addy.x vf29, vf29, vf29
|
||||
nop | mulx.xyz vf08, vf08, vf30
|
||||
nop | addw.xy vf05, vf05, vf31
|
||||
nop | mul.xyz vf30, vf21, vf13
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | add.xyz vf08, vf08, vf16
|
||||
move.xyzw vf28, vf27 | ftoi12.xy vf17, vf05
|
||||
move.xyzw vf02, vf22 | addy.x vf30, vf30, vf30
|
||||
rsqrt Q, vf31.z, vf29.x | mul.xyz vf06, vf06, Q
|
||||
nop | mul.xyz vf29, vf08, vf08
|
||||
nop | mulx.xyz vf01, vf21, vf28
|
||||
nop | addz.x vf30, vf30, vf30
|
||||
nop | mulx.xyzw vf14, vf10, vf31
|
||||
nop | subw.z vf02, vf02, vf00
|
||||
nop | addy.x vf29, vf29, vf29
|
||||
nop | mulx.xyz vf01, vf01, vf30
|
||||
nop | addw.xy vf06, vf06, vf31
|
||||
nop | mul.xyz vf30, vf02, vf14
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | add.xyz vf01, vf01, vf13
|
||||
nop | ftoi12.xy vf18, vf06
|
||||
nop | addy.x vf30, vf30, vf30
|
||||
rsqrt Q, vf31.z, vf29.x | mul.xyz vf07, vf07, Q
|
||||
move.xyzw vf03, vf23 | mul.xyz vf29, vf01, vf01
|
||||
nop | muly.xyz vf02, vf02, vf28
|
||||
nop | addz.x vf30, vf30, vf30
|
||||
nop | mulx.xyzw vf15, vf11, vf31
|
||||
nop | subw.z vf03, vf03, vf00
|
||||
nop | addy.x vf29, vf29, vf29
|
||||
nop | mulx.xyz vf02, vf02, vf30
|
||||
nop | addw.xy vf07, vf07, vf31
|
||||
nop | mul.xyz vf30, vf03, vf15
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | add.xyz vf02, vf02, vf14
|
||||
nop | ftoi12.xy vf19, vf07
|
||||
nop | addy.x vf30, vf30, vf30
|
||||
rsqrt Q, vf31.z, vf29.x | mul.xyz vf08, vf08, Q
|
||||
move.xyzw vf04, vf24 | mul.xyz vf29, vf02, vf02
|
||||
nop | mulz.xyz vf03, vf03, vf28
|
||||
nop | addz.x vf30, vf30, vf30
|
||||
nop | mulx.xyzw vf16, vf12, vf31
|
||||
nop | subw.z vf04, vf04, vf00
|
||||
nop | addy.x vf29, vf29, vf29
|
||||
nop | mulx.xyz vf03, vf03, vf30
|
||||
nop | addw.xy vf08, vf08, vf31
|
||||
nop | mul.xyz vf30, vf04, vf16
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | add.xyz vf03, vf03, vf15
|
||||
nop | ftoi12.xy vf20, vf08
|
||||
nop | addy.x vf30, vf30, vf30
|
||||
rsqrt Q, vf31.z, vf29.x | mul.xyz vf05, vf01, Q
|
||||
move.xyzw vf06, vf02 | mul.xyz vf29, vf03, vf03
|
||||
move.xyzw vf07, vf03 | mulw.xyz vf08, vf04, vf28 :e
|
||||
nop | addz.x vf30, vf30, vf30
|
||||
iaddi vi02, vi00, 0x0 | nop
|
||||
iadd vi03, vi02, vi08 | nop
|
||||
iaddiu vi03, vi03, 0x10 | nop
|
||||
iadd vi01, vi03, vi09 | nop
|
||||
iadd vi01, vi01, vi09 | nop
|
||||
iaddiu vi01, vi01, 0x10 | nop
|
||||
iaddi vi10, vi00, 0x0 | nop
|
||||
ior vi11, vi03, vi00 | nop
|
||||
ior vi12, vi01, vi00 | nop :e
|
||||
iadd vi13, vi01, vi08 | nop
|
||||
nop | itof12.xyzw vf09, vf05
|
||||
nop | itof12.xyzw vf10, vf06
|
||||
nop | itof12.xyzw vf11, vf07
|
||||
nop | itof12.xyzw vf12, vf08
|
||||
sqi.xyzw vf09, vi01 | nop
|
||||
sqi.xyzw vf10, vi01 | nop
|
||||
sqi.xyzw vf11, vi01 | nop :e
|
||||
sqi.xyzw vf12, vi01 | nop
|
||||
mr32.w vf17, vf13 | itof0.xyz vf09, vf01
|
||||
mr32.w vf18, vf14 | itof0.xyz vf10, vf02
|
||||
mr32.w vf19, vf15 | itof0.xyz vf11, vf03
|
||||
mr32.w vf20, vf16 | itof0.xyz vf12, vf04
|
||||
move.w vf09, vf17 | nop
|
||||
move.w vf10, vf18 | nop
|
||||
move.w vf11, vf19 | nop
|
||||
move.w vf12, vf20 | nop
|
||||
sqi.xyzw vf09, vi02 | nop
|
||||
sqi.xyzw vf10, vi02 | nop
|
||||
sqi.xyzw vf11, vi02 | nop :e
|
||||
sqi.xyzw vf12, vi02 | nop
|
||||
mr32.w vf17, vf13 | itof0.xyz vf09, vf01
|
||||
mr32.w vf18, vf14 | itof0.xyz vf10, vf02
|
||||
nop | itof0.xyz vf11, vf03
|
||||
nop | nop
|
||||
move.w vf09, vf17 | nop
|
||||
move.w vf10, vf18 | nop
|
||||
nop | nop
|
||||
iaddi vi03, vi03, 0x2 | nop
|
||||
sqi.xyzw vf09, vi02 | nop
|
||||
sq.xyzw vf10, -2(vi03) | nop :e
|
||||
sq.xyzw vf11, -1(vi03) | nop
|
||||
mr32.w vf17, vf13 | itof0.xyz vf09, vf01
|
||||
mr32.w vf18, vf14 | itof0.xyz vf10, vf02
|
||||
mr32.w vf19, vf15 | itof0.xyz vf11, vf03
|
||||
nop | itof0.xyz vf12, vf04
|
||||
move.w vf09, vf17 | nop
|
||||
move.w vf10, vf18 | nop
|
||||
move.w vf11, vf19 | nop
|
||||
iaddi vi03, vi03, 0x2 | nop
|
||||
sqi.xyzw vf09, vi02 | nop
|
||||
sqi.xyzw vf10, vi02 | nop
|
||||
sq.xyzw vf11, -2(vi03) | nop :e
|
||||
sq.xyzw vf12, -1(vi03) | nop
|
||||
mr32.w vf17, vf13 | itof0.xyz vf09, vf01
|
||||
mr32.w vf18, vf14 | itof0.xyz vf10, vf02
|
||||
mr32.w vf19, vf15 | itof0.xyz vf11, vf03
|
||||
nop | nop
|
||||
move.w vf09, vf17 | nop
|
||||
move.w vf10, vf18 | nop
|
||||
move.w vf11, vf19 | nop
|
||||
nop | nop
|
||||
sqi.xyzw vf09, vi02 | nop
|
||||
sqi.xyzw vf10, vi02 | nop :e
|
||||
sqi.xyzw vf11, vi02 | nop
|
||||
mr32.w vf17, vf13 | itof0.xyz vf09, vf01
|
||||
mr32.w vf19, vf14 | itof0.xyz vf10, vf02
|
||||
nop | itof0.xyz vf11, vf03
|
||||
iaddi vi03, vi03, 0x4 | itof0.xyz vf12, vf04
|
||||
move.w vf09, vf17 | nop
|
||||
move.w vf11, vf19 | nop
|
||||
sq.xyz vf10, -3(vi03) | nop
|
||||
sq.xyz vf12, -1(vi03) | nop
|
||||
sq.xyzw vf09, -4(vi03) | nop :e
|
||||
sq.xyzw vf11, -2(vi03) | nop
|
||||
ior vi02, vi10, vi00 | nop
|
||||
ior vi01, vi12, vi00 | nop
|
||||
lqi.xyzw vf05, vi02 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
lqi.xyzw vf09, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
move.xyzw vf19, vf21 | maddax.xyzw ACC, vf01, vf05
|
||||
move.xyzw vf16, vf22 | madday.xyzw ACC, vf02, vf05
|
||||
move.xyzw vf20, vf23 | maddz.xyz vf13, vf03, vf05
|
||||
lqi.xyzw vf06, vi02 | mulax.xyzw ACC, vf01, vf09
|
||||
move.xyzw vf15, vf24 | madday.xyzw ACC, vf02, vf09
|
||||
nop | maddz.xyzw vf17, vf03, vf09
|
||||
lqi.xyzw vf10, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
move.w vf13, vf05 | maddax.xyzw ACC, vf01, vf06
|
||||
nop | madday.xyzw ACC, vf02, vf06
|
||||
nop | maddz.xyz vf14, vf03, vf06
|
||||
lqi.xyzw vf07, vi02 | mulax.xyzw ACC, vf01, vf10
|
||||
nop | madday.xyzw ACC, vf02, vf10
|
||||
nop | maddz.xyzw vf18, vf03, vf10
|
||||
lqi.xyzw vf11, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
move.w vf14, vf06 | maddax.xyzw ACC, vf01, vf07
|
||||
nop | madday.xyzw ACC, vf02, vf07
|
||||
nop | maddz.xyz vf24, vf03, vf07
|
||||
lqi.xyzw vf08, vi02 | mulax.xyzw ACC, vf01, vf11
|
||||
nop | madday.xyzw ACC, vf02, vf11
|
||||
nop | maddz.xyzw vf21, vf03, vf11
|
||||
lqi.xyzw vf12, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
move.w vf24, vf07 | maddax.xyzw ACC, vf01, vf08
|
||||
nop | madday.xyzw ACC, vf02, vf08
|
||||
nop | maddz.xyz vf22, vf03, vf08
|
||||
lqi.xyzw vf05, vi02 | mulax.xyzw ACC, vf01, vf12
|
||||
move.w vf22, vf08 | madday.xyzw ACC, vf02, vf12 :e
|
||||
nop | maddz.xyzw vf23, vf03, vf12
|
||||
move.xyzw vf19, vf21 | nop
|
||||
move.xyzw vf16, vf22 | nop
|
||||
move.xyzw vf20, vf23 | nop :e
|
||||
move.xyzw vf15, vf24 | nop
|
||||
ior vi03, vi11, vi00 | nop
|
||||
ior vi01, vi13, vi00 | nop
|
||||
lqi.xyzw vf05, vi03 | nop
|
||||
lqi.xyzw vf25, vi03 | nop
|
||||
lqi.xyzw vf09, vi01 | nop
|
||||
nop | nop
|
||||
move.xyzw vf16, vf21 | mulax.xyz ACC, vf05, vf29
|
||||
nop | maddw.xyz vf30, vf25, vf00
|
||||
nop | mulax.xyzw ACC, vf01, vf09
|
||||
nop | madday.xyzw ACC, vf02, vf09
|
||||
move.w vf13, vf05 | maddz.xyz vf17, vf03, vf09
|
||||
lqi.xyzw vf06, vi03 | mulaw.xyzw ACC, vf04, vf00
|
||||
lqi.xyzw vf26, vi03 | maddax.xyzw ACC, vf01, vf30
|
||||
lqi.xyzw vf10, vi01 | madday.xyzw ACC, vf02, vf30
|
||||
nop | maddz.xyz vf13, vf03, vf30
|
||||
nop | mulax.xyz ACC, vf06, vf29
|
||||
nop | maddw.xyz vf30, vf26, vf00
|
||||
nop | mulax.xyzw ACC, vf01, vf10
|
||||
nop | madday.xyzw ACC, vf02, vf10
|
||||
move.w vf14, vf06 | maddz.xyz vf18, vf03, vf10
|
||||
lqi.xyzw vf07, vi03 | mulaw.xyzw ACC, vf04, vf00
|
||||
lqi.xyzw vf27, vi03 | maddax.xyzw ACC, vf01, vf30
|
||||
lqi.xyzw vf11, vi01 | madday.xyzw ACC, vf02, vf30
|
||||
nop | maddz.xyz vf14, vf03, vf30
|
||||
nop | mulax.xyz ACC, vf07, vf29
|
||||
nop | maddw.xyz vf30, vf27, vf00
|
||||
nop | mulax.xyzw ACC, vf01, vf11
|
||||
nop | madday.xyzw ACC, vf02, vf11
|
||||
move.w vf15, vf07 | maddz.xyz vf19, vf03, vf11
|
||||
lqi.xyzw vf08, vi03 | mulaw.xyzw ACC, vf04, vf00
|
||||
lqi.xyzw vf28, vi03 | maddax.xyzw ACC, vf01, vf30
|
||||
lqi.xyzw vf12, vi01 | madday.xyzw ACC, vf02, vf30
|
||||
nop | maddz.xyz vf15, vf03, vf30
|
||||
nop | mulax.xyz ACC, vf08, vf29
|
||||
nop | maddw.xyz vf30, vf28, vf00
|
||||
nop | mulax.xyzw ACC, vf01, vf12
|
||||
nop | madday.xyzw ACC, vf02, vf12
|
||||
move.w vf21, vf08 | maddz.xyz vf20, vf03, vf12
|
||||
lqi.xyzw vf05, vi03 | mulaw.xyzw ACC, vf04, vf00
|
||||
lqi.xyzw vf25, vi03 | maddax.xyzw ACC, vf01, vf30
|
||||
lqi.xyzw vf09, vi01 | madday.xyzw ACC, vf02, vf30 :e
|
||||
nop | maddz.xyz vf21, vf03, vf30
|
||||
move.xyzw vf16, vf21 | nop :e
|
||||
nop | nop
|
||||
ior vi01, vi13, vi00 | nop
|
||||
lqi.xyzw vf09, vi01 | nop
|
||||
ior vi03, vi11, vi00 | nop
|
||||
lq.xyzw vf05, 1(vi03) | nop
|
||||
iaddi vi03, vi03, 0x2 | nop
|
||||
move.xyzw vf15, vf21 | mulax.xyzw ACC, vf01, vf09
|
||||
move.xyzw vf20, vf22 | madday.xyzw ACC, vf02, vf09
|
||||
lq.w vf13, -2(vi03) | maddz.xyz vf17, vf03, vf09
|
||||
lqi.xyzw vf10, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
move.xyzw vf16, vf23 | maddax.xyzw ACC, vf01, vf05
|
||||
lq.xyzw vf06, 1(vi03) | madday.xyzw ACC, vf02, vf05
|
||||
iaddi vi03, vi03, 0x2 | maddz.xyz vf13, vf03, vf05
|
||||
nop | mulax.xyzw ACC, vf01, vf10
|
||||
nop | madday.xyzw ACC, vf02, vf10
|
||||
lq.w vf14, -2(vi03) | maddz.xyz vf18, vf03, vf10
|
||||
lqi.xyzw vf11, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
nop | maddax.xyzw ACC, vf01, vf06
|
||||
lq.xyzw vf07, 1(vi03) | madday.xyzw ACC, vf02, vf06
|
||||
iaddi vi03, vi03, 0x2 | maddz.xyz vf14, vf03, vf06
|
||||
nop | mulax.xyzw ACC, vf01, vf11
|
||||
nop | madday.xyzw ACC, vf02, vf11
|
||||
lq.w vf21, -2(vi03) | maddz.xyz vf19, vf03, vf11
|
||||
lqi.xyzw vf12, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
nop | maddax.xyzw ACC, vf01, vf07
|
||||
lq.xyzw vf08, 1(vi03) | madday.xyzw ACC, vf02, vf07
|
||||
iaddi vi03, vi03, 0x2 | maddz.xyz vf21, vf03, vf07
|
||||
nop | mulax.xyzw ACC, vf01, vf12
|
||||
nop | madday.xyzw ACC, vf02, vf12
|
||||
lq.w vf23, -2(vi03) | maddz.xyz vf22, vf03, vf12
|
||||
lqi.xyzw vf09, vi01 | mulaw.xyzw ACC, vf04, vf00
|
||||
nop | maddax.xyzw ACC, vf01, vf08
|
||||
lq.xyzw vf05, 1(vi03) | madday.xyzw ACC, vf02, vf08 :e
|
||||
iaddi vi03, vi03, 0x2 | maddz.xyz vf23, vf03, vf08
|
||||
move.xyzw vf15, vf21 | nop
|
||||
move.xyzw vf20, vf22 | nop :e
|
||||
move.xyzw vf16, vf23 | nop
|
||||
@@ -0,0 +1,591 @@
|
||||
.word 0x81f58b3c
|
||||
.word 0x1e151bc
|
||||
.word 0x81f6933c
|
||||
.word 0x1e158bd
|
||||
.word 0x81f79b3c
|
||||
.word 0x1e1604a
|
||||
.word 0x81f8a33c
|
||||
.word 0x1e251bc
|
||||
.word 0x80000030
|
||||
.word 0x1f1293c
|
||||
.word 0x80000030
|
||||
.word 0x1f2313c
|
||||
.word 0x80000030
|
||||
.word 0x1f3393c
|
||||
.word 0x80000030
|
||||
.word 0x1f4413c
|
||||
.word 0x80000030
|
||||
.word 0x1e258bd
|
||||
.word 0x80000030
|
||||
.word 0x1e2608a
|
||||
.word 0x80000030
|
||||
.word 0x1e351bc
|
||||
.word 0x80000030
|
||||
.word 0x1e358bd
|
||||
.word 0x80000030
|
||||
.word 0x1e360ca
|
||||
.word 0x80000030
|
||||
.word 0x1e451bc
|
||||
.word 0x80000030
|
||||
.word 0x1e458bd
|
||||
.word 0x80000030
|
||||
.word 0x1e4610a
|
||||
.word 0x80000030
|
||||
.word 0x1e00850
|
||||
.word 0x80000030
|
||||
.word 0x1e01090
|
||||
.word 0x80000030
|
||||
.word 0x1e018d0
|
||||
.word 0x80000030
|
||||
.word 0x1e02110
|
||||
.word 0x80000030
|
||||
.word 0x1e069bf
|
||||
.word 0x80000030
|
||||
.word 0x1e170bc
|
||||
.word 0x80000030
|
||||
.word 0x1e178bd
|
||||
.word 0x80000030
|
||||
.word 0x1e1804a
|
||||
.word 0x80000030
|
||||
.word 0x1e069bf
|
||||
.word 0x80000030
|
||||
.word 0x1e270bc
|
||||
.word 0x80000030
|
||||
.word 0x1e278bd
|
||||
.word 0x80000030
|
||||
.word 0x1e2808a
|
||||
.word 0x80000030
|
||||
.word 0x1e069bf
|
||||
.word 0x80000030
|
||||
.word 0x1e370bc
|
||||
.word 0x80000030
|
||||
.word 0x1e378bd
|
||||
.word 0x80000030
|
||||
.word 0x1e380ca
|
||||
.word 0x80000030
|
||||
.word 0x1e069bf
|
||||
.word 0x80000030
|
||||
.word 0x1e470bc
|
||||
.word 0x80000030
|
||||
.word 0x1e478bd
|
||||
.word 0x80000030
|
||||
.word 0x1e4810a
|
||||
.word 0x80000030
|
||||
.word 0x1e18c6a
|
||||
.word 0x80000030
|
||||
.word 0x1e294aa
|
||||
.word 0x80000030
|
||||
.word 0x1e39cea
|
||||
.word 0x80000030
|
||||
.word 0x1e4a52a
|
||||
.word 0x80000030
|
||||
.word 0x1e98c54
|
||||
.word 0x80000030
|
||||
.word 0x1e99494
|
||||
.word 0x80000030
|
||||
.word 0x1e99cd4
|
||||
.word 0x80000030
|
||||
.word 0x1e9a514
|
||||
.word 0x80000030
|
||||
.word 0x1f1897c
|
||||
.word 0x80000030
|
||||
.word 0x1f2917c
|
||||
.word 0x80000030
|
||||
.word 0x41f3997c
|
||||
.word 0x80000030
|
||||
.word 0x1f4a17c
|
||||
.word 0x80000030
|
||||
.word 0x1ff4b58
|
||||
.word 0x80000030
|
||||
.word 0x40ad47
|
||||
.word 0x80000030
|
||||
.word 0x11def41
|
||||
.word 0x80000030
|
||||
.word 0x1de4218
|
||||
.word 0x80000030
|
||||
.word 0x19f2943
|
||||
.word 0x80000030
|
||||
.word 0x1cdafaa
|
||||
.word 0x80000030
|
||||
.word 0x11def42
|
||||
.word 0x80000030
|
||||
.word 0x1d04228
|
||||
.word 0x81fcdb3c
|
||||
.word 0x191297e
|
||||
.word 0x81e2b33c
|
||||
.word 0x11ef781
|
||||
.word 0x805dfbbe
|
||||
.word 0x1c0319c
|
||||
.word 0x80000030
|
||||
.word 0x1c8476a
|
||||
.word 0x80000030
|
||||
.word 0x1dca858
|
||||
.word 0x80000030
|
||||
.word 0x11ef782
|
||||
.word 0x80000030
|
||||
.word 0x1ff5398
|
||||
.word 0x80000030
|
||||
.word 0x401087
|
||||
.word 0x80000030
|
||||
.word 0x11def41
|
||||
.word 0x80000030
|
||||
.word 0x1de0858
|
||||
.word 0x80000030
|
||||
.word 0x19f3183
|
||||
.word 0x80000030
|
||||
.word 0x1ce17aa
|
||||
.word 0x80000030
|
||||
.word 0x11def42
|
||||
.word 0x80000030
|
||||
.word 0x1cd0868
|
||||
.word 0x80000030
|
||||
.word 0x192317e
|
||||
.word 0x80000030
|
||||
.word 0x11ef781
|
||||
.word 0x805dfbbe
|
||||
.word 0x1c039dc
|
||||
.word 0x81e3bb3c
|
||||
.word 0x1c10f6a
|
||||
.word 0x80000030
|
||||
.word 0x1dc1099
|
||||
.word 0x80000030
|
||||
.word 0x11ef782
|
||||
.word 0x80000030
|
||||
.word 0x1ff5bd8
|
||||
.word 0x80000030
|
||||
.word 0x4018c7
|
||||
.word 0x80000030
|
||||
.word 0x11def41
|
||||
.word 0x80000030
|
||||
.word 0x1de1098
|
||||
.word 0x80000030
|
||||
.word 0x19f39c3
|
||||
.word 0x80000030
|
||||
.word 0x1cf1faa
|
||||
.word 0x80000030
|
||||
.word 0x11def42
|
||||
.word 0x80000030
|
||||
.word 0x1ce10a8
|
||||
.word 0x80000030
|
||||
.word 0x193397e
|
||||
.word 0x80000030
|
||||
.word 0x11ef781
|
||||
.word 0x805dfbbe
|
||||
.word 0x1c0421c
|
||||
.word 0x81e4c33c
|
||||
.word 0x1c2176a
|
||||
.word 0x80000030
|
||||
.word 0x1dc18da
|
||||
.word 0x80000030
|
||||
.word 0x11ef782
|
||||
.word 0x80000030
|
||||
.word 0x1ff6418
|
||||
.word 0x80000030
|
||||
.word 0x402107
|
||||
.word 0x80000030
|
||||
.word 0x11def41
|
||||
.word 0x80000030
|
||||
.word 0x1de18d8
|
||||
.word 0x80000030
|
||||
.word 0x19f4203
|
||||
.word 0x80000030
|
||||
.word 0x1d027aa
|
||||
.word 0x80000030
|
||||
.word 0x11def42
|
||||
.word 0x80000030
|
||||
.word 0x1cf18e8
|
||||
.word 0x80000030
|
||||
.word 0x194417e
|
||||
.word 0x80000030
|
||||
.word 0x11ef781
|
||||
.word 0x805dfbbe
|
||||
.word 0x1c0095c
|
||||
.word 0x81e6133c
|
||||
.word 0x1c31f6a
|
||||
.word 0x81e71b3c
|
||||
.word 0x41dc221b
|
||||
.word 0x80000030
|
||||
.word 0x11ef782
|
||||
.word 0x80020032
|
||||
.word 0x2ff
|
||||
.word 0x800810f0
|
||||
.word 0x2ff
|
||||
.word 0x10031810
|
||||
.word 0x2ff
|
||||
.word 0x80091870
|
||||
.word 0x2ff
|
||||
.word 0x80090870
|
||||
.word 0x2ff
|
||||
.word 0x10010810
|
||||
.word 0x2ff
|
||||
.word 0x800a0032
|
||||
.word 0x2ff
|
||||
.word 0x80001af5
|
||||
.word 0x2ff
|
||||
.word 0x80000b35
|
||||
.word 0x400002ff
|
||||
.word 0x80080b70
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e9293e
|
||||
.word 0x80000030
|
||||
.word 0x1ea313e
|
||||
.word 0x80000030
|
||||
.word 0x1eb393e
|
||||
.word 0x80000030
|
||||
.word 0x1ec413e
|
||||
.word 0x81e14b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e1537d
|
||||
.word 0x2ff
|
||||
.word 0x81e15b7d
|
||||
.word 0x400002ff
|
||||
.word 0x81e1637d
|
||||
.word 0x2ff
|
||||
.word 0x80316b3d
|
||||
.word 0x1c9093c
|
||||
.word 0x8032733d
|
||||
.word 0x1ca113c
|
||||
.word 0x80337b3d
|
||||
.word 0x1cb193c
|
||||
.word 0x8034833d
|
||||
.word 0x1cc213c
|
||||
.word 0x80298b3c
|
||||
.word 0x2ff
|
||||
.word 0x802a933c
|
||||
.word 0x2ff
|
||||
.word 0x802b9b3c
|
||||
.word 0x2ff
|
||||
.word 0x802ca33c
|
||||
.word 0x2ff
|
||||
.word 0x81e24b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e2537d
|
||||
.word 0x2ff
|
||||
.word 0x81e25b7d
|
||||
.word 0x400002ff
|
||||
.word 0x81e2637d
|
||||
.word 0x2ff
|
||||
.word 0x80316b3d
|
||||
.word 0x1c9093c
|
||||
.word 0x8032733d
|
||||
.word 0x1ca113c
|
||||
.word 0x80000030
|
||||
.word 0x1cb193c
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80298b3c
|
||||
.word 0x2ff
|
||||
.word 0x802a933c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x800318b2
|
||||
.word 0x2ff
|
||||
.word 0x81e24b7d
|
||||
.word 0x2ff
|
||||
.word 0x3e357fe
|
||||
.word 0x400002ff
|
||||
.word 0x3e35fff
|
||||
.word 0x2ff
|
||||
.word 0x80316b3d
|
||||
.word 0x1c9093c
|
||||
.word 0x8032733d
|
||||
.word 0x1ca113c
|
||||
.word 0x80337b3d
|
||||
.word 0x1cb193c
|
||||
.word 0x80000030
|
||||
.word 0x1cc213c
|
||||
.word 0x80298b3c
|
||||
.word 0x2ff
|
||||
.word 0x802a933c
|
||||
.word 0x2ff
|
||||
.word 0x802b9b3c
|
||||
.word 0x2ff
|
||||
.word 0x800318b2
|
||||
.word 0x2ff
|
||||
.word 0x81e24b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e2537d
|
||||
.word 0x2ff
|
||||
.word 0x3e35ffe
|
||||
.word 0x400002ff
|
||||
.word 0x3e367ff
|
||||
.word 0x2ff
|
||||
.word 0x80316b3d
|
||||
.word 0x1c9093c
|
||||
.word 0x8032733d
|
||||
.word 0x1ca113c
|
||||
.word 0x80337b3d
|
||||
.word 0x1cb193c
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80298b3c
|
||||
.word 0x2ff
|
||||
.word 0x802a933c
|
||||
.word 0x2ff
|
||||
.word 0x802b9b3c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x81e24b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e2537d
|
||||
.word 0x400002ff
|
||||
.word 0x81e25b7d
|
||||
.word 0x2ff
|
||||
.word 0x80316b3d
|
||||
.word 0x1c9093c
|
||||
.word 0x8033733d
|
||||
.word 0x1ca113c
|
||||
.word 0x80000030
|
||||
.word 0x1cb193c
|
||||
.word 0x80031932
|
||||
.word 0x1cc213c
|
||||
.word 0x80298b3c
|
||||
.word 0x2ff
|
||||
.word 0x802b9b3c
|
||||
.word 0x2ff
|
||||
.word 0x3c357fd
|
||||
.word 0x2ff
|
||||
.word 0x3c367ff
|
||||
.word 0x2ff
|
||||
.word 0x3e34ffc
|
||||
.word 0x400002ff
|
||||
.word 0x3e35ffe
|
||||
.word 0x2ff
|
||||
.word 0x800050b5
|
||||
.word 0x2ff
|
||||
.word 0x80006075
|
||||
.word 0x2ff
|
||||
.word 0x81e5137c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x81e90b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x81f3ab3c
|
||||
.word 0x1e508bc
|
||||
.word 0x81f0b33c
|
||||
.word 0x1e510bd
|
||||
.word 0x81f4bb3c
|
||||
.word 0x1c51b4a
|
||||
.word 0x81e6137c
|
||||
.word 0x1e909bc
|
||||
.word 0x81efc33c
|
||||
.word 0x1e910bd
|
||||
.word 0x80000030
|
||||
.word 0x1e91c4a
|
||||
.word 0x81ea0b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x802d2b3c
|
||||
.word 0x1e608bc
|
||||
.word 0x80000030
|
||||
.word 0x1e610bd
|
||||
.word 0x80000030
|
||||
.word 0x1c61b8a
|
||||
.word 0x81e7137c
|
||||
.word 0x1ea09bc
|
||||
.word 0x80000030
|
||||
.word 0x1ea10bd
|
||||
.word 0x80000030
|
||||
.word 0x1ea1c8a
|
||||
.word 0x81eb0b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x802e333c
|
||||
.word 0x1e708bc
|
||||
.word 0x80000030
|
||||
.word 0x1e710bd
|
||||
.word 0x80000030
|
||||
.word 0x1c71e0a
|
||||
.word 0x81e8137c
|
||||
.word 0x1eb09bc
|
||||
.word 0x80000030
|
||||
.word 0x1eb10bd
|
||||
.word 0x80000030
|
||||
.word 0x1eb1d4a
|
||||
.word 0x81ec0b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x80383b3c
|
||||
.word 0x1e808bc
|
||||
.word 0x80000030
|
||||
.word 0x1e810bd
|
||||
.word 0x80000030
|
||||
.word 0x1c81d8a
|
||||
.word 0x81e5137c
|
||||
.word 0x1ec09bc
|
||||
.word 0x8036433c
|
||||
.word 0x41ec10bd
|
||||
.word 0x80000030
|
||||
.word 0x1ec1dca
|
||||
.word 0x81f3ab3c
|
||||
.word 0x2ff
|
||||
.word 0x81f0b33c
|
||||
.word 0x2ff
|
||||
.word 0x81f4bb3c
|
||||
.word 0x400002ff
|
||||
.word 0x81efc33c
|
||||
.word 0x2ff
|
||||
.word 0x800058f5
|
||||
.word 0x2ff
|
||||
.word 0x80006875
|
||||
.word 0x2ff
|
||||
.word 0x81e51b7c
|
||||
.word 0x2ff
|
||||
.word 0x81f91b7c
|
||||
.word 0x2ff
|
||||
.word 0x81e90b7c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x81f0ab3c
|
||||
.word 0x1dd29bc
|
||||
.word 0x80000030
|
||||
.word 0x1c0cf8b
|
||||
.word 0x80000030
|
||||
.word 0x1e909bc
|
||||
.word 0x80000030
|
||||
.word 0x1e910bd
|
||||
.word 0x802d2b3c
|
||||
.word 0x1c91c4a
|
||||
.word 0x81e61b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x81fa1b7c
|
||||
.word 0x1fe08bc
|
||||
.word 0x81ea0b7c
|
||||
.word 0x1fe10bd
|
||||
.word 0x80000030
|
||||
.word 0x1de1b4a
|
||||
.word 0x80000030
|
||||
.word 0x1dd31bc
|
||||
.word 0x80000030
|
||||
.word 0x1c0d78b
|
||||
.word 0x80000030
|
||||
.word 0x1ea09bc
|
||||
.word 0x80000030
|
||||
.word 0x1ea10bd
|
||||
.word 0x802e333c
|
||||
.word 0x1ca1c8a
|
||||
.word 0x81e71b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x81fb1b7c
|
||||
.word 0x1fe08bc
|
||||
.word 0x81eb0b7c
|
||||
.word 0x1fe10bd
|
||||
.word 0x80000030
|
||||
.word 0x1de1b8a
|
||||
.word 0x80000030
|
||||
.word 0x1dd39bc
|
||||
.word 0x80000030
|
||||
.word 0x1c0df8b
|
||||
.word 0x80000030
|
||||
.word 0x1eb09bc
|
||||
.word 0x80000030
|
||||
.word 0x1eb10bd
|
||||
.word 0x802f3b3c
|
||||
.word 0x1cb1cca
|
||||
.word 0x81e81b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x81fc1b7c
|
||||
.word 0x1fe08bc
|
||||
.word 0x81ec0b7c
|
||||
.word 0x1fe10bd
|
||||
.word 0x80000030
|
||||
.word 0x1de1bca
|
||||
.word 0x80000030
|
||||
.word 0x1dd41bc
|
||||
.word 0x80000030
|
||||
.word 0x1c0e78b
|
||||
.word 0x80000030
|
||||
.word 0x1ec09bc
|
||||
.word 0x80000030
|
||||
.word 0x1ec10bd
|
||||
.word 0x8035433c
|
||||
.word 0x1cc1d0a
|
||||
.word 0x81e51b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x81f91b7c
|
||||
.word 0x1fe08bc
|
||||
.word 0x81e90b7c
|
||||
.word 0x41fe10bd
|
||||
.word 0x80000030
|
||||
.word 0x1de1d4a
|
||||
.word 0x81f0ab3c
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80006875
|
||||
.word 0x2ff
|
||||
.word 0x81e90b7c
|
||||
.word 0x2ff
|
||||
.word 0x800058f5
|
||||
.word 0x2ff
|
||||
.word 0x1e51801
|
||||
.word 0x2ff
|
||||
.word 0x800318b2
|
||||
.word 0x2ff
|
||||
.word 0x81efab3c
|
||||
.word 0x1e909bc
|
||||
.word 0x81f4b33c
|
||||
.word 0x1e910bd
|
||||
.word 0x2d1ffe
|
||||
.word 0x1c91c4a
|
||||
.word 0x81ea0b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x81f0bb3c
|
||||
.word 0x1e508bc
|
||||
.word 0x1e61801
|
||||
.word 0x1e510bd
|
||||
.word 0x800318b2
|
||||
.word 0x1c51b4a
|
||||
.word 0x80000030
|
||||
.word 0x1ea09bc
|
||||
.word 0x80000030
|
||||
.word 0x1ea10bd
|
||||
.word 0x2e1ffe
|
||||
.word 0x1ca1c8a
|
||||
.word 0x81eb0b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x80000030
|
||||
.word 0x1e608bc
|
||||
.word 0x1e71801
|
||||
.word 0x1e610bd
|
||||
.word 0x800318b2
|
||||
.word 0x1c61b8a
|
||||
.word 0x80000030
|
||||
.word 0x1eb09bc
|
||||
.word 0x80000030
|
||||
.word 0x1eb10bd
|
||||
.word 0x351ffe
|
||||
.word 0x1cb1cca
|
||||
.word 0x81ec0b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x80000030
|
||||
.word 0x1e708bc
|
||||
.word 0x1e81801
|
||||
.word 0x1e710bd
|
||||
.word 0x800318b2
|
||||
.word 0x1c71d4a
|
||||
.word 0x80000030
|
||||
.word 0x1ec09bc
|
||||
.word 0x80000030
|
||||
.word 0x1ec10bd
|
||||
.word 0x371ffe
|
||||
.word 0x1cc1d8a
|
||||
.word 0x81e90b7c
|
||||
.word 0x1e021bf
|
||||
.word 0x80000030
|
||||
.word 0x1e808bc
|
||||
.word 0x1e51801
|
||||
.word 0x41e810bd
|
||||
.word 0x800318b2
|
||||
.word 0x1c81dca
|
||||
.word 0x81efab3c
|
||||
.word 0x2ff
|
||||
.word 0x81f4b33c
|
||||
.word 0x400002ff
|
||||
.word 0x81f0bb3c
|
||||
.word 0x2ff
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,201 @@
|
||||
0.003921569 | maxw.x vf17, vf00, vf00 :i
|
||||
-65537.0 | maxi.y vf17, vf00, I :i
|
||||
iaddiu vi10, vi10, 0x88 | minii.z vf05, vf00, I
|
||||
iaddiu vi08, vi00, 0x8c | minii.z vf06, vf00, I
|
||||
sqi.xyzw vf01, vi08 | minii.z vf07, vf00, I
|
||||
sqi.xyzw vf02, vi08 | minix.w vf05, vf00, vf27
|
||||
sqi.xyzw vf03, vi08 | miniy.w vf06, vf00, vf27
|
||||
sqi.xyzw vf04, vi08 | miniz.w vf07, vf00, vf27
|
||||
ibne vi00, vi13, L1 | nop
|
||||
iaddiu vi05, vi00, 0x182 | nop
|
||||
iaddiu vi05, vi00, 0x1ab | nop
|
||||
L1:
|
||||
ibne vi00, vi12, L2 | nop
|
||||
iaddiu vi03, vi00, 0x146 | nop
|
||||
ior vi03, vi05, vi00 | nop
|
||||
L2:
|
||||
ibne vi00, vi11, L3 | nop
|
||||
iaddiu vi01, vi00, 0x13a | nop
|
||||
ior vi01, vi03, vi00 | nop
|
||||
L3:
|
||||
lqi.xyzw vf29, vi10 | nop
|
||||
iadd vi02, vi08, vi11 | nop
|
||||
iadd vi04, vi02, vi12 | nop
|
||||
iadd vi06, vi04, vi13 | nop
|
||||
mtir vi13, vf29.w | itof0.xyzw vf18, vf29 :e
|
||||
iaddiu vi09, vi00, 0x7f | nop
|
||||
sq.xyzw vf23, 3(vi14) | mulx.xyzw vf11, vf20, vf19
|
||||
sq.xyzw vf24, 4(vi14) | mulx.xyzw vf12, vf21, vf19
|
||||
sq.xyzw vf25, 5(vi14) | mulx.xyzw vf13, vf22, vf19
|
||||
sq.xyzw vf26, 6(vi14) | nop
|
||||
sq.xyzw vf11, 0(vi14) | nop
|
||||
sq.xyzw vf12, 1(vi14) | nop
|
||||
sq.xyzw vf13, 2(vi14) | nop :e
|
||||
nop | nop
|
||||
mtir vi11, vf01.x | maddz.xyzw vf11, vf26, vf10
|
||||
jr vi01 | mul.xyzw vf14, vf13, Q
|
||||
sqi.xyzw vf04, vi08 | mulaw.xyzw ACC, vf20, vf08
|
||||
rsqrt Q, vf00.w, vf16.x | maddaw.xyzw ACC, vf21, vf09
|
||||
lq.xyzw vf24, -124(vi11) | maddaw.xyzw ACC, vf22, vf10
|
||||
lq.xyzw vf25, -123(vi11) | maddw.xyzw vf15, vf23, vf00
|
||||
lq.xyzw vf26, -122(vi11) | mul.xyzw vf16, vf11, vf11
|
||||
lq.xyzw vf20, -128(vi11) | add.xyzw vf08, vf01, vf05
|
||||
lq.xyzw vf21, -127(vi11) | add.xyzw vf09, vf02, vf06
|
||||
lq.xyzw vf22, -126(vi11) | add.xyzw vf10, vf03, vf07
|
||||
ibne vi08, vi02, L4 | adday.xyzw vf16, vf16
|
||||
lq.xyzw vf23, -125(vi11) | maddz.xyzw vf16, vf17, vf16
|
||||
ior vi01, vi03, vi00 | nop
|
||||
L4:
|
||||
move.xyzw vf13, vf12 | mulaz.xyzw ACC, vf24, vf08 :e
|
||||
move.xyzw vf12, vf11 | maddaz.xyzw ACC, vf25, vf09
|
||||
rsqrt Q, vf00.w, vf16.x | maddaw.xyzw ACC, vf21, vf09
|
||||
mtir vi12, vf01.y | maddaw.xyzw ACC, vf22, vf10
|
||||
iand vi11, vi11, vi09 | maddw.xyzw vf15, vf23, vf00
|
||||
lq.xyzw vf19, 4(vi11) | mul.xyzw vf16, vf11, vf11
|
||||
ibeq vi09, vi11, L7 | add.xyzw vf08, vf01, vf05
|
||||
iand vi12, vi12, vi09 | add.xyzw vf09, vf02, vf06
|
||||
nop | muly.xyzw vf18, vf18, vf17
|
||||
lq.xyzw vf24, 4(vi12) | add.xyzw vf10, vf03, vf07
|
||||
lq.xyzw vf27, 5(vi11) | adday.xyzw vf16, vf16
|
||||
lq.xyzw vf25, 5(vi12) | maddz.xyzw vf16, vf17, vf16
|
||||
lq.xyzw vf28, 6(vi11) | mulax.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf26, 6(vi12) | maddy.xyzw vf24, vf24, vf18
|
||||
lq.xyzw vf29, 0(vi11) | mulax.xyzw ACC, vf27, vf18
|
||||
lq.xyzw vf20, 0(vi12) | maddy.xyzw vf25, vf25, vf18
|
||||
lq.xyzw vf19, 1(vi11) | mulax.xyzw ACC, vf28, vf18
|
||||
lq.xyzw vf21, 1(vi12) | maddy.xyzw vf26, vf26, vf18
|
||||
lq.xyzw vf27, 2(vi11) | mulax.xyzw ACC, vf29, vf18
|
||||
lq.xyzw vf22, 2(vi12) | maddy.xyzw vf20, vf20, vf18
|
||||
lq.xyzw vf28, 3(vi11) | mulax.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf23, 3(vi12) | maddy.xyzw vf21, vf21, vf18
|
||||
nop | mulax.xyzw ACC, vf27, vf18
|
||||
iaddiu vi01, vi00, 0x161 | maddy.xyzw vf22, vf22, vf18
|
||||
ibne vi08, vi04, L5 | mulax.xyzw ACC, vf28, vf18
|
||||
nop | maddy.xyzw vf23, vf23, vf18
|
||||
ior vi01, vi05, vi00 | nop
|
||||
L5:
|
||||
move.xyzw vf13, vf12 | mulaz.xyzw ACC, vf24, vf08 :e
|
||||
move.xyzw vf12, vf11 | maddaz.xyzw ACC, vf25, vf09
|
||||
rsqrt Q, vf00.w, vf16.x | maddaw.xyzw ACC, vf21, vf09
|
||||
mtir vi12, vf01.y | maddaw.xyzw ACC, vf22, vf10
|
||||
iand vi11, vi11, vi09 | maddw.xyzw vf15, vf23, vf00
|
||||
lq.xyzw vf19, 4(vi11) | mul.xyzw vf16, vf11, vf11
|
||||
ibeq vi09, vi11, L7 | add.xyzw vf08, vf01, vf05
|
||||
iand vi12, vi12, vi09 | add.xyzw vf09, vf02, vf06
|
||||
lq.xyzw vf24, 4(vi12) | add.xyzw vf10, vf03, vf07
|
||||
lq.xyzw vf27, 5(vi11) | adday.xyzw vf16, vf16
|
||||
lq.xyzw vf25, 5(vi12) | maddz.xyzw vf16, vf17, vf16
|
||||
lq.xyzw vf28, 6(vi11) | mulaz.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf26, 6(vi12) | maddw.xyzw vf24, vf24, vf18
|
||||
lq.xyzw vf29, 0(vi11) | mulaz.xyzw ACC, vf27, vf18
|
||||
lq.xyzw vf20, 0(vi12) | maddw.xyzw vf25, vf25, vf18
|
||||
lq.xyzw vf19, 1(vi11) | mulaz.xyzw ACC, vf28, vf18
|
||||
lq.xyzw vf21, 1(vi12) | maddw.xyzw vf26, vf26, vf18
|
||||
lq.xyzw vf27, 2(vi11) | mulaz.xyzw ACC, vf29, vf18
|
||||
lq.xyzw vf22, 2(vi12) | maddw.xyzw vf20, vf20, vf18
|
||||
lq.xyzw vf28, 3(vi11) | mulaz.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf23, 3(vi12) | maddw.xyzw vf21, vf21, vf18
|
||||
lqi.xyzw vf29, vi10 | mulaz.xyzw ACC, vf27, vf18
|
||||
iaddiu vi01, vi00, 0x146 | maddw.xyzw vf22, vf22, vf18
|
||||
ibne vi08, vi04, L6 | mulaz.xyzw ACC, vf28, vf18
|
||||
nop | maddw.xyzw vf23, vf23, vf18
|
||||
ior vi01, vi05, vi00 | nop
|
||||
L6:
|
||||
mtir vi13, vf29.w | itof0.xyzw vf18, vf29
|
||||
move.xyzw vf13, vf12 | mulaz.xyzw ACC, vf24, vf08 :e
|
||||
move.xyzw vf12, vf11 | maddaz.xyzw ACC, vf25, vf09
|
||||
L7:
|
||||
nop | add.xyzw vf10, vf03, vf07
|
||||
ibne vi08, vi04, L8 | adday.xyzw vf16, vf16
|
||||
nop | maddz.xyzw vf16, vf17, vf16
|
||||
ior vi01, vi05, vi00 | nop
|
||||
L8:
|
||||
move.xyzw vf13, vf12 | mulaz.xyzw ACC, vf24, vf08 :e
|
||||
move.xyzw vf12, vf11 | maddaz.xyzw ACC, vf25, vf09
|
||||
rsqrt Q, vf00.w, vf16.x | maddaw.xyzw ACC, vf21, vf09
|
||||
mtir vi12, vf01.y | maddaw.xyzw ACC, vf22, vf10
|
||||
iand vi11, vi11, vi09 | maddw.xyzw vf15, vf23, vf00
|
||||
lq.xyzw vf19, 4(vi11) | mul.xyzw vf16, vf11, vf11
|
||||
ibeq vi09, vi11, L10 | add.xyzw vf08, vf01, vf05
|
||||
iand vi12, vi12, vi09 | add.xyzw vf09, vf02, vf06
|
||||
nop | muly.xyzw vf18, vf18, vf17
|
||||
lq.xyzw vf27, 4(vi12) | add.xyzw vf10, vf03, vf07
|
||||
lq.xyzw vf24, 4(vi13) | adday.xyzw vf16, vf16
|
||||
lq.xyzw vf28, 5(vi11) | maddz.xyzw vf16, vf17, vf16
|
||||
lq.xyzw vf19, 5(vi12) | mulax.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf25, 5(vi13) | madday.xyzw ACC, vf27, vf18
|
||||
lq.xyzw vf27, 6(vi11) | maddz.xyzw vf24, vf24, vf18
|
||||
lq.xyzw vf28, 6(vi12) | mulax.xyzw ACC, vf28, vf18
|
||||
lq.xyzw vf26, 6(vi13) | madday.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf19, 0(vi11) | maddz.xyzw vf25, vf25, vf18
|
||||
lq.xyzw vf27, 0(vi12) | mulax.xyzw ACC, vf27, vf18
|
||||
lq.xyzw vf20, 0(vi13) | madday.xyzw ACC, vf28, vf18
|
||||
lq.xyzw vf28, 1(vi11) | maddz.xyzw vf26, vf26, vf18
|
||||
lq.xyzw vf19, 1(vi12) | mulax.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf21, 1(vi13) | madday.xyzw ACC, vf27, vf18
|
||||
lq.xyzw vf27, 2(vi11) | maddz.xyzw vf20, vf20, vf18
|
||||
lq.xyzw vf28, 2(vi12) | mulax.xyzw ACC, vf28, vf18
|
||||
lq.xyzw vf22, 2(vi13) | madday.xyzw ACC, vf19, vf18
|
||||
lq.xyzw vf19, 3(vi11) | maddz.xyzw vf21, vf21, vf18
|
||||
lq.xyzw vf27, 3(vi12) | mulax.xyzw ACC, vf27, vf18
|
||||
lq.xyzw vf23, 3(vi13) | madday.xyzw ACC, vf28, vf18
|
||||
lqi.xyzw vf29, vi10 | maddz.xyzw vf22, vf22, vf18
|
||||
ibne vi08, vi06, L9 | mulax.xyzw ACC, vf19, vf18
|
||||
nop | madday.xyzw ACC, vf27, vf18
|
||||
iaddiu vi01, vi00, 0x1ab | nop
|
||||
L9:
|
||||
nop | maddz.xyzw vf23, vf23, vf18
|
||||
mtir vi13, vf29.w | itof0.xyz vf18, vf29
|
||||
move.xyzw vf13, vf12 | mulaz.xyzw ACC, vf24, vf08 :e
|
||||
move.xyzw vf12, vf11 | maddaz.xyzw ACC, vf25, vf09
|
||||
L10:
|
||||
nop | add.xyzw vf10, vf03, vf07
|
||||
ibne vi08, vi06, L11 | adday.xyzw vf16, vf16
|
||||
nop | maddz.xyzw vf16, vf17, vf16
|
||||
iaddiu vi01, vi00, 0x1ab | nop
|
||||
L11:
|
||||
move.xyzw vf13, vf12 | mulaz.xyzw ACC, vf24, vf08 :e
|
||||
move.xyzw vf12, vf11 | maddaz.xyzw ACC, vf25, vf09
|
||||
rsqrt Q, vf00.w, vf16.x | maddaw.xyzw ACC, vf21, vf09
|
||||
nop | maddaw.xyzw ACC, vf22, vf10
|
||||
nop | maddw.xyzw vf15, vf23, vf00
|
||||
nop | mul.xyzw vf16, vf11, vf11
|
||||
nop | add.xyzw vf08, vf01, vf05
|
||||
nop | add.xyzw vf09, vf02, vf06
|
||||
nop | add.xyzw vf10, vf03, vf07
|
||||
nop | adday.xyzw vf16, vf16
|
||||
nop | maddz.xyzw vf16, vf17, vf16
|
||||
move.xyzw vf13, vf12 | mulaz.xyzw ACC, vf24, vf08 :e
|
||||
move.xyzw vf12, vf11 | maddaz.xyzw ACC, vf25, vf09
|
||||
nop | mulaz.xyzw ACC, vf09, vf01
|
||||
nop | maddax.xyzw ACC, vf10, vf01
|
||||
nop | maddy.xyzw vf01, vf11, vf01
|
||||
nop | mulaz.xyzw ACC, vf09, vf02
|
||||
nop | maddax.xyzw ACC, vf10, vf02
|
||||
nop | maddy.xyzw vf02, vf11, vf02
|
||||
fmand vi01, vi09 | mulaz.xyzw ACC, vf09, vf03
|
||||
nop | maddax.xyzw ACC, vf10, vf03
|
||||
nop | maddy.xyzw vf03, vf11, vf03
|
||||
fmand vi02, vi09 | mulaz.xyzw ACC, vf09, vf04
|
||||
nop | maddax.xyzw ACC, vf10, vf04
|
||||
nop | maddy.xyzw vf04, vf11, vf04
|
||||
fmand vi03, vi09 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
fmand vi04, vi09 | nop
|
||||
nop | mulaz.xyzw ACC, vf09, vf05
|
||||
nop | maddax.xyzw ACC, vf10, vf05
|
||||
nop | maddy.xyzw vf05, vf11, vf05
|
||||
nop | mulaz.xyzw ACC, vf09, vf06
|
||||
nop | maddax.xyzw ACC, vf10, vf06
|
||||
nop | maddy.xyzw vf06, vf11, vf06
|
||||
fmand vi05, vi09 | mulaz.xyzw ACC, vf09, vf07
|
||||
nop | maddax.xyzw ACC, vf10, vf07
|
||||
nop | maddy.xyzw vf07, vf11, vf07
|
||||
fmand vi06, vi09 | mulaz.xyzw ACC, vf09, vf08
|
||||
nop | maddax.xyzw ACC, vf10, vf08
|
||||
nop | maddy.xyzw vf08, vf11, vf08
|
||||
fmand vi07, vi09 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
fmand vi08, vi09 | nop
|
||||
@@ -0,0 +1,380 @@
|
||||
.word 0x3b808081
|
||||
.word 0x81000453
|
||||
.word 0xc7800080
|
||||
.word 0x8080045d
|
||||
.word 0x100a5088
|
||||
.word 0x40015f
|
||||
.word 0x1008008c
|
||||
.word 0x40019f
|
||||
.word 0x81e80b7d
|
||||
.word 0x4001df
|
||||
.word 0x81e8137d
|
||||
.word 0x3b0154
|
||||
.word 0x81e81b7d
|
||||
.word 0x3b0195
|
||||
.word 0x81e8237d
|
||||
.word 0x3b01d6
|
||||
.word 0x52006802
|
||||
.word 0x2ff
|
||||
.word 0x10050182
|
||||
.word 0x2ff
|
||||
.word 0x100501ab
|
||||
.word 0x2ff
|
||||
.word 0x52006002
|
||||
.word 0x2ff
|
||||
.word 0x10030146
|
||||
.word 0x2ff
|
||||
.word 0x800028f5
|
||||
.word 0x2ff
|
||||
.word 0x52005802
|
||||
.word 0x2ff
|
||||
.word 0x1001013a
|
||||
.word 0x2ff
|
||||
.word 0x80001875
|
||||
.word 0x2ff
|
||||
.word 0x81fd537c
|
||||
.word 0x2ff
|
||||
.word 0x800b40b0
|
||||
.word 0x2ff
|
||||
.word 0x800c1130
|
||||
.word 0x2ff
|
||||
.word 0x800d21b0
|
||||
.word 0x2ff
|
||||
.word 0x806debfc
|
||||
.word 0x41f2e93c
|
||||
.word 0x1009007f
|
||||
.word 0x2ff
|
||||
.word 0x3eeb803
|
||||
.word 0x1f3a2d8
|
||||
.word 0x3eec004
|
||||
.word 0x1f3ab18
|
||||
.word 0x3eec805
|
||||
.word 0x1f3b358
|
||||
.word 0x3eed006
|
||||
.word 0x2ff
|
||||
.word 0x3ee5800
|
||||
.word 0x2ff
|
||||
.word 0x3ee6001
|
||||
.word 0x2ff
|
||||
.word 0x3ee6802
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x800b0bfc
|
||||
.word 0x1ead2ca
|
||||
.word 0x48000800
|
||||
.word 0x1e06b9c
|
||||
.word 0x81e8237d
|
||||
.word 0x1e8a1bf
|
||||
.word 0x807003be
|
||||
.word 0x1e9a8bf
|
||||
.word 0x1f85f84
|
||||
.word 0x1eab0bf
|
||||
.word 0x1f95f85
|
||||
.word 0x1e0bbcb
|
||||
.word 0x1fa5f86
|
||||
.word 0x1eb5c2a
|
||||
.word 0x1f45f80
|
||||
.word 0x1e50a28
|
||||
.word 0x1f55f81
|
||||
.word 0x1e61268
|
||||
.word 0x1f65f82
|
||||
.word 0x1e71aa8
|
||||
.word 0x52081002
|
||||
.word 0x1f0803d
|
||||
.word 0x1f75f83
|
||||
.word 0x1f08c0a
|
||||
.word 0x80001875
|
||||
.word 0x2ff
|
||||
.word 0x81ed633c
|
||||
.word 0x41e8c1be
|
||||
.word 0x81ec5b3c
|
||||
.word 0x1e9c8be
|
||||
.word 0x807003be
|
||||
.word 0x1e9a8bf
|
||||
.word 0x802c0bfc
|
||||
.word 0x1eab0bf
|
||||
.word 0x80095af4
|
||||
.word 0x1e0bbcb
|
||||
.word 0x1f35804
|
||||
.word 0x1eb5c2a
|
||||
.word 0x50095831
|
||||
.word 0x1e50a28
|
||||
.word 0x80096334
|
||||
.word 0x1e61268
|
||||
.word 0x80000030
|
||||
.word 0x1f19499
|
||||
.word 0x1f86004
|
||||
.word 0x1e71aa8
|
||||
.word 0x1fb5805
|
||||
.word 0x1f0803d
|
||||
.word 0x1f96005
|
||||
.word 0x1f08c0a
|
||||
.word 0x1fc5806
|
||||
.word 0x1f299bc
|
||||
.word 0x1fa6006
|
||||
.word 0x1f2c609
|
||||
.word 0x1fd5800
|
||||
.word 0x1f2d9bc
|
||||
.word 0x1f46000
|
||||
.word 0x1f2ce49
|
||||
.word 0x1f35801
|
||||
.word 0x1f2e1bc
|
||||
.word 0x1f56001
|
||||
.word 0x1f2d689
|
||||
.word 0x1fb5802
|
||||
.word 0x1f2e9bc
|
||||
.word 0x1f66002
|
||||
.word 0x1f2a509
|
||||
.word 0x1fc5803
|
||||
.word 0x1f299bc
|
||||
.word 0x1f76003
|
||||
.word 0x1f2ad49
|
||||
.word 0x80000030
|
||||
.word 0x1f2d9bc
|
||||
.word 0x10010161
|
||||
.word 0x1f2b589
|
||||
.word 0x52082002
|
||||
.word 0x1f2e1bc
|
||||
.word 0x80000030
|
||||
.word 0x1f2bdc9
|
||||
.word 0x80002875
|
||||
.word 0x2ff
|
||||
.word 0x81ed633c
|
||||
.word 0x41e8c1be
|
||||
.word 0x81ec5b3c
|
||||
.word 0x1e9c8be
|
||||
.word 0x807003be
|
||||
.word 0x1e9a8bf
|
||||
.word 0x802c0bfc
|
||||
.word 0x1eab0bf
|
||||
.word 0x80095af4
|
||||
.word 0x1e0bbcb
|
||||
.word 0x1f35804
|
||||
.word 0x1eb5c2a
|
||||
.word 0x50095816
|
||||
.word 0x1e50a28
|
||||
.word 0x80096334
|
||||
.word 0x1e61268
|
||||
.word 0x1f86004
|
||||
.word 0x1e71aa8
|
||||
.word 0x1fb5805
|
||||
.word 0x1f0803d
|
||||
.word 0x1f96005
|
||||
.word 0x1f08c0a
|
||||
.word 0x1fc5806
|
||||
.word 0x1f299be
|
||||
.word 0x1fa6006
|
||||
.word 0x1f2c60b
|
||||
.word 0x1fd5800
|
||||
.word 0x1f2d9be
|
||||
.word 0x1f46000
|
||||
.word 0x1f2ce4b
|
||||
.word 0x1f35801
|
||||
.word 0x1f2e1be
|
||||
.word 0x1f56001
|
||||
.word 0x1f2d68b
|
||||
.word 0x1fb5802
|
||||
.word 0x1f2e9be
|
||||
.word 0x1f66002
|
||||
.word 0x1f2a50b
|
||||
.word 0x1fc5803
|
||||
.word 0x1f299be
|
||||
.word 0x1f76003
|
||||
.word 0x1f2ad4b
|
||||
.word 0x81fd537c
|
||||
.word 0x1f2d9be
|
||||
.word 0x10010146
|
||||
.word 0x1f2b58b
|
||||
.word 0x52082002
|
||||
.word 0x1f2e1be
|
||||
.word 0x80000030
|
||||
.word 0x1f2bdcb
|
||||
.word 0x80002875
|
||||
.word 0x2ff
|
||||
.word 0x806debfc
|
||||
.word 0x1f2e93c
|
||||
.word 0x81ed633c
|
||||
.word 0x41e8c1be
|
||||
.word 0x81ec5b3c
|
||||
.word 0x1e9c8be
|
||||
.word 0x80000030
|
||||
.word 0x1e71aa8
|
||||
.word 0x52082002
|
||||
.word 0x1f0803d
|
||||
.word 0x80000030
|
||||
.word 0x1f08c0a
|
||||
.word 0x80002875
|
||||
.word 0x2ff
|
||||
.word 0x81ed633c
|
||||
.word 0x41e8c1be
|
||||
.word 0x81ec5b3c
|
||||
.word 0x1e9c8be
|
||||
.word 0x807003be
|
||||
.word 0x1e9a8bf
|
||||
.word 0x802c0bfc
|
||||
.word 0x1eab0bf
|
||||
.word 0x80095af4
|
||||
.word 0x1e0bbcb
|
||||
.word 0x1f35804
|
||||
.word 0x1eb5c2a
|
||||
.word 0x5009581e
|
||||
.word 0x1e50a28
|
||||
.word 0x80096334
|
||||
.word 0x1e61268
|
||||
.word 0x80000030
|
||||
.word 0x1f19499
|
||||
.word 0x1fb6004
|
||||
.word 0x1e71aa8
|
||||
.word 0x1f86804
|
||||
.word 0x1f0803d
|
||||
.word 0x1fc5805
|
||||
.word 0x1f08c0a
|
||||
.word 0x1f36005
|
||||
.word 0x1f299bc
|
||||
.word 0x1f96805
|
||||
.word 0x1f2d8bd
|
||||
.word 0x1fb5806
|
||||
.word 0x1f2c60a
|
||||
.word 0x1fc6006
|
||||
.word 0x1f2e1bc
|
||||
.word 0x1fa6806
|
||||
.word 0x1f298bd
|
||||
.word 0x1f35800
|
||||
.word 0x1f2ce4a
|
||||
.word 0x1fb6000
|
||||
.word 0x1f2d9bc
|
||||
.word 0x1f46800
|
||||
.word 0x1f2e0bd
|
||||
.word 0x1fc5801
|
||||
.word 0x1f2d68a
|
||||
.word 0x1f36001
|
||||
.word 0x1f299bc
|
||||
.word 0x1f56801
|
||||
.word 0x1f2d8bd
|
||||
.word 0x1fb5802
|
||||
.word 0x1f2a50a
|
||||
.word 0x1fc6002
|
||||
.word 0x1f2e1bc
|
||||
.word 0x1f66802
|
||||
.word 0x1f298bd
|
||||
.word 0x1f35803
|
||||
.word 0x1f2ad4a
|
||||
.word 0x1fb6003
|
||||
.word 0x1f2d9bc
|
||||
.word 0x1f76803
|
||||
.word 0x1f2e0bd
|
||||
.word 0x81fd537c
|
||||
.word 0x1f2b58a
|
||||
.word 0x52083002
|
||||
.word 0x1f299bc
|
||||
.word 0x80000030
|
||||
.word 0x1f2d8bd
|
||||
.word 0x100101ab
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1f2bdca
|
||||
.word 0x806debfc
|
||||
.word 0x1d2e93c
|
||||
.word 0x81ed633c
|
||||
.word 0x41e8c1be
|
||||
.word 0x81ec5b3c
|
||||
.word 0x1e9c8be
|
||||
.word 0x80000030
|
||||
.word 0x1e71aa8
|
||||
.word 0x52083002
|
||||
.word 0x1f0803d
|
||||
.word 0x80000030
|
||||
.word 0x1f08c0a
|
||||
.word 0x100101ab
|
||||
.word 0x2ff
|
||||
.word 0x81ed633c
|
||||
.word 0x41e8c1be
|
||||
.word 0x81ec5b3c
|
||||
.word 0x1e9c8be
|
||||
.word 0x807003be
|
||||
.word 0x1e9a8bf
|
||||
.word 0x80000030
|
||||
.word 0x1eab0bf
|
||||
.word 0x80000030
|
||||
.word 0x1e0bbcb
|
||||
.word 0x80000030
|
||||
.word 0x1eb5c2a
|
||||
.word 0x80000030
|
||||
.word 0x1e50a28
|
||||
.word 0x80000030
|
||||
.word 0x1e61268
|
||||
.word 0x80000030
|
||||
.word 0x1e71aa8
|
||||
.word 0x80000030
|
||||
.word 0x1f0803d
|
||||
.word 0x80000030
|
||||
.word 0x1f08c0a
|
||||
.word 0x81ed633c
|
||||
.word 0x41e8c1be
|
||||
.word 0x81ec5b3c
|
||||
.word 0x1e9c8be
|
||||
.word 0x80000030
|
||||
.word 0x1e149be
|
||||
.word 0x80000030
|
||||
.word 0x1e150bc
|
||||
.word 0x80000030
|
||||
.word 0x1e15849
|
||||
.word 0x80000030
|
||||
.word 0x1e249be
|
||||
.word 0x80000030
|
||||
.word 0x1e250bc
|
||||
.word 0x80000030
|
||||
.word 0x1e25889
|
||||
.word 0x34014800
|
||||
.word 0x1e349be
|
||||
.word 0x80000030
|
||||
.word 0x1e350bc
|
||||
.word 0x80000030
|
||||
.word 0x1e358c9
|
||||
.word 0x34024800
|
||||
.word 0x1e449be
|
||||
.word 0x80000030
|
||||
.word 0x1e450bc
|
||||
.word 0x80000030
|
||||
.word 0x1e45909
|
||||
.word 0x34034800
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x34044800
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e549be
|
||||
.word 0x80000030
|
||||
.word 0x1e550bc
|
||||
.word 0x80000030
|
||||
.word 0x1e55949
|
||||
.word 0x80000030
|
||||
.word 0x1e649be
|
||||
.word 0x80000030
|
||||
.word 0x1e650bc
|
||||
.word 0x80000030
|
||||
.word 0x1e65989
|
||||
.word 0x34054800
|
||||
.word 0x1e749be
|
||||
.word 0x80000030
|
||||
.word 0x1e750bc
|
||||
.word 0x80000030
|
||||
.word 0x1e759c9
|
||||
.word 0x34064800
|
||||
.word 0x1e849be
|
||||
.word 0x80000030
|
||||
.word 0x1e850bc
|
||||
.word 0x80000030
|
||||
.word 0x1e85a09
|
||||
.word 0x34074800
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x34084800
|
||||
.word 0x2ff
|
||||
@@ -0,0 +1,152 @@
|
||||
b L1 | nop
|
||||
nop | nop
|
||||
b L2 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L1:
|
||||
lq.xyzw vf14, 988(vi00) | maxw.xyzw vf01, vf00, vf00
|
||||
lq.xyzw vf02, 989(vi00) | nop
|
||||
lq.xyzw vf03, 986(vi00) | nop
|
||||
lq.xyzw vf04, 987(vi00) | nop
|
||||
lq.xyzw vf05, 985(vi00) | nop
|
||||
lq.xyzw vf06, 991(vi00) | nop
|
||||
lq.xyzw vf07, 990(vi00) | nop
|
||||
iaddiu vi11, vi00, 0x80 | nop
|
||||
mtir vi08, vf03.x | nop
|
||||
mtir vi09, vf03.x | nop
|
||||
mr32.xyzw vf03, vf03 | nop
|
||||
xtop vi05 | nop
|
||||
mtir vi06, vf04.x | nop
|
||||
bal vi12, L3 | nop
|
||||
mr32.xyzw vf04, vf04 | nop
|
||||
mtir vi06, vf04.x | nop
|
||||
bal vi12, L3 | nop
|
||||
mr32.xyzw vf04, vf04 | nop
|
||||
mtir vi03, vf04.x | nop
|
||||
bal vi12, L5 | nop
|
||||
mtir vi04, vf04.y | nop
|
||||
mtir vi06, vf04.x | nop
|
||||
bal vi12, L3 | nop
|
||||
mr32.xyzw vf04, vf04 | nop
|
||||
mtir vi03, vf04.x | nop
|
||||
bal vi12, L5 | nop
|
||||
mtir vi04, vf04.y | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L2:
|
||||
xtop vi05 | nop
|
||||
mtir vi06, vf04.x | nop
|
||||
bal vi12, L3 | nop
|
||||
mr32.xyzw vf04, vf04 | nop
|
||||
mtir vi03, vf04.x | nop
|
||||
bal vi12, L5 | nop
|
||||
mtir vi04, vf04.y | nop
|
||||
mtir vi06, vf04.x | nop
|
||||
bal vi12, L3 | nop
|
||||
mr32.xyzw vf04, vf04 | nop
|
||||
mtir vi03, vf04.x | nop
|
||||
bal vi12, L5 | nop
|
||||
mtir vi04, vf04.y | nop
|
||||
mtir vi06, vf04.x | nop
|
||||
bal vi12, L3 | nop
|
||||
mr32.xyzw vf04, vf04 | nop
|
||||
mtir vi03, vf04.x | nop
|
||||
bal vi12, L5 | nop
|
||||
mtir vi04, vf04.y | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L3:
|
||||
ior vi07, vi06, vi00 | nop
|
||||
move.xyzw vf15, vf14 | nop
|
||||
iaddi vi01, vi00, 0x8 | nop
|
||||
lq.xyzw vf24, 1(vi05) | mulw.xyzw vf20, vf15, vf00
|
||||
lq.xyzw vf25, 3(vi05) | mulw.xyzw vf21, vf15, vf00
|
||||
lq.xyzw vf26, 5(vi05) | mulw.xyzw vf22, vf15, vf00
|
||||
nop | mulw.xyzw vf23, vf15, vf00
|
||||
nop | mulax.xyzw ACC, vf24, vf06
|
||||
nop | madday.xyzw ACC, vf25, vf06
|
||||
nop | maddz.xyzw vf27, vf26, vf06
|
||||
nop | addx.x vf21, vf21, vf02
|
||||
nop | addy.x vf22, vf22, vf02
|
||||
L4:
|
||||
nop | addz.x vf23, vf23, vf02
|
||||
nop | addw.x vf15, vf15, vf02
|
||||
sq.xyzw vf20, 2(vi06) | mulx.x vf28, vf01, vf24
|
||||
sq.xyzw vf21, 5(vi06) | muly.x vf29, vf01, vf24
|
||||
sq.xyzw vf22, 8(vi06) | mulz.x vf30, vf01, vf24
|
||||
sq.xyzw vf23, 11(vi06) | mulw.x vf31, vf01, vf24
|
||||
lq.xyzw vf16, 0(vi05) | mulx.y vf28, vf01, vf25
|
||||
lq.xyzw vf17, 2(vi05) | muly.y vf29, vf01, vf25
|
||||
lq.xyzw vf18, 4(vi05) | mulz.y vf30, vf01, vf25
|
||||
lq.xyzw vf19, 6(vi05) | mulw.y vf31, vf01, vf25
|
||||
iaddi vi05, vi05, 0x8 | mulx.xy vf28, vf28, vf27
|
||||
nop | muly.xy vf29, vf29, vf27
|
||||
nop | mulz.xy vf30, vf30, vf27
|
||||
nop | mulw.xy vf31, vf31, vf27
|
||||
nop | mulw.xy vf28, vf28, vf16
|
||||
nop | mulw.xy vf29, vf29, vf17
|
||||
nop | mulw.xy vf30, vf30, vf18
|
||||
nop | mulw.xy vf31, vf31, vf19
|
||||
nop | ftoi0.xyzw vf16, vf16
|
||||
nop | ftoi0.xyzw vf17, vf17
|
||||
nop | ftoi0.xyzw vf18, vf18
|
||||
iaddi vi01, vi01, -0x1 | ftoi0.xyzw vf19, vf19
|
||||
mfir.w vf16, vi11 | add.xyzw vf28, vf28, vf06
|
||||
mfir.w vf17, vi11 | add.xyzw vf29, vf29, vf06
|
||||
mfir.w vf18, vi11 | add.xyzw vf30, vf30, vf06
|
||||
mfir.w vf19, vi11 | add.xyzw vf31, vf31, vf06
|
||||
nop | mulx.xyzw vf28, vf28, vf07
|
||||
nop | mulx.xyzw vf29, vf29, vf07
|
||||
nop | mulx.xyzw vf30, vf30, vf07
|
||||
nop | mulx.xyzw vf31, vf31, vf07
|
||||
nop | addy.xyzw vf28, vf28, vf07
|
||||
nop | addy.xyzw vf29, vf29, vf07
|
||||
nop | addy.xyzw vf30, vf30, vf07
|
||||
nop | addy.xyzw vf31, vf31, vf07
|
||||
sq.xyzw vf16, 1(vi06) | sub.zw vf28, vf01, vf00
|
||||
sq.xyzw vf17, 4(vi06) | sub.zw vf29, vf01, vf00
|
||||
sq.xyzw vf18, 7(vi06) | sub.zw vf30, vf01, vf00
|
||||
sq.xyzw vf19, 10(vi06) | sub.zw vf31, vf01, vf00
|
||||
lq.xyzw vf24, 1(vi05) | mulw.xyzw vf20, vf15, vf00
|
||||
lq.xyzw vf25, 3(vi05) | mulw.xyzw vf21, vf15, vf00
|
||||
lq.xyzw vf26, 5(vi05) | mulw.xyzw vf22, vf15, vf00
|
||||
sq.xyzw vf28, 0(vi06) | mulw.xyzw vf23, vf15, vf00
|
||||
sq.xyzw vf29, 3(vi06) | mulax.xyzw ACC, vf24, vf06
|
||||
sq.xyzw vf30, 6(vi06) | madday.xyzw ACC, vf25, vf06
|
||||
sq.xyzw vf31, 9(vi06) | maddz.xyzw vf27, vf26, vf06
|
||||
ibgtz vi01, L4 | addx.x vf21, vf21, vf02
|
||||
iaddi vi06, vi06, 0xc | addy.x vf22, vf22, vf02
|
||||
lq.xyzw vf28, 0(vi07) | addx.y vf14, vf14, vf02
|
||||
lq.xyzw vf16, 1(vi07) | nop
|
||||
sq.xyzw vf20, 2(vi06) | nop
|
||||
sq.xyzw vf28, 0(vi06) | nop
|
||||
jr vi12 | nop
|
||||
sq.xyzw vf16, 1(vi06) | nop
|
||||
L5:
|
||||
iaddiu vi01, vi00, 0x21 | nop
|
||||
sq.xyzw vf05, 0(vi08) | nop
|
||||
iaddi vi08, vi08, 0x1 | nop
|
||||
L6:
|
||||
iaddi vi01, vi01, -0x1 | nop
|
||||
lq.xyzw vf20, 2(vi03) | nop
|
||||
lq.xyzw vf21, 2(vi04) | nop
|
||||
lq.xyzw vf28, 0(vi03) | nop
|
||||
lq.xyzw vf16, 1(vi03) | nop
|
||||
lq.xyzw vf29, 0(vi04) | ftoi4.xyzw vf20, vf20
|
||||
lq.xyzw vf17, 1(vi04) | ftoi4.xyzw vf21, vf21
|
||||
sq.xyzw vf28, 0(vi08) | nop
|
||||
sq.xyzw vf16, 1(vi08) | nop
|
||||
sq.xyzw vf20, 2(vi08) | nop
|
||||
sq.xyzw vf29, 3(vi08) | nop
|
||||
sq.xyzw vf17, 4(vi08) | nop
|
||||
sq.xyzw vf21, 5(vi08) | nop
|
||||
iaddi vi03, vi03, 0x3 | nop
|
||||
iaddi vi04, vi04, 0x3 | nop
|
||||
ibgtz vi01, L6 | nop
|
||||
iaddi vi08, vi08, 0x6 | nop
|
||||
xgkick vi09 | nop
|
||||
mtir vi08, vf03.x | nop
|
||||
mtir vi09, vf03.x | nop
|
||||
jr vi12 | nop
|
||||
mr32.xyzw vf03, vf03 | nop
|
||||
@@ -0,0 +1,292 @@
|
||||
.word 0x40000005
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x40000020
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x1ee03dc
|
||||
.word 0x1e00053
|
||||
.word 0x1e203dd
|
||||
.word 0x2ff
|
||||
.word 0x1e303da
|
||||
.word 0x2ff
|
||||
.word 0x1e403db
|
||||
.word 0x2ff
|
||||
.word 0x1e503d9
|
||||
.word 0x2ff
|
||||
.word 0x1e603df
|
||||
.word 0x2ff
|
||||
.word 0x1e703de
|
||||
.word 0x2ff
|
||||
.word 0x100b0080
|
||||
.word 0x2ff
|
||||
.word 0x80081bfc
|
||||
.word 0x2ff
|
||||
.word 0x80091bfc
|
||||
.word 0x2ff
|
||||
.word 0x81e31b3d
|
||||
.word 0x2ff
|
||||
.word 0x800506bc
|
||||
.word 0x2ff
|
||||
.word 0x800623fc
|
||||
.word 0x2ff
|
||||
.word 0x420c0024
|
||||
.word 0x2ff
|
||||
.word 0x81e4233d
|
||||
.word 0x2ff
|
||||
.word 0x800623fc
|
||||
.word 0x2ff
|
||||
.word 0x420c0021
|
||||
.word 0x2ff
|
||||
.word 0x81e4233d
|
||||
.word 0x2ff
|
||||
.word 0x800323fc
|
||||
.word 0x2ff
|
||||
.word 0x420c005f
|
||||
.word 0x2ff
|
||||
.word 0x802423fc
|
||||
.word 0x2ff
|
||||
.word 0x800623fc
|
||||
.word 0x2ff
|
||||
.word 0x420c001b
|
||||
.word 0x2ff
|
||||
.word 0x81e4233d
|
||||
.word 0x2ff
|
||||
.word 0x800323fc
|
||||
.word 0x2ff
|
||||
.word 0x420c0059
|
||||
.word 0x2ff
|
||||
.word 0x802423fc
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x800506bc
|
||||
.word 0x2ff
|
||||
.word 0x800623fc
|
||||
.word 0x2ff
|
||||
.word 0x420c0012
|
||||
.word 0x2ff
|
||||
.word 0x81e4233d
|
||||
.word 0x2ff
|
||||
.word 0x800323fc
|
||||
.word 0x2ff
|
||||
.word 0x420c0050
|
||||
.word 0x2ff
|
||||
.word 0x802423fc
|
||||
.word 0x2ff
|
||||
.word 0x800623fc
|
||||
.word 0x2ff
|
||||
.word 0x420c000c
|
||||
.word 0x2ff
|
||||
.word 0x81e4233d
|
||||
.word 0x2ff
|
||||
.word 0x800323fc
|
||||
.word 0x2ff
|
||||
.word 0x420c004a
|
||||
.word 0x2ff
|
||||
.word 0x802423fc
|
||||
.word 0x2ff
|
||||
.word 0x800623fc
|
||||
.word 0x2ff
|
||||
.word 0x420c0006
|
||||
.word 0x2ff
|
||||
.word 0x81e4233d
|
||||
.word 0x2ff
|
||||
.word 0x800323fc
|
||||
.word 0x2ff
|
||||
.word 0x420c0044
|
||||
.word 0x2ff
|
||||
.word 0x802423fc
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x800031f5
|
||||
.word 0x2ff
|
||||
.word 0x81ef733c
|
||||
.word 0x2ff
|
||||
.word 0x80010232
|
||||
.word 0x2ff
|
||||
.word 0x1f82801
|
||||
.word 0x1e07d1b
|
||||
.word 0x1f92803
|
||||
.word 0x1e07d5b
|
||||
.word 0x1fa2805
|
||||
.word 0x1e07d9b
|
||||
.word 0x80000030
|
||||
.word 0x1e07ddb
|
||||
.word 0x80000030
|
||||
.word 0x1e6c1bc
|
||||
.word 0x80000030
|
||||
.word 0x1e6c8bd
|
||||
.word 0x80000030
|
||||
.word 0x1e6d6ca
|
||||
.word 0x80000030
|
||||
.word 0x102ad40
|
||||
.word 0x80000030
|
||||
.word 0x102b581
|
||||
.word 0x80000030
|
||||
.word 0x102bdc2
|
||||
.word 0x80000030
|
||||
.word 0x1027bc3
|
||||
.word 0x3e6a002
|
||||
.word 0x1180f18
|
||||
.word 0x3e6a805
|
||||
.word 0x1180f59
|
||||
.word 0x3e6b008
|
||||
.word 0x1180f9a
|
||||
.word 0x3e6b80b
|
||||
.word 0x1180fdb
|
||||
.word 0x1f02800
|
||||
.word 0x990f18
|
||||
.word 0x1f12802
|
||||
.word 0x990f59
|
||||
.word 0x1f22804
|
||||
.word 0x990f9a
|
||||
.word 0x1f32806
|
||||
.word 0x990fdb
|
||||
.word 0x80052a32
|
||||
.word 0x19be718
|
||||
.word 0x80000030
|
||||
.word 0x19bef59
|
||||
.word 0x80000030
|
||||
.word 0x19bf79a
|
||||
.word 0x80000030
|
||||
.word 0x19bffdb
|
||||
.word 0x80000030
|
||||
.word 0x190e71b
|
||||
.word 0x80000030
|
||||
.word 0x191ef5b
|
||||
.word 0x80000030
|
||||
.word 0x192f79b
|
||||
.word 0x80000030
|
||||
.word 0x193ffdb
|
||||
.word 0x80000030
|
||||
.word 0x1f0817c
|
||||
.word 0x80000030
|
||||
.word 0x1f1897c
|
||||
.word 0x80000030
|
||||
.word 0x1f2917c
|
||||
.word 0x80010ff2
|
||||
.word 0x1f3997c
|
||||
.word 0x80305bfd
|
||||
.word 0x1e6e728
|
||||
.word 0x80315bfd
|
||||
.word 0x1e6ef68
|
||||
.word 0x80325bfd
|
||||
.word 0x1e6f7a8
|
||||
.word 0x80335bfd
|
||||
.word 0x1e6ffe8
|
||||
.word 0x80000030
|
||||
.word 0x1e7e718
|
||||
.word 0x80000030
|
||||
.word 0x1e7ef58
|
||||
.word 0x80000030
|
||||
.word 0x1e7f798
|
||||
.word 0x80000030
|
||||
.word 0x1e7ffd8
|
||||
.word 0x80000030
|
||||
.word 0x1e7e701
|
||||
.word 0x80000030
|
||||
.word 0x1e7ef41
|
||||
.word 0x80000030
|
||||
.word 0x1e7f781
|
||||
.word 0x80000030
|
||||
.word 0x1e7ffc1
|
||||
.word 0x3e68001
|
||||
.word 0x600f2c
|
||||
.word 0x3e68804
|
||||
.word 0x600f6c
|
||||
.word 0x3e69007
|
||||
.word 0x600fac
|
||||
.word 0x3e6980a
|
||||
.word 0x600fec
|
||||
.word 0x1f82801
|
||||
.word 0x1e07d1b
|
||||
.word 0x1f92803
|
||||
.word 0x1e07d5b
|
||||
.word 0x1fa2805
|
||||
.word 0x1e07d9b
|
||||
.word 0x3e6e000
|
||||
.word 0x1e07ddb
|
||||
.word 0x3e6e803
|
||||
.word 0x1e6c1bc
|
||||
.word 0x3e6f006
|
||||
.word 0x1e6c8bd
|
||||
.word 0x3e6f809
|
||||
.word 0x1e6d6ca
|
||||
.word 0x5a000fd2
|
||||
.word 0x102ad40
|
||||
.word 0x80063332
|
||||
.word 0x102b581
|
||||
.word 0x1fc3800
|
||||
.word 0x827380
|
||||
.word 0x1f03801
|
||||
.word 0x2ff
|
||||
.word 0x3e6a002
|
||||
.word 0x2ff
|
||||
.word 0x3e6e000
|
||||
.word 0x2ff
|
||||
.word 0x48006000
|
||||
.word 0x2ff
|
||||
.word 0x3e68001
|
||||
.word 0x2ff
|
||||
.word 0x10010021
|
||||
.word 0x2ff
|
||||
.word 0x3e82800
|
||||
.word 0x2ff
|
||||
.word 0x80084072
|
||||
.word 0x2ff
|
||||
.word 0x80010ff2
|
||||
.word 0x2ff
|
||||
.word 0x1f41802
|
||||
.word 0x2ff
|
||||
.word 0x1f52002
|
||||
.word 0x2ff
|
||||
.word 0x1fc1800
|
||||
.word 0x2ff
|
||||
.word 0x1f01801
|
||||
.word 0x2ff
|
||||
.word 0x1fd2000
|
||||
.word 0x1f4a17d
|
||||
.word 0x1f12001
|
||||
.word 0x1f5a97d
|
||||
.word 0x3e8e000
|
||||
.word 0x2ff
|
||||
.word 0x3e88001
|
||||
.word 0x2ff
|
||||
.word 0x3e8a002
|
||||
.word 0x2ff
|
||||
.word 0x3e8e803
|
||||
.word 0x2ff
|
||||
.word 0x3e88804
|
||||
.word 0x2ff
|
||||
.word 0x3e8a805
|
||||
.word 0x2ff
|
||||
.word 0x800318f2
|
||||
.word 0x2ff
|
||||
.word 0x800420f2
|
||||
.word 0x2ff
|
||||
.word 0x5a000ff0
|
||||
.word 0x2ff
|
||||
.word 0x800841b2
|
||||
.word 0x2ff
|
||||
.word 0x80004efc
|
||||
.word 0x2ff
|
||||
.word 0x80081bfc
|
||||
.word 0x2ff
|
||||
.word 0x80091bfc
|
||||
.word 0x2ff
|
||||
.word 0x48006000
|
||||
.word 0x2ff
|
||||
.word 0x81e31b3d
|
||||
.word 0x2ff
|
||||
@@ -0,0 +1,72 @@
|
||||
nop | mulay.x ACC, vf12, vf02
|
||||
nop | mulax.z ACC, vf12, vf03
|
||||
nop | msub.xz vf24, vf12, vf02
|
||||
nop | mulaz.x ACC, vf12, vf02
|
||||
nop | mulay.z ACC, vf12, vf03
|
||||
nop | msub.xz vf25, vf12, vf02
|
||||
nop | mulaw.x ACC, vf12, vf02
|
||||
nop | mulaz.z ACC, vf12, vf03
|
||||
nop | msub.xz vf26, vf12, vf02
|
||||
nop | mulax.x ACC, vf12, vf04
|
||||
nop | mulaw.z ACC, vf12, vf03
|
||||
nop | msub.xz vf27, vf12, vf02
|
||||
nop | mul.xz vf28, vf24, vf24
|
||||
nop | mul.xz vf29, vf25, vf25
|
||||
nop | mul.xz vf30, vf26, vf26
|
||||
nop | mul.xz vf31, vf27, vf27
|
||||
nop | subx.y vf24, vf01, vf28
|
||||
nop | subx.y vf25, vf01, vf29
|
||||
nop | subx.y vf26, vf01, vf30
|
||||
nop | subx.y vf27, vf01, vf31
|
||||
nop | subz.y vf24, vf24, vf28
|
||||
nop | subz.y vf25, vf25, vf29
|
||||
nop | subz.y vf26, vf26, vf30
|
||||
nop | subz.y vf27, vf27, vf31
|
||||
nop | mulx.w vf24, vf01, vf02
|
||||
nop | muly.w vf25, vf01, vf02
|
||||
nop | mulz.w vf26, vf01, vf02
|
||||
nop | mulw.w vf27, vf01, vf02
|
||||
nop | mulax.xyzw ACC, vf05, vf24
|
||||
nop | madday.xyzw ACC, vf06, vf24
|
||||
nop | maddz.xyz vf16, vf07, vf24
|
||||
nop | subw.z vf24, vf24, vf00
|
||||
nop | mulax.xyzw ACC, vf05, vf25
|
||||
nop | madday.xyzw ACC, vf06, vf25
|
||||
nop | maddz.xyz vf17, vf07, vf25
|
||||
div Q, vf00.w, vf24.z | subw.z vf25, vf25, vf00
|
||||
nop | mulax.xyzw ACC, vf05, vf26
|
||||
nop | madday.xyzw ACC, vf06, vf26
|
||||
nop | maddz.xyz vf18, vf07, vf26
|
||||
nop | subw.z vf26, vf26, vf00
|
||||
nop | mulax.xyzw ACC, vf05, vf27
|
||||
nop | madday.xyzw ACC, vf06, vf27
|
||||
nop | mul.w vf20, vf00, Q
|
||||
div Q, vf00.w, vf25.z | maddz.xyz vf19, vf07, vf27
|
||||
nop | subw.z vf27, vf27, vf00
|
||||
nop | maxx.xyz vf16, vf16, vf00
|
||||
nop | maxx.xyz vf17, vf17, vf00
|
||||
nop | maxx.xyz vf18, vf18, vf00
|
||||
nop | maxx.xyz vf19, vf19, vf00
|
||||
nop | mul.w vf21, vf00, Q
|
||||
div Q, vf00.w, vf26.z | mula.xyzw ACC, vf01, vf11
|
||||
nop | maddax.xyz ACC, vf08, vf16
|
||||
nop | madday.xyz ACC, vf09, vf16
|
||||
nop | maddz.xyz vf20, vf10, vf16
|
||||
nop | mula.xyzw ACC, vf01, vf11
|
||||
nop | maddax.xyz ACC, vf08, vf17
|
||||
nop | madday.xyz ACC, vf09, vf17
|
||||
nop | mul.w vf22, vf00, Q
|
||||
nop | maddz.xyz vf21, vf10, vf17
|
||||
div Q, vf00.w, vf27.z | mula.xyzw ACC, vf01, vf11
|
||||
nop | maddax.xyz ACC, vf08, vf18
|
||||
nop | madday.xyz ACC, vf09, vf18
|
||||
nop | maddz.xyz vf22, vf10, vf18
|
||||
nop | mula.xyzw ACC, vf01, vf11
|
||||
nop | maddax.xyz ACC, vf08, vf19
|
||||
nop | madday.xyz ACC, vf09, vf19
|
||||
nop | maddz.xyz vf23, vf10, vf19
|
||||
nop | mul.w vf23, vf00, Q
|
||||
nop | miniy.xyz vf20, vf20, vf12
|
||||
nop | miniy.xyz vf21, vf21, vf12
|
||||
nop | miniy.xyz vf22, vf22, vf12 :e
|
||||
nop | miniy.xyz vf23, vf23, vf12
|
||||
@@ -0,0 +1,144 @@
|
||||
.word 0x80000030
|
||||
.word 0x10261bd
|
||||
.word 0x80000030
|
||||
.word 0x4361bc
|
||||
.word 0x80000030
|
||||
.word 0x142660c
|
||||
.word 0x80000030
|
||||
.word 0x10261be
|
||||
.word 0x80000030
|
||||
.word 0x4361bd
|
||||
.word 0x80000030
|
||||
.word 0x142664d
|
||||
.word 0x80000030
|
||||
.word 0x10261bf
|
||||
.word 0x80000030
|
||||
.word 0x4361be
|
||||
.word 0x80000030
|
||||
.word 0x142668e
|
||||
.word 0x80000030
|
||||
.word 0x10461bc
|
||||
.word 0x80000030
|
||||
.word 0x4361bf
|
||||
.word 0x80000030
|
||||
.word 0x14266cf
|
||||
.word 0x80000030
|
||||
.word 0x158c72a
|
||||
.word 0x80000030
|
||||
.word 0x159cf6a
|
||||
.word 0x80000030
|
||||
.word 0x15ad7aa
|
||||
.word 0x80000030
|
||||
.word 0x15bdfea
|
||||
.word 0x80000030
|
||||
.word 0x9c0e04
|
||||
.word 0x80000030
|
||||
.word 0x9d0e44
|
||||
.word 0x80000030
|
||||
.word 0x9e0e84
|
||||
.word 0x80000030
|
||||
.word 0x9f0ec4
|
||||
.word 0x80000030
|
||||
.word 0x9cc606
|
||||
.word 0x80000030
|
||||
.word 0x9dce46
|
||||
.word 0x80000030
|
||||
.word 0x9ed686
|
||||
.word 0x80000030
|
||||
.word 0x9fdec6
|
||||
.word 0x80000030
|
||||
.word 0x220e18
|
||||
.word 0x80000030
|
||||
.word 0x220e59
|
||||
.word 0x80000030
|
||||
.word 0x220e9a
|
||||
.word 0x80000030
|
||||
.word 0x220edb
|
||||
.word 0x80000030
|
||||
.word 0x1f829bc
|
||||
.word 0x80000030
|
||||
.word 0x1f830bd
|
||||
.word 0x80000030
|
||||
.word 0x1d83c0a
|
||||
.word 0x80000030
|
||||
.word 0x40c607
|
||||
.word 0x80000030
|
||||
.word 0x1f929bc
|
||||
.word 0x80000030
|
||||
.word 0x1f930bd
|
||||
.word 0x80000030
|
||||
.word 0x1d93c4a
|
||||
.word 0x817803bc
|
||||
.word 0x40ce47
|
||||
.word 0x80000030
|
||||
.word 0x1fa29bc
|
||||
.word 0x80000030
|
||||
.word 0x1fa30bd
|
||||
.word 0x80000030
|
||||
.word 0x1da3c8a
|
||||
.word 0x80000030
|
||||
.word 0x40d687
|
||||
.word 0x80000030
|
||||
.word 0x1fb29bc
|
||||
.word 0x80000030
|
||||
.word 0x1fb30bd
|
||||
.word 0x80000030
|
||||
.word 0x20051c
|
||||
.word 0x817903bc
|
||||
.word 0x1db3cca
|
||||
.word 0x80000030
|
||||
.word 0x40dec7
|
||||
.word 0x80000030
|
||||
.word 0x1c08410
|
||||
.word 0x80000030
|
||||
.word 0x1c08c50
|
||||
.word 0x80000030
|
||||
.word 0x1c09490
|
||||
.word 0x80000030
|
||||
.word 0x1c09cd0
|
||||
.word 0x80000030
|
||||
.word 0x20055c
|
||||
.word 0x817a03bc
|
||||
.word 0x1eb0abe
|
||||
.word 0x80000030
|
||||
.word 0x1d040bc
|
||||
.word 0x80000030
|
||||
.word 0x1d048bd
|
||||
.word 0x80000030
|
||||
.word 0x1d0550a
|
||||
.word 0x80000030
|
||||
.word 0x1eb0abe
|
||||
.word 0x80000030
|
||||
.word 0x1d140bc
|
||||
.word 0x80000030
|
||||
.word 0x1d148bd
|
||||
.word 0x80000030
|
||||
.word 0x20059c
|
||||
.word 0x80000030
|
||||
.word 0x1d1554a
|
||||
.word 0x817b03bc
|
||||
.word 0x1eb0abe
|
||||
.word 0x80000030
|
||||
.word 0x1d240bc
|
||||
.word 0x80000030
|
||||
.word 0x1d248bd
|
||||
.word 0x80000030
|
||||
.word 0x1d2558a
|
||||
.word 0x80000030
|
||||
.word 0x1eb0abe
|
||||
.word 0x80000030
|
||||
.word 0x1d340bc
|
||||
.word 0x80000030
|
||||
.word 0x1d348bd
|
||||
.word 0x80000030
|
||||
.word 0x1d355ca
|
||||
.word 0x80000030
|
||||
.word 0x2005dc
|
||||
.word 0x80000030
|
||||
.word 0x1cca515
|
||||
.word 0x80000030
|
||||
.word 0x1ccad55
|
||||
.word 0x80000030
|
||||
.word 0x41ccb595
|
||||
.word 0x80000030
|
||||
.word 0x1ccbdd5
|
||||
@@ -0,0 +1,792 @@
|
||||
b L1 | nop
|
||||
nop | nop
|
||||
b L2 | nop
|
||||
nop | nop
|
||||
b L13 | nop
|
||||
nop | nop
|
||||
b L21 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L1:
|
||||
iaddiu vi01, vi00, 0x358 | nop
|
||||
iaddiu vi02, vi00, 0x364 | nop
|
||||
mfir.x vf01, vi01 | nop
|
||||
mfir.y vf01, vi02 | nop
|
||||
mfir.z vf01, vi01 | nop
|
||||
mfir.w vf01, vi02 | nop
|
||||
lq.xyzw vf02, 880(vi00) | nop
|
||||
lq.xyzw vf03, 882(vi00) | nop
|
||||
lq.xyzw vf04, 883(vi00) | nop
|
||||
lq.xyzw vf05, 884(vi00) | nop
|
||||
lq.xyzw vf12, 885(vi00) | nop :e
|
||||
lq.xyzw vf13, 881(vi00) | nop
|
||||
L2:
|
||||
iaddiu vi03, vi00, 0x158 | nop
|
||||
ilwr.x vi08, vi03 | nop
|
||||
mtir vi02, vf01.x | nop
|
||||
iaddi vi03, vi03, 0x1 | addw.z vf25, vf00, vf00
|
||||
lq.xyzw vf25, 888(vi00) | addw.z vf26, vf00, vf00
|
||||
lq.xyzw vf29, 889(vi00) | addw.z vf27, vf00, vf00
|
||||
lq.xyzw vf30, 891(vi00) | addw.z vf28, vf00, vf00
|
||||
lq.xyzw vf06, 0(vi00) | nop
|
||||
lq.xyzw vf07, 1(vi00) | nop
|
||||
lq.xyzw vf08, 2(vi00) | nop
|
||||
lq.xyzw vf09, 3(vi00) | nop
|
||||
mtir vi01, vf01.y | nop
|
||||
sq.xyzw vf25, 0(vi02) | nop
|
||||
sq.xyzw vf29, 1(vi02) | nop
|
||||
sq.xyzw vf30, 2(vi02) | nop
|
||||
sq.xyzw vf25, 0(vi01) | nop
|
||||
sq.xyzw vf29, 1(vi01) | nop
|
||||
sq.xyzw vf30, 2(vi01) | nop
|
||||
L3:
|
||||
lqi.xyzw vf16, vi03 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
mtir vi04, vf16.x | nop
|
||||
mtir vi05, vf16.y | nop
|
||||
mtir vi06, vf16.z | nop
|
||||
nop | nop
|
||||
lq.xyzw vf17, 4(vi04) | nop
|
||||
lq.xyzw vf18, 4(vi05) | nop
|
||||
lq.xyzw vf19, 4(vi06) | nop
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
|
||||
nop | madday.xyzw ACC, vf07, vf17
|
||||
nop | maddz.xyzw vf17, vf08, vf17
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | sub.xyzw vf29, vf18, vf15
|
||||
nop | sub.xyzw vf30, vf19, vf15
|
||||
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
|
||||
nop | mul.xyzw vf21, vf17, vf02
|
||||
nop | madday.xyzw ACC, vf07, vf18
|
||||
nop | maddz.xyzw vf18, vf08, vf18
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | maddax.xyzw ACC, vf06, vf19
|
||||
nop | madday.xyzw ACC, vf07, vf19
|
||||
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
|
||||
nop | maddz.xyzw vf19, vf08, vf19
|
||||
nop | mul.xyzw vf22, vf18, vf02
|
||||
nop | opmula.xyz ACC, vf29, vf30
|
||||
nop | opmsub.xyz vf29, vf30, vf29
|
||||
nop | add.xy vf25, vf17, vf03
|
||||
nop | add.xyzw vf17, vf17, vf05
|
||||
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
|
||||
nop | mul.xyzw vf23, vf19, vf02
|
||||
nop | mul.xyz vf29, vf29, vf15
|
||||
nop | mul.xy vf25, vf25, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf17
|
||||
nop | max.xyzw vf11, vf11, vf17
|
||||
nop | ftoi4.xyzw vf17, vf17
|
||||
nop | add.xy vf26, vf18, vf03
|
||||
nop | add.xyzw vf18, vf18, vf05
|
||||
fcset 0x0 | addy.x vf29, vf29, vf29
|
||||
nop | mul.xyz vf19, vf19, Q
|
||||
sq.xyzw vf25, 4(vi02) | mini.xyzw vf10, vf10, vf18
|
||||
sq.xyzw vf17, 5(vi02) | max.xyzw vf11, vf11, vf18
|
||||
nop | clipw.xyz vf21, vf21
|
||||
nop | mul.xy vf26, vf26, vf04
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | ftoi4.xyzw vf18, vf18
|
||||
nop | add.xy vf27, vf19, vf03
|
||||
sq.xyzw vf26, 6(vi02) | add.xyzw vf19, vf19, vf05
|
||||
fsand vi01, 0x2 | clipw.xyz vf22, vf22
|
||||
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
|
||||
ibeq vi00, vi01, L4 | mul.xy vf27, vf27, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf19
|
||||
b L5 | nop
|
||||
lq.xyzw vf31, 887(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L4:
|
||||
lq.xyzw vf31, 886(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L5:
|
||||
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
|
||||
ibne vi00, vi01, L11 | nop
|
||||
iaddi vi08, vi08, -0x1 | nop
|
||||
sq.xyzw vf27, 8(vi02) | nop
|
||||
sq.xyzw vf31, 3(vi02) | nop
|
||||
sq.xyzw vf19, 9(vi02) | nop
|
||||
xgkick vi02 | nop
|
||||
mtir vi02, vf01.y | nop
|
||||
mr32.xyzw vf01, vf01 | nop
|
||||
L6:
|
||||
ibgtz vi08, L3 | nop
|
||||
nop | nop
|
||||
iaddiu vi03, vi00, 0x158 | nop
|
||||
ilwr.x vi08, vi03 | nop
|
||||
iaddi vi03, vi03, 0x1 | nop
|
||||
L7:
|
||||
lqi.xyzw vf16, vi03 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
mtir vi04, vf16.x | nop
|
||||
mtir vi05, vf16.y | nop
|
||||
mtir vi06, vf16.z | nop
|
||||
nop | nop
|
||||
lq.xyzw vf17, 174(vi04) | nop
|
||||
lq.xyzw vf18, 174(vi06) | nop
|
||||
lq.xyzw vf19, 174(vi05) | nop
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
|
||||
nop | madday.xyzw ACC, vf07, vf17
|
||||
nop | maddz.xyzw vf17, vf08, vf17
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | sub.xyzw vf29, vf18, vf15
|
||||
nop | sub.xyzw vf30, vf19, vf15
|
||||
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
|
||||
nop | mul.xyzw vf21, vf17, vf02
|
||||
nop | madday.xyzw ACC, vf07, vf18
|
||||
nop | maddz.xyzw vf18, vf08, vf18
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | maddax.xyzw ACC, vf06, vf19
|
||||
nop | madday.xyzw ACC, vf07, vf19
|
||||
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
|
||||
nop | maddz.xyzw vf19, vf08, vf19
|
||||
nop | mul.xyzw vf22, vf18, vf02
|
||||
nop | opmula.xyz ACC, vf29, vf30
|
||||
nop | opmsub.xyz vf29, vf30, vf29
|
||||
nop | add.xy vf25, vf17, vf03
|
||||
nop | add.xyzw vf17, vf17, vf05
|
||||
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
|
||||
nop | mul.xyzw vf23, vf19, vf02
|
||||
nop | mul.xyz vf29, vf29, vf15
|
||||
nop | mul.xy vf25, vf25, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf17
|
||||
nop | max.xyzw vf11, vf11, vf17
|
||||
nop | ftoi4.xyzw vf17, vf17
|
||||
nop | add.xy vf26, vf18, vf03
|
||||
nop | add.xyzw vf18, vf18, vf05
|
||||
fcset 0x0 | addy.x vf29, vf29, vf29
|
||||
nop | mul.xyz vf19, vf19, Q
|
||||
sq.xyzw vf25, 4(vi02) | mini.xyzw vf10, vf10, vf18
|
||||
sq.xyzw vf17, 5(vi02) | max.xyzw vf11, vf11, vf18
|
||||
nop | clipw.xyz vf21, vf21
|
||||
nop | mul.xy vf26, vf26, vf04
|
||||
iaddi vi08, vi08, -0x1 | addz.x vf29, vf29, vf29
|
||||
nop | ftoi4.xyzw vf18, vf18
|
||||
nop | add.xy vf27, vf19, vf03
|
||||
sq.xyzw vf26, 6(vi02) | add.xyzw vf19, vf19, vf05
|
||||
fsand vi01, 0x2 | clipw.xyz vf22, vf22
|
||||
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
|
||||
ibeq vi00, vi01, L8 | mul.xy vf27, vf27, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf19
|
||||
b L9 | nop
|
||||
lq.xyzw vf31, 887(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L8:
|
||||
lq.xyzw vf31, 886(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L9:
|
||||
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
|
||||
ibne vi00, vi01, L12 | nop
|
||||
sq.xyzw vf27, 8(vi02) | nop
|
||||
sq.xyzw vf31, 3(vi02) | nop
|
||||
sq.xyzw vf19, 9(vi02) | nop
|
||||
xgkick vi02 | nop
|
||||
mtir vi02, vf01.y | nop
|
||||
mr32.xyzw vf01, vf01 | nop
|
||||
L10:
|
||||
ibgtz vi08, L7 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L11:
|
||||
sq.xyzw vf21, 1000(vi00) | nop
|
||||
sq.xyzw vf22, 1003(vi00) | nop
|
||||
sq.xyzw vf23, 1006(vi00) | nop
|
||||
sq.xyzw vf31, 942(vi00) | nop
|
||||
mfir.x vf29, vi02 | nop
|
||||
mfir.y vf29, vi03 | nop
|
||||
mfir.z vf29, vi07 | nop
|
||||
bal vi15, L36 | nop
|
||||
mfir.w vf29, vi08 | nop
|
||||
mtir vi08, vf29.w | nop
|
||||
mtir vi03, vf29.y | nop
|
||||
mtir vi07, vf29.z | nop
|
||||
b L6 | nop
|
||||
mtir vi02, vf29.x | nop
|
||||
L12:
|
||||
sq.xyzw vf21, 1000(vi00) | nop
|
||||
sq.xyzw vf22, 1003(vi00) | nop
|
||||
sq.xyzw vf23, 1006(vi00) | nop
|
||||
sq.xyzw vf31, 942(vi00) | nop
|
||||
mfir.x vf29, vi02 | nop
|
||||
mfir.y vf29, vi03 | nop
|
||||
mfir.z vf29, vi07 | nop
|
||||
bal vi15, L36 | nop
|
||||
mfir.w vf29, vi08 | nop
|
||||
mtir vi08, vf29.w | nop
|
||||
mtir vi03, vf29.y | nop
|
||||
mtir vi07, vf29.z | nop
|
||||
b L10 | nop
|
||||
mtir vi02, vf29.x | nop
|
||||
L13:
|
||||
iaddiu vi03, vi00, 0x258 | nop
|
||||
ilwr.x vi08, vi03 | nop
|
||||
mtir vi02, vf01.x | nop
|
||||
iaddi vi03, vi03, 0x1 | addw.z vf25, vf00, vf00
|
||||
lq.xyzw vf25, 888(vi00) | addw.z vf26, vf00, vf00
|
||||
lq.xyzw vf29, 889(vi00) | addw.z vf27, vf00, vf00
|
||||
lq.xyzw vf30, 892(vi00) | nop
|
||||
lq.xyzw vf06, 0(vi00) | nop
|
||||
lq.xyzw vf07, 1(vi00) | nop
|
||||
lq.xyzw vf08, 2(vi00) | nop
|
||||
lq.xyzw vf09, 3(vi00) | nop
|
||||
mtir vi01, vf01.y | nop
|
||||
sq.xyzw vf25, 0(vi02) | nop
|
||||
sq.xyzw vf29, 1(vi02) | nop
|
||||
sq.xyzw vf30, 2(vi02) | nop
|
||||
sq.xyzw vf25, 0(vi01) | nop
|
||||
sq.xyzw vf29, 1(vi01) | nop
|
||||
sq.xyzw vf30, 2(vi01) | nop
|
||||
L14:
|
||||
lqi.xyzw vf16, vi03 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
mtir vi06, vf16.z | nop
|
||||
mtir vi04, vf16.x | nop
|
||||
mtir vi05, vf16.y | nop
|
||||
ibeq vi00, vi06, L15 | nop
|
||||
nop | nop
|
||||
lq.xyzw vf17, 4(vi04) | nop
|
||||
lq.xyzw vf18, 4(vi05) | nop
|
||||
lq.xyzw vf19, 174(vi05) | nop
|
||||
b L16 | nop
|
||||
lq.xyzw vf20, 174(vi04) | nop
|
||||
L15:
|
||||
lq.xyzw vf17, 4(vi05) | nop
|
||||
lq.xyzw vf18, 4(vi04) | nop
|
||||
lq.xyzw vf19, 174(vi04) | nop
|
||||
lq.xyzw vf20, 174(vi05) | nop
|
||||
L16:
|
||||
move.xyzw vf15, vf17 | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | maddax.xyzw ACC, vf06, vf17
|
||||
nop | madday.xyzw ACC, vf07, vf17
|
||||
nop | maddz.xyzw vf17, vf08, vf17
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | sub.xyzw vf29, vf18, vf15
|
||||
nop | sub.xyzw vf30, vf19, vf15
|
||||
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
|
||||
nop | mul.xyzw vf21, vf17, vf02
|
||||
nop | madday.xyzw ACC, vf07, vf18
|
||||
nop | maddz.xyzw vf18, vf08, vf18
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | maddax.xyzw ACC, vf06, vf19
|
||||
nop | madday.xyzw ACC, vf07, vf19
|
||||
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
|
||||
nop | maddz.xyzw vf19, vf08, vf19
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | maddax.xyzw ACC, vf06, vf20
|
||||
nop | madday.xyzw ACC, vf07, vf20
|
||||
nop | maddz.xyzw vf20, vf08, vf20
|
||||
nop | mul.xyzw vf22, vf18, vf02
|
||||
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
|
||||
nop | add.xy vf25, vf17, vf03
|
||||
nop | add.xyzw vf17, vf17, vf05
|
||||
nop | opmula.xyz ACC, vf29, vf30
|
||||
nop | opmsub.xyz vf29, vf30, vf29
|
||||
nop | mul.xyzw vf23, vf19, vf02
|
||||
nop | mul.xyz vf29, vf29, vf15
|
||||
div Q, vf12.x, vf20.w | mul.xyz vf19, vf19, Q
|
||||
nop | mul.xyzw vf24, vf20, vf02
|
||||
nop | mul.xy vf25, vf25, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf17
|
||||
nop | max.xyzw vf11, vf11, vf17
|
||||
nop | ftoi4.xyzw vf17, vf17
|
||||
nop | add.xy vf26, vf18, vf03
|
||||
nop | mul.xyz vf20, vf20, Q
|
||||
nop | add.xyzw vf18, vf18, vf05
|
||||
nop | addy.x vf29, vf29, vf29
|
||||
sq.xyzw vf25, 4(vi02) | mini.xyzw vf10, vf10, vf18
|
||||
sq.xyzw vf17, 5(vi02) | max.xyzw vf11, vf11, vf18
|
||||
nop | clipw.xyz vf21, vf21
|
||||
nop | mul.xy vf26, vf26, vf04
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | ftoi4.xyzw vf18, vf18
|
||||
nop | add.xy vf27, vf19, vf03
|
||||
sq.xyzw vf26, 6(vi02) | add.xyzw vf19, vf19, vf05
|
||||
fsand vi01, 0x2 | clipw.xyz vf22, vf22
|
||||
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
|
||||
nop | clipw.xyz vf24, vf24
|
||||
nop | add.xy vf28, vf20, vf03
|
||||
nop | add.xyzw vf20, vf20, vf05
|
||||
nop | mul.xy vf27, vf27, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf19
|
||||
nop | max.xyzw vf11, vf11, vf19
|
||||
ibeq vi00, vi01, L17 | mul.xy vf28, vf28, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf20
|
||||
b L18 | nop
|
||||
lq.xyzw vf31, 887(vi00) | max.xyzw vf11, vf11, vf20
|
||||
L17:
|
||||
lq.xyzw vf31, 886(vi00) | max.xyzw vf11, vf11, vf20
|
||||
L18:
|
||||
fcand vi01, 0xffffff | ftoi4.xyzw vf19, vf19
|
||||
ibne vi00, vi01, L20 | max.xyzw vf11, vf11, vf20
|
||||
iaddi vi08, vi08, -0x1 | nop
|
||||
sq.xyzw vf27, 8(vi02) | ftoi4.xyzw vf20, vf20
|
||||
sq.xyzw vf31, 3(vi02) | nop
|
||||
sq.xyzw vf19, 9(vi02) | nop
|
||||
sq.xyzw vf28, 10(vi02) | nop
|
||||
sq.xyzw vf20, 11(vi02) | nop
|
||||
xgkick vi02 | nop
|
||||
mtir vi02, vf01.y | nop
|
||||
mr32.xyzw vf01, vf01 | nop
|
||||
L19:
|
||||
ibgtz vi08, L14 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L20:
|
||||
sq.xyzw vf21, 1000(vi00) | nop
|
||||
sq.xyzw vf22, 1003(vi00) | nop
|
||||
sq.xyzw vf23, 1006(vi00) | nop
|
||||
sq.xyzw vf24, 1009(vi00) | nop
|
||||
sq.xyzw vf31, 942(vi00) | nop
|
||||
mfir.x vf29, vi02 | nop
|
||||
mfir.y vf29, vi03 | nop
|
||||
mfir.z vf29, vi07 | nop
|
||||
bal vi15, L37 | nop
|
||||
mfir.w vf29, vi08 | nop
|
||||
mtir vi08, vf29.w | nop
|
||||
mtir vi03, vf29.y | nop
|
||||
mtir vi07, vf29.z | nop
|
||||
b L19 | nop
|
||||
mtir vi02, vf29.x | nop
|
||||
L21:
|
||||
iaddiu vi03, vi00, 0x158 | nop
|
||||
ilwr.x vi08, vi03 | nop
|
||||
mtir vi02, vf01.x | nop
|
||||
iaddi vi03, vi03, 0x1 | addw.z vf25, vf00, vf00
|
||||
lq.xyzw vf25, 888(vi00) | addw.z vf26, vf00, vf00
|
||||
lq.xyzw vf29, 889(vi00) | addw.z vf27, vf00, vf00
|
||||
lq.xyzw vf30, 891(vi00) | addw.z vf28, vf00, vf00
|
||||
lq.xyzw vf06, 0(vi00) | nop
|
||||
lq.xyzw vf07, 1(vi00) | nop
|
||||
lq.xyzw vf08, 2(vi00) | nop
|
||||
lq.xyzw vf09, 3(vi00) | nop
|
||||
mtir vi01, vf01.y | nop
|
||||
sq.xyzw vf25, 0(vi02) | nop
|
||||
sq.xyzw vf29, 1(vi02) | nop
|
||||
sq.xyzw vf30, 2(vi02) | nop
|
||||
sq.xyzw vf25, 0(vi01) | nop
|
||||
sq.xyzw vf29, 1(vi01) | nop
|
||||
sq.xyzw vf30, 2(vi01) | nop
|
||||
L22:
|
||||
lqi.xyzw vf16, vi03 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
mtir vi01, vf16.w | nop
|
||||
mtir vi04, vf16.x | nop
|
||||
mtir vi05, vf16.y | nop
|
||||
mtir vi06, vf16.z | nop
|
||||
ibeq vi00, vi01, L23 | nop
|
||||
lq.xyzw vf17, 4(vi04) | nop
|
||||
lq.xyzw vf18, 4(vi05) | nop
|
||||
b L24 | nop
|
||||
lq.xyzw vf19, 4(vi06) | nop
|
||||
L23:
|
||||
lq.xyzw vf19, 4(vi05) | nop
|
||||
lq.xyzw vf18, 4(vi06) | nop
|
||||
L24:
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
|
||||
nop | madday.xyzw ACC, vf07, vf17
|
||||
nop | sub.xyzw vf29, vf18, vf17
|
||||
nop | sub.xyzw vf30, vf19, vf17
|
||||
nop | maddz.xyzw vf17, vf08, vf17
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
|
||||
nop | madday.xyzw ACC, vf07, vf18
|
||||
nop | mul.xyzw vf21, vf17, vf02
|
||||
nop | maddz.xyzw vf18, vf08, vf18
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | maddax.xyzw ACC, vf06, vf19
|
||||
nop | madday.xyzw ACC, vf07, vf19
|
||||
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
|
||||
nop | maddz.xyzw vf19, vf08, vf19
|
||||
nop | mul.xyzw vf22, vf18, vf02
|
||||
nop | opmula.xyz ACC, vf29, vf30
|
||||
nop | opmsub.xyz vf29, vf30, vf29
|
||||
nop | add.xy vf25, vf17, vf03
|
||||
nop | add.xyzw vf17, vf17, vf05
|
||||
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
|
||||
nop | mul.xyzw vf23, vf19, vf02
|
||||
nop | mul.xyz vf29, vf29, vf15
|
||||
nop | mul.xy vf25, vf25, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf17
|
||||
nop | max.xyzw vf11, vf11, vf17
|
||||
nop | ftoi4.xyzw vf17, vf17
|
||||
nop | add.xy vf26, vf18, vf03
|
||||
nop | add.xyzw vf18, vf18, vf05
|
||||
fcset 0x0 | addy.x vf29, vf29, vf29
|
||||
nop | mul.xyz vf19, vf19, Q
|
||||
sq.xyzw vf25, 4(vi02) | mini.xyzw vf10, vf10, vf18
|
||||
sq.xyzw vf17, 5(vi02) | max.xyzw vf11, vf11, vf18
|
||||
nop | clipw.xyz vf21, vf21
|
||||
nop | mul.xy vf26, vf26, vf04
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | ftoi4.xyzw vf18, vf18
|
||||
nop | add.xy vf27, vf19, vf03
|
||||
sq.xyzw vf26, 6(vi02) | add.xyzw vf19, vf19, vf05
|
||||
fsand vi01, 0x2 | clipw.xyz vf22, vf22
|
||||
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
|
||||
ibeq vi00, vi01, L25 | mul.xy vf27, vf27, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf19
|
||||
b L26 | nop
|
||||
lq.xyzw vf31, 887(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L25:
|
||||
lq.xyzw vf31, 886(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L26:
|
||||
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
|
||||
ibne vi00, vi01, L34 | nop
|
||||
iaddi vi08, vi08, -0x1 | nop
|
||||
sq.xyzw vf27, 8(vi02) | nop
|
||||
sq.xyzw vf31, 3(vi02) | nop
|
||||
sq.xyzw vf19, 9(vi02) | nop
|
||||
xgkick vi02 | nop
|
||||
mtir vi02, vf01.y | nop
|
||||
mr32.xyzw vf01, vf01 | nop
|
||||
L27:
|
||||
ibgtz vi08, L22 | nop
|
||||
nop | nop
|
||||
iaddiu vi03, vi00, 0x158 | nop
|
||||
ilwr.x vi08, vi03 | nop
|
||||
iaddi vi03, vi03, 0x1 | nop
|
||||
L28:
|
||||
lqi.xyzw vf16, vi03 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
mtir vi01, vf16.w | nop
|
||||
mtir vi04, vf16.x | nop
|
||||
mtir vi05, vf16.y | nop
|
||||
mtir vi06, vf16.z | nop
|
||||
ibne vi00, vi01, L29 | nop
|
||||
lq.xyzw vf17, 174(vi04) | nop
|
||||
lq.xyzw vf18, 174(vi05) | nop
|
||||
b L30 | nop
|
||||
lq.xyzw vf19, 174(vi06) | nop
|
||||
L29:
|
||||
lq.xyzw vf19, 174(vi05) | nop
|
||||
lq.xyzw vf18, 174(vi06) | nop
|
||||
L30:
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
move.xyzw vf15, vf17 | maddax.xyzw ACC, vf06, vf17
|
||||
nop | madday.xyzw ACC, vf07, vf17
|
||||
nop | maddz.xyzw vf17, vf08, vf17
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | sub.xyzw vf29, vf18, vf15
|
||||
nop | sub.xyzw vf30, vf19, vf15
|
||||
div Q, vf12.x, vf17.w | maddax.xyzw ACC, vf06, vf18
|
||||
nop | mul.xyzw vf21, vf17, vf02
|
||||
nop | madday.xyzw ACC, vf07, vf18
|
||||
nop | maddz.xyzw vf18, vf08, vf18
|
||||
nop | mulaw.xyzw ACC, vf09, vf00
|
||||
nop | maddax.xyzw ACC, vf06, vf19
|
||||
nop | madday.xyzw ACC, vf07, vf19
|
||||
div Q, vf12.x, vf18.w | mul.xyz vf17, vf17, Q
|
||||
nop | maddz.xyzw vf19, vf08, vf19
|
||||
nop | mul.xyzw vf22, vf18, vf02
|
||||
nop | opmula.xyz ACC, vf29, vf30
|
||||
nop | opmsub.xyz vf29, vf30, vf29
|
||||
nop | add.xy vf25, vf17, vf03
|
||||
nop | add.xyzw vf17, vf17, vf05
|
||||
div Q, vf12.x, vf19.w | mul.xyz vf18, vf18, Q
|
||||
nop | mul.xyzw vf23, vf19, vf02
|
||||
nop | mul.xyz vf29, vf29, vf15
|
||||
nop | mul.xy vf25, vf25, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf17
|
||||
nop | max.xyzw vf11, vf11, vf17
|
||||
nop | ftoi4.xyzw vf17, vf17
|
||||
nop | add.xy vf26, vf18, vf03
|
||||
nop | add.xyzw vf18, vf18, vf05
|
||||
fcset 0x0 | addy.x vf29, vf29, vf29
|
||||
nop | mul.xyz vf19, vf19, Q
|
||||
sq.xyzw vf25, 4(vi02) | mini.xyzw vf10, vf10, vf18
|
||||
sq.xyzw vf17, 5(vi02) | max.xyzw vf11, vf11, vf18
|
||||
nop | clipw.xyz vf21, vf21
|
||||
nop | mul.xy vf26, vf26, vf04
|
||||
nop | addz.x vf29, vf29, vf29
|
||||
nop | ftoi4.xyzw vf18, vf18
|
||||
nop | add.xy vf27, vf19, vf03
|
||||
sq.xyzw vf26, 6(vi02) | add.xyzw vf19, vf19, vf05
|
||||
fsand vi01, 0x2 | clipw.xyz vf22, vf22
|
||||
sq.xyzw vf18, 7(vi02) | clipw.xyz vf23, vf23
|
||||
ibeq vi00, vi01, L31 | mul.xy vf27, vf27, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf19
|
||||
b L32 | nop
|
||||
lq.xyzw vf31, 887(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L31:
|
||||
lq.xyzw vf31, 886(vi00) | max.xyzw vf11, vf11, vf19
|
||||
L32:
|
||||
fcand vi01, 0x3ffff | ftoi4.xyzw vf19, vf19
|
||||
ibne vi00, vi01, L35 | nop
|
||||
iaddi vi08, vi08, -0x1 | nop
|
||||
sq.xyzw vf27, 8(vi02) | nop
|
||||
sq.xyzw vf31, 3(vi02) | nop
|
||||
sq.xyzw vf19, 9(vi02) | nop
|
||||
xgkick vi02 | nop
|
||||
mtir vi02, vf01.y | nop
|
||||
mr32.xyzw vf01, vf01 | nop
|
||||
L33:
|
||||
ibgtz vi08, L28 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L34:
|
||||
sq.xyzw vf21, 1000(vi00) | nop
|
||||
sq.xyzw vf22, 1003(vi00) | nop
|
||||
sq.xyzw vf23, 1006(vi00) | nop
|
||||
sq.xyzw vf31, 942(vi00) | nop
|
||||
mfir.x vf29, vi02 | nop
|
||||
mfir.y vf29, vi03 | nop
|
||||
mfir.z vf29, vi07 | nop
|
||||
bal vi15, L36 | nop
|
||||
mfir.w vf29, vi08 | nop
|
||||
mtir vi08, vf29.w | nop
|
||||
mtir vi03, vf29.y | nop
|
||||
mtir vi07, vf29.z | nop
|
||||
b L27 | nop
|
||||
mtir vi02, vf29.x | nop
|
||||
L35:
|
||||
sq.xyzw vf21, 1000(vi00) | nop
|
||||
sq.xyzw vf22, 1003(vi00) | nop
|
||||
sq.xyzw vf23, 1006(vi00) | nop
|
||||
sq.xyzw vf31, 942(vi00) | nop
|
||||
mfir.x vf29, vi02 | nop
|
||||
mfir.y vf29, vi03 | nop
|
||||
mfir.z vf29, vi07 | nop
|
||||
bal vi15, L36 | nop
|
||||
mfir.w vf29, vi08 | nop
|
||||
mtir vi08, vf29.w | nop
|
||||
mtir vi03, vf29.y | nop
|
||||
mtir vi07, vf29.z | nop
|
||||
b L33 | nop
|
||||
mtir vi02, vf29.x | nop
|
||||
L36:
|
||||
sq.xyzw vf00, 893(vi00) | nop
|
||||
sq.xyzw vf00, 900(vi00) | nop
|
||||
sq.xyzw vf00, 907(vi00) | nop
|
||||
sq.xyzw vf00, 914(vi00) | nop
|
||||
sq.xyzw vf00, 921(vi00) | nop
|
||||
sq.xyzw vf00, 928(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2d4 | nop
|
||||
isw.z vi01, 893(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2d6 | nop
|
||||
isw.z vi01, 900(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2d8 | nop
|
||||
isw.z vi01, 907(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2da | nop
|
||||
isw.z vi01, 914(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2dc | nop
|
||||
isw.z vi01, 921(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2de | nop
|
||||
isw.z vi01, 928(vi00) | nop
|
||||
iaddiu vi03, vi00, 0x3b0 | nop
|
||||
iaddiu vi04, vi00, 0x3af | nop
|
||||
mfir.x vf31, vi15 | nop
|
||||
iaddi vi05, vi00, 0x0 | nop
|
||||
bal vi15, L38 | nop
|
||||
iaddiu vi07, vi00, 0x3e8 | nop
|
||||
bal vi15, L38 | nop
|
||||
iaddiu vi07, vi00, 0x3eb | nop
|
||||
bal vi15, L38 | nop
|
||||
iaddiu vi07, vi00, 0x3ee | nop
|
||||
b L47 | nop
|
||||
nop | nop
|
||||
L37:
|
||||
sq.xyzw vf00, 893(vi00) | nop
|
||||
sq.xyzw vf00, 900(vi00) | nop
|
||||
sq.xyzw vf00, 907(vi00) | nop
|
||||
sq.xyzw vf00, 914(vi00) | nop
|
||||
sq.xyzw vf00, 921(vi00) | nop
|
||||
sq.xyzw vf00, 928(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2d4 | nop
|
||||
isw.z vi01, 893(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2d6 | nop
|
||||
isw.z vi01, 900(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2d8 | nop
|
||||
isw.z vi01, 907(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2da | nop
|
||||
isw.z vi01, 914(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2dc | nop
|
||||
isw.z vi01, 921(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2de | nop
|
||||
isw.z vi01, 928(vi00) | nop
|
||||
iaddiu vi03, vi00, 0x3b0 | nop
|
||||
iaddiu vi04, vi00, 0x3af | nop
|
||||
mfir.x vf31, vi15 | nop
|
||||
iaddi vi05, vi00, 0x0 | nop
|
||||
bal vi15, L38 | nop
|
||||
iaddiu vi07, vi00, 0x3e8 | nop
|
||||
bal vi15, L38 | nop
|
||||
iaddiu vi07, vi00, 0x3eb | nop
|
||||
bal vi15, L38 | nop
|
||||
iaddiu vi07, vi00, 0x3ee | nop
|
||||
bal vi15, L38 | nop
|
||||
iaddiu vi07, vi00, 0x3f1 | nop
|
||||
b L47 | nop
|
||||
nop | nop
|
||||
L38:
|
||||
iaddiu vi09, vi00, 0x37d | nop
|
||||
L39:
|
||||
iaddi vi10, vi00, 0x0 | nop
|
||||
L40:
|
||||
isubiu vi01, vi09, 0x3a7 | nop
|
||||
ilwr.y vi08, vi09 | nop
|
||||
ibgez vi01, L44 | nop
|
||||
ilwr.z vi06, vi09 | nop
|
||||
lq.xyzw vf15, 0(vi07) | nop
|
||||
lq.xyzw vf14, 0(vi08) | nop
|
||||
ibne vi00, vi08, L41 | nop
|
||||
iswr.y vi07, vi09 | nop
|
||||
jalr vi11, vi06 | nop
|
||||
iswr.x vi07, vi09 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fsand vi02, 0x2 | nop
|
||||
ibne vi00, vi02, L45 | nop
|
||||
nop | nop
|
||||
b L40 | nop
|
||||
iaddi vi09, vi09, 0x7 | nop
|
||||
L41:
|
||||
jalr vi11, vi06 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fsand vi01, 0x2 | nop
|
||||
fsand vi02, 0x2 | subw.w vf31, vf30, vf31
|
||||
ibne vi00, vi01, L43 | nop
|
||||
nop | nop
|
||||
ibne vi00, vi02, L42 | nop
|
||||
div Q, vf30.w, vf31.w | nop
|
||||
b L40 | nop
|
||||
iaddi vi09, vi09, 0x7 | nop
|
||||
L42:
|
||||
bal vi11, L52 | nop
|
||||
iaddi vi07, vi09, 0x1 | nop
|
||||
sq.xyzw vf16, 1(vi09) | nop
|
||||
b L40 | nop
|
||||
iaddi vi09, vi09, 0x7 | nop
|
||||
L43:
|
||||
ibne vi00, vi02, L45 | nop
|
||||
div Q, vf30.w, vf31.w | nop
|
||||
bal vi11, L52 | nop
|
||||
nop | nop
|
||||
sq.xyzw vf16, 4(vi09) | nop
|
||||
iaddi vi09, vi09, 0x7 | nop
|
||||
isw.x vi09, 935(vi10) | nop
|
||||
isw.y vi07, 935(vi10) | nop
|
||||
iaddi vi10, vi10, 0x1 | nop
|
||||
b L40 | nop
|
||||
iaddi vi07, vi09, -0x3 | nop
|
||||
L44:
|
||||
lq.xyzw vf14, 0(vi07) | nop
|
||||
iaddi vi05, vi05, 0x1 | nop
|
||||
div Q, vf00.w, vf14.w | nop
|
||||
nop | mul.xyzw vf14, vf14, vf13
|
||||
iaddi vi03, vi03, 0x2 | nop
|
||||
waitq | subw.w vf14, vf00, vf00
|
||||
nop | mul.xyz vf14, vf14, Q
|
||||
nop | add.xy vf26, vf14, vf03
|
||||
nop | add.xyzw vf14, vf14, vf05
|
||||
nop | mul.xy vf26, vf26, vf04
|
||||
nop | mini.xyzw vf10, vf10, vf14
|
||||
nop | max.xyzw vf11, vf11, vf14
|
||||
sq.xyzw vf26, -2(vi03) | ftoi4.xyzw vf14, vf14
|
||||
sq.xyzw vf14, -1(vi03) | nop
|
||||
L45:
|
||||
iblez vi10, L46 | nop
|
||||
nop | nop
|
||||
ilw.x vi09, 934(vi10) | nop
|
||||
ilw.y vi07, 934(vi10) | nop
|
||||
b L40 | nop
|
||||
iaddi vi10, vi10, -0x1 | nop
|
||||
L46:
|
||||
jr vi15 | nop
|
||||
nop | nop
|
||||
L47:
|
||||
iaddiu vi09, vi00, 0x37d | nop
|
||||
L48:
|
||||
ilwr.x vi08, vi09 | nop
|
||||
ilwr.y vi07, vi09 | nop
|
||||
ilwr.z vi06, vi09 | nop
|
||||
nop | nop
|
||||
ibeq vi00, vi08, L50 | nop
|
||||
lq.xyzw vf14, 0(vi07) | nop
|
||||
ibeq vi07, vi08, L50 | nop
|
||||
lq.xyzw vf15, 0(vi08) | nop
|
||||
jalr vi11, vi06 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fsand vi01, 0x2 | nop
|
||||
fsand vi02, 0x2 | subw.w vf31, vf30, vf31
|
||||
ibeq vi02, vi01, L50 | nop
|
||||
nop | nop
|
||||
ibeq vi00, vi01, L49 | nop
|
||||
div Q, vf30.w, vf31.w | nop
|
||||
bal vi11, L52 | nop
|
||||
nop | nop
|
||||
sq.xyzw vf16, 4(vi09) | nop
|
||||
iaddi vi07, vi09, 0x4 | nop
|
||||
ior vi12, vi09, vi00 | nop
|
||||
bal vi15, L39 | nop
|
||||
iaddi vi09, vi09, 0x7 | nop
|
||||
b L50 | nop
|
||||
ior vi09, vi12, vi00 | nop
|
||||
L49:
|
||||
bal vi11, L52 | nop
|
||||
nop | nop
|
||||
sq.xyzw vf16, 1(vi09) | nop
|
||||
iaddi vi07, vi09, 0x1 | nop
|
||||
ior vi12, vi09, vi00 | nop
|
||||
bal vi15, L39 | nop
|
||||
iaddi vi09, vi09, 0x7 | nop
|
||||
ior vi09, vi12, vi00 | nop
|
||||
L50:
|
||||
isubiu vi01, vi09, 0x3a0 | nop
|
||||
iswr.x vi00, vi09 | nop
|
||||
iswr.y vi00, vi09 | nop
|
||||
ibltz vi01, L48 | nop
|
||||
iaddi vi09, vi09, 0x7 | nop
|
||||
ibeq vi00, vi05, L51 | nop
|
||||
mtir vi15, vf31.x | nop
|
||||
iaddiu vi05, vi05, 0x4000 | nop
|
||||
iaddiu vi05, vi05, 0x4000 | nop
|
||||
iswr.x vi05, vi04 | nop
|
||||
iaddiu vi01, vi00, 0x3ac | nop
|
||||
xgkick vi01 | nop
|
||||
lq.xyzw vf30, 888(vi00) | nop
|
||||
lq.xyzw vf31, 890(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x3fe | nop
|
||||
isubiu vi02, vi00, 0x7fff | nop
|
||||
sq.xyzw vf30, 0(vi01) | nop
|
||||
iswr.x vi02, vi01 | nop
|
||||
sq.xyzw vf31, 1(vi01) | nop
|
||||
nop | nop
|
||||
xgkick vi01 | nop
|
||||
L51:
|
||||
nop | nop
|
||||
jr vi15 | nop
|
||||
nop | nop
|
||||
jr vi11 | addx.w vf30, vf14, vf14
|
||||
nop | addx.w vf31, vf15, vf15
|
||||
jr vi11 | subx.w vf30, vf14, vf14
|
||||
nop | subx.w vf31, vf15, vf15
|
||||
jr vi11 | addy.w vf30, vf14, vf14
|
||||
nop | addy.w vf31, vf15, vf15
|
||||
jr vi11 | suby.w vf30, vf14, vf14
|
||||
nop | suby.w vf31, vf15, vf15
|
||||
jr vi11 | addz.w vf30, vf14, vf14
|
||||
nop | addz.w vf31, vf15, vf15
|
||||
jr vi11 | subz.w vf30, vf14, vf14
|
||||
nop | subz.w vf31, vf15, vf15
|
||||
L52:
|
||||
nop | sub.xyzw vf16, vf15, vf14
|
||||
waitq | mul.xyzw vf16, vf16, Q
|
||||
jr vi11 | add.xyzw vf16, vf14, vf16
|
||||
nop | nop
|
||||
@@ -0,0 +1,88 @@
|
||||
nop | sub.xyzw vf05, vf03, vf02
|
||||
nop | sub.xyzw vf06, vf04, vf02
|
||||
nop | sub.xyzw vf10, vf08, vf07
|
||||
nop | sub.xyzw vf11, vf09, vf07
|
||||
nop | sub.xyzw vf15, vf13, vf12
|
||||
nop | sub.xyzw vf16, vf14, vf12
|
||||
nop | sub.xyzw vf20, vf18, vf17
|
||||
nop | sub.xyzw vf21, vf19, vf17
|
||||
nop | opmula.xyz ACC, vf05, vf06
|
||||
nop | opmsub.xyz vf05, vf06, vf05
|
||||
nop | opmula.xyz ACC, vf10, vf11
|
||||
nop | opmsub.xyz vf10, vf11, vf10
|
||||
nop | opmula.xyz ACC, vf15, vf16
|
||||
nop | opmsub.xyz vf15, vf16, vf15
|
||||
nop | opmula.xyz ACC, vf20, vf21
|
||||
nop | opmsub.xyz vf20, vf21, vf20
|
||||
nop | mul.xyz vf05, vf05, vf01
|
||||
nop | mul.xyz vf10, vf10, vf01
|
||||
nop | mul.xyz vf15, vf15, vf01
|
||||
nop | mul.xyz vf20, vf20, vf01
|
||||
nop | addx.y vf05, vf05, vf05
|
||||
nop | addx.y vf10, vf10, vf10
|
||||
nop | addx.y vf15, vf15, vf15
|
||||
nop | addx.y vf20, vf20, vf20
|
||||
nop | addz.y vf22, vf05, vf05
|
||||
nop | addz.y vf23, vf10, vf10
|
||||
nop | addz.y vf24, vf15, vf15 :e
|
||||
nop | addz.y vf25, vf20, vf20
|
||||
nop | mul.xyzw vf27, vf20, Q
|
||||
div Q, vf13.x, vf17.x | sub.xyzw vf19, vf01, vf03
|
||||
move.xyzw vf23, vf07 | sub.xyzw vf20, vf01, vf04
|
||||
nop | sub.xyzw vf21, vf01, vf05
|
||||
move.xyzw vf25, vf09 | sub.xyzw vf22, vf01, vf06
|
||||
move.xyzw vf26, vf10 | sub.xyzw vf24, vf08, vf27
|
||||
nop | mul.xyzw vf11, vf03, vf02
|
||||
nop | mul.xyz vf15, vf19, vf02
|
||||
div Q, vf14.x, vf18.x | mul.xyzw vf12, vf04, vf02
|
||||
move.xyzw vf07, vf03 | mul.xyzw vf28, vf28, Q
|
||||
move.xyzw vf08, vf04 | mul.xyz vf16, vf20, vf02
|
||||
move.xyzw vf09, vf05 | addy.x vf11, vf11, vf11
|
||||
move.xyzw vf10, vf06 | addy.x vf15, vf15, vf15
|
||||
nop | sub.xyzw vf25, vf25, vf28
|
||||
nop | addy.x vf12, vf12, vf12
|
||||
nop | mul.xyzw vf29, vf29, Q
|
||||
nop | addy.x vf16, vf16, vf16
|
||||
nop | addz.x vf11, vf11, vf11
|
||||
nop | addz.x vf15, vf15, vf15
|
||||
nop | sub.xyzw vf26, vf26, vf29
|
||||
nop | addz.x vf12, vf12, vf12
|
||||
nop | addz.x vf16, vf16, vf16
|
||||
nop | addw.x vf11, vf11, vf11
|
||||
nop | mul.xyzw vf13, vf09, vf02
|
||||
nop | addw.x vf12, vf12, vf12
|
||||
nop | mul.xyz vf17, vf21, vf02
|
||||
nop | mul.xyzw vf14, vf10, vf02
|
||||
div Q, vf11.x, vf15.x | mul.xyz vf18, vf22, vf02
|
||||
nop | addy.x vf13, vf13, vf13
|
||||
nop | addy.x vf17, vf17, vf17
|
||||
nop | addy.x vf14, vf14, vf14
|
||||
nop | addy.x vf18, vf18, vf18
|
||||
nop | addz.x vf13, vf13, vf13
|
||||
nop | addz.x vf17, vf17, vf17
|
||||
div Q, vf12.x, vf16.x | addz.x vf14, vf14, vf14
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
move.xyzw vf28, vf21 | addz.x vf18, vf18, vf18
|
||||
move.xyzw vf29, vf22 | addw.x vf13, vf13, vf13
|
||||
nop | addw.x vf14, vf14, vf14 :e
|
||||
nop | sub.xyzw vf07, vf07, vf19
|
||||
nop | mul.xyzw vf27, vf20, Q
|
||||
div Q, vf13.x, vf17.x | nop
|
||||
move.xyzw vf23, vf07 | nop
|
||||
nop | nop
|
||||
move.xyzw vf25, vf09 | nop
|
||||
move.xyzw vf26, vf10 | sub.xyzw vf24, vf08, vf27
|
||||
nop | nop
|
||||
nop | nop
|
||||
div Q, vf14.x, vf18.x | nop
|
||||
nop | mul.xyzw vf28, vf28, Q
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | sub.xyzw vf25, vf25, vf28
|
||||
nop | nop
|
||||
nop | mul.xyzw vf29, vf29, Q
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | sub.xyzw vf26, vf26, vf29
|
||||
@@ -0,0 +1,176 @@
|
||||
.word 0x80000030
|
||||
.word 0x1e2196c
|
||||
.word 0x80000030
|
||||
.word 0x1e221ac
|
||||
.word 0x80000030
|
||||
.word 0x1e742ac
|
||||
.word 0x80000030
|
||||
.word 0x1e74aec
|
||||
.word 0x80000030
|
||||
.word 0x1ec6bec
|
||||
.word 0x80000030
|
||||
.word 0x1ec742c
|
||||
.word 0x80000030
|
||||
.word 0x1f1952c
|
||||
.word 0x80000030
|
||||
.word 0x1f19d6c
|
||||
.word 0x80000030
|
||||
.word 0x1c62afe
|
||||
.word 0x80000030
|
||||
.word 0x1c5316e
|
||||
.word 0x80000030
|
||||
.word 0x1cb52fe
|
||||
.word 0x80000030
|
||||
.word 0x1ca5aae
|
||||
.word 0x80000030
|
||||
.word 0x1d07afe
|
||||
.word 0x80000030
|
||||
.word 0x1cf83ee
|
||||
.word 0x80000030
|
||||
.word 0x1d5a2fe
|
||||
.word 0x80000030
|
||||
.word 0x1d4ad2e
|
||||
.word 0x80000030
|
||||
.word 0x1c1296a
|
||||
.word 0x80000030
|
||||
.word 0x1c152aa
|
||||
.word 0x80000030
|
||||
.word 0x1c17bea
|
||||
.word 0x80000030
|
||||
.word 0x1c1a52a
|
||||
.word 0x80000030
|
||||
.word 0x852940
|
||||
.word 0x80000030
|
||||
.word 0x8a5280
|
||||
.word 0x80000030
|
||||
.word 0x8f7bc0
|
||||
.word 0x80000030
|
||||
.word 0x94a500
|
||||
.word 0x80000030
|
||||
.word 0x852d82
|
||||
.word 0x80000030
|
||||
.word 0x8a55c2
|
||||
.word 0x80000030
|
||||
.word 0x408f7e02
|
||||
.word 0x80000030
|
||||
.word 0x94a642
|
||||
.word 0x80000030
|
||||
.word 0x1e0a6dc
|
||||
.word 0x80116bbc
|
||||
.word 0x1e30cec
|
||||
.word 0x81f73b3c
|
||||
.word 0x1e40d2c
|
||||
.word 0x80000030
|
||||
.word 0x1e50d6c
|
||||
.word 0x81f94b3c
|
||||
.word 0x1e60dac
|
||||
.word 0x81fa533c
|
||||
.word 0x1fb462c
|
||||
.word 0x80000030
|
||||
.word 0x1e21aea
|
||||
.word 0x80000030
|
||||
.word 0x1c29bea
|
||||
.word 0x801273bc
|
||||
.word 0x1e2232a
|
||||
.word 0x81e71b3c
|
||||
.word 0x1e0e71c
|
||||
.word 0x81e8233c
|
||||
.word 0x1c2a42a
|
||||
.word 0x81e92b3c
|
||||
.word 0x10b5ac1
|
||||
.word 0x81ea333c
|
||||
.word 0x10f7bc1
|
||||
.word 0x80000030
|
||||
.word 0x1fcce6c
|
||||
.word 0x80000030
|
||||
.word 0x10c6301
|
||||
.word 0x80000030
|
||||
.word 0x1e0ef5c
|
||||
.word 0x80000030
|
||||
.word 0x1108401
|
||||
.word 0x80000030
|
||||
.word 0x10b5ac2
|
||||
.word 0x80000030
|
||||
.word 0x10f7bc2
|
||||
.word 0x80000030
|
||||
.word 0x1fdd6ac
|
||||
.word 0x80000030
|
||||
.word 0x10c6302
|
||||
.word 0x80000030
|
||||
.word 0x1108402
|
||||
.word 0x80000030
|
||||
.word 0x10b5ac3
|
||||
.word 0x80000030
|
||||
.word 0x1e24b6a
|
||||
.word 0x80000030
|
||||
.word 0x10c6303
|
||||
.word 0x80000030
|
||||
.word 0x1c2ac6a
|
||||
.word 0x80000030
|
||||
.word 0x1e253aa
|
||||
.word 0x800f5bbc
|
||||
.word 0x1c2b4aa
|
||||
.word 0x80000030
|
||||
.word 0x10d6b41
|
||||
.word 0x80000030
|
||||
.word 0x1118c41
|
||||
.word 0x80000030
|
||||
.word 0x10e7381
|
||||
.word 0x80000030
|
||||
.word 0x1129481
|
||||
.word 0x80000030
|
||||
.word 0x10d6b42
|
||||
.word 0x80000030
|
||||
.word 0x1118c42
|
||||
.word 0x801063bc
|
||||
.word 0x10e7382
|
||||
.word 0x80000030
|
||||
.word 0x1e09cdc
|
||||
.word 0x81fcab3c
|
||||
.word 0x1129482
|
||||
.word 0x81fdb33c
|
||||
.word 0x10d6b43
|
||||
.word 0x80000030
|
||||
.word 0x410e7383
|
||||
.word 0x80000030
|
||||
.word 0x1f339ec
|
||||
.word 0x80000030
|
||||
.word 0x1e0a6dc
|
||||
.word 0x80116bbc
|
||||
.word 0x2ff
|
||||
.word 0x81f73b3c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x81f94b3c
|
||||
.word 0x2ff
|
||||
.word 0x81fa533c
|
||||
.word 0x1fb462c
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x801273bc
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e0e71c
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1fcce6c
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e0ef5c
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x1fdd6ac
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,681 @@
|
||||
lq.xyzw vf31, 0(vi00) | nop
|
||||
lq.xyzw vf30, 1(vi00) | nop
|
||||
lq.xyzw vf29, 2(vi00) | nop
|
||||
iaddiu vi11, vi00, 0xa2 | nop
|
||||
iaddiu vi01, vi00, 0x338 | nop
|
||||
mfir.x vf17, vi01 | nop
|
||||
mfir.z vf17, vi01 | nop
|
||||
iaddiu vi01, vi00, 0x1a8 | nop
|
||||
mfir.y vf17, vi01 | nop
|
||||
mfir.w vf17, vi01 | nop
|
||||
iaddi vi01, vi00, 0x1 | nop
|
||||
mfir.z vf25, vi01 | nop
|
||||
iaddi vi01, vi00, 0x1 | itof0.xyzw vf17, vf17
|
||||
mfir.z vf26, vi01 | nop
|
||||
iaddi vi01, vi00, 0x1 | nop
|
||||
mfir.z vf27, vi01 | nop :e
|
||||
nop | addy.xyzw vf17, vf17, vf30
|
||||
iaddiu vi01, vi00, 0xa4 | subx.xz vf17, vf00, vf17
|
||||
isub vi11, vi01, vi11 | addy.xyzw vf28, vf00, vf30
|
||||
b L1 | nop
|
||||
iaddiu vi13, vi00, 0x175 | nop
|
||||
iaddiu vi01, vi00, 0xa4 | subx.xz vf17, vf00, vf17
|
||||
isub vi11, vi01, vi11 | addy.xyzw vf28, vf00, vf30
|
||||
iaddiu vi13, vi00, 0x142 | nop
|
||||
L1:
|
||||
isw.y vi13, 1(vi00) | nop
|
||||
iaddi vi09, vi11, 0x1 | suby.xz vf17, vf17, vf17
|
||||
ilwr.y vi05, vi11 | nop
|
||||
ilwr.x vi15, vi11 | nop
|
||||
lqi.xyzw vf01, vi09 | nop
|
||||
nop | addx.xz vf17, vf17, vf30
|
||||
nop | nop
|
||||
iaddi vi15, vi15, -0x1 | nop
|
||||
mtir vi04, vf01.w | nop
|
||||
mtir vi02, vf17.x | nop
|
||||
ibne vi00, vi15, L2 | nop
|
||||
mtir vi03, vf17.y | nop
|
||||
nop | addz.y vf28, vf28, vf31
|
||||
L2:
|
||||
lqi.xyzw vf02, vi09 | nop
|
||||
iadd vi01, vi04, vi02 | nop
|
||||
iadd vi14, vi04, vi03 | nop
|
||||
iaddi vi05, vi05, -0x1 | nop
|
||||
mtir vi04, vf02.w | nop
|
||||
sq.xyzw vf01, 0(vi01) | nop
|
||||
ibeq vi00, vi05, L3 | nop
|
||||
sq.xyzw vf01, 0(vi14) | nop
|
||||
lqi.xyzw vf01, vi09 | nop
|
||||
iadd vi01, vi04, vi02 | nop
|
||||
iadd vi14, vi04, vi03 | nop
|
||||
iaddi vi05, vi05, -0x1 | nop
|
||||
mtir vi04, vf01.w | nop
|
||||
sq.xyzw vf02, 0(vi01) | nop
|
||||
ibne vi00, vi05, L2 | nop
|
||||
sq.xyzw vf02, 0(vi14) | nop
|
||||
L3:
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
ilwr.x vi05, vi11 | nop
|
||||
L4:
|
||||
lqi.xyzw vf01, vi09 | nop
|
||||
lqi.xyzw vf02, vi09 | nop
|
||||
lqi.xyzw vf03, vi09 | nop
|
||||
lqi.xyzw vf04, vi09 | nop
|
||||
mtir vi04, vf01.w | nop
|
||||
iaddi vi05, vi05, -0x1 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
iadd vi01, vi04, vi02 | nop
|
||||
sq.xyzw vf31, 0(vi01) | nop
|
||||
sq.xyzw vf01, 1(vi01) | nop
|
||||
sq.xyzw vf02, 2(vi01) | nop
|
||||
sq.xyzw vf03, 3(vi01) | nop
|
||||
sq.xyzw vf04, 4(vi01) | nop
|
||||
iadd vi01, vi04, vi03 | nop
|
||||
sq.xyzw vf31, 0(vi01) | nop
|
||||
sq.xyzw vf01, 1(vi01) | nop
|
||||
sq.xyzw vf02, 2(vi01) | nop
|
||||
sq.xyzw vf03, 3(vi01) | nop
|
||||
ibne vi00, vi05, L4 | nop
|
||||
sq.xyzw vf04, 4(vi01) | nop
|
||||
ilwr.z vi12, vi11 | nop
|
||||
ilwr.w vi06, vi11 | nop
|
||||
isw.x vi09, 1(vi00) | nop
|
||||
iaddi vi15, vi00, 0x1 | nop
|
||||
ior vi05, vi12, vi00 | nop
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
iaddi vi05, vi05, 0x1 | nop
|
||||
L5:
|
||||
lq.xyzw vf01, 0(vi06) | nop
|
||||
lq.xyz vf03, 0(vi07) | nop
|
||||
lq.xyz vf05, 0(vi08) | nop
|
||||
iaddi vi05, vi05, -0x2 | nop
|
||||
lq.xyzw vf08, 1(vi06) | itof0.xyzw vf01, vf01
|
||||
lq.xyz vf10, 1(vi07) | itof0.xyzw vf03, vf03
|
||||
lq.xyz vf12, 1(vi08) | itof12.xyzw vf05, vf05
|
||||
nop | nop
|
||||
sqi.xyzw vf01, vi06 | itof0.xyzw vf08, vf08
|
||||
sqi.xyz vf03, vi07 | itof0.xyzw vf10, vf10
|
||||
ibeq vi00, vi05, L6 | itof12.xyzw vf12, vf12
|
||||
sqi.xyz vf05, vi08 | nop
|
||||
sqi.xyzw vf08, vi06 | nop
|
||||
sqi.xyz vf10, vi07 | nop
|
||||
ibne vi15, vi05, L5 | nop
|
||||
sqi.xyz vf12, vi08 | nop
|
||||
L6:
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
ilw.y vi13, 1(vi00) | nop
|
||||
iaddiu vi01, vi00, 0x2b7 | nop
|
||||
ilwr.w vi06, vi11 | nop
|
||||
ilw.x vi09, 1(vi00) | nop
|
||||
isub vi13, vi01, vi13 | nop
|
||||
isw.y vi13, 1(vi00) | nop
|
||||
ilwr.x vi14, vi13 | nop
|
||||
lq.xyzw vf21, 4(vi13) | nop
|
||||
lq.xyzw vf18, 1(vi13) | nop
|
||||
lq.xyzw vf19, 2(vi13) | nop
|
||||
lq.xyzw vf20, 3(vi13) | nop
|
||||
lq.xyzw vf22, 5(vi13) | mulaz.w ACC, vf21, vf30
|
||||
iaddi vi13, vi13, 0x6 | maddw.w vf09, vf30, vf00
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
move.w vf04, vf22 | miniy.w vf09, vf09, vf29
|
||||
move.w vf11, vf22 | nop
|
||||
lqi.xyzw vf01, vi06 | nop
|
||||
lqi.xyzw vf05, vi08 | nop
|
||||
lqi.xyzw vf03, vi07 | ftoi4.w vf02, vf09
|
||||
lqi.xyzw vf08, vi06 | ftoi4.w vf09, vf09
|
||||
lqi.xyzw vf12, vi08 | add.xyzw vf07, vf01, vf17
|
||||
lqi.xyzw vf10, vi07 | mulaw.xyzw ACC, vf21, vf00
|
||||
nop | maddax.xyzw ACC, vf18, vf01
|
||||
nop | madday.xyzw ACC, vf19, vf01
|
||||
nop | maddz.xyzw vf01, vf20, vf01
|
||||
nop | add.xyzw vf14, vf08, vf17
|
||||
nop | mulaw.xyzw ACC, vf21, vf00
|
||||
nop | maddax.xyzw ACC, vf18, vf08
|
||||
div Q, vf00.w, vf01.w | madday.xyzw ACC, vf19, vf08
|
||||
nop | maddz.xyzw vf08, vf20, vf08
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | mul.xyz vf02, vf01, Q
|
||||
nop | mul.xyzw vf06, vf05, Q
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | nop
|
||||
mtir vi02, vf07.w | nop
|
||||
lqi.xyzw vf03, vi07 | nop
|
||||
nop | nop
|
||||
nop | add.xyzw vf07, vf01, vf17
|
||||
nop | mulaw.xyzw ACC, vf21, vf00
|
||||
nop | maddax.xyzw ACC, vf18, vf01
|
||||
nop | madday.xyzw ACC, vf19, vf01
|
||||
nop | maddz.xyzw vf01, vf20, vf01
|
||||
nop | mul.xyz vf09, vf08, Q
|
||||
nop | mul.xyzw vf13, vf12, Q
|
||||
L7:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | nop
|
||||
mtir vi05, vf14.w | nop
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
lqi.xyzw vf23, vi09 | mulaw.xyzw ACC, vf21, vf00
|
||||
lqi.xyzw vf24, vi09 | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
isubiu vi10, vi00, 0x40 | maddz.xyzw vf08, vf20, vf08
|
||||
L8:
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf25, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | nop
|
||||
mtir vi02, vf07.w | nop
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
nop | mulaw.xyzw ACC, vf21, vf00
|
||||
nop | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
nop | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf25, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi05, vf14.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ibltz vi01, L27 | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
L9:
|
||||
ibeq vi01, vi03, L16 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
b L14 | nop
|
||||
sq.xyzw vf23, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
nop | mul.xyzw vf06, vf05, Q
|
||||
L10:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | nop
|
||||
mtir vi02, vf07.w | nop
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
lqi.xyzw vf23, vi09 | mulaw.xyzw ACC, vf21, vf00
|
||||
lqi.xyzw vf24, vi09 | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
isubiu vi10, vi00, 0x40 | maddz.xyzw vf01, vf20, vf01
|
||||
L11:
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf25, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | nop
|
||||
mtir vi05, vf14.w | nop
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
nop | mulaw.xyzw ACC, vf21, vf00
|
||||
nop | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
nop | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf25, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi02, vf07.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ibltz vi04, L26 | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
L12:
|
||||
ibeq vi04, vi03, L17 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
b L15 | nop
|
||||
sq.xyzw vf23, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L13:
|
||||
sq.xyzw vf26, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L14:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi02, vf07.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ibltz vi04, L22 | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
ibeq vi04, vi03, L17 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf26, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L15:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi05, vf14.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ibltz vi01, L23 | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
ibne vi01, vi03, L13 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
L16:
|
||||
b L19 | nop
|
||||
sq.xyzw vf24, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L17:
|
||||
b L20 | nop
|
||||
sq.xyzw vf24, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L18:
|
||||
sq.xyzw vf27, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L19:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | mulax.y ACC, vf15, vf16
|
||||
mtir vi02, vf07.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ibltz vi04, L24 | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
ibeq vi04, vi03, L21 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf27, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L20:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | mulax.y ACC, vf15, vf16
|
||||
mtir vi05, vf14.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ibltz vi01, L25 | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
ibne vi01, vi03, L18 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
b L14 | nop
|
||||
sq.xyzw vf23, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L21:
|
||||
b L15 | nop
|
||||
sq.xyzw vf23, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L22:
|
||||
ibne vi10, vi04, L28 | nop
|
||||
iaddiu vi04, vi04, 0x80 | nop
|
||||
lqi.xyzw vf23, vi09 | nop
|
||||
b L11 | nop
|
||||
lqi.xyzw vf24, vi09 | maddz.xyzw vf01, vf20, vf01
|
||||
L23:
|
||||
ibne vi10, vi01, L33 | nop
|
||||
iaddiu vi01, vi01, 0x80 | nop
|
||||
lqi.xyzw vf23, vi09 | nop
|
||||
b L8 | nop
|
||||
lqi.xyzw vf24, vi09 | maddz.xyzw vf08, vf20, vf08
|
||||
L24:
|
||||
ibne vi10, vi04, L38 | nop
|
||||
iaddiu vi04, vi04, 0x80 | nop
|
||||
lqi.xyzw vf23, vi09 | nop
|
||||
b L11 | nop
|
||||
lqi.xyzw vf24, vi09 | maddz.xyzw vf01, vf20, vf01
|
||||
L25:
|
||||
ibne vi10, vi01, L43 | nop
|
||||
iaddiu vi01, vi01, 0x80 | nop
|
||||
lqi.xyzw vf23, vi09 | nop
|
||||
b L8 | nop
|
||||
lqi.xyzw vf24, vi09 | maddz.xyzw vf08, vf20, vf08
|
||||
L26:
|
||||
ibeq vi10, vi04, L12 | nop
|
||||
iaddiu vi04, vi04, 0x80 | nop
|
||||
ilwr.w vi06, vi11 | maddz.xyzw vf01, vf20, vf01
|
||||
mr32.xyzw vf17, vf17 | mul.xyz vf09, vf08, Q
|
||||
lqi.xyzw vf18, vi13 | nop
|
||||
lqi.xyzw vf19, vi13 | nop
|
||||
lqi.xyzw vf20, vi13 | nop
|
||||
lqi.xyzw vf21, vi13 | nop
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
ibeq vi04, vi03, L48 | nop
|
||||
mtir vi04, vf10.w | nop
|
||||
b L29 | nop
|
||||
sq.xyzw vf23, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L27:
|
||||
ibeq vi10, vi01, L9 | nop
|
||||
iaddiu vi01, vi01, 0x80 | nop
|
||||
ilwr.w vi06, vi11 | maddz.xyzw vf08, vf20, vf08
|
||||
mr32.xyzw vf17, vf17 | mul.xyz vf02, vf01, Q
|
||||
lqi.xyzw vf18, vi13 | nop
|
||||
lqi.xyzw vf19, vi13 | nop
|
||||
lqi.xyzw vf20, vi13 | nop
|
||||
lqi.xyzw vf21, vi13 | nop
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
ibeq vi01, vi03, L52 | nop
|
||||
mtir vi01, vf03.w | nop
|
||||
b L34 | nop
|
||||
sq.xyzw vf23, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L28:
|
||||
ilwr.w vi06, vi11 | maddz.xyzw vf01, vf20, vf01
|
||||
mr32.xyzw vf17, vf17 | mul.xyz vf09, vf08, Q
|
||||
lqi.xyzw vf18, vi13 | nop
|
||||
lqi.xyzw vf19, vi13 | nop
|
||||
lqi.xyzw vf20, vi13 | nop
|
||||
lqi.xyzw vf21, vi13 | nop
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
ibeq vi04, vi03, L48 | nop
|
||||
mtir vi04, vf10.w | nop
|
||||
sq.xyzw vf26, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L29:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi05, vf14.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ilw.x vi09, 1(vi00) | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
ibeq vi01, vi03, L49 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf26, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L30:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi02, vf07.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
mtir vi10, vf28.x | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
lqi.xyzw vf22, vi13 | mulz.w vf09, vf21, vf30
|
||||
ibeq vi04, vi03, L50 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf26, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L31:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | mulay.x ACC, vf15, vf16
|
||||
lqi.xyzw vf12, vi08 | addw.w vf09, vf30, vf09
|
||||
mtir vi05, vf14.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
iaddi vi14, vi14, -0x1 | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
mtir vi15, vf17.x | miniy.w vf09, vf09, vf29
|
||||
ibeq vi01, vi03, L51 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf26, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L32:
|
||||
move.w vf04, vf22 | addy.x vf28, vf00, vf28
|
||||
move.w vf11, vf22 | nop
|
||||
iadd vi15, vi15, vi10 | nop
|
||||
ibne vi00, vi14, L10 | ftoi4.w vf02, vf09
|
||||
xgkick vi15 | ftoi4.w vf09, vf09
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L33:
|
||||
ilwr.w vi06, vi11 | maddz.xyzw vf08, vf20, vf08
|
||||
mr32.xyzw vf17, vf17 | mul.xyz vf02, vf01, Q
|
||||
lqi.xyzw vf18, vi13 | nop
|
||||
lqi.xyzw vf19, vi13 | nop
|
||||
lqi.xyzw vf20, vi13 | nop
|
||||
lqi.xyzw vf21, vi13 | nop
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
ibeq vi01, vi03, L52 | nop
|
||||
mtir vi01, vf03.w | nop
|
||||
sq.xyzw vf26, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L34:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi02, vf07.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ilw.x vi09, 1(vi00) | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
ibeq vi04, vi03, L53 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf26, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L35:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | mulay.x ACC, vf15, vf16
|
||||
mtir vi05, vf14.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
mtir vi10, vf28.x | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
lqi.xyzw vf22, vi13 | mulz.w vf02, vf21, vf30
|
||||
ibeq vi01, vi03, L54 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf26, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L36:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | mulay.x ACC, vf15, vf16
|
||||
lqi.xyzw vf05, vi08 | addw.w vf02, vf30, vf02
|
||||
mtir vi02, vf07.w | msubay.x ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
iaddi vi14, vi14, -0x1 | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
mtir vi15, vf17.x | miniy.w vf02, vf02, vf29
|
||||
ibeq vi04, vi03, L55 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf26, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L37:
|
||||
move.w vf04, vf22 | addy.x vf28, vf00, vf28
|
||||
move.w vf11, vf22 | nop
|
||||
iadd vi15, vi15, vi10 | nop
|
||||
ibne vi00, vi14, L7 | ftoi4.w vf09, vf02
|
||||
xgkick vi15 | ftoi4.w vf02, vf02
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L38:
|
||||
ilwr.w vi06, vi11 | maddz.xyzw vf01, vf20, vf01
|
||||
mr32.xyzw vf17, vf17 | mul.xyz vf09, vf08, Q
|
||||
lqi.xyzw vf18, vi13 | nop
|
||||
lqi.xyzw vf19, vi13 | nop
|
||||
lqi.xyzw vf20, vi13 | nop
|
||||
lqi.xyzw vf21, vi13 | nop
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
ibeq vi04, vi03, L56 | nop
|
||||
mtir vi04, vf10.w | nop
|
||||
sq.xyzw vf27, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L39:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | mulax.y ACC, vf15, vf16
|
||||
mtir vi05, vf14.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ilw.x vi09, 1(vi00) | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
ibeq vi01, vi03, L57 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf27, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L40:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | mulax.y ACC, vf15, vf16
|
||||
mtir vi02, vf07.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
mtir vi10, vf28.x | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
lqi.xyzw vf22, vi13 | mulz.w vf09, vf21, vf30
|
||||
ibeq vi04, vi03, L58 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf27, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L41:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | mulax.y ACC, vf15, vf16
|
||||
lqi.xyzw vf12, vi08 | addw.w vf09, vf30, vf09
|
||||
mtir vi05, vf14.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
iaddi vi14, vi14, -0x1 | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
mtir vi15, vf17.x | miniy.w vf09, vf09, vf29
|
||||
ibeq vi01, vi03, L59 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf27, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L42:
|
||||
move.w vf04, vf22 | addy.x vf28, vf00, vf28
|
||||
move.w vf11, vf22 | nop
|
||||
iadd vi15, vi15, vi10 | nop
|
||||
ibne vi00, vi14, L10 | ftoi4.w vf02, vf09
|
||||
xgkick vi15 | ftoi4.w vf09, vf09
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L43:
|
||||
ilwr.w vi06, vi11 | maddz.xyzw vf08, vf20, vf08
|
||||
mr32.xyzw vf17, vf17 | mul.xyz vf02, vf01, Q
|
||||
lqi.xyzw vf18, vi13 | nop
|
||||
lqi.xyzw vf19, vi13 | nop
|
||||
lqi.xyzw vf20, vi13 | nop
|
||||
lqi.xyzw vf21, vi13 | nop
|
||||
iadd vi06, vi06, vi11 | nop
|
||||
iadd vi07, vi06, vi12 | nop
|
||||
iadd vi08, vi07, vi12 | nop
|
||||
ibeq vi01, vi03, L60 | nop
|
||||
mtir vi01, vf03.w | nop
|
||||
sq.xyzw vf27, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L44:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | nop
|
||||
lqi.xyzw vf05, vi08 | mulax.y ACC, vf15, vf16
|
||||
mtir vi02, vf07.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
ilw.x vi09, 1(vi00) | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
ibeq vi04, vi03, L61 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf27, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L45:
|
||||
lqi.xyzw vf08, vi06 | mul.xyz vf11, vf10, vf22
|
||||
div Q, vf00.w, vf01.w | nop
|
||||
lqi.xyzw vf12, vi08 | mulax.y ACC, vf15, vf16
|
||||
mtir vi05, vf14.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf10, vi07 | sub.xyzw vf15, vf02, vf09
|
||||
sq.xyzw vf06, 1(vi02) | ftoi4.xyz vf02, vf02
|
||||
sq.xyzw vf04, 2(vi02) | add.xyzw vf14, vf08, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
mtir vi10, vf28.x | maddax.xyzw ACC, vf18, vf08
|
||||
sq.xyzw vf02, 3(vi02) | madday.xyzw ACC, vf19, vf08
|
||||
lqi.xyzw vf22, vi13 | mulz.w vf02, vf21, vf30
|
||||
ibeq vi01, vi03, L62 | maddz.xyzw vf08, vf20, vf08
|
||||
mtir vi01, vf03.w | mul.xyz vf02, vf01, Q
|
||||
sq.xyzw vf27, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L46:
|
||||
lqi.xyzw vf01, vi06 | mul.xyz vf04, vf03, vf22
|
||||
div Q, vf00.w, vf08.w | mulax.y ACC, vf15, vf16
|
||||
lqi.xyzw vf05, vi08 | addw.w vf02, vf30, vf02
|
||||
mtir vi02, vf07.w | msubax.y ACC, vf16, vf15
|
||||
lqi.xyzw vf03, vi07 | sub.xyzw vf16, vf09, vf02
|
||||
sq.xyzw vf13, 1(vi05) | ftoi4.xyz vf09, vf09
|
||||
sq.xyzw vf11, 2(vi05) | add.xyzw vf07, vf01, vf17
|
||||
fsand vi03, 0x2 | mulaw.xyzw ACC, vf21, vf00
|
||||
iaddi vi14, vi14, -0x1 | maddax.xyzw ACC, vf18, vf01
|
||||
sq.xyzw vf09, 3(vi05) | madday.xyzw ACC, vf19, vf01
|
||||
mtir vi15, vf17.x | miniy.w vf02, vf02, vf29
|
||||
ibeq vi04, vi03, L63 | maddz.xyzw vf01, vf20, vf01
|
||||
mtir vi04, vf10.w | mul.xyz vf09, vf08, Q
|
||||
sq.xyzw vf27, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L47:
|
||||
move.w vf04, vf22 | addy.x vf28, vf00, vf28
|
||||
move.w vf11, vf22 | nop
|
||||
iadd vi15, vi15, vi10 | nop
|
||||
ibne vi00, vi14, L7 | ftoi4.w vf09, vf02
|
||||
xgkick vi15 | ftoi4.w vf02, vf02
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L48:
|
||||
b L39 | nop
|
||||
sq.xyzw vf24, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L49:
|
||||
b L40 | nop
|
||||
sq.xyzw vf24, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L50:
|
||||
b L41 | nop
|
||||
sq.xyzw vf24, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L51:
|
||||
b L42 | nop
|
||||
sq.xyzw vf24, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L52:
|
||||
b L44 | nop
|
||||
sq.xyzw vf24, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L53:
|
||||
b L45 | nop
|
||||
sq.xyzw vf24, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L54:
|
||||
b L46 | nop
|
||||
sq.xyzw vf24, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L55:
|
||||
b L47 | nop
|
||||
sq.xyzw vf24, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L56:
|
||||
b L29 | nop
|
||||
sq.xyzw vf23, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L57:
|
||||
b L30 | nop
|
||||
sq.xyzw vf23, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L58:
|
||||
b L31 | nop
|
||||
sq.xyzw vf23, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L59:
|
||||
b L32 | nop
|
||||
sq.xyzw vf23, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L60:
|
||||
b L34 | nop
|
||||
sq.xyzw vf23, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L61:
|
||||
b L35 | nop
|
||||
sq.xyzw vf23, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
L62:
|
||||
b L36 | nop
|
||||
sq.xyzw vf23, 0(vi02) | mul.xyzw vf06, vf05, Q
|
||||
L63:
|
||||
b L37 | nop
|
||||
sq.xyzw vf23, 0(vi05) | mul.xyzw vf13, vf12, Q
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,215 @@
|
||||
iaddi vi14, vi00, 0x0 | nop
|
||||
lq.xyzw vf28, 291(vi00) | nop
|
||||
lq.xyzw vf29, 292(vi00) | nop
|
||||
lq.xyzw vf30, 293(vi00) | nop
|
||||
lq.xyzw vf31, 294(vi00) | nop
|
||||
lq.xyzw vf27, 295(vi00) | nop
|
||||
lq.xyzw vf26, 296(vi00) | nop :e
|
||||
lq.xyzw vf25, 297(vi00) | nop
|
||||
L1:
|
||||
lq.xyzw vf05, 299(vi00) | nop
|
||||
lq.xyzw vf07, 308(vi00) | nop
|
||||
lq.xyzw vf08, 307(vi00) | nop
|
||||
ior vi04, vi14, vi00 | nop
|
||||
iaddiu vi02, vi00, 0x100 | mulax.xyzw ACC, vf28, vf01
|
||||
lq.xyzw vf04, 305(vi00) | madday.xyzw ACC, vf29, vf01
|
||||
iaddiu vi03, vi00, 0x11 | maddz.xyzw vf01, vf30, vf01
|
||||
sqi.xyzw vf07, vi04 | nop
|
||||
sqi.xyzw vf08, vi04 | nop
|
||||
sqi.xyzw vf04, vi04 | nop
|
||||
sqi.xyzw vf05, vi04 | nop
|
||||
sq.x vf03, -1(vi04) | nop
|
||||
sqi.xyzw vf01, vi04 | nop
|
||||
L2:
|
||||
lqi.xyzw vf06, vi02 | nop
|
||||
sqi.xyzw vf05, vi04 | nop
|
||||
sq.x vf09, -1(vi04) | nop
|
||||
nop | nop
|
||||
nop | mulx.xyzw vf06, vf06, vf02
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | add.xyzw vf06, vf06, vf01
|
||||
iaddi vi03, vi03, -0x1 | nop
|
||||
nop | nop
|
||||
ibne vi00, vi03, L2 | nop
|
||||
sqi.xyzw vf06, vi04 | nop
|
||||
iaddi vi04, vi14, 0x3 | nop
|
||||
iaddi vi05, vi00, 0x0 | nop
|
||||
iaddi vi06, vi00, 0x0 | nop
|
||||
iaddiu vi03, vi00, 0x11 | nop
|
||||
lq.xyzw vf07, 1(vi04) | nop
|
||||
iaddi vi04, vi04, 0x2 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
div Q, vf25.x, vf07.w | mul.xyzw vf08, vf07, vf27
|
||||
move.z vf07, vf00 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | clipw.xyz vf08, vf08
|
||||
nop | nop
|
||||
nop | nop
|
||||
iaddiu vi01, vi00, 0x2f | mul.xy vf07, vf07, Q
|
||||
fcget vi05 | nop
|
||||
iand vi05, vi05, vi01 | nop
|
||||
nop | nop
|
||||
nop | add.xyzw vf07, vf07, vf26
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | maxx.w vf07, vf07, vf00
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | ftoi4.xyzw vf07, vf07
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
sq.xyzw vf07, -1(vi04) | nop
|
||||
L3:
|
||||
lq.xyzw vf07, 1(vi04) | nop
|
||||
iaddi vi04, vi04, 0x2 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
div Q, vf25.x, vf07.w | mul.xyzw vf08, vf07, vf27
|
||||
move.z vf07, vf00 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | clipw.xyz vf08, vf08
|
||||
nop | nop
|
||||
nop | nop
|
||||
iaddiu vi01, vi00, 0x2f | mul.xy vf07, vf07, Q
|
||||
fcget vi07 | nop
|
||||
iand vi07, vi07, vi01 | nop
|
||||
iand vi06, vi06, vi05 | nop
|
||||
iand vi06, vi06, vi07 | add.xyzw vf07, vf07, vf26
|
||||
nop | nop
|
||||
ibne vi00, vi06, L4 | nop
|
||||
nop | nop
|
||||
nop | maxx.w vf07, vf07, vf00
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | ftoi4.xyzw vf07, vf07
|
||||
iaddi vi03, vi03, -0x1 | nop
|
||||
ior vi06, vi07, vi00 | nop
|
||||
ibne vi00, vi03, L3 | nop
|
||||
sq.xyzw vf07, -1(vi04) | nop
|
||||
b L5 | nop
|
||||
xgkick vi14 | nop
|
||||
L4:
|
||||
nop | maxx.w vf07, vf07, vf00
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | addw.w vf07, vf07, vf25
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | ftoi4.xyzw vf07, vf07
|
||||
iaddi vi03, vi03, -0x1 | nop
|
||||
ior vi06, vi07, vi00 | nop
|
||||
ibne vi00, vi03, L3 | nop
|
||||
sq.xyzw vf07, -1(vi04) | nop
|
||||
xgkick vi14 | nop
|
||||
L5:
|
||||
iaddiu vi01, vi00, 0x80 | nop
|
||||
isub vi14, vi01, vi14 | nop
|
||||
iaddi vi08, vi00, 0x2 | nop
|
||||
L6:
|
||||
iaddiu vi02, vi00, 0x100 | nop
|
||||
lq.xyzw vf04, 306(vi00) | nop
|
||||
iaddiu vi03, vi00, 0x11 | nop
|
||||
ior vi04, vi14, vi00 | nop
|
||||
mr32.xyzw vf03, vf03 | nop
|
||||
mr32.xyzw vf09, vf09 | nop
|
||||
sqi.xyzw vf04, vi04 | nop
|
||||
nop | nop
|
||||
L7:
|
||||
lqi.xyzw vf06, vi02 | nop
|
||||
sq.xyzw vf05, 0(vi04) | nop
|
||||
sq.x vf03, 0(vi04) | nop
|
||||
sq.xyzw vf05, 2(vi04) | nop
|
||||
sq.x vf09, 2(vi04) | mulx.xyzw vf10, vf06, vf02
|
||||
iaddi vi04, vi04, 0x4 | muly.xyzw vf06, vf06, vf02
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | add.xyzw vf10, vf10, vf01
|
||||
nop | add.xyzw vf06, vf06, vf01
|
||||
nop | nop
|
||||
iaddi vi03, vi03, -0x1 | nop
|
||||
sq.xyzw vf10, -3(vi04) | nop
|
||||
ibne vi00, vi03, L7 | nop
|
||||
sq.xyzw vf06, -1(vi04) | nop
|
||||
iaddi vi04, vi14, 0x1 | nop
|
||||
iaddi vi05, vi00, 0x0 | nop
|
||||
iaddi vi06, vi00, 0x0 | nop
|
||||
iaddiu vi03, vi00, 0x22 | nop
|
||||
L8:
|
||||
lq.xyzw vf07, 1(vi04) | nop
|
||||
iaddi vi04, vi04, 0x2 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
div Q, vf25.x, vf07.w | mul.xyzw vf08, vf07, vf27
|
||||
move.z vf07, vf00 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | clipw.xyz vf08, vf08
|
||||
nop | nop
|
||||
nop | nop
|
||||
iaddiu vi01, vi00, 0x2f | mul.xy vf07, vf07, Q
|
||||
fcget vi07 | nop
|
||||
iand vi07, vi07, vi01 | nop
|
||||
iand vi05, vi05, vi06 | nop
|
||||
iand vi05, vi05, vi07 | add.xyzw vf07, vf07, vf26
|
||||
nop | nop
|
||||
ibne vi00, vi05, L9 | nop
|
||||
nop | nop
|
||||
nop | maxx.w vf07, vf07, vf00
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
ior vi05, vi06, vi00 | ftoi4.xyzw vf07, vf07
|
||||
iaddi vi03, vi03, -0x1 | nop
|
||||
ior vi06, vi07, vi00 | nop
|
||||
ibne vi00, vi03, L8 | nop
|
||||
sq.xyzw vf07, -1(vi04) | nop
|
||||
b L10 | nop
|
||||
xgkick vi14 | nop
|
||||
L9:
|
||||
nop | maxx.w vf07, vf07, vf00
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | addw.w vf07, vf07, vf25
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
ior vi05, vi06, vi00 | ftoi4.xyzw vf07, vf07
|
||||
iaddi vi03, vi03, -0x1 | nop
|
||||
ior vi06, vi07, vi00 | nop
|
||||
ibne vi00, vi03, L8 | nop
|
||||
sq.xyzw vf07, -1(vi04) | nop
|
||||
xgkick vi14 | nop
|
||||
L10:
|
||||
iaddi vi08, vi08, -0x1 | nop
|
||||
iaddiu vi01, vi00, 0x80 | nop
|
||||
isub vi14, vi01, vi14 | nop
|
||||
ibne vi00, vi08, L6 | nop
|
||||
mr32.xyzw vf02, vf02 | nop
|
||||
jr vi15 | nop
|
||||
nop | nop
|
||||
lq.xyzw vf01, 273(vi00) | nop
|
||||
lq.xyzw vf02, 274(vi00) | nop
|
||||
lq.xyzw vf03, 275(vi00) | nop
|
||||
lq.xyzw vf09, 276(vi00) | nop
|
||||
bal vi15, L1 | nop
|
||||
nop | nop
|
||||
lq.xyzw vf01, 277(vi00) | nop
|
||||
lq.xyzw vf02, 278(vi00) | nop
|
||||
lq.xyzw vf03, 279(vi00) | nop
|
||||
lq.xyzw vf09, 280(vi00) | nop
|
||||
bal vi15, L1 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
@@ -0,0 +1,410 @@
|
||||
.word 0x800e0032
|
||||
.word 0x2ff
|
||||
.word 0x1fc0123
|
||||
.word 0x2ff
|
||||
.word 0x1fd0124
|
||||
.word 0x2ff
|
||||
.word 0x1fe0125
|
||||
.word 0x2ff
|
||||
.word 0x1ff0126
|
||||
.word 0x2ff
|
||||
.word 0x1fb0127
|
||||
.word 0x2ff
|
||||
.word 0x1fa0128
|
||||
.word 0x400002ff
|
||||
.word 0x1f90129
|
||||
.word 0x2ff
|
||||
.word 0x1e5012b
|
||||
.word 0x2ff
|
||||
.word 0x1e70134
|
||||
.word 0x2ff
|
||||
.word 0x1e80133
|
||||
.word 0x2ff
|
||||
.word 0x80007135
|
||||
.word 0x2ff
|
||||
.word 0x10020100
|
||||
.word 0x1e1e1bc
|
||||
.word 0x1e40131
|
||||
.word 0x1e1e8bd
|
||||
.word 0x10030011
|
||||
.word 0x1e1f04a
|
||||
.word 0x81e43b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e4437d
|
||||
.word 0x2ff
|
||||
.word 0x81e4237d
|
||||
.word 0x2ff
|
||||
.word 0x81e42b7d
|
||||
.word 0x2ff
|
||||
.word 0x3041fff
|
||||
.word 0x2ff
|
||||
.word 0x81e40b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e6137c
|
||||
.word 0x2ff
|
||||
.word 0x81e42b7d
|
||||
.word 0x2ff
|
||||
.word 0x3044fff
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e23198
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e131a8
|
||||
.word 0x80031ff2
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x52001ff4
|
||||
.word 0x2ff
|
||||
.word 0x81e4337d
|
||||
.word 0x2ff
|
||||
.word 0x800470f2
|
||||
.word 0x2ff
|
||||
.word 0x80050032
|
||||
.word 0x2ff
|
||||
.word 0x80060032
|
||||
.word 0x2ff
|
||||
.word 0x10030011
|
||||
.word 0x2ff
|
||||
.word 0x1e72001
|
||||
.word 0x2ff
|
||||
.word 0x800420b2
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x8187cbbc
|
||||
.word 0x1fb3a2a
|
||||
.word 0x8047033c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1c841ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x1001002f
|
||||
.word 0x18039dc
|
||||
.word 0x38050000
|
||||
.word 0x2ff
|
||||
.word 0x80012974
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1fa39e8
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2039d0
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e7397d
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x3e43fff
|
||||
.word 0x2ff
|
||||
.word 0x1e72001
|
||||
.word 0x2ff
|
||||
.word 0x800420b2
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x8187cbbc
|
||||
.word 0x1fb3a2a
|
||||
.word 0x8047033c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1c841ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x1001002f
|
||||
.word 0x18039dc
|
||||
.word 0x38070000
|
||||
.word 0x2ff
|
||||
.word 0x800139f4
|
||||
.word 0x2ff
|
||||
.word 0x800531b4
|
||||
.word 0x2ff
|
||||
.word 0x800731b4
|
||||
.word 0x1fa39e8
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x5200300c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2039d0
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e7397d
|
||||
.word 0x80031ff2
|
||||
.word 0x2ff
|
||||
.word 0x800039b5
|
||||
.word 0x2ff
|
||||
.word 0x52001fe5
|
||||
.word 0x2ff
|
||||
.word 0x3e43fff
|
||||
.word 0x2ff
|
||||
.word 0x4000000f
|
||||
.word 0x2ff
|
||||
.word 0x800076fc
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2039d0
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x3939c3
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e7397d
|
||||
.word 0x80031ff2
|
||||
.word 0x2ff
|
||||
.word 0x800039b5
|
||||
.word 0x2ff
|
||||
.word 0x52001fd6
|
||||
.word 0x2ff
|
||||
.word 0x3e43fff
|
||||
.word 0x2ff
|
||||
.word 0x800076fc
|
||||
.word 0x2ff
|
||||
.word 0x10010080
|
||||
.word 0x2ff
|
||||
.word 0x800e0bb1
|
||||
.word 0x2ff
|
||||
.word 0x800800b2
|
||||
.word 0x2ff
|
||||
.word 0x10020100
|
||||
.word 0x2ff
|
||||
.word 0x1e40132
|
||||
.word 0x2ff
|
||||
.word 0x10030011
|
||||
.word 0x2ff
|
||||
.word 0x80007135
|
||||
.word 0x2ff
|
||||
.word 0x81e31b3d
|
||||
.word 0x2ff
|
||||
.word 0x81e94b3d
|
||||
.word 0x2ff
|
||||
.word 0x81e4237d
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x81e6137c
|
||||
.word 0x2ff
|
||||
.word 0x3e42800
|
||||
.word 0x2ff
|
||||
.word 0x3041800
|
||||
.word 0x2ff
|
||||
.word 0x3e42802
|
||||
.word 0x2ff
|
||||
.word 0x3044802
|
||||
.word 0x1e23298
|
||||
.word 0x80042132
|
||||
.word 0x1e23199
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1e152a8
|
||||
.word 0x80000030
|
||||
.word 0x1e131a8
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80031ff2
|
||||
.word 0x2ff
|
||||
.word 0x3e457fd
|
||||
.word 0x2ff
|
||||
.word 0x52001ff2
|
||||
.word 0x2ff
|
||||
.word 0x3e437ff
|
||||
.word 0x2ff
|
||||
.word 0x80047072
|
||||
.word 0x2ff
|
||||
.word 0x80050032
|
||||
.word 0x2ff
|
||||
.word 0x80060032
|
||||
.word 0x2ff
|
||||
.word 0x10030022
|
||||
.word 0x2ff
|
||||
.word 0x1e72001
|
||||
.word 0x2ff
|
||||
.word 0x800420b2
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x8187cbbc
|
||||
.word 0x1fb3a2a
|
||||
.word 0x8047033c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1c841ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x1001002f
|
||||
.word 0x18039dc
|
||||
.word 0x38070000
|
||||
.word 0x2ff
|
||||
.word 0x800139f4
|
||||
.word 0x2ff
|
||||
.word 0x80062974
|
||||
.word 0x2ff
|
||||
.word 0x80072974
|
||||
.word 0x1fa39e8
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x5200280c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2039d0
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80003175
|
||||
.word 0x1e7397d
|
||||
.word 0x80031ff2
|
||||
.word 0x2ff
|
||||
.word 0x800039b5
|
||||
.word 0x2ff
|
||||
.word 0x52001fe5
|
||||
.word 0x2ff
|
||||
.word 0x3e43fff
|
||||
.word 0x2ff
|
||||
.word 0x4000000f
|
||||
.word 0x2ff
|
||||
.word 0x800076fc
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2039d0
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x3939c3
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80003175
|
||||
.word 0x1e7397d
|
||||
.word 0x80031ff2
|
||||
.word 0x2ff
|
||||
.word 0x800039b5
|
||||
.word 0x2ff
|
||||
.word 0x52001fd6
|
||||
.word 0x2ff
|
||||
.word 0x3e43fff
|
||||
.word 0x2ff
|
||||
.word 0x800076fc
|
||||
.word 0x2ff
|
||||
.word 0x800847f2
|
||||
.word 0x2ff
|
||||
.word 0x10010080
|
||||
.word 0x2ff
|
||||
.word 0x800e0bb1
|
||||
.word 0x2ff
|
||||
.word 0x520047b5
|
||||
.word 0x2ff
|
||||
.word 0x81e2133d
|
||||
.word 0x2ff
|
||||
.word 0x48007800
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x1e10111
|
||||
.word 0x2ff
|
||||
.word 0x1e20112
|
||||
.word 0x2ff
|
||||
.word 0x1e30113
|
||||
.word 0x2ff
|
||||
.word 0x1e90114
|
||||
.word 0x2ff
|
||||
.word 0x420f0744
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x1e10115
|
||||
.word 0x2ff
|
||||
.word 0x1e20116
|
||||
.word 0x2ff
|
||||
.word 0x1e30117
|
||||
.word 0x2ff
|
||||
.word 0x1e90118
|
||||
.word 0x2ff
|
||||
.word 0x420f073e
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
@@ -0,0 +1,65 @@
|
||||
lq.xyzw vf01, 489(vi00) | nop
|
||||
lq.xyzw vf05, 490(vi00) | nop
|
||||
ilw.x vi01, 511(vi00) | nop
|
||||
iaddiu vi04, vi00, 0x200 | nop
|
||||
iaddi vi02, vi00, 0x0 | nop
|
||||
L1:
|
||||
ilw.w vi07, 1(vi04) | nop
|
||||
ior vi05, vi02, vi00 | nop
|
||||
ilw.x vi06, 477(vi07) | nop
|
||||
sqi.xyzw vf01, vi05 | nop
|
||||
iaddiu vi08, vi07, 0x4000 | nop
|
||||
iaddiu vi08, vi08, 0x4000 | nop
|
||||
isw.x vi08, -1(vi05) | nop
|
||||
lqi.xyzw vf02, vi04 | nop
|
||||
lqi.xyzw vf03, vi04 | nop
|
||||
lqi.xyzw vf04, vi04 | nop
|
||||
nop | ftoi4.xyzw vf14, vf02
|
||||
L2:
|
||||
lqi.xyzw vf06, vi06 | nop
|
||||
lqi.xyzw vf07, vi06 | nop
|
||||
lq.xyzw vf08, 0(vi06) | nop
|
||||
lq.xyzw vf09, 1(vi06) | nop
|
||||
iaddi vi07, vi07, -0x1 | muly.xyzw vf10, vf06, vf04
|
||||
nop | mulz.xyzw vf11, vf07, vf04
|
||||
nop | muly.xyzw vf12, vf08, vf04
|
||||
nop | mulz.xyzw vf13, vf09, vf04
|
||||
nop | mulx.xyzw vf06, vf06, vf04
|
||||
nop | mulx.xyzw vf07, vf07, vf04
|
||||
nop | mulx.xyzw vf08, vf08, vf04
|
||||
nop | mulx.xyzw vf09, vf09, vf04
|
||||
nop | add.xyzw vf10, vf10, vf02
|
||||
nop | add.xyzw vf11, vf11, vf03
|
||||
nop | add.xyzw vf12, vf12, vf02
|
||||
nop | add.xyzw vf13, vf13, vf03
|
||||
nop | add.xyzw vf06, vf06, vf02
|
||||
nop | add.xyzw vf07, vf07, vf03
|
||||
nop | add.xyzw vf08, vf08, vf02
|
||||
nop | add.xyzw vf09, vf09, vf03
|
||||
nop | ftoi4.xyzw vf10, vf10
|
||||
nop | ftoi4.xyzw vf12, vf12
|
||||
nop | ftoi4.xyzw vf06, vf06
|
||||
nop | ftoi4.xyzw vf08, vf08
|
||||
sqi.xyzw vf07, vi05 | nop
|
||||
sqi.xyzw vf05, vi05 | nop
|
||||
sqi.xyzw vf06, vi05 | nop
|
||||
sqi.xyzw vf09, vi05 | nop
|
||||
sqi.xyzw vf05, vi05 | nop
|
||||
sqi.xyzw vf08, vi05 | nop
|
||||
sqi.xyzw vf11, vi05 | nop
|
||||
sqi.xyzw vf05, vi05 | nop
|
||||
sqi.xyzw vf10, vi05 | nop
|
||||
sqi.xyzw vf13, vi05 | nop
|
||||
sqi.xyzw vf05, vi05 | nop
|
||||
sqi.xyzw vf12, vi05 | nop
|
||||
sqi.xyzw vf03, vi05 | nop
|
||||
sqi.xyzw vf05, vi05 | nop
|
||||
ibne vi00, vi07, L2 | nop
|
||||
sqi.xyzw vf14, vi05 | nop
|
||||
xgkick vi02 | nop
|
||||
iaddi vi01, vi01, -0x1 | nop
|
||||
iaddiu vi03, vi00, 0xb0 | nop
|
||||
ibne vi00, vi01, L1 | nop
|
||||
isub vi02, vi03, vi02 | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
@@ -0,0 +1,126 @@
|
||||
.word 0x1e101e9
|
||||
.word 0x2ff
|
||||
.word 0x1e501ea
|
||||
.word 0x2ff
|
||||
.word 0x90101ff
|
||||
.word 0x2ff
|
||||
.word 0x10040200
|
||||
.word 0x2ff
|
||||
.word 0x80020032
|
||||
.word 0x2ff
|
||||
.word 0x8272001
|
||||
.word 0x2ff
|
||||
.word 0x80001175
|
||||
.word 0x2ff
|
||||
.word 0x90639dd
|
||||
.word 0x2ff
|
||||
.word 0x81e50b7d
|
||||
.word 0x2ff
|
||||
.word 0x11083800
|
||||
.word 0x2ff
|
||||
.word 0x11084000
|
||||
.word 0x2ff
|
||||
.word 0xb082fff
|
||||
.word 0x2ff
|
||||
.word 0x81e2237c
|
||||
.word 0x2ff
|
||||
.word 0x81e3237c
|
||||
.word 0x2ff
|
||||
.word 0x81e4237c
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x1ee117d
|
||||
.word 0x81e6337c
|
||||
.word 0x2ff
|
||||
.word 0x81e7337c
|
||||
.word 0x2ff
|
||||
.word 0x1e83000
|
||||
.word 0x2ff
|
||||
.word 0x1e93001
|
||||
.word 0x2ff
|
||||
.word 0x80073ff2
|
||||
.word 0x1e43299
|
||||
.word 0x80000030
|
||||
.word 0x1e43ada
|
||||
.word 0x80000030
|
||||
.word 0x1e44319
|
||||
.word 0x80000030
|
||||
.word 0x1e44b5a
|
||||
.word 0x80000030
|
||||
.word 0x1e43198
|
||||
.word 0x80000030
|
||||
.word 0x1e439d8
|
||||
.word 0x80000030
|
||||
.word 0x1e44218
|
||||
.word 0x80000030
|
||||
.word 0x1e44a58
|
||||
.word 0x80000030
|
||||
.word 0x1e252a8
|
||||
.word 0x80000030
|
||||
.word 0x1e35ae8
|
||||
.word 0x80000030
|
||||
.word 0x1e26328
|
||||
.word 0x80000030
|
||||
.word 0x1e36b68
|
||||
.word 0x80000030
|
||||
.word 0x1e231a8
|
||||
.word 0x80000030
|
||||
.word 0x1e339e8
|
||||
.word 0x80000030
|
||||
.word 0x1e24228
|
||||
.word 0x80000030
|
||||
.word 0x1e34a68
|
||||
.word 0x80000030
|
||||
.word 0x1ea517d
|
||||
.word 0x80000030
|
||||
.word 0x1ec617d
|
||||
.word 0x80000030
|
||||
.word 0x1e6317d
|
||||
.word 0x80000030
|
||||
.word 0x1e8417d
|
||||
.word 0x81e53b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e52b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e5337d
|
||||
.word 0x2ff
|
||||
.word 0x81e54b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e52b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e5437d
|
||||
.word 0x2ff
|
||||
.word 0x81e55b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e52b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e5537d
|
||||
.word 0x2ff
|
||||
.word 0x81e56b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e52b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e5637d
|
||||
.word 0x2ff
|
||||
.word 0x81e51b7d
|
||||
.word 0x2ff
|
||||
.word 0x81e52b7d
|
||||
.word 0x2ff
|
||||
.word 0x52003fd9
|
||||
.word 0x2ff
|
||||
.word 0x81e5737d
|
||||
.word 0x2ff
|
||||
.word 0x800016fc
|
||||
.word 0x2ff
|
||||
.word 0x80010ff2
|
||||
.word 0x2ff
|
||||
.word 0x100300b0
|
||||
.word 0x2ff
|
||||
.word 0x52000fc9
|
||||
.word 0x2ff
|
||||
.word 0x800218b1
|
||||
.word 0x2ff
|
||||
.word 0x80000030
|
||||
.word 0x400002ff
|
||||
.word 0x80000030
|
||||
.word 0x2ff
|
||||
@@ -0,0 +1,898 @@
|
||||
lq.xyzw vf29, 996(vi00) | nop
|
||||
lq.xyzw vf31, 997(vi00) | nop :e
|
||||
iaddiu vi15, vi00, 0x320 | nop
|
||||
xtop vi02 | nop
|
||||
nop | nop
|
||||
ilwr.x vi04, vi02 | nop
|
||||
iaddi vi02, vi02, 0x1 | nop
|
||||
iaddiu vi03, vi02, 0x90 | nop
|
||||
L1:
|
||||
ilw.y vi08, 1(vi02) | nop
|
||||
lq.xyzw vf25, 900(vi00) | nop
|
||||
lq.xyzw vf26, 901(vi00) | nop
|
||||
lq.xyzw vf27, 902(vi00) | nop
|
||||
lq.xyzw vf28, 903(vi00) | nop
|
||||
lq.xyzw vf30, 904(vi00) | nop
|
||||
lqi.xyzw vf01, vi02 | nop
|
||||
lqi.xyzw vf05, vi02 | nop
|
||||
lqi.xyzw vf11, vi02 | nop
|
||||
lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00
|
||||
nop | maddax.xyzw ACC, vf25, vf01
|
||||
nop | madday.xyzw ACC, vf26, vf01
|
||||
nop | maddz.xyzw vf02, vf27, vf01
|
||||
move.w vf05, vf00 | addw.z vf01, vf00, vf05
|
||||
nop | nop
|
||||
div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31
|
||||
nop | mul.xyzw vf03, vf02, vf29
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | mulz.z vf04, vf05, vf05
|
||||
lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03
|
||||
iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11
|
||||
L2:
|
||||
ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q
|
||||
lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04
|
||||
lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14
|
||||
fmand vi01, vi06 | mul.xyz vf02, vf02, Q
|
||||
ibne vi00, vi01, L5 | addz.x vf01, vf00, vf01
|
||||
lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04
|
||||
lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14
|
||||
lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30
|
||||
lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01
|
||||
sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04
|
||||
lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14
|
||||
sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12
|
||||
sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31
|
||||
sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04
|
||||
lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14
|
||||
lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31
|
||||
lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12
|
||||
lq.xyzw vf08, 999(vi08) | miniz.zw vf01, vf01, vf12
|
||||
ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14
|
||||
lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00
|
||||
nop | suby.w vf02, vf10, vf12
|
||||
lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01
|
||||
fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00
|
||||
lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23
|
||||
fmand vi09, vi06 | nop
|
||||
ibne vi00, vi09, L6 | nop
|
||||
lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23
|
||||
L3:
|
||||
lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11
|
||||
lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23
|
||||
lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05
|
||||
lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05
|
||||
sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05
|
||||
lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05
|
||||
move.w vf24, vf00 | addw.z vf23, vf00, vf24
|
||||
div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01
|
||||
ibne vi00, vi01, L4 | muly.z vf24, vf24, vf31
|
||||
ilw.y vi08, -2(vi02) | mulz.xyzw vf13, vf13, vf01
|
||||
sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29
|
||||
sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00
|
||||
sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19
|
||||
lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19
|
||||
lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00
|
||||
lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20
|
||||
lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20
|
||||
sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00
|
||||
sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21
|
||||
sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21
|
||||
sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00
|
||||
nop | maddax.xyzw ACC, vf12, vf22
|
||||
nop | maddy.xyzw vf22, vf13, vf22
|
||||
lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19
|
||||
lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20
|
||||
move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21
|
||||
move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22
|
||||
sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24
|
||||
sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03
|
||||
sq.xyzw vf21, 6(vi05) | nop
|
||||
sq.xyzw vf22, 8(vi05) | nop
|
||||
xgkick vi15 | nop
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddiu vi01, vi00, 0x672 | nop
|
||||
ibne vi00, vi04, L2 | nop
|
||||
isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L4:
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddi vi02, vi02, -0x3 | nop
|
||||
ibne vi00, vi04, L1 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L5:
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddi vi03, vi03, 0x4 | nop
|
||||
ibne vi00, vi04, L1 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L6:
|
||||
b L3 | nop
|
||||
lq.xyzw vf08, 1000(vi00) | nop
|
||||
xtop vi02 | nop
|
||||
nop | nop
|
||||
ilwr.x vi04, vi02 | nop
|
||||
iaddi vi02, vi02, 0x1 | nop
|
||||
iaddiu vi03, vi02, 0x90 | nop
|
||||
L7:
|
||||
ilw.y vi08, 1(vi02) | nop
|
||||
lq.xyzw vf25, 900(vi00) | nop
|
||||
lq.xyzw vf26, 901(vi00) | nop
|
||||
lq.xyzw vf27, 902(vi00) | nop
|
||||
lq.xyzw vf28, 903(vi00) | nop
|
||||
lq.xyzw vf30, 904(vi08) | nop
|
||||
lqi.xyzw vf01, vi02 | nop
|
||||
lqi.xyzw vf05, vi02 | nop
|
||||
lqi.xyzw vf11, vi02 | nop
|
||||
lq.xyzw vf12, 1020(vi00) | mulaw.xyzw ACC, vf28, vf00
|
||||
ilw.y vi08, 1(vi02) | maddax.xyzw ACC, vf25, vf01
|
||||
nop | madday.xyzw ACC, vf26, vf01
|
||||
nop | maddz.xyzw vf02, vf27, vf01
|
||||
move.w vf05, vf00 | addw.z vf01, vf00, vf05
|
||||
nop | nop
|
||||
div Q, vf31.x, vf02.w | muly.z vf05, vf05, vf31
|
||||
nop | mul.xyzw vf03, vf02, vf29
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | mulz.z vf04, vf05, vf05
|
||||
lq.xyzw vf14, 1001(vi00) | clipw.xyz vf03, vf03
|
||||
iaddi vi06, vi00, 0x1 | adda.xyzw ACC, vf11, vf11
|
||||
L8:
|
||||
ior vi05, vi15, vi00 | mul.zw vf01, vf01, Q
|
||||
lq.xyzw vf06, 998(vi00) | mulz.xyzw vf15, vf05, vf04
|
||||
lq.xyzw vf14, 1002(vi00) | mula.xyzw ACC, vf05, vf14
|
||||
fmand vi01, vi06 | mul.xyz vf02, vf02, Q
|
||||
ibne vi00, vi01, L10 | addz.x vf01, vf00, vf01
|
||||
lqi.xyzw vf07, vi03 | mulz.xyzw vf16, vf15, vf04
|
||||
lq.xyzw vf14, 1003(vi00) | madda.xyzw ACC, vf15, vf14
|
||||
lqi.xyzw vf08, vi03 | add.xyzw vf10, vf02, vf30
|
||||
lqi.xyzw vf09, vi03 | mulw.x vf01, vf01, vf01
|
||||
sqi.xyzw vf06, vi05 | mulz.xyzw vf15, vf16, vf04
|
||||
lq.xyzw vf14, 1004(vi00) | madda.xyzw ACC, vf16, vf14
|
||||
sqi.xyzw vf07, vi05 | maxx.w vf10, vf10, vf12
|
||||
sqi.xyzw vf08, vi05 | maxz.zw vf01, vf01, vf31
|
||||
sqi.xyzw vf09, vi05 | mulz.xyzw vf16, vf15, vf04
|
||||
lq.xyzw vf14, 1005(vi00) | madda.xyzw ACC, vf15, vf14
|
||||
lqi.xyzw vf06, vi03 | mulw.x vf01, vf01, vf31
|
||||
lqi.xyzw vf07, vi03 | miniy.w vf10, vf10, vf12
|
||||
lq.xyzw vf08, 1000(vi00) | nop
|
||||
ilw.x vi07, -2(vi02) | madd.xyzw vf05, vf16, vf14
|
||||
lq.xyzw vf30, 904(vi08) | nop
|
||||
lqi.xyzw vf23, vi02 | miniw.x vf01, vf01, vf00
|
||||
lqi.xyzw vf24, vi02 | mulx.w vf11, vf11, vf01
|
||||
fcand vi01, 0x3f | mulaw.xyzw ACC, vf28, vf00
|
||||
lq.xyzw vf17, 1006(vi00) | maddax.xyzw ACC, vf25, vf23
|
||||
lq.xyzw vf18, 1007(vi00) | madday.xyzw ACC, vf26, vf23
|
||||
lq.xyzw vf19, 980(vi07) | ftoi0.xyzw vf11, vf11
|
||||
lq.xyzw vf20, 981(vi07) | maddz.xyzw vf02, vf27, vf23
|
||||
lq.xyzw vf21, 982(vi07) | mulaw.xyzw ACC, vf17, vf05
|
||||
lq.xyzw vf22, 983(vi07) | msub.xyzw vf12, vf18, vf05
|
||||
sq.xyzw vf11, 3(vi05) | mulaz.xyzw ACC, vf17, vf05
|
||||
lqi.xyzw vf11, vi02 | maddw.xyzw vf13, vf18, vf05
|
||||
move.w vf24, vf00 | addw.z vf23, vf00, vf24
|
||||
div Q, vf31.x, vf02.w | mulw.xyzw vf12, vf12, vf01
|
||||
ibne vi00, vi01, L9 | muly.z vf24, vf24, vf31
|
||||
ilw.y vi08, 1(vi02) | mulz.xyzw vf13, vf13, vf01
|
||||
sqi.xyzw vf06, vi05 | mul.xyzw vf03, vf02, vf29
|
||||
sqi.xyzw vf07, vi05 | mulaw.xyzw ACC, vf10, vf00
|
||||
sqi.xyzw vf08, vi05 | maddax.xyzw ACC, vf12, vf19
|
||||
lq.xyzw vf06, 988(vi00) | maddy.xyzw vf19, vf13, vf19
|
||||
lq.xyzw vf07, 989(vi00) | mulaw.xyzw ACC, vf10, vf00
|
||||
lq.xyzw vf08, 990(vi00) | maddax.xyzw ACC, vf12, vf20
|
||||
lq.xyzw vf09, 991(vi00) | maddy.xyzw vf20, vf13, vf20
|
||||
sq.xyzw vf06, 1(vi05) | mulaw.xyzw ACC, vf10, vf00
|
||||
sq.xyzw vf07, 3(vi05) | maddax.xyzw ACC, vf12, vf21
|
||||
sq.xyzw vf08, 5(vi05) | maddy.xyzw vf21, vf13, vf21
|
||||
sq.xyzw vf09, 7(vi05) | mulaw.xyzw ACC, vf10, vf00
|
||||
nop | maddax.xyzw ACC, vf12, vf22
|
||||
nop | maddy.xyzw vf22, vf13, vf22
|
||||
lq.xyzw vf12, 1020(vi00) | ftoi4.xyzw vf19, vf19
|
||||
lq.xyzw vf14, 1001(vi00) | ftoi4.xyzw vf20, vf20
|
||||
move.xyzw vf05, vf24 | ftoi4.xyzw vf21, vf21
|
||||
move.xyzw vf01, vf23 | ftoi4.xyzw vf22, vf22
|
||||
sq.xyzw vf19, 2(vi05) | mulz.z vf04, vf24, vf24
|
||||
sq.xyzw vf20, 4(vi05) | clipw.xyz vf03, vf03
|
||||
sq.xyzw vf21, 6(vi05) | nop
|
||||
sq.xyzw vf22, 8(vi05) | nop
|
||||
xgkick vi15 | nop
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddiu vi01, vi00, 0x672 | nop
|
||||
ibne vi00, vi04, L8 | nop
|
||||
isub vi15, vi01, vi15 | adda.xyzw ACC, vf11, vf11
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L9:
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddi vi02, vi02, -0x3 | nop
|
||||
ibne vi00, vi04, L7 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L10:
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddi vi03, vi03, 0x4 | nop
|
||||
ibne vi00, vi04, L7 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
lq.xyzw vf25, 900(vi00) | nop
|
||||
lq.xyzw vf26, 901(vi00) | nop
|
||||
lq.xyzw vf27, 902(vi00) | nop
|
||||
lq.xyzw vf28, 903(vi00) | nop
|
||||
lq.xyzw vf30, 904(vi00) | nop
|
||||
xtop vi02 | nop
|
||||
nop | nop
|
||||
ilwr.x vi04, vi02 | nop
|
||||
iaddi vi02, vi02, 0x1 | nop
|
||||
iaddiu vi03, vi02, 0x90 | nop
|
||||
lq.xyzw vf23, 1020(vi00) | nop
|
||||
iaddi vi06, vi00, 0x1 | nop
|
||||
L11:
|
||||
lq.xyzw vf06, 1(vi02) | nop
|
||||
lq.xyzw vf07, 2(vi02) | nop
|
||||
iaddi vi01, vi00, 0x2 | nop
|
||||
nop | nop
|
||||
nop | mul.xyzw vf05, vf06, vf06
|
||||
nop | addw.y vf08, vf00, vf06
|
||||
nop | subw.w vf06, vf06, vf06
|
||||
nop | adda.xyzw ACC, vf07, vf07
|
||||
nop | addy.x vf05, vf05, vf05
|
||||
nop | nop
|
||||
nop | nop
|
||||
fmand vi01, vi06 | nop
|
||||
ibne vi00, vi01, L15 | addz.x vf05, vf05, vf05
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | subx.w vf05, vf00, vf05
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
sqrt Q, vf05.w | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | addq.w vf06, vf06, Q
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | add.xyzw vf13, vf06, vf06
|
||||
nop | addw.x vf09, vf00, vf06
|
||||
nop | addz.y vf09, vf00, vf06
|
||||
nop | suby.z vf09, vf00, vf06
|
||||
nop | subw.w vf09, vf00, vf00
|
||||
nop | subz.x vf10, vf00, vf06
|
||||
nop | addw.y vf10, vf00, vf06
|
||||
nop | addx.z vf10, vf00, vf06
|
||||
nop | subw.w vf10, vf00, vf00
|
||||
nop | addy.x vf11, vf00, vf06
|
||||
nop | subx.y vf11, vf00, vf06
|
||||
nop | addw.z vf11, vf00, vf06
|
||||
nop | subw.w vf11, vf00, vf00
|
||||
L12:
|
||||
lq.xyzw vf12, 0(vi02) | opmula.xyz ACC, vf13, vf09
|
||||
lq.xyzw vf07, 2(vi02) | opmsub.xyz vf09, vf09, vf13
|
||||
iaddi vi02, vi02, 0x3 | opmula.xyz ACC, vf13, vf10
|
||||
lq.xyzw vf06, 1(vi02) | opmsub.xyz vf10, vf10, vf13
|
||||
ior vi05, vi15, vi00 | opmula.xyz ACC, vf13, vf11
|
||||
lq.xyzw vf01, 998(vi00) | opmsub.xyz vf11, vf11, vf13
|
||||
lqi.xyzw vf02, vi03 | addw.x vf09, vf09, vf00
|
||||
lqi.xyzw vf03, vi03 | addw.y vf10, vf10, vf00
|
||||
lqi.xyzw vf04, vi03 | addw.z vf11, vf11, vf00
|
||||
sqi.xyzw vf01, vi05 | mul.xyzw vf05, vf06, vf06
|
||||
move.w vf12, vf00 | mulw.xyzw vf09, vf09, vf12
|
||||
iaddi vi06, vi00, 0x1 | muly.xyzw vf11, vf11, vf08
|
||||
lq.xyzw vf14, 992(vi00) | adda.xyzw ACC, vf07, vf07
|
||||
lq.xyzw vf15, 993(vi00) | ftoi0.xyzw vf07, vf07
|
||||
lq.xyzw vf16, 994(vi00) | addw.y vf08, vf00, vf06
|
||||
lq.xyzw vf17, 995(vi00) | subw.w vf06, vf06, vf06
|
||||
fmand vi01, vi06 | mulax.xyzw ACC, vf09, vf14
|
||||
ibne vi00, vi01, L14 | madday.xyzw ACC, vf10, vf14
|
||||
sq.xyzw vf07, 7(vi05) | maddaz.xyzw ACC, vf11, vf14
|
||||
sq.xyzw vf07, 10(vi05) | maddw.xyzw vf14, vf12, vf00
|
||||
sqi.xyzw vf02, vi05 | addy.x vf05, vf05, vf05
|
||||
sq.xyzw vf07, 12(vi05) | mulax.xyzw ACC, vf09, vf15
|
||||
sq.xyzw vf07, 15(vi05) | madday.xyzw ACC, vf10, vf15
|
||||
sqi.xyzw vf03, vi05 | maddaz.xyzw ACC, vf11, vf15
|
||||
sqi.xyzw vf04, vi05 | addz.x vf05, vf05, vf05
|
||||
lqi.xyzw vf01, vi03 | maddw.xyzw vf15, vf12, vf00
|
||||
lqi.xyzw vf02, vi03 | mulax.xyzw ACC, vf09, vf16
|
||||
lq.xyzw vf03, 1008(vi00) | madday.xyzw ACC, vf10, vf16
|
||||
nop | subx.w vf05, vf00, vf05
|
||||
sqi.xyzw vf01, vi05 | maddaz.xyzw ACC, vf11, vf16
|
||||
sqi.xyzw vf02, vi05 | maddw.xyzw vf16, vf12, vf00
|
||||
sqi.xyzw vf03, vi05 | mulax.xyzw ACC, vf09, vf17
|
||||
sqrt Q, vf05.w | madday.xyzw ACC, vf10, vf17
|
||||
nop | maddaz.xyzw ACC, vf11, vf17
|
||||
nop | maddw.xyzw vf17, vf12, vf00
|
||||
lq.xyzw vf18, 988(vi00) | mulax.xyzw ACC, vf25, vf14
|
||||
lq.xyzw vf19, 989(vi00) | madday.xyzw ACC, vf26, vf14
|
||||
lq.xyzw vf20, 990(vi00) | maddaz.xyzw ACC, vf27, vf14
|
||||
lq.xyzw vf21, 991(vi00) | maddw.xyzw vf14, vf28, vf00
|
||||
nop | addq.w vf06, vf06, Q
|
||||
nop | mulax.xyzw ACC, vf25, vf15
|
||||
nop | madday.xyzw ACC, vf26, vf15
|
||||
nop | maddaz.xyzw ACC, vf27, vf15
|
||||
div Q, vf31.x, vf14.w | mul.xyzw vf09, vf14, vf29
|
||||
nop | maddw.xyzw vf15, vf28, vf00
|
||||
nop | mulax.xyzw ACC, vf25, vf16
|
||||
nop | madday.xyzw ACC, vf26, vf16
|
||||
nop | maddaz.xyzw ACC, vf27, vf16
|
||||
nop | mul.xyzw vf10, vf15, vf29
|
||||
nop | maddw.xyzw vf16, vf28, vf00
|
||||
div Q, vf31.x, vf15.w | mul.xyz vf14, vf14, Q
|
||||
nop | mul.xyzw vf18, vf18, Q
|
||||
nop | mulax.xyzw ACC, vf25, vf17
|
||||
nop | madday.xyzw ACC, vf26, vf17
|
||||
nop | maddaz.xyzw ACC, vf27, vf17
|
||||
sq.xyzw vf18, 0(vi05) | mul.xyzw vf11, vf16, vf29
|
||||
nop | maddw.xyzw vf17, vf28, vf00
|
||||
div Q, vf31.x, vf16.w | mul.xyz vf15, vf15, Q
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | add.xyzw vf14, vf14, vf30
|
||||
nop | add.xyzw vf15, vf15, vf30
|
||||
nop | mul.xyzw vf12, vf17, vf29
|
||||
sq.xyzw vf19, 3(vi05) | clipw.xyz vf09, vf09
|
||||
nop | clipw.xyz vf10, vf10
|
||||
div Q, vf31.x, vf17.w | mul.xyz vf16, vf16, Q
|
||||
nop | mul.xyzw vf20, vf20, Q
|
||||
nop | clipw.xyz vf11, vf11
|
||||
nop | clipw.xyz vf12, vf12
|
||||
nop | add.xyzw vf16, vf16, vf30
|
||||
sq.xyzw vf20, 6(vi05) | maxx.w vf14, vf14, vf23
|
||||
nop | maxx.w vf15, vf15, vf23
|
||||
fcand vi01, 0x410410 | mul.xyz vf17, vf17, Q
|
||||
ibne vi00, vi01, L13 | mul.xyzw vf21, vf21, Q
|
||||
fcand vi01, 0xffffff | maxx.w vf16, vf16, vf23
|
||||
ibne vi00, vi01, L16 | miniy.w vf14, vf14, vf23
|
||||
nop | add.xyzw vf17, vf17, vf30
|
||||
sq.xyzw vf21, 9(vi05) | miniy.w vf15, vf15, vf23
|
||||
nop | miniy.w vf16, vf16, vf23
|
||||
nop | ftoi4.xyzw vf14, vf14
|
||||
nop | maxx.w vf17, vf17, vf23
|
||||
nop | ftoi4.xyzw vf15, vf15
|
||||
nop | ftoi4.xyzw vf16, vf16
|
||||
sq.xyzw vf14, 2(vi05) | add.xyzw vf13, vf06, vf06
|
||||
nop | miniy.w vf17, vf17, vf23
|
||||
sq.xyzw vf15, 5(vi05) | addw.x vf09, vf00, vf06
|
||||
sq.xyzw vf16, 8(vi05) | addz.y vf09, vf00, vf06
|
||||
nop | suby.z vf09, vf00, vf06
|
||||
nop | ftoi4.xyzw vf17, vf17
|
||||
nop | subw.w vf09, vf00, vf00
|
||||
nop | subz.x vf10, vf00, vf06
|
||||
nop | addw.y vf10, vf00, vf06
|
||||
sq.xyzw vf17, 11(vi05) | addx.z vf10, vf00, vf06
|
||||
xgkick vi15 | subw.w vf10, vf00, vf00
|
||||
iaddi vi04, vi04, -0x1 | addy.x vf11, vf00, vf06
|
||||
iaddiu vi01, vi00, 0x672 | subx.y vf11, vf00, vf06
|
||||
ibne vi00, vi04, L12 | addw.z vf11, vf00, vf06
|
||||
isub vi15, vi01, vi15 | subw.w vf11, vf00, vf00
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L13:
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
nop | nop
|
||||
ibne vi00, vi04, L11 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L14:
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddi vi03, vi03, 0x2 | nop
|
||||
ibne vi00, vi04, L11 | nop
|
||||
nop | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L15:
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddi vi03, vi03, 0x5 | nop
|
||||
ibne vi00, vi04, L11 | nop
|
||||
iaddi vi02, vi02, 0x3 | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L16:
|
||||
fcor vi01, 0x7df7df | nop
|
||||
ibne vi00, vi01, L13 | nop
|
||||
fcor vi01, 0xdf7df7 | nop
|
||||
ibne vi00, vi01, L13 | nop
|
||||
fcor vi01, 0xefbefb | nop
|
||||
ibne vi00, vi01, L13 | nop
|
||||
fcor vi01, 0xf7df7d | nop
|
||||
ibne vi00, vi01, L13 | nop
|
||||
fcor vi01, 0xfbefbe | nop
|
||||
ibne vi00, vi01, L13 | nop
|
||||
ior vi07, vi05, vi00 | nop
|
||||
nop | itof0.xyzw vf07, vf07
|
||||
sq.xyzw vf09, 2(vi07) | nop
|
||||
sq.xyzw vf10, 5(vi07) | nop
|
||||
sq.xyzw vf11, 8(vi07) | nop
|
||||
sq.xyzw vf12, 11(vi07) | nop
|
||||
sq.xyzw vf09, 14(vi07) | nop
|
||||
lq.xyzw vf18, 988(vi00) | nop
|
||||
lq.xyzw vf19, 989(vi00) | nop
|
||||
lq.xyzw vf20, 990(vi00) | nop
|
||||
lq.xyzw vf21, 991(vi00) | nop
|
||||
sq.xyzw vf18, 0(vi07) | nop
|
||||
sq.xyzw vf19, 3(vi07) | nop
|
||||
sq.xyzw vf20, 6(vi07) | nop
|
||||
sq.xyzw vf21, 9(vi07) | nop
|
||||
sq.xyzw vf18, 12(vi07) | nop
|
||||
sq.xyzw vf07, 1(vi07) | nop
|
||||
sq.xyzw vf07, 4(vi07) | nop
|
||||
sq.xyzw vf07, 7(vi07) | nop
|
||||
sq.xyzw vf07, 10(vi07) | nop
|
||||
sq.xyzw vf07, 13(vi07) | nop
|
||||
iaddi vi09, vi00, 0x4 | nop
|
||||
bal vi11, L18 | nop
|
||||
nop | nop
|
||||
lq.xyzw vf01, 1014(vi00) | nop
|
||||
ibeq vi00, vi09, L13 | nop
|
||||
iaddiu vi10, vi09, 0x4000 | nop
|
||||
iaddiu vi10, vi10, 0x4000 | nop
|
||||
sqd.xyzw vf01, vi05 | nop
|
||||
iswr.x vi10, vi05 | nop
|
||||
iaddi vi05, vi05, 0x1 | nop
|
||||
lq.xyzw vf29, 1015(vi00) | nop
|
||||
L17:
|
||||
lqi.xyzw vf17, vi05 | nop
|
||||
lqi.xyzw vf20, vi05 | nop
|
||||
lqi.xyzw vf14, vi05 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
div Q, vf00.w, vf14.w | mul.xyzw vf14, vf14, vf29
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | mul.xyz vf14, vf14, Q
|
||||
nop | mul.xyzw vf17, vf17, Q
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | add.xyzw vf14, vf14, vf30
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | maxx.w vf14, vf14, vf23
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | miniy.w vf14, vf14, vf23
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | ftoi0.xyzw vf20, vf20
|
||||
nop | ftoi4.xyzw vf14, vf14
|
||||
nop | nop
|
||||
sq.xyzw vf17, -3(vi05) | nop
|
||||
sq.xyzw vf20, -2(vi05) | nop
|
||||
sq.xyzw vf14, -1(vi05) | nop
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
nop | nop
|
||||
ibne vi00, vi09, L17 | nop
|
||||
nop | nop
|
||||
lq.xyzw vf29, 996(vi00) | nop
|
||||
xgkick vi15 | nop
|
||||
iaddi vi04, vi04, -0x1 | nop
|
||||
iaddiu vi01, vi00, 0x672 | nop
|
||||
ibne vi00, vi04, L11 | nop
|
||||
isub vi15, vi01, vi15 | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L18:
|
||||
ior vi08, vi07, vi00 | nop
|
||||
lq.xyzw vf14, 2(vi07) | nop
|
||||
ior vi10, vi09, vi00 | nop
|
||||
lq.xyzw vf17, 0(vi07) | nop
|
||||
lq.xyzw vf20, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
||||
L19:
|
||||
lq.xyzw vf15, 2(vi07) | nop
|
||||
lq.xyzw vf18, 0(vi07) | nop
|
||||
lq.xyzw vf21, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | nop
|
||||
nop | clipw.xyz vf15, vf15
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fcor vi01, 0xfff7df | nop
|
||||
ibne vi00, vi01, L30 | nop
|
||||
fcand vi01, 0x20 | nop
|
||||
ibne vi00, vi01, L31 | nop
|
||||
fcand vi01, 0x800 | nop
|
||||
ibne vi00, vi01, L32 | nop
|
||||
nop | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
L20:
|
||||
move.xyzw vf17, vf18 | nop
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
move.xyzw vf20, vf21 | nop
|
||||
ibne vi00, vi09, L19 | nop
|
||||
move.xyzw vf14, vf15 | nop
|
||||
lq.xyzw vf17, 0(vi05) | nop
|
||||
lq.xyzw vf20, 1(vi05) | nop
|
||||
lq.xyzw vf14, 2(vi05) | nop
|
||||
ior vi07, vi05, vi00 | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
ibeq vi00, vi10, L29 | nop
|
||||
ior vi09, vi10, vi00 | nop
|
||||
ior vi08, vi07, vi00 | nop
|
||||
lq.xyzw vf14, 2(vi07) | nop
|
||||
ior vi10, vi09, vi00 | nop
|
||||
lq.xyzw vf17, 0(vi07) | nop
|
||||
lq.xyzw vf20, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
||||
L21:
|
||||
lq.xyzw vf15, 2(vi07) | nop
|
||||
lq.xyzw vf18, 0(vi07) | nop
|
||||
lq.xyzw vf21, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | nop
|
||||
nop | clipw.xyz vf15, vf15
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fcor vi01, 0xfffdf7 | nop
|
||||
ibne vi00, vi01, L33 | nop
|
||||
fcand vi01, 0x8 | nop
|
||||
ibne vi00, vi01, L34 | nop
|
||||
fcand vi01, 0x200 | nop
|
||||
ibne vi00, vi01, L35 | nop
|
||||
nop | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
L22:
|
||||
move.xyzw vf17, vf18 | nop
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
move.xyzw vf20, vf21 | nop
|
||||
ibne vi00, vi09, L21 | nop
|
||||
move.xyzw vf14, vf15 | nop
|
||||
lq.xyzw vf17, 0(vi05) | nop
|
||||
lq.xyzw vf20, 1(vi05) | nop
|
||||
lq.xyzw vf14, 2(vi05) | nop
|
||||
ior vi07, vi05, vi00 | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
ibeq vi00, vi10, L29 | nop
|
||||
ior vi09, vi10, vi00 | nop
|
||||
ior vi08, vi07, vi00 | nop
|
||||
lq.xyzw vf14, 2(vi07) | nop
|
||||
ior vi10, vi09, vi00 | nop
|
||||
lq.xyzw vf17, 0(vi07) | nop
|
||||
lq.xyzw vf20, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
||||
L23:
|
||||
lq.xyzw vf15, 2(vi07) | nop
|
||||
lq.xyzw vf18, 0(vi07) | nop
|
||||
lq.xyzw vf21, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | nop
|
||||
nop | clipw.xyz vf15, vf15
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fcor vi01, 0xfffefb | nop
|
||||
ibne vi00, vi01, L36 | nop
|
||||
fcand vi01, 0x4 | nop
|
||||
ibne vi00, vi01, L37 | nop
|
||||
fcand vi01, 0x100 | nop
|
||||
ibne vi00, vi01, L38 | nop
|
||||
nop | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
L24:
|
||||
move.xyzw vf17, vf18 | nop
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
move.xyzw vf20, vf21 | nop
|
||||
ibne vi00, vi09, L23 | nop
|
||||
move.xyzw vf14, vf15 | nop
|
||||
lq.xyzw vf17, 0(vi05) | nop
|
||||
lq.xyzw vf20, 1(vi05) | nop
|
||||
lq.xyzw vf14, 2(vi05) | nop
|
||||
ior vi07, vi05, vi00 | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
ibeq vi00, vi10, L29 | nop
|
||||
ior vi09, vi10, vi00 | nop
|
||||
ior vi08, vi07, vi00 | nop
|
||||
lq.xyzw vf14, 2(vi07) | nop
|
||||
ior vi10, vi09, vi00 | nop
|
||||
lq.xyzw vf17, 0(vi07) | nop
|
||||
lq.xyzw vf20, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
||||
L25:
|
||||
lq.xyzw vf15, 2(vi07) | nop
|
||||
lq.xyzw vf18, 0(vi07) | nop
|
||||
lq.xyzw vf21, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | nop
|
||||
nop | clipw.xyz vf15, vf15
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fcor vi01, 0xffff7d | nop
|
||||
ibne vi00, vi01, L39 | nop
|
||||
fcand vi01, 0x2 | nop
|
||||
ibne vi00, vi01, L40 | nop
|
||||
fcand vi01, 0x80 | nop
|
||||
ibne vi00, vi01, L41 | nop
|
||||
nop | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
L26:
|
||||
move.xyzw vf17, vf18 | nop
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
move.xyzw vf20, vf21 | nop
|
||||
ibne vi00, vi09, L25 | nop
|
||||
move.xyzw vf14, vf15 | nop
|
||||
lq.xyzw vf17, 0(vi05) | nop
|
||||
lq.xyzw vf20, 1(vi05) | nop
|
||||
lq.xyzw vf14, 2(vi05) | nop
|
||||
ior vi07, vi05, vi00 | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
ibeq vi00, vi10, L29 | nop
|
||||
ior vi09, vi10, vi00 | nop
|
||||
ior vi08, vi07, vi00 | nop
|
||||
lq.xyzw vf14, 2(vi07) | nop
|
||||
ior vi10, vi09, vi00 | nop
|
||||
lq.xyzw vf17, 0(vi07) | nop
|
||||
lq.xyzw vf20, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | clipw.xyz vf14, vf14
|
||||
L27:
|
||||
lq.xyzw vf15, 2(vi07) | nop
|
||||
lq.xyzw vf18, 0(vi07) | nop
|
||||
lq.xyzw vf21, 1(vi07) | nop
|
||||
iaddi vi07, vi07, 0x3 | nop
|
||||
nop | clipw.xyz vf15, vf15
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fcor vi01, 0xffffbe | nop
|
||||
ibne vi00, vi01, L42 | nop
|
||||
fcand vi01, 0x1 | nop
|
||||
ibne vi00, vi01, L43 | nop
|
||||
fcand vi01, 0x40 | nop
|
||||
ibne vi00, vi01, L44 | nop
|
||||
nop | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
L28:
|
||||
move.xyzw vf17, vf18 | nop
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
move.xyzw vf20, vf21 | nop
|
||||
ibne vi00, vi09, L27 | nop
|
||||
move.xyzw vf14, vf15 | nop
|
||||
lq.xyzw vf17, 0(vi05) | nop
|
||||
lq.xyzw vf20, 1(vi05) | nop
|
||||
lq.xyzw vf14, 2(vi05) | nop
|
||||
ior vi07, vi05, vi00 | nop
|
||||
sqi.xyzw vf17, vi08 | nop
|
||||
sqi.xyzw vf20, vi08 | nop
|
||||
sqi.xyzw vf14, vi08 | nop
|
||||
ibeq vi00, vi10, L29 | nop
|
||||
ior vi09, vi10, vi00 | nop
|
||||
L29:
|
||||
jr vi11 | nop
|
||||
nop | nop
|
||||
L30:
|
||||
b L20 | nop
|
||||
iaddi vi10, vi10, -0x1 | nop
|
||||
L31:
|
||||
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
||||
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
||||
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
||||
ibeq vi07, vi08, L20 | nop
|
||||
nop | addz.w vf13, vf16, vf16
|
||||
nop | addw.z vf13, vf14, vf14
|
||||
div Q, vf13.z, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | sub.xyzw vf19, vf17, vf19
|
||||
nop | sub.xyzw vf22, vf20, vf22
|
||||
nop | sub.xyzw vf16, vf14, vf16
|
||||
iaddi vi10, vi10, 0x1 | nop
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L20 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L32:
|
||||
nop | sub.xyzw vf16, vf14, vf15
|
||||
nop | sub.xyzw vf19, vf17, vf18
|
||||
nop | sub.xyzw vf22, vf20, vf21
|
||||
nop | addz.w vf13, vf16, vf16
|
||||
nop | addw.z vf13, vf15, vf15
|
||||
div Q, vf13.z, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | sub.xyzw vf19, vf18, vf19
|
||||
nop | sub.xyzw vf22, vf21, vf22
|
||||
nop | sub.xyzw vf16, vf15, vf16
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L20 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L33:
|
||||
b L22 | nop
|
||||
iaddi vi10, vi10, -0x1 | nop
|
||||
L34:
|
||||
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
||||
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
||||
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
||||
ibeq vi07, vi08, L22 | nop
|
||||
nop | addy.w vf13, vf16, vf16
|
||||
nop | addw.y vf13, vf14, vf14
|
||||
div Q, vf13.y, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | sub.xyzw vf19, vf17, vf19
|
||||
nop | sub.xyzw vf22, vf20, vf22
|
||||
nop | sub.xyzw vf16, vf14, vf16
|
||||
iaddi vi10, vi10, 0x1 | nop
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L22 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L35:
|
||||
nop | sub.xyzw vf16, vf14, vf15
|
||||
nop | sub.xyzw vf19, vf17, vf18
|
||||
nop | sub.xyzw vf22, vf20, vf21
|
||||
nop | addy.w vf13, vf16, vf16
|
||||
nop | addw.y vf13, vf15, vf15
|
||||
div Q, vf13.y, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | sub.xyzw vf19, vf18, vf19
|
||||
nop | sub.xyzw vf22, vf21, vf22
|
||||
nop | sub.xyzw vf16, vf15, vf16
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L22 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L36:
|
||||
b L24 | nop
|
||||
iaddi vi10, vi10, -0x1 | nop
|
||||
L37:
|
||||
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
||||
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
||||
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
||||
ibeq vi07, vi08, L24 | nop
|
||||
nop | suby.w vf13, vf16, vf16
|
||||
nop | subw.y vf13, vf14, vf14
|
||||
div Q, vf13.y, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | add.xyzw vf19, vf17, vf19
|
||||
nop | add.xyzw vf22, vf20, vf22
|
||||
nop | add.xyzw vf16, vf14, vf16
|
||||
iaddi vi10, vi10, 0x1 | nop
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L24 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L38:
|
||||
nop | sub.xyzw vf16, vf14, vf15
|
||||
nop | sub.xyzw vf19, vf17, vf18
|
||||
nop | sub.xyzw vf22, vf20, vf21
|
||||
nop | suby.w vf13, vf16, vf16
|
||||
nop | subw.y vf13, vf15, vf15
|
||||
div Q, vf13.y, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | add.xyzw vf19, vf18, vf19
|
||||
nop | add.xyzw vf22, vf21, vf22
|
||||
nop | add.xyzw vf16, vf15, vf16
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L24 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L39:
|
||||
b L26 | nop
|
||||
iaddi vi10, vi10, -0x1 | nop
|
||||
L40:
|
||||
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
||||
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
||||
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
||||
ibeq vi07, vi08, L26 | nop
|
||||
nop | addx.w vf13, vf16, vf16
|
||||
nop | addw.x vf13, vf14, vf14
|
||||
div Q, vf13.x, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | sub.xyzw vf19, vf17, vf19
|
||||
nop | sub.xyzw vf22, vf20, vf22
|
||||
nop | sub.xyzw vf16, vf14, vf16
|
||||
iaddi vi10, vi10, 0x1 | nop
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L26 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L41:
|
||||
nop | sub.xyzw vf16, vf14, vf15
|
||||
nop | sub.xyzw vf19, vf17, vf18
|
||||
nop | sub.xyzw vf22, vf20, vf21
|
||||
nop | addx.w vf13, vf16, vf16
|
||||
nop | addw.x vf13, vf15, vf15
|
||||
div Q, vf13.x, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | sub.xyzw vf19, vf18, vf19
|
||||
nop | sub.xyzw vf22, vf21, vf22
|
||||
nop | sub.xyzw vf16, vf15, vf16
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L26 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L42:
|
||||
b L28 | nop
|
||||
iaddi vi10, vi10, -0x1 | nop
|
||||
L43:
|
||||
sqi.xyzw vf17, vi08 | sub.xyzw vf16, vf15, vf14
|
||||
sqi.xyzw vf20, vi08 | sub.xyzw vf19, vf18, vf17
|
||||
sqi.xyzw vf14, vi08 | sub.xyzw vf22, vf21, vf20
|
||||
ibeq vi07, vi08, L28 | nop
|
||||
nop | subx.w vf13, vf16, vf16
|
||||
nop | subw.x vf13, vf14, vf14
|
||||
div Q, vf13.x, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | add.xyzw vf19, vf17, vf19
|
||||
nop | add.xyzw vf22, vf20, vf22
|
||||
nop | add.xyzw vf16, vf14, vf16
|
||||
iaddi vi10, vi10, 0x1 | nop
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L28 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
L44:
|
||||
nop | sub.xyzw vf16, vf14, vf15
|
||||
nop | sub.xyzw vf19, vf17, vf18
|
||||
nop | sub.xyzw vf22, vf20, vf21
|
||||
nop | subx.w vf13, vf16, vf16
|
||||
nop | subw.x vf13, vf15, vf15
|
||||
div Q, vf13.x, vf13.w | nop
|
||||
waitq | nop
|
||||
nop | mul.xyzw vf19, vf19, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf16, vf16, Q
|
||||
nop | add.xyzw vf19, vf18, vf19
|
||||
nop | add.xyzw vf22, vf21, vf22
|
||||
nop | add.xyzw vf16, vf15, vf16
|
||||
sqi.xyzw vf19, vi08 | nop
|
||||
sqi.xyzw vf22, vi08 | nop
|
||||
b L28 | nop
|
||||
sqi.xyzw vf16, vi08 | nop
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,957 @@
|
||||
b L2 | nop
|
||||
nop | nop
|
||||
b L8 | nop
|
||||
xtop vi14 | nop
|
||||
b L1 | nop
|
||||
xtop vi14 | nop
|
||||
L1:
|
||||
lq.xyzw vf04, 664(vi00) | nop :e
|
||||
nop | nop
|
||||
L2:
|
||||
iaddiu vi14, vi00, 0x2a0 | nop
|
||||
iaddiu vi01, vi00, 0x337 | nop
|
||||
mfir.x vf03, vi14 | nop
|
||||
mfir.y vf03, vi01 | nop
|
||||
mfir.z vf03, vi14 | nop
|
||||
mfir.w vf03, vi01 | nop
|
||||
lq.xyzw vf04, 664(vi00) | nop
|
||||
iaddiu vi14, vi00, 0x3ce | nop
|
||||
sq.xyzw vf00, 0(vi14) | nop
|
||||
sq.xyzw vf00, 7(vi14) | nop
|
||||
sq.xyzw vf00, 14(vi14) | nop
|
||||
sq.xyzw vf00, 21(vi14) | nop
|
||||
sq.xyzw vf00, 28(vi14) | nop
|
||||
sq.xyzw vf00, 35(vi14) | nop
|
||||
iaddiu vi01, vi00, 0x373 | nop
|
||||
iswr.z vi01, vi14 | nop
|
||||
iaddiu vi01, vi00, 0x375 | nop
|
||||
isw.z vi01, 7(vi14) | nop
|
||||
iaddiu vi01, vi00, 0x377 | nop
|
||||
isw.z vi01, 14(vi14) | nop
|
||||
iaddiu vi01, vi00, 0x379 | nop
|
||||
isw.z vi01, 21(vi14) | nop
|
||||
iaddiu vi01, vi00, 0x37b | nop
|
||||
isw.z vi01, 28(vi14) | nop
|
||||
iaddiu vi01, vi00, 0x37d | nop :e
|
||||
isw.z vi01, 35(vi14) | nop
|
||||
L3:
|
||||
iaddi vi07, vi00, -0x1 | nop
|
||||
iblez vi12, L4 | nop
|
||||
iaddi vi09, vi09, 0x1 | nop
|
||||
ior vi10, vi06, vi00 | nop
|
||||
iadd vi01, vi12, vi12 | nop
|
||||
iadd vi01, vi01, vi12 | nop
|
||||
iadd vi05, vi06, vi01 | nop
|
||||
sqi.xyzw vf06, vi06 | nop
|
||||
isw.x vi12, -1(vi06) | nop
|
||||
jr vi15 | nop
|
||||
ilwr.x vi12, vi09 | nop
|
||||
L4:
|
||||
ilw.y vi01, -1(vi09) | nop
|
||||
ilw.z vi13, -1(vi09) | nop
|
||||
ibeq vi00, vi12, L7 | nop
|
||||
ilwr.x vi14, vi10 | nop
|
||||
ibltz vi01, L5 | nop
|
||||
iaddiu vi12, vi12, 0x80 | nop
|
||||
iadd vi13, vi13, vi08 | nop
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
lqi.xyzw vf31, vi13 | nop
|
||||
sqi.xyzw vf05, vi06 | nop
|
||||
sqi.xyzw vf29, vi06 | nop
|
||||
sqi.xyzw vf30, vi06 | nop
|
||||
sqi.xyzw vf31, vi06 | nop
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
iadd vi01, vi12, vi12 | nop
|
||||
iadd vi01, vi01, vi12 | nop
|
||||
sqi.xyzw vf29, vi06 | nop
|
||||
sqi.xyzw vf30, vi06 | nop
|
||||
ior vi10, vi06, vi00 | nop
|
||||
iadd vi05, vi06, vi01 | nop
|
||||
sqi.xyzw vf06, vi06 | nop
|
||||
isw.x vi12, -1(vi06) | nop
|
||||
jr vi15 | nop
|
||||
ilwr.x vi12, vi09 | nop
|
||||
L5:
|
||||
mtir vi01, vf24.w | nop
|
||||
mtir vi06, vf03.y | nop
|
||||
mr32.xyzw vf03, vf03 | nop
|
||||
iadd vi14, vi14, vi11 | nop
|
||||
ibgez vi13, L6 | nop
|
||||
iswr.x vi14, vi10 | nop
|
||||
xgkick vi01 | nop
|
||||
ior vi10, vi06, vi00 | nop
|
||||
mfir.w vf24, vi06 | nop
|
||||
iadd vi01, vi12, vi12 | nop
|
||||
iadd vi01, vi01, vi12 | nop
|
||||
iadd vi05, vi06, vi01 | nop
|
||||
sqi.xyzw vf06, vi06 | nop
|
||||
isw.x vi12, -1(vi06) | nop
|
||||
jr vi15 | nop
|
||||
ilwr.x vi12, vi09 | nop
|
||||
L6:
|
||||
iadd vi13, vi13, vi08 | nop
|
||||
xgkick vi01 | nop
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
lqi.xyzw vf31, vi13 | nop
|
||||
mfir.w vf24, vi06 | nop
|
||||
sqi.xyzw vf05, vi06 | nop
|
||||
sqi.xyzw vf29, vi06 | nop
|
||||
sqi.xyzw vf30, vi06 | nop
|
||||
sqi.xyzw vf31, vi06 | nop
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
iadd vi01, vi12, vi12 | nop
|
||||
iadd vi01, vi01, vi12 | nop
|
||||
sqi.xyzw vf29, vi06 | nop
|
||||
sqi.xyzw vf30, vi06 | nop
|
||||
nop | nop
|
||||
ior vi10, vi06, vi00 | nop
|
||||
iadd vi05, vi06, vi01 | nop
|
||||
sqi.xyzw vf06, vi06 | nop
|
||||
isw.x vi12, -1(vi06) | nop
|
||||
jr vi15 | nop
|
||||
ilwr.x vi12, vi09 | nop
|
||||
L7:
|
||||
mtir vi01, vf24.w | nop
|
||||
mr32.xyzw vf03, vf03 | nop
|
||||
iadd vi14, vi14, vi11 | nop
|
||||
iswr.x vi14, vi10 | nop
|
||||
lq.xyzw vf04, 664(vi00) | nop
|
||||
xgkick vi01 | nop
|
||||
nop | nop :e
|
||||
nop | nop
|
||||
L8:
|
||||
ilw.w vi08, 4(vi14) | nop
|
||||
lq.xyzw vf02, 665(vi00) | addw.z vf28, vf00, vf00
|
||||
lq.xyzw vf05, 660(vi00) | nop
|
||||
lq.xyzw vf06, 658(vi00) | nop
|
||||
iadd vi08, vi08, vi14 | nop
|
||||
lq.xyzw vf11, 662(vi00) | nop
|
||||
lq.w vf29, 1(vi08) | nop
|
||||
lq.xyzw vf10, 661(vi00) | nop
|
||||
ilw.z vi09, 4(vi14) | nop
|
||||
ilw.y vi03, 3(vi14) | nop
|
||||
nop | addy.w vf25, vf29, vf00
|
||||
iaddi vi07, vi00, -0x1 | addw.z vf28, vf28, vf29
|
||||
lq.xyzw vf04, 5(vi14) | mulw.xyzw vf16, vf00, vf00
|
||||
lq.xyzw vf07, 6(vi14) | mulw.xyzw vf17, vf00, vf00
|
||||
ibne vi00, vi14, L23 | mulw.xyzw vf18, vf00, vf00
|
||||
lq.xyzw vf08, 7(vi14) | mulw.xyzw vf19, vf00, vf00
|
||||
ilwr.x vi02, vi03 | nop
|
||||
lq.xyzw vf09, 8(vi14) | nop
|
||||
lq.xyzw vf01, 656(vi00) | nop
|
||||
iadd vi09, vi09, vi14 | nop
|
||||
lq.xyw vf28, 0(vi02) | nop
|
||||
mtir vi06, vf03.x | nop
|
||||
ilwr.x vi12, vi09 | nop
|
||||
ilwr.z vi13, vi09 | nop
|
||||
mtir vi04, vf28.w | subw.xyz vf24, vf28, vf25
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.y vi02, vi03 | nop
|
||||
lq.xyzw vf12, 0(vi04) | nop
|
||||
lq.xyzw vf20, 1(vi04) | nop
|
||||
iaddiu vi12, vi12, 0x80 | nop
|
||||
iadd vi13, vi13, vi08 | nop
|
||||
lq.xyw vf28, 0(vi02) | itof0.xyzw vf12, vf12
|
||||
mfir.w vf24, vi06 | nop
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
lqi.xyzw vf31, vi13 | nop
|
||||
sqi.xyzw vf05, vi06 | subw.xyz vf25, vf28, vf25
|
||||
sqi.xyzw vf29, vi06 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | nop
|
||||
sqi.xyzw vf30, vi06 | maddax.xyzw ACC, vf04, vf12
|
||||
sqi.xyzw vf31, vi06 | nop
|
||||
ilwr.z vi02, vi03 | nop
|
||||
lq.xyzw vf13, 0(vi04) | madday.xyzw ACC, vf07, vf12
|
||||
lq.xyzw vf21, 1(vi04) | maddz.xyzw vf12, vf08, vf12
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
lq.xyw vf28, 0(vi02) | itof0.xyzw vf13, vf13
|
||||
div Q, vf01.x, vf12.w | mul.xyzw vf16, vf12, vf11
|
||||
sqi.xyzw vf29, vi06 | nop
|
||||
sqi.xyzw vf30, vi06 | nop
|
||||
iadd vi01, vi12, vi12 | subw.xyz vf26, vf28, vf25
|
||||
iadd vi01, vi01, vi12 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | nop
|
||||
iadd vi05, vi06, vi01 | maddax.xyzw ACC, vf04, vf13
|
||||
ior vi10, vi06, vi00 | mul.xyz vf12, vf12, Q
|
||||
ilwr.w vi02, vi03 | mul.xyz vf24, vf24, Q
|
||||
lq.xyzw vf14, 0(vi04) | madday.xyzw ACC, vf07, vf13
|
||||
lq.xyzw vf22, 1(vi04) | maddz.xyzw vf13, vf08, vf13
|
||||
sqi.xyzw vf06, vi06 | add.xyzw vf12, vf12, vf10
|
||||
isw.x vi12, -1(vi06) | nop
|
||||
lq.xyw vf28, 0(vi02) | itof0.xyzw vf14, vf14
|
||||
div Q, vf01.x, vf13.w | mul.xyzw vf17, vf13, vf11
|
||||
iaddi vi09, vi09, 0x1 | miniz.w vf12, vf12, vf01
|
||||
ilwr.x vi12, vi09 | clipw.xyz vf16, vf16
|
||||
L9:
|
||||
iaddi vi03, vi03, 0x1 | subw.xyz vf27, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf12, vf12, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf14
|
||||
ibne vi00, vi01, L19 | mul.xyz vf13, vf13, Q
|
||||
ilwr.x vi02, vi03 | mul.xyz vf25, vf25, Q
|
||||
L10:
|
||||
lq.xyzw vf15, 0(vi04) | madday.xyzw ACC, vf07, vf14
|
||||
lq.xyzw vf23, 1(vi04) | maddz.xyzw vf14, vf08, vf14
|
||||
sqi.xyz vf24, vi06 | add.xyzw vf13, vf13, vf10
|
||||
sqi.xyzw vf20, vi06 | ftoi4.xyzw vf12, vf12
|
||||
lq.xyw vf28, 0(vi02) | itof0.xyzw vf15, vf15
|
||||
div Q, vf01.x, vf14.w | mul.xyzw vf18, vf14, vf11
|
||||
ibeq vi05, vi06, L14 | miniz.w vf13, vf13, vf01
|
||||
sqi.xyzw vf12, vi06 | clipw.xyz vf17, vf17
|
||||
nop | subw.xyz vf24, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf13, vf13, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf15
|
||||
ibne vi00, vi01, L20 | mul.xyz vf14, vf14, Q
|
||||
ilwr.y vi02, vi03 | mul.xyz vf26, vf26, Q
|
||||
L11:
|
||||
lq.xyzw vf12, 0(vi04) | madday.xyzw ACC, vf07, vf15
|
||||
lq.xyzw vf20, 1(vi04) | maddz.xyzw vf15, vf08, vf15
|
||||
sqi.xyzw vf25, vi06 | add.xyzw vf14, vf14, vf10
|
||||
sqi.xyzw vf21, vi06 | ftoi4.xyzw vf13, vf13
|
||||
lq.xyw vf28, 0(vi02) | itof0.xyzw vf12, vf12
|
||||
div Q, vf01.x, vf15.w | mul.xyzw vf19, vf15, vf11
|
||||
ibeq vi05, vi06, L15 | miniz.w vf14, vf14, vf01
|
||||
sqi.xyzw vf13, vi06 | clipw.xyz vf18, vf18
|
||||
nop | subw.xyz vf25, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf14, vf14, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf12
|
||||
ibne vi00, vi01, L21 | mul.xyz vf15, vf15, Q
|
||||
ilwr.z vi02, vi03 | mul.xyz vf27, vf27, Q
|
||||
L12:
|
||||
lq.xyzw vf13, 0(vi04) | madday.xyzw ACC, vf07, vf12
|
||||
lq.xyzw vf21, 1(vi04) | maddz.xyzw vf12, vf08, vf12
|
||||
sqi.xyzw vf26, vi06 | add.xyzw vf15, vf15, vf10
|
||||
sqi.xyzw vf22, vi06 | ftoi4.xyzw vf14, vf14
|
||||
lq.xyw vf28, 0(vi02) | itof0.xyzw vf13, vf13
|
||||
div Q, vf01.x, vf12.w | mul.xyzw vf16, vf12, vf11
|
||||
ibeq vi05, vi06, L16 | miniz.w vf15, vf15, vf01
|
||||
sqi.xyzw vf14, vi06 | clipw.xyz vf19, vf19
|
||||
nop | subw.xyz vf26, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf15, vf15, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf13
|
||||
ibne vi00, vi01, L22 | mul.xyz vf12, vf12, Q
|
||||
ilwr.w vi02, vi03 | mul.xyz vf24, vf24, Q
|
||||
L13:
|
||||
lq.xyzw vf14, 0(vi04) | madday.xyzw ACC, vf07, vf13
|
||||
lq.xyzw vf22, 1(vi04) | maddz.xyzw vf13, vf08, vf13
|
||||
sqi.xyzw vf27, vi06 | add.xyzw vf12, vf12, vf10
|
||||
sqi.xyzw vf23, vi06 | ftoi4.xyzw vf15, vf15
|
||||
lq.xyw vf28, 0(vi02) | itof0.xyzw vf14, vf14
|
||||
div Q, vf01.x, vf13.w | mul.xyzw vf17, vf13, vf11
|
||||
ibne vi05, vi06, L9 | miniz.w vf12, vf12, vf01
|
||||
sqi.xyzw vf15, vi06 | clipw.xyz vf16, vf16
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0xb7 | nop
|
||||
L14:
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0xc5 | nop
|
||||
L15:
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0xd3 | nop
|
||||
L16:
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0xe1 | nop
|
||||
L17:
|
||||
iaddiu vi14, vi07, 0x4000 | nop
|
||||
iaddiu vi14, vi14, 0x4000 | nop
|
||||
isw.y vi13, 1022(vi00) | nop
|
||||
isw.z vi05, 1021(vi00) | nop
|
||||
isw.x vi06, 1020(vi00) | nop
|
||||
isw.y vi07, 1020(vi00) | nop
|
||||
isw.z vi08, 1020(vi00) | nop
|
||||
isw.w vi09, 1020(vi00) | nop
|
||||
isw.x vi10, 1021(vi00) | nop
|
||||
isw.y vi12, 1021(vi00) | nop
|
||||
iswr.x vi14, vi10 | nop
|
||||
lq.xyzw vf06, 659(vi00) | nop
|
||||
xgkick vi01 | nop
|
||||
mtir vi11, vf03.y | nop
|
||||
iaddiu vi01, vi00, 0x4000 | nop
|
||||
iaddiu vi01, vi01, 0x4000 | nop
|
||||
sq.xyzw vf06, 0(vi11) | nop
|
||||
jr vi15 | nop
|
||||
iswr.x vi01, vi11 | nop
|
||||
L18:
|
||||
ilw.y vi14, 1022(vi00) | nop
|
||||
ilw.z vi05, 1021(vi00) | nop
|
||||
ilw.x vi06, 1020(vi00) | nop
|
||||
ilw.y vi07, 1020(vi00) | nop
|
||||
ilw.z vi08, 1020(vi00) | nop
|
||||
ilw.w vi09, 1020(vi00) | nop
|
||||
ilw.x vi10, 1021(vi00) | nop
|
||||
ilw.y vi12, 1021(vi00) | nop
|
||||
lq.xyzw vf06, 658(vi00) | nop
|
||||
mtir vi11, vf03.y | nop
|
||||
iaddi vi01, vi06, -0x4 | nop
|
||||
isub vi14, vi14, vi07 | nop
|
||||
iaddi vi14, vi14, 0x1 | nop
|
||||
xgkick vi11 | nop
|
||||
mfir.w vf24, vi01 | nop
|
||||
ior vi10, vi01, vi00 | nop
|
||||
sq.xyzw vf06, 0(vi01) | nop
|
||||
iswr.x vi14, vi01 | nop
|
||||
jr vi15 | nop
|
||||
iaddi vi07, vi00, 0x1 | nop
|
||||
L19:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf18, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf19, vf02
|
||||
ibltz vi01, L10 | mul.xyzw vf31, vf16, vf02
|
||||
nop | addw.w vf12, vf12, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf18, vf18
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf19, vf19
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf16, vf16
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L10 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.z vi14, -2(vi03) | nop
|
||||
sq.xyzw vf16, 28(vi11) | nop
|
||||
sq.xyzw vf20, 29(vi11) | nop
|
||||
sq.xyzw vf19, 31(vi11) | nop
|
||||
ilwr.w vi13, vi14 | nop
|
||||
sq.xyzw vf23, 32(vi11) | nop
|
||||
sq.xyzw vf18, 34(vi11) | nop
|
||||
ilw.x vi01, -1(vi03) | nop
|
||||
lq.xyzw vf29, 1(vi13) | nop
|
||||
bal vi15, L36 | nop
|
||||
ilw.w vi13, -2(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L10 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
L20:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf19, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf16, vf02
|
||||
ibltz vi01, L11 | mul.xyzw vf31, vf17, vf02
|
||||
nop | addw.w vf13, vf13, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf19, vf19
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf16, vf16
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf17, vf17
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L11 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.w vi14, -2(vi03) | nop
|
||||
sq.xyzw vf17, 28(vi11) | nop
|
||||
sq.xyzw vf21, 29(vi11) | nop
|
||||
sq.xyzw vf16, 31(vi11) | nop
|
||||
ilwr.w vi13, vi14 | nop
|
||||
sq.xyzw vf20, 32(vi11) | nop
|
||||
sq.xyzw vf19, 34(vi11) | nop
|
||||
ilw.y vi01, -1(vi03) | nop
|
||||
lq.xyzw vf29, 1(vi13) | nop
|
||||
bal vi15, L36 | nop
|
||||
ilw.x vi13, -1(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L11 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
L21:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf16, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf17, vf02
|
||||
ibltz vi01, L12 | mul.xyzw vf31, vf18, vf02
|
||||
nop | addw.w vf14, vf14, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf16, vf16
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf17, vf17
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf18, vf18
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L12 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.x vi14, -1(vi03) | nop
|
||||
sq.xyzw vf18, 28(vi11) | nop
|
||||
sq.xyzw vf22, 29(vi11) | nop
|
||||
sq.xyzw vf17, 31(vi11) | nop
|
||||
ilwr.w vi13, vi14 | nop
|
||||
sq.xyzw vf21, 32(vi11) | nop
|
||||
sq.xyzw vf16, 34(vi11) | nop
|
||||
ilw.z vi01, -1(vi03) | nop
|
||||
lq.xyzw vf29, 1(vi13) | nop
|
||||
bal vi15, L36 | nop
|
||||
ilw.y vi13, -1(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L12 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
L22:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf17, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf18, vf02
|
||||
ibltz vi01, L13 | mul.xyzw vf31, vf19, vf02
|
||||
nop | addw.w vf15, vf15, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf17, vf17
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf18, vf18
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf19, vf19
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L13 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.y vi14, -1(vi03) | nop
|
||||
sq.xyzw vf19, 28(vi11) | nop
|
||||
sq.xyzw vf23, 29(vi11) | nop
|
||||
sq.xyzw vf18, 31(vi11) | nop
|
||||
ilwr.w vi13, vi14 | nop
|
||||
sq.xyzw vf22, 32(vi11) | nop
|
||||
sq.xyzw vf17, 34(vi11) | nop
|
||||
ilw.w vi01, -1(vi03) | nop
|
||||
lq.xyzw vf29, 1(vi13) | nop
|
||||
bal vi15, L36 | nop
|
||||
ilw.z vi13, -1(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L13 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | addw.w vf15, vf15, vf01
|
||||
L23:
|
||||
ilw.x vi02, 328(vi03) | nop
|
||||
lq.xyzw vf09, 8(vi14) | nop
|
||||
lq.xyzw vf01, 656(vi00) | nop
|
||||
iadd vi09, vi09, vi14 | nop
|
||||
lq.xyw vf28, 328(vi02) | nop
|
||||
mtir vi06, vf03.x | nop
|
||||
ilwr.x vi12, vi09 | nop
|
||||
ilwr.z vi13, vi09 | nop
|
||||
mtir vi04, vf28.w | subw.xyz vf24, vf28, vf25
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilw.y vi02, 328(vi03) | nop
|
||||
lq.xyzw vf12, 328(vi04) | nop
|
||||
lq.xyzw vf20, 329(vi04) | nop
|
||||
iaddiu vi12, vi12, 0x80 | nop
|
||||
iadd vi13, vi13, vi08 | nop
|
||||
lq.xyw vf28, 328(vi02) | itof0.xyzw vf12, vf12
|
||||
mfir.w vf24, vi06 | nop
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
lqi.xyzw vf31, vi13 | nop
|
||||
sqi.xyzw vf05, vi06 | subw.xyz vf25, vf28, vf25
|
||||
sqi.xyzw vf29, vi06 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | nop
|
||||
sqi.xyzw vf30, vi06 | maddax.xyzw ACC, vf04, vf12
|
||||
sqi.xyzw vf31, vi06 | nop
|
||||
ilw.z vi02, 328(vi03) | nop
|
||||
lq.xyzw vf13, 328(vi04) | madday.xyzw ACC, vf07, vf12
|
||||
lq.xyzw vf21, 329(vi04) | maddz.xyzw vf12, vf08, vf12
|
||||
lqi.xyzw vf29, vi13 | nop
|
||||
lqi.xyzw vf30, vi13 | nop
|
||||
lq.xyw vf28, 328(vi02) | itof0.xyzw vf13, vf13
|
||||
div Q, vf01.x, vf12.w | mul.xyzw vf16, vf12, vf11
|
||||
sqi.xyzw vf29, vi06 | nop
|
||||
sqi.xyzw vf30, vi06 | nop
|
||||
iadd vi01, vi12, vi12 | subw.xyz vf26, vf28, vf25
|
||||
iadd vi01, vi01, vi12 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | nop
|
||||
iadd vi05, vi06, vi01 | maddax.xyzw ACC, vf04, vf13
|
||||
ior vi10, vi06, vi00 | mul.xyz vf12, vf12, Q
|
||||
ilw.w vi02, 328(vi03) | mul.xyz vf24, vf24, Q
|
||||
lq.xyzw vf14, 328(vi04) | madday.xyzw ACC, vf07, vf13
|
||||
lq.xyzw vf22, 329(vi04) | maddz.xyzw vf13, vf08, vf13
|
||||
sqi.xyzw vf06, vi06 | add.xyzw vf12, vf12, vf10
|
||||
isw.x vi12, -1(vi06) | nop
|
||||
lq.xyw vf28, 328(vi02) | itof0.xyzw vf14, vf14
|
||||
div Q, vf01.x, vf13.w | mul.xyzw vf17, vf13, vf11
|
||||
iaddi vi09, vi09, 0x1 | miniz.w vf12, vf12, vf01
|
||||
ilwr.x vi12, vi09 | clipw.xyz vf16, vf16
|
||||
L24:
|
||||
iaddi vi03, vi03, 0x1 | subw.xyz vf27, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf12, vf12, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf14
|
||||
ibne vi00, vi01, L32 | mul.xyz vf13, vf13, Q
|
||||
ilw.x vi02, 328(vi03) | mul.xyz vf25, vf25, Q
|
||||
L25:
|
||||
lq.xyzw vf15, 328(vi04) | madday.xyzw ACC, vf07, vf14
|
||||
lq.xyzw vf23, 329(vi04) | maddz.xyzw vf14, vf08, vf14
|
||||
sqi.xyz vf24, vi06 | add.xyzw vf13, vf13, vf10
|
||||
sqi.xyzw vf20, vi06 | ftoi4.xyzw vf12, vf12
|
||||
lq.xyw vf28, 328(vi02) | itof0.xyzw vf15, vf15
|
||||
div Q, vf01.x, vf14.w | mul.xyzw vf18, vf14, vf11
|
||||
ibeq vi05, vi06, L29 | miniz.w vf13, vf13, vf01
|
||||
sqi.xyzw vf12, vi06 | clipw.xyz vf17, vf17
|
||||
nop | subw.xyz vf24, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf13, vf13, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf15
|
||||
ibne vi00, vi01, L33 | mul.xyz vf14, vf14, Q
|
||||
ilw.y vi02, 328(vi03) | mul.xyz vf26, vf26, Q
|
||||
L26:
|
||||
lq.xyzw vf12, 328(vi04) | madday.xyzw ACC, vf07, vf15
|
||||
lq.xyzw vf20, 329(vi04) | maddz.xyzw vf15, vf08, vf15
|
||||
sqi.xyzw vf25, vi06 | add.xyzw vf14, vf14, vf10
|
||||
sqi.xyzw vf21, vi06 | ftoi4.xyzw vf13, vf13
|
||||
lq.xyw vf28, 328(vi02) | itof0.xyzw vf12, vf12
|
||||
div Q, vf01.x, vf15.w | mul.xyzw vf19, vf15, vf11
|
||||
ibeq vi05, vi06, L30 | miniz.w vf14, vf14, vf01
|
||||
sqi.xyzw vf13, vi06 | clipw.xyz vf18, vf18
|
||||
nop | subw.xyz vf25, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf14, vf14, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf12
|
||||
ibne vi00, vi01, L34 | mul.xyz vf15, vf15, Q
|
||||
ilw.z vi02, 328(vi03) | mul.xyz vf27, vf27, Q
|
||||
L27:
|
||||
lq.xyzw vf13, 328(vi04) | madday.xyzw ACC, vf07, vf12
|
||||
lq.xyzw vf21, 329(vi04) | maddz.xyzw vf12, vf08, vf12
|
||||
sqi.xyzw vf26, vi06 | add.xyzw vf15, vf15, vf10
|
||||
sqi.xyzw vf22, vi06 | ftoi4.xyzw vf14, vf14
|
||||
lq.xyw vf28, 328(vi02) | itof0.xyzw vf13, vf13
|
||||
div Q, vf01.x, vf12.w | mul.xyzw vf16, vf12, vf11
|
||||
ibeq vi05, vi06, L31 | miniz.w vf15, vf15, vf01
|
||||
sqi.xyzw vf14, vi06 | clipw.xyz vf19, vf19
|
||||
nop | subw.xyz vf26, vf28, vf25
|
||||
iaddi vi07, vi07, 0x1 | mulaw.xyzw ACC, vf09, vf00
|
||||
mtir vi04, vf28.w | maxy.w vf15, vf15, vf01
|
||||
fcand vi01, 0x3ffff | maddax.xyzw ACC, vf04, vf13
|
||||
ibne vi00, vi01, L35 | mul.xyz vf12, vf12, Q
|
||||
ilw.w vi02, 328(vi03) | mul.xyz vf24, vf24, Q
|
||||
L28:
|
||||
lq.xyzw vf14, 328(vi04) | madday.xyzw ACC, vf07, vf13
|
||||
lq.xyzw vf22, 329(vi04) | maddz.xyzw vf13, vf08, vf13
|
||||
sqi.xyzw vf27, vi06 | add.xyzw vf12, vf12, vf10
|
||||
sqi.xyzw vf23, vi06 | ftoi4.xyzw vf15, vf15
|
||||
lq.xyw vf28, 328(vi02) | itof0.xyzw vf14, vf14
|
||||
div Q, vf01.x, vf13.w | mul.xyzw vf17, vf13, vf11
|
||||
ibne vi05, vi06, L24 | miniz.w vf12, vf12, vf01
|
||||
sqi.xyzw vf15, vi06 | clipw.xyz vf16, vf16
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0x1e7 | nop
|
||||
L29:
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0x1f5 | nop
|
||||
L30:
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0x203 | nop
|
||||
L31:
|
||||
b L3 | nop
|
||||
iaddiu vi15, vi00, 0x211 | nop
|
||||
L32:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf18, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf19, vf02
|
||||
ibltz vi01, L25 | mul.xyzw vf31, vf16, vf02
|
||||
nop | addw.w vf12, vf12, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf18, vf18
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf19, vf19
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf16, vf16
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L25 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.z vi14, 326(vi03) | nop
|
||||
sq.xyzw vf16, 28(vi11) | nop
|
||||
sq.xyzw vf20, 29(vi11) | nop
|
||||
sq.xyzw vf19, 31(vi11) | nop
|
||||
ilw.w vi13, 328(vi14) | nop
|
||||
sq.xyzw vf23, 32(vi11) | nop
|
||||
sq.xyzw vf18, 34(vi11) | nop
|
||||
ilw.x vi01, 327(vi03) | nop
|
||||
lq.xyzw vf29, 329(vi13) | nop
|
||||
bal vi15, L37 | nop
|
||||
ilw.w vi13, 326(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L25 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
L33:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf19, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf16, vf02
|
||||
ibltz vi01, L26 | mul.xyzw vf31, vf17, vf02
|
||||
nop | addw.w vf13, vf13, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf19, vf19
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf16, vf16
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf17, vf17
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L26 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.w vi14, 326(vi03) | nop
|
||||
sq.xyzw vf17, 28(vi11) | nop
|
||||
sq.xyzw vf21, 29(vi11) | nop
|
||||
sq.xyzw vf16, 31(vi11) | nop
|
||||
ilw.w vi13, 328(vi14) | nop
|
||||
sq.xyzw vf20, 32(vi11) | nop
|
||||
sq.xyzw vf19, 34(vi11) | nop
|
||||
ilw.y vi01, 327(vi03) | nop
|
||||
lq.xyzw vf29, 329(vi13) | nop
|
||||
bal vi15, L37 | nop
|
||||
ilw.x vi13, 327(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L26 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
L34:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf16, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf17, vf02
|
||||
ibltz vi01, L27 | mul.xyzw vf31, vf18, vf02
|
||||
nop | addw.w vf14, vf14, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf16, vf16
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf17, vf17
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf18, vf18
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L27 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.x vi14, 327(vi03) | nop
|
||||
sq.xyzw vf18, 28(vi11) | nop
|
||||
sq.xyzw vf22, 29(vi11) | nop
|
||||
sq.xyzw vf17, 31(vi11) | nop
|
||||
ilw.w vi13, 328(vi14) | nop
|
||||
sq.xyzw vf21, 32(vi11) | nop
|
||||
sq.xyzw vf16, 34(vi11) | nop
|
||||
ilw.z vi01, 327(vi03) | nop
|
||||
lq.xyzw vf29, 329(vi13) | nop
|
||||
bal vi15, L37 | nop
|
||||
ilw.y vi13, 327(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L27 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
L35:
|
||||
iaddi vi01, vi07, -0x2 | mul.xyzw vf29, vf17, vf02
|
||||
isw.w vi15, 1021(vi00) | mul.xyzw vf30, vf18, vf02
|
||||
ibltz vi01, L28 | mul.xyzw vf31, vf19, vf02
|
||||
nop | addw.w vf15, vf15, vf01
|
||||
nop | clipw.xyz vf29, vf29
|
||||
nop | clipw.xyz vf30, vf30
|
||||
nop | clipw.xyz vf31, vf31
|
||||
iaddiu vi11, vi00, 0x3f | nop
|
||||
fcget vi01 | nop
|
||||
fcget vi13 | nop
|
||||
fcget vi14 | nop
|
||||
iand vi01, vi01, vi13 | clipw.xyz vf17, vf17
|
||||
iand vi01, vi01, vi14 | clipw.xyz vf18, vf18
|
||||
iand vi01, vi01, vi11 | clipw.xyz vf19, vf19
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
ibne vi00, vi01, L28 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
ilwr.x vi13, vi10 | nop
|
||||
bal vi15, L17 | nop
|
||||
mtir vi01, vf24.w | nop
|
||||
ilw.y vi14, 327(vi03) | nop
|
||||
sq.xyzw vf19, 28(vi11) | nop
|
||||
sq.xyzw vf23, 29(vi11) | nop
|
||||
sq.xyzw vf18, 31(vi11) | nop
|
||||
ilw.w vi13, 328(vi14) | nop
|
||||
sq.xyzw vf22, 32(vi11) | nop
|
||||
sq.xyzw vf17, 34(vi11) | nop
|
||||
ilw.w vi01, 327(vi03) | nop
|
||||
lq.xyzw vf29, 329(vi13) | nop
|
||||
bal vi15, L37 | nop
|
||||
ilw.z vi13, 327(vi03) | nop
|
||||
bal vi15, L18 | nop
|
||||
nop | nop
|
||||
ilw.w vi15, 1021(vi00) | nop
|
||||
mtir vi04, vf28.w | nop
|
||||
iaddiu vi11, vi00, 0x4000 | nop
|
||||
b L28 | nop
|
||||
iaddiu vi11, vi11, 0x4000 | nop
|
||||
L36:
|
||||
sq.xyzw vf16, 45(vi11) | nop
|
||||
sq.xyzw vf17, 46(vi11) | nop
|
||||
sq.xyzw vf18, 47(vi11) | nop
|
||||
lq.xy vf16, 0(vi01) | nop
|
||||
lq.xy vf17, 0(vi13) | addw.z vf16, vf00, vf00
|
||||
b L38 | nop
|
||||
lq.xy vf18, 0(vi14) | addw.z vf17, vf00, vf00
|
||||
L37:
|
||||
sq.xyzw vf16, 45(vi11) | nop
|
||||
sq.xyzw vf17, 46(vi11) | nop
|
||||
sq.xyzw vf18, 47(vi11) | nop
|
||||
lq.xy vf16, 328(vi01) | nop
|
||||
lq.xy vf17, 328(vi13) | addw.z vf16, vf00, vf00
|
||||
b L38 | nop
|
||||
lq.xy vf18, 328(vi14) | addw.z vf17, vf00, vf00
|
||||
L38:
|
||||
sq.xyzw vf20, 42(vi11) | addw.z vf18, vf00, vf00
|
||||
sq.xyzw vf21, 43(vi11) | nop
|
||||
sq.xyzw vf22, 44(vi11) | nop
|
||||
lq.xyzw vf20, 29(vi11) | subw.xy vf16, vf16, vf25
|
||||
lq.xyzw vf21, 32(vi11) | subw.xy vf17, vf17, vf25
|
||||
sq.xyzw vf12, 39(vi11) | subw.xy vf18, vf18, vf25
|
||||
sq.xyzw vf13, 40(vi11) | nop
|
||||
sq.xyzw vf16, 30(vi11) | itof0.xyzw vf20, vf20
|
||||
sq.xyzw vf17, 33(vi11) | itof0.xyzw vf21, vf21
|
||||
sq.xyzw vf18, 36(vi11) | itof0.xyzw vf22, vf29
|
||||
sq.xyzw vf14, 41(vi11) | nop
|
||||
sq.xyzw vf20, 29(vi11) | nop
|
||||
sq.xyzw vf21, 32(vi11) | nop
|
||||
sq.xyzw vf22, 35(vi11) | nop
|
||||
iaddi vi14, vi11, 0x1 | nop
|
||||
lq.xyzw vf31, 663(vi00) | nop
|
||||
isw.x vi15, 1022(vi00) | nop
|
||||
iaddi vi04, vi00, 0x0 | nop
|
||||
bal vi15, L39 | nop
|
||||
iaddiu vi06, vi11, 0x1c | nop
|
||||
bal vi15, L39 | nop
|
||||
iaddiu vi06, vi11, 0x1f | nop
|
||||
bal vi15, L39 | nop
|
||||
iaddiu vi06, vi11, 0x22 | nop
|
||||
b L48 | nop
|
||||
nop | nop
|
||||
L39:
|
||||
iaddiu vi08, vi00, 0x3ce | nop
|
||||
L40:
|
||||
iaddi vi09, vi00, 0x0 | nop
|
||||
L41:
|
||||
isubiu vi01, vi08, 0x3f8 | nop
|
||||
ilwr.y vi07, vi08 | nop
|
||||
ibeq vi00, vi01, L45 | nop
|
||||
ilwr.z vi05, vi08 | nop
|
||||
lq.xyzw vf13, 0(vi06) | nop
|
||||
lq.xyzw vf12, 0(vi07) | nop
|
||||
ibne vi00, vi07, L42 | nop
|
||||
iswr.y vi06, vi08 | nop
|
||||
jalr vi10, vi05 | nop
|
||||
iswr.x vi06, vi08 | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
nop | nop
|
||||
fsand vi13, 0x2 | nop
|
||||
ibne vi00, vi13, L46 | nop
|
||||
nop | nop
|
||||
b L41 | nop
|
||||
iaddi vi08, vi08, 0x7 | nop
|
||||
L42:
|
||||
jalr vi10, vi05 | nop
|
||||
lq.xyzw vf20, 1(vi07) | nop
|
||||
lq.xyzw vf21, 1(vi06) | nop
|
||||
lq.xyzw vf16, 2(vi07) | nop
|
||||
fsand vi01, 0x2 | nop
|
||||
fsand vi13, 0x2 | subw.w vf30, vf29, vf30
|
||||
ibne vi00, vi01, L44 | nop
|
||||
lq.xyzw vf17, 2(vi06) | nop
|
||||
ibne vi00, vi13, L43 | nop
|
||||
div Q, vf29.w, vf30.w | nop
|
||||
b L41 | nop
|
||||
iaddi vi08, vi08, 0x7 | nop
|
||||
L43:
|
||||
bal vi10, L53 | nop
|
||||
iaddi vi06, vi08, 0x1 | nop
|
||||
sq.xyzw vf14, 1(vi08) | nop
|
||||
sq.xyzw vf22, 2(vi08) | nop
|
||||
sq.xyzw vf18, 3(vi08) | nop
|
||||
b L41 | nop
|
||||
iaddi vi08, vi08, 0x7 | nop
|
||||
L44:
|
||||
ibne vi00, vi13, L46 | nop
|
||||
div Q, vf29.w, vf30.w | nop
|
||||
bal vi10, L53 | nop
|
||||
nop | nop
|
||||
sq.xyzw vf14, 4(vi08) | nop
|
||||
sq.xyzw vf22, 5(vi08) | nop
|
||||
sq.xyzw vf18, 6(vi08) | nop
|
||||
iaddi vi08, vi08, 0x7 | nop
|
||||
isw.x vi08, 1016(vi09) | nop
|
||||
isw.y vi06, 1016(vi09) | nop
|
||||
iaddi vi09, vi09, 0x1 | nop
|
||||
b L41 | nop
|
||||
iaddi vi06, vi08, -0x3 | nop
|
||||
L45:
|
||||
lq.xyzw vf12, 0(vi06) | nop
|
||||
lq.xyzw vf20, 1(vi06) | nop
|
||||
lq.xyzw vf16, 2(vi06) | nop
|
||||
iaddi vi04, vi04, 0x1 | nop
|
||||
nop | nop
|
||||
div Q, vf00.w, vf12.w | mul.xyzw vf12, vf12, vf31
|
||||
nop | ftoi0.xyzw vf20, vf20
|
||||
nop | nop
|
||||
iaddi vi14, vi14, 0x3 | nop
|
||||
waitq | mul.xyz vf16, vf16, Q
|
||||
sq.xyzw vf20, -2(vi14) | mul.xyz vf12, vf12, Q
|
||||
nop | add.xyzw vf12, vf12, vf10
|
||||
nop | maxy.w vf12, vf12, vf01
|
||||
nop | miniz.w vf12, vf12, vf01
|
||||
sq.xyzw vf16, -3(vi14) | ftoi4.xyzw vf12, vf12
|
||||
sq.xyzw vf12, -1(vi14) | nop
|
||||
L46:
|
||||
iblez vi09, L47 | nop
|
||||
nop | nop
|
||||
ilw.x vi08, 1015(vi09) | nop
|
||||
ilw.y vi06, 1015(vi09) | nop
|
||||
b L41 | nop
|
||||
iaddi vi09, vi09, -0x1 | nop
|
||||
L47:
|
||||
jr vi15 | nop
|
||||
nop | nop
|
||||
L48:
|
||||
iaddiu vi08, vi00, 0x3ce | nop
|
||||
L49:
|
||||
ilwr.x vi07, vi08 | nop
|
||||
ilwr.y vi06, vi08 | nop
|
||||
ilwr.z vi05, vi08 | nop
|
||||
nop | nop
|
||||
ibeq vi00, vi07, L51 | nop
|
||||
lq.xyzw vf12, 0(vi06) | nop
|
||||
ibeq vi06, vi07, L51 | nop
|
||||
lq.xyzw vf13, 0(vi07) | nop
|
||||
jalr vi10, vi05 | nop
|
||||
lq.xyzw vf20, 1(vi06) | nop
|
||||
lq.xyzw vf21, 1(vi07) | nop
|
||||
lq.xyzw vf16, 2(vi06) | nop
|
||||
fsand vi01, 0x2 | nop
|
||||
fsand vi13, 0x2 | subw.w vf30, vf29, vf30
|
||||
ibeq vi13, vi01, L51 | nop
|
||||
lq.xyzw vf17, 2(vi07) | nop
|
||||
ibeq vi00, vi01, L50 | nop
|
||||
div Q, vf29.w, vf30.w | nop
|
||||
bal vi10, L53 | nop
|
||||
nop | nop
|
||||
sq.xyzw vf14, 4(vi08) | nop
|
||||
sq.xyzw vf22, 5(vi08) | nop
|
||||
sq.xyzw vf18, 6(vi08) | nop
|
||||
iaddi vi06, vi08, 0x4 | nop
|
||||
ior vi12, vi08, vi00 | nop
|
||||
bal vi15, L40 | nop
|
||||
iaddi vi08, vi08, 0x7 | nop
|
||||
b L51 | nop
|
||||
ior vi08, vi12, vi00 | nop
|
||||
L50:
|
||||
bal vi10, L53 | nop
|
||||
nop | nop
|
||||
sq.xyzw vf14, 1(vi08) | nop
|
||||
sq.xyzw vf22, 2(vi08) | nop
|
||||
sq.xyzw vf18, 3(vi08) | nop
|
||||
iaddi vi06, vi08, 0x1 | nop
|
||||
ior vi12, vi08, vi00 | nop
|
||||
bal vi15, L40 | nop
|
||||
iaddi vi08, vi08, 0x7 | nop
|
||||
ior vi08, vi12, vi00 | nop
|
||||
L51:
|
||||
isubiu vi01, vi08, 0x3f1 | nop
|
||||
iswr.x vi00, vi08 | nop
|
||||
iswr.y vi00, vi08 | nop
|
||||
ibltz vi01, L49 | nop
|
||||
iaddi vi08, vi08, 0x7 | nop
|
||||
ibeq vi00, vi04, L52 | nop
|
||||
nop | nop
|
||||
iaddiu vi04, vi04, 0x4000 | nop
|
||||
iaddiu vi04, vi04, 0x4000 | nop
|
||||
iswr.x vi04, vi11 | nop
|
||||
L52:
|
||||
ilw.x vi15, 1022(vi00) | nop
|
||||
lq.xyzw vf29, 37(vi11) | nop
|
||||
lq.xyzw vf30, 38(vi11) | nop
|
||||
lq.xyzw vf12, 39(vi11) | nop
|
||||
lq.xyzw vf13, 40(vi11) | nop
|
||||
lq.xyzw vf14, 41(vi11) | nop
|
||||
lq.xyzw vf20, 42(vi11) | nop
|
||||
lq.xyzw vf21, 43(vi11) | nop
|
||||
lq.xyzw vf22, 44(vi11) | nop
|
||||
lq.xyzw vf16, 45(vi11) | nop
|
||||
lq.xyzw vf17, 46(vi11) | nop
|
||||
lq.xyzw vf18, 47(vi11) | nop
|
||||
jr vi15 | nop
|
||||
lq.xyzw vf31, 48(vi11) | nop
|
||||
jr vi10 | addx.w vf29, vf12, vf12
|
||||
nop | addx.w vf30, vf13, vf13
|
||||
jr vi10 | subx.w vf29, vf12, vf12
|
||||
nop | subx.w vf30, vf13, vf13
|
||||
jr vi10 | addy.w vf29, vf12, vf12
|
||||
nop | addy.w vf30, vf13, vf13
|
||||
jr vi10 | suby.w vf29, vf12, vf12
|
||||
nop | suby.w vf30, vf13, vf13
|
||||
jr vi10 | addz.w vf29, vf12, vf12
|
||||
nop | addz.w vf30, vf13, vf13
|
||||
jr vi10 | subz.w vf29, vf12, vf12
|
||||
nop | subz.w vf30, vf13, vf13
|
||||
L53:
|
||||
nop | sub.xyzw vf14, vf13, vf12
|
||||
nop | sub.xyzw vf22, vf21, vf20
|
||||
nop | sub.xyzw vf18, vf17, vf16
|
||||
waitq | mul.xyzw vf14, vf14, Q
|
||||
nop | mul.xyzw vf22, vf22, Q
|
||||
nop | mul.xyzw vf18, vf18, Q
|
||||
nop | add.xyzw vf14, vf12, vf14
|
||||
jr vi10 | add.xyzw vf22, vf20, vf22
|
||||
nop | add.xyzw vf18, vf16, vf18
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user