Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:mickey:20140505134923

Diff

Diff from 1.19 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/pcc/pcc/arch/hppa/macdefs.h

Annotated File View

mickey
1.19
1 /*      $Id: macdefs.h,v 1.19 2014/05/05 13:49:23 mickey Exp $  */
mickey
1.1
2
3 /*
4  * Copyright (c) 2007 Michael Shalayeff
5  * Copyright (c) 2003 Anders Magnusson (ragge@ludd.luth.se).
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. The name of the author may not be used to endorse or promote products
17  *    derived from this software without specific prior written permission
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 /*
32  * Convert (multi-)character constant to integer.
33  */
34 #define makecc(val,i)   (lastcon = (lastcon<<8)|((val<<24)>>24))
35
36 #define ARGINIT         (32*8)  /* bits below fp where args start */
37 #define AUTOINIT        (4*8)   /* bits above fp where locals start */
38
39 /*
40  * storage sizes
41  */
42 #define SZCHAR          8
43 #define SZBOOL          8
44 #define SZINT           32
45 #define SZFLOAT         32
46 #define SZDOUBLE        64
47 #define SZLDOUBLE       64      /* or later 128 */
48 #define SZLONG          32
49 #define SZSHORT         16
50 #define SZLONGLONG      64
51 #define SZPOINT(t)      32
52
53 /*
54  * alignment requirements
55  */
56 #define ALCHAR          8
57 #define ALBOOL          8
58 #define ALINT           32
59 #define ALFLOAT         32
60 #define ALDOUBLE        64
61 #define ALLDOUBLE       64      /* 128 later */
62 #define ALLONG          32
mickey
1.11
63 #define ALLONGLONG      32
mickey
1.1
64 #define ALSHORT         16
65 #define ALPOINT         32
mickey
1.11
66 #define ALSTRUCT        32
mickey
1.1
67 #define ALSTACK         64
68
69 /*
70  * type value limits
71  */
72 #define MIN_CHAR        -128
73 #define MAX_CHAR        127
74 #define MAX_UCHAR       255
75 #define MIN_SHORT       -32768
76 #define MAX_SHORT       32767
77 #define MAX_USHORT      65535
78 #define MIN_INT         (-0x7fffffff-1)
79 #define MAX_INT         0x7fffffff
80 #define MAX_UNSIGNED    0xffffffff
81 #define MIN_LONG        MIN_INT
82 #define MAX_LONG        MAX_INT
83 #define MAX_ULONG       MAX_UNSIGNED
84 #define MIN_LONGLONG    (-0x7fffffffffffffffLL-1)
85 #define MAX_LONGLONG    0x7fffffffffffffffLL
86 #define MAX_ULONGLONG   0xffffffffffffffffULL
87
88 #undef  CHAR_UNSIGNED
89 #define BOOL_TYPE       CHAR
90
91 typedef long long CONSZ;
92 typedef unsigned long long U_CONSZ;
93 typedef long long OFFSZ;
94
95 #define CONFMT  "%lld"          /* format for printing constants */
96 #define LABFMT  ".L%d"          /* format for printing labels */
97 #define STABLBL ".LL%d"         /* format for stab (debugging) labels */
98
99 #undef  BACKAUTO        /* stack grows upwards */
100 #undef  BACKTEMP        /* stack grows upwards */
101
102 #define FIELDOPS        /* have bit field ops */
mickey
1.19
103 #define TARGET_ENDIAN   TARGET_BE
104 #define TARGET_FLT_EVAL_METHOD  0       /* all as their type */
mickey
1.1
105
106 #define BYTEOFF(x)      ((x)&03)
107 #define wdal(k)         (BYTEOFF(k)==0)
108 #define BITOOR(x)       (x)     /* bit offset to oreg offset XXX die! */
109
110 #define STOARG(p)
111 #define STOFARG(p)
112 #define STOSTARG(p)
113
mickey
1.9
114 #define szty(t) (((t) == DOUBLE || (t) == LONGLONG || (t) == ULONGLONG) ? 2 : \
115             (t) == LDOUBLE ? 2 : 1)
mickey
1.1
116
mickey
1.9
117 #define R0      0
118 #define R1      1
119 #define RP      2
120 #define FP      3
121 #define R4      4
122 #define R5      5
123 #define R6      6
124 #define R7      7
125 #define R8      8
126 #define R9      9
127 #define R10     10
128 #define R11     11
129 #define R12     12
130 #define R13     13
131 #define R14     14
132 #define R15     15
133 #define R16     16
134 #define R17     17
135 #define R18     18
136 #define T4      19
137 #define T3      20
138 #define T2      21
139 #define T1      22
140 #define ARG3    23
141 #define ARG2    24
142 #define ARG1    25
143 #define ARG0    26
144 #define DP      27
145 #define RET0    28
146 #define RET1    29
147 #define SP      30
148 #define R31     31
mickey
1.1
149
150 /* double regs overlay */
mickey
1.9
151 #define RD0     32      /* r0:r0 */
152 #define RD1     33      /* r1:r31 */
153 #define RD2     34      /* r1:t4 */
154 #define RD3     35      /* r1:t3 */
155 #define RD4     36      /* r1:t2 */
156 #define RD5     37      /* r1:t1 */
157 #define RD6     38      /* r31:t4 */
158 #define RD7     39      /* r31:t3 */
159 #define RD8     40      /* r31:t2 */
160 #define RD9     41      /* r31:t1 */
161 #define RD10    42      /* r4:r18 */
162 #define RD11    43      /* r5:r4 */
163 #define RD12    44      /* r6:r5 */
164 #define RD13    45      /* r7:r6 */
165 #define RD14    46      /* r8:r7 */
166 #define RD15    47      /* r9:r8 */
167 #define RD16    48      /* r10:r9 */
168 #define RD17    49      /* r11:r10 */
169 #define RD18    50      /* r12:r11 */
170 #define RD19    51      /* r13:r12 */
171 #define RD20    52      /* r14:r13 */
172 #define RD21    53      /* r15:r14 */
173 #define RD22    54      /* r16:r15 */
174 #define RD23    55      /* r17:r16 */
175 #define RD24    56      /* r18:r17 */
176 #define TD4     57      /* t1:t4 */
177 #define TD3     58      /* t4:t3 */
178 #define TD2     59      /* t3:t2 */
179 #define TD1     60      /* t2:t1 */
180 #define AD2     61      /* arg3:arg2 */
181 #define AD1     62      /* arg1:arg0 */
182 #define RETD0   63      /* ret1:ret0 */
mickey
1.1
183
184 /* FPU regs */
mickey
1.9
185 #define FR0     64
186 #define FR4     65
187 #define FR5     66
188 #define FR6     67
189 #define FR7     68
190 #define FR8     69
191 #define FR9     70
192 #define FR10    71
193 #define FR11    72
194 #define FR12    73
195 #define FR13    74
196 #define FR14    75
197 #define FR15    76
198 #define FR16    77
199 #define FR17    78
200 #define FR18    79
201 #define FR19    80
202 #define FR20    81
203 #define FR21    82
204 #define FR22    83
205 #define FR23    84
206 #define FR24    85
207 #define FR25    86
208 #define FR26    87
209 #define FR27    88
210 #define FR28    89
211 #define FR29    90
212 #define FR30    91
213 #define FR31    92
214
215 #define FR0L    93
216 #define FR0R    94
217 #define FR4L    95
218 #define FR4R    96
219 #define FR5L    97
220 #define FR5R    98
221 #define FR6L    99
222 #define FR6R    100
223 #define FR7L    101
224 #define FR7R    102
225 #define FR8L    103
226 #define FR8R    104
227 #define FR9L    105
228 #define FR9R    106
229 #define FR10L   107
230 #define FR10R   108
231 #define FR11L   109
232 #define FR11R   110
233 #define FR12L   111
234 #define FR12R   112
235 #define FR13L   113
236 #define FR13R   114
237 #define FR14L   115
238 #define FR14R   116
239 #define FR15L   117
240 #define FR15R   118
241 #define FR16L   119
242 #define FR16R   120
243 #define FR17L   121
244 #define FR17R   122
245 #define FR18L   123
246 #define FR18R   124
mickey
1.1
247 #ifdef __hppa64__
mickey
1.9
248 #define FR19L   125
249 #define FR19R   126
250 #define FR20L   127
251 #define FR20R   128
252 #define FR21L   129
253 #define FR21R   130
254 #define FR22L   131
255 #define FR22R   132
256 #define FR23L   133
257 #define FR23R   134
258 #define FR24L   135
259 #define FR24R   136
260 #define FR25L   137
261 #define FR25R   138
262 #define FR26L   139
263 #define FR26R   140
264 #define FR27L   141
265 #define FR27R   142
266 #define FR28L   143
267 #define FR28R   144
268 #define FR29L   145
269 #define FR29R   146
270 #define FR30L   147
271 #define FR30R   148
272 #define FR31L   149
273 #define FR31R   150
mickey
1.1
274
mickey
1.9
275 #define MAXREGS 151
mickey
1.1
276 #else
mickey
1.9
277 #define MAXREGS 125
mickey
1.1
278 #endif
279
280 #define RSTATUS \
mickey
1.9
281         0SAREG|TEMPREG00SAREG|PERMREGSAREG|PERMREG,           \
mickey
1.1
282         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
283         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
284         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
285         SAREG|PERMREG,                                                  \
286         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
287         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
288         0SAREG|TEMPREGSAREG|TEMPREG0SAREG|TEMPREG,              \
289         /* double overlays */                                           \
mickey
1.9
290         0,                                                              \
291         SBREGSBREGSBREGSBREGSBREGSBREGSBREGSBREG,         \
292         SBREGSBREGSBREGSBREGSBREGSBREGSBREGSBREG,         \
293         SBREGSBREGSBREGSBREGSBREGSBREGSBREGSBREG,         \
mickey
1.1
294         SBREGSBREGSBREGSBREGSBREGSBREGSBREG,                \
295         /* double-precision floats */                                   \
296         0,                                                              \
297         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
298         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
299         SDREG|PERMREGSDREG|PERMREGSDREG|PERMREGSDREG|PERMREG,     \
300         SDREG|PERMREGSDREG|PERMREGSDREG|PERMREGSDREG|PERMREG,     \
301         SDREG|PERMREGSDREG|PERMREG,                                   \
302         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
303         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
304         SDREG|TEMPREGSDREG|TEMPREG,                                   \
305         /* single-precision floats */                                   \
mickey
1.9
306         00,                                                           \
307         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
mickey
1.1
308         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
309         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
mickey
1.9
310         SCREGSCREGSCREGSCREGSCREGSCREG,
mickey
1.1
311 #ifdef __hppa64__
mickey
1.9
312         SCREGSCREG,           \
mickey
1.1
313         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
314         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
mickey
1.9
315         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,
mickey
1.1
316 #endif
317
318 #define ROVERLAP \
319         { -1 },                         \
mickey
1.9
320         { RD1RD2RD3RD4RD5, -1 },\
321         { -1 }, { -1 },                 \
322         { RD10RD11, -1 },             \
323         { RD11RD12, -1 },             \
324         { RD12RD13, -1 },             \
325         { RD13RD14, -1 },             \
326         { RD14RD15, -1 },             \
327         { RD15RD16, -1 },             \
328         { RD16RD17, -1 },             \
329         { RD17RD18, -1 },             \
330         { RD18RD19, -1 },             \
331         { RD19RD20, -1 },             \
332         { RD20RD21, -1 },             \
333         { RD21RD22, -1 },             \
334         { RD22RD23, -1 },             \
335         { RD23RD24, -1 },             \
336         { RD24RD10, -1 },             \
337         { TD1TD4, -1 },               \
338         { TD3TD2, -1 },               \
339         { TD1TD2, -1 },               \
340         { TD1TD4, -1 },               \
mickey
1.1
341         { AD2, -1 }, { AD2, -1 },       \
342         { AD1, -1 }, { AD1, -1 },       \
343         { -1 },                         \
344         { RETD0, -1 }, { RETD0, -1 },   \
mickey
1.9
345         { -1 },                         \
346         { RD1RD5RD6RD7RD8, -1 },\
347         { -1 },                         \
mickey
1.1
348         { R1R31, -1 },                \
mickey
1.9
349         { R1T4, -1 },                 \
350         { R1T3, -1 },                 \
351         { R1T2, -1 },                 \
352         { R1T1, -1 },                 \
353         { R31T4, -1 },                \
354         { R31T3, -1 },                \
355         { R31T2, -1 },                \
356         { R31T1, -1 },                \
357         { R4R18, -1 },                \
358         { R5R4, -1 },                 \
359         { R6R5, -1 },                 \
360         { R7R6, -1 },                 \
361         { R8R7, -1 },                 \
362         { R9R8, -1 },                 \
363         { R10R9, -1 },                \
364         { R11R10, -1 },               \
365         { R12R11, -1 },               \
366         { R13R12, -1 },               \
mickey
1.1
367         { R14R15, -1 },               \
mickey
1.9
368         { R15R14, -1 },               \
369         { R16R15, -1 },               \
370         { R17R16, -1 },               \
371         { R18R17, -1 },               \
372         { T1T4, -1 },                 \
mickey
1.1
373         { T4T3, -1 },                 \
mickey
1.9
374         { T3T2, -1 },                 \
mickey
1.1
375         { T2T1, -1 },                 \
376         { ARG3ARG2, -1 },             \
377         { ARG1ARG0, -1 },             \
378         { RET1RET0, -1 },             \
379         { -1 },                         \
380         { FR4LFR4R, -1 },             \
381         { FR5LFR5R, -1 },             \
382         { FR6LFR6R, -1 },             \
383         { FR7LFR7R, -1 },             \
384         { FR8LFR8R, -1 },             \
385         { FR9LFR9R, -1 },             \
386         { FR10LFR10R, -1 },           \
387         { FR11LFR11R, -1 },           \
388         { FR12LFR12R, -1 },           \
389         { FR13LFR13R, -1 },           \
390         { FR14LFR14R, -1 },           \
391         { FR15LFR15R, -1 },           \
392         { FR16LFR16R, -1 },           \
393         { FR17LFR17R, -1 },           \
mickey
1.9
394         { FR18LFR18R, -1 },           \
mickey
1.1
395         { -1 },                         \
396         { -1 },                         \
397         { -1 },                         \
398         { -1 },                         \
399         { -1 },                         \
400         { -1 },                         \
401         { -1 },                         \
402         { -1 },                         \
403         { -1 },                         \
404         { -1 },                         \
405         { -1 },                         \
406         { -1 },                         \
407         { -1 },                         \
408         { -1 }, { -1 },                 \
409         { FR4, -1 }, { FR4, -1 },       \
410         { FR5, -1 }, { FR5, -1 },       \
411         { FR6, -1 }, { FR6, -1 },       \
412         { FR7, -1 }, { FR7, -1 },       \
413         { FR8, -1 }, { FR8, -1 },       \
414         { FR9, -1 }, { FR9, -1 },       \
415         { FR10, -1 }, { FR10, -1 },     \
416         { FR11, -1 }, { FR11, -1 },     \
417         { FR12, -1 }, { FR12, -1 },     \
418         { FR13, -1 }, { FR13, -1 },     \
419         { FR14, -1 }, { FR14, -1 },     \
420         { FR15, -1 }, { FR15, -1 },     \
421         { FR16, -1 }, { FR16, -1 },     \
mickey
1.9
422         { FR17, -1 }, { FR17, -1 },     \
423         { FR18, -1 }, { FR18, -1 },
mickey
1.1
424 #ifdef __hppa64__
425         { FR19, -1 }, { FR19, -1 },     \
426         { FR20, -1 }, { FR20, -1 },     \
427         { FR21, -1 }, { FR21, -1 },     \
428         { FR22, -1 }, { FR22, -1 },     \
429         { FR23, -1 }, { FR23, -1 },     \
430         { FR24, -1 }, { FR24, -1 },     \
431         { FR25, -1 }, { FR25, -1 },     \
432         { FR26, -1 }, { FR26, -1 },     \
433         { FR27, -1 }, { FR27, -1 },     \
434         { FR28, -1 }, { FR28, -1 },     \
435         { FR29, -1 }, { FR29, -1 },     \
436         { FR30, -1 }, { FR30, -1 },     \
437         { FR31, -1 }, { FR31, -1 },
438 #endif
439
440 #define PCLASS(p)       \
441         (p->n_type == LONGLONG || p->n_type == ULONGLONG ? SBREG : \
442         (p->n_type == FLOAT ? SCREG : \
443         (p->n_type == DOUBLE || p->n_type == LDOUBLE ? SDREG : SAREG)))
444
445 #define NUMCLASS        4       /* highest number of reg classes used */
446
447 int COLORMAP(int cint *r);
mickey
1.9
448 #define PERMTYPE(x) ((x) < 32? INT : ((x) < 64? LONGLONG : ((x) < 93? LDOUBLE : FLOAT)))
449 #define GCLASS(x) ((x) < 32? CLASSA : ((x) < 64? CLASSB : ((x) < 93? CLASSD : CLASSC)))
mickey
1.1
450 #define DECRA(x,y)      (((x) >> (y*8)) & 255)  /* decode encoded regs */
451 #define ENCRD(x)        (x)                     /* Encode dest reg in n_reg */
452 #define ENCRA1(x)       ((x) << 8)              /* A1 */
453 #define ENCRA2(x)       ((x) << 16)             /* A2 */
454 #define ENCRA(x,y)      ((x) << (8+y*8))        /* encode regs in int */
455 #define RETREG(x)       (x == LONGLONG || x == ULONGLONG ? RETD0 : \
456                          x == FLOATFR4L : \
457                          x == DOUBLE || x == LDOUBLE ? FR4 : RET0)
458
459 #define FPREG   FP      /* frame pointer */
460 #define STKREG  SP      /* stack pointer */
461
mickey
1.10
462 #define MYREADER(p)     myreader(p)
463 #define MYCANON(p)      mycanon(p)
464 #define MYOPTIM
465
mickey
1.1
466 #define SFUNCALL        (MAXSPECIAL+1)  /* struct assign after function call */
mickey
1.13
467 #define SPCNHI          (MAXSPECIAL+2)  /* high 21bits constant */
468 #define SPCON           (MAXSPECIAL+3)  /* smaller constant */
469 #define SPICON          (MAXSPECIAL+4)  /* even smaller constant */
470 #define SPCNHW          (MAXSPECIAL+5)  /* LL const w/ 0 in low word */
471 #define SPCNLW          (MAXSPECIAL+6)  /* LL const w/ 0 in high word */
472 #define SPIMM           (MAXSPECIAL+7)  /* immidiate const for depi/comib */
473 #define SPNAME          (MAXSPECIAL+8)  /* ext symbol reference load/store */
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-10-31 23:59 +0100