From fc1c2d0482260c80cfe8363f96ace9a57f10cbf4 Mon Sep 17 00:00:00 2001 From: Claudiu Zissulescu Date: Mon, 2 May 2016 10:54:34 +0200 Subject: [ARC] Add new ARCv2 instructions. gcc/ 2016-05-02 Claudiu Zissulescu * config/arc/arc-protos.h (compact_memory_operand_p): Declare. * config/arc/arc.c (arc_output_commutative_cond_exec): Consider bmaskn instruction. (arc_dwarf_register_span): Remove enum keyword. (compact_memory_operand_p): New function. * config/arc/arc.h (reg_class): Add code density register classes. (REG_CLASS_NAMES): Likewise. (REG_CLASS_CONTENTS): Likewise. * config/arc/arc.md (*movqi_insn): Add code density instructions. (*movhi_insn, *movsi_insn, *movsf_insn): Likewise. (*extendhisi2_i, andsi3_i, cmpsi_cc_insn_mixed): Likewise. (*cmpsi_cc_c_insn, *movsi_ne): Likewise. * config/arc/constraints.md (C2p, Uts, Cm1, Cm3, Ucd): New constraints. (h, Rcd, Rsd, Rzd): New register constraints. (T): Use compact_memory_operand_p function. * config/arc/predicates.md (compact_load_memory_operand): Remove. From-SVN: r235707 --- gcc/config/arc/arc.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'gcc/config/arc/arc.h') diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index bc14d11..f6b85ea 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -674,6 +674,9 @@ enum reg_class WRITABLE_CORE_REGS, /* 'w' */ CHEAP_CORE_REGS, /* 'c' */ ALL_CORE_REGS, /* 'Rac' */ + R0R3_CD_REGS, /* 'Rcd' */ + R0R1_CD_REGS, /* 'Rsd' */ + AC16_H_REGS, /* 'h' */ ALL_REGS, LIM_REG_CLASSES }; @@ -700,6 +703,9 @@ enum reg_class "MPY_WRITABLE_CORE_REGS", \ "WRITABLE_CORE_REGS", \ "CHEAP_CORE_REGS", \ + "R0R3_CD_REGS", \ + "R0R1_CD_REGS", \ + "AC16_H_REGS", \ "ALL_CORE_REGS", \ "ALL_REGS" \ } @@ -732,6 +738,9 @@ enum reg_class {0xffffffff, 0xd0000000, 0x00000000, 0x00000000, 0x00000000}, /* 'w', r0-r31, r60 */ \ {0xffffffff, 0xdfffffff, 0x00000000, 0x00000000, 0x00000000}, /* 'c', r0-r60, ap, pcl */ \ {0xffffffff, 0xdfffffff, 0x00000000, 0x00000000, 0x00000000}, /* 'Rac', r0-r60, ap, pcl */ \ + {0x0000000f, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, /* 'Rcd', r0-r3 */ \ + {0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, /* 'Rsd', r0-r1 */ \ + {0x9fffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, /* 'h', r0-28, r30 */ \ {0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0003ffff} /* All Registers */ \ } -- cgit v1.1