From dab97f2471e9939e4ddd126a5cab730c5f6831b5 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Wed, 24 Jun 2009 03:06:42 +0000 Subject: [PATCH] [cgen] * intrinsics.scm: Updates to support IVC2. (belongs-to-group?): Check IVC2 slots. (-slots-attribute): New. (targets::attributes): Add SLOTS. (target:add-well-known-intrinsics): Add CPMOV. (md-insn): Add CPTYPE and CRET?. (add-md-insn): Likewise. (add-intrinsic-for-isa): Disable the duplicate tests, as IVC2 has duplicate insns with different bit patterns. (write-cgen-insn?): Add cret? support. (intrinsics.h): Add vector types. (runtime-op): Add vector support. (intrinsic-protos.h): Let GCC define its types. Add cret? support. * cpu/mep-core.cpu: Add CPTYPE and CRET attributes. * cpu/mep-ivc2.cpu: Update all insns to include type information. (h-cr-ivc2): Default to typeless. (h-ccr-ivc2): Fix register width. (SLOTS): Fix values and default. (ivc2_*): Add control register names. (crop, crqp, crpp, croc, crqc, crpc): Default to typeless. [opcodes] * mep-desc.c: Regenerate. * mep-desc.h: Regenerate. * mep-dis.c: Regenerate. * mep-ibld.c: Regenerate. * mep-opc.c: Regenerate. [sid/component/cgen-cpu/mep] * ivc2-cop.cxx (ivc2_cphadd_w): Change to return value. (ivc2_cpsubaca0u_b): Remove debug line. * ivc2-cpu.h (ivc2_cpccadd_b): Change to return value. * mep-cop1-16-decode.cxx: Regenerate. * mep-cop1-16-sem.cxx: Regenerate. * mep-cop1-32-decode.cxx: Regenerate. * mep-cop1-32-sem.cxx: Regenerate. * mep-cop1-48-decode.cxx: Regenerate. * mep-cop1-48-sem.cxx: Regenerate. * mep-cop1-64-decode.cxx: Regenerate. * mep-cop1-64-sem.cxx: Regenerate. * mep-core1-decode.cxx: Regenerate. * mep-cpu.h: Regenerate. * mep-decode.cxx: Regenerate. * mep-desc.h: Regenerate. --- opcodes/ChangeLog | 6 + opcodes/mep-asm.c | 69 ++ opcodes/mep-desc.c | 1965 +++++++++++++++++++++++--------------------- opcodes/mep-desc.h | 46 +- opcodes/mep-dis.c | 69 ++ opcodes/mep-ibld.c | 322 ++++++++ opcodes/mep-opc.c | 32 +- 7 files changed, 1558 insertions(+), 951 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 00d6d3bbb9e..227813ab47e 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,11 @@ 2009-06-23 DJ Delorie + * mep-desc.c: Regenerate. + * mep-desc.h: Regenerate. + * mep-dis.c: Regenerate. + * mep-ibld.c: Regenerate. + * mep-opc.c: Regenerate. + * mep-asm.c: Regenerate. * mep-opc.c: Regenerate. * mep-opc.h: Regenerate. diff --git a/opcodes/mep-asm.c b/opcodes/mep-asm.c index 3a8b454311f..6ab21e1cd7f 100644 --- a/opcodes/mep-asm.c +++ b/opcodes/mep-asm.c @@ -1023,6 +1023,75 @@ mep_cgen_parse_operand (CGEN_CPU_DESC cd, case MEP_OPERAND_IVC_X_6_3 : errmsg = cgen_parse_unsigned_integer (cd, strp, MEP_OPERAND_IVC_X_6_3, (unsigned long *) (& fields->f_ivc2_3u6)); break; + case MEP_OPERAND_IVC2_ACC0_0 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC0_1 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC0_2 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC0_3 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC0_4 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC0_5 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC0_6 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC0_7 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_0 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_1 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_2 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_3 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_4 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_5 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_6 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_ACC1_7 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_CC : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_COFA0 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_COFA1 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_COFR0 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_COFR1 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_CSAR0 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; + case MEP_OPERAND_IVC2_CSAR1 : + errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & junk); + break; case MEP_OPERAND_IVC2C3CCRN : errmsg = cgen_parse_keyword (cd, strp, & mep_cgen_opval_h_ccr_ivc2, & fields->f_ivc2_ccrn_c3); break; diff --git a/opcodes/mep-desc.c b/opcodes/mep-desc.c index b773e4b3e19..c5e8c8aef5b 100644 --- a/opcodes/mep-desc.c +++ b/opcodes/mep-desc.c @@ -82,6 +82,27 @@ static const CGEN_ATTR_ENTRY CDATA_attr[] ATTRIBUTE_UNUSED = { 0, 0 } }; +static const CGEN_ATTR_ENTRY CPTYPE_attr[] ATTRIBUTE_UNUSED = +{ + { "CP_DATA_BUS_INT", CPTYPE_CP_DATA_BUS_INT }, + { "VECT", CPTYPE_VECT }, + { "V2SI", CPTYPE_V2SI }, + { "V4HI", CPTYPE_V4HI }, + { "V8QI", CPTYPE_V8QI }, + { "V2USI", CPTYPE_V2USI }, + { "V4UHI", CPTYPE_V4UHI }, + { "V8UQI", CPTYPE_V8UQI }, + { 0, 0 } +}; + +static const CGEN_ATTR_ENTRY CRET_attr[] ATTRIBUTE_UNUSED = +{ + { "VOID", CRET_VOID }, + { "FIRST", CRET_FIRST }, + { "FIRSTCOPY", CRET_FIRSTCOPY }, + { 0, 0 } +}; + static const CGEN_ATTR_ENTRY ALIGN_attr [] ATTRIBUTE_UNUSED = { {"integer", 1}, @@ -103,11 +124,11 @@ static const CGEN_ATTR_ENTRY CONFIG_attr[] ATTRIBUTE_UNUSED = static const CGEN_ATTR_ENTRY SLOTS_attr[] ATTRIBUTE_UNUSED = { - { "core", SLOTS_CORE }, - { "c3", SLOTS_C3 }, - { "p0s", SLOTS_P0S }, - { "p0", SLOTS_P0 }, - { "p1", SLOTS_P1 }, + { "CORE", SLOTS_CORE }, + { "C3", SLOTS_C3 }, + { "P0S", SLOTS_P0S }, + { "P0", SLOTS_P0 }, + { "P1", SLOTS_P1 }, { 0, 0 } }; @@ -158,6 +179,8 @@ const CGEN_ATTR_TABLE mep_cgen_insn_attr_table[] = { { "MACH", & MACH_attr[0], & MACH_attr[0] }, { "ISA", & ISA_attr[0], & ISA_attr[0] }, + { "CPTYPE", & CPTYPE_attr[0], & CPTYPE_attr[0] }, + { "CRET", & CRET_attr[0], & CRET_attr[0] }, { "LATENCY", & LATENCY_attr[0], & LATENCY_attr[0] }, { "CONFIG", & CONFIG_attr[0], & CONFIG_attr[0] }, { "SLOTS", & SLOTS_attr[0], & SLOTS_attr[0] }, @@ -1203,18 +1226,110 @@ const CGEN_OPERAND mep_cgen_operand_table[] = { "cp_flag", MEP_OPERAND_CP_FLAG, HW_H_CCR, 0, 0, { 0, { (const PTR) 0 } }, { 0, { { { (1<nonbool[CGEN_INSN_MACH-CGEN_INSN_START_NBOOLS-1].nonbitset) #define CGEN_ATTR_CGEN_INSN_ISA_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_ISA-CGEN_INSN_START_NBOOLS-1].bitset) +#define CGEN_ATTR_CGEN_INSN_CPTYPE_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_CPTYPE-CGEN_INSN_START_NBOOLS-1].nonbitset) +#define CGEN_ATTR_CGEN_INSN_CRET_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_CRET-CGEN_INSN_START_NBOOLS-1].nonbitset) #define CGEN_ATTR_CGEN_INSN_LATENCY_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_LATENCY-CGEN_INSN_START_NBOOLS-1].nonbitset) #define CGEN_ATTR_CGEN_INSN_CONFIG_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_CONFIG-CGEN_INSN_START_NBOOLS-1].nonbitset) #define CGEN_ATTR_CGEN_INSN_SLOTS_VALUE(attrs) ((attrs)->nonbool[CGEN_INSN_SLOTS-CGEN_INSN_START_NBOOLS-1].nonbitset) diff --git a/opcodes/mep-dis.c b/opcodes/mep-dis.c index 79c7aadf10a..2fc7db579dc 100644 --- a/opcodes/mep-dis.c +++ b/opcodes/mep-dis.c @@ -928,6 +928,75 @@ mep_cgen_print_operand (CGEN_CPU_DESC cd, case MEP_OPERAND_IVC_X_6_3 : print_normal (cd, info, fields->f_ivc2_3u6, 0, pc, length); break; + case MEP_OPERAND_IVC2_ACC0_0 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC0_1 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC0_2 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC0_3 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC0_4 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC0_5 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC0_6 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC0_7 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_0 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_1 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_2 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_3 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_4 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_5 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_6 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_ACC1_7 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_CC : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_COFA0 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_COFA1 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_COFR0 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_COFR1 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_CSAR0 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; + case MEP_OPERAND_IVC2_CSAR1 : + print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, 0, 0); + break; case MEP_OPERAND_IVC2C3CCRN : print_keyword (cd, info, & mep_cgen_opval_h_ccr_ivc2, fields->f_ivc2_ccrn_c3, 0|(1<f_ivc2_3u6, 0, 0, 6, 3, 32, total_length, buffer); break; + case MEP_OPERAND_IVC2_ACC0_0 : + break; + case MEP_OPERAND_IVC2_ACC0_1 : + break; + case MEP_OPERAND_IVC2_ACC0_2 : + break; + case MEP_OPERAND_IVC2_ACC0_3 : + break; + case MEP_OPERAND_IVC2_ACC0_4 : + break; + case MEP_OPERAND_IVC2_ACC0_5 : + break; + case MEP_OPERAND_IVC2_ACC0_6 : + break; + case MEP_OPERAND_IVC2_ACC0_7 : + break; + case MEP_OPERAND_IVC2_ACC1_0 : + break; + case MEP_OPERAND_IVC2_ACC1_1 : + break; + case MEP_OPERAND_IVC2_ACC1_2 : + break; + case MEP_OPERAND_IVC2_ACC1_3 : + break; + case MEP_OPERAND_IVC2_ACC1_4 : + break; + case MEP_OPERAND_IVC2_ACC1_5 : + break; + case MEP_OPERAND_IVC2_ACC1_6 : + break; + case MEP_OPERAND_IVC2_ACC1_7 : + break; + case MEP_OPERAND_IVC2_CC : + break; + case MEP_OPERAND_IVC2_COFA0 : + break; + case MEP_OPERAND_IVC2_COFA1 : + break; + case MEP_OPERAND_IVC2_COFR0 : + break; + case MEP_OPERAND_IVC2_COFR1 : + break; + case MEP_OPERAND_IVC2_CSAR0 : + break; + case MEP_OPERAND_IVC2_CSAR1 : + break; case MEP_OPERAND_IVC2C3CCRN : { { @@ -1459,6 +1505,52 @@ mep_cgen_extract_operand (CGEN_CPU_DESC cd, case MEP_OPERAND_IVC_X_6_3 : length = extract_normal (cd, ex_info, insn_value, 0, 0, 6, 3, 32, total_length, pc, & fields->f_ivc2_3u6); break; + case MEP_OPERAND_IVC2_ACC0_0 : + break; + case MEP_OPERAND_IVC2_ACC0_1 : + break; + case MEP_OPERAND_IVC2_ACC0_2 : + break; + case MEP_OPERAND_IVC2_ACC0_3 : + break; + case MEP_OPERAND_IVC2_ACC0_4 : + break; + case MEP_OPERAND_IVC2_ACC0_5 : + break; + case MEP_OPERAND_IVC2_ACC0_6 : + break; + case MEP_OPERAND_IVC2_ACC0_7 : + break; + case MEP_OPERAND_IVC2_ACC1_0 : + break; + case MEP_OPERAND_IVC2_ACC1_1 : + break; + case MEP_OPERAND_IVC2_ACC1_2 : + break; + case MEP_OPERAND_IVC2_ACC1_3 : + break; + case MEP_OPERAND_IVC2_ACC1_4 : + break; + case MEP_OPERAND_IVC2_ACC1_5 : + break; + case MEP_OPERAND_IVC2_ACC1_6 : + break; + case MEP_OPERAND_IVC2_ACC1_7 : + break; + case MEP_OPERAND_IVC2_CC : + break; + case MEP_OPERAND_IVC2_COFA0 : + break; + case MEP_OPERAND_IVC2_COFA1 : + break; + case MEP_OPERAND_IVC2_COFR0 : + break; + case MEP_OPERAND_IVC2_COFR1 : + break; + case MEP_OPERAND_IVC2_CSAR0 : + break; + case MEP_OPERAND_IVC2_CSAR1 : + break; case MEP_OPERAND_IVC2C3CCRN : { length = extract_normal (cd, ex_info, insn_value, 0, 0, 28, 2, 32, total_length, pc, & fields->f_ivc2_ccrn_c3hi); @@ -1917,6 +2009,75 @@ mep_cgen_get_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case MEP_OPERAND_IVC_X_6_3 : value = fields->f_ivc2_3u6; break; + case MEP_OPERAND_IVC2_ACC0_0 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_1 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_2 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_3 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_4 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_5 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_6 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_7 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_0 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_1 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_2 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_3 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_4 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_5 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_6 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_7 : + value = 0; + break; + case MEP_OPERAND_IVC2_CC : + value = 0; + break; + case MEP_OPERAND_IVC2_COFA0 : + value = 0; + break; + case MEP_OPERAND_IVC2_COFA1 : + value = 0; + break; + case MEP_OPERAND_IVC2_COFR0 : + value = 0; + break; + case MEP_OPERAND_IVC2_COFR1 : + value = 0; + break; + case MEP_OPERAND_IVC2_CSAR0 : + value = 0; + break; + case MEP_OPERAND_IVC2_CSAR1 : + value = 0; + break; case MEP_OPERAND_IVC2C3CCRN : value = fields->f_ivc2_ccrn_c3; break; @@ -2300,6 +2461,75 @@ mep_cgen_get_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case MEP_OPERAND_IVC_X_6_3 : value = fields->f_ivc2_3u6; break; + case MEP_OPERAND_IVC2_ACC0_0 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_1 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_2 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_3 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_4 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_5 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_6 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC0_7 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_0 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_1 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_2 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_3 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_4 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_5 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_6 : + value = 0; + break; + case MEP_OPERAND_IVC2_ACC1_7 : + value = 0; + break; + case MEP_OPERAND_IVC2_CC : + value = 0; + break; + case MEP_OPERAND_IVC2_COFA0 : + value = 0; + break; + case MEP_OPERAND_IVC2_COFA1 : + value = 0; + break; + case MEP_OPERAND_IVC2_COFR0 : + value = 0; + break; + case MEP_OPERAND_IVC2_COFR1 : + value = 0; + break; + case MEP_OPERAND_IVC2_CSAR0 : + value = 0; + break; + case MEP_OPERAND_IVC2_CSAR1 : + value = 0; + break; case MEP_OPERAND_IVC2C3CCRN : value = fields->f_ivc2_ccrn_c3; break; @@ -2684,6 +2914,52 @@ mep_cgen_set_int_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case MEP_OPERAND_IVC_X_6_3 : fields->f_ivc2_3u6 = value; break; + case MEP_OPERAND_IVC2_ACC0_0 : + break; + case MEP_OPERAND_IVC2_ACC0_1 : + break; + case MEP_OPERAND_IVC2_ACC0_2 : + break; + case MEP_OPERAND_IVC2_ACC0_3 : + break; + case MEP_OPERAND_IVC2_ACC0_4 : + break; + case MEP_OPERAND_IVC2_ACC0_5 : + break; + case MEP_OPERAND_IVC2_ACC0_6 : + break; + case MEP_OPERAND_IVC2_ACC0_7 : + break; + case MEP_OPERAND_IVC2_ACC1_0 : + break; + case MEP_OPERAND_IVC2_ACC1_1 : + break; + case MEP_OPERAND_IVC2_ACC1_2 : + break; + case MEP_OPERAND_IVC2_ACC1_3 : + break; + case MEP_OPERAND_IVC2_ACC1_4 : + break; + case MEP_OPERAND_IVC2_ACC1_5 : + break; + case MEP_OPERAND_IVC2_ACC1_6 : + break; + case MEP_OPERAND_IVC2_ACC1_7 : + break; + case MEP_OPERAND_IVC2_CC : + break; + case MEP_OPERAND_IVC2_COFA0 : + break; + case MEP_OPERAND_IVC2_COFA1 : + break; + case MEP_OPERAND_IVC2_COFR0 : + break; + case MEP_OPERAND_IVC2_COFR1 : + break; + case MEP_OPERAND_IVC2_CSAR0 : + break; + case MEP_OPERAND_IVC2_CSAR1 : + break; case MEP_OPERAND_IVC2C3CCRN : fields->f_ivc2_ccrn_c3 = value; break; @@ -3041,6 +3317,52 @@ mep_cgen_set_vma_operand (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, case MEP_OPERAND_IVC_X_6_3 : fields->f_ivc2_3u6 = value; break; + case MEP_OPERAND_IVC2_ACC0_0 : + break; + case MEP_OPERAND_IVC2_ACC0_1 : + break; + case MEP_OPERAND_IVC2_ACC0_2 : + break; + case MEP_OPERAND_IVC2_ACC0_3 : + break; + case MEP_OPERAND_IVC2_ACC0_4 : + break; + case MEP_OPERAND_IVC2_ACC0_5 : + break; + case MEP_OPERAND_IVC2_ACC0_6 : + break; + case MEP_OPERAND_IVC2_ACC0_7 : + break; + case MEP_OPERAND_IVC2_ACC1_0 : + break; + case MEP_OPERAND_IVC2_ACC1_1 : + break; + case MEP_OPERAND_IVC2_ACC1_2 : + break; + case MEP_OPERAND_IVC2_ACC1_3 : + break; + case MEP_OPERAND_IVC2_ACC1_4 : + break; + case MEP_OPERAND_IVC2_ACC1_5 : + break; + case MEP_OPERAND_IVC2_ACC1_6 : + break; + case MEP_OPERAND_IVC2_ACC1_7 : + break; + case MEP_OPERAND_IVC2_CC : + break; + case MEP_OPERAND_IVC2_COFA0 : + break; + case MEP_OPERAND_IVC2_COFA1 : + break; + case MEP_OPERAND_IVC2_COFR0 : + break; + case MEP_OPERAND_IVC2_COFR1 : + break; + case MEP_OPERAND_IVC2_CSAR0 : + break; + case MEP_OPERAND_IVC2_CSAR1 : + break; case MEP_OPERAND_IVC2C3CCRN : fields->f_ivc2_ccrn_c3 = value; break; diff --git a/opcodes/mep-opc.c b/opcodes/mep-opc.c index aa6c093ad84..75a10f7024d 100644 --- a/opcodes/mep-opc.c +++ b/opcodes/mep-opc.c @@ -145,6 +145,12 @@ mep_cgen_insn_supported (CGEN_CPU_DESC cd, const CGEN_INSN *insn) int ok1; int ok2; int ok3; + + /* If we're assembling VLIW packets, ignore the 12-bit BSR as we + can't relax that. The 24-bit BSR is matched instead. */ + if (insn->base->num == MEP_INSN_BSR12 + && cgen_bitset_contains (cd->isas, ISA_EXT_COP1_64)) + return 0; /* If the insn has an option bit set that we don't want, reject it. */ @@ -6173,67 +6179,67 @@ static const CGEN_IBASE mep_cgen_macro_insn_table[] = /* nop */ { -1, "nop", "nop", 16, - { 0|A(ALIAS), { { { (1<