]> Cypherpunks.ru repositories - gostls13.git/blob - src/cmd/internal/obj/ppc64/a.out.go
all: make copyright headers consistent with one space after period
[gostls13.git] / src / cmd / internal / obj / ppc64 / a.out.go
1 // cmd/9c/9.out.h from Vita Nuova.
2 //
3 //      Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
4 //      Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
5 //      Portions Copyright © 1997-1999 Vita Nuova Limited
6 //      Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com)
7 //      Portions Copyright © 2004,2006 Bruce Ellis
8 //      Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
9 //      Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others
10 //      Portions Copyright © 2009 The Go Authors. All rights reserved.
11 //
12 // Permission is hereby granted, free of charge, to any person obtaining a copy
13 // of this software and associated documentation files (the "Software"), to deal
14 // in the Software without restriction, including without limitation the rights
15 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16 // copies of the Software, and to permit persons to whom the Software is
17 // furnished to do so, subject to the following conditions:
18 //
19 // The above copyright notice and this permission notice shall be included in
20 // all copies or substantial portions of the Software.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
25 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28 // THE SOFTWARE.
29
30 package ppc64
31
32 import "cmd/internal/obj"
33
34 //go:generate go run ../stringer.go -i $GOFILE -o anames.go -p ppc64
35
36 /*
37  * powerpc 64
38  */
39 const (
40         NSNAME = 8
41         NSYM   = 50
42         NREG   = 32 /* number of general registers */
43         NFREG  = 32 /* number of floating point registers */
44 )
45
46 const (
47         REG_R0 = obj.RBasePPC64 + iota
48         REG_R1
49         REG_R2
50         REG_R3
51         REG_R4
52         REG_R5
53         REG_R6
54         REG_R7
55         REG_R8
56         REG_R9
57         REG_R10
58         REG_R11
59         REG_R12
60         REG_R13
61         REG_R14
62         REG_R15
63         REG_R16
64         REG_R17
65         REG_R18
66         REG_R19
67         REG_R20
68         REG_R21
69         REG_R22
70         REG_R23
71         REG_R24
72         REG_R25
73         REG_R26
74         REG_R27
75         REG_R28
76         REG_R29
77         REG_R30
78         REG_R31
79
80         REG_F0
81         REG_F1
82         REG_F2
83         REG_F3
84         REG_F4
85         REG_F5
86         REG_F6
87         REG_F7
88         REG_F8
89         REG_F9
90         REG_F10
91         REG_F11
92         REG_F12
93         REG_F13
94         REG_F14
95         REG_F15
96         REG_F16
97         REG_F17
98         REG_F18
99         REG_F19
100         REG_F20
101         REG_F21
102         REG_F22
103         REG_F23
104         REG_F24
105         REG_F25
106         REG_F26
107         REG_F27
108         REG_F28
109         REG_F29
110         REG_F30
111         REG_F31
112
113         REG_CR0
114         REG_CR1
115         REG_CR2
116         REG_CR3
117         REG_CR4
118         REG_CR5
119         REG_CR6
120         REG_CR7
121
122         REG_MSR
123         REG_FPSCR
124         REG_CR
125
126         REG_SPECIAL = REG_CR0
127
128         REG_SPR0 = obj.RBasePPC64 + 1024 // first of 1024 registers
129         REG_DCR0 = obj.RBasePPC64 + 2048 // first of 1024 registers
130
131         REG_XER = REG_SPR0 + 1
132         REG_LR  = REG_SPR0 + 8
133         REG_CTR = REG_SPR0 + 9
134
135         REGZERO  = REG_R0 /* set to zero */
136         REGSP    = REG_R1
137         REGSB    = REG_R2
138         REGRET   = REG_R3
139         REGARG   = -1      /* -1 disables passing the first argument in register */
140         REGRT1   = REG_R3  /* reserved for runtime, duffzero and duffcopy */
141         REGRT2   = REG_R4  /* reserved for runtime, duffcopy */
142         REGMIN   = REG_R7  /* register variables allocated from here to REGMAX */
143         REGCTXT  = REG_R11 /* context for closures */
144         REGTLS   = REG_R13 /* C ABI TLS base pointer */
145         REGMAX   = REG_R27
146         REGEXT   = REG_R30 /* external registers allocated from here down */
147         REGG     = REG_R30 /* G */
148         REGTMP   = REG_R31 /* used by the linker */
149         FREGRET  = REG_F0
150         FREGMIN  = REG_F17 /* first register variable */
151         FREGMAX  = REG_F26 /* last register variable for 9g only */
152         FREGEXT  = REG_F26 /* first external register */
153         FREGCVI  = REG_F27 /* floating conversion constant */
154         FREGZERO = REG_F28 /* both float and double */
155         FREGHALF = REG_F29 /* double */
156         FREGONE  = REG_F30 /* double */
157         FREGTWO  = REG_F31 /* double */
158 )
159
160 /*
161  * GENERAL:
162  *
163  * compiler allocates R3 up as temps
164  * compiler allocates register variables R7-R27
165  * compiler allocates external registers R30 down
166  *
167  * compiler allocates register variables F17-F26
168  * compiler allocates external registers F26 down
169  */
170 const (
171         BIG = 32768 - 8
172 )
173
174 const (
175         /* mark flags */
176         LABEL   = 1 << 0
177         LEAF    = 1 << 1
178         FLOAT   = 1 << 2
179         BRANCH  = 1 << 3
180         LOAD    = 1 << 4
181         FCMP    = 1 << 5
182         SYNC    = 1 << 6
183         LIST    = 1 << 7
184         FOLL    = 1 << 8
185         NOSCHED = 1 << 9
186 )
187
188 const (
189         C_NONE = iota
190         C_REG
191         C_FREG
192         C_CREG
193         C_SPR /* special processor register */
194         C_ZCON
195         C_SCON   /* 16 bit signed */
196         C_UCON   /* 32 bit signed, low 16 bits 0 */
197         C_ADDCON /* -0x8000 <= v < 0 */
198         C_ANDCON /* 0 < v <= 0xFFFF */
199         C_LCON   /* other 32 */
200         C_DCON   /* other 64 (could subdivide further) */
201         C_SACON  /* $n(REG) where n <= int16 */
202         C_SECON
203         C_LACON /* $n(REG) where int16 < n <= int32 */
204         C_LECON
205         C_DACON /* $n(REG) where int32 < n */
206         C_SBRA
207         C_LBRA
208         C_LBRAPIC
209         C_SAUTO
210         C_LAUTO
211         C_SEXT
212         C_LEXT
213         C_ZOREG
214         C_SOREG
215         C_LOREG
216         C_FPSCR
217         C_MSR
218         C_XER
219         C_LR
220         C_CTR
221         C_ANY
222         C_GOK
223         C_ADDR
224         C_GOTADDR
225         C_TLS_LE
226         C_TLS_IE
227         C_TEXTSIZE
228
229         C_NCLASS /* must be the last */
230 )
231
232 const (
233         AADD = obj.ABasePPC64 + obj.A_ARCHSPECIFIC + iota
234         AADDCC
235         AADDV
236         AADDVCC
237         AADDC
238         AADDCCC
239         AADDCV
240         AADDCVCC
241         AADDME
242         AADDMECC
243         AADDMEVCC
244         AADDMEV
245         AADDE
246         AADDECC
247         AADDEVCC
248         AADDEV
249         AADDZE
250         AADDZECC
251         AADDZEVCC
252         AADDZEV
253         AAND
254         AANDCC
255         AANDN
256         AANDNCC
257         ABC
258         ABCL
259         ABEQ
260         ABGE
261         ABGT
262         ABLE
263         ABLT
264         ABNE
265         ABVC
266         ABVS
267         ACMP
268         ACMPU
269         ACNTLZW
270         ACNTLZWCC
271         ACRAND
272         ACRANDN
273         ACREQV
274         ACRNAND
275         ACRNOR
276         ACROR
277         ACRORN
278         ACRXOR
279         ADIVW
280         ADIVWCC
281         ADIVWVCC
282         ADIVWV
283         ADIVWU
284         ADIVWUCC
285         ADIVWUVCC
286         ADIVWUV
287         AEQV
288         AEQVCC
289         AEXTSB
290         AEXTSBCC
291         AEXTSH
292         AEXTSHCC
293         AFABS
294         AFABSCC
295         AFADD
296         AFADDCC
297         AFADDS
298         AFADDSCC
299         AFCMPO
300         AFCMPU
301         AFCTIW
302         AFCTIWCC
303         AFCTIWZ
304         AFCTIWZCC
305         AFDIV
306         AFDIVCC
307         AFDIVS
308         AFDIVSCC
309         AFMADD
310         AFMADDCC
311         AFMADDS
312         AFMADDSCC
313         AFMOVD
314         AFMOVDCC
315         AFMOVDU
316         AFMOVS
317         AFMOVSU
318         AFMSUB
319         AFMSUBCC
320         AFMSUBS
321         AFMSUBSCC
322         AFMUL
323         AFMULCC
324         AFMULS
325         AFMULSCC
326         AFNABS
327         AFNABSCC
328         AFNEG
329         AFNEGCC
330         AFNMADD
331         AFNMADDCC
332         AFNMADDS
333         AFNMADDSCC
334         AFNMSUB
335         AFNMSUBCC
336         AFNMSUBS
337         AFNMSUBSCC
338         AFRSP
339         AFRSPCC
340         AFSUB
341         AFSUBCC
342         AFSUBS
343         AFSUBSCC
344         AMOVMW
345         ALSW
346         ALWAR
347         AMOVWBR
348         AMOVB
349         AMOVBU
350         AMOVBZ
351         AMOVBZU
352         AMOVH
353         AMOVHBR
354         AMOVHU
355         AMOVHZ
356         AMOVHZU
357         AMOVW
358         AMOVWU
359         AMOVFL
360         AMOVCRFS
361         AMTFSB0
362         AMTFSB0CC
363         AMTFSB1
364         AMTFSB1CC
365         AMULHW
366         AMULHWCC
367         AMULHWU
368         AMULHWUCC
369         AMULLW
370         AMULLWCC
371         AMULLWVCC
372         AMULLWV
373         ANAND
374         ANANDCC
375         ANEG
376         ANEGCC
377         ANEGVCC
378         ANEGV
379         ANOR
380         ANORCC
381         AOR
382         AORCC
383         AORN
384         AORNCC
385         AREM
386         AREMCC
387         AREMV
388         AREMVCC
389         AREMU
390         AREMUCC
391         AREMUV
392         AREMUVCC
393         ARFI
394         ARLWMI
395         ARLWMICC
396         ARLWNM
397         ARLWNMCC
398         ASLW
399         ASLWCC
400         ASRW
401         ASRAW
402         ASRAWCC
403         ASRWCC
404         ASTSW
405         ASTWCCC
406         ASUB
407         ASUBCC
408         ASUBVCC
409         ASUBC
410         ASUBCCC
411         ASUBCV
412         ASUBCVCC
413         ASUBME
414         ASUBMECC
415         ASUBMEVCC
416         ASUBMEV
417         ASUBV
418         ASUBE
419         ASUBECC
420         ASUBEV
421         ASUBEVCC
422         ASUBZE
423         ASUBZECC
424         ASUBZEVCC
425         ASUBZEV
426         ASYNC
427         AXOR
428         AXORCC
429
430         ADCBF
431         ADCBI
432         ADCBST
433         ADCBT
434         ADCBTST
435         ADCBZ
436         AECIWX
437         AECOWX
438         AEIEIO
439         AICBI
440         AISYNC
441         APTESYNC
442         ATLBIE
443         ATLBIEL
444         ATLBSYNC
445         ATW
446
447         ASYSCALL
448         AWORD
449
450         ARFCI
451
452         /* optional on 32-bit */
453         AFRES
454         AFRESCC
455         AFRSQRTE
456         AFRSQRTECC
457         AFSEL
458         AFSELCC
459         AFSQRT
460         AFSQRTCC
461         AFSQRTS
462         AFSQRTSCC
463
464         /* 64-bit */
465
466         ACNTLZD
467         ACNTLZDCC
468         ACMPW /* CMP with L=0 */
469         ACMPWU
470         ADIVD
471         ADIVDCC
472         ADIVDVCC
473         ADIVDV
474         ADIVDU
475         ADIVDUCC
476         ADIVDUVCC
477         ADIVDUV
478         AEXTSW
479         AEXTSWCC
480         /* AFCFIW; AFCFIWCC */
481         AFCFID
482         AFCFIDCC
483         AFCTID
484         AFCTIDCC
485         AFCTIDZ
486         AFCTIDZCC
487         ALDAR
488         AMOVD
489         AMOVDU
490         AMOVWZ
491         AMOVWZU
492         AMULHD
493         AMULHDCC
494         AMULHDU
495         AMULHDUCC
496         AMULLD
497         AMULLDCC
498         AMULLDVCC
499         AMULLDV
500         ARFID
501         ARLDMI
502         ARLDMICC
503         ARLDC
504         ARLDCCC
505         ARLDCR
506         ARLDCRCC
507         ARLDCL
508         ARLDCLCC
509         ASLBIA
510         ASLBIE
511         ASLBMFEE
512         ASLBMFEV
513         ASLBMTE
514         ASLD
515         ASLDCC
516         ASRD
517         ASRAD
518         ASRADCC
519         ASRDCC
520         ASTDCCC
521         ATD
522
523         /* 64-bit pseudo operation */
524         ADWORD
525         AREMD
526         AREMDCC
527         AREMDV
528         AREMDVCC
529         AREMDU
530         AREMDUCC
531         AREMDUV
532         AREMDUVCC
533
534         /* more 64-bit operations */
535         AHRFID
536
537         ALAST
538
539         // aliases
540         ABR = obj.AJMP
541         ABL = obj.ACALL
542 )