diff --git a/core/rexcode/mips/mnemonic_builders.odin b/core/rexcode/mips/mnemonic_builders.odin index 905206fbe..1614dffa0 100644 --- a/core/rexcode/mips/mnemonic_builders.odin +++ b/core/rexcode/mips/mnemonic_builders.odin @@ -1216,8 +1216,12 @@ inst_absq_s_ph_r_r :: #force_inline proc "contextless" (dst: GPR, src: G emit_absq_s_ph_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR) { append(instructions, inst_absq_s_ph_r_r(dst, src)) } inst_absq_s_w_r_r :: #force_inline proc "contextless" (dst: GPR, src: GPR) -> Instruction { return Instruction{mnemonic = .ABSQ_S_W, operand_count = 2, length = 4, ops = {op_gpr(dst), op_gpr(src), {}, {}}} } emit_absq_s_w_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR) { append(instructions, inst_absq_s_w_r_r(dst, src)) } +inst_repl_ph_r_i5 :: #force_inline proc "contextless" (dst: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .REPL_PH, operand_count = 2, length = 4, ops = {op_gpr(dst), op_imm(imm, 1), {}, {}}} } +emit_repl_ph_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, imm: i64) { append(instructions, inst_repl_ph_r_i5(dst, imm)) } inst_replv_ph_r_r :: #force_inline proc "contextless" (dst: GPR, src: GPR) -> Instruction { return Instruction{mnemonic = .REPLV_PH, operand_count = 2, length = 4, ops = {op_gpr(dst), op_gpr(src), {}, {}}} } emit_replv_ph_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR) { append(instructions, inst_replv_ph_r_r(dst, src)) } +inst_repl_qb_r_i5 :: #force_inline proc "contextless" (dst: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .REPL_QB, operand_count = 2, length = 4, ops = {op_gpr(dst), op_imm(imm, 1), {}, {}}} } +emit_repl_qb_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, imm: i64) { append(instructions, inst_repl_qb_r_i5(dst, imm)) } inst_replv_qb_r_r :: #force_inline proc "contextless" (dst: GPR, src: GPR) -> Instruction { return Instruction{mnemonic = .REPLV_QB, operand_count = 2, length = 4, ops = {op_gpr(dst), op_gpr(src), {}, {}}} } emit_replv_qb_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR) { append(instructions, inst_replv_qb_r_r(dst, src)) } inst_addv_b_w_w_w :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .ADDV_B, operand_count = 3, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } @@ -3193,8 +3197,12 @@ inst_absq_s_ph :: inst_absq_s_ph_r_r emit_absq_s_ph :: emit_absq_s_ph_r_r inst_absq_s_w :: inst_absq_s_w_r_r emit_absq_s_w :: emit_absq_s_w_r_r +inst_repl_ph :: inst_repl_ph_r_i5 +emit_repl_ph :: emit_repl_ph_r_i5 inst_replv_ph :: inst_replv_ph_r_r emit_replv_ph :: emit_replv_ph_r_r +inst_repl_qb :: inst_repl_qb_r_i5 +emit_repl_qb :: emit_repl_qb_r_i5 inst_replv_qb :: inst_replv_qb_r_r emit_replv_qb :: emit_replv_qb_r_r inst_addv_b :: inst_addv_b_w_w_w diff --git a/core/rexcode/mips/tablegen/encoding_table.odin b/core/rexcode/mips/tablegen/encoding_table.odin index 4984b5312..92560db1d 100644 --- a/core/rexcode/mips/tablegen/encoding_table.odin +++ b/core/rexcode/mips/tablegen/encoding_table.odin @@ -1640,6 +1640,8 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ .MTHLIP = { {.MTHLIP, {.GPR,.IMM5,.NONE,.NONE}, {.RS,.AC_NUM,.NONE,.NONE}, 0x7C0007F8, 0xFC1FE7FF, .DSP_R2, {}} }, .SHILOV = { {.SHILOV, {.IMM5,.GPR,.NONE,.NONE}, {.AC_NUM,.RS,.NONE,.NONE}, 0x7C0006F8, 0xFC1FE7FF, .DSP_R2, {}} }, .SHILO = { {.SHILO, {.IMM5,.IMM5,.NONE,.NONE}, {.AC_NUM,.SHILO_IMM,.NONE,.NONE}, 0x7C0006B8, 0xFC0FE7FF, .DSP_R2, {}} }, + .REPL_PH = { {.REPL_PH, {.GPR,.IMM5,.NONE,.NONE}, {.RD,.MSA_S10,.NONE,.NONE}, 0x7C000292, 0xFC0007FF, .DSP_R1, {}} }, + .REPL_QB = { {.REPL_QB, {.GPR,.IMM5,.NONE,.NONE}, {.RD,.MSA_I8,.NONE,.NONE}, 0x7C000092, 0xFF0007FF, .DSP_R1, {}} }, .EXTPDP = { {.EXTPDP, {.GPR,.IMM5,.IMM5,.NONE}, {.RT,.AC_NUM,.EXT_SIZE,.NONE}, 0x7C0002B8, 0xFC00E7FF, .DSP_R2, {}} }, .EXTPDPV = { {.EXTPDPV, {.GPR,.IMM5,.GPR,.NONE}, {.RT,.AC_NUM,.RS,.NONE}, 0x7C0002F8, 0xFC00E7FF, .DSP_R2, {}} }, .EXTRV_R_W = { {.EXTRV_R_W, {.GPR,.IMM5,.GPR,.NONE}, {.RT,.AC_NUM,.RS,.NONE}, 0x7C000178, 0xFC00E7FF, .DSP_R2, {}} }, diff --git a/core/rexcode/mips/tablegen/generated/decode_tables.odin b/core/rexcode/mips/tablegen/generated/decode_tables.odin index e2a9e6b65..bb9809c9c 100644 --- a/core/rexcode/mips/tablegen/generated/decode_tables.odin +++ b/core/rexcode/mips/tablegen/generated/decode_tables.odin @@ -8,7 +8,7 @@ package rexcode_mips_generated import lib "../.." @(rodata) -DECODE_ENTRIES := [986]lib.Decode_Entry{ +DECODE_ENTRIES := [988]lib.Decode_Entry{ { .NOP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x00000000, 0xFFFFFFFF, .MIPS_I, {} }, { .SSNOP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x00000040, 0xFFFFFFFF, .MIPS32_R1, {} }, { .EHB, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x000000C0, 0xFFFFFFFF, .MIPS32_R2, {} }, @@ -784,6 +784,8 @@ DECODE_ENTRIES := [986]lib.Decode_Entry{ { .ABSQ_S_W, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RT,.NONE,.NONE}, 0x7C000452, 0xFFE007FF, .DSP_R1, {} }, { .REPLV_PH, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RT,.NONE,.NONE}, 0x7C0002D2, 0xFFE007FF, .DSP_R2, {} }, { .REPLV_QB, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RT,.NONE,.NONE}, 0x7C0000D2, 0xFFE007FF, .DSP_R2, {} }, + { .REPL_QB, {.GPR,.IMM5,.NONE,.NONE}, {.RD,.MSA_I8,.NONE,.NONE}, 0x7C000092, 0xFF0007FF, .DSP_R1, {} }, + { .REPL_PH, {.GPR,.IMM5,.NONE,.NONE}, {.RD,.MSA_S10,.NONE,.NONE}, 0x7C000292, 0xFC0007FF, .DSP_R1, {} }, { .SHLL_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000013, 0xFFE0073F, .DSP_R1, {} }, { .SHLL_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000213, 0xFFE0073F, .DSP_R1, {} }, { .SHLL_S_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000313, 0xFFE0073F, .DSP_R1, {} }, @@ -1030,39 +1032,39 @@ DECODE_INDEX_PRIMARY := [64]lib.Decode_Index{ 0x1C = { 364, 109}, 0x1D = { 473, 1}, 0x1E = { 474, 228}, - 0x1F = { 702, 139}, - 0x20 = { 841, 1}, - 0x21 = { 842, 1}, - 0x22 = { 843, 1}, - 0x23 = { 844, 1}, - 0x24 = { 845, 1}, - 0x25 = { 846, 1}, - 0x26 = { 847, 1}, - 0x27 = { 848, 1}, - 0x28 = { 849, 1}, - 0x29 = { 850, 1}, - 0x2A = { 851, 1}, - 0x2B = { 852, 1}, - 0x2C = { 853, 1}, - 0x2D = { 854, 1}, - 0x2E = { 855, 1}, - 0x2F = { 856, 1}, - 0x30 = { 857, 1}, - 0x31 = { 858, 1}, - 0x32 = { 859, 3}, - 0x33 = { 862, 1}, - 0x34 = { 863, 63}, - 0x35 = { 926, 3}, - 0x36 = { 929, 5}, - 0x37 = { 934, 6}, - 0x38 = { 940, 1}, - 0x39 = { 941, 1}, - 0x3A = { 942, 3}, - 0x3B = { 945, 2}, - 0x3C = { 947, 27}, - 0x3D = { 974, 3}, - 0x3E = { 977, 5}, - 0x3F = { 982, 4}, + 0x1F = { 702, 141}, + 0x20 = { 843, 1}, + 0x21 = { 844, 1}, + 0x22 = { 845, 1}, + 0x23 = { 846, 1}, + 0x24 = { 847, 1}, + 0x25 = { 848, 1}, + 0x26 = { 849, 1}, + 0x27 = { 850, 1}, + 0x28 = { 851, 1}, + 0x29 = { 852, 1}, + 0x2A = { 853, 1}, + 0x2B = { 854, 1}, + 0x2C = { 855, 1}, + 0x2D = { 856, 1}, + 0x2E = { 857, 1}, + 0x2F = { 858, 1}, + 0x30 = { 859, 1}, + 0x31 = { 860, 1}, + 0x32 = { 861, 3}, + 0x33 = { 864, 1}, + 0x34 = { 865, 63}, + 0x35 = { 928, 3}, + 0x36 = { 931, 5}, + 0x37 = { 936, 6}, + 0x38 = { 942, 1}, + 0x39 = { 943, 1}, + 0x3A = { 944, 3}, + 0x3B = { 947, 2}, + 0x3C = { 949, 27}, + 0x3D = { 976, 3}, + 0x3E = { 979, 5}, + 0x3F = { 984, 4}, } @(rodata) @@ -1232,12 +1234,12 @@ DECODE_INDEX_SPECIAL3 := [64]lib.Decode_Index{ 0x0F = { 715, 8}, 0x10 = { 723, 22}, 0x11 = { 745, 15}, - 0x12 = { 760, 15}, - 0x13 = { 775, 22}, - 0x20 = { 797, 5}, - 0x24 = { 802, 4}, - 0x30 = { 806, 17}, - 0x38 = { 823, 17}, - 0x3B = { 840, 1}, + 0x12 = { 760, 17}, + 0x13 = { 777, 22}, + 0x20 = { 799, 5}, + 0x24 = { 804, 4}, + 0x30 = { 808, 17}, + 0x38 = { 825, 17}, + 0x3B = { 842, 1}, } diff --git a/core/rexcode/mips/tablegen/generated/encode_tables.odin b/core/rexcode/mips/tablegen/generated/encode_tables.odin index 2b6710ff3..6362d96bf 100644 --- a/core/rexcode/mips/tablegen/generated/encode_tables.odin +++ b/core/rexcode/mips/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_mips_generated import lib "../.." @(rodata) -ENCODE_FORMS := [986]lib.Encoding{ +ENCODE_FORMS := [988]lib.Encoding{ // .ADD { .ADD, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RS,.RT,.NONE}, 0x00000020, 0xFC0007FF, .MIPS_I, {} }, // .ADDU @@ -1197,8 +1197,12 @@ ENCODE_FORMS := [986]lib.Encoding{ { .ABSQ_S_PH, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RT,.NONE,.NONE}, 0x7C000252, 0xFFE007FF, .DSP_R1, {} }, // .ABSQ_S_W { .ABSQ_S_W, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RT,.NONE,.NONE}, 0x7C000452, 0xFFE007FF, .DSP_R1, {} }, + // .REPL_PH + { .REPL_PH, {.GPR,.IMM5,.NONE,.NONE}, {.RD,.MSA_S10,.NONE,.NONE}, 0x7C000292, 0xFC0007FF, .DSP_R1, {} }, // .REPLV_PH { .REPLV_PH, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RT,.NONE,.NONE}, 0x7C0002D2, 0xFFE007FF, .DSP_R2, {} }, + // .REPL_QB + { .REPL_QB, {.GPR,.IMM5,.NONE,.NONE}, {.RD,.MSA_I8,.NONE,.NONE}, 0x7C000092, 0xFF0007FF, .DSP_R1, {} }, // .REPLV_QB { .REPLV_QB, {.GPR,.GPR,.NONE,.NONE}, {.RD,.RT,.NONE,.NONE}, 0x7C0000D2, 0xFFE007FF, .DSP_R2, {} }, // .ADDV_B @@ -2617,400 +2621,400 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .BITREV = { 591, 1}, .ABSQ_S_PH = { 592, 1}, .ABSQ_S_W = { 593, 1}, - .REPL_PH = { 594, 0}, - .REPLV_PH = { 594, 1}, - .REPL_QB = { 595, 0}, - .REPLV_QB = { 595, 1}, - .ADDV_B = { 596, 1}, - .ADDV_H = { 597, 1}, - .ADDV_W = { 598, 1}, - .ADDV_D = { 599, 1}, - .SUBV_B = { 600, 1}, - .SUBV_H = { 601, 1}, - .SUBV_W = { 602, 1}, - .SUBV_D = { 603, 1}, - .ADDS_S_B = { 604, 1}, - .ADDS_S_H = { 605, 1}, - .ADDS_S_W = { 606, 1}, - .ADDS_S_D = { 607, 1}, - .ADDS_U_B = { 608, 1}, - .ADDS_U_H = { 609, 1}, - .ADDS_U_W = { 610, 1}, - .ADDS_U_D = { 611, 1}, - .SUBS_S_B = { 612, 1}, - .SUBS_S_H = { 613, 1}, - .SUBS_S_W = { 614, 1}, - .SUBS_S_D = { 615, 1}, - .SUBS_U_B = { 616, 1}, - .SUBS_U_H = { 617, 1}, - .SUBS_U_W = { 618, 1}, - .SUBS_U_D = { 619, 1}, - .MULV_B = { 620, 1}, - .MULV_H = { 621, 1}, - .MULV_W = { 622, 1}, - .MULV_D = { 623, 1}, - .DIV_S_B = { 624, 1}, - .DIV_S_H = { 625, 1}, - .DIV_S_W = { 626, 1}, - .DIV_S_D = { 627, 1}, - .DIV_U_B = { 628, 1}, - .DIV_U_H = { 629, 1}, - .DIV_U_W = { 630, 1}, - .DIV_U_D = { 631, 1}, - .MOD_S_B = { 632, 1}, - .MOD_S_H = { 633, 1}, - .MOD_S_W = { 634, 1}, - .MOD_S_D = { 635, 1}, - .MOD_U_B = { 636, 1}, - .MOD_U_H = { 637, 1}, - .MOD_U_W = { 638, 1}, - .MOD_U_D = { 639, 1}, - .MADDV_B = { 640, 1}, - .MADDV_H = { 641, 1}, - .MADDV_W = { 642, 1}, - .MADDV_D = { 643, 1}, - .MSUBV_B = { 644, 1}, - .MSUBV_H = { 645, 1}, - .MSUBV_W = { 646, 1}, - .MSUBV_D = { 647, 1}, - .DOTP_S_H = { 648, 1}, - .DOTP_S_W = { 649, 1}, - .DOTP_S_D = { 650, 1}, - .DOTP_U_H = { 651, 1}, - .DOTP_U_W = { 652, 1}, - .DOTP_U_D = { 653, 1}, - .AND_V = { 654, 1}, - .OR_V = { 655, 1}, - .NOR_V = { 656, 1}, - .XOR_V = { 657, 1}, - .ANDI_B = { 658, 1}, - .ORI_B = { 659, 1}, - .NORI_B = { 660, 1}, - .XORI_B = { 661, 1}, - .BSEL_V = { 662, 1}, - .BSELI_B = { 663, 1}, - .BMNZ_V = { 664, 1}, - .BMNZI_B = { 665, 1}, - .BMZ_V = { 666, 1}, - .BMZI_B = { 667, 1}, - .CEQ_B = { 668, 1}, - .CEQ_H = { 669, 1}, - .CEQ_W = { 670, 1}, - .CEQ_D = { 671, 1}, - .CLT_S_B = { 672, 1}, - .CLT_S_H = { 673, 1}, - .CLT_S_W = { 674, 1}, - .CLT_S_D = { 675, 1}, - .CLT_U_B = { 676, 1}, - .CLT_U_H = { 677, 1}, - .CLT_U_W = { 678, 1}, - .CLT_U_D = { 679, 1}, - .CLE_S_B = { 680, 1}, - .CLE_S_H = { 681, 1}, - .CLE_S_W = { 682, 1}, - .CLE_S_D = { 683, 1}, - .CLE_U_B = { 684, 1}, - .CLE_U_H = { 685, 1}, - .CLE_U_W = { 686, 1}, - .CLE_U_D = { 687, 1}, - .MIN_S_B = { 688, 1}, - .MIN_S_H = { 689, 1}, - .MIN_S_W = { 690, 1}, - .MIN_S_D = { 691, 1}, - .MIN_U_B = { 692, 1}, - .MIN_U_H = { 693, 1}, - .MIN_U_W = { 694, 1}, - .MIN_U_D = { 695, 1}, - .MAX_S_B = { 696, 1}, - .MAX_S_H = { 697, 1}, - .MAX_S_W = { 698, 1}, - .MAX_S_D = { 699, 1}, - .MAX_U_B = { 700, 1}, - .MAX_U_H = { 701, 1}, - .MAX_U_W = { 702, 1}, - .MAX_U_D = { 703, 1}, - .SLL_B = { 704, 1}, - .SLL_H = { 705, 1}, - .SLL_W = { 706, 1}, - .SLL_D = { 707, 1}, - .SRL_B = { 708, 1}, - .SRL_H = { 709, 1}, - .SRL_W = { 710, 1}, - .SRL_D = { 711, 1}, - .SRA_B = { 712, 1}, - .SRA_H = { 713, 1}, - .SRA_W = { 714, 1}, - .SRA_D = { 715, 1}, - .SLLI_B = { 716, 1}, - .SLLI_H = { 717, 1}, - .SLLI_W = { 718, 1}, - .SLLI_D = { 719, 1}, - .SRLI_B = { 720, 1}, - .SRLI_H = { 721, 1}, - .SRLI_W = { 722, 1}, - .SRLI_D = { 723, 1}, - .SRAI_B = { 724, 1}, - .SRAI_H = { 725, 1}, - .SRAI_W = { 726, 1}, - .SRAI_D = { 727, 1}, - .FADD_W = { 728, 1}, - .FADD_D = { 729, 1}, - .FSUB_W = { 730, 1}, - .FSUB_D = { 731, 1}, - .FMUL_W = { 732, 1}, - .FMUL_D = { 733, 1}, - .FDIV_W = { 734, 1}, - .FDIV_D = { 735, 1}, - .FSQRT_W = { 736, 1}, - .FSQRT_D = { 737, 1}, - .FRSQRT_W = { 738, 1}, - .FRSQRT_D = { 739, 1}, - .FRCP_W = { 740, 1}, - .FRCP_D = { 741, 1}, - .FRINT_W = { 742, 1}, - .FRINT_D = { 743, 1}, - .FMAX_W = { 744, 1}, - .FMAX_D = { 745, 1}, - .FMIN_W = { 746, 1}, - .FMIN_D = { 747, 1}, - .FCEQ_W = { 748, 1}, - .FCEQ_D = { 749, 1}, - .FCNE_W = { 750, 1}, - .FCNE_D = { 751, 1}, - .FCLT_W = { 752, 1}, - .FCLT_D = { 753, 1}, - .FCLE_W = { 754, 1}, - .FCLE_D = { 755, 1}, - .FFINT_S_W = { 756, 1}, - .FFINT_S_D = { 757, 1}, - .FFINT_U_W = { 758, 1}, - .FFINT_U_D = { 759, 1}, - .FTRUNC_S_W = { 760, 1}, - .FTRUNC_S_D = { 761, 1}, - .FTRUNC_U_W = { 762, 1}, - .FTRUNC_U_D = { 763, 1}, - .FCVT_S_W = { 764, 1}, - .FCVT_S_D = { 765, 1}, - .FCVT_D_W = { 766, 1}, - .LD_B = { 767, 1}, - .LD_H = { 768, 1}, - .LD_W = { 769, 1}, - .LD_D = { 770, 1}, - .ST_B = { 771, 1}, - .ST_H = { 772, 1}, - .ST_W = { 773, 1}, - .ST_D = { 774, 1}, - .LDI_B = { 775, 1}, - .LDI_H = { 776, 1}, - .LDI_W = { 777, 1}, - .LDI_D = { 778, 1}, - .COPY_S_B = { 779, 1}, - .COPY_S_H = { 780, 1}, - .COPY_S_W = { 781, 1}, - .COPY_U_B = { 782, 1}, - .COPY_U_H = { 783, 1}, - .COPY_U_W = { 784, 0}, - .INSERT_B = { 784, 1}, - .INSERT_H = { 785, 1}, - .INSERT_W = { 786, 1}, - .INSERT_D = { 787, 0}, - .INSVE_B = { 787, 1}, - .INSVE_H = { 788, 1}, - .INSVE_W = { 789, 1}, - .INSVE_D = { 790, 1}, - .SHF_B = { 791, 1}, - .SHF_H = { 792, 1}, - .SHF_W = { 793, 1}, - .VSHF_B = { 794, 1}, - .VSHF_H = { 795, 1}, - .VSHF_W = { 796, 1}, - .VSHF_D = { 797, 1}, - .SLD_B = { 798, 1}, - .SLD_H = { 799, 1}, - .SLD_W = { 800, 1}, - .SLD_D = { 801, 1}, - .SLDI_B = { 802, 1}, - .SLDI_H = { 803, 1}, - .SLDI_W = { 804, 1}, - .SLDI_D = { 805, 1}, - .SPLAT_B = { 806, 1}, - .SPLAT_H = { 807, 1}, - .SPLAT_W = { 808, 1}, - .SPLAT_D = { 809, 1}, - .SPLATI_B = { 810, 1}, - .SPLATI_H = { 811, 1}, - .SPLATI_W = { 812, 1}, - .SPLATI_D = { 813, 1}, - .BZ_V = { 814, 1}, - .BNZ_V = { 815, 1}, - .BZ_B = { 816, 1}, - .BZ_H = { 817, 1}, - .BZ_W = { 818, 1}, - .BZ_D = { 819, 1}, - .BNZ_B = { 820, 1}, - .BNZ_H = { 821, 1}, - .BNZ_W = { 822, 1}, - .BNZ_D = { 823, 1}, - .NLOC_B = { 824, 1}, - .NLOC_H = { 825, 1}, - .NLOC_W = { 826, 1}, - .NLOC_D = { 827, 1}, - .NLZC_B = { 828, 1}, - .NLZC_H = { 829, 1}, - .NLZC_W = { 830, 1}, - .NLZC_D = { 831, 1}, - .PCNT_B = { 832, 1}, - .PCNT_H = { 833, 1}, - .PCNT_W = { 834, 1}, - .PCNT_D = { 835, 1}, - .VMOV_S = { 836, 1}, - .VMOV_P = { 837, 1}, - .VMOV_T = { 838, 1}, - .VMOV_Q = { 839, 1}, - .LV_S = { 840, 1}, - .LV_Q = { 841, 1}, - .SV_S = { 842, 1}, - .SV_Q = { 843, 1}, - .LVL_Q = { 844, 1}, - .LVR_Q = { 845, 1}, - .SVL_Q = { 846, 1}, - .SVR_Q = { 847, 1}, - .VIIM_S = { 848, 1}, - .VFIM_S = { 849, 1}, - .VADD_S = { 850, 1}, - .VADD_P = { 851, 1}, - .VADD_T = { 852, 1}, - .VADD_Q = { 853, 1}, - .VSUB_S = { 854, 1}, - .VSUB_P = { 855, 1}, - .VSUB_T = { 856, 1}, - .VSUB_Q = { 857, 1}, - .VMUL_S = { 858, 1}, - .VMUL_P = { 859, 1}, - .VMUL_T = { 860, 1}, - .VMUL_Q = { 861, 1}, - .VDIV_S = { 862, 1}, - .VDIV_P = { 863, 1}, - .VDIV_T = { 864, 1}, - .VDIV_Q = { 865, 1}, - .VABS_S = { 866, 1}, - .VABS_P = { 867, 1}, - .VABS_T = { 868, 1}, - .VABS_Q = { 869, 1}, - .VNEG_S = { 870, 1}, - .VNEG_P = { 871, 1}, - .VNEG_T = { 872, 1}, - .VNEG_Q = { 873, 1}, - .VSQRT_S = { 874, 1}, - .VRCP_S = { 875, 1}, - .VRCP_P = { 876, 1}, - .VRCP_T = { 877, 1}, - .VRCP_Q = { 878, 1}, - .VRSQ_S = { 879, 1}, - .VRSQ_P = { 880, 1}, - .VRSQ_T = { 881, 1}, - .VRSQ_Q = { 882, 1}, - .VDOT_P = { 883, 1}, - .VDOT_T = { 884, 1}, - .VDOT_Q = { 885, 1}, - .VSCL_P = { 886, 1}, - .VSCL_T = { 887, 1}, - .VSCL_Q = { 888, 1}, - .VHDP_P = { 889, 1}, - .VHDP_T = { 890, 1}, - .VHDP_Q = { 891, 1}, - .VAVG_P = { 892, 1}, - .VAVG_T = { 893, 1}, - .VAVG_Q = { 894, 1}, - .VFAD_P = { 895, 1}, - .VFAD_T = { 896, 1}, - .VFAD_Q = { 897, 1}, - .VMMUL_P = { 898, 1}, - .VMMUL_T = { 899, 1}, - .VMMUL_Q = { 900, 1}, - .VTFM2_P = { 901, 1}, - .VTFM3_T = { 902, 1}, - .VTFM4_Q = { 903, 1}, - .VHTFM2_P = { 904, 1}, - .VHTFM3_T = { 905, 1}, - .VHTFM4_Q = { 906, 1}, - .VMSCL_P = { 907, 1}, - .VMSCL_T = { 908, 1}, - .VMSCL_Q = { 909, 1}, - .VMMOV_P = { 910, 1}, - .VMMOV_T = { 911, 1}, - .VMMOV_Q = { 912, 1}, - .VMIDT_P = { 913, 1}, - .VMIDT_T = { 914, 1}, - .VMIDT_Q = { 915, 1}, - .VMZERO_P = { 916, 1}, - .VMZERO_T = { 917, 1}, - .VMZERO_Q = { 918, 1}, - .VMONE_P = { 919, 1}, - .VMONE_T = { 920, 1}, - .VMONE_Q = { 921, 1}, - .VCRS_T = { 922, 1}, - .VCRSP_T = { 923, 1}, - .VQMUL_Q = { 924, 1}, - .VCMP_S = { 925, 1}, - .VCMP_P = { 926, 1}, - .VCMP_T = { 927, 1}, - .VCMP_Q = { 928, 1}, - .VMIN_S = { 929, 1}, - .VMIN_P = { 930, 1}, - .VMIN_T = { 931, 1}, - .VMIN_Q = { 932, 1}, - .VMAX_S = { 933, 1}, - .VMAX_P = { 934, 1}, - .VMAX_T = { 935, 1}, - .VMAX_Q = { 936, 1}, - .VSIN_S = { 937, 1}, - .VCOS_S = { 938, 1}, - .VEXP2_S = { 939, 1}, - .VLOG2_S = { 940, 1}, - .VASIN_S = { 941, 1}, - .VNRCP_S = { 942, 1}, - .VNSIN_S = { 943, 1}, - .VREXP2_S = { 944, 1}, - .VSGN_S = { 945, 1}, - .VI2F_S = { 946, 1}, - .VI2F_P = { 947, 1}, - .VI2F_T = { 948, 1}, - .VI2F_Q = { 949, 1}, - .VF2IN_S = { 950, 1}, - .VF2IN_P = { 951, 1}, - .VF2IN_T = { 952, 1}, - .VF2IN_Q = { 953, 1}, - .VF2IZ_S = { 954, 1}, - .VF2IZ_P = { 955, 1}, - .VF2IZ_T = { 956, 1}, - .VF2IZ_Q = { 957, 1}, - .VF2IU_S = { 958, 1}, - .VF2IU_P = { 959, 1}, - .VF2IU_T = { 960, 1}, - .VF2IU_Q = { 961, 1}, - .VF2ID_S = { 962, 1}, - .VF2ID_P = { 963, 1}, - .VF2ID_T = { 964, 1}, - .VF2ID_Q = { 965, 1}, - .VF2H_P = { 966, 1}, - .VH2F_S = { 967, 1}, - .VFLUSH = { 968, 1}, - .VSYNC = { 969, 1}, - .VNOP = { 970, 1}, - .VPFXS = { 971, 1}, - .VPFXT = { 972, 1}, - .VPFXD = { 973, 1}, - .VCST_S = { 974, 1}, - .VCST_P = { 975, 1}, - .VCST_T = { 976, 1}, - .VCST_Q = { 977, 1}, - .MFV = { 978, 1}, - .MTV = { 979, 1}, - .MFVC = { 980, 1}, - .MTVC = { 981, 1}, - .BVF = { 982, 1}, - .BVT = { 983, 1}, - .BVFL = { 984, 1}, - .BVTL = { 985, 1}, + .REPL_PH = { 594, 1}, + .REPLV_PH = { 595, 1}, + .REPL_QB = { 596, 1}, + .REPLV_QB = { 597, 1}, + .ADDV_B = { 598, 1}, + .ADDV_H = { 599, 1}, + .ADDV_W = { 600, 1}, + .ADDV_D = { 601, 1}, + .SUBV_B = { 602, 1}, + .SUBV_H = { 603, 1}, + .SUBV_W = { 604, 1}, + .SUBV_D = { 605, 1}, + .ADDS_S_B = { 606, 1}, + .ADDS_S_H = { 607, 1}, + .ADDS_S_W = { 608, 1}, + .ADDS_S_D = { 609, 1}, + .ADDS_U_B = { 610, 1}, + .ADDS_U_H = { 611, 1}, + .ADDS_U_W = { 612, 1}, + .ADDS_U_D = { 613, 1}, + .SUBS_S_B = { 614, 1}, + .SUBS_S_H = { 615, 1}, + .SUBS_S_W = { 616, 1}, + .SUBS_S_D = { 617, 1}, + .SUBS_U_B = { 618, 1}, + .SUBS_U_H = { 619, 1}, + .SUBS_U_W = { 620, 1}, + .SUBS_U_D = { 621, 1}, + .MULV_B = { 622, 1}, + .MULV_H = { 623, 1}, + .MULV_W = { 624, 1}, + .MULV_D = { 625, 1}, + .DIV_S_B = { 626, 1}, + .DIV_S_H = { 627, 1}, + .DIV_S_W = { 628, 1}, + .DIV_S_D = { 629, 1}, + .DIV_U_B = { 630, 1}, + .DIV_U_H = { 631, 1}, + .DIV_U_W = { 632, 1}, + .DIV_U_D = { 633, 1}, + .MOD_S_B = { 634, 1}, + .MOD_S_H = { 635, 1}, + .MOD_S_W = { 636, 1}, + .MOD_S_D = { 637, 1}, + .MOD_U_B = { 638, 1}, + .MOD_U_H = { 639, 1}, + .MOD_U_W = { 640, 1}, + .MOD_U_D = { 641, 1}, + .MADDV_B = { 642, 1}, + .MADDV_H = { 643, 1}, + .MADDV_W = { 644, 1}, + .MADDV_D = { 645, 1}, + .MSUBV_B = { 646, 1}, + .MSUBV_H = { 647, 1}, + .MSUBV_W = { 648, 1}, + .MSUBV_D = { 649, 1}, + .DOTP_S_H = { 650, 1}, + .DOTP_S_W = { 651, 1}, + .DOTP_S_D = { 652, 1}, + .DOTP_U_H = { 653, 1}, + .DOTP_U_W = { 654, 1}, + .DOTP_U_D = { 655, 1}, + .AND_V = { 656, 1}, + .OR_V = { 657, 1}, + .NOR_V = { 658, 1}, + .XOR_V = { 659, 1}, + .ANDI_B = { 660, 1}, + .ORI_B = { 661, 1}, + .NORI_B = { 662, 1}, + .XORI_B = { 663, 1}, + .BSEL_V = { 664, 1}, + .BSELI_B = { 665, 1}, + .BMNZ_V = { 666, 1}, + .BMNZI_B = { 667, 1}, + .BMZ_V = { 668, 1}, + .BMZI_B = { 669, 1}, + .CEQ_B = { 670, 1}, + .CEQ_H = { 671, 1}, + .CEQ_W = { 672, 1}, + .CEQ_D = { 673, 1}, + .CLT_S_B = { 674, 1}, + .CLT_S_H = { 675, 1}, + .CLT_S_W = { 676, 1}, + .CLT_S_D = { 677, 1}, + .CLT_U_B = { 678, 1}, + .CLT_U_H = { 679, 1}, + .CLT_U_W = { 680, 1}, + .CLT_U_D = { 681, 1}, + .CLE_S_B = { 682, 1}, + .CLE_S_H = { 683, 1}, + .CLE_S_W = { 684, 1}, + .CLE_S_D = { 685, 1}, + .CLE_U_B = { 686, 1}, + .CLE_U_H = { 687, 1}, + .CLE_U_W = { 688, 1}, + .CLE_U_D = { 689, 1}, + .MIN_S_B = { 690, 1}, + .MIN_S_H = { 691, 1}, + .MIN_S_W = { 692, 1}, + .MIN_S_D = { 693, 1}, + .MIN_U_B = { 694, 1}, + .MIN_U_H = { 695, 1}, + .MIN_U_W = { 696, 1}, + .MIN_U_D = { 697, 1}, + .MAX_S_B = { 698, 1}, + .MAX_S_H = { 699, 1}, + .MAX_S_W = { 700, 1}, + .MAX_S_D = { 701, 1}, + .MAX_U_B = { 702, 1}, + .MAX_U_H = { 703, 1}, + .MAX_U_W = { 704, 1}, + .MAX_U_D = { 705, 1}, + .SLL_B = { 706, 1}, + .SLL_H = { 707, 1}, + .SLL_W = { 708, 1}, + .SLL_D = { 709, 1}, + .SRL_B = { 710, 1}, + .SRL_H = { 711, 1}, + .SRL_W = { 712, 1}, + .SRL_D = { 713, 1}, + .SRA_B = { 714, 1}, + .SRA_H = { 715, 1}, + .SRA_W = { 716, 1}, + .SRA_D = { 717, 1}, + .SLLI_B = { 718, 1}, + .SLLI_H = { 719, 1}, + .SLLI_W = { 720, 1}, + .SLLI_D = { 721, 1}, + .SRLI_B = { 722, 1}, + .SRLI_H = { 723, 1}, + .SRLI_W = { 724, 1}, + .SRLI_D = { 725, 1}, + .SRAI_B = { 726, 1}, + .SRAI_H = { 727, 1}, + .SRAI_W = { 728, 1}, + .SRAI_D = { 729, 1}, + .FADD_W = { 730, 1}, + .FADD_D = { 731, 1}, + .FSUB_W = { 732, 1}, + .FSUB_D = { 733, 1}, + .FMUL_W = { 734, 1}, + .FMUL_D = { 735, 1}, + .FDIV_W = { 736, 1}, + .FDIV_D = { 737, 1}, + .FSQRT_W = { 738, 1}, + .FSQRT_D = { 739, 1}, + .FRSQRT_W = { 740, 1}, + .FRSQRT_D = { 741, 1}, + .FRCP_W = { 742, 1}, + .FRCP_D = { 743, 1}, + .FRINT_W = { 744, 1}, + .FRINT_D = { 745, 1}, + .FMAX_W = { 746, 1}, + .FMAX_D = { 747, 1}, + .FMIN_W = { 748, 1}, + .FMIN_D = { 749, 1}, + .FCEQ_W = { 750, 1}, + .FCEQ_D = { 751, 1}, + .FCNE_W = { 752, 1}, + .FCNE_D = { 753, 1}, + .FCLT_W = { 754, 1}, + .FCLT_D = { 755, 1}, + .FCLE_W = { 756, 1}, + .FCLE_D = { 757, 1}, + .FFINT_S_W = { 758, 1}, + .FFINT_S_D = { 759, 1}, + .FFINT_U_W = { 760, 1}, + .FFINT_U_D = { 761, 1}, + .FTRUNC_S_W = { 762, 1}, + .FTRUNC_S_D = { 763, 1}, + .FTRUNC_U_W = { 764, 1}, + .FTRUNC_U_D = { 765, 1}, + .FCVT_S_W = { 766, 1}, + .FCVT_S_D = { 767, 1}, + .FCVT_D_W = { 768, 1}, + .LD_B = { 769, 1}, + .LD_H = { 770, 1}, + .LD_W = { 771, 1}, + .LD_D = { 772, 1}, + .ST_B = { 773, 1}, + .ST_H = { 774, 1}, + .ST_W = { 775, 1}, + .ST_D = { 776, 1}, + .LDI_B = { 777, 1}, + .LDI_H = { 778, 1}, + .LDI_W = { 779, 1}, + .LDI_D = { 780, 1}, + .COPY_S_B = { 781, 1}, + .COPY_S_H = { 782, 1}, + .COPY_S_W = { 783, 1}, + .COPY_U_B = { 784, 1}, + .COPY_U_H = { 785, 1}, + .COPY_U_W = { 786, 0}, + .INSERT_B = { 786, 1}, + .INSERT_H = { 787, 1}, + .INSERT_W = { 788, 1}, + .INSERT_D = { 789, 0}, + .INSVE_B = { 789, 1}, + .INSVE_H = { 790, 1}, + .INSVE_W = { 791, 1}, + .INSVE_D = { 792, 1}, + .SHF_B = { 793, 1}, + .SHF_H = { 794, 1}, + .SHF_W = { 795, 1}, + .VSHF_B = { 796, 1}, + .VSHF_H = { 797, 1}, + .VSHF_W = { 798, 1}, + .VSHF_D = { 799, 1}, + .SLD_B = { 800, 1}, + .SLD_H = { 801, 1}, + .SLD_W = { 802, 1}, + .SLD_D = { 803, 1}, + .SLDI_B = { 804, 1}, + .SLDI_H = { 805, 1}, + .SLDI_W = { 806, 1}, + .SLDI_D = { 807, 1}, + .SPLAT_B = { 808, 1}, + .SPLAT_H = { 809, 1}, + .SPLAT_W = { 810, 1}, + .SPLAT_D = { 811, 1}, + .SPLATI_B = { 812, 1}, + .SPLATI_H = { 813, 1}, + .SPLATI_W = { 814, 1}, + .SPLATI_D = { 815, 1}, + .BZ_V = { 816, 1}, + .BNZ_V = { 817, 1}, + .BZ_B = { 818, 1}, + .BZ_H = { 819, 1}, + .BZ_W = { 820, 1}, + .BZ_D = { 821, 1}, + .BNZ_B = { 822, 1}, + .BNZ_H = { 823, 1}, + .BNZ_W = { 824, 1}, + .BNZ_D = { 825, 1}, + .NLOC_B = { 826, 1}, + .NLOC_H = { 827, 1}, + .NLOC_W = { 828, 1}, + .NLOC_D = { 829, 1}, + .NLZC_B = { 830, 1}, + .NLZC_H = { 831, 1}, + .NLZC_W = { 832, 1}, + .NLZC_D = { 833, 1}, + .PCNT_B = { 834, 1}, + .PCNT_H = { 835, 1}, + .PCNT_W = { 836, 1}, + .PCNT_D = { 837, 1}, + .VMOV_S = { 838, 1}, + .VMOV_P = { 839, 1}, + .VMOV_T = { 840, 1}, + .VMOV_Q = { 841, 1}, + .LV_S = { 842, 1}, + .LV_Q = { 843, 1}, + .SV_S = { 844, 1}, + .SV_Q = { 845, 1}, + .LVL_Q = { 846, 1}, + .LVR_Q = { 847, 1}, + .SVL_Q = { 848, 1}, + .SVR_Q = { 849, 1}, + .VIIM_S = { 850, 1}, + .VFIM_S = { 851, 1}, + .VADD_S = { 852, 1}, + .VADD_P = { 853, 1}, + .VADD_T = { 854, 1}, + .VADD_Q = { 855, 1}, + .VSUB_S = { 856, 1}, + .VSUB_P = { 857, 1}, + .VSUB_T = { 858, 1}, + .VSUB_Q = { 859, 1}, + .VMUL_S = { 860, 1}, + .VMUL_P = { 861, 1}, + .VMUL_T = { 862, 1}, + .VMUL_Q = { 863, 1}, + .VDIV_S = { 864, 1}, + .VDIV_P = { 865, 1}, + .VDIV_T = { 866, 1}, + .VDIV_Q = { 867, 1}, + .VABS_S = { 868, 1}, + .VABS_P = { 869, 1}, + .VABS_T = { 870, 1}, + .VABS_Q = { 871, 1}, + .VNEG_S = { 872, 1}, + .VNEG_P = { 873, 1}, + .VNEG_T = { 874, 1}, + .VNEG_Q = { 875, 1}, + .VSQRT_S = { 876, 1}, + .VRCP_S = { 877, 1}, + .VRCP_P = { 878, 1}, + .VRCP_T = { 879, 1}, + .VRCP_Q = { 880, 1}, + .VRSQ_S = { 881, 1}, + .VRSQ_P = { 882, 1}, + .VRSQ_T = { 883, 1}, + .VRSQ_Q = { 884, 1}, + .VDOT_P = { 885, 1}, + .VDOT_T = { 886, 1}, + .VDOT_Q = { 887, 1}, + .VSCL_P = { 888, 1}, + .VSCL_T = { 889, 1}, + .VSCL_Q = { 890, 1}, + .VHDP_P = { 891, 1}, + .VHDP_T = { 892, 1}, + .VHDP_Q = { 893, 1}, + .VAVG_P = { 894, 1}, + .VAVG_T = { 895, 1}, + .VAVG_Q = { 896, 1}, + .VFAD_P = { 897, 1}, + .VFAD_T = { 898, 1}, + .VFAD_Q = { 899, 1}, + .VMMUL_P = { 900, 1}, + .VMMUL_T = { 901, 1}, + .VMMUL_Q = { 902, 1}, + .VTFM2_P = { 903, 1}, + .VTFM3_T = { 904, 1}, + .VTFM4_Q = { 905, 1}, + .VHTFM2_P = { 906, 1}, + .VHTFM3_T = { 907, 1}, + .VHTFM4_Q = { 908, 1}, + .VMSCL_P = { 909, 1}, + .VMSCL_T = { 910, 1}, + .VMSCL_Q = { 911, 1}, + .VMMOV_P = { 912, 1}, + .VMMOV_T = { 913, 1}, + .VMMOV_Q = { 914, 1}, + .VMIDT_P = { 915, 1}, + .VMIDT_T = { 916, 1}, + .VMIDT_Q = { 917, 1}, + .VMZERO_P = { 918, 1}, + .VMZERO_T = { 919, 1}, + .VMZERO_Q = { 920, 1}, + .VMONE_P = { 921, 1}, + .VMONE_T = { 922, 1}, + .VMONE_Q = { 923, 1}, + .VCRS_T = { 924, 1}, + .VCRSP_T = { 925, 1}, + .VQMUL_Q = { 926, 1}, + .VCMP_S = { 927, 1}, + .VCMP_P = { 928, 1}, + .VCMP_T = { 929, 1}, + .VCMP_Q = { 930, 1}, + .VMIN_S = { 931, 1}, + .VMIN_P = { 932, 1}, + .VMIN_T = { 933, 1}, + .VMIN_Q = { 934, 1}, + .VMAX_S = { 935, 1}, + .VMAX_P = { 936, 1}, + .VMAX_T = { 937, 1}, + .VMAX_Q = { 938, 1}, + .VSIN_S = { 939, 1}, + .VCOS_S = { 940, 1}, + .VEXP2_S = { 941, 1}, + .VLOG2_S = { 942, 1}, + .VASIN_S = { 943, 1}, + .VNRCP_S = { 944, 1}, + .VNSIN_S = { 945, 1}, + .VREXP2_S = { 946, 1}, + .VSGN_S = { 947, 1}, + .VI2F_S = { 948, 1}, + .VI2F_P = { 949, 1}, + .VI2F_T = { 950, 1}, + .VI2F_Q = { 951, 1}, + .VF2IN_S = { 952, 1}, + .VF2IN_P = { 953, 1}, + .VF2IN_T = { 954, 1}, + .VF2IN_Q = { 955, 1}, + .VF2IZ_S = { 956, 1}, + .VF2IZ_P = { 957, 1}, + .VF2IZ_T = { 958, 1}, + .VF2IZ_Q = { 959, 1}, + .VF2IU_S = { 960, 1}, + .VF2IU_P = { 961, 1}, + .VF2IU_T = { 962, 1}, + .VF2IU_Q = { 963, 1}, + .VF2ID_S = { 964, 1}, + .VF2ID_P = { 965, 1}, + .VF2ID_T = { 966, 1}, + .VF2ID_Q = { 967, 1}, + .VF2H_P = { 968, 1}, + .VH2F_S = { 969, 1}, + .VFLUSH = { 970, 1}, + .VSYNC = { 971, 1}, + .VNOP = { 972, 1}, + .VPFXS = { 973, 1}, + .VPFXT = { 974, 1}, + .VPFXD = { 975, 1}, + .VCST_S = { 976, 1}, + .VCST_P = { 977, 1}, + .VCST_T = { 978, 1}, + .VCST_Q = { 979, 1}, + .MFV = { 980, 1}, + .MTV = { 981, 1}, + .MFVC = { 982, 1}, + .MTVC = { 983, 1}, + .BVF = { 984, 1}, + .BVT = { 985, 1}, + .BVFL = { 986, 1}, + .BVTL = { 987, 1}, } diff --git a/core/rexcode/mips/tablegen/specgen.lua b/core/rexcode/mips/tablegen/specgen.lua index baeb84b0c..1af28dfae 100644 --- a/core/rexcode/mips/tablegen/specgen.lua +++ b/core/rexcode/mips/tablegen/specgen.lua @@ -294,6 +294,18 @@ do if r then sections[#sections+1]=r end end +-- ---- DSP ASE replicate immediate (Rd <- broadcast imm) -------------------- +-- REPL.PH = signed 10-bit at 25:16 (reuse MSA_S10); REPL.QB = 8-bit at 23:16 +-- (reuse MSA_I8). Vary REPL.PH's imm to -1 so all ten field bits toggle. +do + local r = entry("REPL_PH", "{.GPR,.IMM5,.NONE,.NONE}", "{.RD,.MSA_S10,.NONE,.NONE}", "DSP_R1", + function(v) return string.format("repl.ph $%d,%d", v[1], v[2]) end, {31,-1}) + if r then sections[#sections+1]=r end + r = entry("REPL_QB", "{.GPR,.IMM5,.NONE,.NONE}", "{.RD,.MSA_I8,.NONE,.NONE}", "DSP_R1", + function(v) return string.format("repl.qb $%d,%d", v[1], v[2]) end, {31,255}) + if r then sections[#sections+1]=r end +end + -- ---- DSP ASE extract-from-accumulator ops --------------------------------- do local r = entry("EXTPDP", "{.GPR,.IMM5,.IMM5,.NONE}", "{.RT,.AC_NUM,.EXT_SIZE,.NONE}", "DSP_R2", diff --git a/core/rexcode/mips/tables/mips.encode_forms.bin b/core/rexcode/mips/tables/mips.encode_forms.bin index efd0c6e79..c7993926f 100644 Binary files a/core/rexcode/mips/tables/mips.encode_forms.bin and b/core/rexcode/mips/tables/mips.encode_forms.bin differ diff --git a/core/rexcode/mips/tables/mips.encode_runs.bin b/core/rexcode/mips/tables/mips.encode_runs.bin index ec5d298f0..9a7675820 100644 Binary files a/core/rexcode/mips/tables/mips.encode_runs.bin and b/core/rexcode/mips/tables/mips.encode_runs.bin differ diff --git a/core/rexcode/mips/tables/mips.entries.bin b/core/rexcode/mips/tables/mips.entries.bin index 4f7b2105e..ac58de7cc 100644 Binary files a/core/rexcode/mips/tables/mips.entries.bin and b/core/rexcode/mips/tables/mips.entries.bin differ diff --git a/core/rexcode/mips/tables/mips.idx_primary.bin b/core/rexcode/mips/tables/mips.idx_primary.bin index 7cda3cae8..6d4c82118 100644 Binary files a/core/rexcode/mips/tables/mips.idx_primary.bin and b/core/rexcode/mips/tables/mips.idx_primary.bin differ diff --git a/core/rexcode/mips/tables/mips.idx_special3.bin b/core/rexcode/mips/tables/mips.idx_special3.bin index 8148a9afc..805e4e439 100644 Binary files a/core/rexcode/mips/tables/mips.idx_special3.bin and b/core/rexcode/mips/tables/mips.idx_special3.bin differ