⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mips.h

📁 linux下编程用 编译软件
💻 H
📖 第 1 页 / 共 5 页
字号:
	}							\      else if (ISA_MIPS32)					\	{							\	  builtin_define ("__mips=32");				\	  builtin_define ("__mips_isa_rev=1");			\	  builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS32");	\	}							\      else if (ISA_MIPS32R2)					\	{							\	  builtin_define ("__mips=32");				\	  builtin_define ("__mips_isa_rev=2");			\	  builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS32");	\	}							\      else if (ISA_MIPS64)					\	{							\	  builtin_define ("__mips=64");				\	  builtin_define ("__mips_isa_rev=1");			\	  builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS64");	\	}							\								\      if (TARGET_HARD_FLOAT)					\	builtin_define ("__mips_hard_float");			\      else if (TARGET_SOFT_FLOAT)				\	builtin_define ("__mips_soft_float");			\								\      if (TARGET_SINGLE_FLOAT)					\	builtin_define ("__mips_single_float");			\								\      if (TARGET_PAIRED_SINGLE_FLOAT)				\	builtin_define ("__mips_paired_single_float");		\								\      if (TARGET_BIG_ENDIAN)					\	{							\	  builtin_define_std ("MIPSEB");			\	  builtin_define ("_MIPSEB");				\	}							\      else							\	{							\	  builtin_define_std ("MIPSEL");			\	  builtin_define ("_MIPSEL");				\	}							\								\        /* Macros dependent on the C dialect.  */		\      if (preprocessing_asm_p ())				\	{							\          builtin_define_std ("LANGUAGE_ASSEMBLY");		\	  builtin_define ("_LANGUAGE_ASSEMBLY");		\	}							\      else if (c_dialect_cxx ())				\        {							\	  builtin_define ("_LANGUAGE_C_PLUS_PLUS");		\          builtin_define ("__LANGUAGE_C_PLUS_PLUS");		\          builtin_define ("__LANGUAGE_C_PLUS_PLUS__");		\        }							\      else							\	{							\          builtin_define_std ("LANGUAGE_C");			\	  builtin_define ("_LANGUAGE_C");			\	}							\      if (c_dialect_objc ())					\        {							\	  builtin_define ("_LANGUAGE_OBJECTIVE_C");		\          builtin_define ("__LANGUAGE_OBJECTIVE_C");		\	  /* Bizarre, but needed at least for Irix.  */		\	  builtin_define_std ("LANGUAGE_C");			\	  builtin_define ("_LANGUAGE_C");			\        }							\								\      if (mips_abi == ABI_EABI)					\	builtin_define ("__mips_eabi");				\								\} while (0)/* Default target_flags if no switches are specified  */#ifndef TARGET_DEFAULT#define TARGET_DEFAULT 0#endif#ifndef TARGET_CPU_DEFAULT#define TARGET_CPU_DEFAULT 0#endif#ifndef TARGET_ENDIAN_DEFAULT#define TARGET_ENDIAN_DEFAULT MASK_BIG_ENDIAN#endif#ifndef TARGET_FP_EXCEPTIONS_DEFAULT#define TARGET_FP_EXCEPTIONS_DEFAULT MASK_FP_EXCEPTIONS#endif/* 'from-abi' makes a good default: you get whatever the ABI requires.  */#ifndef MIPS_ISA_DEFAULT#ifndef MIPS_CPU_STRING_DEFAULT#define MIPS_CPU_STRING_DEFAULT "from-abi"#endif#endif#ifdef IN_LIBGCC2#undef TARGET_64BIT/* Make this compile time constant for libgcc2 */#ifdef __mips64#define TARGET_64BIT		1#else#define TARGET_64BIT		0#endif#endif /* IN_LIBGCC2 */#ifndef MULTILIB_ENDIAN_DEFAULT#if TARGET_ENDIAN_DEFAULT == 0#define MULTILIB_ENDIAN_DEFAULT "EL"#else#define MULTILIB_ENDIAN_DEFAULT "EB"#endif#endif#ifndef MULTILIB_ISA_DEFAULT#  if MIPS_ISA_DEFAULT == 1#    define MULTILIB_ISA_DEFAULT "mips1"#  else#    if MIPS_ISA_DEFAULT == 2#      define MULTILIB_ISA_DEFAULT "mips2"#    else#      if MIPS_ISA_DEFAULT == 3#        define MULTILIB_ISA_DEFAULT "mips3"#      else#        if MIPS_ISA_DEFAULT == 4#          define MULTILIB_ISA_DEFAULT "mips4"#        else#          if MIPS_ISA_DEFAULT == 32#            define MULTILIB_ISA_DEFAULT "mips32"#          else#            if MIPS_ISA_DEFAULT == 33#              define MULTILIB_ISA_DEFAULT "mips32r2"#            else#              if MIPS_ISA_DEFAULT == 64#                define MULTILIB_ISA_DEFAULT "mips64"#              else#                define MULTILIB_ISA_DEFAULT "mips1"#              endif#            endif#          endif#        endif#      endif#    endif#  endif#endif#ifndef MULTILIB_DEFAULTS#define MULTILIB_DEFAULTS \    { MULTILIB_ENDIAN_DEFAULT, MULTILIB_ISA_DEFAULT, MULTILIB_ABI_DEFAULT }#endif/* We must pass -EL to the linker by default for little endian embedded   targets using linker scripts with a OUTPUT_FORMAT line.  Otherwise, the   linker will default to using big-endian output files.  The OUTPUT_FORMAT   line must be in the linker script, otherwise -EB/-EL will not work.  */#ifndef ENDIAN_SPEC#if TARGET_ENDIAN_DEFAULT == 0#define ENDIAN_SPEC "%{!EB:%{!meb:-EL}} %{EB|meb:-EB}"#else#define ENDIAN_SPEC "%{!EL:%{!mel:-EB}} %{EL|mel:-EL}"#endif#endif/* Support for a compile-time default CPU, et cetera.  The rules are:   --with-arch is ignored if -march is specified or a -mips is specified     (other than -mips16).   --with-tune is ignored if -mtune is specified.   --with-abi is ignored if -mabi is specified.   --with-float is ignored if -mhard-float or -msoft-float are     specified.   --with-divide is ignored if -mdivide-traps or -mdivide-breaks are     specified. */#define OPTION_DEFAULT_SPECS \  {"arch", "%{!march=*:%{mips16:-march=%(VALUE)}%{!mips*:-march=%(VALUE)}}" }, \  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \  {"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }, \  {"divide", "%{!mdivide-traps:%{!mdivide-breaks:-mdivide-%(VALUE)}}" }#define GENERATE_DIVIDE_TRAPS (TARGET_DIVIDE_TRAPS \                               && ISA_HAS_COND_TRAP)#define GENERATE_BRANCHLIKELY   (TARGET_BRANCHLIKELY                    \				 && !TARGET_SR71K                       \				 && !TARGET_MIPS16)/* Generate three-operand multiply instructions for SImode.  */#define GENERATE_MULT3_SI       ((TARGET_MIPS3900                       \                                  || TARGET_MIPS5400                    \                                  || TARGET_MIPS5500                    \                                  || TARGET_MIPS7000                    \                                  || TARGET_MIPS9000                    \				  || TARGET_MAD				\                                  || ISA_MIPS32	                        \                                  || ISA_MIPS32R2                       \                                  || ISA_MIPS64)                        \                                 && !TARGET_MIPS16)/* Generate three-operand multiply instructions for DImode.  */#define GENERATE_MULT3_DI       ((TARGET_MIPS3900)                      \				 && !TARGET_MIPS16)/* True if the ABI can only work with 64-bit integer registers.  We   generally allow ad-hoc variations for TARGET_SINGLE_FLOAT, but   otherwise floating-point registers must also be 64-bit.  */#define ABI_NEEDS_64BIT_REGS	(TARGET_NEWABI || mips_abi == ABI_O64)/* Likewise for 32-bit regs.  */#define ABI_NEEDS_32BIT_REGS	(mips_abi == ABI_32)/* True if symbols are 64 bits wide.  At present, n64 is the only   ABI for which this is true.  */#define ABI_HAS_64BIT_SYMBOLS	(mips_abi == ABI_64 && !TARGET_SYM32)/* ISA has instructions for managing 64 bit fp and gp regs (e.g. mips3).  */#define ISA_HAS_64BIT_REGS	(ISA_MIPS3				\				 || ISA_MIPS4				\                                 || ISA_MIPS64)/* ISA has branch likely instructions (e.g. mips2).  *//* Disable branchlikely for tx39 until compare rewrite.  They haven't   been generated up to this point.  */#define ISA_HAS_BRANCHLIKELY	(!ISA_MIPS1)/* ISA has the conditional move instructions introduced in mips4.  */#define ISA_HAS_CONDMOVE        ((ISA_MIPS4				\				  || ISA_MIPS32	                        \				  || ISA_MIPS32R2                       \				  || ISA_MIPS64)			\                                 && !TARGET_MIPS5500                    \				 && !TARGET_MIPS16)/* ISA has the mips4 FP condition code instructions: FP-compare to CC,   branch on CC, and move (both FP and non-FP) on CC.  */#define ISA_HAS_8CC		(ISA_MIPS4				\                         	 || ISA_MIPS32	                        \                         	 || ISA_MIPS32R2                        \				 || ISA_MIPS64)/* This is a catch all for other mips4 instructions: indexed load, the   FP madd and msub instructions, and the FP recip and recip sqrt   instructions.  */#define ISA_HAS_FP4             ((ISA_MIPS4				\				  || ISA_MIPS64)       			\ 				 && !TARGET_MIPS16)/* ISA has conditional trap instructions.  */#define ISA_HAS_COND_TRAP	(!ISA_MIPS1				\				 && !TARGET_MIPS16)/* ISA has integer multiply-accumulate instructions, madd and msub.  */#define ISA_HAS_MADD_MSUB       ((ISA_MIPS32				\				  || ISA_MIPS32R2			\				  || ISA_MIPS64				\				  ) && !TARGET_MIPS16)/* ISA has floating-point nmadd and nmsub instructions.  */#define ISA_HAS_NMADD_NMSUB	((ISA_MIPS4				\				  || ISA_MIPS64)       			\                                 && (!TARGET_MIPS5400 || TARGET_MAD)    \				 && ! TARGET_MIPS16)/* ISA has count leading zeroes/ones instruction (not implemented).  */#define ISA_HAS_CLZ_CLO         ((ISA_MIPS32				\                                  || ISA_MIPS32R2			\                                  || ISA_MIPS64				\                                 ) && !TARGET_MIPS16)/* ISA has double-word count leading zeroes/ones instruction (not   implemented).  */#define ISA_HAS_DCLZ_DCLO       (ISA_MIPS64				\				 && !TARGET_MIPS16)/* ISA has three operand multiply instructions that put   the high part in an accumulator: mulhi or mulhiu.  */#define ISA_HAS_MULHI           (TARGET_MIPS5400                        \                                 || TARGET_MIPS5500                     \                                 || TARGET_SR71K                        \                                 )/* ISA has three operand multiply instructions that   negates the result and puts the result in an accumulator.  */#define ISA_HAS_MULS            (TARGET_MIPS5400                        \                                 || TARGET_MIPS5500                     \                                 || TARGET_SR71K                        \                                 )/* ISA has three operand multiply instructions that subtracts the   result from a 4th operand and puts the result in an accumulator.  */#define ISA_HAS_MSAC            (TARGET_MIPS5400                        \                                 || TARGET_MIPS5500                     \                                 || TARGET_SR71K                        \                                 )/* ISA has three operand multiply instructions that  the result   from a 4th operand and puts the result in an accumulator.  */#define ISA_HAS_MACC            ((TARGET_MIPS4120 && !TARGET_MIPS16)	\                                 || (TARGET_MIPS4130 && !TARGET_MIPS16)	\                                 || TARGET_MIPS5400                     \                                 || TARGET_MIPS5500                     \                                 || TARGET_SR71K                        \                                 )/* ISA has NEC VR-style MACC, MACCHI, DMACC and DMACCHI instructions.  */#define ISA_HAS_MACCHI		(!TARGET_MIPS16				\				 && (TARGET_MIPS4120			\				     || TARGET_MIPS4130))/* ISA has 32-bit rotate right instruction.  */#define ISA_HAS_ROTR_SI         (!TARGET_MIPS16                         \                                 && (ISA_MIPS32R2                       \                                     || TARGET_MIPS5400                 \                                     || TARGET_MIPS5500                 \                                     || TARGET_SR71K                    \                                     ))/* ISA has 64-bit rotate right instruction.  */#define ISA_HAS_ROTR_DI         (TARGET_64BIT                           \                                 && !TARGET_MIPS16                      \                                 && (TARGET_MIPS5400                    \                                     || TARGET_MIPS5500                 \                                     || TARGET_SR71K                    \                                     ))/* ISA has data prefetch instructions.  This controls use of 'pref'.  */#define ISA_HAS_PREFETCH	((ISA_MIPS4				\				  || ISA_MIPS32				\				  || ISA_MIPS32R2			\				  || ISA_MIPS64)	       		\				 && !TARGET_MIPS16)/* ISA has data indexed prefetch instructions.  This controls use of   'prefx', along with TARGET_HARD_FLOAT and TARGET_DOUBLE_FLOAT.   (prefx is a cop1x instruction, so can only be used if FP is   enabled.)  */#define ISA_HAS_PREFETCHX       ((ISA_MIPS4				\				  || ISA_MIPS64)       			\ 				 && !TARGET_MIPS16)/* True if trunc.w.s and trunc.w.d are real (not synthetic)   instructions.  Both require TARGET_HARD_FLOAT, and trunc.w.d

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -