175fd0b74Schristos /* TI C6X opcode table. 2*e992f068Schristos Copyright (C) 2010-2022 Free Software Foundation, Inc. 375fd0b74Schristos 475fd0b74Schristos This program is free software; you can redistribute it and/or modify 575fd0b74Schristos it under the terms of the GNU General Public License as published by 675fd0b74Schristos the Free Software Foundation; either version 3 of the License, or 775fd0b74Schristos (at your option) any later version. 875fd0b74Schristos 975fd0b74Schristos This program is distributed in the hope that it will be useful, 1075fd0b74Schristos but WITHOUT ANY WARRANTY; without even the implied warranty of 1175fd0b74Schristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1275fd0b74Schristos GNU General Public License for more details. 1375fd0b74Schristos 1475fd0b74Schristos You should have received a copy of the GNU General Public License 1575fd0b74Schristos along with this program; if not, write to the Free Software 1675fd0b74Schristos Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 1775fd0b74Schristos MA 02110-1301, USA. */ 1875fd0b74Schristos 1975fd0b74Schristos /* Define the INSN macro before including this file; it takes as 2075fd0b74Schristos arguments the fields from tic6x_opcode (defined in tic6x.h). The 2175fd0b74Schristos name is given as an identifier; the subsequent four operands should 2275fd0b74Schristos have "tic6x_func_unit_", "tic6x_insn_format_", "tic6x_pipeline_" 2375fd0b74Schristos and "TIC6X_INSN_", respectively, prepended to them by the macro 2475fd0b74Schristos definition. Also define INSNE, which has a second argument that 2575fd0b74Schristos goes after tic6x_opcode_NAME_ to form the enumeration value for 2675fd0b74Schristos this instruction, where the value otherwise formed from the name, 2775fd0b74Schristos functional unit and format is ambiguous, but otherwise has the same 2875fd0b74Schristos arguments as INSN. */ 2975fd0b74Schristos 3075fd0b74Schristos #define TIC6X_INSN_C64X_AND_C67X TIC6X_INSN_C64X|TIC6X_INSN_C67X 3175fd0b74Schristos #define tic6x_insn_format_nfu_s_branch_nop_cst \ 3275fd0b74Schristos tic6x_insn_format_s_branch_nop_cst 3375fd0b74Schristos #define tic6x_insn_format_s_l_1_or_2_src tic6x_insn_format_l_1_or_2_src 3475fd0b74Schristos #define RAN(id, min, max) { CONCAT2(tic6x_field_,id), (min), (max) } 3575fd0b74Schristos #define FIX(id, val) RAN(id, val, val) 3675fd0b74Schristos #define FIX0() 0, { { 0, 0, 0 } } 3775fd0b74Schristos #define FIX1(a) 1, { a } 3875fd0b74Schristos #define FIX2(a, b) 2, { a, b } 3975fd0b74Schristos #define FIX3(a, b, c) 3, { a, b, c } 4075fd0b74Schristos #define FIX4(a, b, c, d) 4, { a, b, c, d } 41*e992f068Schristos #define OP0() 0, { { 0, 0, false, 0, 0, 0, 0 } } 4275fd0b74Schristos #define OP1(a) 1, { a } 4375fd0b74Schristos #define OP2(a, b) 2, { a, b } 4475fd0b74Schristos #define OP3(a, b, c) 3, { a, b, c } 4575fd0b74Schristos #define OP4(a, b, c, d) 4, { a, b, c, d } 4675fd0b74Schristos #define OACST { tic6x_operand_asm_const, 0, tic6x_rw_none, 0, 0, 0, 0 } 4775fd0b74Schristos #define OLCST { tic6x_operand_link_const, 0, tic6x_rw_none, 0, 0, 0, 0 } 4875fd0b74Schristos #define OHWCSTM1 { tic6x_operand_hw_const_minus_1, 0, tic6x_rw_none, 0, 0, 0, 0 } 4975fd0b74Schristos #define OHWCST0 { tic6x_operand_hw_const_0, 0, tic6x_rw_none, 0, 0, 0, 0 } 5075fd0b74Schristos #define OHWCST1 { tic6x_operand_hw_const_1, 0, tic6x_rw_none, 0, 0, 0, 0 } 5175fd0b74Schristos #define OHWCST5 { tic6x_operand_hw_const_5, 0, tic6x_rw_none, 0, 0, 0, 0 } 5275fd0b74Schristos #define OHWCST16 { tic6x_operand_hw_const_16, 0, tic6x_rw_none, 0, 0, 0, 0 } 5375fd0b74Schristos #define OHWCST24 { tic6x_operand_hw_const_24, 0, tic6x_rw_none, 0, 0, 0, 0 } 5475fd0b74Schristos #define OHWCST31 { tic6x_operand_hw_const_31, 0, tic6x_rw_none, 0, 0, 0, 0 } 5575fd0b74Schristos #define OFULIST { tic6x_operand_func_unit, 0, tic6x_rw_none, 0, 0, 0, 0 } 5675fd0b74Schristos #define ORIRP1 { tic6x_operand_irp, 4, tic6x_rw_read, 1, 1, 0, 0 } 5775fd0b74Schristos #define ORNRP1 { tic6x_operand_nrp, 4, tic6x_rw_read, 1, 1, 0, 0 } 5875fd0b74Schristos #define OWREG1 { tic6x_operand_reg, 4, tic6x_rw_write, 1, 1, 0, 0 } 5975fd0b74Schristos #define OWREG1Z { tic6x_operand_zreg, 4, tic6x_rw_write, 1, 1, 0, 0 } 6075fd0b74Schristos #define OWREG1NORS { tic6x_operand_reg_nors, 4, tic6x_rw_write, 1, 1, 0, 0 } 6175fd0b74Schristos #define ORREG1B { tic6x_operand_reg_bside, 4, tic6x_rw_write, 1, 1, 0, 0 } 6275fd0b74Schristos #define ORREG1BNORS { tic6x_operand_reg_bside_nors, 4, tic6x_rw_write, 1, 1, 0, 0 } 6375fd0b74Schristos #define OWRETREG1 { tic6x_operand_retreg, 4, tic6x_rw_write, 1, 1, 0, 0 } 6475fd0b74Schristos #define ORREG1 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 1, 0, 0 } 6575fd0b74Schristos #define ORDREG1 { tic6x_operand_dreg, 4, tic6x_rw_read, 1, 1, 0, 0 } 6675fd0b74Schristos #define ORTREG1 { tic6x_operand_treg, 4, tic6x_rw_read, 1, 1, 0, 0 } 6775fd0b74Schristos #define ORWREG1 { tic6x_operand_reg, 4, tic6x_rw_read_write, 1, 1, 0, 0 } 6875fd0b74Schristos #define ORB15REG1 { tic6x_operand_b15reg, 4, tic6x_rw_read, 1, 1, 0, 0 } 6975fd0b74Schristos #define OWB15REG1 { tic6x_operand_b15reg, 4, tic6x_rw_write, 1, 1, 0, 0 } 7075fd0b74Schristos #define ORAREG1 { tic6x_operand_areg, 4, tic6x_rw_read, 1, 1, 0, 0 } 7175fd0b74Schristos #define ORXREG1 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 1, 0, 0 } 7275fd0b74Schristos #define ORREG12 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 2, 0, 0 } 7375fd0b74Schristos #define ORREG14 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 4, 0, 0 } 7475fd0b74Schristos #define ORXREG14 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 4, 0, 0 } 7575fd0b74Schristos #define OWREG2 { tic6x_operand_reg, 4, tic6x_rw_write, 2, 2, 0, 0 } 7675fd0b74Schristos #define OWREG4 { tic6x_operand_reg, 4, tic6x_rw_write, 4, 4, 0, 0 } 7775fd0b74Schristos #define OWREG9 { tic6x_operand_reg, 4, tic6x_rw_write, 9, 9, 0, 0 } 7875fd0b74Schristos #define OWDREG5 { tic6x_operand_dreg, 4, tic6x_rw_write, 5, 5, 0, 0 } 7975fd0b74Schristos #define OWTREG5 { tic6x_operand_treg, 4, tic6x_rw_write, 5, 5, 0, 0 } 8075fd0b74Schristos #define OWREGL1 { tic6x_operand_regpair, 5, tic6x_rw_write, 1, 1, 1, 1 } 8175fd0b74Schristos #define ORREGL1 { tic6x_operand_regpair, 5, tic6x_rw_read, 1, 1, 1, 1 } 8275fd0b74Schristos #define OWREGD1 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 1, 1 } 8375fd0b74Schristos #define OWREGD12 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 2, 2 } 8475fd0b74Schristos #define OWREGD4 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 4, 4 } 8575fd0b74Schristos #define ORREGD1 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 1, 1 } 8675fd0b74Schristos #define OWREGD45 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 5, 5 } 8775fd0b74Schristos #define OWREGD67 { tic6x_operand_regpair, 8, tic6x_rw_write, 6, 6, 7, 7 } 8875fd0b74Schristos #define ORDREGD1 { tic6x_operand_dregpair, 8, tic6x_rw_read, 1, 1, 1, 1 } 8975fd0b74Schristos #define ORTREGD1 { tic6x_operand_tregpair, 8, tic6x_rw_read, 1, 1, 1, 1 } 9075fd0b74Schristos #define OWDREGD5 { tic6x_operand_dregpair, 8, tic6x_rw_write, 5, 5, 5, 5 } 9175fd0b74Schristos #define OWTREGD5 { tic6x_operand_tregpair, 8, tic6x_rw_write, 5, 5, 5, 5 } 9275fd0b74Schristos #define ORREGD12 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 2, 2 } 9375fd0b74Schristos #define ORXREGD12 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 1, 2, 2 } 9475fd0b74Schristos #define ORREGD1234 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 2, 3, 4 } 9575fd0b74Schristos #define ORXREGD1324 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 3, 2, 4 } 9675fd0b74Schristos #define OWREGD910 { tic6x_operand_regpair, 8, tic6x_rw_write, 9, 9, 10, 10 } 9775fd0b74Schristos #define ORCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_read, 1, 1, 0, 0 } 9875fd0b74Schristos #define OWCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_write, 1, 1, 0, 0 } 9975fd0b74Schristos #define OWILC1 { tic6x_operand_ilc, 4, tic6x_rw_write, 1, 1, 0, 0 } 10075fd0b74Schristos #define ORMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_read, 3, 3, 0, 0 } 10175fd0b74Schristos #define OWMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_write, 3, 3, 0, 0 } 10275fd0b74Schristos #define ORMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_read, 3, 3, 0, 0 } 10375fd0b74Schristos #define OWMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_write, 3, 3, 0, 0 } 10475fd0b74Schristos #define ORMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_read, 3, 3, 0, 0 } 10575fd0b74Schristos #define OWMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_write, 3, 3, 0, 0 } 10675fd0b74Schristos #define ORMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_read, 3, 3, 0, 0 } 10775fd0b74Schristos #define OWMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_write, 3, 3, 0, 0 } 10875fd0b74Schristos #define ORMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_read, 3, 3, 0, 0 } 10975fd0b74Schristos #define OWMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_write, 3, 3, 0, 0 } 11075fd0b74Schristos #define ORMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_read, 3, 3, 0, 0 } 11175fd0b74Schristos #define OWMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_write, 3, 3, 0, 0 } 11275fd0b74Schristos #define ORMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_read, 3, 3, 0, 0 } 11375fd0b74Schristos #define OWMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_write, 3, 3, 0, 0 } 11475fd0b74Schristos #define ORMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_read, 3, 3, 0, 0 } 11575fd0b74Schristos #define OWMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_write, 3, 3, 0, 0 } 11675fd0b74Schristos #define ORMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_read, 3, 3, 0, 0 } 11775fd0b74Schristos #define OWMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_write, 3, 3, 0, 0 } 11875fd0b74Schristos #define ENC(id, meth, op) { \ 11975fd0b74Schristos CONCAT2(tic6x_field_,id), \ 12075fd0b74Schristos CONCAT2(tic6x_coding_,meth), \ 12175fd0b74Schristos op \ 12275fd0b74Schristos } 12375fd0b74Schristos #define ENC0() 0, { { 0, 0, 0 } } 12475fd0b74Schristos #define ENC1(a) 1, { a } 12575fd0b74Schristos #define ENC2(a, b) 2, { a, b } 12675fd0b74Schristos #define ENC3(a, b, c) 3, { a, b, c } 12775fd0b74Schristos #define ENC4(a, b, c, d) 4, { a, b, c, d } 12875fd0b74Schristos #define ENC5(a, b, c, d, e) 5, { a, b, c, d, e } 12975fd0b74Schristos #define ENC6(a, b, c, d, e, f) 6, { a, b, c, d, e, f } 13075fd0b74Schristos #define ENC7(a, b, c, d, e, f, g) 7, { a, b, c, d, e, f, g } 13175fd0b74Schristos 13275fd0b74Schristos INSN(abs, l, unary, 1cycle, C62X, 0, 13375fd0b74Schristos FIX1(FIX(op, 0)), 13475fd0b74Schristos OP2(ORXREG1, OWREG1), 13575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 13675fd0b74Schristos ENC(dst, reg, 1))) 13775fd0b74Schristos INSN(abs, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 13875fd0b74Schristos FIX3(FIX(op, 0x38), FIX(x, 0), FIX(src1, 0)), 13975fd0b74Schristos OP2(ORREGL1, OWREGL1), 14075fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) 14175fd0b74Schristos 14275fd0b74Schristos INSN(abs2, l, unary, 1cycle, C64X, 0, 14375fd0b74Schristos FIX1(FIX(op, 0x4)), 14475fd0b74Schristos OP2(ORXREG1, OWREG1), 14575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 14675fd0b74Schristos ENC(dst, reg, 1))) 14775fd0b74Schristos 14875fd0b74Schristos INSN(absdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS, 14975fd0b74Schristos FIX2(FIX(op, 0x2c), FIX(x, 0)), 15075fd0b74Schristos OP2(ORREGD1, OWREGD12), 15175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), 15275fd0b74Schristos ENC(dst, reg, 1))) 15375fd0b74Schristos 15475fd0b74Schristos INSN(abssp, s, unary, 1cycle, C67X, 0, 15575fd0b74Schristos FIX1(FIX(op, 0)), 15675fd0b74Schristos OP2(ORXREG1, OWREG1), 15775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 15875fd0b74Schristos ENC(dst, reg, 1))) 15975fd0b74Schristos 16075fd0b74Schristos INSNE(add, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, 16175fd0b74Schristos FIX1(FIX(op, 0x3)), 16275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 16375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 16475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 16575fd0b74Schristos INSNE(add, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, 0, 16675fd0b74Schristos FIX1(FIX(op, 0x23)), 16775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGL1), 16875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 16975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 17075fd0b74Schristos INSNE(add, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0, 17175fd0b74Schristos FIX1(FIX(op, 0x21)), 17275fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREGL1), 17375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 17475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 17575fd0b74Schristos INSNE(add, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, 17675fd0b74Schristos FIX1(FIX(op, 0x2)), 17775fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 17875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 17975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 18075fd0b74Schristos INSNE(add, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 18175fd0b74Schristos FIX2(FIX(op, 0x20), FIX(x, 0)), 18275fd0b74Schristos OP3(OACST, ORREGL1, OWREGL1), 18375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1), 18475fd0b74Schristos ENC(dst, reg, 2))) 18575fd0b74Schristos INSNE(add, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0, 18675fd0b74Schristos FIX1(FIX(op, 0x7)), 18775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 18875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 18975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 19075fd0b74Schristos INSNE(add, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0, 19175fd0b74Schristos FIX1(FIX(op, 0x6)), 19275fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 19375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 19475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 19575fd0b74Schristos INSNE(add, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, 19675fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 19775fd0b74Schristos FIX1(FIX(op, 0x10)), 19875fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 19975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 20075fd0b74Schristos ENC(dst, reg, 2))) 20175fd0b74Schristos INSNE(add, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, 20275fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 20375fd0b74Schristos FIX1(FIX(op, 0x12)), 20475fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 20575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 20675fd0b74Schristos ENC(dst, reg, 2))) 20775fd0b74Schristos INSNE(add, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0), 20875fd0b74Schristos FIX1(FIX(op, 0xa)), 20975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 21075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 21175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 21275fd0b74Schristos INSNE(add, d_xsi_s5_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0), 21375fd0b74Schristos FIX1(FIX(op, 0xb)), 21475fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 21575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 21675fd0b74Schristos ENC(src1, scst, 1), ENC(dst, reg, 2))) 21775fd0b74Schristos 21875fd0b74Schristos /* 16 bits insn */ 21975fd0b74Schristos INSN(add, l, l3_sat_0, 1cycle, C64XP, 0, 22075fd0b74Schristos FIX1(FIX(op, 0x0)), 22175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 22275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 22375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 22475fd0b74Schristos INSN(add, l, l3i, 1cycle, C64XP, 0, 22575fd0b74Schristos FIX0(), 22675fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 22775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(cst, scst_l3i, 0), 22875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 22975fd0b74Schristos INSN(add, l, lx1, 1cycle, C64XP, 23075fd0b74Schristos TIC6X_FLAG_NO_CROSS, 23175fd0b74Schristos FIX1(FIX(op, 0x3)), 23275fd0b74Schristos OP3(OHWCSTM1, ORREG1, OWREG1), 23375fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2))) 23475fd0b74Schristos INSN(add, s, s3_sat_0, 1cycle, C64XP, 0, 23575fd0b74Schristos FIX1(FIX(op, 0x0)), 23675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 23775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 23875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 23975fd0b74Schristos INSN(add, s, sx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 24075fd0b74Schristos FIX1(FIX(op, 0x3)), 24175fd0b74Schristos OP3(OHWCSTM1, ORREG1, OWREG1), 24275fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2))) 24375fd0b74Schristos INSN(add, s, sx2op, 1cycle, C64XP, 0, 24475fd0b74Schristos FIX1(FIX(op, 0x0)), 24575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 24675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2), 24775fd0b74Schristos ENC(src2, reg, 1), ENC(x, xpath, 1))) 24875fd0b74Schristos INSN(add, d, dx2op, 1cycle, C64XP, 0, 24975fd0b74Schristos FIX1(FIX(op, 0x0)), 25075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 25175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 1), ENC(srcdst, reg, 0), 25275fd0b74Schristos ENC(src2, reg, 1), ENC(srcdst, reg, 2))) 25375fd0b74Schristos INSNU(add, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 25475fd0b74Schristos FIX2(FIX(op, 0x5), FIX(unit, 0x0)), 25575fd0b74Schristos OP3(ORREG1, OHWCST1, OWREG1), 25675fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2))) 25775fd0b74Schristos INSNU(add, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 25875fd0b74Schristos FIX2(FIX(op, 0x5), FIX(unit, 0x1)), 25975fd0b74Schristos OP3(ORREG1, OHWCST1, OWREG1), 26075fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2))) 26175fd0b74Schristos INSNU(add, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 26275fd0b74Schristos FIX2(FIX(op, 0x5), FIX(unit, 0x2)), 26375fd0b74Schristos OP3(ORREG1, OHWCST1, OWREG1), 26475fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2))) 26575fd0b74Schristos /**/ 26675fd0b74Schristos 26775fd0b74Schristos INSNE(addab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 26875fd0b74Schristos FIX1(FIX(op, 0x30)), 26975fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 27075fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 27175fd0b74Schristos ENC(dst, reg, 2))) 27275fd0b74Schristos INSNE(addab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, 27375fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 27475fd0b74Schristos FIX1(FIX(op, 0x32)), 27575fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 27675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 27775fd0b74Schristos ENC(dst, reg, 2))) 27875fd0b74Schristos INSN(addab, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0), 27975fd0b74Schristos FIX1(FIX(op, 3)), 28075fd0b74Schristos OP3(ORAREG1, OLCST, OWREG1), 28175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 1), 28275fd0b74Schristos ENC(dst, reg, 2))) 28375fd0b74Schristos 28475fd0b74Schristos INSNE(addad, d_si_si_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X, 28575fd0b74Schristos TIC6X_FLAG_NO_CROSS, 28675fd0b74Schristos FIX1(FIX(op, 0x3c)), 28775fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 28875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 28975fd0b74Schristos ENC(dst, reg, 2))) 29075fd0b74Schristos INSNE(addad, d_si_u5_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X, 29175fd0b74Schristos TIC6X_FLAG_NO_CROSS, 29275fd0b74Schristos FIX1(FIX(op, 0x3d)), 29375fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 29475fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 29575fd0b74Schristos ENC(dst, reg, 2))) 29675fd0b74Schristos 29775fd0b74Schristos INSNE(addah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 29875fd0b74Schristos FIX1(FIX(op, 0x34)), 29975fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 30075fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 30175fd0b74Schristos ENC(dst, reg, 2))) 30275fd0b74Schristos INSNE(addah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, 30375fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 30475fd0b74Schristos FIX1(FIX(op, 0x36)), 30575fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 30675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 30775fd0b74Schristos ENC(dst, reg, 2))) 30875fd0b74Schristos INSN(addah, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0), 30975fd0b74Schristos FIX1(FIX(op, 5)), 31075fd0b74Schristos OP3(ORAREG1, OLCST, OWREG1), 31175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 1), 31275fd0b74Schristos ENC(dst, reg, 2))) 31375fd0b74Schristos 31475fd0b74Schristos INSNE(addaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 31575fd0b74Schristos FIX1(FIX(op, 0x38)), 31675fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 31775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 31875fd0b74Schristos ENC(dst, reg, 2))) 31975fd0b74Schristos INSNE(addaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, 32075fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 32175fd0b74Schristos FIX1(FIX(op, 0x3a)), 32275fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 32375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 32475fd0b74Schristos ENC(dst, reg, 2))) 32575fd0b74Schristos INSN(addaw, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0), 32675fd0b74Schristos FIX1(FIX(op, 7)), 32775fd0b74Schristos OP3(ORAREG1, OLCST, OWREG1), 32875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 1), 32975fd0b74Schristos ENC(dst, reg, 2))) 33075fd0b74Schristos 33175fd0b74Schristos /* 16 bits insn */ 33275fd0b74Schristos INSN(addaw, d, dx5, 1cycle, C64XP, TIC6X_FLAG_INSN16_BSIDE, 33375fd0b74Schristos FIX0(), 33475fd0b74Schristos OP3(ORB15REG1, OACST, OWREG1), 33575fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, ucst, 1), ENC(dst, reg, 2))) 33675fd0b74Schristos INSN(addaw, d, dx5p, 1cycle, C64XP, TIC6X_FLAG_INSN16_BSIDE, 33775fd0b74Schristos FIX1(FIX(op, 0)), 33875fd0b74Schristos OP3(ORB15REG1, OACST, OWB15REG1), 33975fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, ucst, 1))) 34075fd0b74Schristos /**/ 34175fd0b74Schristos 34275fd0b74Schristos INSN(adddp, l, 1_or_2_src, addsubdp, C67X, 0, 34375fd0b74Schristos FIX1(FIX(op, 0x18)), 34475fd0b74Schristos OP3(ORREGD12, ORXREGD12, OWREGD67), 34575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 34675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 34775fd0b74Schristos INSN(adddp, s, l_1_or_2_src, addsubdp, C67XP, 0, 34875fd0b74Schristos FIX1(FIX(op, 0x72)), 34975fd0b74Schristos OP3(ORREGD12, ORXREGD12, OWREGD67), 35075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 35175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 35275fd0b74Schristos 35375fd0b74Schristos INSN(addk, s, addk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 35475fd0b74Schristos FIX0(), 35575fd0b74Schristos OP2(OLCST, OWREG1), 35675fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1))) 35775fd0b74Schristos 35875fd0b74Schristos /* 16 bits insn */ 35975fd0b74Schristos INSN(addk, s, sx5, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 36075fd0b74Schristos FIX0(), 36175fd0b74Schristos OP2(OACST, OWREG1), 36275fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1))) 36375fd0b74Schristos /**/ 36475fd0b74Schristos 36575fd0b74Schristos INSN(addkpc, s, addkpc, 1cycle, C64X, 36675fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_SIDE_B_ONLY, 36775fd0b74Schristos FIX1(FIX(s, 1)), 36875fd0b74Schristos OP3(OLCST, OWREG1, OACST), 36975fd0b74Schristos ENC3(ENC(src1, pcrel, 0), ENC(dst, reg, 1), ENC(src2, ucst, 2))) 37075fd0b74Schristos 37175fd0b74Schristos INSN(addsp, l, 1_or_2_src, 4cycle, C67X, 0, 37275fd0b74Schristos FIX1(FIX(op, 0x10)), 37375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 37475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 37575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 37675fd0b74Schristos INSN(addsp, s, l_1_or_2_src, 4cycle, C67XP, 0, 37775fd0b74Schristos FIX1(FIX(op, 0x70)), 37875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 37975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 38075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 38175fd0b74Schristos 38275fd0b74Schristos INSN(addsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, 38375fd0b74Schristos FIX1(FIX(op, 0xc)), 38475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 38575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 38675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 38775fd0b74Schristos 38875fd0b74Schristos INSN(addsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, 38975fd0b74Schristos FIX1(FIX(op, 0xd)), 39075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 39175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 39275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 39375fd0b74Schristos 39475fd0b74Schristos INSNE(addu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, 0, 39575fd0b74Schristos FIX1(FIX(op, 0x2b)), 39675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGL1), 39775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 39875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 39975fd0b74Schristos INSNE(addu, l_xui_ul_ul, l, 1_or_2_src, 1cycle, C62X, 0, 40075fd0b74Schristos FIX1(FIX(op, 0x29)), 40175fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREGL1), 40275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 40375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 40475fd0b74Schristos 40575fd0b74Schristos INSN(add2, s, 1_or_2_src, 1cycle, C62X, 0, 40675fd0b74Schristos FIX1(FIX(op, 0x1)), 40775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 40875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 40975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 41075fd0b74Schristos INSN(add2, l, 1_or_2_src, 1cycle, C64X, 0, 41175fd0b74Schristos FIX1(FIX(op, 0x5)), 41275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 41375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 41475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 41575fd0b74Schristos INSN(add2, d, ext_1_or_2_src, 1cycle, C64X, 0, 41675fd0b74Schristos FIX1(FIX(op, 0x4)), 41775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 41875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 41975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 42075fd0b74Schristos 42175fd0b74Schristos INSN(add4, l, 1_or_2_src, 1cycle, C64X, 0, 42275fd0b74Schristos FIX1(FIX(op, 0x65)), 42375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 42475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 42575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 42675fd0b74Schristos 42775fd0b74Schristos INSNE(and, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 42875fd0b74Schristos FIX1(FIX(op, 0x7b)), 42975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 43075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 43175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 43275fd0b74Schristos INSNE(and, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 43375fd0b74Schristos FIX1(FIX(op, 0x7a)), 43475fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 43575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 43675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 43775fd0b74Schristos INSNE(and, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, 43875fd0b74Schristos FIX1(FIX(op, 0x1f)), 43975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 44075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 44175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 44275fd0b74Schristos INSNE(and, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, 44375fd0b74Schristos FIX1(FIX(op, 0x1e)), 44475fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 44575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 44675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 44775fd0b74Schristos INSNE(and, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, 44875fd0b74Schristos FIX1(FIX(op, 0x6)), 44975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 45075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 45175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 45275fd0b74Schristos INSNE(and, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, 45375fd0b74Schristos FIX1(FIX(op, 0x7)), 45475fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 45575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 45675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 45775fd0b74Schristos 45875fd0b74Schristos /* 16 bits insn */ 45975fd0b74Schristos INSN(and, l, l2c, 1cycle, C64XP, 0, 46075fd0b74Schristos FIX1(FIX(op, 0)), 46175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 46275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 46375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 46475fd0b74Schristos /**/ 46575fd0b74Schristos 46675fd0b74Schristos INSN(andn, l, 1_or_2_src, 1cycle, C64X, 0, 46775fd0b74Schristos FIX1(FIX(op, 0x7c)), 46875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 46975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 47075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 47175fd0b74Schristos INSN(andn, s, ext_1_or_2_src, 1cycle, C64X, 0, 47275fd0b74Schristos FIX1(FIX(op, 0x6)), 47375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 47475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 47575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 47675fd0b74Schristos INSN(andn, d, ext_1_or_2_src, 1cycle, C64X, 0, 47775fd0b74Schristos FIX1(FIX(op, 0x0)), 47875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 47975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 48075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 48175fd0b74Schristos 48275fd0b74Schristos INSN(avg2, m, compound, 1616_m, C64X, 0, 48375fd0b74Schristos FIX1(FIX(op, 0x13)), 48475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 48575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 48675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 48775fd0b74Schristos 48875fd0b74Schristos INSN(avgu4, m, compound, 1616_m, C64X, 0, 48975fd0b74Schristos FIX1(FIX(op, 0x12)), 49075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 49175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 49275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 49375fd0b74Schristos 49475fd0b74Schristos INSN(b, s, ext_branch_cond_imm, branch, C62X, TIC6X_FLAG_NO_CROSS, 49575fd0b74Schristos FIX0(), 49675fd0b74Schristos OP1(OLCST), 49775fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) 49875fd0b74Schristos INSN(b, s, branch, branch, C62X, TIC6X_FLAG_SIDE_B_ONLY, 49975fd0b74Schristos FIX1(FIX(s, 1)), 50075fd0b74Schristos OP1(ORXREG1), 50175fd0b74Schristos ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0))) 50275fd0b74Schristos INSN(b, s, b_irp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY, 50375fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 50475fd0b74Schristos OP1(ORIRP1), 50575fd0b74Schristos ENC0()) 50675fd0b74Schristos INSN(b, s, b_nrp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY, 50775fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 50875fd0b74Schristos OP1(ORNRP1), 50975fd0b74Schristos ENC0()) 51075fd0b74Schristos 51175fd0b74Schristos INSN(bdec, s, bdec, branch, C64X, TIC6X_FLAG_NO_CROSS, 51275fd0b74Schristos FIX0(), 51375fd0b74Schristos OP2(OLCST, ORWREG1), 51475fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1))) 51575fd0b74Schristos 51675fd0b74Schristos INSN(bitc4, m, unary, 1616_m, C64X, 0, 51775fd0b74Schristos FIX1(FIX(op, 0x1e)), 51875fd0b74Schristos OP2(ORXREG1, OWREG2), 51975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 52075fd0b74Schristos ENC(dst, reg, 1))) 52175fd0b74Schristos 52275fd0b74Schristos INSN(bitr, m, unary, 1616_m, C64X, 0, 52375fd0b74Schristos FIX1(FIX(op, 0x1f)), 52475fd0b74Schristos OP2(ORXREG1, OWREG2), 52575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 52675fd0b74Schristos ENC(dst, reg, 1))) 52775fd0b74Schristos 52875fd0b74Schristos INSN(bnop, s, branch_nop_cst, branch, C64X, 52975fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP, 53075fd0b74Schristos FIX0(), 53175fd0b74Schristos OP2(OLCST, OACST), 53275fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, pcrel_half, 0), ENC(src1, ucst, 1))) 53375fd0b74Schristos INSN(bnop, nfu, s_branch_nop_cst, branch, C64XP, 53475fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP, 53575fd0b74Schristos FIX1(FIX(s, 0)), 53675fd0b74Schristos OP2(OLCST, OACST), 53775fd0b74Schristos ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1))) 53875fd0b74Schristos INSN(bnop, s, branch_nop_reg, branch, C64X, 53975fd0b74Schristos TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP, 54075fd0b74Schristos FIX1(FIX(s, 1)), 54175fd0b74Schristos OP2(ORXREG1, OACST), 54275fd0b74Schristos ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1))) 54375fd0b74Schristos 54475fd0b74Schristos /* 16 bits insn format */ 54575fd0b74Schristos INSN(bnop, s, sbu8, branch, C64XP, 54675fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP, 54775fd0b74Schristos FIX0(), 54875fd0b74Schristos OP2(OLCST, OHWCST5), 54975fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel_half_unsigned, 0))) 55075fd0b74Schristos INSN(bnop, s, sbs7, branch, C64XP, 55175fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP, 55275fd0b74Schristos FIX0(), 55375fd0b74Schristos OP2(OLCST, OACST), 55475fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, pcrel_half, 0), ENC(n, ucst, 1))) 55575fd0b74Schristos INSN(bnop, s, sbu8c, branch, C64XP, 55675fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_INSN16_SPRED, 55775fd0b74Schristos FIX0(), 55875fd0b74Schristos OP2(OLCST, OHWCST5), 55975fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel_half_unsigned, 0))) 56075fd0b74Schristos INSN(bnop, s, sbs7c, branch, C64XP, 56175fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_INSN16_SPRED, 56275fd0b74Schristos FIX0(), 56375fd0b74Schristos OP2(OLCST, OACST), 56475fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, pcrel_half, 0), ENC(n, ucst, 1))) 56575fd0b74Schristos INSN(bnop, s, sx1b, branch, C64XP, 56675fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP, 56775fd0b74Schristos FIX0(), 56875fd0b74Schristos OP2(ORREG1BNORS, OACST), 56975fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(n, ucst, 1))) 57075fd0b74Schristos /**/ 57175fd0b74Schristos 57275fd0b74Schristos INSN(bpos, s, bpos, branch, C64X, TIC6X_FLAG_NO_CROSS, 57375fd0b74Schristos FIX0(), 57475fd0b74Schristos OP2(OLCST, ORREG1), 57575fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1))) 57675fd0b74Schristos 57775fd0b74Schristos INSN(call, s, ext_branch_cond_imm, branch, C62X, 57875fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL, 57975fd0b74Schristos FIX0(), 58075fd0b74Schristos OP1(OLCST), 58175fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) 58275fd0b74Schristos INSN(call, s, branch, branch, C62X, 58375fd0b74Schristos TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL, 58475fd0b74Schristos FIX1(FIX(s, 1)), 58575fd0b74Schristos OP1(ORXREG1), 58675fd0b74Schristos ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0))) 58775fd0b74Schristos INSN(call, s, b_irp, branch, C62X, 58875fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL, 58975fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 59075fd0b74Schristos OP1(ORIRP1), 59175fd0b74Schristos ENC0()) 59275fd0b74Schristos INSN(call, s, b_nrp, branch, C62X, 59375fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL, 59475fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 59575fd0b74Schristos OP1(ORNRP1), 59675fd0b74Schristos ENC0()) 59775fd0b74Schristos 59875fd0b74Schristos INSN(callnop, s, branch_nop_cst, branch, C64X, 59975fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL, 60075fd0b74Schristos FIX0(), 60175fd0b74Schristos OP2(OLCST, OACST), 60275fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, pcrel, 0), ENC(src1, ucst, 1))) 60375fd0b74Schristos INSN(callnop, nfu, s_branch_nop_cst, branch, C64XP, 60475fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL, 60575fd0b74Schristos FIX1(FIX(s, 0)), 60675fd0b74Schristos OP2(OLCST, OACST), 60775fd0b74Schristos ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1))) 60875fd0b74Schristos INSN(callnop, s, branch_nop_reg, branch, C64X, 60975fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL, 61075fd0b74Schristos FIX1(FIX(s, 1)), 61175fd0b74Schristos OP2(ORXREG1, OACST), 61275fd0b74Schristos ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1))) 61375fd0b74Schristos 61475fd0b74Schristos 61575fd0b74Schristos INSN(callp, s, call_imm_nop, branch, C64XP, 61675fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP, 61775fd0b74Schristos FIX1(FIX(z, 1)), 61875fd0b74Schristos OP2(OLCST, OWRETREG1), 61975fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) 62075fd0b74Schristos 62175fd0b74Schristos /* 16 bits insn format */ 62275fd0b74Schristos INSN(callp, s, scs10, branch, C64XP, 62375fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP, 62475fd0b74Schristos FIX0(), 62575fd0b74Schristos OP2(OLCST, OWRETREG1), 62675fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) 62775fd0b74Schristos /**/ 62875fd0b74Schristos 62975fd0b74Schristos INSN(callret, s, ext_branch_cond_imm, branch, C62X, 63075fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN, 63175fd0b74Schristos FIX0(), 63275fd0b74Schristos OP1(OLCST), 63375fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) 63475fd0b74Schristos INSN(callret, s, branch, branch, C62X, 63575fd0b74Schristos TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN, 63675fd0b74Schristos FIX1(FIX(s, 1)), 63775fd0b74Schristos OP1(ORXREG1), 63875fd0b74Schristos ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0))) 63975fd0b74Schristos INSN(callret, s, b_irp, branch, C62X, 64075fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN, 64175fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 64275fd0b74Schristos OP1(ORIRP1), 64375fd0b74Schristos ENC0()) 64475fd0b74Schristos INSN(callret, s, b_nrp, branch, C62X, 64575fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN, 64675fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 64775fd0b74Schristos OP1(ORNRP1), 64875fd0b74Schristos ENC0()) 64975fd0b74Schristos 65075fd0b74Schristos INSN(clr, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 65175fd0b74Schristos FIX1(FIX(op, 0x3)), 65275fd0b74Schristos OP4(ORREG1, OACST, OACST, OWREG1), 65375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1), 65475fd0b74Schristos ENC(cstb, ucst, 2), ENC(dst, reg, 3))) 65575fd0b74Schristos INSN(clr, s, 1_or_2_src, 1cycle, C62X, 0, 65675fd0b74Schristos FIX1(FIX(op, 0x3f)), 65775fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 65875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 65975fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 66075fd0b74Schristos 66175fd0b74Schristos /* 16 bits insn */ 66275fd0b74Schristos INSN(clr, s, sc5, 1cycle, C64XP, 0, 66375fd0b74Schristos FIX1(FIX(op, 2)), 66475fd0b74Schristos OP4(ORREG1, OACST, OACST, OWREG1), 66575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1), 66675fd0b74Schristos ENC(cst, ucst, 2), ENC(srcdst, reg, 3))) 66775fd0b74Schristos /**/ 66875fd0b74Schristos 66975fd0b74Schristos INSNE(cmpeq, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0, 67075fd0b74Schristos FIX1(FIX(op, 0x53)), 67175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 67275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 67375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 67475fd0b74Schristos INSNE(cmpeq, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0, 67575fd0b74Schristos FIX1(FIX(op, 0x52)), 67675fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 67775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 67875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 67975fd0b74Schristos INSNE(cmpeq, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0, 68075fd0b74Schristos FIX1(FIX(op, 0x51)), 68175fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREG1), 68275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 68375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 68475fd0b74Schristos INSNE(cmpeq, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 68575fd0b74Schristos FIX2(FIX(op, 0x50), FIX(x, 0)), 68675fd0b74Schristos OP3(OACST, ORREGL1, OWREG1), 68775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1), 68875fd0b74Schristos ENC(dst, reg, 2))) 68975fd0b74Schristos 69075fd0b74Schristos /* 16 bits insn */ 69175fd0b74Schristos INSN(cmpeq, l, lx3c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 69275fd0b74Schristos FIX0(), 69375fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 69475fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1), 69575fd0b74Schristos ENC(dst, reg, 2))) 69675fd0b74Schristos 69775fd0b74Schristos INSN(cmpeq, l, l2c, 1cycle, C64XP, 0, 69875fd0b74Schristos FIX1(FIX(op, 3)), 69975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 70075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 70175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 70275fd0b74Schristos /**/ 70375fd0b74Schristos 70475fd0b74Schristos INSN(cmpeq2, s, 1_or_2_src, 1cycle, C64X, 0, 70575fd0b74Schristos FIX1(FIX(op, 0x1d)), 70675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 70775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 70875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 70975fd0b74Schristos 71075fd0b74Schristos INSN(cmpeq4, s, 1_or_2_src, 1cycle, C64X, 0, 71175fd0b74Schristos FIX1(FIX(op, 0x1c)), 71275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 71375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 71475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 71575fd0b74Schristos 71675fd0b74Schristos INSN(cmpeqdp, s, 1_or_2_src, dpcmp, C67X, 0, 71775fd0b74Schristos FIX1(FIX(op, 0x28)), 71875fd0b74Schristos OP3(ORREGD12, ORXREGD12, OWREG2), 71975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 72075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 72175fd0b74Schristos 72275fd0b74Schristos INSN(cmpeqsp, s, 1_or_2_src, 1cycle, C67X, 0, 72375fd0b74Schristos FIX1(FIX(op, 0x38)), 72475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 72575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 72675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 72775fd0b74Schristos 72875fd0b74Schristos INSNE(cmpgt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 72975fd0b74Schristos FIX1(FIX(op, 0x47)), 73075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 73175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 73275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 73375fd0b74Schristos INSNE(cmpgt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0, 73475fd0b74Schristos FIX1(FIX(op, 0x46)), 73575fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 73675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 73775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 73875fd0b74Schristos INSNE(cmpgt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0, 73975fd0b74Schristos FIX1(FIX(op, 0x45)), 74075fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREG1), 74175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 74275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 74375fd0b74Schristos INSNE(cmpgt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 74475fd0b74Schristos FIX2(FIX(op, 0x44), FIX(x, 0)), 74575fd0b74Schristos OP3(OACST, ORREGL1, OWREG1), 74675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1), 74775fd0b74Schristos ENC(dst, reg, 2))) 74875fd0b74Schristos INSNE(cmpgt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X, 74975fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0), 75075fd0b74Schristos FIX1(FIX(op, 0x57)), 75175fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 75275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1), 75375fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 75475fd0b74Schristos INSNE(cmpgt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 75575fd0b74Schristos FIX1(FIX(op, 0x56)), 75675fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 75775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1), 75875fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 75975fd0b74Schristos INSNE(cmpgt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 76075fd0b74Schristos FIX1(FIX(op, 0x55)), 76175fd0b74Schristos OP3(ORREGL1, ORXREG1, OWREG1), 76275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1), 76375fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 76475fd0b74Schristos INSNE(cmpgt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X, 76575fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, 76675fd0b74Schristos FIX2(FIX(op, 0x54), FIX(x, 0)), 76775fd0b74Schristos OP3(ORREGL1, OACST, OWREG1), 76875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0), 76975fd0b74Schristos ENC(dst, reg, 2))) 77075fd0b74Schristos 77175fd0b74Schristos /* 16 bits insn */ 77275fd0b74Schristos INSN(cmpgt, l, lx1c, 1cycle, C64XP, 0, 77375fd0b74Schristos FIX1(FIX(op, 1)), 77475fd0b74Schristos OP3(OACST, ORREG1, OWREG1), 77575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1), 77675fd0b74Schristos ENC(dst, reg, 2))) 77775fd0b74Schristos INSN(cmpgt, l, l2c, 1cycle, C64XP, 0, 77875fd0b74Schristos FIX1(FIX(op, 5)), 77975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 78075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 78175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 78275fd0b74Schristos /**/ 78375fd0b74Schristos 78475fd0b74Schristos INSN(cmpgt2, s, 1_or_2_src, 1cycle, C64X, 0, 78575fd0b74Schristos FIX1(FIX(op, 0x14)), 78675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 78775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 78875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 78975fd0b74Schristos 79075fd0b74Schristos INSN(cmpgtdp, s, 1_or_2_src, dpcmp, C67X, 0, 79175fd0b74Schristos FIX1(FIX(op, 0x29)), 79275fd0b74Schristos OP3(ORREGD12, ORXREGD12, OWREG2), 79375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 79475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 79575fd0b74Schristos 79675fd0b74Schristos INSN(cmpgtsp, s, 1_or_2_src, 1cycle, C67X, 0, 79775fd0b74Schristos FIX1(FIX(op, 0x39)), 79875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 79975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 80075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 80175fd0b74Schristos 80275fd0b74Schristos INSNE(cmpgtu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 80375fd0b74Schristos FIX1(FIX(op, 0x4f)), 80475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 80575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 80675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 80775fd0b74Schristos INSNE(cmpgtu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 80875fd0b74Schristos FIX2(FIX(op, 0x4e), RAN(src1, 0, 15)), 80975fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 81075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0), 81175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 81275fd0b74Schristos /* Although not mentioned in SPRUFE8, CMPGTU and CMPLTU support a 81375fd0b74Schristos 5-bit unsigned constant operand on C64X and above. */ 81475fd0b74Schristos INSNE(cmpgtu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0, 81575fd0b74Schristos FIX2(FIX(op, 0x4e), RAN(src1, 16, 31)), 81675fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 81775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0), 81875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 81975fd0b74Schristos INSNE(cmpgtu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0, 82075fd0b74Schristos FIX1(FIX(op, 0x4d)), 82175fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREG1), 82275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 82375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 82475fd0b74Schristos INSNE(cmpgtu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X, 82575fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 82675fd0b74Schristos FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 0, 15)), 82775fd0b74Schristos OP3(OACST, ORREGL1, OWREG1), 82875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1), 82975fd0b74Schristos ENC(dst, reg, 2))) 83075fd0b74Schristos INSNE(cmpgtu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS, 83175fd0b74Schristos FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 16, 31)), 83275fd0b74Schristos OP3(OACST, ORREGL1, OWREG1), 83375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1), 83475fd0b74Schristos ENC(dst, reg, 2))) 83575fd0b74Schristos 83675fd0b74Schristos /* 16 bits insn */ 83775fd0b74Schristos INSN(cmpgtu, l, lx1c, 1cycle, C64XP, 0, 83875fd0b74Schristos FIX1(FIX(op, 3)), 83975fd0b74Schristos OP3(OACST, ORREG1, OWREG1), 84075fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1), 84175fd0b74Schristos ENC(dst, reg, 2))) 84275fd0b74Schristos INSN(cmpgtu, l, l2c, 1cycle, C64XP, 0, 84375fd0b74Schristos FIX1(FIX(op, 7)), 84475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 84575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 84675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 84775fd0b74Schristos /**/ 84875fd0b74Schristos 84975fd0b74Schristos INSN(cmpgtu4, s, 1_or_2_src, 1cycle, C64X, 0, 85075fd0b74Schristos FIX1(FIX(op, 0x15)), 85175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 85275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 85375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 85475fd0b74Schristos 85575fd0b74Schristos INSNE(cmplt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 85675fd0b74Schristos FIX1(FIX(op, 0x57)), 85775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 85875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 85975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 86075fd0b74Schristos INSNE(cmplt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0, 86175fd0b74Schristos FIX1(FIX(op, 0x56)), 86275fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 86375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 86475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 86575fd0b74Schristos INSNE(cmplt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0, 86675fd0b74Schristos FIX1(FIX(op, 0x55)), 86775fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREG1), 86875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 86975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 87075fd0b74Schristos INSNE(cmplt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 87175fd0b74Schristos FIX2(FIX(op, 0x54), FIX(x, 0)), 87275fd0b74Schristos OP3(OACST, ORREGL1, OWREG1), 87375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1), 87475fd0b74Schristos ENC(dst, reg, 2))) 87575fd0b74Schristos INSNE(cmplt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X, 87675fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0), 87775fd0b74Schristos FIX1(FIX(op, 0x47)), 87875fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 87975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1), 88075fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 88175fd0b74Schristos INSNE(cmplt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 88275fd0b74Schristos FIX1(FIX(op, 0x46)), 88375fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 88475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1), 88575fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 88675fd0b74Schristos INSNE(cmplt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 88775fd0b74Schristos FIX1(FIX(op, 0x45)), 88875fd0b74Schristos OP3(ORREGL1, ORXREG1, OWREG1), 88975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1), 89075fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 89175fd0b74Schristos INSNE(cmplt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X, 89275fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, 89375fd0b74Schristos FIX2(FIX(op, 0x44), FIX(x, 0)), 89475fd0b74Schristos OP3(ORREGL1, OACST, OWREG1), 89575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0), 89675fd0b74Schristos ENC(dst, reg, 2))) 89775fd0b74Schristos 89875fd0b74Schristos /* 16 bits insn */ 89975fd0b74Schristos INSN(cmplt, l, lx1c, 1cycle, C64XP, 0, 90075fd0b74Schristos FIX1(FIX(op, 0)), 90175fd0b74Schristos OP3(OACST, ORREG1, OWREG1), 90275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1), 90375fd0b74Schristos ENC(dst, reg, 2))) 90475fd0b74Schristos INSN(cmplt, l, l2c, 1cycle, C64XP, 0, 90575fd0b74Schristos FIX1(FIX(op, 4)), 90675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 90775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 90875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 90975fd0b74Schristos /**/ 91075fd0b74Schristos 91175fd0b74Schristos INSN(cmplt2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO, 91275fd0b74Schristos FIX1(FIX(op, 0x14)), 91375fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 91475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 91575fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 91675fd0b74Schristos 91775fd0b74Schristos INSN(cmpltdp, s, 1_or_2_src, dpcmp, C67X, 0, 91875fd0b74Schristos FIX1(FIX(op, 0x2a)), 91975fd0b74Schristos OP3(ORREGD12, ORXREGD12, OWREG2), 92075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 92175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 92275fd0b74Schristos 92375fd0b74Schristos INSN(cmpltsp, s, 1_or_2_src, 1cycle, C67X, 0, 92475fd0b74Schristos FIX1(FIX(op, 0x3a)), 92575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 92675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 92775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 92875fd0b74Schristos 92975fd0b74Schristos INSNE(cmpltu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 93075fd0b74Schristos FIX1(FIX(op, 0x5f)), 93175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 93275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 93375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 93475fd0b74Schristos INSNE(cmpltu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 93575fd0b74Schristos FIX2(FIX(op, 0x5e), RAN(src1, 0, 15)), 93675fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 93775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0), 93875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 93975fd0b74Schristos INSNE(cmpltu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0, 94075fd0b74Schristos FIX2(FIX(op, 0x5e), RAN(src1, 16, 31)), 94175fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 94275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0), 94375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 94475fd0b74Schristos INSNE(cmpltu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0, 94575fd0b74Schristos FIX1(FIX(op, 0x5d)), 94675fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREG1), 94775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 94875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 94975fd0b74Schristos INSNE(cmpltu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X, 95075fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 95175fd0b74Schristos FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 0, 15)), 95275fd0b74Schristos OP3(OACST, ORREGL1, OWREG1), 95375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1), 95475fd0b74Schristos ENC(dst, reg, 2))) 95575fd0b74Schristos INSNE(cmpltu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS, 95675fd0b74Schristos FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 16, 31)), 95775fd0b74Schristos OP3(OACST, ORREGL1, OWREG1), 95875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1), 95975fd0b74Schristos ENC(dst, reg, 2))) 96075fd0b74Schristos 96175fd0b74Schristos /* 16 bits insn */ 96275fd0b74Schristos INSN(cmpltu, l, lx1c, 1cycle, C64XP, 0, 96375fd0b74Schristos FIX1(FIX(op, 2)), 96475fd0b74Schristos OP3(OACST, ORREG1, OWREG1), 96575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1), 96675fd0b74Schristos ENC(dst, reg, 2))) 96775fd0b74Schristos INSN(cmpltu, l, l2c, 1cycle, C64XP, 0, 96875fd0b74Schristos FIX1(FIX(op, 6)), 96975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 97075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 97175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 97275fd0b74Schristos /**/ 97375fd0b74Schristos 97475fd0b74Schristos INSN(cmpltu4, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO, 97575fd0b74Schristos FIX1(FIX(op, 0x15)), 97675fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 97775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 97875fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 97975fd0b74Schristos 98075fd0b74Schristos INSN(cmpy, m, 1_or_2_src, 4cycle, C64XP, 0, 98175fd0b74Schristos FIX1(FIX(op, 0xa)), 98275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 98375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 98475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 98575fd0b74Schristos 98675fd0b74Schristos INSN(cmpyr, m, 1_or_2_src, 4cycle, C64XP, 0, 98775fd0b74Schristos FIX1(FIX(op, 0xb)), 98875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 98975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 99075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 99175fd0b74Schristos 99275fd0b74Schristos INSN(cmpyr1, m, 1_or_2_src, 4cycle, C64XP, 0, 99375fd0b74Schristos FIX1(FIX(op, 0xc)), 99475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 99575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 99675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 99775fd0b74Schristos 99875fd0b74Schristos INSN(cmtl, d, 1_or_2_src, load, C64XP, 99975fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS, 100075fd0b74Schristos FIX3(FIX(s, 1), FIX(op, 0xe), FIX(src1, 0)), 100175fd0b74Schristos OP2(ORMEMDW, OWDREG5), 100275fd0b74Schristos ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1))) 100375fd0b74Schristos 100475fd0b74Schristos INSN(ddotp4, m, 1_or_2_src, 4cycle, C64XP, 0, 100575fd0b74Schristos FIX1(FIX(op, 0x18)), 100675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 100775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 100875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 100975fd0b74Schristos 101075fd0b74Schristos INSN(ddotph2, m, 1_or_2_src, 4cycle, C64XP, 0, 101175fd0b74Schristos FIX1(FIX(op, 0x17)), 101275fd0b74Schristos OP3(ORREGD1, ORXREG1, OWREGD4), 101375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 101475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 101575fd0b74Schristos 101675fd0b74Schristos INSN(ddotph2r, m, 1_or_2_src, 4cycle, C64XP, 0, 101775fd0b74Schristos FIX1(FIX(op, 0x15)), 101875fd0b74Schristos OP3(ORREGD1, ORXREG1, OWREG4), 101975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 102075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 102175fd0b74Schristos 102275fd0b74Schristos INSN(ddotpl2, m, 1_or_2_src, 4cycle, C64XP, 0, 102375fd0b74Schristos FIX1(FIX(op, 0x16)), 102475fd0b74Schristos OP3(ORREGD1, ORXREG1, OWREGD4), 102575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 102675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 102775fd0b74Schristos 102875fd0b74Schristos INSN(ddotpl2r, m, 1_or_2_src, 4cycle, C64XP, 0, 102975fd0b74Schristos FIX1(FIX(op, 0x14)), 103075fd0b74Schristos OP3(ORREGD1, ORXREG1, OWREG4), 103175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 103275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 103375fd0b74Schristos 103475fd0b74Schristos INSN(deal, m, unary, 1616_m, C64X, 0, 103575fd0b74Schristos FIX1(FIX(op, 0x1d)), 103675fd0b74Schristos OP2(ORXREG1, OWREG2), 103775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 103875fd0b74Schristos ENC(dst, reg, 1))) 103975fd0b74Schristos 104075fd0b74Schristos INSN(dint, nfu, dint, 1cycle, C64XP, 0, 104175fd0b74Schristos FIX1(FIX(s, 0)), 104275fd0b74Schristos OP0(), 104375fd0b74Schristos ENC0()) 104475fd0b74Schristos 104575fd0b74Schristos INSN(dmv, s, ext_1_or_2_src, 1cycle, C64XP, 0, 104675fd0b74Schristos FIX1(FIX(op, 0xb)), 104775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 104875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 104975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 105075fd0b74Schristos 105175fd0b74Schristos INSNE(dotp2, m_s2_xs2_si, m, compound, 4cycle, C64X, 0, 105275fd0b74Schristos FIX1(FIX(op, 0xc)), 105375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 105475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 105575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 105675fd0b74Schristos INSNE(dotp2, m_s2_xs2_sll, m, compound, 4cycle, C64X, 0, 105775fd0b74Schristos FIX1(FIX(op, 0xb)), 105875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 105975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 106075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 106175fd0b74Schristos 106275fd0b74Schristos INSN(dotpn2, m, compound, 4cycle, C64X, 0, 106375fd0b74Schristos FIX1(FIX(op, 0x9)), 106475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 106575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 106675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 106775fd0b74Schristos 106875fd0b74Schristos INSN(dotpnrsu2, m, compound, 4cycle, C64X, 0, 106975fd0b74Schristos FIX1(FIX(op, 0x7)), 107075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 107175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 107275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 107375fd0b74Schristos 107475fd0b74Schristos INSN(dotpnrus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 107575fd0b74Schristos FIX1(FIX(op, 0x7)), 107675fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG4), 107775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 107875fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 107975fd0b74Schristos 108075fd0b74Schristos INSN(dotprsu2, m, compound, 4cycle, C64X, 0, 108175fd0b74Schristos FIX1(FIX(op, 0xd)), 108275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 108375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 108475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 108575fd0b74Schristos 108675fd0b74Schristos INSN(dotprus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 108775fd0b74Schristos FIX1(FIX(op, 0xd)), 108875fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG4), 108975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 109075fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 109175fd0b74Schristos 109275fd0b74Schristos INSN(dotpsu4, m, compound, 4cycle, C64X, 0, 109375fd0b74Schristos FIX1(FIX(op, 0x2)), 109475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 109575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 109675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 109775fd0b74Schristos 109875fd0b74Schristos INSN(dotpus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 109975fd0b74Schristos FIX1(FIX(op, 0x2)), 110075fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG4), 110175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 110275fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 110375fd0b74Schristos 110475fd0b74Schristos INSN(dotpu4, m, compound, 4cycle, C64X, 0, 110575fd0b74Schristos FIX1(FIX(op, 0x6)), 110675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 110775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 110875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 110975fd0b74Schristos 111075fd0b74Schristos INSN(dpack2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, 111175fd0b74Schristos FIX1(FIX(op, 0x34)), 111275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 111375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 111475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 111575fd0b74Schristos 111675fd0b74Schristos INSN(dpackx2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, 111775fd0b74Schristos FIX1(FIX(op, 0x33)), 111875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 111975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 112075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 112175fd0b74Schristos 112275fd0b74Schristos INSN(dpint, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS, 112375fd0b74Schristos FIX2(FIX(op, 0x8), FIX(x, 0)), 112475fd0b74Schristos OP2(ORREGD1, OWREG4), 112575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), 112675fd0b74Schristos ENC(dst, reg, 1))) 112775fd0b74Schristos 112875fd0b74Schristos INSN(dpsp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS, 112975fd0b74Schristos FIX2(FIX(op, 0x9), FIX(x, 0)), 113075fd0b74Schristos OP2(ORREGD1, OWREG4), 113175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), 113275fd0b74Schristos ENC(dst, reg, 1))) 113375fd0b74Schristos 113475fd0b74Schristos INSN(dptrunc, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS, 113575fd0b74Schristos FIX2(FIX(op, 0x1), FIX(x, 0)), 113675fd0b74Schristos OP2(ORREGD1, OWREG4), 113775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), 113875fd0b74Schristos ENC(dst, reg, 1))) 113975fd0b74Schristos 114075fd0b74Schristos INSN(ext, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 114175fd0b74Schristos FIX1(FIX(op, 0x1)), 114275fd0b74Schristos OP4(ORREG1, OACST, OACST, OWREG1), 114375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1), 114475fd0b74Schristos ENC(cstb, ucst, 2), ENC(dst, reg, 3))) 114575fd0b74Schristos INSN(ext, s, 1_or_2_src, 1cycle, C62X, 0, 114675fd0b74Schristos FIX1(FIX(op, 0x2f)), 114775fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 114875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 114975fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 115075fd0b74Schristos 115175fd0b74Schristos /* 16 bits insn */ 115275fd0b74Schristos INSNE(ext, hwcst16, s, s2ext, 1cycle, C64XP, 0, 115375fd0b74Schristos FIX1(FIX(op, 0x0)), 115475fd0b74Schristos OP4(ORREG1, OHWCST16, OHWCST16, OWREG1), 115575fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3))) 115675fd0b74Schristos INSNE(ext, hwcst24, s, s2ext, 1cycle, C64XP, 0, 115775fd0b74Schristos FIX1(FIX(op, 0x1)), 115875fd0b74Schristos OP4(ORREG1, OHWCST24, OHWCST24, OWREG1), 115975fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3))) 116075fd0b74Schristos /**/ 116175fd0b74Schristos 116275fd0b74Schristos INSN(extu, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 116375fd0b74Schristos FIX1(FIX(op, 0x0)), 116475fd0b74Schristos OP4(ORREG1, OACST, OACST, OWREG1), 116575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1), 116675fd0b74Schristos ENC(cstb, ucst, 2), ENC(dst, reg, 3))) 116775fd0b74Schristos INSN(extu, s, 1_or_2_src, 1cycle, C62X, 0, 116875fd0b74Schristos FIX1(FIX(op, 0x2b)), 116975fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 117075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 117175fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 117275fd0b74Schristos 117375fd0b74Schristos /* 16 bits insn */ 117475fd0b74Schristos INSNE(extu, hwcst16, s, s2ext, 1cycle, C64XP, 0, 117575fd0b74Schristos FIX1(FIX(op, 0x2)), 117675fd0b74Schristos OP4(ORREG1, OHWCST16, OHWCST16, OWREG1), 117775fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3))) 117875fd0b74Schristos INSNE(extu, hwcst24, s, s2ext, 1cycle, C64XP, 0, 117975fd0b74Schristos FIX1(FIX(op, 0x3)), 118075fd0b74Schristos OP4(ORREG1, OHWCST24, OHWCST24, OWREG1), 118175fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3))) 118275fd0b74Schristos INSN(extu, s, sc5, 1cycle, C64XP, 0, 118375fd0b74Schristos FIX1(FIX(op, 0)), 118475fd0b74Schristos OP4(ORREG1, OACST, OHWCST31, OWREG1Z), 118575fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1))) 118675fd0b74Schristos /**/ 118775fd0b74Schristos 118875fd0b74Schristos INSN(gmpy, m, 1_or_2_src, 4cycle, C64XP, TIC6X_FLAG_NO_CROSS, 118975fd0b74Schristos FIX2(FIX(op, 0x1f), FIX(x, 0)), 119075fd0b74Schristos OP3(ORREG1, ORREG1, OWREG4), 119175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, reg, 0), ENC(src2, reg, 1), 119275fd0b74Schristos ENC(dst, reg, 2))) 119375fd0b74Schristos 119475fd0b74Schristos /* This instruction can be predicated as usual; SPRUFE8 is incorrect 119575fd0b74Schristos where it shows the "z" field as fixed to 1. */ 119675fd0b74Schristos INSN(gmpy4, m, compound, 4cycle, C64X, 0, 119775fd0b74Schristos FIX1(FIX(op, 0x11)), 119875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 119975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 120075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 120175fd0b74Schristos 120275fd0b74Schristos INSN(idle, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MCNOP, 120375fd0b74Schristos FIX2(FIX(s, 0), FIX(op, 0xf)), 120475fd0b74Schristos OP0(), 120575fd0b74Schristos ENC0()) 120675fd0b74Schristos 120775fd0b74Schristos INSN(intdp, l, 1_or_2_src, intdp, C67X, 0, 120875fd0b74Schristos FIX2(FIX(op, 0x39), FIX(src1, 0)), 120975fd0b74Schristos OP2(ORXREG1, OWREGD45), 121075fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 121175fd0b74Schristos ENC(dst, reg, 1))) 121275fd0b74Schristos 121375fd0b74Schristos INSN(intdpu, l, 1_or_2_src, intdp, C67X, 0, 121475fd0b74Schristos FIX2(FIX(op, 0x3b), FIX(src1, 0)), 121575fd0b74Schristos OP2(ORXREG1, OWREGD45), 121675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 121775fd0b74Schristos ENC(dst, reg, 1))) 121875fd0b74Schristos 121975fd0b74Schristos INSN(intsp, l, 1_or_2_src, 4cycle, C67X, 0, 122075fd0b74Schristos FIX2(FIX(op, 0x4a), FIX(src1, 0)), 122175fd0b74Schristos OP2(ORXREG1, OWREG4), 122275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 122375fd0b74Schristos ENC(dst, reg, 1))) 122475fd0b74Schristos 122575fd0b74Schristos INSN(intspu, l, 1_or_2_src, 4cycle, C67X, 0, 122675fd0b74Schristos FIX2(FIX(op, 0x49), FIX(src1, 0)), 122775fd0b74Schristos OP2(ORXREG1, OWREG4), 122875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 122975fd0b74Schristos ENC(dst, reg, 1))) 123075fd0b74Schristos 123175fd0b74Schristos INSN(ldb, d, load_store, load, C62X, 123275fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 123375fd0b74Schristos FIX2(FIX(op, 2), FIX(r, 0)), 123475fd0b74Schristos OP2(ORMEMSB, OWDREG5), 123575fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 123675fd0b74Schristos ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), 123775fd0b74Schristos ENC(srcdst, reg, 1))) 123875fd0b74Schristos INSN(ldb, d, load_store_long, load, C62X, 123975fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 124075fd0b74Schristos FIX1(FIX(op, 2)), 124175fd0b74Schristos OP2(ORMEMLB, OWDREG5), 124275fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0), 124375fd0b74Schristos ENC(dst, reg, 1))) 124475fd0b74Schristos 124575fd0b74Schristos /* 16 bits insn */ 124675fd0b74Schristos INSN(ldb, d, doff4_dsz_x01, load, C64XP, 124775fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 124875fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 124975fd0b74Schristos OP2(ORMEMSB, OWTREG5), 125075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 125175fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0))) 125275fd0b74Schristos INSN(ldb, d, dind_dsz_x01, load, C64XP, 125375fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 125475fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 125575fd0b74Schristos OP2(ORMEMSB, OWTREG5), 125675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 125775fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0))) 125875fd0b74Schristos INSN(ldb, d, dinc_dsz_x01, load, C64XP, 125975fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 126075fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 126175fd0b74Schristos OP2(ORMEMSB, OWTREG5), 126275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 126375fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 126475fd0b74Schristos INSN(ldb, d, ddec_dsz_x01, load, C64XP, 126575fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 126675fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 126775fd0b74Schristos OP2(ORMEMSB, OWTREG5), 126875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 126975fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 127075fd0b74Schristos /**/ 127175fd0b74Schristos 127275fd0b74Schristos INSN(ldbu, d, load_store, load, C62X, 127375fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 127475fd0b74Schristos FIX2(FIX(op, 1), FIX(r, 0)), 127575fd0b74Schristos OP2(ORMEMSB, OWDREG5), 127675fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 127775fd0b74Schristos ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), 127875fd0b74Schristos ENC(srcdst, reg, 1))) 127975fd0b74Schristos INSN(ldbu, d, load_store_long, load, C62X, 128075fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 128175fd0b74Schristos FIX1(FIX(op, 1)), 128275fd0b74Schristos OP2(ORMEMLB, OWDREG5), 128375fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0), 128475fd0b74Schristos ENC(dst, reg, 1))) 128575fd0b74Schristos 128675fd0b74Schristos /* 16 bits insn */ 128775fd0b74Schristos INSN(ldbu, d, dinc_dsz_000, load, C64XP, 128875fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 128975fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 129075fd0b74Schristos OP2(ORMEMSB, OWTREG5), 129175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_minus_one, 0), 129275fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1))) 129375fd0b74Schristos INSN(ldbu, d, dind_dsz_000, load, C64XP, 129475fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 129575fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 129675fd0b74Schristos OP2(ORMEMSB, OWTREG5), 129775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 0), 129875fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1))) 129975fd0b74Schristos INSN(ldbu, d, doff4_dsz_000, load, C64XP, 130075fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 130175fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 130275fd0b74Schristos OP2(ORMEMSB, OWTREG5), 130375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0), 130475fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1))) 130575fd0b74Schristos INSN(ldbu, d, ddec_dsz_000, load, C64XP, 130675fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 130775fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 130875fd0b74Schristos OP2(ORMEMSB, OWTREG5), 130975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_minus_one, 0), 131075fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1))) 131175fd0b74Schristos /**/ 131275fd0b74Schristos 131375fd0b74Schristos INSN(lddw, d, load_store, load, C64X_AND_C67X, 131475fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS, 131575fd0b74Schristos FIX2(FIX(op, 6), FIX(r, 1)), 131675fd0b74Schristos OP2(ORMEMSD, OWDREGD5), 131775fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 131875fd0b74Schristos ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), 131975fd0b74Schristos ENC(srcdst, reg, 1))) 132075fd0b74Schristos 132175fd0b74Schristos /* 16 bits insn */ 132275fd0b74Schristos INSN(lddw, d, dpp, load, C64XP, 132375fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREINCR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS, 132475fd0b74Schristos FIX2(FIX(op, 1), FIX(dw, 1)), 132575fd0b74Schristos OP2(ORMEMSD, OWDREGD5), 132675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 132775fd0b74Schristos ENC(cst, mem_offset_minus_one, 0))) 132875fd0b74Schristos INSN(lddw, d, ddecdw, load, C64XP, 132975fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 133075fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)), 133175fd0b74Schristos OP2(ORMEMSD, OWTREGD5), 133275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1), 133375fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 133475fd0b74Schristos INSN(lddw, d, dincdw, load, C64XP, 133575fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 133675fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)), 133775fd0b74Schristos OP2(ORMEMSD, OWTREGD5), 133875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1), 133975fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 134075fd0b74Schristos INSN(lddw, d, dinddw, load, C64XP, 134175fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 134275fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)), 134375fd0b74Schristos OP2(ORMEMSD, OWTREGD5), 134475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 0), 134575fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1))) 134675fd0b74Schristos INSN(lddw, d, doff4dw, load, C64XP, 134775fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 134875fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)), 134975fd0b74Schristos OP2(ORMEMSD, OWTREGD5), 135075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0), 135175fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1))) 135275fd0b74Schristos /**/ 135375fd0b74Schristos 135475fd0b74Schristos INSN(ldh, d, load_store, load, C62X, 135575fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 135675fd0b74Schristos FIX2(FIX(op, 4), FIX(r, 0)), 135775fd0b74Schristos OP2(ORMEMSH, OWDREG5), 135875fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 135975fd0b74Schristos ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), 136075fd0b74Schristos ENC(srcdst, reg, 1))) 136175fd0b74Schristos INSN(ldh, d, load_store_long, load, C62X, 136275fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 136375fd0b74Schristos FIX1(FIX(op, 4)), 136475fd0b74Schristos OP2(ORMEMLH, OWDREG5), 136575fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0), 136675fd0b74Schristos ENC(dst, reg, 1))) 136775fd0b74Schristos 136875fd0b74Schristos /* 16 bits insn */ 136975fd0b74Schristos INSN(ldh, d, doff4_dsz_x11, load, C64XP, 137075fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 137175fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 137275fd0b74Schristos OP2(ORMEMSH, OWTREG5), 137375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0), 137475fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1))) 137575fd0b74Schristos INSN(ldh, d, dind_dsz_x11, load, C64XP, 137675fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 137775fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 137875fd0b74Schristos OP2(ORMEMSH, OWTREG5), 137975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 138075fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0))) 138175fd0b74Schristos INSN(ldh, d, dinc_dsz_x11, load, C64XP, 138275fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 138375fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 138475fd0b74Schristos OP2(ORMEMSH, OWTREG5), 138575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 138675fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 138775fd0b74Schristos INSN(ldh, d, ddec_dsz_x11, load, C64XP, 138875fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 138975fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 139075fd0b74Schristos OP2(ORMEMSH, OWTREG5), 139175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 139275fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 139375fd0b74Schristos /**/ 139475fd0b74Schristos 139575fd0b74Schristos INSN(ldhu, d, load_store, load, C62X, 139675fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 139775fd0b74Schristos FIX2(FIX(op, 0), FIX(r, 0)), 139875fd0b74Schristos OP2(ORMEMSH, OWDREG5), 139975fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 140075fd0b74Schristos ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), 140175fd0b74Schristos ENC(srcdst, reg, 1))) 140275fd0b74Schristos INSN(ldhu, d, load_store_long, load, C62X, 140375fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 140475fd0b74Schristos FIX1(FIX(op, 0)), 140575fd0b74Schristos OP2(ORMEMLH, OWDREG5), 140675fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0), 140775fd0b74Schristos ENC(dst, reg, 1))) 140875fd0b74Schristos 140975fd0b74Schristos /* 16 bits insn */ 141075fd0b74Schristos INSN(ldhu, d, doff4_dsz_010, load, C64XP, 141175fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 141275fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 141375fd0b74Schristos OP2(ORMEMSH, OWTREG5), 141475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0), 141575fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1))) 141675fd0b74Schristos INSN(ldhu, d, dind_dsz_010, load, C64XP, 141775fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 141875fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 141975fd0b74Schristos OP2(ORMEMSH, OWTREG5), 142075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 142175fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0))) 142275fd0b74Schristos INSN(ldhu, d, dinc_dsz_010, load, C64XP, 142375fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 142475fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 142575fd0b74Schristos OP2(ORMEMSH, OWTREG5), 142675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 142775fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 142875fd0b74Schristos INSN(ldhu, d, ddec_dsz_010, load, C64XP, 142975fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 143075fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 143175fd0b74Schristos OP2(ORMEMSH, OWTREG5), 143275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 143375fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 143475fd0b74Schristos /**/ 143575fd0b74Schristos 143675fd0b74Schristos INSN(ldndw, d, load_nonaligned, load, C64X, 143775fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, 143875fd0b74Schristos FIX0(), 143975fd0b74Schristos OP2(ORMEMND, OWDREGD5), 144075fd0b74Schristos ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 144175fd0b74Schristos ENC(offsetR, mem_offset_noscale, 0), ENC(baseR, reg, 0), 144275fd0b74Schristos ENC(sc, scaled, 0), ENC(dst, reg_shift, 1))) 144375fd0b74Schristos 144475fd0b74Schristos /* 16 bits insn */ 144575fd0b74Schristos INSN(ldndw, d, ddecdw, load, C64XP, 144675fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 144775fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)), 144875fd0b74Schristos OP2(ORMEMND, OWTREGD5), 144975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1), 145075fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one_noscale, 0))) 145175fd0b74Schristos INSN(ldndw, d, dincdw, load, C64XP, 145275fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 145375fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)), 145475fd0b74Schristos OP2(ORMEMND, OWTREGD5), 145575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1), 145675fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one_noscale, 0))) 145775fd0b74Schristos INSN(ldndw, d, dinddw, load, C64XP, 145875fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 145975fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)), 146075fd0b74Schristos OP2(ORMEMND, OWTREGD5), 146175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset_noscale, 0), 146275fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1))) 146375fd0b74Schristos INSN(ldndw, d, doff4dw, load, C64XP, 146475fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 146575fd0b74Schristos FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)), 146675fd0b74Schristos OP2(ORMEMND, OWTREGD5), 146775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_noscale, 0), 146875fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1))) 146975fd0b74Schristos /**/ 147075fd0b74Schristos 147175fd0b74Schristos INSN(ldnw, d, load_store, load, C64X, 147275fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, 147375fd0b74Schristos FIX2(FIX(op, 3), FIX(r, 1)), 147475fd0b74Schristos OP2(ORMEMSW, OWDREG5), 147575fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 147675fd0b74Schristos ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), 147775fd0b74Schristos ENC(srcdst, reg, 1))) 147875fd0b74Schristos 147975fd0b74Schristos /* 16 bits insn */ 148075fd0b74Schristos INSN(ldnw, d, doff4_dsz_110, load, C64XP, 148175fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 148275fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 148375fd0b74Schristos OP2(ORMEMSW, OWTREG5), 148475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 148575fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0))) 148675fd0b74Schristos INSN(ldnw, d, dind_dsz_110, load, C64XP, 148775fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 148875fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 148975fd0b74Schristos OP2(ORMEMSW, OWTREG5), 149075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 149175fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0))) 149275fd0b74Schristos INSN(ldnw, d, dinc_dsz_110, load, C64XP, 149375fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 149475fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 149575fd0b74Schristos OP2(ORMEMSW, OWTREG5), 149675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 149775fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 149875fd0b74Schristos INSN(ldnw, d, ddec_dsz_110, load, C64XP, 149975fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 150075fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 150175fd0b74Schristos OP2(ORMEMSW, OWTREG5), 150275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 150375fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 150475fd0b74Schristos /**/ 150575fd0b74Schristos 150675fd0b74Schristos INSN(ldw, d, load_store, load, C62X, 150775fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 150875fd0b74Schristos FIX2(FIX(op, 6), FIX(r, 0)), 150975fd0b74Schristos OP2(ORMEMSW, OWDREG5), 151075fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0), 151175fd0b74Schristos ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0), 151275fd0b74Schristos ENC(srcdst, reg, 1))) 151375fd0b74Schristos INSN(ldw, d, load_store_long, load, C62X, 151475fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 151575fd0b74Schristos FIX1(FIX(op, 6)), 151675fd0b74Schristos OP2(ORMEMLW, OWDREG5), 151775fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 0), 151875fd0b74Schristos ENC(dst, reg, 1))) 151975fd0b74Schristos 152075fd0b74Schristos /* 16 bits insn */ 152175fd0b74Schristos INSN(ldw, d, doff4_dsz_0xx, load, C64XP, 152275fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 152375fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 0)), 152475fd0b74Schristos OP2(ORMEMSW, OWTREG5), 152575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 152675fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0))) 152775fd0b74Schristos INSN(ldw, d, doff4_dsz_100, load, C64XP, 152875fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 152975fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 153075fd0b74Schristos OP2(ORMEMSW, OWTREG5), 153175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 153275fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0))) 153375fd0b74Schristos INSN(ldw, d, dind_dsz_0xx, load, C64XP, 153475fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 153575fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 0)), 153675fd0b74Schristos OP2(ORMEMSW, OWTREG5), 153775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 153875fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0))) 153975fd0b74Schristos INSN(ldw, d, dind_dsz_100, load, C64XP, 154075fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 154175fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 154275fd0b74Schristos OP2(ORMEMSW, OWTREG5), 154375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 154475fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0))) 154575fd0b74Schristos INSN(ldw, d, dinc_dsz_0xx, load, C64XP, 154675fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 154775fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 0)), 154875fd0b74Schristos OP2(ORMEMSW, OWTREG5), 154975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 155075fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 155175fd0b74Schristos INSN(ldw, d, dinc_dsz_100, load, C64XP, 155275fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 155375fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 155475fd0b74Schristos OP2(ORMEMSW, OWTREG5), 155575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 155675fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 155775fd0b74Schristos INSN(ldw, d, ddec_dsz_0xx, load, C64XP, 155875fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 155975fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 0)), 156075fd0b74Schristos OP2(ORMEMSW, OWTREG5), 156175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 156275fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 156375fd0b74Schristos INSN(ldw, d, ddec_dsz_100, load, C64XP, 156475fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 156575fd0b74Schristos FIX2(FIX(op, 1), FIX(sz, 1)), 156675fd0b74Schristos OP2(ORMEMSW, OWTREG5), 156775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 156875fd0b74Schristos ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0))) 156975fd0b74Schristos INSN(ldw, d, dpp, load, C64XP, 157075fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREINCR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS, 157175fd0b74Schristos FIX2(FIX(op, 1), FIX(dw, 0)), 157275fd0b74Schristos OP2(ORMEMSW, OWTREG5), 157375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 157475fd0b74Schristos ENC(cst, mem_offset_minus_one, 0))) 157575fd0b74Schristos INSN(ldw, d, dstk, load, C64XP, 157675fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE)|TIC6X_FLAG_INSN16_B15PTR, 157775fd0b74Schristos FIX2(FIX(op, 0x1), FIX(s, 1)), 157875fd0b74Schristos OP2(ORMEMSW, OWTREG5), 157975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1), 158075fd0b74Schristos ENC(cst, mem_offset, 0))) 158175fd0b74Schristos /**/ 158275fd0b74Schristos 158375fd0b74Schristos INSN(ll, d, 1_or_2_src, load, C64XP, 158475fd0b74Schristos TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS, 158575fd0b74Schristos FIX3(FIX(s, 1), FIX(op, 0xc), FIX(src1, 0)), 158675fd0b74Schristos OP2(ORMEMDW, OWDREG5), 158775fd0b74Schristos ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1))) 158875fd0b74Schristos 158975fd0b74Schristos INSNE(lmbd, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 159075fd0b74Schristos FIX1(FIX(op, 0x6b)), 159175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 159275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 159375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 159475fd0b74Schristos INSNE(lmbd, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 159575fd0b74Schristos FIX1(FIX(op, 0x6a)), 159675fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 159775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 159875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 159975fd0b74Schristos 160075fd0b74Schristos INSN(max2, l, 1_or_2_src, 1cycle, C64X, 0, 160175fd0b74Schristos FIX1(FIX(op, 0x42)), 160275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 160375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 160475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 160575fd0b74Schristos INSN(max2, s, ext_1_or_2_src, 1cycle, C64XP, 0, 160675fd0b74Schristos FIX1(FIX(op, 0xd)), 160775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 160875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 160975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 161075fd0b74Schristos 161175fd0b74Schristos INSN(maxu4, l, 1_or_2_src, 1cycle, C64X, 0, 161275fd0b74Schristos FIX1(FIX(op, 0x43)), 161375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 161475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 161575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 161675fd0b74Schristos 161775fd0b74Schristos INSN(min2, l, 1_or_2_src, 1cycle, C64X, 0, 161875fd0b74Schristos FIX1(FIX(op, 0x41)), 161975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 162075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 162175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 162275fd0b74Schristos INSN(min2, s, ext_1_or_2_src, 1cycle, C64XP, 0, 162375fd0b74Schristos FIX1(FIX(op, 0xc)), 162475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 162575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 162675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 162775fd0b74Schristos 162875fd0b74Schristos INSN(minu4, l, 1_or_2_src, 1cycle, C64X, 0, 162975fd0b74Schristos FIX1(FIX(op, 0x48)), 163075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 163175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 163275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 163375fd0b74Schristos 163475fd0b74Schristos INSNE(mpy, m_sl16_xsl16_si, m, mpy, 1616_m, C62X, 0, 163575fd0b74Schristos FIX1(FIX(op, 0x19)), 163675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 163775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 163875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 163975fd0b74Schristos INSNE(mpy, m_s5_xsl16_si, m, mpy, 1616_m, C62X, 0, 164075fd0b74Schristos FIX1(FIX(op, 0x18)), 164175fd0b74Schristos OP3(OACST, ORXREG1, OWREG2), 164275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 164375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 164475fd0b74Schristos 164575fd0b74Schristos /* 16-bit insn. */ 164675fd0b74Schristos INSN(mpy, m, m3_sat_0, 1616_m, C67X, 0, 164775fd0b74Schristos FIX1(FIX(op, 0x0)), 164875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 164975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 165075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 165175fd0b74Schristos 165275fd0b74Schristos INSN(mpydp, m, mpy, mpydp, C67X, 0, 165375fd0b74Schristos FIX1(FIX(op, 0x0e)), 165475fd0b74Schristos OP3(ORREGD1234, ORXREGD1324, OWREGD910), 165575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 165675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 165775fd0b74Schristos 165875fd0b74Schristos INSN(mpyh, m, mpy, 1616_m, C62X, 0, 165975fd0b74Schristos FIX1(FIX(op, 0x01)), 166075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 166175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 166275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 166375fd0b74Schristos 166475fd0b74Schristos /* 16 bits insn */ 166575fd0b74Schristos INSN(mpyh, m, m3_sat_0, 1616_m, C67X, 0, 166675fd0b74Schristos FIX1(FIX(op, 0x1)), 166775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 166875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 166975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 167075fd0b74Schristos /**/ 167175fd0b74Schristos 167275fd0b74Schristos INSN(mpyhi, m, compound, 4cycle, C64X, 0, 167375fd0b74Schristos FIX1(FIX(op, 0x14)), 167475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 167575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 167675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 167775fd0b74Schristos 167875fd0b74Schristos INSN(mpyhir, m, compound, 4cycle, C64X, 0, 167975fd0b74Schristos FIX1(FIX(op, 0x10)), 168075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 168175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 168275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 168375fd0b74Schristos 168475fd0b74Schristos INSN(mpyhl, m, mpy, 1616_m, C62X, 0, 168575fd0b74Schristos FIX1(FIX(op, 0x09)), 168675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 168775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 168875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 168975fd0b74Schristos 169075fd0b74Schristos /* 16 bits insn */ 169175fd0b74Schristos INSN(mpyhl, m, m3_sat_0, 1616_m, C67X, 0, 169275fd0b74Schristos FIX1(FIX(op, 0x3)), 169375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 169475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 169575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 169675fd0b74Schristos /**/ 169775fd0b74Schristos 169875fd0b74Schristos INSN(mpyhlu, m, mpy, 1616_m, C62X, 0, 169975fd0b74Schristos FIX1(FIX(op, 0x0f)), 170075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 170175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 170275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 170375fd0b74Schristos 170475fd0b74Schristos INSN(mpyhslu, m, mpy, 1616_m, C62X, 0, 170575fd0b74Schristos FIX1(FIX(op, 0x0b)), 170675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 170775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 170875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 170975fd0b74Schristos 171075fd0b74Schristos INSN(mpyhsu, m, mpy, 1616_m, C62X, 0, 171175fd0b74Schristos FIX1(FIX(op, 0x03)), 171275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 171375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 171475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 171575fd0b74Schristos 171675fd0b74Schristos INSN(mpyhu, m, mpy, 1616_m, C62X, 0, 171775fd0b74Schristos FIX1(FIX(op, 0x07)), 171875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 171975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 172075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 172175fd0b74Schristos 172275fd0b74Schristos INSN(mpyhuls, m, mpy, 1616_m, C62X, 0, 172375fd0b74Schristos FIX1(FIX(op, 0x0d)), 172475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 172575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 172675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 172775fd0b74Schristos 172875fd0b74Schristos INSN(mpyhus, m, mpy, 1616_m, C62X, 0, 172975fd0b74Schristos FIX1(FIX(op, 0x05)), 173075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 173175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 173275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 173375fd0b74Schristos 173475fd0b74Schristos INSNE(mpyi, m_si_xsi_si, m, mpy, mpyi, C67X, 0, 173575fd0b74Schristos FIX1(FIX(op, 0x04)), 173675fd0b74Schristos OP3(ORREG14, ORXREG14, OWREG9), 173775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 173875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 173975fd0b74Schristos INSNE(mpyi, m_s5_xsi_si, m, mpy, mpyi, C67X, 0, 174075fd0b74Schristos FIX1(FIX(op, 0x06)), 174175fd0b74Schristos OP3(OACST, ORXREG14, OWREG9), 174275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 174375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 174475fd0b74Schristos 174575fd0b74Schristos INSNE(mpyid, m_si_xsi_sll, m, mpy, mpyid, C67X, 0, 174675fd0b74Schristos FIX1(FIX(op, 0x08)), 174775fd0b74Schristos OP3(ORREG14, ORXREG14, OWREGD910), 174875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 174975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 175075fd0b74Schristos INSNE(mpyid, m_s5_xsi_sll, m, mpy, mpyid, C67X, 0, 175175fd0b74Schristos FIX1(FIX(op, 0x0c)), 175275fd0b74Schristos OP3(OACST, ORXREG14, OWREGD910), 175375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 175475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 175575fd0b74Schristos 175675fd0b74Schristos INSN(mpyih, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 175775fd0b74Schristos FIX1(FIX(op, 0x14)), 175875fd0b74Schristos OP3(ORXREG1, ORREG1, OWREGD4), 175975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 176075fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 176175fd0b74Schristos 176275fd0b74Schristos INSN(mpyihr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 176375fd0b74Schristos FIX1(FIX(op, 0x10)), 176475fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG4), 176575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 176675fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 176775fd0b74Schristos 176875fd0b74Schristos INSN(mpyil, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 176975fd0b74Schristos FIX1(FIX(op, 0x15)), 177075fd0b74Schristos OP3(ORXREG1, ORREG1, OWREGD4), 177175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 177275fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 177375fd0b74Schristos 177475fd0b74Schristos INSN(mpyilr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 177575fd0b74Schristos FIX1(FIX(op, 0x0e)), 177675fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG4), 177775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 177875fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 177975fd0b74Schristos 178075fd0b74Schristos INSN(mpylh, m, mpy, 1616_m, C62X, 0, 178175fd0b74Schristos FIX1(FIX(op, 0x11)), 178275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 178375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 178475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 178575fd0b74Schristos 178675fd0b74Schristos /* 16 bits insn */ 178775fd0b74Schristos INSN(mpylh, m, m3_sat_0, 1616_m, C67X, 0, 178875fd0b74Schristos FIX1(FIX(op, 0x2)), 178975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 179075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 179175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 179275fd0b74Schristos /**/ 179375fd0b74Schristos 179475fd0b74Schristos INSN(mpylhu, m, mpy, 1616_m, C62X, 0, 179575fd0b74Schristos FIX1(FIX(op, 0x17)), 179675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 179775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 179875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 179975fd0b74Schristos 180075fd0b74Schristos INSN(mpyli, m, compound, 4cycle, C64X, 0, 180175fd0b74Schristos FIX1(FIX(op, 0x15)), 180275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 180375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 180475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 180575fd0b74Schristos 180675fd0b74Schristos INSN(mpylir, m, compound, 4cycle, C64X, 0, 180775fd0b74Schristos FIX1(FIX(op, 0x0e)), 180875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 180975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 181075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 181175fd0b74Schristos 181275fd0b74Schristos INSN(mpylshu, m, mpy, 1616_m, C62X, 0, 181375fd0b74Schristos FIX1(FIX(op, 0x13)), 181475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 181575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 181675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 181775fd0b74Schristos 181875fd0b74Schristos INSN(mpyluhs, m, mpy, 1616_m, C62X, 0, 181975fd0b74Schristos FIX1(FIX(op, 0x15)), 182075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 182175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 182275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 182375fd0b74Schristos 182475fd0b74Schristos INSN(mpysp, m, mpy, 4cycle, C67X, 0, 182575fd0b74Schristos FIX1(FIX(op, 0x1c)), 182675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 182775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 182875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 182975fd0b74Schristos 183075fd0b74Schristos /* Contrary to SPRU733A, MPYSPDP and MPYSP2DP are on both C67X and 183175fd0b74Schristos C67X+. */ 183275fd0b74Schristos INSN(mpyspdp, m, compound, mpyspdp, C67X, 0, 183375fd0b74Schristos FIX1(FIX(op, 0x16)), 183475fd0b74Schristos OP3(ORREG12, ORXREGD12, OWREGD67), 183575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 183675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 183775fd0b74Schristos 183875fd0b74Schristos INSN(mpysp2dp, m, compound, mpyspdp, C67X, 0, 183975fd0b74Schristos FIX1(FIX(op, 0x17)), 184075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD45), 184175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 184275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 184375fd0b74Schristos 184475fd0b74Schristos INSNE(mpysu, m_sl16_xul16_si, m, mpy, 1616_m, C62X, 0, 184575fd0b74Schristos FIX1(FIX(op, 0x1b)), 184675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 184775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 184875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 184975fd0b74Schristos INSNE(mpysu, m_s5_xul16_si, m, mpy, 1616_m, C62X, 0, 185075fd0b74Schristos FIX1(FIX(op, 0x1e)), 185175fd0b74Schristos OP3(OACST, ORXREG1, OWREG2), 185275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 185375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 185475fd0b74Schristos 185575fd0b74Schristos INSN(mpysu4, m, compound, 4cycle, C64X, 0, 185675fd0b74Schristos FIX1(FIX(op, 0x05)), 185775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 185875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 185975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 186075fd0b74Schristos 186175fd0b74Schristos INSN(mpyu, m, mpy, 1616_m, C62X, 0, 186275fd0b74Schristos FIX1(FIX(op, 0x1f)), 186375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 186475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 186575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 186675fd0b74Schristos 186775fd0b74Schristos INSN(mpyu4, m, compound, 4cycle, C64X, 0, 186875fd0b74Schristos FIX1(FIX(op, 0x04)), 186975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 187075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 187175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 187275fd0b74Schristos 187375fd0b74Schristos INSN(mpyus, m, mpy, 1616_m, C62X, 0, 187475fd0b74Schristos FIX1(FIX(op, 0x1d)), 187575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 187675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 187775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 187875fd0b74Schristos 187975fd0b74Schristos INSN(mpyus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO, 188075fd0b74Schristos FIX1(FIX(op, 0x05)), 188175fd0b74Schristos OP3(ORXREG1, ORREG1, OWREGD4), 188275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 188375fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 188475fd0b74Schristos 188575fd0b74Schristos INSN(mpy2, m, compound, 4cycle, C64X, 0, 188675fd0b74Schristos FIX1(FIX(op, 0x00)), 188775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 188875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 188975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 189075fd0b74Schristos 189175fd0b74Schristos INSN(mpy2ir, m, 1_or_2_src, 4cycle, C64XP, 0, 189275fd0b74Schristos FIX1(FIX(op, 0x0f)), 189375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 189475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 189575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 189675fd0b74Schristos 189775fd0b74Schristos INSNE(mpy32, 32_32_32, m, mpy, 4cycle, C64XP, 0, 189875fd0b74Schristos FIX1(FIX(op, 0x10)), 189975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 190075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 190175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 190275fd0b74Schristos INSNE(mpy32, 32_32_64, m, mpy, 4cycle, C64XP, 0, 190375fd0b74Schristos FIX1(FIX(op, 0x14)), 190475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 190575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 190675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 190775fd0b74Schristos 190875fd0b74Schristos INSN(mpy32su, m, mpy, 4cycle, C64XP, 0, 190975fd0b74Schristos FIX1(FIX(op, 0x16)), 191075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 191175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 191275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 191375fd0b74Schristos 191475fd0b74Schristos INSN(mpy32u, m, compound, 4cycle, C64XP, 0, 191575fd0b74Schristos FIX1(FIX(op, 0x18)), 191675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 191775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 191875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 191975fd0b74Schristos 192075fd0b74Schristos INSN(mpy32us, m, compound, 4cycle, C64XP, 0, 192175fd0b74Schristos FIX1(FIX(op, 0x19)), 192275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 192375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 192475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 192575fd0b74Schristos 192675fd0b74Schristos /* "or" forms of "mv" are preferred over "add" forms when available 192775fd0b74Schristos because "or" uses less power. However, 40-bit moves are only 192875fd0b74Schristos available through "add", and before C64X D-unit moves are only 192975fd0b74Schristos available through "add" (without cross paths being available). */ 193075fd0b74Schristos INSNE(mv, l_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 193175fd0b74Schristos FIX2(FIX(op, 0x7e), FIX(src1, 0)), 193275fd0b74Schristos OP2(ORXREG1, OWREG1), 193375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 193475fd0b74Schristos ENC(dst, reg, 1))) 193575fd0b74Schristos INSNE(mv, l_sl_sl, l, 1_or_2_src, 1cycle, C62X, 193675fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, 193775fd0b74Schristos FIX3(FIX(op, 0x20), FIX(x, 0), FIX(src1, 0)), 193875fd0b74Schristos OP2(ORREGL1, OWREGL1), 193975fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) 194075fd0b74Schristos INSNE(mv, s_xui_ui, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 194175fd0b74Schristos FIX2(FIX(op, 0x1a), FIX(src1, 0)), 194275fd0b74Schristos OP2(ORXREG1, OWREG1), 194375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 194475fd0b74Schristos ENC(dst, reg, 1))) 194575fd0b74Schristos INSNE(mv, d_si_si, d, 1_or_2_src, 1cycle, C62X, 194675fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(0), 194775fd0b74Schristos FIX2(FIX(op, 0x12), FIX(src1, 0)), 194875fd0b74Schristos OP2(ORREG1, OWREG1), 194975fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) 195075fd0b74Schristos INSNE(mv, d_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 195175fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1), 195275fd0b74Schristos FIX2(FIX(op, 0x3), FIX(src1, 0)), 195375fd0b74Schristos OP2(ORXREG1, OWREG1), 195475fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 195575fd0b74Schristos ENC(dst, reg, 1))) 195675fd0b74Schristos 195775fd0b74Schristos /* 16 bits insn */ 195875fd0b74Schristos INSNU(mv, l, lsdmvto, 1cycle, C64X, 0, 195975fd0b74Schristos FIX1(FIX(unit, 0x0)), 196075fd0b74Schristos OP2(ORXREG1, OWREG1), 196175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1))) 196275fd0b74Schristos 196375fd0b74Schristos INSNU(mv, s, lsdmvto, 1cycle, C64X, 0, 196475fd0b74Schristos FIX1(FIX(unit, 0x1)), 196575fd0b74Schristos OP2(ORXREG1, OWREG1), 196675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1))) 196775fd0b74Schristos 196875fd0b74Schristos INSNU(mv, d, lsdmvto, 1cycle, C64X, 0, 196975fd0b74Schristos FIX1(FIX(unit, 0x2)), 197075fd0b74Schristos OP2(ORXREG1, OWREG1), 197175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1))) 197275fd0b74Schristos 197375fd0b74Schristos INSNU(mv, l, lsdmvfr, 1cycle, C64X, 0, 197475fd0b74Schristos FIX1(FIX(unit, 0x0)), 197575fd0b74Schristos OP2(ORXREG1, OWREG1), 197675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1))) 197775fd0b74Schristos 197875fd0b74Schristos INSNU(mv, s, lsdmvfr, 1cycle, C64X, 0, 197975fd0b74Schristos FIX1(FIX(unit, 0x1)), 198075fd0b74Schristos OP2(ORXREG1, OWREG1), 198175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1))) 198275fd0b74Schristos 198375fd0b74Schristos INSNU(mv, d, lsdmvfr, 1cycle, C64X, 0, 198475fd0b74Schristos FIX1(FIX(unit, 0x2)), 198575fd0b74Schristos OP2(ORXREG1, OWREG1), 198675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1))) 198775fd0b74Schristos /**/ 198875fd0b74Schristos 198975fd0b74Schristos INSNE(mvc, from_cr, s, 1_or_2_src, 1cycle, C62X, 199075fd0b74Schristos TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_NO_CROSS, 199175fd0b74Schristos FIX3(FIX(s, 1), FIX(op, 0x0f), FIX(x, 0)), 199275fd0b74Schristos OP2(ORCREG1, OWREG1), 199375fd0b74Schristos ENC3(ENC(src1, crhi, 0), ENC(src2, crlo, 0), ENC(dst, reg, 1))) 199475fd0b74Schristos INSNE(mvc, to_cr, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_SIDE_B_ONLY, 199575fd0b74Schristos FIX2(FIX(s, 1), FIX(op, 0x0e)), 199675fd0b74Schristos OP2(ORXREG1, OWCREG1), 199775fd0b74Schristos ENC4(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, crhi, 1), 199875fd0b74Schristos ENC(dst, crlo, 1))) 199975fd0b74Schristos 200075fd0b74Schristos /* 16 bits insn */ 200175fd0b74Schristos INSN(mvc, s, sx1, 1cycle, C64XP, 200275fd0b74Schristos TIC6X_FLAG_NO_CROSS, 200375fd0b74Schristos FIX1(FIX(op, 0x6)), 200475fd0b74Schristos OP2(ORREG1B, OWILC1), 200575fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 0))) 200675fd0b74Schristos /**/ 200775fd0b74Schristos 200875fd0b74Schristos INSN(mvd, m, unary, 4cycle, C64X, 0, 200975fd0b74Schristos FIX1(FIX(op, 0x1a)), 201075fd0b74Schristos OP2(ORXREG1, OWREG4), 201175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 201275fd0b74Schristos ENC(dst, reg, 1))) 201375fd0b74Schristos 201475fd0b74Schristos INSN(mvk, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 201575fd0b74Schristos FIX1(FIX(h, 0)), 201675fd0b74Schristos OP2(OLCST, OWREG1), 201775fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1))) 201875fd0b74Schristos INSN(mvk, l, unary, 1cycle, C64X, TIC6X_FLAG_NO_CROSS, 201975fd0b74Schristos FIX2(FIX(x, 0), FIX(op, 0x05)), 202075fd0b74Schristos OP2(OACST, OWREG1), 202175fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, scst, 0), ENC(dst, reg, 1))) 202275fd0b74Schristos INSN(mvk, d, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS, 202375fd0b74Schristos FIX2(FIX(op, 0x00), FIX(src2, 0)), 202475fd0b74Schristos OP2(OACST, OWREG1), 202575fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(dst, reg, 1))) 202675fd0b74Schristos 202775fd0b74Schristos /* 16 bits insn */ 202875fd0b74Schristos INSN(mvk, l, lx5, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 202975fd0b74Schristos FIX0(), 203075fd0b74Schristos OP2(OLCST, OWREG1), 203175fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1))) 203275fd0b74Schristos INSN(mvk, s, smvk8, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 203375fd0b74Schristos FIX0(), 203475fd0b74Schristos OP2(OLCST, OWREG1), 203575fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1))) 203675fd0b74Schristos INSNU(mvk, l, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED, 203775fd0b74Schristos FIX1(FIX(unit, 0x0)), 203875fd0b74Schristos OP2(OACST, OWREG1), 203975fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1))) 204075fd0b74Schristos INSNU(mvk, s, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED, 204175fd0b74Schristos FIX1(FIX(unit, 0x1)), 204275fd0b74Schristos OP2(OACST, OWREG1), 204375fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1))) 204475fd0b74Schristos INSNU(mvk, d, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED, 204575fd0b74Schristos FIX1(FIX(unit, 0x2)), 204675fd0b74Schristos OP2(OACST, OWREG1), 204775fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1))) 204875fd0b74Schristos INSNUE(mvk, zero, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 204975fd0b74Schristos FIX2(FIX(op, 0), FIX(unit, 0x0)), 205075fd0b74Schristos OP2(OHWCST0, OWREG1), 205175fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1))) 205275fd0b74Schristos INSNUE(mvk, zero, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 205375fd0b74Schristos FIX2(FIX(op, 0), FIX(unit, 0x1)), 205475fd0b74Schristos OP2(OHWCST0, OWREG1), 205575fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1))) 205675fd0b74Schristos INSNUE(mvk, zero, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 205775fd0b74Schristos FIX2(FIX(op, 0), FIX(unit, 0x2)), 205875fd0b74Schristos OP2(OHWCST0, OWREG1), 205975fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1))) 206075fd0b74Schristos INSNUE(mvk, one, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 206175fd0b74Schristos FIX2(FIX(op, 1), FIX(unit, 0x0)), 206275fd0b74Schristos OP2(OHWCST1, OWREG1), 206375fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1))) 206475fd0b74Schristos INSNUE(mvk, one, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 206575fd0b74Schristos FIX2(FIX(op, 1), FIX(unit, 0x1)), 206675fd0b74Schristos OP2(OHWCST1, OWREG1), 206775fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1))) 206875fd0b74Schristos INSNUE(mvk, one, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 206975fd0b74Schristos FIX2(FIX(op, 1), FIX(unit, 0x2)), 207075fd0b74Schristos OP2(OHWCST1, OWREG1), 207175fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1))) 207275fd0b74Schristos /**/ 207375fd0b74Schristos 207475fd0b74Schristos INSN(mvkh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 207575fd0b74Schristos FIX1(FIX(h, 1)), 207675fd0b74Schristos OP2(OLCST, OWREG1), 207775fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, lcst_high16, 0), ENC(dst, reg, 1))) 207875fd0b74Schristos 207975fd0b74Schristos INSN(mvklh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, 208075fd0b74Schristos FIX1(FIX(h, 1)), 208175fd0b74Schristos OP2(OLCST, OWREG1), 208275fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1))) 208375fd0b74Schristos 208475fd0b74Schristos INSN(mvkl, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, 208575fd0b74Schristos FIX1(FIX(h, 0)), 208675fd0b74Schristos OP2(OLCST, OWREG1), 208775fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1))) 208875fd0b74Schristos 208975fd0b74Schristos INSNE(neg, s_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 209075fd0b74Schristos FIX2(FIX(op, 0x16), FIX(src1, 0)), 209175fd0b74Schristos OP2(ORXREG1, OWREG1), 209275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 209375fd0b74Schristos ENC(dst, reg, 1))) 209475fd0b74Schristos INSNE(neg, l_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 209575fd0b74Schristos FIX2(FIX(op, 0x06), FIX(src1, 0)), 209675fd0b74Schristos OP2(ORXREG1, OWREG1), 209775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 209875fd0b74Schristos ENC(dst, reg, 1))) 209975fd0b74Schristos INSNE(neg, l_sl_sl, l, 1_or_2_src, 1cycle, C62X, 210075fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, 210175fd0b74Schristos FIX2(FIX(op, 0x24), FIX(src1, 0)), 210275fd0b74Schristos OP2(ORREGL1, OWREGL1), 210375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 210475fd0b74Schristos ENC(dst, reg, 1))) 210575fd0b74Schristos 210675fd0b74Schristos INSN(nop, nfu, nop_idle, nop, C62X, 0, 210775fd0b74Schristos FIX2(FIX(s, 0), RAN(op, 0, 8)), 210875fd0b74Schristos OP1(OACST), 210975fd0b74Schristos ENC1(ENC(op, ucst_minus_one, 0))) 211075fd0b74Schristos INSNE(nop, 1, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MACRO, 211175fd0b74Schristos FIX2(FIX(s, 0), FIX(op, 0)), 211275fd0b74Schristos OP0(), 211375fd0b74Schristos ENC0()) 211475fd0b74Schristos 211575fd0b74Schristos /* 16 bits insn */ 211675fd0b74Schristos /* contrary to sprufe8b.pdf p767, and accordingly to 211775fd0b74Schristos * dis6x.exe output, unop3 opcode is decoded as NOP N3 + 1 */ 211875fd0b74Schristos INSN(nop, nfu, unop, nop, C64XP, 0, 211975fd0b74Schristos FIX0(), 212075fd0b74Schristos OP1(OACST), 212175fd0b74Schristos ENC1(ENC(n, ucst_minus_one, 0))) 212275fd0b74Schristos /**/ 212375fd0b74Schristos 212475fd0b74Schristos INSNE(norm, l_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0, 212575fd0b74Schristos FIX2(FIX(op, 0x63), FIX(src1, 0)), 212675fd0b74Schristos OP2(ORXREG1, OWREG1), 212775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 212875fd0b74Schristos ENC(dst, reg, 1))) 212975fd0b74Schristos INSNE(norm, l_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 213075fd0b74Schristos FIX3(FIX(op, 0x60), FIX(x, 0), FIX(src1, 0)), 213175fd0b74Schristos OP2(ORREGL1, OWREG1), 213275fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) 213375fd0b74Schristos 213475fd0b74Schristos INSN(not, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 213575fd0b74Schristos FIX2(FIX(op, 0x6e), FIX(src1, 0x1f)), 213675fd0b74Schristos OP2(ORXREG1, OWREG1), 213775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 213875fd0b74Schristos ENC(dst, reg, 1))) 213975fd0b74Schristos INSN(not, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 214075fd0b74Schristos FIX2(FIX(op, 0x0a), FIX(src1, 0x1f)), 214175fd0b74Schristos OP2(ORXREG1, OWREG1), 214275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 214375fd0b74Schristos ENC(dst, reg, 1))) 214475fd0b74Schristos INSN(not, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO, 214575fd0b74Schristos FIX2(FIX(op, 0xf), FIX(src1, 0x1f)), 214675fd0b74Schristos OP2(ORXREG1, OWREG1), 214775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 214875fd0b74Schristos ENC(dst, reg, 1))) 214975fd0b74Schristos 215075fd0b74Schristos INSNE(or, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, 215175fd0b74Schristos FIX1(FIX(op, 0x2)), 215275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 215375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 215475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 215575fd0b74Schristos INSNE(or, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, 215675fd0b74Schristos FIX1(FIX(op, 0x3)), 215775fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 215875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 215975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 216075fd0b74Schristos INSNE(or, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 216175fd0b74Schristos FIX1(FIX(op, 0x7f)), 216275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 216375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 216475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 216575fd0b74Schristos INSNE(or, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 216675fd0b74Schristos FIX1(FIX(op, 0x7e)), 216775fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 216875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 216975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 217075fd0b74Schristos INSNE(or, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, 217175fd0b74Schristos FIX1(FIX(op, 0x1b)), 217275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 217375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 217475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 217575fd0b74Schristos INSNE(or, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, 217675fd0b74Schristos FIX1(FIX(op, 0x1a)), 217775fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 217875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 217975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 218075fd0b74Schristos 218175fd0b74Schristos /* 16 bits insn */ 218275fd0b74Schristos INSN(or, l, l2c, 1cycle, C64XP, 0, 218375fd0b74Schristos FIX1(FIX(op, 1)), 218475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 218575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 218675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 218775fd0b74Schristos /**/ 218875fd0b74Schristos 218975fd0b74Schristos INSN(pack2, l, 1_or_2_src, 1cycle, C64X, 0, 219075fd0b74Schristos FIX1(FIX(op, 0x0)), 219175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 219275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 219375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 219475fd0b74Schristos INSN(pack2, s, ext_1_or_2_src, 1cycle, C64X, 0, 219575fd0b74Schristos FIX1(FIX(op, 0xf)), 219675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 219775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 219875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 219975fd0b74Schristos 220075fd0b74Schristos INSN(packh2, l, 1_or_2_src, 1cycle, C64X, 0, 220175fd0b74Schristos FIX1(FIX(op, 0x1e)), 220275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 220375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 220475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 220575fd0b74Schristos INSN(packh2, s, 1_or_2_src, 1cycle, C64X, 0, 220675fd0b74Schristos FIX1(FIX(op, 0x9)), 220775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 220875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 220975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 221075fd0b74Schristos 221175fd0b74Schristos INSN(packh4, l, 1_or_2_src, 1cycle, C64X, 0, 221275fd0b74Schristos FIX1(FIX(op, 0x69)), 221375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 221475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 221575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 221675fd0b74Schristos 221775fd0b74Schristos INSN(packhl2, l, 1_or_2_src, 1cycle, C64X, 0, 221875fd0b74Schristos FIX1(FIX(op, 0x1c)), 221975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 222075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 222175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 222275fd0b74Schristos INSN(packhl2, s, 1_or_2_src, 1cycle, C64X, 0, 222375fd0b74Schristos FIX1(FIX(op, 0x8)), 222475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 222575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 222675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 222775fd0b74Schristos 222875fd0b74Schristos INSN(packlh2, l, 1_or_2_src, 1cycle, C64X, 0, 222975fd0b74Schristos FIX1(FIX(op, 0x1b)), 223075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 223175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 223275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 223375fd0b74Schristos INSN(packlh2, s, 1_or_2_src, 1cycle, C64X, 0, 223475fd0b74Schristos FIX1(FIX(op, 0x10)), 223575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 223675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 223775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 223875fd0b74Schristos 223975fd0b74Schristos INSN(packl4, l, 1_or_2_src, 1cycle, C64X, 0, 224075fd0b74Schristos FIX1(FIX(op, 0x68)), 224175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 224275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 224375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 224475fd0b74Schristos 224575fd0b74Schristos INSN(rcpdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS, 224675fd0b74Schristos FIX2(FIX(op, 0x2d), FIX(x, 0)), 224775fd0b74Schristos OP2(ORREGD1, OWREGD12), 224875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), 224975fd0b74Schristos ENC(dst, reg, 1))) 225075fd0b74Schristos 225175fd0b74Schristos INSN(rcpsp, s, 1_or_2_src, 1cycle, C67X, 0, 225275fd0b74Schristos FIX2(FIX(op, 0x3d), FIX(src1, 0)), 225375fd0b74Schristos OP2(ORXREG1, OWREG1), 225475fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 225575fd0b74Schristos ENC(dst, reg, 1))) 225675fd0b74Schristos 225775fd0b74Schristos INSN(ret, s, ext_branch_cond_imm, branch, C62X, 225875fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, 225975fd0b74Schristos FIX0(), 226075fd0b74Schristos OP1(OLCST), 226175fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) 226275fd0b74Schristos INSN(ret, s, branch, branch, C62X, 226375fd0b74Schristos TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, 226475fd0b74Schristos FIX1(FIX(s, 1)), 226575fd0b74Schristos OP1(ORXREG1), 226675fd0b74Schristos ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0))) 226775fd0b74Schristos INSN(ret, s, b_irp, branch, C62X, 226875fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, 226975fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 227075fd0b74Schristos OP1(ORIRP1), 227175fd0b74Schristos ENC0()) 227275fd0b74Schristos INSN(ret, s, b_nrp, branch, C62X, 227375fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, 227475fd0b74Schristos FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)), 227575fd0b74Schristos OP1(ORNRP1), 227675fd0b74Schristos ENC0()) 227775fd0b74Schristos 227875fd0b74Schristos INSN(retp, s, call_imm_nop, branch, C64XP, 227975fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN, 228075fd0b74Schristos FIX1(FIX(z, 1)), 228175fd0b74Schristos OP2(OLCST, OWRETREG1), 228275fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0))) 228375fd0b74Schristos 228475fd0b74Schristos INSN(rint, nfu, rint, 1cycle, C64XP, 0, 228575fd0b74Schristos FIX1(FIX(s, 0)), 228675fd0b74Schristos OP0(), 228775fd0b74Schristos ENC0()) 228875fd0b74Schristos 228975fd0b74Schristos INSNE(rotl, m_ui_xui_ui, m, compound, 1616_m, C64X, 0, 229075fd0b74Schristos FIX1(FIX(op, 0x1d)), 229175fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG2), 229275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 229375fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 229475fd0b74Schristos INSNE(rotl, m_u5_xui_ui, m, compound, 1616_m, C64X, 0, 229575fd0b74Schristos FIX1(FIX(op, 0x1e)), 229675fd0b74Schristos OP3(ORXREG1, OACST, OWREG2), 229775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 229875fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 229975fd0b74Schristos 230075fd0b74Schristos INSN(rpack2, s, ext_1_or_2_src_noncond, 1cycle, C64XP, 0, 230175fd0b74Schristos FIX2(FIX(op, 0xb), FIX(z, 1)), 230275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 230375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 230475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 230575fd0b74Schristos 230675fd0b74Schristos INSN(rsqrdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS, 230775fd0b74Schristos FIX2(FIX(op, 0x2e), FIX(x, 0)), 230875fd0b74Schristos OP2(ORREGD1, OWREGD12), 230975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0), 231075fd0b74Schristos ENC(dst, reg, 1))) 231175fd0b74Schristos 231275fd0b74Schristos INSN(rsqrsp, s, 1_or_2_src, 1cycle, C67X, 0, 231375fd0b74Schristos FIX2(FIX(op, 0x3e), FIX(src1, 0)), 231475fd0b74Schristos OP2(ORXREG1, OWREG1), 231575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 231675fd0b74Schristos ENC(dst, reg, 1))) 231775fd0b74Schristos 231875fd0b74Schristos INSNE(sadd, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, 231975fd0b74Schristos FIX1(FIX(op, 0x13)), 232075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 232175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 232275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 232375fd0b74Schristos INSNE(sadd, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0, 232475fd0b74Schristos FIX1(FIX(op, 0x31)), 232575fd0b74Schristos OP3(ORXREG1, ORREGL1, OWREGL1), 232675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 232775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 232875fd0b74Schristos INSNE(sadd, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, 232975fd0b74Schristos FIX1(FIX(op, 0x12)), 233075fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 233175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 233275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 233375fd0b74Schristos INSNE(sadd, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 233475fd0b74Schristos FIX1(FIX(op, 0x30)), 233575fd0b74Schristos OP3(OACST, ORREGL1, OWREGL1), 233675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 233775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 233875fd0b74Schristos INSNE(sadd, s_si_xsi_si, s, 1_or_2_src, 1cycle, C64X, 0, 233975fd0b74Schristos FIX1(FIX(op, 0x20)), 234075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 234175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 234275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 234375fd0b74Schristos 234475fd0b74Schristos /* 16 bits insn */ 234575fd0b74Schristos INSN(sadd, l, l3_sat_1, 1cycle, C64XP, 0, 234675fd0b74Schristos FIX1(FIX(op, 0)), 234775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 234875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 234975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 235075fd0b74Schristos 235175fd0b74Schristos INSN(sadd, s, s3_sat_1, 1cycle, C64XP,0, 235275fd0b74Schristos FIX1(FIX(op, 0x0)), 235375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 235475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 235575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 235675fd0b74Schristos /**/ 235775fd0b74Schristos 235875fd0b74Schristos INSN(sadd2, s, ext_1_or_2_src, 1cycle, C64X, 0, 235975fd0b74Schristos FIX1(FIX(op, 0x0)), 236075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 236175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 236275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 236375fd0b74Schristos 236475fd0b74Schristos INSN(saddsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, 236575fd0b74Schristos FIX1(FIX(op, 0x0e)), 236675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 236775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 236875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 236975fd0b74Schristos 237075fd0b74Schristos INSN(saddsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, 237175fd0b74Schristos FIX1(FIX(op, 0x0f)), 237275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 237375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 237475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 237575fd0b74Schristos 237675fd0b74Schristos INSN(saddsu2, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO, 237775fd0b74Schristos FIX1(FIX(op, 0x1)), 237875fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 237975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 238075fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 238175fd0b74Schristos 238275fd0b74Schristos INSN(saddus2, s, ext_1_or_2_src, 1cycle, C64X, 0, 238375fd0b74Schristos FIX1(FIX(op, 0x1)), 238475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 238575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 238675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 238775fd0b74Schristos 238875fd0b74Schristos INSN(saddu4, s, ext_1_or_2_src, 1cycle, C64X, 0, 238975fd0b74Schristos FIX1(FIX(op, 0x3)), 239075fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 239175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 239275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 239375fd0b74Schristos 239475fd0b74Schristos INSN(sat, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 239575fd0b74Schristos FIX3(FIX(op, 0x40), FIX(x, 0), FIX(src1, 0)), 239675fd0b74Schristos OP2(ORREGL1, OWREG1), 239775fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1))) 239875fd0b74Schristos 239975fd0b74Schristos INSN(set, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 240075fd0b74Schristos FIX1(FIX(op, 0x2)), 240175fd0b74Schristos OP4(ORREG1, OACST, OACST, OWREG1), 240275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1), 240375fd0b74Schristos ENC(cstb, ucst, 2), ENC(dst, reg, 3))) 240475fd0b74Schristos INSN(set, s, 1_or_2_src, 1cycle, C62X, 0, 240575fd0b74Schristos FIX1(FIX(op, 0x3b)), 240675fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 240775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 240875fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 240975fd0b74Schristos 241075fd0b74Schristos /* 16 bits insn */ 241175fd0b74Schristos INSN(set, s, sc5, 1cycle, C64XP, 0, 241275fd0b74Schristos FIX1(FIX(op, 1)), 241375fd0b74Schristos OP4(ORREG1, OACST, OACST, OWREG1), 241475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1), 241575fd0b74Schristos ENC(cst, ucst, 2), ENC(srcdst, reg, 3))) 241675fd0b74Schristos /**/ 241775fd0b74Schristos 241875fd0b74Schristos INSN(shfl, m, unary, 1616_m, C64X, 0, 241975fd0b74Schristos FIX1(FIX(op, 0x1c)), 242075fd0b74Schristos OP2(ORXREG1, OWREG2), 242175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 242275fd0b74Schristos ENC(dst, reg, 1))) 242375fd0b74Schristos 242475fd0b74Schristos INSN(shfl3, l, 1_or_2_src_noncond, 1cycle, C64XP, 0, 242575fd0b74Schristos FIX1(FIX(op, 0x36)), 242675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD1), 242775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 242875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 242975fd0b74Schristos 243075fd0b74Schristos INSNE(shl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0, 243175fd0b74Schristos FIX1(FIX(op, 0x33)), 243275fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 243375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 243475fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 243575fd0b74Schristos INSNE(shl, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 243675fd0b74Schristos FIX2(FIX(op, 0x31), FIX(x, 0)), 243775fd0b74Schristos OP3(ORREGL1, ORREG1, OWREGL1), 243875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 243975fd0b74Schristos ENC(dst, reg, 2))) 244075fd0b74Schristos INSNE(shl, s_xui_ui_ul, s, 1_or_2_src, 1cycle, C62X, 0, 244175fd0b74Schristos FIX1(FIX(op, 0x13)), 244275fd0b74Schristos OP3(ORXREG1, ORREG1, OWREGL1), 244375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 244475fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 244575fd0b74Schristos INSNE(shl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0, 244675fd0b74Schristos FIX1(FIX(op, 0x32)), 244775fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 244875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 244975fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 245075fd0b74Schristos INSNE(shl, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 245175fd0b74Schristos FIX2(FIX(op, 0x30), FIX(x, 0)), 245275fd0b74Schristos OP3(ORREGL1, OACST, OWREGL1), 245375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 245475fd0b74Schristos ENC(dst, reg, 2))) 245575fd0b74Schristos INSNE(shl, s_xui_u5_ul, s, 1_or_2_src, 1cycle, C62X, 0, 245675fd0b74Schristos FIX1(FIX(op, 0x12)), 245775fd0b74Schristos OP3(ORXREG1, OACST, OWREGL1), 245875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 245975fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 246075fd0b74Schristos 246175fd0b74Schristos /* 16bit insn */ 246275fd0b74Schristos INSN(shl, s, s3i, 1cycle, C64XP, 0, 246375fd0b74Schristos FIX1(FIX(op, 0x0)), 246475fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 246575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 246675fd0b74Schristos ENC(cst, cst_s3i, 1), ENC(dst, reg, 2))) 246775fd0b74Schristos INSN(shl, s, ssh5_sat_x, 1cycle, C64XP, 246875fd0b74Schristos TIC6X_FLAG_NO_CROSS, 246975fd0b74Schristos FIX1(FIX(op, 0x0)), 247075fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 247175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), 247275fd0b74Schristos ENC(cst, ucst, 1), ENC(srcdst, reg, 2))) 247375fd0b74Schristos INSN(shl, s, s2sh, 1cycle, C64XP, 0, 247475fd0b74Schristos FIX1(FIX(op, 0x0)), 247575fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 247675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1), 247775fd0b74Schristos ENC(srcdst, reg, 2))) 247875fd0b74Schristos /**/ 247975fd0b74Schristos 248075fd0b74Schristos INSN(shlmb, l, 1_or_2_src, 1cycle, C64X, 0, 248175fd0b74Schristos FIX1(FIX(op, 0x61)), 248275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 248375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 248475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 248575fd0b74Schristos INSN(shlmb, s, ext_1_or_2_src, 1cycle, C64X, 0, 248675fd0b74Schristos FIX1(FIX(op, 0x9)), 248775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 248875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 248975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 249075fd0b74Schristos 249175fd0b74Schristos INSNE(shr, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0, 249275fd0b74Schristos FIX1(FIX(op, 0x37)), 249375fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 249475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 249575fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 249675fd0b74Schristos INSNE(shr, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 249775fd0b74Schristos FIX2(FIX(op, 0x35), FIX(x, 0)), 249875fd0b74Schristos OP3(ORREGL1, ORREG1, OWREGL1), 249975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 250075fd0b74Schristos ENC(dst, reg, 2))) 250175fd0b74Schristos INSNE(shr, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0, 250275fd0b74Schristos FIX1(FIX(op, 0x36)), 250375fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 250475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 250575fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 250675fd0b74Schristos INSNE(shr, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 250775fd0b74Schristos FIX2(FIX(op, 0x34), FIX(x, 0)), 250875fd0b74Schristos OP3(ORREGL1, OACST, OWREGL1), 250975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 251075fd0b74Schristos ENC(dst, reg, 2))) 251175fd0b74Schristos 251275fd0b74Schristos /* 16bit insn */ 251375fd0b74Schristos INSN(shr, s, s3i, 1cycle, C64XP, 0, 251475fd0b74Schristos FIX1(FIX(op, 0x1)), 251575fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 251675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 251775fd0b74Schristos ENC(cst, cst_s3i, 1), ENC(dst, reg, 2))) 251875fd0b74Schristos INSN(shr, s, ssh5_sat_x, 1cycle, C64XP, 251975fd0b74Schristos TIC6X_FLAG_NO_CROSS, 252075fd0b74Schristos FIX1(FIX(op, 0x1)), 252175fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 252275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), 252375fd0b74Schristos ENC(cst, ucst, 1), ENC(srcdst, reg, 2))) 252475fd0b74Schristos INSN(shr, s, s2sh, 1cycle, C64XP, 0, 252575fd0b74Schristos FIX1(FIX(op, 0x1)), 252675fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 252775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1), 252875fd0b74Schristos ENC(srcdst, reg, 2))) 252975fd0b74Schristos /**/ 253075fd0b74Schristos 253175fd0b74Schristos INSNE(shr2, s_xs2_ui_s2, s, ext_1_or_2_src, 1cycle, C64X, 0, 253275fd0b74Schristos FIX1(FIX(op, 0x7)), 253375fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 253475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 253575fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 253675fd0b74Schristos INSNE(shr2, s_xs2_u5_s2, s, 1_or_2_src, 1cycle, C64X, 0, 253775fd0b74Schristos FIX1(FIX(op, 0x18)), 253875fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 253975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 254075fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 254175fd0b74Schristos 254275fd0b74Schristos INSN(shrmb, l, 1_or_2_src, 1cycle, C64X, 0, 254375fd0b74Schristos FIX1(FIX(op, 0x62)), 254475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 254575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 254675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 254775fd0b74Schristos INSN(shrmb, s, ext_1_or_2_src, 1cycle, C64X, 0, 254875fd0b74Schristos FIX1(FIX(op, 0xa)), 254975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 255075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 255175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 255275fd0b74Schristos 255375fd0b74Schristos INSNE(shru, s_xui_ui_ui, s, 1_or_2_src, 1cycle, C62X, 0, 255475fd0b74Schristos FIX1(FIX(op, 0x27)), 255575fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 255675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 255775fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 255875fd0b74Schristos INSNE(shru, s_ul_ui_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 255975fd0b74Schristos FIX2(FIX(op, 0x25), FIX(x, 0)), 256075fd0b74Schristos OP3(ORREGL1, ORREG1, OWREGL1), 256175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 256275fd0b74Schristos ENC(dst, reg, 2))) 256375fd0b74Schristos INSNE(shru, s_xui_u5_ui, s, 1_or_2_src, 1cycle, C62X, 0, 256475fd0b74Schristos FIX1(FIX(op, 0x26)), 256575fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 256675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 256775fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 256875fd0b74Schristos INSNE(shru, s_ul_u5_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 256975fd0b74Schristos FIX2(FIX(op, 0x24), FIX(x, 0)), 257075fd0b74Schristos OP3(ORREGL1, OACST, OWREGL1), 257175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 257275fd0b74Schristos ENC(dst, reg, 2))) 257375fd0b74Schristos 257475fd0b74Schristos /* 16 bits insn */ 257575fd0b74Schristos INSN(shru, s, ssh5_sat_0, 1cycle, C64XP, 257675fd0b74Schristos TIC6X_FLAG_NO_CROSS, 257775fd0b74Schristos FIX1(FIX(op, 0x2)), 257875fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 257975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), 258075fd0b74Schristos ENC(cst, ucst, 1), ENC(srcdst, reg, 2))) 258175fd0b74Schristos INSN(shru, s, s2sh, 1cycle, C64XP, 0, 258275fd0b74Schristos FIX1(FIX(op, 0x2)), 258375fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 258475fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1), 258575fd0b74Schristos ENC(srcdst, reg, 2))) 258675fd0b74Schristos /**/ 258775fd0b74Schristos 258875fd0b74Schristos INSNE(shru2, s_xu2_ui_u2, s, ext_1_or_2_src, 1cycle, C64X, 0, 258975fd0b74Schristos FIX1(FIX(op, 0x8)), 259075fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 259175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 259275fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 259375fd0b74Schristos INSNE(shru2, s_xu2_u5_u2, s, 1_or_2_src, 1cycle, C64X, 0, 259475fd0b74Schristos FIX1(FIX(op, 0x19)), 259575fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 259675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 259775fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 259875fd0b74Schristos 259975fd0b74Schristos INSN(sl, d, 1_or_2_src, store, C64XP, 260075fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS, 260175fd0b74Schristos FIX3(FIX(s, 1), FIX(op, 0xd), FIX(src1, 0)), 260275fd0b74Schristos OP2(ORDREG1, OWMEMDW), 260375fd0b74Schristos ENC2(ENC(dst, reg, 0), ENC(src2, reg, 1))) 260475fd0b74Schristos 260575fd0b74Schristos INSN(smpy, m, mpy, 1616_m, C62X, 0, 260675fd0b74Schristos FIX1(FIX(op, 0x1a)), 260775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 260875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 260975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 261075fd0b74Schristos 261175fd0b74Schristos /* 16 bits insn */ 261275fd0b74Schristos INSN(smpy, m, m3_sat_1, 1616_m, C67X, 0, 261375fd0b74Schristos FIX1(FIX(op, 0x0)), 261475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 261575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 261675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 261775fd0b74Schristos /**/ 261875fd0b74Schristos 261975fd0b74Schristos INSN(smpyh, m, mpy, 1616_m, C62X, 0, 262075fd0b74Schristos FIX1(FIX(op, 0x02)), 262175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 262275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 262375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 262475fd0b74Schristos 262575fd0b74Schristos /* 16 bits insn */ 262675fd0b74Schristos INSN(smpyh, m, m3_sat_1, 1616_m, C67X, 0, 262775fd0b74Schristos FIX1(FIX(op, 0x1)), 262875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 262975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 263075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 263175fd0b74Schristos /**/ 263275fd0b74Schristos 263375fd0b74Schristos INSN(smpyhl, m, mpy, 1616_m, C62X, 0, 263475fd0b74Schristos FIX1(FIX(op, 0x0a)), 263575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 263675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 263775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 263875fd0b74Schristos 263975fd0b74Schristos /* 16 bits insn */ 264075fd0b74Schristos INSN(smpyhl, m, m3_sat_1, 1616_m, C67X, 0, 264175fd0b74Schristos FIX1(FIX(op, 0x3)), 264275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 264375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 264475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 264575fd0b74Schristos /**/ 264675fd0b74Schristos 264775fd0b74Schristos INSN(smpylh, m, mpy, 1616_m, C62X, 0, 264875fd0b74Schristos FIX1(FIX(op, 0x12)), 264975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 265075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 265175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 265275fd0b74Schristos 265375fd0b74Schristos /* 16 bits insn */ 265475fd0b74Schristos INSN(smpylh, m, m3_sat_1, 1616_m, C67X, 0, 265575fd0b74Schristos FIX1(FIX(op, 0x2)), 265675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG2), 265775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 265875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg_shift, 2))) 265975fd0b74Schristos /**/ 266075fd0b74Schristos 266175fd0b74Schristos INSN(smpy2, m, compound, 4cycle, C64X, 0, 266275fd0b74Schristos FIX1(FIX(op, 0x01)), 266375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGD4), 266475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 266575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 266675fd0b74Schristos 266775fd0b74Schristos /* Contrary to SPRUFE8, this is the correct operand order for this 266875fd0b74Schristos instruction. */ 266975fd0b74Schristos INSN(smpy32, m, 1_or_2_src, 4cycle, C64XP, 0, 267075fd0b74Schristos FIX1(FIX(op, 0x19)), 267175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 267275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 267375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 267475fd0b74Schristos 267575fd0b74Schristos INSN(spack2, s, ext_1_or_2_src, 1cycle, C64X, 0, 267675fd0b74Schristos FIX1(FIX(op, 0x2)), 267775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 267875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 267975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 268075fd0b74Schristos 268175fd0b74Schristos INSN(spacku4, s, ext_1_or_2_src, 1cycle, C64X, 0, 268275fd0b74Schristos FIX1(FIX(op, 0x4)), 268375fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 268475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 268575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 268675fd0b74Schristos 268775fd0b74Schristos INSN(spdp, s, 1_or_2_src, 2cycle_dp, C67X, 0, 268875fd0b74Schristos FIX2(FIX(op, 0x02), FIX(src1, 0)), 268975fd0b74Schristos OP2(ORXREG1, OWREGD12), 269075fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 269175fd0b74Schristos ENC(dst, reg, 1))) 269275fd0b74Schristos 269375fd0b74Schristos INSN(spint, l, 1_or_2_src, 4cycle, C67X, 0, 269475fd0b74Schristos FIX2(FIX(op, 0x0a), FIX(src1, 0)), 269575fd0b74Schristos OP2(ORXREG1, OWREG4), 269675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 269775fd0b74Schristos ENC(dst, reg, 1))) 269875fd0b74Schristos 269975fd0b74Schristos INSNE(spkernel, nfu_2, nfu, spkernel, 1cycle, C64XP, 270075fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL, 270175fd0b74Schristos FIX1(FIX(s, 0)), 270275fd0b74Schristos OP2(OACST, OACST), 270375fd0b74Schristos ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1))) 270475fd0b74Schristos INSNE(spkernel, nfu_0, nfu, spkernel, 1cycle, C64XP, 270575fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL|TIC6X_FLAG_MACRO, 270675fd0b74Schristos FIX2(FIX(s, 0), FIX(fstgfcyc, 0)), 270775fd0b74Schristos OP0(), 270875fd0b74Schristos ENC0()) 270975fd0b74Schristos 271075fd0b74Schristos /* 16 bits insn */ 271175fd0b74Schristos INSN(spkernel, nfu, uspk, 1cycle, C64XP, 271275fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL, 271375fd0b74Schristos FIX0(), 271475fd0b74Schristos OP2(OACST, OACST), 271575fd0b74Schristos ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1))) 271675fd0b74Schristos /**/ 271775fd0b74Schristos 271875fd0b74Schristos INSN(spkernelr, nfu, spkernelr, 1cycle, C64XP, 271975fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL, 272075fd0b74Schristos FIX1(FIX(s, 0)), 272175fd0b74Schristos OP0(), 272275fd0b74Schristos ENC0()) 272375fd0b74Schristos 272475fd0b74Schristos INSN(sploop, nfu, loop_buffer, 1cycle, C64XP, 272575fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, 272675fd0b74Schristos FIX4(FIX(s, 0), FIX(op, 0xc), FIX(csta, 0), RAN(cstb, 0, 13)), 272775fd0b74Schristos OP1(OACST), 272875fd0b74Schristos ENC1(ENC(cstb, ucst_minus_one, 0))) 272975fd0b74Schristos 273075fd0b74Schristos INSN(sploopd, nfu, loop_buffer, 1cycle, C64XP, 273175fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, 273275fd0b74Schristos FIX4(FIX(s, 0), FIX(op, 0xd), FIX(csta, 0), RAN(cstb, 0, 13)), 273375fd0b74Schristos OP1(OACST), 273475fd0b74Schristos ENC1(ENC(cstb, ucst_minus_one, 0))) 273575fd0b74Schristos 273675fd0b74Schristos INSN(sploopw, nfu, loop_buffer, 1cycle, C64XP, 273775fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, 273875fd0b74Schristos FIX4(FIX(s, 0), FIX(op, 0xf), FIX(csta, 0), RAN(cstb, 0, 13)), 273975fd0b74Schristos OP1(OACST), 274075fd0b74Schristos ENC1(ENC(cstb, ucst_minus_one, 0))) 274175fd0b74Schristos 274275fd0b74Schristos /* 16 bits insn */ 274375fd0b74Schristos INSN(sploop, nfu, uspl, 1cycle, C64XP, 274475fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, 274575fd0b74Schristos FIX1(FIX(op, 0)), 274675fd0b74Schristos OP1(OACST), 274775fd0b74Schristos ENC1(ENC(ii, ucst_minus_one, 0))) 274875fd0b74Schristos 274975fd0b74Schristos INSN(sploopd, nfu, uspl, 1cycle, C64XP, 275075fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP, 275175fd0b74Schristos FIX1(FIX(op, 1)), 275275fd0b74Schristos OP1(OACST), 275375fd0b74Schristos ENC1(ENC(ii, ucst_minus_one, 0))) 275475fd0b74Schristos 275575fd0b74Schristos INSN(sploopd, nfu, uspldr, 1cycle, C64XP, 275675fd0b74Schristos TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP|TIC6X_FLAG_INSN16_SPRED, 275775fd0b74Schristos FIX0(), 275875fd0b74Schristos OP1(OACST), 275975fd0b74Schristos ENC1(ENC(ii, ucst_minus_one, 0))) 276075fd0b74Schristos /**/ 276175fd0b74Schristos 276275fd0b74Schristos 276375fd0b74Schristos /* Contrary to SPRUFE8, this is the correct encoding for this 276475fd0b74Schristos instruction. */ 276575fd0b74Schristos INSN(spmask, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK, 276675fd0b74Schristos FIX2(FIX(s, 0), FIX(op, 0x8)), 276775fd0b74Schristos OP1(OFULIST), 276875fd0b74Schristos ENC1(ENC(mask, spmask, 0))) 276975fd0b74Schristos 277075fd0b74Schristos /* 16 bits insn */ 277175fd0b74Schristos INSN(spmask, nfu, uspma, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK, 277275fd0b74Schristos FIX0(), 277375fd0b74Schristos OP1(OFULIST), 277475fd0b74Schristos ENC1(ENC(mask, spmask, 0))) 277575fd0b74Schristos /**/ 277675fd0b74Schristos 277775fd0b74Schristos INSN(spmaskr, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK, 277875fd0b74Schristos FIX2(FIX(s, 0), FIX(op, 0x9)), 277975fd0b74Schristos OP1(OFULIST), 278075fd0b74Schristos ENC1(ENC(mask, spmask, 0))) 278175fd0b74Schristos 278275fd0b74Schristos /* 16 bits insn */ 278375fd0b74Schristos INSN(spmaskr, nfu, uspmb, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK, 278475fd0b74Schristos FIX0(), 278575fd0b74Schristos OP1(OFULIST), 278675fd0b74Schristos ENC1(ENC(mask, spmask, 0))) 278775fd0b74Schristos /**/ 278875fd0b74Schristos 278975fd0b74Schristos INSN(sptrunc, l, 1_or_2_src, 4cycle, C67X, 0, 279075fd0b74Schristos FIX2(FIX(op, 0x0b), FIX(src1, 0)), 279175fd0b74Schristos OP2(ORXREG1, OWREG4), 279275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 279375fd0b74Schristos ENC(dst, reg, 1))) 279475fd0b74Schristos 279575fd0b74Schristos INSNE(sshl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0, 279675fd0b74Schristos FIX1(FIX(op, 0x23)), 279775fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 279875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 279975fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 280075fd0b74Schristos INSNE(sshl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0, 280175fd0b74Schristos FIX1(FIX(op, 0x22)), 280275fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 280375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 280475fd0b74Schristos ENC(src1, ucst, 1), ENC(dst, reg, 2))) 280575fd0b74Schristos 280675fd0b74Schristos /* 16 bits insn */ 280775fd0b74Schristos INSN(sshl, s, ssh5_sat_1, 1cycle, C64XP, 280875fd0b74Schristos TIC6X_FLAG_NO_CROSS, 280975fd0b74Schristos FIX1(FIX(op, 0x2)), 281075fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 281175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), 281275fd0b74Schristos ENC(cst, ucst, 1), ENC(srcdst, reg, 2))) 281375fd0b74Schristos INSN(sshl, s, s2sh, 1cycle, C64XP, 0, 281475fd0b74Schristos FIX1(FIX(op, 0x3)), 281575fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 281675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1), 281775fd0b74Schristos ENC(srcdst, reg, 2))) 281875fd0b74Schristos /**/ 281975fd0b74Schristos 282075fd0b74Schristos INSN(sshvl, m, compound, 1616_m, C64X, 0, 282175fd0b74Schristos FIX1(FIX(op, 0x1c)), 282275fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG2), 282375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 282475fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 282575fd0b74Schristos 282675fd0b74Schristos /* Contrary to SPRUFE8, this is the correct encoding for this 282775fd0b74Schristos instruction. */ 282875fd0b74Schristos INSN(sshvr, m, compound, 1616_m, C64X, 0, 282975fd0b74Schristos FIX1(FIX(op, 0x1a)), 283075fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG2), 283175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 283275fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 283375fd0b74Schristos 283475fd0b74Schristos INSNE(ssub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 283575fd0b74Schristos FIX1(FIX(op, 0x0f)), 283675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 283775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 283875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 283975fd0b74Schristos INSNE(ssub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), 284075fd0b74Schristos FIX1(FIX(op, 0x1f)), 284175fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 284275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 284375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 284475fd0b74Schristos INSNE(ssub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, 284575fd0b74Schristos FIX1(FIX(op, 0x0e)), 284675fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 284775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 284875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 284975fd0b74Schristos INSNE(ssub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 285075fd0b74Schristos FIX1(FIX(op, 0x2c)), 285175fd0b74Schristos OP3(OACST, ORREGL1, OWREGL1), 285275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 285375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 285475fd0b74Schristos 285575fd0b74Schristos /* 16 bits insn */ 285675fd0b74Schristos INSN(ssub, l, l3_sat_1, 1cycle, C64XP, 0, 285775fd0b74Schristos FIX1(FIX(op, 1)), 285875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 285975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 286075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 286175fd0b74Schristos /**/ 286275fd0b74Schristos 286375fd0b74Schristos INSN(ssub2, l, 1_or_2_src, 1cycle, C64XP, 0, 286475fd0b74Schristos FIX1(FIX(op, 0x64)), 286575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 286675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 286775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 286875fd0b74Schristos 286975fd0b74Schristos INSN(stb, d, load_store, store, C62X, 287075fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 287175fd0b74Schristos FIX2(FIX(op, 3), FIX(r, 0)), 287275fd0b74Schristos OP2(ORDREG1, OWMEMSB), 287375fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), 287475fd0b74Schristos ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), 287575fd0b74Schristos ENC(srcdst, reg, 0))) 287675fd0b74Schristos INSN(stb, d, load_store_long, store, C62X, 287775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 287875fd0b74Schristos FIX1(FIX(op, 3)), 287975fd0b74Schristos OP2(ORDREG1, OWMEMLB), 288075fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_byte, 1), 288175fd0b74Schristos ENC(dst, reg, 0))) 288275fd0b74Schristos 288375fd0b74Schristos /* 16 bits insn */ 288475fd0b74Schristos INSN(stb, d, doff4_dsz_000, store, C64XP, 288575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 288675fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 288775fd0b74Schristos OP2(ORTREG1, OWMEMSB), 288875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 288975fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1))) 289075fd0b74Schristos INSN(stb, d, doff4_dsz_x01, store, C64XP, 289175fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 289275fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 289375fd0b74Schristos OP2(ORTREG1, OWMEMSB), 289475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 289575fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1))) 289675fd0b74Schristos INSN(stb, d, dind_dsz_000, store, C64XP, 289775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 289875fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 289975fd0b74Schristos OP2(ORTREG1, OWMEMSB), 290075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1), 290175fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(srcdst, reg, 0))) 290275fd0b74Schristos INSN(stb, d, dind_dsz_x01, store, C64XP, 290375fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 290475fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 290575fd0b74Schristos OP2(ORTREG1, OWMEMSB), 290675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1), 290775fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(srcdst, reg, 0))) 290875fd0b74Schristos INSN(stb, d, dinc_dsz_000, store, C64XP, 290975fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 291075fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 291175fd0b74Schristos OP2(ORTREG1, OWMEMSB), 291275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 291375fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 291475fd0b74Schristos INSN(stb, d, dinc_dsz_x01, store, C64XP, 291575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 291675fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 291775fd0b74Schristos OP2(ORTREG1, OWMEMSB), 291875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 291975fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 292075fd0b74Schristos INSN(stb, d, ddec_dsz_000, store, C64XP, 292175fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 292275fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 292375fd0b74Schristos OP2(ORTREG1, OWMEMSB), 292475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 292575fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 292675fd0b74Schristos INSN(stb, d, ddec_dsz_x01, store, C64XP, 292775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 292875fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 292975fd0b74Schristos OP2(ORTREG1, OWMEMSB), 293075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 293175fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 293275fd0b74Schristos /**/ 293375fd0b74Schristos 293475fd0b74Schristos INSN(stdw, d, load_store, store, C64X, TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS, 293575fd0b74Schristos FIX2(FIX(op, 4), FIX(r, 1)), 293675fd0b74Schristos OP2(ORDREGD1, OWMEMSD), 293775fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), 293875fd0b74Schristos ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), 293975fd0b74Schristos ENC(srcdst, reg, 0))) 294075fd0b74Schristos 294175fd0b74Schristos /* 16 bits insn */ 294275fd0b74Schristos INSN(stdw, d, dpp, store, C64XP, 294375fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTDECR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS, 294475fd0b74Schristos FIX3(FIX(op, 0), FIX(dw, 1), FIX(s, 1)), 294575fd0b74Schristos OP2(ORTREGD1, OWMEMSD), 294675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 294775fd0b74Schristos ENC(cst, mem_offset_minus_one, 1))) 294875fd0b74Schristos INSN(stdw, d, ddecdw, store, C64XP, 294975fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 295075fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)), 295175fd0b74Schristos OP2(ORTREGD1, OWMEMSD), 295275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0), 295375fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 295475fd0b74Schristos INSN(stdw, d, dincdw, store, C64XP, 295575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 295675fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)), 295775fd0b74Schristos OP2(ORTREGD1, OWMEMSD), 295875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0), 295975fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 296075fd0b74Schristos INSN(stdw, d, dinddw, store, C64XP, 296175fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 296275fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)), 296375fd0b74Schristos OP2(ORTREGD1, OWMEMSD), 296475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1), 296575fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0))) 296675fd0b74Schristos INSN(stdw, d, doff4dw, store, C64XP, 296775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 296875fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)), 296975fd0b74Schristos OP2(ORTREGD1, OWMEMSD), 297075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 1), 297175fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0))) 297275fd0b74Schristos /**/ 297375fd0b74Schristos 297475fd0b74Schristos INSN(sth, d, load_store, store, C62X, 297575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 297675fd0b74Schristos FIX2(FIX(op, 5), FIX(r, 0)), 297775fd0b74Schristos OP2(ORDREG1, OWMEMSH), 297875fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), 297975fd0b74Schristos ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), 298075fd0b74Schristos ENC(srcdst, reg, 0))) 298175fd0b74Schristos INSN(sth, d, load_store_long, store, C62X, 298275fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 298375fd0b74Schristos FIX1(FIX(op, 5)), 298475fd0b74Schristos OP2(ORDREG1, OWMEMLH), 298575fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_half, 1), 298675fd0b74Schristos ENC(dst, reg, 0))) 298775fd0b74Schristos 298875fd0b74Schristos /* 16 bits insn */ 298975fd0b74Schristos INSN(sth, d, doff4_dsz_01x, store, C64XP, 299075fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 299175fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 299275fd0b74Schristos OP2(ORTREG1, OWMEMSH), 299375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 299475fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1))) 299575fd0b74Schristos INSN(sth, d, doff4_dsz_111, store, C64XP, 299675fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 299775fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 299875fd0b74Schristos OP2(ORTREG1, OWMEMSH), 299975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 300075fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1))) 300175fd0b74Schristos INSN(sth, d, dind_dsz_01x, store, C64XP, 300275fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 300375fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 300475fd0b74Schristos OP2(ORTREG1, OWMEMSH), 300575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 300675fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1))) 300775fd0b74Schristos INSN(sth, d, dind_dsz_111, store, C64XP, 300875fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 300975fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 301075fd0b74Schristos OP2(ORTREG1, OWMEMSH), 301175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 301275fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1))) 301375fd0b74Schristos INSN(sth, d, dinc_dsz_01x, store, C64XP, 301475fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 301575fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 301675fd0b74Schristos OP2(ORTREG1, OWMEMSH), 301775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 301875fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 301975fd0b74Schristos INSN(sth, d, dinc_dsz_111, store, C64XP, 302075fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 302175fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 302275fd0b74Schristos OP2(ORTREG1, OWMEMSH), 302375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 302475fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 302575fd0b74Schristos INSN(sth, d, ddec_dsz_01x, store, C64XP, 302675fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 302775fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 302875fd0b74Schristos OP2(ORTREG1, OWMEMSH), 302975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 303075fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 303175fd0b74Schristos INSN(sth, d, ddec_dsz_111, store, C64XP, 303275fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 303375fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 303475fd0b74Schristos OP2(ORTREG1, OWMEMSH), 303575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 303675fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 303775fd0b74Schristos /**/ 303875fd0b74Schristos 303975fd0b74Schristos INSN(stndw, d, store_nonaligned, store, C64X, 304075fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, 304175fd0b74Schristos FIX0(), 304275fd0b74Schristos OP2(ORDREGD1, OWMEMND), 304375fd0b74Schristos ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), 304475fd0b74Schristos ENC(offsetR, mem_offset_noscale, 1), ENC(baseR, reg, 1), 304575fd0b74Schristos ENC(sc, scaled, 1), ENC(src, reg_shift, 0))) 304675fd0b74Schristos 304775fd0b74Schristos /* 16 bits insn */ 304875fd0b74Schristos INSN(stndw, d, ddecdw, store, C64XP, 304975fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 305075fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)), 305175fd0b74Schristos OP2(ORTREGD1, OWMEMND), 305275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0), 305375fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one_noscale, 1))) 305475fd0b74Schristos INSN(stndw, d, dincdw, store, C64XP, 305575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 305675fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)), 305775fd0b74Schristos OP2(ORTREGD1, OWMEMND), 305875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0), 305975fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one_noscale, 1))) 306075fd0b74Schristos INSN(stndw, d, dinddw, store, C64XP, 306175fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 306275fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)), 306375fd0b74Schristos OP2(ORTREGD1, OWMEMND), 306475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset_noscale, 1), 306575fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0))) 306675fd0b74Schristos INSN(stndw, d, doff4dw, store, C64XP, 306775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 306875fd0b74Schristos FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)), 306975fd0b74Schristos OP2(ORTREGD1, OWMEMND), 307075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_noscale, 1), 307175fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0))) 307275fd0b74Schristos /**/ 307375fd0b74Schristos 307475fd0b74Schristos INSN(stnw, d, load_store, store, C64X, 307575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED, 307675fd0b74Schristos FIX2(FIX(op, 5), FIX(r, 1)), 307775fd0b74Schristos OP2(ORDREG1, OWMEMSW), 307875fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), 307975fd0b74Schristos ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), 308075fd0b74Schristos ENC(srcdst, reg, 0))) 308175fd0b74Schristos 308275fd0b74Schristos /* 16 bits insn */ 308375fd0b74Schristos INSN(stnw, d, doff4_dsz_110, store, C64XP, 308475fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 308575fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 308675fd0b74Schristos OP2(ORTREG1, OWMEMSW), 308775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 308875fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1))) 308975fd0b74Schristos INSN(stnw, d, dind_dsz_110, store, C64XP, 309075fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 309175fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 309275fd0b74Schristos OP2(ORTREG1, OWMEMSW), 309375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 309475fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1))) 309575fd0b74Schristos INSN(stnw, d, dinc_dsz_110, store, C64XP, 309675fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 309775fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 309875fd0b74Schristos OP2(ORTREG1, OWMEMSW), 309975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 310075fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 310175fd0b74Schristos INSN(stnw, d, ddec_dsz_110, store, C64XP, 310275fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 310375fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 310475fd0b74Schristos OP2(ORTREG1, OWMEMSW), 310575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 310675fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 310775fd0b74Schristos /**/ 310875fd0b74Schristos 310975fd0b74Schristos INSN(stw, d, load_store, store, C62X, 311075fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 311175fd0b74Schristos FIX2(FIX(op, 7), FIX(r, 0)), 311275fd0b74Schristos OP2(ORDREG1, OWMEMSW), 311375fd0b74Schristos ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1), 311475fd0b74Schristos ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1), 311575fd0b74Schristos ENC(srcdst, reg, 0))) 311675fd0b74Schristos INSN(stw, d, load_store_long, store, C62X, 311775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0), 311875fd0b74Schristos FIX1(FIX(op, 7)), 311975fd0b74Schristos OP2(ORDREG1, OWMEMLW), 312075fd0b74Schristos ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_word, 1), 312175fd0b74Schristos ENC(dst, reg, 0))) 312275fd0b74Schristos 312375fd0b74Schristos /* 16 bits insn */ 312475fd0b74Schristos INSN(stw, d, doff4_dsz_0xx, store, C64XP, 312575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 312675fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 0)), 312775fd0b74Schristos OP2(ORTREG1, OWMEMSW), 312875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 312975fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1))) 313075fd0b74Schristos INSN(stw, d, doff4_dsz_100, store, C64XP, 313175fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE), 313275fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 313375fd0b74Schristos OP2(ORTREG1, OWMEMSW), 313475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 313575fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1))) 313675fd0b74Schristos INSN(stw, d, dind_dsz_0xx, store, C64XP, 313775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 313875fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 0)), 313975fd0b74Schristos OP2(ORTREG1, OWMEMSW), 314075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 314175fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1))) 314275fd0b74Schristos INSN(stw, d, dind_dsz_100, store, C64XP, 314375fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE), 314475fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 314575fd0b74Schristos OP2(ORTREG1, OWMEMSW), 314675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 314775fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1))) 314875fd0b74Schristos INSN(stw, d, dinc_dsz_0xx, store, C64XP, 314975fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 315075fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 0)), 315175fd0b74Schristos OP2(ORTREG1, OWMEMSW), 315275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 315375fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 315475fd0b74Schristos INSN(stw, d, dinc_dsz_100, store, C64XP, 315575fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR), 315675fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 315775fd0b74Schristos OP2(ORTREG1, OWMEMSW), 315875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 315975fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 316075fd0b74Schristos INSN(stw, d, ddec_dsz_0xx, store, C64XP, 316175fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 316275fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 0)), 316375fd0b74Schristos OP2(ORTREG1, OWMEMSW), 316475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 316575fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 316675fd0b74Schristos INSN(stw, d, ddec_dsz_100, store, C64XP, 316775fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR), 316875fd0b74Schristos FIX2(FIX(op, 0), FIX(sz, 1)), 316975fd0b74Schristos OP2(ORTREG1, OWMEMSW), 317075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 317175fd0b74Schristos ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1))) 317275fd0b74Schristos INSN(stw, d, dpp, store, C64XP, 317375fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTDECR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS, 317475fd0b74Schristos FIX2(FIX(op, 0), FIX(dw, 0)), 317575fd0b74Schristos OP2(ORTREG1, OWMEMSW), 317675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 317775fd0b74Schristos ENC(cst, mem_offset_minus_one, 1))) 317875fd0b74Schristos INSN(stw, d, dstk, store, C64XP, 317975fd0b74Schristos TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE)|TIC6X_FLAG_INSN16_B15PTR, 318075fd0b74Schristos FIX2(FIX(op, 0x0), FIX(s, 1)), 318175fd0b74Schristos OP2(ORTREG1, OWMEMSW), 318275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0), 318375fd0b74Schristos ENC(cst, mem_offset, 1))) 318475fd0b74Schristos /**/ 318575fd0b74Schristos 318675fd0b74Schristos INSNE(sub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 318775fd0b74Schristos FIX1(FIX(op, 0x07)), 318875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 318975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 319075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 319175fd0b74Schristos INSNE(sub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), 319275fd0b74Schristos FIX1(FIX(op, 0x17)), 319375fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 319475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 319575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 319675fd0b74Schristos INSNE(sub, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 319775fd0b74Schristos FIX1(FIX(op, 0x27)), 319875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGL1), 319975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 320075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 320175fd0b74Schristos INSNE(sub, l_xsi_si_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), 320275fd0b74Schristos FIX1(FIX(op, 0x37)), 320375fd0b74Schristos OP3(ORXREG1, ORREG1, OWREGL1), 320475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 320575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 320675fd0b74Schristos INSNE(sub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0, 320775fd0b74Schristos FIX1(FIX(op, 0x06)), 320875fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 320975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 321075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 321175fd0b74Schristos INSNE(sub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 321275fd0b74Schristos FIX1(FIX(op, 0x24)), 321375fd0b74Schristos OP3(OACST, ORREGL1, OWREGL1), 321475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 321575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 321675fd0b74Schristos INSNE(sub, l_xsi_s5_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 321775fd0b74Schristos FIX1(FIX(op, 0x2)), 321875fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 321975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1), 322075fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 322175fd0b74Schristos INSNE(sub, l_sl_s5_sl, l, 1_or_2_src, 1cycle, C62X, 322275fd0b74Schristos TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, 322375fd0b74Schristos FIX2(FIX(op, 0x20), FIX(x, 0)), 322475fd0b74Schristos OP3(ORREGL1, OACST, OWREGL1), 322575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, scst_negate, 1), ENC(src2, reg, 0), 322675fd0b74Schristos ENC(dst, reg, 2))) 322775fd0b74Schristos INSNE(sub, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 322875fd0b74Schristos FIX1(FIX(op, 0x17)), 322975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 323075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 323175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 323275fd0b74Schristos INSNE(sub, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0, 323375fd0b74Schristos FIX1(FIX(op, 0x16)), 323475fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 323575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 323675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 323775fd0b74Schristos /* Contrary to SPRUFE8, this is the correct encoding for this 323875fd0b74Schristos instruction; this instruction can be predicated. */ 323975fd0b74Schristos INSNE(sub, s_xsi_si_si, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0), 324075fd0b74Schristos FIX1(FIX(op, 0x5)), 324175fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG1), 324275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 324375fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 324475fd0b74Schristos INSNE(sub, s_xsi_s5_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO, 324575fd0b74Schristos FIX1(FIX(op, 0x6)), 324675fd0b74Schristos OP3(ORXREG1, OACST, OWREG1), 324775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1), 324875fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 2))) 324975fd0b74Schristos INSNE(sub, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, 325075fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1), 325175fd0b74Schristos FIX1(FIX(op, 0x11)), 325275fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 325375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 325475fd0b74Schristos ENC(dst, reg, 2))) 325575fd0b74Schristos INSNE(sub, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 325675fd0b74Schristos FIX1(FIX(op, 0x13)), 325775fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 325875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 325975fd0b74Schristos ENC(dst, reg, 2))) 326075fd0b74Schristos INSNE(sub, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0), 326175fd0b74Schristos FIX1(FIX(op, 0xc)), 326275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 326375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 326475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 326575fd0b74Schristos 326675fd0b74Schristos /* 16 bits insn */ 326775fd0b74Schristos INSN(sub, l, l3_sat_0, 1cycle, C64XP, 0, 326875fd0b74Schristos FIX1(FIX(op, 0x1)), 326975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 327075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 327175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 327275fd0b74Schristos INSN(sub, l, lx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 327375fd0b74Schristos FIX1(FIX(op, 0x2)), 327475fd0b74Schristos OP3(OHWCST0, ORREG1, OWREG1), 327575fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2))) 327675fd0b74Schristos INSN(sub, s, sx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 327775fd0b74Schristos FIX1(FIX(op, 0x2)), 327875fd0b74Schristos OP3(OHWCST0, ORREG1, OWREG1), 327975fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2))) 328075fd0b74Schristos INSN(sub, s, sx2op, 1cycle, C64XP, 0, 328175fd0b74Schristos FIX1(FIX(op, 0x1)), 328275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 328375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2), 328475fd0b74Schristos ENC(src2, reg, 1), ENC(x, xpath, 1))) 328575fd0b74Schristos INSN(sub, s, s3_sat_x, 1cycle, C64XP, 0, 328675fd0b74Schristos FIX1(FIX(op, 0x1)), 328775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 328875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 328975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 329075fd0b74Schristos INSN(sub, d, dx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 329175fd0b74Schristos FIX1(FIX(op, 0x3)), 329275fd0b74Schristos OP3(ORREG1, OHWCST1, OWREG1), 329375fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2))) 329475fd0b74Schristos INSN(sub, d, dx2op, 1cycle, C64XP, 0, 329575fd0b74Schristos FIX1(FIX(op, 0x1)), 329675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 329775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(srcdst, reg, 0), 329875fd0b74Schristos ENC(src2, reg, 1), ENC(srcdst, reg, 2))) 329975fd0b74Schristos /**/ 330075fd0b74Schristos 330175fd0b74Schristos INSNE(subab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 330275fd0b74Schristos FIX1(FIX(op, 0x31)), 330375fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 330475fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 330575fd0b74Schristos ENC(dst, reg, 2))) 330675fd0b74Schristos INSNE(subab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 330775fd0b74Schristos FIX1(FIX(op, 0x33)), 330875fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 330975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 331075fd0b74Schristos ENC(dst, reg, 2))) 331175fd0b74Schristos 331275fd0b74Schristos INSN(subabs4, l, 1_or_2_src, 1cycle, C64X, 0, 331375fd0b74Schristos FIX1(FIX(op, 0x5a)), 331475fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 331575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 331675fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 331775fd0b74Schristos 331875fd0b74Schristos INSNE(subah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 331975fd0b74Schristos FIX1(FIX(op, 0x35)), 332075fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 332175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 332275fd0b74Schristos ENC(dst, reg, 2))) 332375fd0b74Schristos INSNE(subah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 332475fd0b74Schristos FIX1(FIX(op, 0x37)), 332575fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 332675fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 332775fd0b74Schristos ENC(dst, reg, 2))) 332875fd0b74Schristos 332975fd0b74Schristos INSNE(subaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 333075fd0b74Schristos FIX1(FIX(op, 0x39)), 333175fd0b74Schristos OP3(ORREG1, ORREG1, OWREG1), 333275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1), 333375fd0b74Schristos ENC(dst, reg, 2))) 333475fd0b74Schristos INSNE(subaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS, 333575fd0b74Schristos FIX1(FIX(op, 0x3b)), 333675fd0b74Schristos OP3(ORREG1, OACST, OWREG1), 333775fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1), 333875fd0b74Schristos ENC(dst, reg, 2))) 333975fd0b74Schristos 334075fd0b74Schristos /* 16 bits insn */ 334175fd0b74Schristos INSN(subaw, d, dx5p, 1cycle, C64XP, 0, 334275fd0b74Schristos FIX1(FIX(op, 1)), 334375fd0b74Schristos OP3(ORB15REG1, OACST, OWB15REG1), 334475fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(cst, ucst, 1))) 334575fd0b74Schristos /**/ 334675fd0b74Schristos 334775fd0b74Schristos INSN(subc, l, 1_or_2_src, 1cycle, C62X, 0, 334875fd0b74Schristos FIX1(FIX(op, 0x4b)), 334975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 335075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 335175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 335275fd0b74Schristos 335375fd0b74Schristos INSNE(subdp, l_dp_xdp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(1), 335475fd0b74Schristos FIX1(FIX(op, 0x19)), 335575fd0b74Schristos OP3(ORREGD12, ORXREGD12, OWREGD67), 335675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 335775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 335875fd0b74Schristos INSNE(subdp, l_xdp_dp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(0), 335975fd0b74Schristos FIX1(FIX(op, 0x1d)), 336075fd0b74Schristos OP3(ORXREGD12, ORREGD12, OWREGD67), 336175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 336275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 336375fd0b74Schristos INSNE(subdp, s_dp_xdp_dp, s, l_1_or_2_src, addsubdp, C67XP, 336475fd0b74Schristos TIC6X_FLAG_PREFER(1), 336575fd0b74Schristos FIX1(FIX(op, 0x73)), 336675fd0b74Schristos OP3(ORREGD12, ORXREGD12, OWREGD67), 336775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 336875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 336975fd0b74Schristos INSNE(subdp, s_xdp_dp_dp, s, l_1_or_2_src, addsubdp, C67XP, 337075fd0b74Schristos TIC6X_FLAG_PREFER(0), 337175fd0b74Schristos FIX1(FIX(op, 0x77)), 337275fd0b74Schristos OP3(ORXREGD12, ORREGD12, OWREGD67), 337375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 337475fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 337575fd0b74Schristos 337675fd0b74Schristos INSNE(subsp, l_sp_xsp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(1), 337775fd0b74Schristos FIX1(FIX(op, 0x11)), 337875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 337975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 338075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 338175fd0b74Schristos INSNE(subsp, l_xsp_sp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(0), 338275fd0b74Schristos FIX1(FIX(op, 0x15)), 338375fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG4), 338475fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 338575fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 338675fd0b74Schristos INSNE(subsp, s_sp_xsp_sp, s, l_1_or_2_src, 4cycle, C67XP, 338775fd0b74Schristos TIC6X_FLAG_PREFER(1), 338875fd0b74Schristos FIX1(FIX(op, 0x71)), 338975fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 339075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 339175fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 339275fd0b74Schristos INSNE(subsp, s_xsp_sp_sp, s, l_1_or_2_src, 4cycle, C67XP, 339375fd0b74Schristos TIC6X_FLAG_PREFER(0), 339475fd0b74Schristos FIX1(FIX(op, 0x75)), 339575fd0b74Schristos OP3(ORXREG1, ORREG1, OWREG4), 339675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 339775fd0b74Schristos ENC(src1, reg, 1), ENC(dst, reg, 2))) 339875fd0b74Schristos 339975fd0b74Schristos INSNE(subu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1), 340075fd0b74Schristos FIX1(FIX(op, 0x2f)), 340175fd0b74Schristos OP3(ORREG1, ORXREG1, OWREGL1), 340275fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 340375fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 340475fd0b74Schristos INSNE(subu, l_xui_ui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0), 340575fd0b74Schristos FIX1(FIX(op, 0x3f)), 340675fd0b74Schristos OP3(ORXREG1, ORREG1, OWREGL1), 340775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 340875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 340975fd0b74Schristos 341075fd0b74Schristos INSN(sub2, l, 1_or_2_src, 1cycle, C64X, 0, 341175fd0b74Schristos FIX1(FIX(op, 0x04)), 341275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 341375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 341475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 341575fd0b74Schristos INSN(sub2, s, 1_or_2_src, 1cycle, C62X, 0, 341675fd0b74Schristos FIX1(FIX(op, 0x11)), 341775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 341875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 341975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 342075fd0b74Schristos INSN(sub2, d, ext_1_or_2_src, 1cycle, C64X, 0, 342175fd0b74Schristos FIX1(FIX(op, 0x5)), 342275fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 342375fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 342475fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 342575fd0b74Schristos 342675fd0b74Schristos INSN(sub4, l, 1_or_2_src, 1cycle, C64X, 0, 342775fd0b74Schristos FIX1(FIX(op, 0x66)), 342875fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 342975fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 343075fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 343175fd0b74Schristos 343275fd0b74Schristos INSN(swap2, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, 343375fd0b74Schristos FIX2(FIX(op, 0x1b), FIX(x, 0)), 343475fd0b74Schristos OP2(ORREG1, OWREG1), 343575fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 343675fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 1))) 343775fd0b74Schristos INSN(swap2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS, 343875fd0b74Schristos FIX2(FIX(op, 0x10), FIX(x, 0)), 343975fd0b74Schristos OP2(ORREG1, OWREG1), 344075fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 344175fd0b74Schristos ENC(src2, reg, 0), ENC(dst, reg, 1))) 344275fd0b74Schristos 344375fd0b74Schristos /* Contrary to SPRUFE8, this is the correct encoding for this 344475fd0b74Schristos instruction. */ 344575fd0b74Schristos INSN(swap4, l, unary, 1cycle, C64X, 0, 344675fd0b74Schristos FIX1(FIX(op, 0x1)), 344775fd0b74Schristos OP2(ORXREG1, OWREG1), 344875fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 344975fd0b74Schristos ENC(dst, reg, 1))) 345075fd0b74Schristos 345175fd0b74Schristos INSN(swe, nfu, swe, 1cycle, C64XP, 0, 345275fd0b74Schristos FIX1(FIX(s, 0)), 345375fd0b74Schristos OP0(), 345475fd0b74Schristos ENC0()) 345575fd0b74Schristos 345675fd0b74Schristos INSN(swenr, nfu, swenr, 1cycle, C64XP, 0, 345775fd0b74Schristos FIX1(FIX(s, 0)), 345875fd0b74Schristos OP0(), 345975fd0b74Schristos ENC0()) 346075fd0b74Schristos 346175fd0b74Schristos INSN(unpkhu4, l, unary, 1cycle, C64X, 0, 346275fd0b74Schristos FIX1(FIX(op, 0x03)), 346375fd0b74Schristos OP2(ORXREG1, OWREG1), 346475fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 346575fd0b74Schristos ENC(dst, reg, 1))) 346675fd0b74Schristos INSN(unpkhu4, s, unary, 1cycle, C64X, 0, 346775fd0b74Schristos FIX1(FIX(op, 0x03)), 346875fd0b74Schristos OP2(ORXREG1, OWREG1), 346975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 347075fd0b74Schristos ENC(dst, reg, 1))) 347175fd0b74Schristos 347275fd0b74Schristos INSN(unpklu4, l, unary, 1cycle, C64X, 0, 347375fd0b74Schristos FIX1(FIX(op, 0x02)), 347475fd0b74Schristos OP2(ORXREG1, OWREG1), 347575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 347675fd0b74Schristos ENC(dst, reg, 1))) 347775fd0b74Schristos INSN(unpklu4, s, unary, 1cycle, C64X, 0, 347875fd0b74Schristos FIX1(FIX(op, 0x02)), 347975fd0b74Schristos OP2(ORXREG1, OWREG1), 348075fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 348175fd0b74Schristos ENC(dst, reg, 1))) 348275fd0b74Schristos 348375fd0b74Schristos INSNE(xor, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 348475fd0b74Schristos FIX1(FIX(op, 0x6f)), 348575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 348675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 348775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 348875fd0b74Schristos INSNE(xor, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0, 348975fd0b74Schristos FIX1(FIX(op, 0x6e)), 349075fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 349175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 349275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 349375fd0b74Schristos INSNE(xor, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, 349475fd0b74Schristos FIX1(FIX(op, 0x0b)), 349575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 349675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 349775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 349875fd0b74Schristos INSNE(xor, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0, 349975fd0b74Schristos FIX1(FIX(op, 0x0a)), 350075fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 350175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 350275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 350375fd0b74Schristos INSNE(xor, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, 350475fd0b74Schristos FIX1(FIX(op, 0xe)), 350575fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1), 350675fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 350775fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 350875fd0b74Schristos INSNE(xor, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0, 350975fd0b74Schristos FIX1(FIX(op, 0xf)), 351075fd0b74Schristos OP3(OACST, ORXREG1, OWREG1), 351175fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0), 351275fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 351375fd0b74Schristos 351475fd0b74Schristos /* 16 bits insn */ 351575fd0b74Schristos INSN(xor, l, l2c, 1cycle, C64XP, 0, 351675fd0b74Schristos FIX1(FIX(op, 0x2)), 351775fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG1NORS), 351875fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 351975fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 352075fd0b74Schristos INSNU(xor, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 352175fd0b74Schristos FIX2(FIX(op, 0x7), FIX(unit, 0x0)), 352275fd0b74Schristos OP3(ORREG1, OHWCST1, OWREG1), 352375fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2))) 352475fd0b74Schristos INSNU(xor, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 352575fd0b74Schristos FIX2(FIX(op, 0x7), FIX(unit, 0x1)), 352675fd0b74Schristos OP3(ORREG1, OHWCST1, OWREG1), 352775fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2))) 352875fd0b74Schristos INSNU(xor, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS, 352975fd0b74Schristos FIX2(FIX(op, 0x7), FIX(unit, 0x2)), 353075fd0b74Schristos OP3(ORREG1, OHWCST1, OWREG1), 353175fd0b74Schristos ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2))) 353275fd0b74Schristos /**/ 353375fd0b74Schristos 353475fd0b74Schristos INSN(xormpy, m, 1_or_2_src, 4cycle, C64XP, 0, 353575fd0b74Schristos FIX1(FIX(op, 0x1b)), 353675fd0b74Schristos OP3(ORREG1, ORXREG1, OWREG4), 353775fd0b74Schristos ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0), 353875fd0b74Schristos ENC(src2, reg, 1), ENC(dst, reg, 2))) 353975fd0b74Schristos 354075fd0b74Schristos INSN(xpnd2, m, unary, 1616_m, C64X, 0, 354175fd0b74Schristos FIX1(FIX(op, 0x19)), 354275fd0b74Schristos OP2(ORXREG1, OWREG2), 354375fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 354475fd0b74Schristos ENC(dst, reg, 1))) 354575fd0b74Schristos 354675fd0b74Schristos INSN(xpnd4, m, unary, 1616_m, C64X, 0, 354775fd0b74Schristos FIX1(FIX(op, 0x18)), 354875fd0b74Schristos OP2(ORXREG1, OWREG2), 354975fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0), 355075fd0b74Schristos ENC(dst, reg, 1))) 355175fd0b74Schristos 355275fd0b74Schristos INSN(zero, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, 355375fd0b74Schristos FIX2(FIX(h, 0), FIX(cst, 0)), 355475fd0b74Schristos OP1(OWREG1), 355575fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(dst, reg, 0))) 355675fd0b74Schristos INSN(zero, l, unary, 1cycle, C64X, 355775fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1), 355875fd0b74Schristos FIX3(FIX(x, 0), FIX(op, 0x05), FIX(src2, 0)), 355975fd0b74Schristos OP1(OWREG1), 356075fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(dst, reg, 0))) 356175fd0b74Schristos INSNE(zero, l_sub, l, 1_or_2_src, 1cycle, C62X, 356275fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0), 356375fd0b74Schristos FIX2(FIX(op, 0x07), FIX(x, 0)), 356475fd0b74Schristos OP1(OWREG1), 356575fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0), 356675fd0b74Schristos ENC(dst, reg, 0))) 356775fd0b74Schristos INSNE(zero, l_sub_sl, l, 1_or_2_src, 1cycle, C62X, 356875fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO, 356975fd0b74Schristos FIX2(FIX(op, 0x27), FIX(x, 0)), 357075fd0b74Schristos OP1(OWREGL1), 357175fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0), 357275fd0b74Schristos ENC(dst, reg, 0))) 357375fd0b74Schristos INSNE(zero, d_mvk, d, 1_or_2_src, 1cycle, C64X, 357475fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1), 357575fd0b74Schristos FIX3(FIX(op, 0x00), FIX(src1, 0), FIX(src2, 0)), 357675fd0b74Schristos OP1(OWREG1), 357775fd0b74Schristos ENC2(ENC(s, fu, 0), ENC(dst, reg, 0))) 357875fd0b74Schristos INSNE(zero, d_sub, d, 1_or_2_src, 1cycle, C62X, 357975fd0b74Schristos TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0), 358075fd0b74Schristos FIX1(FIX(op, 0x11)), 358175fd0b74Schristos OP1(OWREG1), 358275fd0b74Schristos ENC4(ENC(s, fu, 0), ENC(src2, reg_unused, 0), ENC(src1, reg_unused, 0), 358375fd0b74Schristos ENC(dst, reg, 0))) 358475fd0b74Schristos 358575fd0b74Schristos #undef TIC6X_INSN_C64X_AND_C67X 358675fd0b74Schristos #undef tic6x_insn_format_nfu_s_branch_nop_cst 358775fd0b74Schristos #undef tic6x_insn_format_s_l_1_or_2_src 358875fd0b74Schristos #undef RAN 358975fd0b74Schristos #undef FIX 359075fd0b74Schristos #undef FIX0 359175fd0b74Schristos #undef FIX1 359275fd0b74Schristos #undef FIX2 359375fd0b74Schristos #undef FIX3 359475fd0b74Schristos #undef FIX4 359575fd0b74Schristos #undef OP0 359675fd0b74Schristos #undef OP1 359775fd0b74Schristos #undef OP2 359875fd0b74Schristos #undef OP3 359975fd0b74Schristos #undef OP4 360075fd0b74Schristos #undef OACST 360175fd0b74Schristos #undef OLCST 360275fd0b74Schristos #undef OHWCSTM1 360375fd0b74Schristos #undef OHWCST0 360475fd0b74Schristos #undef OHWCST1 360575fd0b74Schristos #undef OHWCST5 360675fd0b74Schristos #undef OHWCST16 360775fd0b74Schristos #undef OHWCST24 360875fd0b74Schristos #undef OHWCST31 360975fd0b74Schristos #undef OFULIST 361075fd0b74Schristos #undef ORIRP1 361175fd0b74Schristos #undef ORNRP1 361275fd0b74Schristos #undef OWREG1 361375fd0b74Schristos #undef OWRETREG1 361475fd0b74Schristos #undef ORREG1 361575fd0b74Schristos #undef ORDREG1 361675fd0b74Schristos #undef ORWREG1 361775fd0b74Schristos #undef ORAREG1 361875fd0b74Schristos #undef ORXREG1 361975fd0b74Schristos #undef ORREG12 362075fd0b74Schristos #undef ORREG14 362175fd0b74Schristos #undef ORXREG14 362275fd0b74Schristos #undef OWREG2 362375fd0b74Schristos #undef OWREG4 362475fd0b74Schristos #undef OWREG9 362575fd0b74Schristos #undef OWDREG5 362675fd0b74Schristos #undef OWREGL1 362775fd0b74Schristos #undef ORREGL1 362875fd0b74Schristos #undef OWREGD1 362975fd0b74Schristos #undef ORTREG1 363075fd0b74Schristos #undef ORTREGD1 363175fd0b74Schristos #undef OWTREG5 363275fd0b74Schristos #undef OWTREGD5 363375fd0b74Schristos #undef OWREGD12 363475fd0b74Schristos #undef OWREGD4 363575fd0b74Schristos #undef ORREGD1 363675fd0b74Schristos #undef OWREGD45 363775fd0b74Schristos #undef OWREGD67 363875fd0b74Schristos #undef ORDREGD1 363975fd0b74Schristos #undef OWDREGD5 364075fd0b74Schristos #undef ORREGD12 364175fd0b74Schristos #undef ORXREGD12 364275fd0b74Schristos #undef ORXREGD1234 364375fd0b74Schristos #undef ORREGD1324 364475fd0b74Schristos #undef OWREGD910 364575fd0b74Schristos #undef OWILC1 364675fd0b74Schristos #undef ORCREG1 364775fd0b74Schristos #undef OWCREG1 364875fd0b74Schristos #undef OWREG1Z 364975fd0b74Schristos #undef ORB15REG1 365075fd0b74Schristos #undef OWB15REG1 365175fd0b74Schristos #undef ORMEMDW 365275fd0b74Schristos #undef OWMEMDW 365375fd0b74Schristos #undef ORMEMSB 365475fd0b74Schristos #undef OWMEMSB 365575fd0b74Schristos #undef ORMEMLB 365675fd0b74Schristos #undef OWMEMLB 365775fd0b74Schristos #undef ORMEMSH 365875fd0b74Schristos #undef OWMEMSH 365975fd0b74Schristos #undef ORMEMLH 366075fd0b74Schristos #undef OWMEMLH 366175fd0b74Schristos #undef ORMEMSW 366275fd0b74Schristos #undef OWMEMSW 366375fd0b74Schristos #undef ORMEMLW 366475fd0b74Schristos #undef OWMEMLW 366575fd0b74Schristos #undef ORMEMSD 366675fd0b74Schristos #undef OWMEMSD 366775fd0b74Schristos #undef ORMEMND 366875fd0b74Schristos #undef OWMEMND 366975fd0b74Schristos #undef ENC 367075fd0b74Schristos #undef ENC0 367175fd0b74Schristos #undef ENC1 367275fd0b74Schristos #undef ENC2 367375fd0b74Schristos #undef ENC3 367475fd0b74Schristos #undef ENC4 367575fd0b74Schristos #undef ENC5 367675fd0b74Schristos #undef ENC6 367775fd0b74Schristos #undef ENC7 3678