aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arc/arc.h
diff options
context:
space:
mode:
authorClaudiu Zissulescu <claziss@synopsys.com>2016-05-02 10:54:34 +0200
committerClaudiu Zissulescu <claziss@gcc.gnu.org>2016-05-02 10:54:34 +0200
commitfc1c2d0482260c80cfe8363f96ace9a57f10cbf4 (patch)
treec40e671c5b2a36bde4b5873c1bb266562c0fc4a5 /gcc/config/arc/arc.h
parent02673c66c6477d1212a49a602f74c624267dda29 (diff)
downloadgcc-fc1c2d0482260c80cfe8363f96ace9a57f10cbf4.zip
gcc-fc1c2d0482260c80cfe8363f96ace9a57f10cbf4.tar.gz
gcc-fc1c2d0482260c80cfe8363f96ace9a57f10cbf4.tar.bz2
[ARC] Add new ARCv2 instructions.
gcc/ 2016-05-02 Claudiu Zissulescu <claziss@synopsys.com> * 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
Diffstat (limited to 'gcc/config/arc/arc.h')
-rw-r--r--gcc/config/arc/arc.h9
1 files changed, 9 insertions, 0 deletions
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 */ \
}