mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-20 00:52:33 +00:00
rexcode/mips: DSP ASE shift-by-immediate forms
New DSP_SA encoding (shift amount at bits 24:21). SHRA.QB/SHRA_R.QB (.QB 3-bit), SHRA_R.PH/SHRL.PH (.PH 4-bit). Byte-exact vs llvm-mc; 281 tests green.
This commit is contained in:
@@ -206,6 +206,8 @@ extract_operand_inline :: #force_inline proc "contextless" (
|
||||
return reg_operand(decode_reg(word, 6, ot), ot)
|
||||
case .GPR_AT_11:
|
||||
return reg_operand(decode_reg(word, 11, ot), ot)
|
||||
case .DSP_SA:
|
||||
return Operand{immediate = i64((word >> 21) & 0xF), kind = .IMMEDIATE, size = 1}
|
||||
|
||||
// Immediates ------------------------------------------------------------
|
||||
case .IMM_16:
|
||||
|
||||
@@ -400,6 +400,8 @@ pack_operand_inline :: #force_inline proc(
|
||||
return (u32(reg_hw(op.reg)) & 0x1F) << 6
|
||||
case .GPR_AT_11:
|
||||
return (u32(reg_hw(op.reg)) & 0x1F) << 11
|
||||
case .DSP_SA:
|
||||
return (u32(op.immediate) & 0xF) << 21
|
||||
|
||||
// MSA memory operand: base GPR at 15:11, signed-10 disp at 25:16
|
||||
// (caller has already scaled the displacement by element size).
|
||||
|
||||
@@ -240,6 +240,7 @@ Operand_Encoding :: enum u8 {
|
||||
FR, // FP register at bits 25:21 (COP1X 4-register FMA: fr)
|
||||
GPR_AT_6, // GPR at bits 10:6 (MSA COPY destination)
|
||||
GPR_AT_11, // GPR at bits 15:11 (MSA INSERT source)
|
||||
DSP_SA, // DSP shift amount at bits 24:21 (.PH 4-bit, .QB 3-bit)
|
||||
|
||||
// MSA memory operand: base GPR at bits 15:11 + signed 10-bit disp at 25:16,
|
||||
// scaled by element size (1/2/4/8 for B/H/W/D).
|
||||
|
||||
@@ -1142,12 +1142,20 @@ inst_shllv_s_w_r_r_r :: #force_inline proc "contextless" (dst: GPR, src: G
|
||||
emit_shllv_s_w_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, src2: GPR) { append(instructions, inst_shllv_s_w_r_r_r(dst, src, src2)) }
|
||||
inst_shrl_qb_r_r_i5 :: #force_inline proc "contextless" (dst: GPR, src: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SHRL_QB, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_imm(imm, 1), {}}} }
|
||||
emit_shrl_qb_r_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, imm: i64) { append(instructions, inst_shrl_qb_r_r_i5(dst, src, imm)) }
|
||||
inst_shrl_ph_r_r_i5 :: #force_inline proc "contextless" (dst: GPR, src: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SHRL_PH, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_imm(imm, 1), {}}} }
|
||||
emit_shrl_ph_r_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, imm: i64) { append(instructions, inst_shrl_ph_r_r_i5(dst, src, imm)) }
|
||||
inst_shrlv_qb_r_r_r :: #force_inline proc "contextless" (dst: GPR, src: GPR, src2: GPR) -> Instruction { return Instruction{mnemonic = .SHRLV_QB, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_gpr(src2), {}}} }
|
||||
emit_shrlv_qb_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, src2: GPR) { append(instructions, inst_shrlv_qb_r_r_r(dst, src, src2)) }
|
||||
inst_shrlv_ph_r_r_r :: #force_inline proc "contextless" (dst: GPR, src: GPR, src2: GPR) -> Instruction { return Instruction{mnemonic = .SHRLV_PH, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_gpr(src2), {}}} }
|
||||
emit_shrlv_ph_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, src2: GPR) { append(instructions, inst_shrlv_ph_r_r_r(dst, src, src2)) }
|
||||
inst_shra_qb_r_r_i5 :: #force_inline proc "contextless" (dst: GPR, src: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SHRA_QB, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_imm(imm, 1), {}}} }
|
||||
emit_shra_qb_r_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, imm: i64) { append(instructions, inst_shra_qb_r_r_i5(dst, src, imm)) }
|
||||
inst_shra_r_qb_r_r_i5 :: #force_inline proc "contextless" (dst: GPR, src: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SHRA_R_QB, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_imm(imm, 1), {}}} }
|
||||
emit_shra_r_qb_r_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, imm: i64) { append(instructions, inst_shra_r_qb_r_r_i5(dst, src, imm)) }
|
||||
inst_shra_ph_r_r_i5 :: #force_inline proc "contextless" (dst: GPR, src: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SHRA_PH, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_imm(imm, 1), {}}} }
|
||||
emit_shra_ph_r_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, imm: i64) { append(instructions, inst_shra_ph_r_r_i5(dst, src, imm)) }
|
||||
inst_shra_r_ph_r_r_i5 :: #force_inline proc "contextless" (dst: GPR, src: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SHRA_R_PH, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_imm(imm, 1), {}}} }
|
||||
emit_shra_r_ph_r_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, imm: i64) { append(instructions, inst_shra_r_ph_r_r_i5(dst, src, imm)) }
|
||||
inst_shra_r_w_r_r_i5 :: #force_inline proc "contextless" (dst: GPR, src: GPR, imm: i64) -> Instruction { return Instruction{mnemonic = .SHRA_R_W, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_imm(imm, 1), {}}} }
|
||||
emit_shra_r_w_r_r_i5 :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: GPR, src: GPR, imm: i64) { append(instructions, inst_shra_r_w_r_r_i5(dst, src, imm)) }
|
||||
inst_shrav_qb_r_r_r :: #force_inline proc "contextless" (dst: GPR, src: GPR, src2: GPR) -> Instruction { return Instruction{mnemonic = .SHRAV_QB, operand_count = 3, length = 4, ops = {op_gpr(dst), op_gpr(src), op_gpr(src2), {}}} }
|
||||
@@ -3059,12 +3067,20 @@ inst_shllv_s_w :: inst_shllv_s_w_r_r_r
|
||||
emit_shllv_s_w :: emit_shllv_s_w_r_r_r
|
||||
inst_shrl_qb :: inst_shrl_qb_r_r_i5
|
||||
emit_shrl_qb :: emit_shrl_qb_r_r_i5
|
||||
inst_shrl_ph :: inst_shrl_ph_r_r_i5
|
||||
emit_shrl_ph :: emit_shrl_ph_r_r_i5
|
||||
inst_shrlv_qb :: inst_shrlv_qb_r_r_r
|
||||
emit_shrlv_qb :: emit_shrlv_qb_r_r_r
|
||||
inst_shrlv_ph :: inst_shrlv_ph_r_r_r
|
||||
emit_shrlv_ph :: emit_shrlv_ph_r_r_r
|
||||
inst_shra_qb :: inst_shra_qb_r_r_i5
|
||||
emit_shra_qb :: emit_shra_qb_r_r_i5
|
||||
inst_shra_r_qb :: inst_shra_r_qb_r_r_i5
|
||||
emit_shra_r_qb :: emit_shra_r_qb_r_r_i5
|
||||
inst_shra_ph :: inst_shra_ph_r_r_i5
|
||||
emit_shra_ph :: emit_shra_ph_r_r_i5
|
||||
inst_shra_r_ph :: inst_shra_r_ph_r_r_i5
|
||||
emit_shra_r_ph :: emit_shra_r_ph_r_r_i5
|
||||
inst_shra_r_w :: inst_shra_r_w_r_r_i5
|
||||
emit_shra_r_w :: emit_shra_r_w_r_r_i5
|
||||
inst_shrav_qb :: inst_shrav_qb_r_r_r
|
||||
|
||||
@@ -1625,5 +1625,9 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{
|
||||
.DI = { {.DI, {.GPR,.NONE,.NONE,.NONE}, {.RT,.NONE,.NONE,.NONE}, 0x41606000, 0xFFE0FFFF, .MIPS32_R2, {}} },
|
||||
.EI = { {.EI, {.GPR,.NONE,.NONE,.NONE}, {.RT,.NONE,.NONE,.NONE}, 0x41606020, 0xFFE0FFFF, .MIPS32_R2, {}} },
|
||||
.RDHWR = { {.RDHWR, {.GPR,.GPR,.NONE,.NONE}, {.RT,.RD,.NONE,.NONE}, 0x7C00003B, 0xFFE007FF, .MIPS32_R2, {}} },
|
||||
.SHRA_QB = { {.SHRA_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000113, 0xFF0007FF, .DSP_R2, {}} },
|
||||
.SHRA_R_QB = { {.SHRA_R_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000153, 0xFF0007FF, .DSP_R2, {}} },
|
||||
.SHRA_R_PH = { {.SHRA_R_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000353, 0xFE0007FF, .DSP_R2, {}} },
|
||||
.SHRL_PH = { {.SHRL_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000653, 0xFE0007FF, .DSP_R2, {}} },
|
||||
// SPECGEN:END
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ package rexcode_mips_generated
|
||||
import lib "../.."
|
||||
|
||||
@(rodata)
|
||||
DECODE_ENTRIES := [956]lib.Decode_Entry{
|
||||
DECODE_ENTRIES := [960]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, {} },
|
||||
@@ -781,6 +781,10 @@ DECODE_ENTRIES := [956]lib.Decode_Entry{
|
||||
{ .SHRL_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000053, 0xFFE0073F, .DSP_R1, {} },
|
||||
{ .SHRA_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000253, 0xFFE0073F, .DSP_R1, {} },
|
||||
{ .SHRA_R_W, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000553, 0xFFE0073F, .DSP_R1, {} },
|
||||
{ .SHRA_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000113, 0xFF0007FF, .DSP_R2, {} },
|
||||
{ .SHRA_R_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000153, 0xFF0007FF, .DSP_R2, {} },
|
||||
{ .SHRL_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000653, 0xFE0007FF, .DSP_R2, {} },
|
||||
{ .SHRA_R_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000353, 0xFE0007FF, .DSP_R2, {} },
|
||||
{ .SHLLV_QB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RT,.RS,.NONE}, 0x7C000093, 0xFC0007FF, .DSP_R1, {} },
|
||||
{ .SHLLV_PH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RT,.RS,.NONE}, 0x7C000293, 0xFC0007FF, .DSP_R2, {} },
|
||||
{ .SHLLV_S_PH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RT,.RS,.NONE}, 0x7C000393, 0xFC0007FF, .DSP_R2, {} },
|
||||
@@ -1000,39 +1004,39 @@ DECODE_INDEX_PRIMARY := [64]lib.Decode_Index{
|
||||
0x1C = { 354, 109},
|
||||
0x1D = { 463, 1},
|
||||
0x1E = { 464, 228},
|
||||
0x1F = { 692, 119},
|
||||
0x20 = { 811, 1},
|
||||
0x21 = { 812, 1},
|
||||
0x22 = { 813, 1},
|
||||
0x23 = { 814, 1},
|
||||
0x24 = { 815, 1},
|
||||
0x25 = { 816, 1},
|
||||
0x26 = { 817, 1},
|
||||
0x27 = { 818, 1},
|
||||
0x28 = { 819, 1},
|
||||
0x29 = { 820, 1},
|
||||
0x2A = { 821, 1},
|
||||
0x2B = { 822, 1},
|
||||
0x2C = { 823, 1},
|
||||
0x2D = { 824, 1},
|
||||
0x2E = { 825, 1},
|
||||
0x2F = { 826, 1},
|
||||
0x30 = { 827, 1},
|
||||
0x31 = { 828, 1},
|
||||
0x32 = { 829, 3},
|
||||
0x33 = { 832, 1},
|
||||
0x34 = { 833, 63},
|
||||
0x35 = { 896, 3},
|
||||
0x36 = { 899, 5},
|
||||
0x37 = { 904, 6},
|
||||
0x38 = { 910, 1},
|
||||
0x39 = { 911, 1},
|
||||
0x3A = { 912, 3},
|
||||
0x3B = { 915, 2},
|
||||
0x3C = { 917, 27},
|
||||
0x3D = { 944, 3},
|
||||
0x3E = { 947, 5},
|
||||
0x3F = { 952, 4},
|
||||
0x1F = { 692, 123},
|
||||
0x20 = { 815, 1},
|
||||
0x21 = { 816, 1},
|
||||
0x22 = { 817, 1},
|
||||
0x23 = { 818, 1},
|
||||
0x24 = { 819, 1},
|
||||
0x25 = { 820, 1},
|
||||
0x26 = { 821, 1},
|
||||
0x27 = { 822, 1},
|
||||
0x28 = { 823, 1},
|
||||
0x29 = { 824, 1},
|
||||
0x2A = { 825, 1},
|
||||
0x2B = { 826, 1},
|
||||
0x2C = { 827, 1},
|
||||
0x2D = { 828, 1},
|
||||
0x2E = { 829, 1},
|
||||
0x2F = { 830, 1},
|
||||
0x30 = { 831, 1},
|
||||
0x31 = { 832, 1},
|
||||
0x32 = { 833, 3},
|
||||
0x33 = { 836, 1},
|
||||
0x34 = { 837, 63},
|
||||
0x35 = { 900, 3},
|
||||
0x36 = { 903, 5},
|
||||
0x37 = { 908, 6},
|
||||
0x38 = { 914, 1},
|
||||
0x39 = { 915, 1},
|
||||
0x3A = { 916, 3},
|
||||
0x3B = { 919, 2},
|
||||
0x3C = { 921, 27},
|
||||
0x3D = { 948, 3},
|
||||
0x3E = { 951, 5},
|
||||
0x3F = { 956, 4},
|
||||
}
|
||||
|
||||
@(rodata)
|
||||
@@ -1193,11 +1197,11 @@ DECODE_INDEX_SPECIAL3 := [64]lib.Decode_Index{
|
||||
0x10 = { 713, 22},
|
||||
0x11 = { 735, 15},
|
||||
0x12 = { 750, 15},
|
||||
0x13 = { 765, 18},
|
||||
0x20 = { 783, 5},
|
||||
0x24 = { 788, 4},
|
||||
0x30 = { 792, 9},
|
||||
0x38 = { 801, 9},
|
||||
0x3B = { 810, 1},
|
||||
0x13 = { 765, 22},
|
||||
0x20 = { 787, 5},
|
||||
0x24 = { 792, 4},
|
||||
0x30 = { 796, 9},
|
||||
0x38 = { 805, 9},
|
||||
0x3B = { 814, 1},
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ package rexcode_mips_generated
|
||||
import lib "../.."
|
||||
|
||||
@(rodata)
|
||||
ENCODE_FORMS := [956]lib.Encoding{
|
||||
ENCODE_FORMS := [960]lib.Encoding{
|
||||
// .ADD
|
||||
{ .ADD, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RS,.RT,.NONE}, 0x00000020, 0xFC0007FF, .MIPS_I, {} },
|
||||
// .ADDU
|
||||
@@ -1123,12 +1123,20 @@ ENCODE_FORMS := [956]lib.Encoding{
|
||||
{ .SHLLV_S_W, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RT,.RS,.NONE}, 0x7C000593, 0xFC0007FF, .DSP_R2, {} },
|
||||
// .SHRL_QB
|
||||
{ .SHRL_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000053, 0xFFE0073F, .DSP_R1, {} },
|
||||
// .SHRL_PH
|
||||
{ .SHRL_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000653, 0xFE0007FF, .DSP_R2, {} },
|
||||
// .SHRLV_QB
|
||||
{ .SHRLV_QB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RT,.RS,.NONE}, 0x7C0000D3, 0xFC0007FF, .DSP_R1, {} },
|
||||
// .SHRLV_PH
|
||||
{ .SHRLV_PH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RT,.RS,.NONE}, 0x7C0006D3, 0xFC0007FF, .DSP_R2, {} },
|
||||
// .SHRA_QB
|
||||
{ .SHRA_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000113, 0xFF0007FF, .DSP_R2, {} },
|
||||
// .SHRA_R_QB
|
||||
{ .SHRA_R_QB, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000153, 0xFF0007FF, .DSP_R2, {} },
|
||||
// .SHRA_PH
|
||||
{ .SHRA_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000253, 0xFFE0073F, .DSP_R1, {} },
|
||||
// .SHRA_R_PH
|
||||
{ .SHRA_R_PH, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.DSP_SA,.NONE}, 0x7C000353, 0xFE0007FF, .DSP_R2, {} },
|
||||
// .SHRA_R_W
|
||||
{ .SHRA_R_W, {.GPR,.GPR,.IMM5,.NONE}, {.RD,.RT,.IMM_5,.NONE}, 0x7C000553, 0xFFE0073F, .DSP_R1, {} },
|
||||
// .SHRAV_QB
|
||||
@@ -2535,422 +2543,422 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{
|
||||
.SHLLV_S_PH = { 554, 1},
|
||||
.SHLLV_S_W = { 555, 1},
|
||||
.SHRL_QB = { 556, 1},
|
||||
.SHRL_PH = { 557, 0},
|
||||
.SHRLV_QB = { 557, 1},
|
||||
.SHRLV_PH = { 558, 1},
|
||||
.SHRA_QB = { 559, 0},
|
||||
.SHRA_R_QB = { 559, 0},
|
||||
.SHRA_PH = { 559, 1},
|
||||
.SHRA_R_PH = { 560, 0},
|
||||
.SHRA_R_W = { 560, 1},
|
||||
.SHRAV_QB = { 561, 1},
|
||||
.SHRAV_R_QB = { 562, 1},
|
||||
.SHRAV_PH = { 563, 1},
|
||||
.SHRAV_R_PH = { 564, 1},
|
||||
.SHRAV_R_W = { 565, 1},
|
||||
.LBUX = { 566, 1},
|
||||
.LHX = { 567, 1},
|
||||
.LWX = { 568, 1},
|
||||
.BPOSGE32 = { 569, 1},
|
||||
.BPOSGE64 = { 570, 0},
|
||||
.INSV = { 570, 1},
|
||||
.BITREV = { 571, 1},
|
||||
.ABSQ_S_PH = { 572, 1},
|
||||
.ABSQ_S_W = { 573, 1},
|
||||
.REPL_PH = { 574, 0},
|
||||
.REPLV_PH = { 574, 1},
|
||||
.REPL_QB = { 575, 0},
|
||||
.REPLV_QB = { 575, 1},
|
||||
.ADDV_B = { 576, 1},
|
||||
.ADDV_H = { 577, 1},
|
||||
.ADDV_W = { 578, 1},
|
||||
.ADDV_D = { 579, 1},
|
||||
.SUBV_B = { 580, 1},
|
||||
.SUBV_H = { 581, 1},
|
||||
.SUBV_W = { 582, 1},
|
||||
.SUBV_D = { 583, 1},
|
||||
.ADDS_S_B = { 584, 1},
|
||||
.ADDS_S_H = { 585, 1},
|
||||
.ADDS_S_W = { 586, 1},
|
||||
.ADDS_S_D = { 587, 1},
|
||||
.ADDS_U_B = { 588, 1},
|
||||
.ADDS_U_H = { 589, 1},
|
||||
.ADDS_U_W = { 590, 1},
|
||||
.ADDS_U_D = { 591, 1},
|
||||
.SUBS_S_B = { 592, 1},
|
||||
.SUBS_S_H = { 593, 1},
|
||||
.SUBS_S_W = { 594, 1},
|
||||
.SUBS_S_D = { 595, 1},
|
||||
.SUBS_U_B = { 596, 1},
|
||||
.SUBS_U_H = { 597, 1},
|
||||
.SUBS_U_W = { 598, 1},
|
||||
.SUBS_U_D = { 599, 1},
|
||||
.MULV_B = { 600, 1},
|
||||
.MULV_H = { 601, 1},
|
||||
.MULV_W = { 602, 1},
|
||||
.MULV_D = { 603, 1},
|
||||
.DIV_S_B = { 604, 1},
|
||||
.DIV_S_H = { 605, 1},
|
||||
.DIV_S_W = { 606, 1},
|
||||
.DIV_S_D = { 607, 1},
|
||||
.DIV_U_B = { 608, 1},
|
||||
.DIV_U_H = { 609, 1},
|
||||
.DIV_U_W = { 610, 1},
|
||||
.DIV_U_D = { 611, 1},
|
||||
.MOD_S_B = { 612, 1},
|
||||
.MOD_S_H = { 613, 1},
|
||||
.MOD_S_W = { 614, 1},
|
||||
.MOD_S_D = { 615, 1},
|
||||
.MOD_U_B = { 616, 1},
|
||||
.MOD_U_H = { 617, 1},
|
||||
.MOD_U_W = { 618, 1},
|
||||
.MOD_U_D = { 619, 1},
|
||||
.MADDV_B = { 620, 1},
|
||||
.MADDV_H = { 621, 1},
|
||||
.MADDV_W = { 622, 1},
|
||||
.MADDV_D = { 623, 1},
|
||||
.MSUBV_B = { 624, 1},
|
||||
.MSUBV_H = { 625, 1},
|
||||
.MSUBV_W = { 626, 1},
|
||||
.MSUBV_D = { 627, 1},
|
||||
.DOTP_S_H = { 628, 1},
|
||||
.DOTP_S_W = { 629, 1},
|
||||
.DOTP_S_D = { 630, 1},
|
||||
.DOTP_U_H = { 631, 1},
|
||||
.DOTP_U_W = { 632, 1},
|
||||
.DOTP_U_D = { 633, 1},
|
||||
.AND_V = { 634, 1},
|
||||
.OR_V = { 635, 1},
|
||||
.NOR_V = { 636, 1},
|
||||
.XOR_V = { 637, 1},
|
||||
.ANDI_B = { 638, 1},
|
||||
.ORI_B = { 639, 1},
|
||||
.NORI_B = { 640, 1},
|
||||
.XORI_B = { 641, 1},
|
||||
.BSEL_V = { 642, 1},
|
||||
.BSELI_B = { 643, 1},
|
||||
.BMNZ_V = { 644, 1},
|
||||
.BMNZI_B = { 645, 1},
|
||||
.BMZ_V = { 646, 1},
|
||||
.BMZI_B = { 647, 1},
|
||||
.CEQ_B = { 648, 1},
|
||||
.CEQ_H = { 649, 1},
|
||||
.CEQ_W = { 650, 1},
|
||||
.CEQ_D = { 651, 1},
|
||||
.CLT_S_B = { 652, 1},
|
||||
.CLT_S_H = { 653, 1},
|
||||
.CLT_S_W = { 654, 1},
|
||||
.CLT_S_D = { 655, 1},
|
||||
.CLT_U_B = { 656, 1},
|
||||
.CLT_U_H = { 657, 1},
|
||||
.CLT_U_W = { 658, 1},
|
||||
.CLT_U_D = { 659, 1},
|
||||
.CLE_S_B = { 660, 1},
|
||||
.CLE_S_H = { 661, 1},
|
||||
.CLE_S_W = { 662, 1},
|
||||
.CLE_S_D = { 663, 1},
|
||||
.CLE_U_B = { 664, 1},
|
||||
.CLE_U_H = { 665, 1},
|
||||
.CLE_U_W = { 666, 1},
|
||||
.CLE_U_D = { 667, 1},
|
||||
.MIN_S_B = { 668, 1},
|
||||
.MIN_S_H = { 669, 1},
|
||||
.MIN_S_W = { 670, 1},
|
||||
.MIN_S_D = { 671, 1},
|
||||
.MIN_U_B = { 672, 1},
|
||||
.MIN_U_H = { 673, 1},
|
||||
.MIN_U_W = { 674, 1},
|
||||
.MIN_U_D = { 675, 1},
|
||||
.MAX_S_B = { 676, 1},
|
||||
.MAX_S_H = { 677, 1},
|
||||
.MAX_S_W = { 678, 1},
|
||||
.MAX_S_D = { 679, 1},
|
||||
.MAX_U_B = { 680, 1},
|
||||
.MAX_U_H = { 681, 1},
|
||||
.MAX_U_W = { 682, 1},
|
||||
.MAX_U_D = { 683, 1},
|
||||
.SLL_B = { 684, 1},
|
||||
.SLL_H = { 685, 1},
|
||||
.SLL_W = { 686, 1},
|
||||
.SLL_D = { 687, 1},
|
||||
.SRL_B = { 688, 1},
|
||||
.SRL_H = { 689, 1},
|
||||
.SRL_W = { 690, 1},
|
||||
.SRL_D = { 691, 1},
|
||||
.SRA_B = { 692, 1},
|
||||
.SRA_H = { 693, 1},
|
||||
.SRA_W = { 694, 1},
|
||||
.SRA_D = { 695, 1},
|
||||
.SLLI_B = { 696, 1},
|
||||
.SLLI_H = { 697, 1},
|
||||
.SLLI_W = { 698, 1},
|
||||
.SLLI_D = { 699, 1},
|
||||
.SRLI_B = { 700, 1},
|
||||
.SRLI_H = { 701, 1},
|
||||
.SRLI_W = { 702, 1},
|
||||
.SRLI_D = { 703, 1},
|
||||
.SRAI_B = { 704, 1},
|
||||
.SRAI_H = { 705, 1},
|
||||
.SRAI_W = { 706, 1},
|
||||
.SRAI_D = { 707, 1},
|
||||
.FADD_W = { 708, 1},
|
||||
.FADD_D = { 709, 1},
|
||||
.FSUB_W = { 710, 1},
|
||||
.FSUB_D = { 711, 1},
|
||||
.FMUL_W = { 712, 1},
|
||||
.FMUL_D = { 713, 1},
|
||||
.FDIV_W = { 714, 1},
|
||||
.FDIV_D = { 715, 1},
|
||||
.FSQRT_W = { 716, 1},
|
||||
.FSQRT_D = { 717, 1},
|
||||
.FRSQRT_W = { 718, 1},
|
||||
.FRSQRT_D = { 719, 1},
|
||||
.FRCP_W = { 720, 1},
|
||||
.FRCP_D = { 721, 1},
|
||||
.FRINT_W = { 722, 1},
|
||||
.FRINT_D = { 723, 1},
|
||||
.FMAX_W = { 724, 1},
|
||||
.FMAX_D = { 725, 1},
|
||||
.FMIN_W = { 726, 1},
|
||||
.FMIN_D = { 727, 1},
|
||||
.FCEQ_W = { 728, 1},
|
||||
.FCEQ_D = { 729, 1},
|
||||
.FCNE_W = { 730, 1},
|
||||
.FCNE_D = { 731, 1},
|
||||
.FCLT_W = { 732, 1},
|
||||
.FCLT_D = { 733, 1},
|
||||
.FCLE_W = { 734, 1},
|
||||
.FCLE_D = { 735, 1},
|
||||
.FFINT_S_W = { 736, 1},
|
||||
.FFINT_S_D = { 737, 1},
|
||||
.FFINT_U_W = { 738, 1},
|
||||
.FFINT_U_D = { 739, 1},
|
||||
.FTRUNC_S_W = { 740, 1},
|
||||
.FTRUNC_S_D = { 741, 1},
|
||||
.FTRUNC_U_W = { 742, 1},
|
||||
.FTRUNC_U_D = { 743, 1},
|
||||
.FCVT_S_W = { 744, 1},
|
||||
.FCVT_S_D = { 745, 1},
|
||||
.FCVT_D_W = { 746, 1},
|
||||
.LD_B = { 747, 1},
|
||||
.LD_H = { 748, 1},
|
||||
.LD_W = { 749, 1},
|
||||
.LD_D = { 750, 1},
|
||||
.ST_B = { 751, 1},
|
||||
.ST_H = { 752, 1},
|
||||
.ST_W = { 753, 1},
|
||||
.ST_D = { 754, 1},
|
||||
.LDI_B = { 755, 1},
|
||||
.LDI_H = { 756, 1},
|
||||
.LDI_W = { 757, 1},
|
||||
.LDI_D = { 758, 1},
|
||||
.COPY_S_B = { 759, 1},
|
||||
.COPY_S_H = { 760, 1},
|
||||
.COPY_S_W = { 761, 1},
|
||||
.COPY_U_B = { 762, 1},
|
||||
.COPY_U_H = { 763, 1},
|
||||
.COPY_U_W = { 764, 0},
|
||||
.INSERT_B = { 764, 1},
|
||||
.INSERT_H = { 765, 1},
|
||||
.INSERT_W = { 766, 1},
|
||||
.INSERT_D = { 767, 0},
|
||||
.INSVE_B = { 767, 1},
|
||||
.INSVE_H = { 768, 1},
|
||||
.INSVE_W = { 769, 1},
|
||||
.INSVE_D = { 770, 1},
|
||||
.SHF_B = { 771, 1},
|
||||
.SHF_H = { 772, 1},
|
||||
.SHF_W = { 773, 1},
|
||||
.VSHF_B = { 774, 1},
|
||||
.VSHF_H = { 775, 1},
|
||||
.VSHF_W = { 776, 1},
|
||||
.VSHF_D = { 777, 1},
|
||||
.SLD_B = { 778, 1},
|
||||
.SLD_H = { 779, 1},
|
||||
.SLD_W = { 780, 1},
|
||||
.SLD_D = { 781, 1},
|
||||
.SLDI_B = { 782, 1},
|
||||
.SLDI_H = { 783, 1},
|
||||
.SLDI_W = { 784, 1},
|
||||
.SLDI_D = { 785, 1},
|
||||
.SPLAT_B = { 786, 1},
|
||||
.SPLAT_H = { 787, 1},
|
||||
.SPLAT_W = { 788, 1},
|
||||
.SPLAT_D = { 789, 1},
|
||||
.SPLATI_B = { 790, 1},
|
||||
.SPLATI_H = { 791, 1},
|
||||
.SPLATI_W = { 792, 1},
|
||||
.SPLATI_D = { 793, 1},
|
||||
.BZ_V = { 794, 0},
|
||||
.BNZ_V = { 794, 0},
|
||||
.BZ_B = { 794, 0},
|
||||
.BZ_H = { 794, 0},
|
||||
.BZ_W = { 794, 0},
|
||||
.BZ_D = { 794, 0},
|
||||
.BNZ_B = { 794, 0},
|
||||
.BNZ_H = { 794, 0},
|
||||
.BNZ_W = { 794, 0},
|
||||
.BNZ_D = { 794, 0},
|
||||
.NLOC_B = { 794, 1},
|
||||
.NLOC_H = { 795, 1},
|
||||
.NLOC_W = { 796, 1},
|
||||
.NLOC_D = { 797, 1},
|
||||
.NLZC_B = { 798, 1},
|
||||
.NLZC_H = { 799, 1},
|
||||
.NLZC_W = { 800, 1},
|
||||
.NLZC_D = { 801, 1},
|
||||
.PCNT_B = { 802, 1},
|
||||
.PCNT_H = { 803, 1},
|
||||
.PCNT_W = { 804, 1},
|
||||
.PCNT_D = { 805, 1},
|
||||
.VMOV_S = { 806, 1},
|
||||
.VMOV_P = { 807, 1},
|
||||
.VMOV_T = { 808, 1},
|
||||
.VMOV_Q = { 809, 1},
|
||||
.LV_S = { 810, 1},
|
||||
.LV_Q = { 811, 1},
|
||||
.SV_S = { 812, 1},
|
||||
.SV_Q = { 813, 1},
|
||||
.LVL_Q = { 814, 1},
|
||||
.LVR_Q = { 815, 1},
|
||||
.SVL_Q = { 816, 1},
|
||||
.SVR_Q = { 817, 1},
|
||||
.VIIM_S = { 818, 1},
|
||||
.VFIM_S = { 819, 1},
|
||||
.VADD_S = { 820, 1},
|
||||
.VADD_P = { 821, 1},
|
||||
.VADD_T = { 822, 1},
|
||||
.VADD_Q = { 823, 1},
|
||||
.VSUB_S = { 824, 1},
|
||||
.VSUB_P = { 825, 1},
|
||||
.VSUB_T = { 826, 1},
|
||||
.VSUB_Q = { 827, 1},
|
||||
.VMUL_S = { 828, 1},
|
||||
.VMUL_P = { 829, 1},
|
||||
.VMUL_T = { 830, 1},
|
||||
.VMUL_Q = { 831, 1},
|
||||
.VDIV_S = { 832, 1},
|
||||
.VDIV_P = { 833, 1},
|
||||
.VDIV_T = { 834, 1},
|
||||
.VDIV_Q = { 835, 1},
|
||||
.VABS_S = { 836, 1},
|
||||
.VABS_P = { 837, 1},
|
||||
.VABS_T = { 838, 1},
|
||||
.VABS_Q = { 839, 1},
|
||||
.VNEG_S = { 840, 1},
|
||||
.VNEG_P = { 841, 1},
|
||||
.VNEG_T = { 842, 1},
|
||||
.VNEG_Q = { 843, 1},
|
||||
.VSQRT_S = { 844, 1},
|
||||
.VRCP_S = { 845, 1},
|
||||
.VRCP_P = { 846, 1},
|
||||
.VRCP_T = { 847, 1},
|
||||
.VRCP_Q = { 848, 1},
|
||||
.VRSQ_S = { 849, 1},
|
||||
.VRSQ_P = { 850, 1},
|
||||
.VRSQ_T = { 851, 1},
|
||||
.VRSQ_Q = { 852, 1},
|
||||
.VDOT_P = { 853, 1},
|
||||
.VDOT_T = { 854, 1},
|
||||
.VDOT_Q = { 855, 1},
|
||||
.VSCL_P = { 856, 1},
|
||||
.VSCL_T = { 857, 1},
|
||||
.VSCL_Q = { 858, 1},
|
||||
.VHDP_P = { 859, 1},
|
||||
.VHDP_T = { 860, 1},
|
||||
.VHDP_Q = { 861, 1},
|
||||
.VAVG_P = { 862, 1},
|
||||
.VAVG_T = { 863, 1},
|
||||
.VAVG_Q = { 864, 1},
|
||||
.VFAD_P = { 865, 1},
|
||||
.VFAD_T = { 866, 1},
|
||||
.VFAD_Q = { 867, 1},
|
||||
.VMMUL_P = { 868, 1},
|
||||
.VMMUL_T = { 869, 1},
|
||||
.VMMUL_Q = { 870, 1},
|
||||
.VTFM2_P = { 871, 1},
|
||||
.VTFM3_T = { 872, 1},
|
||||
.VTFM4_Q = { 873, 1},
|
||||
.VHTFM2_P = { 874, 1},
|
||||
.VHTFM3_T = { 875, 1},
|
||||
.VHTFM4_Q = { 876, 1},
|
||||
.VMSCL_P = { 877, 1},
|
||||
.VMSCL_T = { 878, 1},
|
||||
.VMSCL_Q = { 879, 1},
|
||||
.VMMOV_P = { 880, 1},
|
||||
.VMMOV_T = { 881, 1},
|
||||
.VMMOV_Q = { 882, 1},
|
||||
.VMIDT_P = { 883, 1},
|
||||
.VMIDT_T = { 884, 1},
|
||||
.VMIDT_Q = { 885, 1},
|
||||
.VMZERO_P = { 886, 1},
|
||||
.VMZERO_T = { 887, 1},
|
||||
.VMZERO_Q = { 888, 1},
|
||||
.VMONE_P = { 889, 1},
|
||||
.VMONE_T = { 890, 1},
|
||||
.VMONE_Q = { 891, 1},
|
||||
.VCRS_T = { 892, 1},
|
||||
.VCRSP_T = { 893, 1},
|
||||
.VQMUL_Q = { 894, 1},
|
||||
.VCMP_S = { 895, 1},
|
||||
.VCMP_P = { 896, 1},
|
||||
.VCMP_T = { 897, 1},
|
||||
.VCMP_Q = { 898, 1},
|
||||
.VMIN_S = { 899, 1},
|
||||
.VMIN_P = { 900, 1},
|
||||
.VMIN_T = { 901, 1},
|
||||
.VMIN_Q = { 902, 1},
|
||||
.VMAX_S = { 903, 1},
|
||||
.VMAX_P = { 904, 1},
|
||||
.VMAX_T = { 905, 1},
|
||||
.VMAX_Q = { 906, 1},
|
||||
.VSIN_S = { 907, 1},
|
||||
.VCOS_S = { 908, 1},
|
||||
.VEXP2_S = { 909, 1},
|
||||
.VLOG2_S = { 910, 1},
|
||||
.VASIN_S = { 911, 1},
|
||||
.VNRCP_S = { 912, 1},
|
||||
.VNSIN_S = { 913, 1},
|
||||
.VREXP2_S = { 914, 1},
|
||||
.VSGN_S = { 915, 1},
|
||||
.VI2F_S = { 916, 1},
|
||||
.VI2F_P = { 917, 1},
|
||||
.VI2F_T = { 918, 1},
|
||||
.VI2F_Q = { 919, 1},
|
||||
.VF2IN_S = { 920, 1},
|
||||
.VF2IN_P = { 921, 1},
|
||||
.VF2IN_T = { 922, 1},
|
||||
.VF2IN_Q = { 923, 1},
|
||||
.VF2IZ_S = { 924, 1},
|
||||
.VF2IZ_P = { 925, 1},
|
||||
.VF2IZ_T = { 926, 1},
|
||||
.VF2IZ_Q = { 927, 1},
|
||||
.VF2IU_S = { 928, 1},
|
||||
.VF2IU_P = { 929, 1},
|
||||
.VF2IU_T = { 930, 1},
|
||||
.VF2IU_Q = { 931, 1},
|
||||
.VF2ID_S = { 932, 1},
|
||||
.VF2ID_P = { 933, 1},
|
||||
.VF2ID_T = { 934, 1},
|
||||
.VF2ID_Q = { 935, 1},
|
||||
.VF2H_P = { 936, 1},
|
||||
.VH2F_S = { 937, 1},
|
||||
.VFLUSH = { 938, 1},
|
||||
.VSYNC = { 939, 1},
|
||||
.VNOP = { 940, 1},
|
||||
.VPFXS = { 941, 1},
|
||||
.VPFXT = { 942, 1},
|
||||
.VPFXD = { 943, 1},
|
||||
.VCST_S = { 944, 1},
|
||||
.VCST_P = { 945, 1},
|
||||
.VCST_T = { 946, 1},
|
||||
.VCST_Q = { 947, 1},
|
||||
.MFV = { 948, 1},
|
||||
.MTV = { 949, 1},
|
||||
.MFVC = { 950, 1},
|
||||
.MTVC = { 951, 1},
|
||||
.BVF = { 952, 1},
|
||||
.BVT = { 953, 1},
|
||||
.BVFL = { 954, 1},
|
||||
.BVTL = { 955, 1},
|
||||
.SHRL_PH = { 557, 1},
|
||||
.SHRLV_QB = { 558, 1},
|
||||
.SHRLV_PH = { 559, 1},
|
||||
.SHRA_QB = { 560, 1},
|
||||
.SHRA_R_QB = { 561, 1},
|
||||
.SHRA_PH = { 562, 1},
|
||||
.SHRA_R_PH = { 563, 1},
|
||||
.SHRA_R_W = { 564, 1},
|
||||
.SHRAV_QB = { 565, 1},
|
||||
.SHRAV_R_QB = { 566, 1},
|
||||
.SHRAV_PH = { 567, 1},
|
||||
.SHRAV_R_PH = { 568, 1},
|
||||
.SHRAV_R_W = { 569, 1},
|
||||
.LBUX = { 570, 1},
|
||||
.LHX = { 571, 1},
|
||||
.LWX = { 572, 1},
|
||||
.BPOSGE32 = { 573, 1},
|
||||
.BPOSGE64 = { 574, 0},
|
||||
.INSV = { 574, 1},
|
||||
.BITREV = { 575, 1},
|
||||
.ABSQ_S_PH = { 576, 1},
|
||||
.ABSQ_S_W = { 577, 1},
|
||||
.REPL_PH = { 578, 0},
|
||||
.REPLV_PH = { 578, 1},
|
||||
.REPL_QB = { 579, 0},
|
||||
.REPLV_QB = { 579, 1},
|
||||
.ADDV_B = { 580, 1},
|
||||
.ADDV_H = { 581, 1},
|
||||
.ADDV_W = { 582, 1},
|
||||
.ADDV_D = { 583, 1},
|
||||
.SUBV_B = { 584, 1},
|
||||
.SUBV_H = { 585, 1},
|
||||
.SUBV_W = { 586, 1},
|
||||
.SUBV_D = { 587, 1},
|
||||
.ADDS_S_B = { 588, 1},
|
||||
.ADDS_S_H = { 589, 1},
|
||||
.ADDS_S_W = { 590, 1},
|
||||
.ADDS_S_D = { 591, 1},
|
||||
.ADDS_U_B = { 592, 1},
|
||||
.ADDS_U_H = { 593, 1},
|
||||
.ADDS_U_W = { 594, 1},
|
||||
.ADDS_U_D = { 595, 1},
|
||||
.SUBS_S_B = { 596, 1},
|
||||
.SUBS_S_H = { 597, 1},
|
||||
.SUBS_S_W = { 598, 1},
|
||||
.SUBS_S_D = { 599, 1},
|
||||
.SUBS_U_B = { 600, 1},
|
||||
.SUBS_U_H = { 601, 1},
|
||||
.SUBS_U_W = { 602, 1},
|
||||
.SUBS_U_D = { 603, 1},
|
||||
.MULV_B = { 604, 1},
|
||||
.MULV_H = { 605, 1},
|
||||
.MULV_W = { 606, 1},
|
||||
.MULV_D = { 607, 1},
|
||||
.DIV_S_B = { 608, 1},
|
||||
.DIV_S_H = { 609, 1},
|
||||
.DIV_S_W = { 610, 1},
|
||||
.DIV_S_D = { 611, 1},
|
||||
.DIV_U_B = { 612, 1},
|
||||
.DIV_U_H = { 613, 1},
|
||||
.DIV_U_W = { 614, 1},
|
||||
.DIV_U_D = { 615, 1},
|
||||
.MOD_S_B = { 616, 1},
|
||||
.MOD_S_H = { 617, 1},
|
||||
.MOD_S_W = { 618, 1},
|
||||
.MOD_S_D = { 619, 1},
|
||||
.MOD_U_B = { 620, 1},
|
||||
.MOD_U_H = { 621, 1},
|
||||
.MOD_U_W = { 622, 1},
|
||||
.MOD_U_D = { 623, 1},
|
||||
.MADDV_B = { 624, 1},
|
||||
.MADDV_H = { 625, 1},
|
||||
.MADDV_W = { 626, 1},
|
||||
.MADDV_D = { 627, 1},
|
||||
.MSUBV_B = { 628, 1},
|
||||
.MSUBV_H = { 629, 1},
|
||||
.MSUBV_W = { 630, 1},
|
||||
.MSUBV_D = { 631, 1},
|
||||
.DOTP_S_H = { 632, 1},
|
||||
.DOTP_S_W = { 633, 1},
|
||||
.DOTP_S_D = { 634, 1},
|
||||
.DOTP_U_H = { 635, 1},
|
||||
.DOTP_U_W = { 636, 1},
|
||||
.DOTP_U_D = { 637, 1},
|
||||
.AND_V = { 638, 1},
|
||||
.OR_V = { 639, 1},
|
||||
.NOR_V = { 640, 1},
|
||||
.XOR_V = { 641, 1},
|
||||
.ANDI_B = { 642, 1},
|
||||
.ORI_B = { 643, 1},
|
||||
.NORI_B = { 644, 1},
|
||||
.XORI_B = { 645, 1},
|
||||
.BSEL_V = { 646, 1},
|
||||
.BSELI_B = { 647, 1},
|
||||
.BMNZ_V = { 648, 1},
|
||||
.BMNZI_B = { 649, 1},
|
||||
.BMZ_V = { 650, 1},
|
||||
.BMZI_B = { 651, 1},
|
||||
.CEQ_B = { 652, 1},
|
||||
.CEQ_H = { 653, 1},
|
||||
.CEQ_W = { 654, 1},
|
||||
.CEQ_D = { 655, 1},
|
||||
.CLT_S_B = { 656, 1},
|
||||
.CLT_S_H = { 657, 1},
|
||||
.CLT_S_W = { 658, 1},
|
||||
.CLT_S_D = { 659, 1},
|
||||
.CLT_U_B = { 660, 1},
|
||||
.CLT_U_H = { 661, 1},
|
||||
.CLT_U_W = { 662, 1},
|
||||
.CLT_U_D = { 663, 1},
|
||||
.CLE_S_B = { 664, 1},
|
||||
.CLE_S_H = { 665, 1},
|
||||
.CLE_S_W = { 666, 1},
|
||||
.CLE_S_D = { 667, 1},
|
||||
.CLE_U_B = { 668, 1},
|
||||
.CLE_U_H = { 669, 1},
|
||||
.CLE_U_W = { 670, 1},
|
||||
.CLE_U_D = { 671, 1},
|
||||
.MIN_S_B = { 672, 1},
|
||||
.MIN_S_H = { 673, 1},
|
||||
.MIN_S_W = { 674, 1},
|
||||
.MIN_S_D = { 675, 1},
|
||||
.MIN_U_B = { 676, 1},
|
||||
.MIN_U_H = { 677, 1},
|
||||
.MIN_U_W = { 678, 1},
|
||||
.MIN_U_D = { 679, 1},
|
||||
.MAX_S_B = { 680, 1},
|
||||
.MAX_S_H = { 681, 1},
|
||||
.MAX_S_W = { 682, 1},
|
||||
.MAX_S_D = { 683, 1},
|
||||
.MAX_U_B = { 684, 1},
|
||||
.MAX_U_H = { 685, 1},
|
||||
.MAX_U_W = { 686, 1},
|
||||
.MAX_U_D = { 687, 1},
|
||||
.SLL_B = { 688, 1},
|
||||
.SLL_H = { 689, 1},
|
||||
.SLL_W = { 690, 1},
|
||||
.SLL_D = { 691, 1},
|
||||
.SRL_B = { 692, 1},
|
||||
.SRL_H = { 693, 1},
|
||||
.SRL_W = { 694, 1},
|
||||
.SRL_D = { 695, 1},
|
||||
.SRA_B = { 696, 1},
|
||||
.SRA_H = { 697, 1},
|
||||
.SRA_W = { 698, 1},
|
||||
.SRA_D = { 699, 1},
|
||||
.SLLI_B = { 700, 1},
|
||||
.SLLI_H = { 701, 1},
|
||||
.SLLI_W = { 702, 1},
|
||||
.SLLI_D = { 703, 1},
|
||||
.SRLI_B = { 704, 1},
|
||||
.SRLI_H = { 705, 1},
|
||||
.SRLI_W = { 706, 1},
|
||||
.SRLI_D = { 707, 1},
|
||||
.SRAI_B = { 708, 1},
|
||||
.SRAI_H = { 709, 1},
|
||||
.SRAI_W = { 710, 1},
|
||||
.SRAI_D = { 711, 1},
|
||||
.FADD_W = { 712, 1},
|
||||
.FADD_D = { 713, 1},
|
||||
.FSUB_W = { 714, 1},
|
||||
.FSUB_D = { 715, 1},
|
||||
.FMUL_W = { 716, 1},
|
||||
.FMUL_D = { 717, 1},
|
||||
.FDIV_W = { 718, 1},
|
||||
.FDIV_D = { 719, 1},
|
||||
.FSQRT_W = { 720, 1},
|
||||
.FSQRT_D = { 721, 1},
|
||||
.FRSQRT_W = { 722, 1},
|
||||
.FRSQRT_D = { 723, 1},
|
||||
.FRCP_W = { 724, 1},
|
||||
.FRCP_D = { 725, 1},
|
||||
.FRINT_W = { 726, 1},
|
||||
.FRINT_D = { 727, 1},
|
||||
.FMAX_W = { 728, 1},
|
||||
.FMAX_D = { 729, 1},
|
||||
.FMIN_W = { 730, 1},
|
||||
.FMIN_D = { 731, 1},
|
||||
.FCEQ_W = { 732, 1},
|
||||
.FCEQ_D = { 733, 1},
|
||||
.FCNE_W = { 734, 1},
|
||||
.FCNE_D = { 735, 1},
|
||||
.FCLT_W = { 736, 1},
|
||||
.FCLT_D = { 737, 1},
|
||||
.FCLE_W = { 738, 1},
|
||||
.FCLE_D = { 739, 1},
|
||||
.FFINT_S_W = { 740, 1},
|
||||
.FFINT_S_D = { 741, 1},
|
||||
.FFINT_U_W = { 742, 1},
|
||||
.FFINT_U_D = { 743, 1},
|
||||
.FTRUNC_S_W = { 744, 1},
|
||||
.FTRUNC_S_D = { 745, 1},
|
||||
.FTRUNC_U_W = { 746, 1},
|
||||
.FTRUNC_U_D = { 747, 1},
|
||||
.FCVT_S_W = { 748, 1},
|
||||
.FCVT_S_D = { 749, 1},
|
||||
.FCVT_D_W = { 750, 1},
|
||||
.LD_B = { 751, 1},
|
||||
.LD_H = { 752, 1},
|
||||
.LD_W = { 753, 1},
|
||||
.LD_D = { 754, 1},
|
||||
.ST_B = { 755, 1},
|
||||
.ST_H = { 756, 1},
|
||||
.ST_W = { 757, 1},
|
||||
.ST_D = { 758, 1},
|
||||
.LDI_B = { 759, 1},
|
||||
.LDI_H = { 760, 1},
|
||||
.LDI_W = { 761, 1},
|
||||
.LDI_D = { 762, 1},
|
||||
.COPY_S_B = { 763, 1},
|
||||
.COPY_S_H = { 764, 1},
|
||||
.COPY_S_W = { 765, 1},
|
||||
.COPY_U_B = { 766, 1},
|
||||
.COPY_U_H = { 767, 1},
|
||||
.COPY_U_W = { 768, 0},
|
||||
.INSERT_B = { 768, 1},
|
||||
.INSERT_H = { 769, 1},
|
||||
.INSERT_W = { 770, 1},
|
||||
.INSERT_D = { 771, 0},
|
||||
.INSVE_B = { 771, 1},
|
||||
.INSVE_H = { 772, 1},
|
||||
.INSVE_W = { 773, 1},
|
||||
.INSVE_D = { 774, 1},
|
||||
.SHF_B = { 775, 1},
|
||||
.SHF_H = { 776, 1},
|
||||
.SHF_W = { 777, 1},
|
||||
.VSHF_B = { 778, 1},
|
||||
.VSHF_H = { 779, 1},
|
||||
.VSHF_W = { 780, 1},
|
||||
.VSHF_D = { 781, 1},
|
||||
.SLD_B = { 782, 1},
|
||||
.SLD_H = { 783, 1},
|
||||
.SLD_W = { 784, 1},
|
||||
.SLD_D = { 785, 1},
|
||||
.SLDI_B = { 786, 1},
|
||||
.SLDI_H = { 787, 1},
|
||||
.SLDI_W = { 788, 1},
|
||||
.SLDI_D = { 789, 1},
|
||||
.SPLAT_B = { 790, 1},
|
||||
.SPLAT_H = { 791, 1},
|
||||
.SPLAT_W = { 792, 1},
|
||||
.SPLAT_D = { 793, 1},
|
||||
.SPLATI_B = { 794, 1},
|
||||
.SPLATI_H = { 795, 1},
|
||||
.SPLATI_W = { 796, 1},
|
||||
.SPLATI_D = { 797, 1},
|
||||
.BZ_V = { 798, 0},
|
||||
.BNZ_V = { 798, 0},
|
||||
.BZ_B = { 798, 0},
|
||||
.BZ_H = { 798, 0},
|
||||
.BZ_W = { 798, 0},
|
||||
.BZ_D = { 798, 0},
|
||||
.BNZ_B = { 798, 0},
|
||||
.BNZ_H = { 798, 0},
|
||||
.BNZ_W = { 798, 0},
|
||||
.BNZ_D = { 798, 0},
|
||||
.NLOC_B = { 798, 1},
|
||||
.NLOC_H = { 799, 1},
|
||||
.NLOC_W = { 800, 1},
|
||||
.NLOC_D = { 801, 1},
|
||||
.NLZC_B = { 802, 1},
|
||||
.NLZC_H = { 803, 1},
|
||||
.NLZC_W = { 804, 1},
|
||||
.NLZC_D = { 805, 1},
|
||||
.PCNT_B = { 806, 1},
|
||||
.PCNT_H = { 807, 1},
|
||||
.PCNT_W = { 808, 1},
|
||||
.PCNT_D = { 809, 1},
|
||||
.VMOV_S = { 810, 1},
|
||||
.VMOV_P = { 811, 1},
|
||||
.VMOV_T = { 812, 1},
|
||||
.VMOV_Q = { 813, 1},
|
||||
.LV_S = { 814, 1},
|
||||
.LV_Q = { 815, 1},
|
||||
.SV_S = { 816, 1},
|
||||
.SV_Q = { 817, 1},
|
||||
.LVL_Q = { 818, 1},
|
||||
.LVR_Q = { 819, 1},
|
||||
.SVL_Q = { 820, 1},
|
||||
.SVR_Q = { 821, 1},
|
||||
.VIIM_S = { 822, 1},
|
||||
.VFIM_S = { 823, 1},
|
||||
.VADD_S = { 824, 1},
|
||||
.VADD_P = { 825, 1},
|
||||
.VADD_T = { 826, 1},
|
||||
.VADD_Q = { 827, 1},
|
||||
.VSUB_S = { 828, 1},
|
||||
.VSUB_P = { 829, 1},
|
||||
.VSUB_T = { 830, 1},
|
||||
.VSUB_Q = { 831, 1},
|
||||
.VMUL_S = { 832, 1},
|
||||
.VMUL_P = { 833, 1},
|
||||
.VMUL_T = { 834, 1},
|
||||
.VMUL_Q = { 835, 1},
|
||||
.VDIV_S = { 836, 1},
|
||||
.VDIV_P = { 837, 1},
|
||||
.VDIV_T = { 838, 1},
|
||||
.VDIV_Q = { 839, 1},
|
||||
.VABS_S = { 840, 1},
|
||||
.VABS_P = { 841, 1},
|
||||
.VABS_T = { 842, 1},
|
||||
.VABS_Q = { 843, 1},
|
||||
.VNEG_S = { 844, 1},
|
||||
.VNEG_P = { 845, 1},
|
||||
.VNEG_T = { 846, 1},
|
||||
.VNEG_Q = { 847, 1},
|
||||
.VSQRT_S = { 848, 1},
|
||||
.VRCP_S = { 849, 1},
|
||||
.VRCP_P = { 850, 1},
|
||||
.VRCP_T = { 851, 1},
|
||||
.VRCP_Q = { 852, 1},
|
||||
.VRSQ_S = { 853, 1},
|
||||
.VRSQ_P = { 854, 1},
|
||||
.VRSQ_T = { 855, 1},
|
||||
.VRSQ_Q = { 856, 1},
|
||||
.VDOT_P = { 857, 1},
|
||||
.VDOT_T = { 858, 1},
|
||||
.VDOT_Q = { 859, 1},
|
||||
.VSCL_P = { 860, 1},
|
||||
.VSCL_T = { 861, 1},
|
||||
.VSCL_Q = { 862, 1},
|
||||
.VHDP_P = { 863, 1},
|
||||
.VHDP_T = { 864, 1},
|
||||
.VHDP_Q = { 865, 1},
|
||||
.VAVG_P = { 866, 1},
|
||||
.VAVG_T = { 867, 1},
|
||||
.VAVG_Q = { 868, 1},
|
||||
.VFAD_P = { 869, 1},
|
||||
.VFAD_T = { 870, 1},
|
||||
.VFAD_Q = { 871, 1},
|
||||
.VMMUL_P = { 872, 1},
|
||||
.VMMUL_T = { 873, 1},
|
||||
.VMMUL_Q = { 874, 1},
|
||||
.VTFM2_P = { 875, 1},
|
||||
.VTFM3_T = { 876, 1},
|
||||
.VTFM4_Q = { 877, 1},
|
||||
.VHTFM2_P = { 878, 1},
|
||||
.VHTFM3_T = { 879, 1},
|
||||
.VHTFM4_Q = { 880, 1},
|
||||
.VMSCL_P = { 881, 1},
|
||||
.VMSCL_T = { 882, 1},
|
||||
.VMSCL_Q = { 883, 1},
|
||||
.VMMOV_P = { 884, 1},
|
||||
.VMMOV_T = { 885, 1},
|
||||
.VMMOV_Q = { 886, 1},
|
||||
.VMIDT_P = { 887, 1},
|
||||
.VMIDT_T = { 888, 1},
|
||||
.VMIDT_Q = { 889, 1},
|
||||
.VMZERO_P = { 890, 1},
|
||||
.VMZERO_T = { 891, 1},
|
||||
.VMZERO_Q = { 892, 1},
|
||||
.VMONE_P = { 893, 1},
|
||||
.VMONE_T = { 894, 1},
|
||||
.VMONE_Q = { 895, 1},
|
||||
.VCRS_T = { 896, 1},
|
||||
.VCRSP_T = { 897, 1},
|
||||
.VQMUL_Q = { 898, 1},
|
||||
.VCMP_S = { 899, 1},
|
||||
.VCMP_P = { 900, 1},
|
||||
.VCMP_T = { 901, 1},
|
||||
.VCMP_Q = { 902, 1},
|
||||
.VMIN_S = { 903, 1},
|
||||
.VMIN_P = { 904, 1},
|
||||
.VMIN_T = { 905, 1},
|
||||
.VMIN_Q = { 906, 1},
|
||||
.VMAX_S = { 907, 1},
|
||||
.VMAX_P = { 908, 1},
|
||||
.VMAX_T = { 909, 1},
|
||||
.VMAX_Q = { 910, 1},
|
||||
.VSIN_S = { 911, 1},
|
||||
.VCOS_S = { 912, 1},
|
||||
.VEXP2_S = { 913, 1},
|
||||
.VLOG2_S = { 914, 1},
|
||||
.VASIN_S = { 915, 1},
|
||||
.VNRCP_S = { 916, 1},
|
||||
.VNSIN_S = { 917, 1},
|
||||
.VREXP2_S = { 918, 1},
|
||||
.VSGN_S = { 919, 1},
|
||||
.VI2F_S = { 920, 1},
|
||||
.VI2F_P = { 921, 1},
|
||||
.VI2F_T = { 922, 1},
|
||||
.VI2F_Q = { 923, 1},
|
||||
.VF2IN_S = { 924, 1},
|
||||
.VF2IN_P = { 925, 1},
|
||||
.VF2IN_T = { 926, 1},
|
||||
.VF2IN_Q = { 927, 1},
|
||||
.VF2IZ_S = { 928, 1},
|
||||
.VF2IZ_P = { 929, 1},
|
||||
.VF2IZ_T = { 930, 1},
|
||||
.VF2IZ_Q = { 931, 1},
|
||||
.VF2IU_S = { 932, 1},
|
||||
.VF2IU_P = { 933, 1},
|
||||
.VF2IU_T = { 934, 1},
|
||||
.VF2IU_Q = { 935, 1},
|
||||
.VF2ID_S = { 936, 1},
|
||||
.VF2ID_P = { 937, 1},
|
||||
.VF2ID_T = { 938, 1},
|
||||
.VF2ID_Q = { 939, 1},
|
||||
.VF2H_P = { 940, 1},
|
||||
.VH2F_S = { 941, 1},
|
||||
.VFLUSH = { 942, 1},
|
||||
.VSYNC = { 943, 1},
|
||||
.VNOP = { 944, 1},
|
||||
.VPFXS = { 945, 1},
|
||||
.VPFXT = { 946, 1},
|
||||
.VPFXD = { 947, 1},
|
||||
.VCST_S = { 948, 1},
|
||||
.VCST_P = { 949, 1},
|
||||
.VCST_T = { 950, 1},
|
||||
.VCST_Q = { 951, 1},
|
||||
.MFV = { 952, 1},
|
||||
.MTV = { 953, 1},
|
||||
.MFVC = { 954, 1},
|
||||
.MTVC = { 955, 1},
|
||||
.BVF = { 956, 1},
|
||||
.BVT = { 957, 1},
|
||||
.BVFL = { 958, 1},
|
||||
.BVTL = { 959, 1},
|
||||
}
|
||||
|
||||
@@ -265,6 +265,13 @@ do
|
||||
if r then sections[#sections+1]=r end
|
||||
end
|
||||
|
||||
-- ---- DSP ASE shift by immediate (Rd, Rt, sa) ------------------------------
|
||||
for _, b in ipairs({{"SHRA_QB","shra.qb",7},{"SHRA_R_QB","shra_r.qb",7},{"SHRA_R_PH","shra_r.ph",15},{"SHRL_PH","shrl.ph",15}}) do
|
||||
local r = entry(b[1], "{.GPR,.GPR,.IMM5,.NONE}", "{.RD,.RT,.DSP_SA,.NONE}", "DSP_R2",
|
||||
function(v) return string.format("%s $%d,$%d,%d", b[2], v[1], v[2], v[3]) end, {31,31,b[3]})
|
||||
if r then sections[#sections+1]=r end
|
||||
end
|
||||
|
||||
-- ---- splice into the SoT ---------------------------------------------------
|
||||
local region = " // SPECGEN:BEGIN\n" .. table.concat(sections, "\n") .. "\n // SPECGEN:END"
|
||||
local fh = assert(io.open(TABLE, "r")); local src = fh:read("*a"); fh:close()
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user