Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:mickey:20081122233101

Diff

Diff from 1.13 to:

Annotations

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

Annotated File View

mickey
1.1
1 /*      $OpenBSD$       */
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 #define WCHAR_TYPE      INT
91 #define ENUMSIZE(high,low)      INT
92
93 typedef long long CONSZ;
94 typedef unsigned long long U_CONSZ;
95 typedef long long OFFSZ;
96
97 #define CONFMT  "%lld"          /* format for printing constants */
98 #define LABFMT  ".L%d"          /* format for printing labels */
99 #define STABLBL ".LL%d"         /* format for stab (debugging) labels */
100
101 #undef  BACKAUTO        /* stack grows upwards */
102 #undef  BACKTEMP        /* stack grows upwards */
103
104 #define FIELDOPS        /* have bit field ops */
105 #define LTORBYTES       /* big endian */
106
107 #define BYTEOFF(x)      ((x)&03)
108 #define wdal(k)         (BYTEOFF(k)==0)
109 #define BITOOR(x)       (x)     /* bit offset to oreg offset XXX die! */
110
111 #define STOARG(p)
112 #define STOFARG(p)
113 #define STOSTARG(p)
114
mickey
1.9
115 #define szty(t) (((t) == DOUBLE || (t) == LONGLONG || (t) == ULONGLONG) ? 2 : \
116             (t) == LDOUBLE ? 2 : 1)
mickey
1.1
117
mickey
1.9
118 #define R0      0
119 #define R1      1
120 #define RP      2
121 #define FP      3
122 #define R4      4
123 #define R5      5
124 #define R6      6
125 #define R7      7
126 #define R8      8
127 #define R9      9
128 #define R10     10
129 #define R11     11
130 #define R12     12
131 #define R13     13
132 #define R14     14
133 #define R15     15
134 #define R16     16
135 #define R17     17
136 #define R18     18
137 #define T4      19
138 #define T3      20
139 #define T2      21
140 #define T1      22
141 #define ARG3    23
142 #define ARG2    24
143 #define ARG1    25
144 #define ARG0    26
145 #define DP      27
146 #define RET0    28
147 #define RET1    29
148 #define SP      30
149 #define R31     31
mickey
1.1
150
151 /* double regs overlay */
mickey
1.9
152 #define RD0     32      /* r0:r0 */
153 #define RD1     33      /* r1:r31 */
154 #define RD2     34      /* r1:t4 */
155 #define RD3     35      /* r1:t3 */
156 #define RD4     36      /* r1:t2 */
157 #define RD5     37      /* r1:t1 */
158 #define RD6     38      /* r31:t4 */
159 #define RD7     39      /* r31:t3 */
160 #define RD8     40      /* r31:t2 */
161 #define RD9     41      /* r31:t1 */
162 #define RD10    42      /* r4:r18 */
163 #define RD11    43      /* r5:r4 */
164 #define RD12    44      /* r6:r5 */
165 #define RD13    45      /* r7:r6 */
166 #define RD14    46      /* r8:r7 */
167 #define RD15    47      /* r9:r8 */
168 #define RD16    48      /* r10:r9 */
169 #define RD17    49      /* r11:r10 */
170 #define RD18    50      /* r12:r11 */
171 #define RD19    51      /* r13:r12 */
172 #define RD20    52      /* r14:r13 */
173 #define RD21    53      /* r15:r14 */
174 #define RD22    54      /* r16:r15 */
175 #define RD23    55      /* r17:r16 */
176 #define RD24    56      /* r18:r17 */
177 #define TD4     57      /* t1:t4 */
178 #define TD3     58      /* t4:t3 */
179 #define TD2     59      /* t3:t2 */
180 #define TD1     60      /* t2:t1 */
181 #define AD2     61      /* arg3:arg2 */
182 #define AD1     62      /* arg1:arg0 */
183 #define RETD0   63      /* ret1:ret0 */
mickey
1.1
184
185 /* FPU regs */
mickey
1.9
186 #define FR0     64
187 #define FR4     65
188 #define FR5     66
189 #define FR6     67
190 #define FR7     68
191 #define FR8     69
192 #define FR9     70
193 #define FR10    71
194 #define FR11    72
195 #define FR12    73
196 #define FR13    74
197 #define FR14    75
198 #define FR15    76
199 #define FR16    77
200 #define FR17    78
201 #define FR18    79
202 #define FR19    80
203 #define FR20    81
204 #define FR21    82
205 #define FR22    83
206 #define FR23    84
207 #define FR24    85
208 #define FR25    86
209 #define FR26    87
210 #define FR27    88
211 #define FR28    89
212 #define FR29    90
213 #define FR30    91
214 #define FR31    92
215
216 #define FR0L    93
217 #define FR0R    94
218 #define FR4L    95
219 #define FR4R    96
220 #define FR5L    97
221 #define FR5R    98
222 #define FR6L    99
223 #define FR6R    100
224 #define FR7L    101
225 #define FR7R    102
226 #define FR8L    103
227 #define FR8R    104
228 #define FR9L    105
229 #define FR9R    106
230 #define FR10L   107
231 #define FR10R   108
232 #define FR11L   109
233 #define FR11R   110
234 #define FR12L   111
235 #define FR12R   112
236 #define FR13L   113
237 #define FR13R   114
238 #define FR14L   115
239 #define FR14R   116
240 #define FR15L   117
241 #define FR15R   118
242 #define FR16L   119
243 #define FR16R   120
244 #define FR17L   121
245 #define FR17R   122
246 #define FR18L   123
247 #define FR18R   124
mickey
1.1
248 #ifdef __hppa64__
mickey
1.9
249 #define FR19L   125
250 #define FR19R   126
251 #define FR20L   127
252 #define FR20R   128
253 #define FR21L   129
254 #define FR21R   130
255 #define FR22L   131
256 #define FR22R   132
257 #define FR23L   133
258 #define FR23R   134
259 #define FR24L   135
260 #define FR24R   136
261 #define FR25L   137
262 #define FR25R   138
263 #define FR26L   139
264 #define FR26R   140
265 #define FR27L   141
266 #define FR27R   142
267 #define FR28L   143
268 #define FR28R   144
269 #define FR29L   145
270 #define FR29R   146
271 #define FR30L   147
272 #define FR30R   148
273 #define FR31L   149
274 #define FR31R   150
mickey
1.1
275
mickey
1.9
276 #define MAXREGS 151
mickey
1.1
277 #else
mickey
1.9
278 #define MAXREGS 125
mickey
1.1
279 #endif
280
281 #define RSTATUS \
mickey
1.9
282         0SAREG|TEMPREG00SAREG|PERMREGSAREG|PERMREG,           \
mickey
1.1
283         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
284         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
285         SAREG|PERMREGSAREG|PERMREGSAREG|PERMREGSAREG|PERMREG,     \
286         SAREG|PERMREG,                                                  \
287         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
288         SAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREGSAREG|TEMPREG,     \
289         0SAREG|TEMPREGSAREG|TEMPREG0SAREG|TEMPREG,              \
290         /* double overlays */                                           \
mickey
1.9
291         0,                                                              \
292         SBREGSBREGSBREGSBREGSBREGSBREGSBREGSBREG,         \
293         SBREGSBREGSBREGSBREGSBREGSBREGSBREGSBREG,         \
294         SBREGSBREGSBREGSBREGSBREGSBREGSBREGSBREG,         \
mickey
1.1
295         SBREGSBREGSBREGSBREGSBREGSBREGSBREG,                \
296         /* double-precision floats */                                   \
297         0,                                                              \
298         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
299         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
300         SDREG|PERMREGSDREG|PERMREGSDREG|PERMREGSDREG|PERMREG,     \
301         SDREG|PERMREGSDREG|PERMREGSDREG|PERMREGSDREG|PERMREG,     \
302         SDREG|PERMREGSDREG|PERMREG,                                   \
303         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
304         SDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREGSDREG|TEMPREG,     \
305         SDREG|TEMPREGSDREG|TEMPREG,                                   \
306         /* single-precision floats */                                   \
mickey
1.9
307         00,                                                           \
308         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
mickey
1.1
309         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
310         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
mickey
1.9
311         SCREGSCREGSCREGSCREGSCREGSCREG,
mickey
1.1
312 #ifdef __hppa64__
mickey
1.9
313         SCREGSCREG,           \
mickey
1.1
314         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
315         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,         \
mickey
1.9
316         SCREGSCREGSCREGSCREGSCREGSCREGSCREGSCREG,
mickey
1.1
317 #endif
318
319 #define ROVERLAP \
320         { -1 },                         \
mickey
1.9
321         { RD1RD2RD3RD4RD5, -1 },\
322         { -1 }, { -1 },                 \
323         { RD10RD11, -1 },             \
324         { RD11RD12, -1 },             \
325         { RD12RD13, -1 },             \
326         { RD13RD14, -1 },             \
327         { RD14RD15, -1 },             \
328         { RD15RD16, -1 },             \
329         { RD16RD17, -1 },             \
330         { RD17RD18, -1 },             \
331         { RD18RD19, -1 },             \
332         { RD19RD20, -1 },             \
333         { RD20RD21, -1 },             \
334         { RD21RD22, -1 },             \
335         { RD22RD23, -1 },             \
336         { RD23RD24, -1 },             \
337         { RD24RD10, -1 },             \
338         { TD1TD4, -1 },               \
339         { TD3TD2, -1 },               \
340         { TD1TD2, -1 },               \
341         { TD1TD4, -1 },               \
mickey
1.1
342         { AD2, -1 }, { AD2, -1 },       \
343         { AD1, -1 }, { AD1, -1 },       \
344         { -1 },                         \
345         { RETD0, -1 }, { RETD0, -1 },   \
mickey
1.9
346         { -1 },                         \
347         { RD1RD5RD6RD7RD8, -1 },\
348         { -1 },                         \
mickey
1.1
349         { R1R31, -1 },                \
mickey
1.9
350         { R1T4, -1 },                 \
351         { R1T3, -1 },                 \
352         { R1T2, -1 },                 \
353         { R1T1, -1 },                 \
354         { R31T4, -1 },                \
355         { R31T3, -1 },                \
356         { R31T2, -1 },                \
357         { R31T1, -1 },                \
358         { R4R18, -1 },                \
359         { R5R4, -1 },                 \
360         { R6R5, -1 },                 \
361         { R7R6, -1 },                 \
362         { R8R7, -1 },                 \
363         { R9R8, -1 },                 \
364         { R10R9, -1 },                \
365         { R11R10, -1 },               \
366         { R12R11, -1 },               \
367         { R13R12, -1 },               \
mickey
1.1
368         { R14R15, -1 },               \
mickey
1.9
369         { R15R14, -1 },               \
370         { R16R15, -1 },               \
371         { R17R16, -1 },               \
372         { R18R17, -1 },               \
373         { T1T4, -1 },                 \
mickey
1.1
374         { T4T3, -1 },                 \
mickey
1.9
375         { T3T2, -1 },                 \
mickey
1.1
376         { T2T1, -1 },                 \
377         { ARG3ARG2, -1 },             \
378         { ARG1ARG0, -1 },             \
379         { RET1RET0, -1 },             \
380         { -1 },                         \
381         { FR4LFR4R, -1 },             \
382         { FR5LFR5R, -1 },             \
383         { FR6LFR6R, -1 },             \
384         { FR7LFR7R, -1 },             \
385         { FR8LFR8R, -1 },             \
386         { FR9LFR9R, -1 },             \
387         { FR10LFR10R, -1 },           \
388         { FR11LFR11R, -1 },           \
389         { FR12LFR12R, -1 },           \
390         { FR13LFR13R, -1 },           \
391         { FR14LFR14R, -1 },           \
392         { FR15LFR15R, -1 },           \
393         { FR16LFR16R, -1 },           \
394         { FR17LFR17R, -1 },           \
mickey
1.9
395         { FR18LFR18R, -1 },           \
mickey
1.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 },                         \
409         { -1 }, { -1 },                 \
410         { FR4, -1 }, { FR4, -1 },       \
411         { FR5, -1 }, { FR5, -1 },       \
412         { FR6, -1 }, { FR6, -1 },       \
413         { FR7, -1 }, { FR7, -1 },       \
414         { FR8, -1 }, { FR8, -1 },       \
415         { FR9, -1 }, { FR9, -1 },       \
416         { FR10, -1 }, { FR10, -1 },     \
417         { FR11, -1 }, { FR11, -1 },     \
418         { FR12, -1 }, { FR12, -1 },     \
419         { FR13, -1 }, { FR13, -1 },     \
420         { FR14, -1 }, { FR14, -1 },     \
421         { FR15, -1 }, { FR15, -1 },     \
422         { FR16, -1 }, { FR16, -1 },     \
mickey
1.9
423         { FR17, -1 }, { FR17, -1 },     \
424         { FR18, -1 }, { FR18, -1 },
mickey
1.1
425 #ifdef __hppa64__
426         { FR19, -1 }, { FR19, -1 },     \
427         { FR20, -1 }, { FR20, -1 },     \
428         { FR21, -1 }, { FR21, -1 },     \
429         { FR22, -1 }, { FR22, -1 },     \
430         { FR23, -1 }, { FR23, -1 },     \
431         { FR24, -1 }, { FR24, -1 },     \
432         { FR25, -1 }, { FR25, -1 },     \
433         { FR26, -1 }, { FR26, -1 },     \
434         { FR27, -1 }, { FR27, -1 },     \
435         { FR28, -1 }, { FR28, -1 },     \
436         { FR29, -1 }, { FR29, -1 },     \
437         { FR30, -1 }, { FR30, -1 },     \
438         { FR31, -1 }, { FR31, -1 },
439 #endif
440
441 #define PCLASS(p)       \
442         (p->n_type == LONGLONG || p->n_type == ULONGLONG ? SBREG : \
443         (p->n_type == FLOAT ? SCREG : \
444         (p->n_type == DOUBLE || p->n_type == LDOUBLE ? SDREG : SAREG)))
445
446 #define NUMCLASS        4       /* highest number of reg classes used */
447
448 int COLORMAP(int cint *r);
mickey
1.9
449 #define PERMTYPE(x) ((x) < 32? INT : ((x) < 64? LONGLONG : ((x) < 93? LDOUBLE : FLOAT)))
450 #define GCLASS(x) ((x) < 32? CLASSA : ((x) < 64? CLASSB : ((x) < 93? CLASSD : CLASSC)))
mickey
1.1
451 #define DECRA(x,y)      (((x) >> (y*8)) & 255)  /* decode encoded regs */
452 #define ENCRD(x)        (x)                     /* Encode dest reg in n_reg */
453 #define ENCRA1(x)       ((x) << 8)              /* A1 */
454 #define ENCRA2(x)       ((x) << 16)             /* A2 */
455 #define ENCRA(x,y)      ((x) << (8+y*8))        /* encode regs in int */
456 #define RETREG(x)       (x == LONGLONG || x == ULONGLONG ? RETD0 : \
457                          x == FLOATFR4L : \
458                          x == DOUBLE || x == LDOUBLE ? FR4 : RET0)
459
460 #define FPREG   FP      /* frame pointer */
461 #define STKREG  SP      /* stack pointer */
462
mickey
1.10
463 #define MYREADER(p)     myreader(p)
464 #define MYCANON(p)      mycanon(p)
465 #define MYOPTIM
466
mickey
1.1
467 #define SFUNCALL        (MAXSPECIAL+1)  /* struct assign after function call */
mickey
1.13
468 #define SPCNHI          (MAXSPECIAL+2)  /* high 21bits constant */
469 #define SPCON           (MAXSPECIAL+3)  /* smaller constant */
470 #define SPICON          (MAXSPECIAL+4)  /* even smaller constant */
471 #define SPCNHW          (MAXSPECIAL+5)  /* LL const w/ 0 in low word */
472 #define SPCNLW          (MAXSPECIAL+6)  /* LL const w/ 0 in high word */
473 #define SPIMM           (MAXSPECIAL+7)  /* immidiate const for depi/comib */
474 #define SPNAME          (MAXSPECIAL+8)  /* ext symbol reference load/store */
mickey
1.12
475 #define SPIMM           (MAXSPECIAL+6)  /* immidiate const for depi/comib */
476 #define SPNAME          (MAXSPECIAL+7)  /* 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-01 08:05 +0200