diff options
author | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-11-08 03:20:30 +0000 |
---|---|---|
committer | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-11-08 03:20:30 +0000 |
commit | 643df0593c630691fa6877cddeefdd4c3023d444 (patch) | |
tree | 1eb48ad31d05a9ce117bedc17115de96dffa2f0b /gcc/config/cris/cris.h | |
parent | 54f3f029d816c6d1626310649adfda740e203f7b (diff) | |
parent | d5d8f1ccc6d3972dc5cfc0949e85e0b1c9e24ee0 (diff) | |
download | gcc-transactional-memory.tar.gz |
* Merge from mainline rev 181122.transactional-memory
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/transactional-memory@181148 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/cris/cris.h')
-rw-r--r-- | gcc/config/cris/cris.h | 137 |
1 files changed, 1 insertions, 136 deletions
diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h index 62461d65cc5..a9a68b8b3c1 100644 --- a/gcc/config/cris/cris.h +++ b/gcc/config/cris/cris.h @@ -84,11 +84,7 @@ extern int cris_cpu_version; /* Changing the order used to be necessary to put the fourth __make_dp argument (a DImode parameter) in registers, to fit with the libfunc parameter passing scheme used for intrinsic functions. FIXME: Check - performance and maybe remove definition from TARGET_LIBGCC2_CFLAGS now - that it isn't strictly necessary. We used to do this through - TARGET_LIBGCC2_CFLAGS, but that became increasingly difficult as the - parenthesis (that needed quoting) travels through several layers of - make and shell invocations. */ + performance. */ #ifdef IN_LIBGCC2 #define __make_dp(a,b,c,d) __cris_make_dp(d,a,b,c) #endif @@ -554,16 +550,6 @@ enum reg_class #define INDEX_REG_CLASS GENERAL_REGS -#define REG_CLASS_FROM_LETTER(C) \ - ( \ - (C) == 'a' ? ACR_REGS : \ - (C) == 'b' ? GENNONACR_REGS : \ - (C) == 'h' ? MOF_REGS : \ - (C) == 'x' ? SPECIAL_REGS : \ - (C) == 'c' ? CC0_REGS : \ - NO_REGS \ - ) - /* Since it uses reg_renumber, it is safe only once reg_renumber has been allocated, which happens in local-alloc.c. */ #define REGNO_OK_FOR_BASE_P(REGNO) \ @@ -613,127 +599,6 @@ enum reg_class ? 1 /* + cris_fatal ("CLASS_MAX_NREGS with VOIDmode") */ \ : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)) -/* We are now out of letters; we could use ten more. This forces us to - use C-code in the 'md' file. FIXME: Use some EXTRA_CONSTRAINTS. */ -#define CRIS_CONST_OK_FOR_LETTER_P(VALUE, C) \ - ( \ - /* MOVEQ, CMPQ, ANDQ, ORQ. */ \ - (C) == 'I' ? (VALUE) >= -32 && (VALUE) <= 31 : \ - /* ADDQ, SUBQ. */ \ - (C) == 'J' ? (VALUE) >= 0 && (VALUE) <= 63 : \ - /* ASRQ, BTSTQ, LSRQ, LSLQ. */ \ - (C) == 'K' ? (VALUE) >= 0 && (VALUE) <= 31 : \ - /* A 16-bit signed number. */ \ - (C) == 'L' ? (VALUE) >= -32768 && (VALUE) <= 32767 : \ - /* The constant 0 for CLEAR. */ \ - (C) == 'M' ? (VALUE) == 0 : \ - /* A negative ADDQ or SUBQ. */ \ - (C) == 'N' ? (VALUE) >= -63 && (VALUE) < 0 : \ - /* Quickened ints, QI and HI. */ \ - (C) == 'O' ? (VALUE) >= 0 && (VALUE) <= 65535 \ - && ((VALUE) >= (65535-31) \ - || ((VALUE) >= (255-31) \ - && (VALUE) <= 255 )) : \ - /* A 16-bit number signed *or* unsigned. */ \ - (C) == 'P' ? (VALUE) >= -32768 && (VALUE) <= 65535 : \ - 0) - -#define CONST_OK_FOR_CONSTRAINT_P(VALUE, C, S) \ - ( \ - ((C) != 'K' || (S)[1] == 'c') \ - ? CRIS_CONST_OK_FOR_LETTER_P (VALUE, C) : \ - ((C) == 'K' && (S)[1] == 'p') \ - ? exact_log2 (VALUE) >= 0 : \ - 0) - -#define CONSTRAINT_LEN(C, S) ((C) == 'K' ? 2 : DEFAULT_CONSTRAINT_LEN (C, S)) - -/* It is really simple to make up a 0.0; it is the same as int-0 in - IEEE754. */ -#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \ - ((C) == 'G' && ((VALUE) == CONST0_RTX (DFmode) \ - || (VALUE) == CONST0_RTX (SFmode))) - -/* We need this on cris to distinguish delay-slottable addressing modes. */ -#define EXTRA_CONSTRAINT(X, C) \ - ( \ - /* Slottable address mode? */ \ - (C) == 'Q' ? EXTRA_CONSTRAINT_Q (X) : \ - /* Operand to BDAP or BIAP? */ \ - (C) == 'R' ? EXTRA_CONSTRAINT_R (X) : \ - /* A local PIC symbol? */ \ - (C) == 'S' ? EXTRA_CONSTRAINT_S (X) : \ - /* A three-address addressing-mode? */ \ - (C) == 'T' ? EXTRA_CONSTRAINT_T (X) : \ - /* A PLT symbol? */ \ - (C) == 'U' ? EXTRA_CONSTRAINT_U (X) : \ - 0) - -#define EXTRA_MEMORY_CONSTRAINT(X, STR) ((X) == 'Q') - -#define EXTRA_CONSTRAINT_Q(X) \ - ( \ - /* Just an indirect register (happens to also be \ - "all" slottable memory addressing modes not \ - covered by other constraints, i.e. '>'). */ \ - MEM_P (X) \ - && cris_base_p (XEXP (X, 0), reload_in_progress || reload_completed) \ - ) - -#define EXTRA_CONSTRAINT_R(X) \ - ( \ - /* An operand to BDAP or BIAP: \ - A BIAP; r.S? */ \ - cris_biap_index_p (X, reload_in_progress || reload_completed) \ - /* A [reg] or (int) [reg], maybe with post-increment. */ \ - || cris_bdap_index_p (X, reload_in_progress || reload_completed) \ - || cris_constant_index_p (X) \ - ) - -#define EXTRA_CONSTRAINT_T(X) \ - ( \ - /* Memory three-address operand. All are indirect-memory: */ \ - MEM_P (X) \ - && ((MEM_P (XEXP (X, 0)) \ - /* Double indirect: [[reg]] or [[reg+]]? */ \ - && (cris_base_or_autoincr_p (XEXP (XEXP (X, 0), 0), \ - reload_in_progress || reload_completed))) \ - /* Just an explicit indirect reference: [const]? */ \ - || CONSTANT_P (XEXP (X, 0)) \ - /* Something that is indexed; [...+...]? */ \ - || (GET_CODE (XEXP (X, 0)) == PLUS \ - /* A BDAP constant: [reg+(8|16|32)bit offset]? */ \ - && ((cris_base_p (XEXP (XEXP (X, 0), 0), \ - reload_in_progress || reload_completed) \ - && cris_constant_index_p (XEXP (XEXP (X, 0), 1))) \ - /* A BDAP register: [reg+[reg(+)].S]? */ \ - || (cris_base_p (XEXP (XEXP (X, 0), 0), \ - reload_in_progress || reload_completed) \ - && cris_bdap_index_p (XEXP(XEXP(X, 0), 1), \ - reload_in_progress || reload_completed)) \ - /* Same, but with swapped arguments (no canonical \ - ordering between e.g. REG and MEM as of LAST_UPDATED \ - "Thu May 12 03:59:11 UTC 2005"). */ \ - || (cris_base_p (XEXP (XEXP (X, 0), 1), \ - reload_in_progress | reload_completed) \ - && cris_bdap_index_p (XEXP (XEXP (X, 0), 0), \ - reload_in_progress || reload_completed)) \ - /* A BIAP: [reg+reg.S] (MULT comes first). */ \ - || (cris_base_p (XEXP (XEXP (X, 0), 1), \ - reload_in_progress || reload_completed) \ - && cris_biap_index_p (XEXP (XEXP (X, 0), 0), \ - reload_in_progress || reload_completed))))) \ - ) - -/* PIC-constructs for symbols. */ -#define EXTRA_CONSTRAINT_S(X) \ - (flag_pic && GET_CODE (X) == CONST && cris_valid_pic_const (X, false)) - -#define EXTRA_CONSTRAINT_U(X) \ - (flag_pic \ - && CONSTANT_P (X) \ - && cris_nonmemory_operand_or_callable_symbol (X, VOIDmode)) - /* Node: Frame Layout */ |