comparison gcc/config/h8300/h8300.h @ 63:b7f97abdc517 gcc-4.6-20100522

update gcc from gcc-4.5.0 to gcc-4.6
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Mon, 24 May 2010 12:47:05 +0900
parents 77e2b8dfacca
children f6334be47118
comparison
equal deleted inserted replaced
56:3c8a44c06a95 63:b7f97abdc517
606 /* 1 if N is a possible register number for function argument passing. 606 /* 1 if N is a possible register number for function argument passing.
607 On the H8, no registers are used in this way. */ 607 On the H8, no registers are used in this way. */
608 608
609 #define FUNCTION_ARG_REGNO_P(N) (TARGET_QUICKCALL ? N < 3 : 0) 609 #define FUNCTION_ARG_REGNO_P(N) (TARGET_QUICKCALL ? N < 3 : 0)
610 610
611 /* When defined, the compiler allows registers explicitly used in the 611 /* When this hook returns true for MODE, the compiler allows
612 rtl to be used as spill registers but prevents the compiler from 612 registers explicitly used in the rtl to be used as spill registers
613 extending the lifetime of these registers. */ 613 but prevents the compiler from extending the lifetime of these
614 614 registers. */
615 #define SMALL_REGISTER_CLASSES 1 615 #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true
616 616
617 /* Define a data type for recording info about an argument list 617 /* Define a data type for recording info about an argument list
618 during the scan of that argument list. This data type should 618 during the scan of that argument list. This data type should
619 hold all necessary information about the function itself 619 hold all necessary information about the function itself
620 and about the args processed so far, enough to enable macros 620 and about the args processed so far, enough to enable macros
799 && GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 1)) == CONST_INT \ 799 && GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 1)) == CONST_INT \
800 && (TARGET_H8300S \ 800 && (TARGET_H8300S \
801 || SYMBOL_REF_FLAG (XEXP (XEXP (XEXP (OP, 0), 0), 0)))) \ 801 || SYMBOL_REF_FLAG (XEXP (XEXP (XEXP (OP, 0), 0), 0)))) \
802 || (GET_CODE (OP) == MEM \ 802 || (GET_CODE (OP) == MEM \
803 && h8300_eightbit_constant_address_p (XEXP (OP, 0))) \ 803 && h8300_eightbit_constant_address_p (XEXP (OP, 0))) \
804 || (GET_CODE (OP) == MEM && TARGET_H8300S \ 804 || (GET_CODE (OP) == MEM && (TARGET_H8300S || TARGET_H8300SX) \
805 && GET_CODE (XEXP (OP, 0)) == CONST_INT)) 805 && GET_CODE (XEXP (OP, 0)) == CONST_INT))
806 806
807 /* Multi-letter constraints starting with W are to be used for 807 /* Multi-letter constraints starting with W are to be used for
808 operands that require a memory operand, i.e,. that are never used 808 operands that require a memory operand, i.e,. that are never used
809 along with register constraints (see EXTRA_MEMORY_CONSTRAINTS). 809 along with register constraints (see EXTRA_MEMORY_CONSTRAINTS). */
810 For operands that require a memory operand (or not) but that always
811 accept a register, a multi-letter constraint starting with Y should
812 be used instead. */
813 810
814 #define OK_FOR_WU(OP) \ 811 #define OK_FOR_WU(OP) \
815 (GET_CODE (OP) == MEM && OK_FOR_U (OP)) 812 (GET_CODE (OP) == MEM && OK_FOR_U (OP))
816 813
817 #define OK_FOR_W(OP, STR) \ 814 #define OK_FOR_W(OP, STR) \
820 817
821 #define CONSTRAINT_LEN_FOR_W(STR) \ 818 #define CONSTRAINT_LEN_FOR_W(STR) \
822 ((STR)[1] == 'U' ? 2 \ 819 ((STR)[1] == 'U' ? 2 \
823 : 0) 820 : 0)
824 821
825 /* We don't have any constraint starting with Y yet, but before 822 /* Multi-letter constraints starting with Y are to be used for operands
826 someone uses it for a one-letter constraint and we're left without 823 that are constant immediates and have single 1 or 0 in their binary
827 any upper-case constraints left, we reserve it for extensions 824 representation. */
828 here. */ 825
829 #define OK_FOR_Y(OP, STR) \ 826 #define OK_FOR_Y2(OP) \
830 (0) 827 ((GET_CODE (OP) == CONST_INT) && (exact_log2 (INTVAL (OP) & 0xff) != -1))
828
829 #define OK_FOR_Y0(OP) \
830 ((GET_CODE (OP) == CONST_INT) && (exact_log2 (~INTVAL (OP) & 0xff) != -1))
831
832 #define OK_FOR_Y(OP, STR) \
833 ((STR)[1] == '2' ? OK_FOR_Y2 (OP) \
834 : (STR)[1] == '0' ? OK_FOR_Y0 (OP) \
835 : 0)
831 836
832 #define CONSTRAINT_LEN_FOR_Y(STR) \ 837 #define CONSTRAINT_LEN_FOR_Y(STR) \
833 (0) 838 ((STR)[1] == '2' ? 2 \
839 : (STR)[1] == '0' ? 2 \
840 : 0)
834 841
835 #define OK_FOR_Z(OP) \ 842 #define OK_FOR_Z(OP) \
836 (TARGET_H8300SX \ 843 (TARGET_H8300SX \
837 && GET_CODE (OP) == MEM \ 844 && GET_CODE (OP) == MEM \
838 && CONSTANT_P (XEXP ((OP), 0))) 845 && CONSTANT_P (XEXP ((OP), 0)))