From 6723a1396e36d7b346f6cda6f9c36d77b7a4c47f Mon Sep 17 00:00:00 2001 From: angie Date: Wed, 10 Apr 2024 15:41:54 -0400 Subject: [PATCH] Add tests --- .../instruction_checks/r4000allegrex_disasm.c | 85 +- .../r4000allegrex_vfpu_disasm.c | 1239 +++++++++++++++++ tests/run_instruction_checks.sh | 1 + 3 files changed, 1323 insertions(+), 2 deletions(-) create mode 100644 tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c diff --git a/tests/c/instruction_checks/r4000allegrex_disasm.c b/tests/c/instruction_checks/r4000allegrex_disasm.c index 7284af40..50a093a8 100644 --- a/tests/c/instruction_checks/r4000allegrex_disasm.c +++ b/tests/c/instruction_checks/r4000allegrex_disasm.c @@ -22,6 +22,84 @@ typedef struct TestEntry { const TestEntry entries[] = { { 0x00801017, NULL, "clo $v0, $a0" }, + { 0x00801016, NULL, "clz $v0, $a0" }, + { 0x00C7001C, NULL, "madd $a2, $a3" }, + { 0x00C7001D, NULL, "maddu $a2, $a3" }, + { 0x00C7002E, NULL, "msub $a2, $a3" }, + { 0x00C7002F, NULL, "msubu $a2, $a3" }, + { 0x0085102C, NULL, "max $v0, $a0, $a1" }, + { 0x0085102D, NULL, "min $v0, $a0, $a1" }, + { 0x0085100B, NULL, "movn $v0, $a0, $a1" }, + { 0x0085100A, NULL, "movz $v0, $a0, $a1" }, + { 0x7C822080, NULL, "ext $v0, $a0, 2, 5" }, + { 0x7C8221C0, NULL, "ext $v0, $a0, 7, 5" }, + { 0x7C823084, NULL, "ins $v0, $a0, 2, 5" }, + { 0x7C8259C4, NULL, "ins $v0, $a0, 7, 5" }, + { 0x7C041420, NULL, "seb $v0, $a0" }, + { 0x7C041620, NULL, "seh $v0, $a0" }, + { 0x7C041520, NULL, "bitrev $v0, $a0" }, + { 0x00241182, NULL, "rotr $v0, $a0, 6" }, + { 0x002414C2, NULL, "rotr $v0, $a0, 19" }, + { 0x00A41046, NULL, "rotrv $v0, $a0, $a1" }, + { 0x7C0410A0, NULL, "wsbh $v0, $a0" }, + { 0x7C0410E0, NULL, "wsbw $v0, $a0" }, + + { 0xBC840000, NULL, "cache IXIN, 0x0($a0)" }, + { 0xBC860000, NULL, "cache IXUN, 0x0($a0)" }, + { 0xBC880000, NULL, "cache IHIN, 0x0($a0)" }, + { 0xBC8A0000, NULL, "cache IF, 0x0($a0)" }, + { 0xBC8B0000, NULL, "cache IFL, 0x0($a0)" }, + { 0xBC940000, NULL, "cache DXWBIN, 0x0($a0)" }, + { 0xBC960000, NULL, "cache DXUN, 0x0($a0)" }, + { 0xBC980000, NULL, "cache DCDEX, 0x0($a0)" }, + { 0xBC990000, NULL, "cache DHIN, 0x0($a0)" }, + { 0xBC9A0000, NULL, "cache DHWB, 0x0($a0)" }, + { 0xBC9B0000, NULL, "cache DHWBIN, 0x0($a0)" }, + { 0xBC9C0000, NULL, "cache DCDEXL, 0x0($a0)" }, + { 0xBC9E0000, NULL, "cache DF, 0x0($a0)" }, + { 0xBC9F0000, NULL, "cache DFL, 0x0($a0)" }, + + { 0x0000000F, NULL, "sync" }, + { 0xC0820000, NULL, "ll $v0, 0x0($a0)" }, + { 0xE0850000, NULL, "sc $a1, 0x0($a0)" }, + + { 0xBC800000, NULL, "cache 0x00, 0x0($a0)" }, + { 0xBC810000, NULL, "cache 0x01, 0x0($a0)" }, + { 0xBC820000, NULL, "cache 0x02, 0x0($a0)" }, + { 0xBC830000, NULL, "cache 0x03, 0x0($a0)" }, + { 0xBC840000, NULL, "cache IXIN, 0x0($a0)" }, + { 0xBC850000, NULL, "cache 0x05, 0x0($a0)" }, + { 0xBC860000, NULL, "cache IXUN, 0x0($a0)" }, + { 0xBC870000, NULL, "cache 0x07, 0x0($a0)" }, + { 0xBC880000, NULL, "cache IHIN, 0x0($a0)" }, + { 0xBC890000, NULL, "cache 0x09, 0x0($a0)" }, + { 0xBC8A0000, NULL, "cache IF, 0x0($a0)" }, + { 0xBC8B0000, NULL, "cache IFL, 0x0($a0)" }, + { 0xBC8C0000, NULL, "cache 0x0C, 0x0($a0)" }, + { 0xBC8D0000, NULL, "cache 0x0D, 0x0($a0)" }, + { 0xBC8E0000, NULL, "cache 0x0E, 0x0($a0)" }, + { 0xBC8F0000, NULL, "cache 0x0F, 0x0($a0)" }, + { 0xBC900000, NULL, "cache 0x10, 0x0($a0)" }, + { 0xBC910000, NULL, "cache 0x11, 0x0($a0)" }, + { 0xBC920000, NULL, "cache 0x12, 0x0($a0)" }, + { 0xBC930000, NULL, "cache 0x13, 0x0($a0)" }, + { 0xBC940000, NULL, "cache DXWBIN, 0x0($a0)" }, + { 0xBC950000, NULL, "cache 0x15, 0x0($a0)" }, + { 0xBC960000, NULL, "cache DXUN, 0x0($a0)" }, + { 0xBC970000, NULL, "cache 0x17, 0x0($a0)" }, + { 0xBC980000, NULL, "cache DCDEX, 0x0($a0)" }, + { 0xBC990000, NULL, "cache DHIN, 0x0($a0)" }, + { 0xBC9A0000, NULL, "cache DHWB, 0x0($a0)" }, + { 0xBC9B0000, NULL, "cache DHWBIN, 0x0($a0)" }, + { 0xBC9C0000, NULL, "cache DCDEXL, 0x0($a0)" }, + { 0xBC9D0000, NULL, "cache 0x1D, 0x0($a0)" }, + { 0xBC9E0000, NULL, "cache DF, 0x0($a0)" }, + { 0xBC9F0000, NULL, "cache DFL, 0x0($a0)" }, + + { 0x70000000, NULL, "sleep" }, + { 0x000002A8, NULL, "mfie $v0" }, + { 0x000002B4, NULL, "mfie $zero" }, + { 0x000002C0, NULL, "mtie $a0" }, }; int main() { @@ -45,11 +123,12 @@ int main() { RabbitizerInstruction_disassemble(&instr, buffer, entry->immOverride, immOverrideLength, 0); if (entry->expectedStr == NULL) { - printf("Word '0x%08X' doesn't have a expected str, got '%s'\n", entry->word, buffer); + fprintf(stderr, "Word '0x%08X' doesn't have a expected str, got '%s'\n", entry->word, buffer); + fprintf(stderr, " InstrIdType: '%s'\n", RabInstrIdType_getName(instr.instrIdType)); errorCount++; } else if (strcmp(buffer, entry->expectedStr) != 0) { fprintf(stderr, "Error on word '0x%08X'. Expected '%s', got '%s'\n", entry->word, entry->expectedStr, buffer); - fprintf(stderr, " \n", RabInstrIdType_getName(instr.instrIdType)); + fprintf(stderr, " InstrIdType: '%s'\n", RabInstrIdType_getName(instr.instrIdType)); errorCount++; } @@ -57,5 +136,7 @@ int main() { RabbitizerInstructionR4000Allegrex_destroy(&instr); } + fprintf(stderr, "%i errors out of %zu entries\n", errorCount, ARRAY_COUNT(entries)); + return errorCount; } diff --git a/tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c b/tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c new file mode 100644 index 00000000..73d3ef76 --- /dev/null +++ b/tests/c/instruction_checks/r4000allegrex_vfpu_disasm.c @@ -0,0 +1,1239 @@ +/* SPDX-FileCopyrightText: © 2024 Decompollaborate */ +/* SPDX-License-Identifier: MIT */ + +#include "rabbitizer.h" + +#include +#include +#include + +size_t strlen_null(const char *string) { + if (string == NULL) { + return 0; + } + return strlen(string); +} + +typedef struct TestEntry { + uint32_t word; + const char *immOverride; + const char *expectedStr; +} TestEntry; + +const TestEntry entries[] = { + { 0xD0060000, NULL, "vzero.s S000" }, + { 0xD0060001, NULL, "vzero.s S010" }, + { 0xD0060002, NULL, "vzero.s S020" }, + { 0xD0060003, NULL, "vzero.s S030" }, + { 0xD0060004, NULL, "vzero.s S100" }, + { 0xD0060005, NULL, "vzero.s S110" }, + { 0xD0060006, NULL, "vzero.s S120" }, + { 0xD0060007, NULL, "vzero.s S130" }, + { 0xD0060008, NULL, "vzero.s S200" }, + { 0xD0060009, NULL, "vzero.s S210" }, + { 0xD006000A, NULL, "vzero.s S220" }, + { 0xD006000B, NULL, "vzero.s S230" }, + { 0xD006000C, NULL, "vzero.s S300" }, + { 0xD006000D, NULL, "vzero.s S310" }, + { 0xD006000E, NULL, "vzero.s S320" }, + { 0xD006000F, NULL, "vzero.s S330" }, + { 0xD0060010, NULL, "vzero.s S400" }, + { 0xD0060011, NULL, "vzero.s S410" }, + { 0xD0060012, NULL, "vzero.s S420" }, + { 0xD0060013, NULL, "vzero.s S430" }, + { 0xD0060014, NULL, "vzero.s S500" }, + { 0xD0060015, NULL, "vzero.s S510" }, + { 0xD0060016, NULL, "vzero.s S520" }, + { 0xD0060017, NULL, "vzero.s S530" }, + { 0xD0060018, NULL, "vzero.s S600" }, + { 0xD0060019, NULL, "vzero.s S610" }, + { 0xD006001A, NULL, "vzero.s S620" }, + { 0xD006001B, NULL, "vzero.s S630" }, + { 0xD006001C, NULL, "vzero.s S700" }, + { 0xD006001D, NULL, "vzero.s S710" }, + { 0xD006001E, NULL, "vzero.s S720" }, + { 0xD006001F, NULL, "vzero.s S730" }, + { 0xD0060020, NULL, "vzero.s S001" }, + { 0xD0060021, NULL, "vzero.s S011" }, + { 0xD0060022, NULL, "vzero.s S021" }, + { 0xD0060023, NULL, "vzero.s S031" }, + { 0xD0060024, NULL, "vzero.s S101" }, + { 0xD0060025, NULL, "vzero.s S111" }, + { 0xD0060026, NULL, "vzero.s S121" }, + { 0xD0060027, NULL, "vzero.s S131" }, + { 0xD0060028, NULL, "vzero.s S201" }, + { 0xD0060029, NULL, "vzero.s S211" }, + { 0xD006002A, NULL, "vzero.s S221" }, + { 0xD006002B, NULL, "vzero.s S231" }, + { 0xD006002C, NULL, "vzero.s S301" }, + { 0xD006002D, NULL, "vzero.s S311" }, + { 0xD006002E, NULL, "vzero.s S321" }, + { 0xD006002F, NULL, "vzero.s S331" }, + { 0xD0060030, NULL, "vzero.s S401" }, + { 0xD0060031, NULL, "vzero.s S411" }, + { 0xD0060032, NULL, "vzero.s S421" }, + { 0xD0060033, NULL, "vzero.s S431" }, + { 0xD0060034, NULL, "vzero.s S501" }, + { 0xD0060035, NULL, "vzero.s S511" }, + { 0xD0060036, NULL, "vzero.s S521" }, + { 0xD0060037, NULL, "vzero.s S531" }, + { 0xD0060038, NULL, "vzero.s S601" }, + { 0xD0060039, NULL, "vzero.s S611" }, + { 0xD006003A, NULL, "vzero.s S621" }, + { 0xD006003B, NULL, "vzero.s S631" }, + { 0xD006003C, NULL, "vzero.s S701" }, + { 0xD006003D, NULL, "vzero.s S711" }, + { 0xD006003E, NULL, "vzero.s S721" }, + { 0xD006003F, NULL, "vzero.s S731" }, + { 0xD0060040, NULL, "vzero.s S002" }, + { 0xD0060041, NULL, "vzero.s S012" }, + { 0xD0060042, NULL, "vzero.s S022" }, + { 0xD0060043, NULL, "vzero.s S032" }, + { 0xD0060044, NULL, "vzero.s S102" }, + { 0xD0060045, NULL, "vzero.s S112" }, + { 0xD0060046, NULL, "vzero.s S122" }, + { 0xD0060047, NULL, "vzero.s S132" }, + { 0xD0060048, NULL, "vzero.s S202" }, + { 0xD0060049, NULL, "vzero.s S212" }, + { 0xD006004A, NULL, "vzero.s S222" }, + { 0xD006004B, NULL, "vzero.s S232" }, + { 0xD006004C, NULL, "vzero.s S302" }, + { 0xD006004D, NULL, "vzero.s S312" }, + { 0xD006004E, NULL, "vzero.s S322" }, + { 0xD006004F, NULL, "vzero.s S332" }, + { 0xD0060050, NULL, "vzero.s S402" }, + { 0xD0060051, NULL, "vzero.s S412" }, + { 0xD0060052, NULL, "vzero.s S422" }, + { 0xD0060053, NULL, "vzero.s S432" }, + { 0xD0060054, NULL, "vzero.s S502" }, + { 0xD0060055, NULL, "vzero.s S512" }, + { 0xD0060056, NULL, "vzero.s S522" }, + { 0xD0060057, NULL, "vzero.s S532" }, + { 0xD0060058, NULL, "vzero.s S602" }, + { 0xD0060059, NULL, "vzero.s S612" }, + { 0xD006005A, NULL, "vzero.s S622" }, + { 0xD006005B, NULL, "vzero.s S632" }, + { 0xD006005C, NULL, "vzero.s S702" }, + { 0xD006005D, NULL, "vzero.s S712" }, + { 0xD006005E, NULL, "vzero.s S722" }, + { 0xD006005F, NULL, "vzero.s S732" }, + { 0xD0060060, NULL, "vzero.s S003" }, + { 0xD0060061, NULL, "vzero.s S013" }, + { 0xD0060062, NULL, "vzero.s S023" }, + { 0xD0060063, NULL, "vzero.s S033" }, + { 0xD0060064, NULL, "vzero.s S103" }, + { 0xD0060065, NULL, "vzero.s S113" }, + { 0xD0060066, NULL, "vzero.s S123" }, + { 0xD0060067, NULL, "vzero.s S133" }, + { 0xD0060068, NULL, "vzero.s S203" }, + { 0xD0060069, NULL, "vzero.s S213" }, + { 0xD006006A, NULL, "vzero.s S223" }, + { 0xD006006B, NULL, "vzero.s S233" }, + { 0xD006006C, NULL, "vzero.s S303" }, + { 0xD006006D, NULL, "vzero.s S313" }, + { 0xD006006E, NULL, "vzero.s S323" }, + { 0xD006006F, NULL, "vzero.s S333" }, + { 0xD0060070, NULL, "vzero.s S403" }, + { 0xD0060071, NULL, "vzero.s S413" }, + { 0xD0060072, NULL, "vzero.s S423" }, + { 0xD0060073, NULL, "vzero.s S433" }, + { 0xD0060074, NULL, "vzero.s S503" }, + { 0xD0060075, NULL, "vzero.s S513" }, + { 0xD0060076, NULL, "vzero.s S523" }, + { 0xD0060077, NULL, "vzero.s S533" }, + { 0xD0060078, NULL, "vzero.s S603" }, + { 0xD0060079, NULL, "vzero.s S613" }, + { 0xD006007A, NULL, "vzero.s S623" }, + { 0xD006007B, NULL, "vzero.s S633" }, + { 0xD006007C, NULL, "vzero.s S703" }, + { 0xD006007D, NULL, "vzero.s S713" }, + { 0xD006007E, NULL, "vzero.s S723" }, + { 0xD006007F, NULL, "vzero.s S733" }, + { 0xD0060080, NULL, "vzero.p C000" }, + { 0xD0060081, NULL, "vzero.p C010" }, + { 0xD0060082, NULL, "vzero.p C020" }, + { 0xD0060083, NULL, "vzero.p C030" }, + { 0xD0060084, NULL, "vzero.p C100" }, + { 0xD0060085, NULL, "vzero.p C110" }, + { 0xD0060086, NULL, "vzero.p C120" }, + { 0xD0060087, NULL, "vzero.p C130" }, + { 0xD0060088, NULL, "vzero.p C200" }, + { 0xD0060089, NULL, "vzero.p C210" }, + { 0xD006008A, NULL, "vzero.p C220" }, + { 0xD006008B, NULL, "vzero.p C230" }, + { 0xD006008C, NULL, "vzero.p C300" }, + { 0xD006008D, NULL, "vzero.p C310" }, + { 0xD006008E, NULL, "vzero.p C320" }, + { 0xD006008F, NULL, "vzero.p C330" }, + { 0xD0060090, NULL, "vzero.p C400" }, + { 0xD0060091, NULL, "vzero.p C410" }, + { 0xD0060092, NULL, "vzero.p C420" }, + { 0xD0060093, NULL, "vzero.p C430" }, + { 0xD0060094, NULL, "vzero.p C500" }, + { 0xD0060095, NULL, "vzero.p C510" }, + { 0xD0060096, NULL, "vzero.p C520" }, + { 0xD0060097, NULL, "vzero.p C530" }, + { 0xD0060098, NULL, "vzero.p C600" }, + { 0xD0060099, NULL, "vzero.p C610" }, + { 0xD006009A, NULL, "vzero.p C620" }, + { 0xD006009B, NULL, "vzero.p C630" }, + { 0xD006009C, NULL, "vzero.p C700" }, + { 0xD006009D, NULL, "vzero.p C710" }, + { 0xD006009E, NULL, "vzero.p C720" }, + { 0xD006009F, NULL, "vzero.p C730" }, + { 0xD00600A0, NULL, "vzero.p R000" }, + { 0xD00600A1, NULL, "vzero.p R001" }, + { 0xD00600A2, NULL, "vzero.p R002" }, + { 0xD00600A3, NULL, "vzero.p R003" }, + { 0xD00600A4, NULL, "vzero.p R100" }, + { 0xD00600A5, NULL, "vzero.p R101" }, + { 0xD00600A6, NULL, "vzero.p R102" }, + { 0xD00600A7, NULL, "vzero.p R103" }, + { 0xD00600A8, NULL, "vzero.p R200" }, + { 0xD00600A9, NULL, "vzero.p R201" }, + { 0xD00600AA, NULL, "vzero.p R202" }, + { 0xD00600AB, NULL, "vzero.p R203" }, + { 0xD00600AC, NULL, "vzero.p R300" }, + { 0xD00600AD, NULL, "vzero.p R301" }, + { 0xD00600AE, NULL, "vzero.p R302" }, + { 0xD00600AF, NULL, "vzero.p R303" }, + { 0xD00600B0, NULL, "vzero.p R400" }, + { 0xD00600B1, NULL, "vzero.p R401" }, + { 0xD00600B2, NULL, "vzero.p R402" }, + { 0xD00600B3, NULL, "vzero.p R403" }, + { 0xD00600B4, NULL, "vzero.p R500" }, + { 0xD00600B5, NULL, "vzero.p R501" }, + { 0xD00600B6, NULL, "vzero.p R502" }, + { 0xD00600B7, NULL, "vzero.p R503" }, + { 0xD00600B8, NULL, "vzero.p R600" }, + { 0xD00600B9, NULL, "vzero.p R601" }, + { 0xD00600BA, NULL, "vzero.p R602" }, + { 0xD00600BB, NULL, "vzero.p R603" }, + { 0xD00600BC, NULL, "vzero.p R700" }, + { 0xD00600BD, NULL, "vzero.p R701" }, + { 0xD00600BE, NULL, "vzero.p R702" }, + { 0xD00600BF, NULL, "vzero.p R703" }, + { 0xD00600C0, NULL, "vzero.p C002" }, + { 0xD00600C1, NULL, "vzero.p C012" }, + { 0xD00600C2, NULL, "vzero.p C022" }, + { 0xD00600C3, NULL, "vzero.p C032" }, + { 0xD00600C4, NULL, "vzero.p C102" }, + { 0xD00600C5, NULL, "vzero.p C112" }, + { 0xD00600C6, NULL, "vzero.p C122" }, + { 0xD00600C7, NULL, "vzero.p C132" }, + { 0xD00600C8, NULL, "vzero.p C202" }, + { 0xD00600C9, NULL, "vzero.p C212" }, + { 0xD00600CA, NULL, "vzero.p C222" }, + { 0xD00600CB, NULL, "vzero.p C232" }, + { 0xD00600CC, NULL, "vzero.p C302" }, + { 0xD00600CD, NULL, "vzero.p C312" }, + { 0xD00600CE, NULL, "vzero.p C322" }, + { 0xD00600CF, NULL, "vzero.p C332" }, + { 0xD00600D0, NULL, "vzero.p C402" }, + { 0xD00600D1, NULL, "vzero.p C412" }, + { 0xD00600D2, NULL, "vzero.p C422" }, + { 0xD00600D3, NULL, "vzero.p C432" }, + { 0xD00600D4, NULL, "vzero.p C502" }, + { 0xD00600D5, NULL, "vzero.p C512" }, + { 0xD00600D6, NULL, "vzero.p C522" }, + { 0xD00600D7, NULL, "vzero.p C532" }, + { 0xD00600D8, NULL, "vzero.p C602" }, + { 0xD00600D9, NULL, "vzero.p C612" }, + { 0xD00600DA, NULL, "vzero.p C622" }, + { 0xD00600DB, NULL, "vzero.p C632" }, + { 0xD00600DC, NULL, "vzero.p C702" }, + { 0xD00600DD, NULL, "vzero.p C712" }, + { 0xD00600DE, NULL, "vzero.p C722" }, + { 0xD00600DF, NULL, "vzero.p C732" }, + { 0xD00600E0, NULL, "vzero.p R020" }, + { 0xD00600E1, NULL, "vzero.p R021" }, + { 0xD00600E2, NULL, "vzero.p R022" }, + { 0xD00600E3, NULL, "vzero.p R023" }, + { 0xD00600E4, NULL, "vzero.p R120" }, + { 0xD00600E5, NULL, "vzero.p R121" }, + { 0xD00600E6, NULL, "vzero.p R122" }, + { 0xD00600E7, NULL, "vzero.p R123" }, + { 0xD00600E8, NULL, "vzero.p R220" }, + { 0xD00600E9, NULL, "vzero.p R221" }, + { 0xD00600EA, NULL, "vzero.p R222" }, + { 0xD00600EB, NULL, "vzero.p R223" }, + { 0xD00600EC, NULL, "vzero.p R320" }, + { 0xD00600ED, NULL, "vzero.p R321" }, + { 0xD00600EE, NULL, "vzero.p R322" }, + { 0xD00600EF, NULL, "vzero.p R323" }, + { 0xD00600F0, NULL, "vzero.p R420" }, + { 0xD00600F1, NULL, "vzero.p R421" }, + { 0xD00600F2, NULL, "vzero.p R422" }, + { 0xD00600F3, NULL, "vzero.p R423" }, + { 0xD00600F4, NULL, "vzero.p R520" }, + { 0xD00600F5, NULL, "vzero.p R521" }, + { 0xD00600F6, NULL, "vzero.p R522" }, + { 0xD00600F7, NULL, "vzero.p R523" }, + { 0xD00600F8, NULL, "vzero.p R620" }, + { 0xD00600F9, NULL, "vzero.p R621" }, + { 0xD00600FA, NULL, "vzero.p R622" }, + { 0xD00600FB, NULL, "vzero.p R623" }, + { 0xD00600FC, NULL, "vzero.p R720" }, + { 0xD00600FD, NULL, "vzero.p R721" }, + { 0xD00600FE, NULL, "vzero.p R722" }, + { 0xD00600FF, NULL, "vzero.p R723" }, + { 0xD0068000, NULL, "vzero.t C000" }, + { 0xD0068001, NULL, "vzero.t C010" }, + { 0xD0068002, NULL, "vzero.t C020" }, + { 0xD0068003, NULL, "vzero.t C030" }, + { 0xD0068004, NULL, "vzero.t C100" }, + { 0xD0068005, NULL, "vzero.t C110" }, + { 0xD0068006, NULL, "vzero.t C120" }, + { 0xD0068007, NULL, "vzero.t C130" }, + { 0xD0068008, NULL, "vzero.t C200" }, + { 0xD0068009, NULL, "vzero.t C210" }, + { 0xD006800A, NULL, "vzero.t C220" }, + { 0xD006800B, NULL, "vzero.t C230" }, + { 0xD006800C, NULL, "vzero.t C300" }, + { 0xD006800D, NULL, "vzero.t C310" }, + { 0xD006800E, NULL, "vzero.t C320" }, + { 0xD006800F, NULL, "vzero.t C330" }, + { 0xD0068010, NULL, "vzero.t C400" }, + { 0xD0068011, NULL, "vzero.t C410" }, + { 0xD0068012, NULL, "vzero.t C420" }, + { 0xD0068013, NULL, "vzero.t C430" }, + { 0xD0068014, NULL, "vzero.t C500" }, + { 0xD0068015, NULL, "vzero.t C510" }, + { 0xD0068016, NULL, "vzero.t C520" }, + { 0xD0068017, NULL, "vzero.t C530" }, + { 0xD0068018, NULL, "vzero.t C600" }, + { 0xD0068019, NULL, "vzero.t C610" }, + { 0xD006801A, NULL, "vzero.t C620" }, + { 0xD006801B, NULL, "vzero.t C630" }, + { 0xD006801C, NULL, "vzero.t C700" }, + { 0xD006801D, NULL, "vzero.t C710" }, + { 0xD006801E, NULL, "vzero.t C720" }, + { 0xD006801F, NULL, "vzero.t C730" }, + { 0xD0068020, NULL, "vzero.t R000" }, + { 0xD0068021, NULL, "vzero.t R001" }, + { 0xD0068022, NULL, "vzero.t R002" }, + { 0xD0068023, NULL, "vzero.t R003" }, + { 0xD0068024, NULL, "vzero.t R100" }, + { 0xD0068025, NULL, "vzero.t R101" }, + { 0xD0068026, NULL, "vzero.t R102" }, + { 0xD0068027, NULL, "vzero.t R103" }, + { 0xD0068028, NULL, "vzero.t R200" }, + { 0xD0068029, NULL, "vzero.t R201" }, + { 0xD006802A, NULL, "vzero.t R202" }, + { 0xD006802B, NULL, "vzero.t R203" }, + { 0xD006802C, NULL, "vzero.t R300" }, + { 0xD006802D, NULL, "vzero.t R301" }, + { 0xD006802E, NULL, "vzero.t R302" }, + { 0xD006802F, NULL, "vzero.t R303" }, + { 0xD0068030, NULL, "vzero.t R400" }, + { 0xD0068031, NULL, "vzero.t R401" }, + { 0xD0068032, NULL, "vzero.t R402" }, + { 0xD0068033, NULL, "vzero.t R403" }, + { 0xD0068034, NULL, "vzero.t R500" }, + { 0xD0068035, NULL, "vzero.t R501" }, + { 0xD0068036, NULL, "vzero.t R502" }, + { 0xD0068037, NULL, "vzero.t R503" }, + { 0xD0068038, NULL, "vzero.t R600" }, + { 0xD0068039, NULL, "vzero.t R601" }, + { 0xD006803A, NULL, "vzero.t R602" }, + { 0xD006803B, NULL, "vzero.t R603" }, + { 0xD006803C, NULL, "vzero.t R700" }, + { 0xD006803D, NULL, "vzero.t R701" }, + { 0xD006803E, NULL, "vzero.t R702" }, + { 0xD006803F, NULL, "vzero.t R703" }, + { 0xD0068040, NULL, "vzero.t C001" }, + { 0xD0068041, NULL, "vzero.t C011" }, + { 0xD0068042, NULL, "vzero.t C021" }, + { 0xD0068043, NULL, "vzero.t C031" }, + { 0xD0068044, NULL, "vzero.t C101" }, + { 0xD0068045, NULL, "vzero.t C111" }, + { 0xD0068046, NULL, "vzero.t C121" }, + { 0xD0068047, NULL, "vzero.t C131" }, + { 0xD0068048, NULL, "vzero.t C201" }, + { 0xD0068049, NULL, "vzero.t C211" }, + { 0xD006804A, NULL, "vzero.t C221" }, + { 0xD006804B, NULL, "vzero.t C231" }, + { 0xD006804C, NULL, "vzero.t C301" }, + { 0xD006804D, NULL, "vzero.t C311" }, + { 0xD006804E, NULL, "vzero.t C321" }, + { 0xD006804F, NULL, "vzero.t C331" }, + { 0xD0068050, NULL, "vzero.t C401" }, + { 0xD0068051, NULL, "vzero.t C411" }, + { 0xD0068052, NULL, "vzero.t C421" }, + { 0xD0068053, NULL, "vzero.t C431" }, + { 0xD0068054, NULL, "vzero.t C501" }, + { 0xD0068055, NULL, "vzero.t C511" }, + { 0xD0068056, NULL, "vzero.t C521" }, + { 0xD0068057, NULL, "vzero.t C531" }, + { 0xD0068058, NULL, "vzero.t C601" }, + { 0xD0068059, NULL, "vzero.t C611" }, + { 0xD006805A, NULL, "vzero.t C621" }, + { 0xD006805B, NULL, "vzero.t C631" }, + { 0xD006805C, NULL, "vzero.t C701" }, + { 0xD006805D, NULL, "vzero.t C711" }, + { 0xD006805E, NULL, "vzero.t C721" }, + { 0xD006805F, NULL, "vzero.t C731" }, + { 0xD0068060, NULL, "vzero.t R010" }, + { 0xD0068061, NULL, "vzero.t R011" }, + { 0xD0068062, NULL, "vzero.t R012" }, + { 0xD0068063, NULL, "vzero.t R013" }, + { 0xD0068064, NULL, "vzero.t R110" }, + { 0xD0068065, NULL, "vzero.t R111" }, + { 0xD0068066, NULL, "vzero.t R112" }, + { 0xD0068067, NULL, "vzero.t R113" }, + { 0xD0068068, NULL, "vzero.t R210" }, + { 0xD0068069, NULL, "vzero.t R211" }, + { 0xD006806A, NULL, "vzero.t R212" }, + { 0xD006806B, NULL, "vzero.t R213" }, + { 0xD006806C, NULL, "vzero.t R310" }, + { 0xD006806D, NULL, "vzero.t R311" }, + { 0xD006806E, NULL, "vzero.t R312" }, + { 0xD006806F, NULL, "vzero.t R313" }, + { 0xD0068070, NULL, "vzero.t R410" }, + { 0xD0068071, NULL, "vzero.t R411" }, + { 0xD0068072, NULL, "vzero.t R412" }, + { 0xD0068073, NULL, "vzero.t R413" }, + { 0xD0068074, NULL, "vzero.t R510" }, + { 0xD0068075, NULL, "vzero.t R511" }, + { 0xD0068076, NULL, "vzero.t R512" }, + { 0xD0068077, NULL, "vzero.t R513" }, + { 0xD0068078, NULL, "vzero.t R610" }, + { 0xD0068079, NULL, "vzero.t R611" }, + { 0xD006807A, NULL, "vzero.t R612" }, + { 0xD006807B, NULL, "vzero.t R613" }, + { 0xD006807C, NULL, "vzero.t R710" }, + { 0xD006807D, NULL, "vzero.t R711" }, + { 0xD006807E, NULL, "vzero.t R712" }, + { 0xD006807F, NULL, "vzero.t R713" }, + { 0xD0068080, NULL, "vzero.q C000" }, + { 0xD0068081, NULL, "vzero.q C010" }, + { 0xD0068082, NULL, "vzero.q C020" }, + { 0xD0068083, NULL, "vzero.q C030" }, + { 0xD0068084, NULL, "vzero.q C100" }, + { 0xD0068085, NULL, "vzero.q C110" }, + { 0xD0068086, NULL, "vzero.q C120" }, + { 0xD0068087, NULL, "vzero.q C130" }, + { 0xD0068088, NULL, "vzero.q C200" }, + { 0xD0068089, NULL, "vzero.q C210" }, + { 0xD006808A, NULL, "vzero.q C220" }, + { 0xD006808B, NULL, "vzero.q C230" }, + { 0xD006808C, NULL, "vzero.q C300" }, + { 0xD006808D, NULL, "vzero.q C310" }, + { 0xD006808E, NULL, "vzero.q C320" }, + { 0xD006808F, NULL, "vzero.q C330" }, + { 0xD0068090, NULL, "vzero.q C400" }, + { 0xD0068091, NULL, "vzero.q C410" }, + { 0xD0068092, NULL, "vzero.q C420" }, + { 0xD0068093, NULL, "vzero.q C430" }, + { 0xD0068094, NULL, "vzero.q C500" }, + { 0xD0068095, NULL, "vzero.q C510" }, + { 0xD0068096, NULL, "vzero.q C520" }, + { 0xD0068097, NULL, "vzero.q C530" }, + { 0xD0068098, NULL, "vzero.q C600" }, + { 0xD0068099, NULL, "vzero.q C610" }, + { 0xD006809A, NULL, "vzero.q C620" }, + { 0xD006809B, NULL, "vzero.q C630" }, + { 0xD006809C, NULL, "vzero.q C700" }, + { 0xD006809D, NULL, "vzero.q C710" }, + { 0xD006809E, NULL, "vzero.q C720" }, + { 0xD006809F, NULL, "vzero.q C730" }, + { 0xD00680A0, NULL, "vzero.q R000" }, + { 0xD00680A1, NULL, "vzero.q R001" }, + { 0xD00680A2, NULL, "vzero.q R002" }, + { 0xD00680A3, NULL, "vzero.q R003" }, + { 0xD00680A4, NULL, "vzero.q R100" }, + { 0xD00680A5, NULL, "vzero.q R101" }, + { 0xD00680A6, NULL, "vzero.q R102" }, + { 0xD00680A7, NULL, "vzero.q R103" }, + { 0xD00680A8, NULL, "vzero.q R200" }, + { 0xD00680A9, NULL, "vzero.q R201" }, + { 0xD00680AA, NULL, "vzero.q R202" }, + { 0xD00680AB, NULL, "vzero.q R203" }, + { 0xD00680AC, NULL, "vzero.q R300" }, + { 0xD00680AD, NULL, "vzero.q R301" }, + { 0xD00680AE, NULL, "vzero.q R302" }, + { 0xD00680AF, NULL, "vzero.q R303" }, + { 0xD00680B0, NULL, "vzero.q R400" }, + { 0xD00680B1, NULL, "vzero.q R401" }, + { 0xD00680B2, NULL, "vzero.q R402" }, + { 0xD00680B3, NULL, "vzero.q R403" }, + { 0xD00680B4, NULL, "vzero.q R500" }, + { 0xD00680B5, NULL, "vzero.q R501" }, + { 0xD00680B6, NULL, "vzero.q R502" }, + { 0xD00680B7, NULL, "vzero.q R503" }, + { 0xD00680B8, NULL, "vzero.q R600" }, + { 0xD00680B9, NULL, "vzero.q R601" }, + { 0xD00680BA, NULL, "vzero.q R602" }, + { 0xD00680BB, NULL, "vzero.q R603" }, + { 0xD00680BC, NULL, "vzero.q R700" }, + { 0xD00680BD, NULL, "vzero.q R701" }, + { 0xD00680BE, NULL, "vzero.q R702" }, + { 0xD00680BF, NULL, "vzero.q R703" }, + { 0xD00680C0, NULL, "vzero.q C002" }, + { 0xD00680C1, NULL, "vzero.q C012" }, + { 0xD00680C2, NULL, "vzero.q C022" }, + { 0xD00680C3, NULL, "vzero.q C032" }, + { 0xD00680C4, NULL, "vzero.q C102" }, + { 0xD00680C5, NULL, "vzero.q C112" }, + { 0xD00680C6, NULL, "vzero.q C122" }, + { 0xD00680C7, NULL, "vzero.q C132" }, + { 0xD00680C8, NULL, "vzero.q C202" }, + { 0xD00680C9, NULL, "vzero.q C212" }, + { 0xD00680CA, NULL, "vzero.q C222" }, + { 0xD00680CB, NULL, "vzero.q C232" }, + { 0xD00680CC, NULL, "vzero.q C302" }, + { 0xD00680CD, NULL, "vzero.q C312" }, + { 0xD00680CE, NULL, "vzero.q C322" }, + { 0xD00680CF, NULL, "vzero.q C332" }, + { 0xD00680D0, NULL, "vzero.q C402" }, + { 0xD00680D1, NULL, "vzero.q C412" }, + { 0xD00680D2, NULL, "vzero.q C422" }, + { 0xD00680D3, NULL, "vzero.q C432" }, + { 0xD00680D4, NULL, "vzero.q C502" }, + { 0xD00680D5, NULL, "vzero.q C512" }, + { 0xD00680D6, NULL, "vzero.q C522" }, + { 0xD00680D7, NULL, "vzero.q C532" }, + { 0xD00680D8, NULL, "vzero.q C602" }, + { 0xD00680D9, NULL, "vzero.q C612" }, + { 0xD00680DA, NULL, "vzero.q C622" }, + { 0xD00680DB, NULL, "vzero.q C632" }, + { 0xD00680DC, NULL, "vzero.q C702" }, + { 0xD00680DD, NULL, "vzero.q C712" }, + { 0xD00680DE, NULL, "vzero.q C722" }, + { 0xD00680DF, NULL, "vzero.q C732" }, + { 0xD00680E0, NULL, "vzero.q R020" }, + { 0xD00680E1, NULL, "vzero.q R021" }, + { 0xD00680E2, NULL, "vzero.q R022" }, + { 0xD00680E3, NULL, "vzero.q R023" }, + { 0xD00680E4, NULL, "vzero.q R120" }, + { 0xD00680E5, NULL, "vzero.q R121" }, + { 0xD00680E6, NULL, "vzero.q R122" }, + { 0xD00680E7, NULL, "vzero.q R123" }, + { 0xD00680E8, NULL, "vzero.q R220" }, + { 0xD00680E9, NULL, "vzero.q R221" }, + { 0xD00680EA, NULL, "vzero.q R222" }, + { 0xD00680EB, NULL, "vzero.q R223" }, + { 0xD00680EC, NULL, "vzero.q R320" }, + { 0xD00680ED, NULL, "vzero.q R321" }, + { 0xD00680EE, NULL, "vzero.q R322" }, + { 0xD00680EF, NULL, "vzero.q R323" }, + { 0xD00680F0, NULL, "vzero.q R420" }, + { 0xD00680F1, NULL, "vzero.q R421" }, + { 0xD00680F2, NULL, "vzero.q R422" }, + { 0xD00680F3, NULL, "vzero.q R423" }, + { 0xD00680F4, NULL, "vzero.q R520" }, + { 0xD00680F5, NULL, "vzero.q R521" }, + { 0xD00680F6, NULL, "vzero.q R522" }, + { 0xD00680F7, NULL, "vzero.q R523" }, + { 0xD00680F8, NULL, "vzero.q R620" }, + { 0xD00680F9, NULL, "vzero.q R621" }, + { 0xD00680FA, NULL, "vzero.q R622" }, + { 0xD00680FB, NULL, "vzero.q R623" }, + { 0xD00680FC, NULL, "vzero.q R720" }, + { 0xD00680FD, NULL, "vzero.q R721" }, + { 0xD00680FE, NULL, "vzero.q R722" }, + { 0xD00680FF, NULL, "vzero.q R723" }, + + { 0xF3860080, NULL, "vmzero.p M000" }, + { 0xF3860081, NULL, "vmzero.p M010" }, + { 0xF3860082, NULL, "vmzero.p M020" }, + { 0xF3860083, NULL, "vmzero.p M030" }, + { 0xF3860084, NULL, "vmzero.p M100" }, + { 0xF3860085, NULL, "vmzero.p M110" }, + { 0xF3860086, NULL, "vmzero.p M120" }, + { 0xF3860087, NULL, "vmzero.p M130" }, + { 0xF3860088, NULL, "vmzero.p M200" }, + { 0xF3860089, NULL, "vmzero.p M210" }, + { 0xF386008A, NULL, "vmzero.p M220" }, + { 0xF386008B, NULL, "vmzero.p M230" }, + { 0xF386008C, NULL, "vmzero.p M300" }, + { 0xF386008D, NULL, "vmzero.p M310" }, + { 0xF386008E, NULL, "vmzero.p M320" }, + { 0xF386008F, NULL, "vmzero.p M330" }, + { 0xF3860090, NULL, "vmzero.p M400" }, + { 0xF3860091, NULL, "vmzero.p M410" }, + { 0xF3860092, NULL, "vmzero.p M420" }, + { 0xF3860093, NULL, "vmzero.p M430" }, + { 0xF3860094, NULL, "vmzero.p M500" }, + { 0xF3860095, NULL, "vmzero.p M510" }, + { 0xF3860096, NULL, "vmzero.p M520" }, + { 0xF3860097, NULL, "vmzero.p M530" }, + { 0xF3860098, NULL, "vmzero.p M600" }, + { 0xF3860099, NULL, "vmzero.p M610" }, + { 0xF386009A, NULL, "vmzero.p M620" }, + { 0xF386009B, NULL, "vmzero.p M630" }, + { 0xF386009C, NULL, "vmzero.p M700" }, + { 0xF386009D, NULL, "vmzero.p M710" }, + { 0xF386009E, NULL, "vmzero.p M720" }, + { 0xF386009F, NULL, "vmzero.p M730" }, + { 0xF38600A0, NULL, "vmzero.p E000" }, + { 0xF38600A1, NULL, "vmzero.p E001" }, + { 0xF38600A2, NULL, "vmzero.p E002" }, + { 0xF38600A3, NULL, "vmzero.p E003" }, + { 0xF38600A4, NULL, "vmzero.p E100" }, + { 0xF38600A5, NULL, "vmzero.p E101" }, + { 0xF38600A6, NULL, "vmzero.p E102" }, + { 0xF38600A7, NULL, "vmzero.p E103" }, + { 0xF38600A8, NULL, "vmzero.p E200" }, + { 0xF38600A9, NULL, "vmzero.p E201" }, + { 0xF38600AA, NULL, "vmzero.p E202" }, + { 0xF38600AB, NULL, "vmzero.p E203" }, + { 0xF38600AC, NULL, "vmzero.p E300" }, + { 0xF38600AD, NULL, "vmzero.p E301" }, + { 0xF38600AE, NULL, "vmzero.p E302" }, + { 0xF38600AF, NULL, "vmzero.p E303" }, + { 0xF38600B0, NULL, "vmzero.p E400" }, + { 0xF38600B1, NULL, "vmzero.p E401" }, + { 0xF38600B2, NULL, "vmzero.p E402" }, + { 0xF38600B3, NULL, "vmzero.p E403" }, + { 0xF38600B4, NULL, "vmzero.p E500" }, + { 0xF38600B5, NULL, "vmzero.p E501" }, + { 0xF38600B6, NULL, "vmzero.p E502" }, + { 0xF38600B7, NULL, "vmzero.p E503" }, + { 0xF38600B8, NULL, "vmzero.p E600" }, + { 0xF38600B9, NULL, "vmzero.p E601" }, + { 0xF38600BA, NULL, "vmzero.p E602" }, + { 0xF38600BB, NULL, "vmzero.p E603" }, + { 0xF38600BC, NULL, "vmzero.p E700" }, + { 0xF38600BD, NULL, "vmzero.p E701" }, + { 0xF38600BE, NULL, "vmzero.p E702" }, + { 0xF38600BF, NULL, "vmzero.p E703" }, + { 0xF38600C0, NULL, "vmzero.p M002" }, + { 0xF38600C1, NULL, "vmzero.p M012" }, + { 0xF38600C2, NULL, "vmzero.p M022" }, + { 0xF38600C3, NULL, "vmzero.p M032" }, + { 0xF38600C4, NULL, "vmzero.p M102" }, + { 0xF38600C5, NULL, "vmzero.p M112" }, + { 0xF38600C6, NULL, "vmzero.p M122" }, + { 0xF38600C7, NULL, "vmzero.p M132" }, + { 0xF38600C8, NULL, "vmzero.p M202" }, + { 0xF38600C9, NULL, "vmzero.p M212" }, + { 0xF38600CA, NULL, "vmzero.p M222" }, + { 0xF38600CB, NULL, "vmzero.p M232" }, + { 0xF38600CC, NULL, "vmzero.p M302" }, + { 0xF38600CD, NULL, "vmzero.p M312" }, + { 0xF38600CE, NULL, "vmzero.p M322" }, + { 0xF38600CF, NULL, "vmzero.p M332" }, + { 0xF38600D0, NULL, "vmzero.p M402" }, + { 0xF38600D1, NULL, "vmzero.p M412" }, + { 0xF38600D2, NULL, "vmzero.p M422" }, + { 0xF38600D3, NULL, "vmzero.p M432" }, + { 0xF38600D4, NULL, "vmzero.p M502" }, + { 0xF38600D5, NULL, "vmzero.p M512" }, + { 0xF38600D6, NULL, "vmzero.p M522" }, + { 0xF38600D7, NULL, "vmzero.p M532" }, + { 0xF38600D8, NULL, "vmzero.p M602" }, + { 0xF38600D9, NULL, "vmzero.p M612" }, + { 0xF38600DA, NULL, "vmzero.p M622" }, + { 0xF38600DB, NULL, "vmzero.p M632" }, + { 0xF38600DC, NULL, "vmzero.p M702" }, + { 0xF38600DD, NULL, "vmzero.p M712" }, + { 0xF38600DE, NULL, "vmzero.p M722" }, + { 0xF38600DF, NULL, "vmzero.p M732" }, + { 0xF38600E0, NULL, "vmzero.p E020" }, + { 0xF38600E1, NULL, "vmzero.p E021" }, + { 0xF38600E2, NULL, "vmzero.p E022" }, + { 0xF38600E3, NULL, "vmzero.p E023" }, + { 0xF38600E4, NULL, "vmzero.p E120" }, + { 0xF38600E5, NULL, "vmzero.p E121" }, + { 0xF38600E6, NULL, "vmzero.p E122" }, + { 0xF38600E7, NULL, "vmzero.p E123" }, + { 0xF38600E8, NULL, "vmzero.p E220" }, + { 0xF38600E9, NULL, "vmzero.p E221" }, + { 0xF38600EA, NULL, "vmzero.p E222" }, + { 0xF38600EB, NULL, "vmzero.p E223" }, + { 0xF38600EC, NULL, "vmzero.p E320" }, + { 0xF38600ED, NULL, "vmzero.p E321" }, + { 0xF38600EE, NULL, "vmzero.p E322" }, + { 0xF38600EF, NULL, "vmzero.p E323" }, + { 0xF38600F0, NULL, "vmzero.p E420" }, + { 0xF38600F1, NULL, "vmzero.p E421" }, + { 0xF38600F2, NULL, "vmzero.p E422" }, + { 0xF38600F3, NULL, "vmzero.p E423" }, + { 0xF38600F4, NULL, "vmzero.p E520" }, + { 0xF38600F5, NULL, "vmzero.p E521" }, + { 0xF38600F6, NULL, "vmzero.p E522" }, + { 0xF38600F7, NULL, "vmzero.p E523" }, + { 0xF38600F8, NULL, "vmzero.p E620" }, + { 0xF38600F9, NULL, "vmzero.p E621" }, + { 0xF38600FA, NULL, "vmzero.p E622" }, + { 0xF38600FB, NULL, "vmzero.p E623" }, + { 0xF38600FC, NULL, "vmzero.p E720" }, + { 0xF38600FD, NULL, "vmzero.p E721" }, + { 0xF38600FE, NULL, "vmzero.p E722" }, + { 0xF38600FF, NULL, "vmzero.p E723" }, + { 0xF3868000, NULL, "vmzero.t M000" }, + { 0xF3868001, NULL, "vmzero.t M010" }, + { 0xF3868002, NULL, "vmzero.t M020" }, + { 0xF3868003, NULL, "vmzero.t M030" }, + { 0xF3868004, NULL, "vmzero.t M100" }, + { 0xF3868005, NULL, "vmzero.t M110" }, + { 0xF3868006, NULL, "vmzero.t M120" }, + { 0xF3868007, NULL, "vmzero.t M130" }, + { 0xF3868008, NULL, "vmzero.t M200" }, + { 0xF3868009, NULL, "vmzero.t M210" }, + { 0xF386800A, NULL, "vmzero.t M220" }, + { 0xF386800B, NULL, "vmzero.t M230" }, + { 0xF386800C, NULL, "vmzero.t M300" }, + { 0xF386800D, NULL, "vmzero.t M310" }, + { 0xF386800E, NULL, "vmzero.t M320" }, + { 0xF386800F, NULL, "vmzero.t M330" }, + { 0xF3868010, NULL, "vmzero.t M400" }, + { 0xF3868011, NULL, "vmzero.t M410" }, + { 0xF3868012, NULL, "vmzero.t M420" }, + { 0xF3868013, NULL, "vmzero.t M430" }, + { 0xF3868014, NULL, "vmzero.t M500" }, + { 0xF3868015, NULL, "vmzero.t M510" }, + { 0xF3868016, NULL, "vmzero.t M520" }, + { 0xF3868017, NULL, "vmzero.t M530" }, + { 0xF3868018, NULL, "vmzero.t M600" }, + { 0xF3868019, NULL, "vmzero.t M610" }, + { 0xF386801A, NULL, "vmzero.t M620" }, + { 0xF386801B, NULL, "vmzero.t M630" }, + { 0xF386801C, NULL, "vmzero.t M700" }, + { 0xF386801D, NULL, "vmzero.t M710" }, + { 0xF386801E, NULL, "vmzero.t M720" }, + { 0xF386801F, NULL, "vmzero.t M730" }, + { 0xF3868020, NULL, "vmzero.t E000" }, + { 0xF3868021, NULL, "vmzero.t E001" }, + { 0xF3868022, NULL, "vmzero.t E002" }, + { 0xF3868023, NULL, "vmzero.t E003" }, + { 0xF3868024, NULL, "vmzero.t E100" }, + { 0xF3868025, NULL, "vmzero.t E101" }, + { 0xF3868026, NULL, "vmzero.t E102" }, + { 0xF3868027, NULL, "vmzero.t E103" }, + { 0xF3868028, NULL, "vmzero.t E200" }, + { 0xF3868029, NULL, "vmzero.t E201" }, + { 0xF386802A, NULL, "vmzero.t E202" }, + { 0xF386802B, NULL, "vmzero.t E203" }, + { 0xF386802C, NULL, "vmzero.t E300" }, + { 0xF386802D, NULL, "vmzero.t E301" }, + { 0xF386802E, NULL, "vmzero.t E302" }, + { 0xF386802F, NULL, "vmzero.t E303" }, + { 0xF3868030, NULL, "vmzero.t E400" }, + { 0xF3868031, NULL, "vmzero.t E401" }, + { 0xF3868032, NULL, "vmzero.t E402" }, + { 0xF3868033, NULL, "vmzero.t E403" }, + { 0xF3868034, NULL, "vmzero.t E500" }, + { 0xF3868035, NULL, "vmzero.t E501" }, + { 0xF3868036, NULL, "vmzero.t E502" }, + { 0xF3868037, NULL, "vmzero.t E503" }, + { 0xF3868038, NULL, "vmzero.t E600" }, + { 0xF3868039, NULL, "vmzero.t E601" }, + { 0xF386803A, NULL, "vmzero.t E602" }, + { 0xF386803B, NULL, "vmzero.t E603" }, + { 0xF386803C, NULL, "vmzero.t E700" }, + { 0xF386803D, NULL, "vmzero.t E701" }, + { 0xF386803E, NULL, "vmzero.t E702" }, + { 0xF386803F, NULL, "vmzero.t E703" }, + { 0xF3868040, NULL, "vmzero.t M001" }, + { 0xF3868041, NULL, "vmzero.t M011" }, + { 0xF3868042, NULL, "vmzero.t M021" }, + { 0xF3868043, NULL, "vmzero.t M031" }, + { 0xF3868044, NULL, "vmzero.t M101" }, + { 0xF3868045, NULL, "vmzero.t M111" }, + { 0xF3868046, NULL, "vmzero.t M121" }, + { 0xF3868047, NULL, "vmzero.t M131" }, + { 0xF3868048, NULL, "vmzero.t M201" }, + { 0xF3868049, NULL, "vmzero.t M211" }, + { 0xF386804A, NULL, "vmzero.t M221" }, + { 0xF386804B, NULL, "vmzero.t M231" }, + { 0xF386804C, NULL, "vmzero.t M301" }, + { 0xF386804D, NULL, "vmzero.t M311" }, + { 0xF386804E, NULL, "vmzero.t M321" }, + { 0xF386804F, NULL, "vmzero.t M331" }, + { 0xF3868050, NULL, "vmzero.t M401" }, + { 0xF3868051, NULL, "vmzero.t M411" }, + { 0xF3868052, NULL, "vmzero.t M421" }, + { 0xF3868053, NULL, "vmzero.t M431" }, + { 0xF3868054, NULL, "vmzero.t M501" }, + { 0xF3868055, NULL, "vmzero.t M511" }, + { 0xF3868056, NULL, "vmzero.t M521" }, + { 0xF3868057, NULL, "vmzero.t M531" }, + { 0xF3868058, NULL, "vmzero.t M601" }, + { 0xF3868059, NULL, "vmzero.t M611" }, + { 0xF386805A, NULL, "vmzero.t M621" }, + { 0xF386805B, NULL, "vmzero.t M631" }, + { 0xF386805C, NULL, "vmzero.t M701" }, + { 0xF386805D, NULL, "vmzero.t M711" }, + { 0xF386805E, NULL, "vmzero.t M721" }, + { 0xF386805F, NULL, "vmzero.t M731" }, + { 0xF3868060, NULL, "vmzero.t E010" }, + { 0xF3868061, NULL, "vmzero.t E011" }, + { 0xF3868062, NULL, "vmzero.t E012" }, + { 0xF3868063, NULL, "vmzero.t E013" }, + { 0xF3868064, NULL, "vmzero.t E110" }, + { 0xF3868065, NULL, "vmzero.t E111" }, + { 0xF3868066, NULL, "vmzero.t E112" }, + { 0xF3868067, NULL, "vmzero.t E113" }, + { 0xF3868068, NULL, "vmzero.t E210" }, + { 0xF3868069, NULL, "vmzero.t E211" }, + { 0xF386806A, NULL, "vmzero.t E212" }, + { 0xF386806B, NULL, "vmzero.t E213" }, + { 0xF386806C, NULL, "vmzero.t E310" }, + { 0xF386806D, NULL, "vmzero.t E311" }, + { 0xF386806E, NULL, "vmzero.t E312" }, + { 0xF386806F, NULL, "vmzero.t E313" }, + { 0xF3868070, NULL, "vmzero.t E410" }, + { 0xF3868071, NULL, "vmzero.t E411" }, + { 0xF3868072, NULL, "vmzero.t E412" }, + { 0xF3868073, NULL, "vmzero.t E413" }, + { 0xF3868074, NULL, "vmzero.t E510" }, + { 0xF3868075, NULL, "vmzero.t E511" }, + { 0xF3868076, NULL, "vmzero.t E512" }, + { 0xF3868077, NULL, "vmzero.t E513" }, + { 0xF3868078, NULL, "vmzero.t E610" }, + { 0xF3868079, NULL, "vmzero.t E611" }, + { 0xF386807A, NULL, "vmzero.t E612" }, + { 0xF386807B, NULL, "vmzero.t E613" }, + { 0xF386807C, NULL, "vmzero.t E710" }, + { 0xF386807D, NULL, "vmzero.t E711" }, + { 0xF386807E, NULL, "vmzero.t E712" }, + { 0xF386807F, NULL, "vmzero.t E713" }, + { 0xF3868080, NULL, "vmzero.q M000" }, + { 0xF3868081, NULL, "vmzero.q M010" }, + { 0xF3868082, NULL, "vmzero.q M020" }, + { 0xF3868083, NULL, "vmzero.q M030" }, + { 0xF3868084, NULL, "vmzero.q M100" }, + { 0xF3868085, NULL, "vmzero.q M110" }, + { 0xF3868086, NULL, "vmzero.q M120" }, + { 0xF3868087, NULL, "vmzero.q M130" }, + { 0xF3868088, NULL, "vmzero.q M200" }, + { 0xF3868089, NULL, "vmzero.q M210" }, + { 0xF386808A, NULL, "vmzero.q M220" }, + { 0xF386808B, NULL, "vmzero.q M230" }, + { 0xF386808C, NULL, "vmzero.q M300" }, + { 0xF386808D, NULL, "vmzero.q M310" }, + { 0xF386808E, NULL, "vmzero.q M320" }, + { 0xF386808F, NULL, "vmzero.q M330" }, + { 0xF3868090, NULL, "vmzero.q M400" }, + { 0xF3868091, NULL, "vmzero.q M410" }, + { 0xF3868092, NULL, "vmzero.q M420" }, + { 0xF3868093, NULL, "vmzero.q M430" }, + { 0xF3868094, NULL, "vmzero.q M500" }, + { 0xF3868095, NULL, "vmzero.q M510" }, + { 0xF3868096, NULL, "vmzero.q M520" }, + { 0xF3868097, NULL, "vmzero.q M530" }, + { 0xF3868098, NULL, "vmzero.q M600" }, + { 0xF3868099, NULL, "vmzero.q M610" }, + { 0xF386809A, NULL, "vmzero.q M620" }, + { 0xF386809B, NULL, "vmzero.q M630" }, + { 0xF386809C, NULL, "vmzero.q M700" }, + { 0xF386809D, NULL, "vmzero.q M710" }, + { 0xF386809E, NULL, "vmzero.q M720" }, + { 0xF386809F, NULL, "vmzero.q M730" }, + { 0xF38680A0, NULL, "vmzero.q E000" }, + { 0xF38680A1, NULL, "vmzero.q E001" }, + { 0xF38680A2, NULL, "vmzero.q E002" }, + { 0xF38680A3, NULL, "vmzero.q E003" }, + { 0xF38680A4, NULL, "vmzero.q E100" }, + { 0xF38680A5, NULL, "vmzero.q E101" }, + { 0xF38680A6, NULL, "vmzero.q E102" }, + { 0xF38680A7, NULL, "vmzero.q E103" }, + { 0xF38680A8, NULL, "vmzero.q E200" }, + { 0xF38680A9, NULL, "vmzero.q E201" }, + { 0xF38680AA, NULL, "vmzero.q E202" }, + { 0xF38680AB, NULL, "vmzero.q E203" }, + { 0xF38680AC, NULL, "vmzero.q E300" }, + { 0xF38680AD, NULL, "vmzero.q E301" }, + { 0xF38680AE, NULL, "vmzero.q E302" }, + { 0xF38680AF, NULL, "vmzero.q E303" }, + { 0xF38680B0, NULL, "vmzero.q E400" }, + { 0xF38680B1, NULL, "vmzero.q E401" }, + { 0xF38680B2, NULL, "vmzero.q E402" }, + { 0xF38680B3, NULL, "vmzero.q E403" }, + { 0xF38680B4, NULL, "vmzero.q E500" }, + { 0xF38680B5, NULL, "vmzero.q E501" }, + { 0xF38680B6, NULL, "vmzero.q E502" }, + { 0xF38680B7, NULL, "vmzero.q E503" }, + { 0xF38680B8, NULL, "vmzero.q E600" }, + { 0xF38680B9, NULL, "vmzero.q E601" }, + { 0xF38680BA, NULL, "vmzero.q E602" }, + { 0xF38680BB, NULL, "vmzero.q E603" }, + { 0xF38680BC, NULL, "vmzero.q E700" }, + { 0xF38680BD, NULL, "vmzero.q E701" }, + { 0xF38680BE, NULL, "vmzero.q E702" }, + { 0xF38680BF, NULL, "vmzero.q E703" }, + { 0xF38680C0, NULL, "vmzero.q M002" }, + { 0xF38680C1, NULL, "vmzero.q M012" }, + { 0xF38680C2, NULL, "vmzero.q M022" }, + { 0xF38680C3, NULL, "vmzero.q M032" }, + { 0xF38680C4, NULL, "vmzero.q M102" }, + { 0xF38680C5, NULL, "vmzero.q M112" }, + { 0xF38680C6, NULL, "vmzero.q M122" }, + { 0xF38680C7, NULL, "vmzero.q M132" }, + { 0xF38680C8, NULL, "vmzero.q M202" }, + { 0xF38680C9, NULL, "vmzero.q M212" }, + { 0xF38680CA, NULL, "vmzero.q M222" }, + { 0xF38680CB, NULL, "vmzero.q M232" }, + { 0xF38680CC, NULL, "vmzero.q M302" }, + { 0xF38680CD, NULL, "vmzero.q M312" }, + { 0xF38680CE, NULL, "vmzero.q M322" }, + { 0xF38680CF, NULL, "vmzero.q M332" }, + { 0xF38680D0, NULL, "vmzero.q M402" }, + { 0xF38680D1, NULL, "vmzero.q M412" }, + { 0xF38680D2, NULL, "vmzero.q M422" }, + { 0xF38680D3, NULL, "vmzero.q M432" }, + { 0xF38680D4, NULL, "vmzero.q M502" }, + { 0xF38680D5, NULL, "vmzero.q M512" }, + { 0xF38680D6, NULL, "vmzero.q M522" }, + { 0xF38680D7, NULL, "vmzero.q M532" }, + { 0xF38680D8, NULL, "vmzero.q M602" }, + { 0xF38680D9, NULL, "vmzero.q M612" }, + { 0xF38680DA, NULL, "vmzero.q M622" }, + { 0xF38680DB, NULL, "vmzero.q M632" }, + { 0xF38680DC, NULL, "vmzero.q M702" }, + { 0xF38680DD, NULL, "vmzero.q M712" }, + { 0xF38680DE, NULL, "vmzero.q M722" }, + { 0xF38680DF, NULL, "vmzero.q M732" }, + { 0xF38680E0, NULL, "vmzero.q E020" }, + { 0xF38680E1, NULL, "vmzero.q E021" }, + { 0xF38680E2, NULL, "vmzero.q E022" }, + { 0xF38680E3, NULL, "vmzero.q E023" }, + { 0xF38680E4, NULL, "vmzero.q E120" }, + { 0xF38680E5, NULL, "vmzero.q E121" }, + { 0xF38680E6, NULL, "vmzero.q E122" }, + { 0xF38680E7, NULL, "vmzero.q E123" }, + { 0xF38680E8, NULL, "vmzero.q E220" }, + { 0xF38680E9, NULL, "vmzero.q E221" }, + { 0xF38680EA, NULL, "vmzero.q E222" }, + { 0xF38680EB, NULL, "vmzero.q E223" }, + { 0xF38680EC, NULL, "vmzero.q E320" }, + { 0xF38680ED, NULL, "vmzero.q E321" }, + { 0xF38680EE, NULL, "vmzero.q E322" }, + { 0xF38680EF, NULL, "vmzero.q E323" }, + { 0xF38680F0, NULL, "vmzero.q E420" }, + { 0xF38680F1, NULL, "vmzero.q E421" }, + { 0xF38680F2, NULL, "vmzero.q E422" }, + { 0xF38680F3, NULL, "vmzero.q E423" }, + { 0xF38680F4, NULL, "vmzero.q E520" }, + { 0xF38680F5, NULL, "vmzero.q E521" }, + { 0xF38680F6, NULL, "vmzero.q E522" }, + { 0xF38680F7, NULL, "vmzero.q E523" }, + { 0xF38680F8, NULL, "vmzero.q E620" }, + { 0xF38680F9, NULL, "vmzero.q E621" }, + { 0xF38680FA, NULL, "vmzero.q E622" }, + { 0xF38680FB, NULL, "vmzero.q E623" }, + { 0xF38680FC, NULL, "vmzero.q E720" }, + { 0xF38680FD, NULL, "vmzero.q E721" }, + { 0xF38680FE, NULL, "vmzero.q E722" }, + { 0xF38680FF, NULL, "vmzero.q E723" }, + + { 0x49000002, NULL, "bvf 0, . + 4 + (2 << 2)" }, + { 0x49050002, NULL, "bvt 1, . + 4 + (2 << 2)" }, + { 0x490A0002, NULL, "bvfl 2, . + 4 + (2 << 2)" }, + { 0x490F0002, NULL, "bvtl 3, . + 4 + (2 << 2)" }, + { 0x49100002, NULL, "bvf 4, . + 4 + (2 << 2)" }, + { 0x49150002, NULL, "bvt 5, . + 4 + (2 << 2)" }, + { 0x491A0002, NULL, "bvfl 6, . + 4 + (2 << 2)" }, + { 0x491F0002, NULL, "bvtl 7, . + 4 + (2 << 2)" }, + + { 0xC8800040, NULL, "lv.s S000, 0x40($a0)" }, + { 0xC8810040, NULL, "lv.s S010, 0x40($a0)" }, + { 0xC8820040, NULL, "lv.s S020, 0x40($a0)" }, + { 0xC8830040, NULL, "lv.s S030, 0x40($a0)" }, + { 0xC8840040, NULL, "lv.s S100, 0x40($a0)" }, + { 0xC8850040, NULL, "lv.s S110, 0x40($a0)" }, + { 0xC8860040, NULL, "lv.s S120, 0x40($a0)" }, + { 0xC8870040, NULL, "lv.s S130, 0x40($a0)" }, + { 0xC8880040, NULL, "lv.s S200, 0x40($a0)" }, + { 0xC8890040, NULL, "lv.s S210, 0x40($a0)" }, + { 0xC88A0040, NULL, "lv.s S220, 0x40($a0)" }, + { 0xC88B0040, NULL, "lv.s S230, 0x40($a0)" }, + { 0xC88C0040, NULL, "lv.s S300, 0x40($a0)" }, + { 0xC88D0040, NULL, "lv.s S310, 0x40($a0)" }, + { 0xC88E0040, NULL, "lv.s S320, 0x40($a0)" }, + { 0xC88F0040, NULL, "lv.s S330, 0x40($a0)" }, + { 0xC8900040, NULL, "lv.s S400, 0x40($a0)" }, + { 0xC8910040, NULL, "lv.s S410, 0x40($a0)" }, + { 0xC8920040, NULL, "lv.s S420, 0x40($a0)" }, + { 0xC8930040, NULL, "lv.s S430, 0x40($a0)" }, + { 0xC8940040, NULL, "lv.s S500, 0x40($a0)" }, + { 0xC8950040, NULL, "lv.s S510, 0x40($a0)" }, + { 0xC8960040, NULL, "lv.s S520, 0x40($a0)" }, + { 0xC8970040, NULL, "lv.s S530, 0x40($a0)" }, + { 0xC8980040, NULL, "lv.s S600, 0x40($a0)" }, + { 0xC8990040, NULL, "lv.s S610, 0x40($a0)" }, + { 0xC89A0040, NULL, "lv.s S620, 0x40($a0)" }, + { 0xC89B0040, NULL, "lv.s S630, 0x40($a0)" }, + { 0xC89C0040, NULL, "lv.s S700, 0x40($a0)" }, + { 0xC89D0040, NULL, "lv.s S710, 0x40($a0)" }, + { 0xC89E0040, NULL, "lv.s S720, 0x40($a0)" }, + { 0xC89F0040, NULL, "lv.s S730, 0x40($a0)" }, + { 0xC8800041, NULL, "lv.s S001, 0x40($a0)" }, + { 0xC8810041, NULL, "lv.s S011, 0x40($a0)" }, + { 0xC8820041, NULL, "lv.s S021, 0x40($a0)" }, + { 0xC8830041, NULL, "lv.s S031, 0x40($a0)" }, + { 0xC8840041, NULL, "lv.s S101, 0x40($a0)" }, + { 0xC8850041, NULL, "lv.s S111, 0x40($a0)" }, + { 0xC8860041, NULL, "lv.s S121, 0x40($a0)" }, + { 0xC8870041, NULL, "lv.s S131, 0x40($a0)" }, + { 0xC8880041, NULL, "lv.s S201, 0x40($a0)" }, + { 0xC8890041, NULL, "lv.s S211, 0x40($a0)" }, + { 0xC88A0041, NULL, "lv.s S221, 0x40($a0)" }, + { 0xC88B0041, NULL, "lv.s S231, 0x40($a0)" }, + { 0xC88C0041, NULL, "lv.s S301, 0x40($a0)" }, + { 0xC88D0041, NULL, "lv.s S311, 0x40($a0)" }, + { 0xC88E0041, NULL, "lv.s S321, 0x40($a0)" }, + { 0xC88F0041, NULL, "lv.s S331, 0x40($a0)" }, + { 0xC8900041, NULL, "lv.s S401, 0x40($a0)" }, + { 0xC8910041, NULL, "lv.s S411, 0x40($a0)" }, + { 0xC8920041, NULL, "lv.s S421, 0x40($a0)" }, + { 0xC8930041, NULL, "lv.s S431, 0x40($a0)" }, + { 0xC8940041, NULL, "lv.s S501, 0x40($a0)" }, + { 0xC8950041, NULL, "lv.s S511, 0x40($a0)" }, + { 0xC8960041, NULL, "lv.s S521, 0x40($a0)" }, + { 0xC8970041, NULL, "lv.s S531, 0x40($a0)" }, + { 0xC8980041, NULL, "lv.s S601, 0x40($a0)" }, + { 0xC8990041, NULL, "lv.s S611, 0x40($a0)" }, + { 0xC89A0041, NULL, "lv.s S621, 0x40($a0)" }, + { 0xC89B0041, NULL, "lv.s S631, 0x40($a0)" }, + { 0xC89C0041, NULL, "lv.s S701, 0x40($a0)" }, + { 0xC89D0041, NULL, "lv.s S711, 0x40($a0)" }, + { 0xC89E0041, NULL, "lv.s S721, 0x40($a0)" }, + { 0xC89F0041, NULL, "lv.s S731, 0x40($a0)" }, + { 0xC8800042, NULL, "lv.s S002, 0x40($a0)" }, + { 0xC8810042, NULL, "lv.s S012, 0x40($a0)" }, + { 0xC8820042, NULL, "lv.s S022, 0x40($a0)" }, + { 0xC8830042, NULL, "lv.s S032, 0x40($a0)" }, + { 0xC8840042, NULL, "lv.s S102, 0x40($a0)" }, + { 0xC8850042, NULL, "lv.s S112, 0x40($a0)" }, + { 0xC8860042, NULL, "lv.s S122, 0x40($a0)" }, + { 0xC8870042, NULL, "lv.s S132, 0x40($a0)" }, + { 0xC8880042, NULL, "lv.s S202, 0x40($a0)" }, + { 0xC8890042, NULL, "lv.s S212, 0x40($a0)" }, + { 0xC88A0042, NULL, "lv.s S222, 0x40($a0)" }, + { 0xC88B0042, NULL, "lv.s S232, 0x40($a0)" }, + { 0xC88C0042, NULL, "lv.s S302, 0x40($a0)" }, + { 0xC88D0042, NULL, "lv.s S312, 0x40($a0)" }, + { 0xC88E0042, NULL, "lv.s S322, 0x40($a0)" }, + { 0xC88F0042, NULL, "lv.s S332, 0x40($a0)" }, + { 0xC8900042, NULL, "lv.s S402, 0x40($a0)" }, + { 0xC8910042, NULL, "lv.s S412, 0x40($a0)" }, + { 0xC8920042, NULL, "lv.s S422, 0x40($a0)" }, + { 0xC8930042, NULL, "lv.s S432, 0x40($a0)" }, + { 0xC8940042, NULL, "lv.s S502, 0x40($a0)" }, + { 0xC8950042, NULL, "lv.s S512, 0x40($a0)" }, + { 0xC8960042, NULL, "lv.s S522, 0x40($a0)" }, + { 0xC8970042, NULL, "lv.s S532, 0x40($a0)" }, + { 0xC8980042, NULL, "lv.s S602, 0x40($a0)" }, + { 0xC8990042, NULL, "lv.s S612, 0x40($a0)" }, + { 0xC89A0042, NULL, "lv.s S622, 0x40($a0)" }, + { 0xC89B0042, NULL, "lv.s S632, 0x40($a0)" }, + { 0xC89C0042, NULL, "lv.s S702, 0x40($a0)" }, + { 0xC89D0042, NULL, "lv.s S712, 0x40($a0)" }, + { 0xC89E0042, NULL, "lv.s S722, 0x40($a0)" }, + { 0xC89F0042, NULL, "lv.s S732, 0x40($a0)" }, + { 0xC8800043, NULL, "lv.s S003, 0x40($a0)" }, + { 0xC8810043, NULL, "lv.s S013, 0x40($a0)" }, + { 0xC8820043, NULL, "lv.s S023, 0x40($a0)" }, + { 0xC8830043, NULL, "lv.s S033, 0x40($a0)" }, + { 0xC8840043, NULL, "lv.s S103, 0x40($a0)" }, + { 0xC8850043, NULL, "lv.s S113, 0x40($a0)" }, + { 0xC8860043, NULL, "lv.s S123, 0x40($a0)" }, + { 0xC8870043, NULL, "lv.s S133, 0x40($a0)" }, + { 0xC8880043, NULL, "lv.s S203, 0x40($a0)" }, + { 0xC8890043, NULL, "lv.s S213, 0x40($a0)" }, + { 0xC88A0043, NULL, "lv.s S223, 0x40($a0)" }, + { 0xC88B0043, NULL, "lv.s S233, 0x40($a0)" }, + { 0xC88C0043, NULL, "lv.s S303, 0x40($a0)" }, + { 0xC88D0043, NULL, "lv.s S313, 0x40($a0)" }, + { 0xC88E0043, NULL, "lv.s S323, 0x40($a0)" }, + { 0xC88F0043, NULL, "lv.s S333, 0x40($a0)" }, + { 0xC8900043, NULL, "lv.s S403, 0x40($a0)" }, + { 0xC8910043, NULL, "lv.s S413, 0x40($a0)" }, + { 0xC8920043, NULL, "lv.s S423, 0x40($a0)" }, + { 0xC8930043, NULL, "lv.s S433, 0x40($a0)" }, + { 0xC8940043, NULL, "lv.s S503, 0x40($a0)" }, + { 0xC8950043, NULL, "lv.s S513, 0x40($a0)" }, + { 0xC8960043, NULL, "lv.s S523, 0x40($a0)" }, + { 0xC8970043, NULL, "lv.s S533, 0x40($a0)" }, + { 0xC8980043, NULL, "lv.s S603, 0x40($a0)" }, + { 0xC8990043, NULL, "lv.s S613, 0x40($a0)" }, + { 0xC89A0043, NULL, "lv.s S623, 0x40($a0)" }, + { 0xC89B0043, NULL, "lv.s S633, 0x40($a0)" }, + { 0xC89C0043, NULL, "lv.s S703, 0x40($a0)" }, + { 0xC89D0043, NULL, "lv.s S713, 0x40($a0)" }, + { 0xC89E0043, NULL, "lv.s S723, 0x40($a0)" }, + { 0xC89F0043, NULL, "lv.s S733, 0x40($a0)" }, + { 0xD8800040, NULL, "lv.q C000, 0x40($a0)" }, + { 0xD8810040, NULL, "lv.q C010, 0x40($a0)" }, + { 0xD8820040, NULL, "lv.q C020, 0x40($a0)" }, + { 0xD8830040, NULL, "lv.q C030, 0x40($a0)" }, + { 0xD8840040, NULL, "lv.q C100, 0x40($a0)" }, + { 0xD8850040, NULL, "lv.q C110, 0x40($a0)" }, + { 0xD8860040, NULL, "lv.q C120, 0x40($a0)" }, + { 0xD8870040, NULL, "lv.q C130, 0x40($a0)" }, + { 0xD8880040, NULL, "lv.q C200, 0x40($a0)" }, + { 0xD8890040, NULL, "lv.q C210, 0x40($a0)" }, + { 0xD88A0040, NULL, "lv.q C220, 0x40($a0)" }, + { 0xD88B0040, NULL, "lv.q C230, 0x40($a0)" }, + { 0xD88C0040, NULL, "lv.q C300, 0x40($a0)" }, + { 0xD88D0040, NULL, "lv.q C310, 0x40($a0)" }, + { 0xD88E0040, NULL, "lv.q C320, 0x40($a0)" }, + { 0xD88F0040, NULL, "lv.q C330, 0x40($a0)" }, + { 0xD8900040, NULL, "lv.q C400, 0x40($a0)" }, + { 0xD8910040, NULL, "lv.q C410, 0x40($a0)" }, + { 0xD8920040, NULL, "lv.q C420, 0x40($a0)" }, + { 0xD8930040, NULL, "lv.q C430, 0x40($a0)" }, + { 0xD8940040, NULL, "lv.q C500, 0x40($a0)" }, + { 0xD8950040, NULL, "lv.q C510, 0x40($a0)" }, + { 0xD8960040, NULL, "lv.q C520, 0x40($a0)" }, + { 0xD8970040, NULL, "lv.q C530, 0x40($a0)" }, + { 0xD8980040, NULL, "lv.q C600, 0x40($a0)" }, + { 0xD8990040, NULL, "lv.q C610, 0x40($a0)" }, + { 0xD89A0040, NULL, "lv.q C620, 0x40($a0)" }, + { 0xD89B0040, NULL, "lv.q C630, 0x40($a0)" }, + { 0xD89C0040, NULL, "lv.q C700, 0x40($a0)" }, + { 0xD89D0040, NULL, "lv.q C710, 0x40($a0)" }, + { 0xD89E0040, NULL, "lv.q C720, 0x40($a0)" }, + { 0xD89F0040, NULL, "lv.q C730, 0x40($a0)" }, + { 0xD8800041, NULL, "lv.q R000, 0x40($a0)" }, + { 0xD8810041, NULL, "lv.q R001, 0x40($a0)" }, + { 0xD8820041, NULL, "lv.q R002, 0x40($a0)" }, + { 0xD8830041, NULL, "lv.q R003, 0x40($a0)" }, + { 0xD8840041, NULL, "lv.q R100, 0x40($a0)" }, + { 0xD8850041, NULL, "lv.q R101, 0x40($a0)" }, + { 0xD8860041, NULL, "lv.q R102, 0x40($a0)" }, + { 0xD8870041, NULL, "lv.q R103, 0x40($a0)" }, + { 0xD8880041, NULL, "lv.q R200, 0x40($a0)" }, + { 0xD8890041, NULL, "lv.q R201, 0x40($a0)" }, + { 0xD88A0041, NULL, "lv.q R202, 0x40($a0)" }, + { 0xD88B0041, NULL, "lv.q R203, 0x40($a0)" }, + { 0xD88C0041, NULL, "lv.q R300, 0x40($a0)" }, + { 0xD88D0041, NULL, "lv.q R301, 0x40($a0)" }, + { 0xD88E0041, NULL, "lv.q R302, 0x40($a0)" }, + { 0xD88F0041, NULL, "lv.q R303, 0x40($a0)" }, + { 0xD8900041, NULL, "lv.q R400, 0x40($a0)" }, + { 0xD8910041, NULL, "lv.q R401, 0x40($a0)" }, + { 0xD8920041, NULL, "lv.q R402, 0x40($a0)" }, + { 0xD8930041, NULL, "lv.q R403, 0x40($a0)" }, + { 0xD8940041, NULL, "lv.q R500, 0x40($a0)" }, + { 0xD8950041, NULL, "lv.q R501, 0x40($a0)" }, + { 0xD8960041, NULL, "lv.q R502, 0x40($a0)" }, + { 0xD8970041, NULL, "lv.q R503, 0x40($a0)" }, + { 0xD8980041, NULL, "lv.q R600, 0x40($a0)" }, + { 0xD8990041, NULL, "lv.q R601, 0x40($a0)" }, + { 0xD89A0041, NULL, "lv.q R602, 0x40($a0)" }, + { 0xD89B0041, NULL, "lv.q R603, 0x40($a0)" }, + { 0xD89C0041, NULL, "lv.q R700, 0x40($a0)" }, + { 0xD89D0041, NULL, "lv.q R701, 0x40($a0)" }, + { 0xD89E0041, NULL, "lv.q R702, 0x40($a0)" }, + { 0xD89F0041, NULL, "lv.q R703, 0x40($a0)" }, + { 0xD8800042, NULL, "lv.q C000, 0x40($a0)" }, + { 0xD8810042, NULL, "lv.q C010, 0x40($a0)" }, + { 0xD8820042, NULL, "lv.q C020, 0x40($a0)" }, + { 0xD8830042, NULL, "lv.q C030, 0x40($a0)" }, + { 0xD8840042, NULL, "lv.q C100, 0x40($a0)" }, + { 0xD8850042, NULL, "lv.q C110, 0x40($a0)" }, + { 0xD8860042, NULL, "lv.q C120, 0x40($a0)" }, + { 0xD8870042, NULL, "lv.q C130, 0x40($a0)" }, + { 0xD8880042, NULL, "lv.q C200, 0x40($a0)" }, + { 0xD8890042, NULL, "lv.q C210, 0x40($a0)" }, + { 0xD88A0042, NULL, "lv.q C220, 0x40($a0)" }, + { 0xD88B0042, NULL, "lv.q C230, 0x40($a0)" }, + { 0xD88C0042, NULL, "lv.q C300, 0x40($a0)" }, + { 0xD88D0042, NULL, "lv.q C310, 0x40($a0)" }, + { 0xD88E0042, NULL, "lv.q C320, 0x40($a0)" }, + { 0xD88F0042, NULL, "lv.q C330, 0x40($a0)" }, + { 0xD8900042, NULL, "lv.q C400, 0x40($a0)" }, + { 0xD8910042, NULL, "lv.q C410, 0x40($a0)" }, + { 0xD8920042, NULL, "lv.q C420, 0x40($a0)" }, + { 0xD8930042, NULL, "lv.q C430, 0x40($a0)" }, + { 0xD8940042, NULL, "lv.q C500, 0x40($a0)" }, + { 0xD8950042, NULL, "lv.q C510, 0x40($a0)" }, + { 0xD8960042, NULL, "lv.q C520, 0x40($a0)" }, + { 0xD8970042, NULL, "lv.q C530, 0x40($a0)" }, + { 0xD8980042, NULL, "lv.q C600, 0x40($a0)" }, + { 0xD8990042, NULL, "lv.q C610, 0x40($a0)" }, + { 0xD89A0042, NULL, "lv.q C620, 0x40($a0)" }, + { 0xD89B0042, NULL, "lv.q C630, 0x40($a0)" }, + { 0xD89C0042, NULL, "lv.q C700, 0x40($a0)" }, + { 0xD89D0042, NULL, "lv.q C710, 0x40($a0)" }, + { 0xD89E0042, NULL, "lv.q C720, 0x40($a0)" }, + { 0xD89F0042, NULL, "lv.q C730, 0x40($a0)" }, + { 0x48640004, NULL, "mfv $a0, S100" }, + { 0x48640004, NULL, "mfv $a0, S100" }, + { 0x48640080, NULL, "mfvc $a0, $128" }, + { 0x48640084, NULL, "mfvc $a0, $132" }, + { 0x48E40004, NULL, "mtv $a0, S100" }, + { 0x48E40084, NULL, "mtvc $a0, $132" }, + { 0xE8800040, NULL, "sv.s S000, 0x40($a0)" }, + { 0xF8800040, NULL, "sv.q C000, 0x40($a0)" }, + { 0xF8800042, NULL, "sv.q C000, 0x40($a0), wb" }, + { 0xF4800040, NULL, "svl.q C000, 0x40($a0)" }, + { 0xF4800042, NULL, "svr.q C000, 0x40($a0)" }, + + // According to the manual, bit 1 should be zero. The compiler handles it fine, but objdump ignores this bit, do idk + { 0xD8800043, NULL, NULL }, + { 0xD8810043, NULL, NULL }, + { 0xD8820043, NULL, NULL }, + { 0xD8830043, NULL, NULL }, + { 0xD8840043, NULL, NULL }, + { 0xD8850043, NULL, NULL }, + { 0xD8860043, NULL, NULL }, + { 0xD8870043, NULL, NULL }, + { 0xD8880043, NULL, NULL }, + { 0xD8890043, NULL, NULL }, + { 0xD88A0043, NULL, NULL }, + { 0xD88B0043, NULL, NULL }, + { 0xD88C0043, NULL, NULL }, + { 0xD88D0043, NULL, NULL }, + { 0xD88E0043, NULL, NULL }, + { 0xD88F0043, NULL, NULL }, + { 0xD8900043, NULL, NULL }, + { 0xD8910043, NULL, NULL }, + { 0xD8920043, NULL, NULL }, + { 0xD8930043, NULL, NULL }, + { 0xD8940043, NULL, NULL }, + { 0xD8950043, NULL, NULL }, + { 0xD8960043, NULL, NULL }, + { 0xD8970043, NULL, NULL }, + { 0xD8980043, NULL, NULL }, + { 0xD8990043, NULL, NULL }, + { 0xD89A0043, NULL, NULL }, + { 0xD89B0043, NULL, NULL }, + { 0xD89C0043, NULL, NULL }, + { 0xD89D0043, NULL, NULL }, + { 0xD89E0043, NULL, NULL }, + { 0xD89F0043, NULL, NULL }, +}; + +int main() { + int errorCount = 0; + size_t i; + + for (i = 0; i < ARRAY_COUNT(entries); i++) { + const TestEntry *entry = &entries[i]; + RabbitizerInstruction instr; + char *buffer; + size_t bufferSize; + size_t immOverrideLength = strlen_null(entry->immOverride); + + RabbitizerInstructionR4000Allegrex_init(&instr, entry->word, 0); + RabbitizerInstructionR4000Allegrex_processUniqueId(&instr); + + bufferSize = RabbitizerInstruction_getSizeForBuffer(&instr, immOverrideLength, 0); + buffer = malloc(bufferSize + 1); + assert(buffer != NULL); + + RabbitizerInstruction_disassemble(&instr, buffer, entry->immOverride, immOverrideLength, 0); + + if (entry->expectedStr == NULL) { + fprintf(stderr, "Word '0x%08X' doesn't have a expected str, got '%s'\n", entry->word, buffer); + fprintf(stderr, " InstrIdType: '%s'\n", RabInstrIdType_getName(instr.instrIdType)); + errorCount++; + } else if (strcmp(buffer, entry->expectedStr) != 0) { + fprintf(stderr, "Error on word '0x%08X'. Expected '%s', got '%s'\n", entry->word, entry->expectedStr, buffer); + fprintf(stderr, " InstrIdType: '%s'\n", RabInstrIdType_getName(instr.instrIdType)); + errorCount++; + } + + free(buffer); + RabbitizerInstructionR4000Allegrex_destroy(&instr); + } + + fprintf(stderr, "%i errors out of %zu entries\n", errorCount, ARRAY_COUNT(entries)); + + return errorCount; +} diff --git a/tests/run_instruction_checks.sh b/tests/run_instruction_checks.sh index e7449123..443c4e97 100755 --- a/tests/run_instruction_checks.sh +++ b/tests/run_instruction_checks.sh @@ -10,4 +10,5 @@ set -e ./build/tests/c/instruction_checks/r3000gte_disasm.elf ./build/tests/c/instruction_checks/r5900_trunc_cvt.elf ./build/tests/c/instruction_checks/r4000allegrex_disasm.elf +./build/tests/c/instruction_checks/r4000allegrex_vfpu_disasm.elf ./build/tests/c/instruction_checks/r5900_vcallms.elf