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

📄 ia64.h

📁 linux下编程用 编译软件
💻 H
📖 第 1 页 / 共 5 页
字号:
#define PR_REGNO_P(REGNO) ((REGNO) >= 256 && (REGNO) <= 319)#define BR_REGNO_P(REGNO) ((REGNO) >= 320 && (REGNO) <= 327)#define GENERAL_REGNO_P(REGNO) \  (GR_REGNO_P (REGNO) || (REGNO) == FRAME_POINTER_REGNUM)#define GR_REG(REGNO) ((REGNO) + 0)#define FR_REG(REGNO) ((REGNO) + 128)#define PR_REG(REGNO) ((REGNO) + 256)#define BR_REG(REGNO) ((REGNO) + 320)#define OUT_REG(REGNO) ((REGNO) + 120)#define IN_REG(REGNO) ((REGNO) + 112)#define LOC_REG(REGNO) ((REGNO) + 32)#define AR_CCV_REGNUM	329#define AR_UNAT_REGNUM  330#define AR_PFS_REGNUM	331#define AR_LC_REGNUM	332#define AR_EC_REGNUM	333#define IN_REGNO_P(REGNO) ((REGNO) >= IN_REG (0) && (REGNO) <= IN_REG (7))#define LOC_REGNO_P(REGNO) ((REGNO) >= LOC_REG (0) && (REGNO) <= LOC_REG (79))#define OUT_REGNO_P(REGNO) ((REGNO) >= OUT_REG (0) && (REGNO) <= OUT_REG (7))#define AR_M_REGNO_P(REGNO) ((REGNO) == AR_CCV_REGNUM \			     || (REGNO) == AR_UNAT_REGNUM)#define AR_I_REGNO_P(REGNO) ((REGNO) >= AR_PFS_REGNUM \			     && (REGNO) < FIRST_PSEUDO_REGISTER)#define AR_REGNO_P(REGNO) ((REGNO) >= AR_CCV_REGNUM \			   && (REGNO) < FIRST_PSEUDO_REGISTER)/* ??? Don't really need two sets of macros.  I like this one better because   it is less typing.  */#define R_GR(REGNO) GR_REG (REGNO)#define R_FR(REGNO) FR_REG (REGNO)#define R_PR(REGNO) PR_REG (REGNO)#define R_BR(REGNO) BR_REG (REGNO)/* An initializer that says which registers are used for fixed purposes all   throughout the compiled code and are therefore not available for general   allocation.   r0: constant 0   r1: global pointer (gp)   r12: stack pointer (sp)   r13: thread pointer (tp)   f0: constant 0.0   f1: constant 1.0   p0: constant true   fp: eliminable frame pointer *//* The last 16 stacked regs are reserved for the 8 input and 8 output   registers.  */#define FIXED_REGISTERS \{ /* General registers.  */				\  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  /* Floating-point registers.  */			\  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  /* Predicate registers.  */				\  1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  /* Branch registers.  */				\  0, 0, 0, 0, 0, 0, 0, 0,				\  /*FP CCV UNAT PFS LC EC */				\     1,  1,   1,  1, 0, 1				\ }/* Like `FIXED_REGISTERS' but has 1 for each register that is clobbered   (in general) by function calls as well as for fixed registers.  This   macro therefore identifies the registers that are not available for   general allocation of values that must live across function calls.  */#define CALL_USED_REGISTERS \{ /* General registers.  */				\  1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,	\  /* Floating-point registers.  */			\  1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  /* Predicate registers.  */				\  1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  /* Branch registers.  */				\  1, 0, 0, 0, 0, 0, 1, 1,				\  /*FP CCV UNAT PFS LC EC */				\     1,  1,   1,  1, 0, 1				\}/* Like `CALL_USED_REGISTERS' but used to overcome a historical   problem which makes CALL_USED_REGISTERS *always* include   all the FIXED_REGISTERS.  Until this problem has been   resolved this macro can be used to overcome this situation.   In particular, block_propagate() requires this list   be accurate, or we can remove registers which should be live.   This macro is used in regs_invalidated_by_call.  */#define CALL_REALLY_USED_REGISTERS \{ /* General registers.  */				\  0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,	\  /* Floating-point registers.  */			\  0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  /* Predicate registers.  */				\  0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	\  /* Branch registers.  */				\  1, 0, 0, 0, 0, 0, 1, 1,				\  /*FP CCV UNAT PFS LC EC */				\     0,  1,   0,  1, 0, 0				\}/* Define this macro if the target machine has register windows.  This C   expression returns the register number as seen by the called function   corresponding to the register number OUT as seen by the calling function.   Return OUT if register number OUT is not an outbound register.  */#define INCOMING_REGNO(OUT) \  ((unsigned) ((OUT) - OUT_REG (0)) < 8 ? IN_REG ((OUT) - OUT_REG (0)) : (OUT))/* Define this macro if the target machine has register windows.  This C   expression returns the register number as seen by the calling function   corresponding to the register number IN as seen by the called function.   Return IN if register number IN is not an inbound register.  */#define OUTGOING_REGNO(IN) \  ((unsigned) ((IN) - IN_REG (0)) < 8 ? OUT_REG ((IN) - IN_REG (0)) : (IN))/* Define this macro if the target machine has register windows.  This   C expression returns true if the register is call-saved but is in the   register window.  */#define LOCAL_REGNO(REGNO) \  (IN_REGNO_P (REGNO) || LOC_REGNO_P (REGNO))/* We define CCImode in ia64-modes.def so we need a selector.  */#define SELECT_CC_MODE(OP,X,Y)  CCmode/* Order of allocation of registers *//* If defined, an initializer for a vector of integers, containing the numbers   of hard registers in the order in which GCC should prefer to use them   (from most preferred to least).   If this macro is not defined, registers are used lowest numbered first (all   else being equal).   One use of this macro is on machines where the highest numbered registers   must always be saved and the save-multiple-registers instruction supports   only sequences of consecutive registers.  On such machines, define   `REG_ALLOC_ORDER' to be an initializer that lists the highest numbered   allocatable register first.  *//* ??? Should the GR return value registers come before or after the rest   of the caller-save GRs?  */#define REG_ALLOC_ORDER							   \{									   \  /* Caller-saved general registers.  */				   \  R_GR (14), R_GR (15), R_GR (16), R_GR (17),				   \  R_GR (18), R_GR (19), R_GR (20), R_GR (21), R_GR (22), R_GR (23),	   \  R_GR (24), R_GR (25), R_GR (26), R_GR (27), R_GR (28), R_GR (29),	   \  R_GR (30), R_GR (31),							   \  /* Output registers.  */						   \  R_GR (120), R_GR (121), R_GR (122), R_GR (123), R_GR (124), R_GR (125),  \  R_GR (126), R_GR (127),						   \  /* Caller-saved general registers, also used for return values.  */	   \  R_GR (8), R_GR (9), R_GR (10), R_GR (11),				   \  /* addl caller-saved general registers.  */				   \  R_GR (2), R_GR (3),							   \  /* Caller-saved FP registers.  */					   \  R_FR (6), R_FR (7),							   \  /* Caller-saved FP registers, used for parameters and return values.  */ \  R_FR (8), R_FR (9), R_FR (10), R_FR (11),				   \  R_FR (12), R_FR (13), R_FR (14), R_FR (15),				   \  /* Rotating caller-saved FP registers.  */				   \  R_FR (32), R_FR (33), R_FR (34), R_FR (35),				   \  R_FR (36), R_FR (37), R_FR (38), R_FR (39), R_FR (40), R_FR (41),	   \  R_FR (42), R_FR (43), R_FR (44), R_FR (45), R_FR (46), R_FR (47),	   \  R_FR (48), R_FR (49), R_FR (50), R_FR (51), R_FR (52), R_FR (53),	   \  R_FR (54), R_FR (55), R_FR (56), R_FR (57), R_FR (58), R_FR (59),	   \  R_FR (60), R_FR (61), R_FR (62), R_FR (63), R_FR (64), R_FR (65),	   \  R_FR (66), R_FR (67), R_FR (68), R_FR (69), R_FR (70), R_FR (71),	   \  R_FR (72), R_FR (73), R_FR (74), R_FR (75), R_FR (76), R_FR (77),	   \  R_FR (78), R_FR (79), R_FR (80), R_FR (81), R_FR (82), R_FR (83),	   \  R_FR (84), R_FR (85), R_FR (86), R_FR (87), R_FR (88), R_FR (89),	   \  R_FR (90), R_FR (91), R_FR (92), R_FR (93), R_FR (94), R_FR (95),	   \  R_FR (96), R_FR (97), R_FR (98), R_FR (99), R_FR (100), R_FR (101),	   \  R_FR (102), R_FR (103), R_FR (104), R_FR (105), R_FR (106), R_FR (107),  \  R_FR (108), R_FR (109), R_FR (110), R_FR (111), R_FR (112), R_FR (113),  \  R_FR (114), R_FR (115), R_FR (116), R_FR (117), R_FR (118), R_FR (119),  \  R_FR (120), R_FR (121), R_FR (122), R_FR (123), R_FR (124), R_FR (125),  \  R_FR (126), R_FR (127),						   \  /* Caller-saved predicate registers.  */				   \  R_PR (6), R_PR (7), R_PR (8), R_PR (9), R_PR (10), R_PR (11),		   \  R_PR (12), R_PR (13), R_PR (14), R_PR (15),				   \  /* Rotating caller-saved predicate registers.  */			   \  R_PR (16), R_PR (17),							   \  R_PR (18), R_PR (19), R_PR (20), R_PR (21), R_PR (22), R_PR (23),	   \  R_PR (24), R_PR (25), R_PR (26), R_PR (27), R_PR (28), R_PR (29),	   \  R_PR (30), R_PR (31), R_PR (32), R_PR (33), R_PR (34), R_PR (35),	   \  R_PR (36), R_PR (37), R_PR (38), R_PR (39), R_PR (40), R_PR (41),	   \  R_PR (42), R_PR (43), R_PR (44), R_PR (45), R_PR (46), R_PR (47),	   \  R_PR (48), R_PR (49), R_PR (50), R_PR (51), R_PR (52), R_PR (53),	   \  R_PR (54), R_PR (55), R_PR (56), R_PR (57), R_PR (58), R_PR (59),	   \  R_PR (60), R_PR (61), R_PR (62), R_PR (63),				   \  /* Caller-saved branch registers.  */					   \  R_BR (6), R_BR (7),							   \									   \  /* Stacked callee-saved general registers.  */			   \  R_GR (32), R_GR (33), R_GR (34), R_GR (35),				   \  R_GR (36), R_GR (37), R_GR (38), R_GR (39), R_GR (40), R_GR (41),	   \  R_GR (42), R_GR (43), R_GR (44), R_GR (45), R_GR (46), R_GR (47),	   \  R_GR (48), R_GR (49), R_GR (50), R_GR (51), R_GR (52), R_GR (53),	   \  R_GR (54), R_GR (55), R_GR (56), R_GR (57), R_GR (58), R_GR (59),	   \  R_GR (60), R_GR (61), R_GR (62), R_GR (63), R_GR (64), R_GR (65),	   \  R_GR (66), R_GR (67), R_GR (68), R_GR (69), R_GR (70), R_GR (71),	   \  R_GR (72), R_GR (73), R_GR (74), R_GR (75), R_GR (76), R_GR (77),	   \  R_GR (78), R_GR (79), R_GR (80), R_GR (81), R_GR (82), R_GR (83),	   \  R_GR (84), R_GR (85), R_GR (86), R_GR (87), R_GR (88), R_GR (89),	   \  R_GR (90), R_GR (91), R_GR (92), R_GR (93), R_GR (94), R_GR (95),	   \  R_GR (96), R_GR (97), R_GR (98), R_GR (99), R_GR (100), R_GR (101),	   \  R_GR (102), R_GR (103), R_GR (104), R_GR (105), R_GR (106), R_GR (107),  \  R_GR (108),								   \  /* Input registers.  */						   \  R_GR (112), R_GR (113), R_GR (114), R_GR (115), R_GR (116), R_GR (117),  \  R_GR (118), R_GR (119),						   \  /* Callee-saved general registers.  */				   \  R_GR (4), R_GR (5), R_GR (6), R_GR (7),				   \  /* Callee-saved FP registers.  */					   \  R_FR (2), R_FR (3), R_FR (4), R_FR (5), R_FR (16), R_FR (17),		   \  R_FR (18), R_FR (19), R_FR (20), R_FR (21), R_FR (22), R_FR (23),	   \  R_FR (24), R_FR (25), R_FR (26), R_FR (27), R_FR (28), R_FR (29),	   \  R_FR (30), R_FR (31),							   \  /* Callee-saved predicate registers.  */				   \  R_PR (1), R_PR (2), R_PR (3), R_PR (4), R_PR (5),			   \  /* Callee-saved branch registers.  */					   \  R_BR (1), R_BR (2), R_BR (3), R_BR (4), R_BR (5),			   \									   \  /* ??? Stacked registers reserved for fp, rp, and ar.pfs.  */		   \  R_GR (109), R_GR (110), R_GR (111),					   \									   \  /* Special general registers.  */					   \  R_GR (0), R_GR (1), R_GR (12), R_GR (13),				   \  /* Special FP registers.  */						   \  R_FR (0), R_FR (1),							   \  /* Special predicate registers.  */					   \  R_PR (0),								   \  /* Special branch registers.  */					   \  R_BR (0),								   \  /* Other fixed registers.  */						   \  FRAME_POINTER_REGNUM, 						   \  AR_CCV_REGNUM, AR_UNAT_REGNUM, AR_PFS_REGNUM, AR_LC_REGNUM,		   \  AR_EC_REGNUM		  						   \}/* How Values Fit in Registers *//* A C expression for the number of consecutive hard registers, starting at   register number REGNO, required to hold a value of mode MODE.  *//* ??? We say that BImode PR values require two registers.  This allows us to   easily store the normal and inverted values.  We use CCImode to indicate   a single predicate register.  */#define HARD_REGNO_NREGS(REGNO, MODE)					\  ((REGNO) == PR_REG (0) && (MODE) == DImode ? 64			\   : PR_REGNO_P (REGNO) && (MODE) == BImode ? 2				\   : PR_REGNO_P (REGNO) && (MODE) == CCImode ? 1			\   : FR_REGNO_P (REGNO) && (MODE) == XFmode ? 1				\   : FR_REGNO_P (REGNO) && (MODE) == XCmode ? 2				\   : (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)/* A C expression that is nonzero if it is permissible to store a value of mode   MODE in hard register number REGNO (or in several registers starting with   that one).  */#define HARD_REGNO_MODE_OK(REGNO, MODE)				\  (FR_REGNO_P (REGNO) ?						\     GET_MODE_CLASS (MODE) != MODE_CC &&			\

⌨️ 快捷键说明

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