comparison gcc/config/pa/pa32-regs.h @ 67:f6334be47118

update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Mar 2011 17:18:12 +0900
parents 77e2b8dfacca
children 04ced10e8804
comparison
equal deleted inserted replaced
65:65488c3d617d 67:f6334be47118
1 /* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 1 /* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2 2008 Free Software Foundation, Inc. 2 2008, 2010 Free Software Foundation, Inc.
3 3
4 This file is part of GCC. 4 This file is part of GCC.
5 5
6 GCC is free software; you can redistribute it and/or modify it under 6 GCC is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free 7 the terms of the GNU General Public License as published by the Free
41 differently: the left and right halves of registers are addressable 41 differently: the left and right halves of registers are addressable
42 as 32-bit registers. So, we will set things up like the 68k which 42 as 32-bit registers. So, we will set things up like the 68k which
43 has different fp units: define separate register sets for the 1.0 43 has different fp units: define separate register sets for the 1.0
44 and 1.1 fp units. */ 44 and 1.1 fp units. */
45 45
46 #define FIRST_PSEUDO_REGISTER 89 /* 32 general regs + 56 fp regs + 46 #define FIRST_PSEUDO_REGISTER 90 /* 32 general regs + 56 fp regs +
47 + 1 shift reg */ 47 + 1 shift reg + frame pointer */
48 48
49 /* 1 for registers that have pervasive standard uses 49 /* 1 for registers that have pervasive standard uses
50 and are not available for the register allocator. 50 and are not available for the register allocator.
51 51
52 On the HP-PA, these are: 52 On the HP-PA, these are:
94 0, 0, 0, 0, 0, 0, 0, 0, \ 94 0, 0, 0, 0, 0, 0, 0, 0, \
95 0, 0, 0, 0, 0, 0, 0, 0, \ 95 0, 0, 0, 0, 0, 0, 0, 0, \
96 0, 0, 0, 0, 0, 0, 0, 0, \ 96 0, 0, 0, 0, 0, 0, 0, 0, \
97 0, 0, 0, 0, 0, 0, 0, 0, \ 97 0, 0, 0, 0, 0, 0, 0, 0, \
98 0, 0, 0, 0, 0, 0, 0, 0, \ 98 0, 0, 0, 0, 0, 0, 0, 0, \
99 0} 99 /* shift register and soft frame pointer */ \
100 0, 1}
100 101
101 /* 1 for registers not available across function calls. 102 /* 1 for registers not available across function calls.
102 These must include the FIXED_REGISTERS and also any 103 These must include the FIXED_REGISTERS and also any
103 registers that can be used without being saved. 104 registers that can be used without being saved.
104 The latter must include the registers where values are returned 105 The latter must include the registers where values are returned
115 0, 0, 0, 0, 0, 0, 0, 0, \ 116 0, 0, 0, 0, 0, 0, 0, 0, \
116 0, 0, 0, 0, 0, 0, 0, 0, \ 117 0, 0, 0, 0, 0, 0, 0, 0, \
117 0, 0, 0, 0, 1, 1, 1, 1, \ 118 0, 0, 0, 0, 1, 1, 1, 1, \
118 1, 1, 1, 1, 1, 1, 1, 1, \ 119 1, 1, 1, 1, 1, 1, 1, 1, \
119 1, 1, 1, 1, 1, 1, 1, 1, \ 120 1, 1, 1, 1, 1, 1, 1, 1, \
120 1} 121 /* shift register and soft frame pointer */ \
121 122 1, 1}
122 #define CONDITIONAL_REGISTER_USAGE \
123 { \
124 int i; \
125 if (!TARGET_PA_11) \
126 { \
127 for (i = 56; i < 88; i++) \
128 fixed_regs[i] = call_used_regs[i] = 1; \
129 for (i = 33; i < 88; i += 2) \
130 fixed_regs[i] = call_used_regs[i] = 1; \
131 } \
132 if (TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT)\
133 { \
134 for (i = 32; i < 88; i++) \
135 fixed_regs[i] = call_used_regs[i] = 1; \
136 } \
137 if (flag_pic) \
138 fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \
139 }
140 123
141 /* Allocate the call used registers first. This should minimize 124 /* Allocate the call used registers first. This should minimize
142 the number of registers that need to be saved (as call used 125 the number of registers that need to be saved (as call used
143 registers will generally not be allocated across a call). 126 registers will generally not be allocated across a call).
144 127
170 65, 67, \ 153 65, 67, \
171 /* callee-saved general regs. */ \ 154 /* callee-saved general regs. */ \
172 3, 4, 5, 6, 7, 8, 9, 10, \ 155 3, 4, 5, 6, 7, 8, 9, 10, \
173 11, 12, 13, 14, 15, 16, 17, 18, \ 156 11, 12, 13, 14, 15, 16, 17, 18, \
174 /* special registers. */ \ 157 /* special registers. */ \
175 1, 30, 0, 88} 158 1, 30, 0, 88, 89}
176 159
177 160
178 /* Return number of consecutive hard regs needed starting at reg REGNO 161 /* Return number of consecutive hard regs needed starting at reg REGNO
179 to hold something of mode MODE. 162 to hold something of mode MODE.
180 This is ordinarily the length in words of a value of mode MODE 163 This is ordinarily the length in words of a value of mode MODE
302 is in no class. */ 285 is in no class. */
303 286
304 #define REG_CLASS_CONTENTS \ 287 #define REG_CLASS_CONTENTS \
305 {{0x00000000, 0x00000000, 0x00000000}, /* NO_REGS */ \ 288 {{0x00000000, 0x00000000, 0x00000000}, /* NO_REGS */ \
306 {0x00000002, 0x00000000, 0x00000000}, /* R1_REGS */ \ 289 {0x00000002, 0x00000000, 0x00000000}, /* R1_REGS */ \
307 {0xfffffffe, 0x00000000, 0x00000000}, /* GENERAL_REGS */ \ 290 {0xfffffffe, 0x00000000, 0x02000000}, /* GENERAL_REGS */ \
308 {0x00000000, 0xff000000, 0x00ffffff}, /* FPUPPER_REGS */ \ 291 {0x00000000, 0xff000000, 0x00ffffff}, /* FPUPPER_REGS */ \
309 {0x00000000, 0xffffffff, 0x00ffffff}, /* FP_REGS */ \ 292 {0x00000000, 0xffffffff, 0x00ffffff}, /* FP_REGS */ \
310 {0xfffffffe, 0xffffffff, 0x00ffffff}, /* GENERAL_OR_FP_REGS */ \ 293 {0xfffffffe, 0xffffffff, 0x02ffffff}, /* GENERAL_OR_FP_REGS */ \
311 {0x00000000, 0x00000000, 0x01000000}, /* SHIFT_REGS */ \ 294 {0x00000000, 0x00000000, 0x01000000}, /* SHIFT_REGS */ \
312 {0xfffffffe, 0xffffffff, 0x01ffffff}} /* ALL_REGS */ 295 {0xfffffffe, 0xffffffff, 0x03ffffff}} /* ALL_REGS */
313 296
314 /* The following macro defines cover classes for Integrated Register 297 /* The following macro defines cover classes for Integrated Register
315 Allocator. Cover classes is a set of non-intersected register 298 Allocator. Cover classes is a set of non-intersected register
316 classes covering all hard registers used for register allocation 299 classes covering all hard registers used for register allocation
317 purpose. Any move between two registers of a cover class should be 300 purpose. Any move between two registers of a cover class should be
334 or could index an array. */ 317 or could index an array. */
335 318
336 #define REGNO_REG_CLASS(REGNO) \ 319 #define REGNO_REG_CLASS(REGNO) \
337 ((REGNO) == 0 ? NO_REGS \ 320 ((REGNO) == 0 ? NO_REGS \
338 : (REGNO) == 1 ? R1_REGS \ 321 : (REGNO) == 1 ? R1_REGS \
339 : (REGNO) < 32 ? GENERAL_REGS \ 322 : (REGNO) < 32 || (REGNO) == 89 ? GENERAL_REGS \
340 : (REGNO) < 56 ? FP_REGS \ 323 : (REGNO) < 56 ? FP_REGS \
341 : (REGNO) < 88 ? FPUPPER_REGS \ 324 : (REGNO) < 88 ? FPUPPER_REGS \
342 : SHIFT_REGS) 325 : SHIFT_REGS)
343 326
344 /* Return the maximum number of consecutive registers 327 /* Return the maximum number of consecutive registers
368 "%fr12", "%fr12R", "%fr13", "%fr13R", "%fr14", "%fr14R", "%fr15", "%fr15R", \ 351 "%fr12", "%fr12R", "%fr13", "%fr13R", "%fr14", "%fr14R", "%fr15", "%fr15R", \
369 "%fr16", "%fr16R", "%fr17", "%fr17R", "%fr18", "%fr18R", "%fr19", "%fr19R", \ 352 "%fr16", "%fr16R", "%fr17", "%fr17R", "%fr18", "%fr18R", "%fr19", "%fr19R", \
370 "%fr20", "%fr20R", "%fr21", "%fr21R", "%fr22", "%fr22R", "%fr23", "%fr23R", \ 353 "%fr20", "%fr20R", "%fr21", "%fr21R", "%fr22", "%fr22R", "%fr23", "%fr23R", \
371 "%fr24", "%fr24R", "%fr25", "%fr25R", "%fr26", "%fr26R", "%fr27", "%fr27R", \ 354 "%fr24", "%fr24R", "%fr25", "%fr25R", "%fr26", "%fr26R", "%fr27", "%fr27R", \
372 "%fr28", "%fr28R", "%fr29", "%fr29R", "%fr30", "%fr30R", "%fr31", "%fr31R", \ 355 "%fr28", "%fr28R", "%fr29", "%fr29R", "%fr30", "%fr30R", "%fr31", "%fr31R", \
373 "SAR"} 356 "SAR", "sfp"}
374 357
375 #define ADDITIONAL_REGISTER_NAMES \ 358 #define ADDITIONAL_REGISTER_NAMES \
376 {{"%fr4L",32}, {"%fr5L",34}, {"%fr6L",36}, {"%fr7L",38}, \ 359 {{"%fr4L",32}, {"%fr5L",34}, {"%fr6L",36}, {"%fr7L",38}, \
377 {"%fr8L",40}, {"%fr9L",42}, {"%fr10L",44}, {"%fr11L",46}, \ 360 {"%fr8L",40}, {"%fr9L",42}, {"%fr10L",44}, {"%fr11L",46}, \
378 {"%fr12L",48}, {"%fr13L",50}, {"%fr14L",52}, {"%fr15L",54}, \ 361 {"%fr12L",48}, {"%fr13L",50}, {"%fr14L",52}, {"%fr15L",54}, \