github.com/miolini/go@v0.0.0-20160405192216-fca68c8cb408/src/cmd/internal/obj/s390x/a.out.go (about) 1 // Based on cmd/internal/obj/ppc64/a.out.go. 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 s390x 31 32 import "cmd/internal/obj" 33 34 //go:generate go run ../stringer.go -i $GOFILE -o anames.go -p s390x 35 36 const ( 37 NSNAME = 8 38 NSYM = 50 39 NREG = 16 // number of general purpose registers 40 NFREG = 16 // number of floating point registers 41 ) 42 43 const ( 44 // General purpose registers (GPRs). 45 REG_R0 = obj.RBaseS390X + iota 46 REG_R1 47 REG_R2 48 REG_R3 49 REG_R4 50 REG_R5 51 REG_R6 52 REG_R7 53 REG_R8 54 REG_R9 55 REG_R10 56 REG_R11 57 REG_R12 58 REG_R13 59 REG_R14 60 REG_R15 61 62 // Floating point registers (FPRs). 63 REG_F0 64 REG_F1 65 REG_F2 66 REG_F3 67 REG_F4 68 REG_F5 69 REG_F6 70 REG_F7 71 REG_F8 72 REG_F9 73 REG_F10 74 REG_F11 75 REG_F12 76 REG_F13 77 REG_F14 78 REG_F15 79 80 // Vector registers (VRs) - only available when the vector 81 // facility is installed. 82 // V0-V15 are aliases for F0-F15. 83 // We keep them in a separate space to make printing etc. easier 84 // If the code generator ever emits vector instructions it will 85 // need to take into account the aliasing. 86 REG_V0 87 REG_V1 88 REG_V2 89 REG_V3 90 REG_V4 91 REG_V5 92 REG_V6 93 REG_V7 94 REG_V8 95 REG_V9 96 REG_V10 97 REG_V11 98 REG_V12 99 REG_V13 100 REG_V14 101 REG_V15 102 REG_V16 103 REG_V17 104 REG_V18 105 REG_V19 106 REG_V20 107 REG_V21 108 REG_V22 109 REG_V23 110 REG_V24 111 REG_V25 112 REG_V26 113 REG_V27 114 REG_V28 115 REG_V29 116 REG_V30 117 REG_V31 118 119 // Access registers (ARs). 120 // The thread pointer is typically stored in the register pair 121 // AR0 and AR1. 122 REG_AR0 123 REG_AR1 124 REG_AR2 125 REG_AR3 126 REG_AR4 127 REG_AR5 128 REG_AR6 129 REG_AR7 130 REG_AR8 131 REG_AR9 132 REG_AR10 133 REG_AR11 134 REG_AR12 135 REG_AR13 136 REG_AR14 137 REG_AR15 138 139 REG_RESERVED // end of allocated registers 140 141 REGZERO = REG_R0 // set to zero 142 REGARG = -1 // -1 disables passing the first argument in register 143 REGRT1 = REG_R3 // used during zeroing of the stack - not reserved 144 REGRT2 = REG_R4 // used during zeroing of the stack - not reserved 145 REGTMP = REG_R10 // scratch register used in the assembler and linker 146 REGTMP2 = REG_R11 // scratch register used in the assembler and linker 147 REGCTXT = REG_R12 // context for closures 148 REGG = REG_R13 // G 149 REG_LR = REG_R14 // link register 150 REGSP = REG_R15 // stack pointer 151 ) 152 153 const ( 154 BIG = 32768 - 8 155 DISP12 = 4096 156 DISP16 = 65536 157 DISP20 = 1048576 158 ) 159 160 const ( 161 // mark flags 162 LABEL = 1 << 0 163 LEAF = 1 << 1 164 FLOAT = 1 << 2 165 BRANCH = 1 << 3 166 LOAD = 1 << 4 167 FCMP = 1 << 5 168 SYNC = 1 << 6 169 LIST = 1 << 7 170 FOLL = 1 << 8 171 NOSCHED = 1 << 9 172 ) 173 174 const ( // comments from func aclass in asmz.go 175 C_NONE = iota 176 C_REG // general-purpose register (64-bit) 177 C_FREG // floating-point register (64-bit) 178 C_VREG // vector register (128-bit) 179 C_AREG // access register (32-bit) 180 C_ZCON // constant == 0 181 C_SCON // 0 <= constant <= 0x7fff (positive int16) 182 C_UCON // constant & 0xffff == 0 (int16 or uint16) 183 C_ADDCON // 0 > constant >= -0x8000 (negative int16) 184 C_ANDCON // constant <= 0xffff 185 C_LCON // constant (int32 or uint32) 186 C_DCON // constant (int64 or uint64) 187 C_SACON // computed address, 16-bit displacement, possibly SP-relative 188 C_LACON // computed address, 32-bit displacement, possibly SP-relative 189 C_DACON // computed address, 64-bit displacment? 190 C_SBRA // short branch 191 C_LBRA // long branch 192 C_SAUTO // short auto 193 C_LAUTO // long auto 194 C_ZOREG // heap address, register-based, displacement == 0 195 C_SOREG // heap address, register-based, int16 displacement 196 C_LOREG // heap address, register-based, int32 displacement 197 C_TLS_LE // TLS - local exec model (for executables) 198 C_TLS_IE // TLS - initial exec model (for shared libraries loaded at program startup) 199 C_GOK // general address 200 C_ADDR // relocation for extern or static symbols (loads and stores) 201 C_SYMADDR // relocation for extern or static symbols (address taking) 202 C_GOTADDR // GOT slot for a symbol in -dynlink mode 203 C_TEXTSIZE // text size 204 C_ANY 205 C_NCLASS // must be the last 206 ) 207 208 const ( 209 // integer arithmetic 210 AADD = obj.ABaseS390X + obj.A_ARCHSPECIFIC + iota 211 AADDC 212 AADDME 213 AADDE 214 AADDZE 215 ADIVW 216 ADIVWU 217 ADIVD 218 ADIVDU 219 AMULLW 220 AMULLD 221 AMULHDU 222 ASUB 223 ASUBC 224 ASUBME 225 ASUBV 226 ASUBE 227 ASUBZE 228 ANEG 229 230 // integer moves 231 AMOVWBR 232 AMOVB 233 AMOVBZ 234 AMOVH 235 AMOVHBR 236 AMOVHZ 237 AMOVW 238 AMOVWZ 239 AMOVD 240 AMOVDBR 241 242 // integer bitwise 243 AAND 244 AANDN 245 ANAND 246 ANOR 247 AOR 248 AORN 249 AXOR 250 ASLW 251 ASLD 252 ASRW 253 ASRAW 254 ASRD 255 ASRAD 256 ARLL 257 ARLLG 258 259 // floating point 260 AFABS 261 AFADD 262 AFADDS 263 AFCMPO 264 AFCMPU 265 ACEBR 266 AFDIV 267 AFDIVS 268 AFMADD 269 AFMADDS 270 AFMOVD 271 AFMOVS 272 AFMSUB 273 AFMSUBS 274 AFMUL 275 AFMULS 276 AFNABS 277 AFNEG 278 AFNMADD 279 AFNMADDS 280 AFNMSUB 281 AFNMSUBS 282 ALEDBR 283 ALDEBR 284 AFSUB 285 AFSUBS 286 AFSQRT 287 AFSQRTS 288 289 // convert from int32/int64 to float/float64 290 ACEFBRA 291 ACDFBRA 292 ACEGBRA 293 ACDGBRA 294 295 // convert from float/float64 to int32/int64 296 ACFEBRA 297 ACFDBRA 298 ACGEBRA 299 ACGDBRA 300 301 // convert from uint32/uint64 to float/float64 302 ACELFBR 303 ACDLFBR 304 ACELGBR 305 ACDLGBR 306 307 // convert from float/float64 to uint32/uint64 308 ACLFEBR 309 ACLFDBR 310 ACLGEBR 311 ACLGDBR 312 313 // compare 314 ACMP 315 ACMPU 316 ACMPW 317 ACMPWU 318 319 // compare and swap 320 ACS 321 ACSG 322 323 // serialize 324 ASYNC 325 326 // branch 327 ABC 328 ABCL 329 ABEQ 330 ABGE 331 ABGT 332 ABLE 333 ABLT 334 ABNE 335 ABVC 336 ABVS 337 ASYSCALL 338 339 // compare and branch 340 ACMPBEQ 341 ACMPBGE 342 ACMPBGT 343 ACMPBLE 344 ACMPBLT 345 ACMPBNE 346 ACMPUBEQ 347 ACMPUBGE 348 ACMPUBGT 349 ACMPUBLE 350 ACMPUBLT 351 ACMPUBNE 352 353 // storage-and-storage 354 AMVC 355 ACLC 356 AXC 357 AOC 358 ANC 359 360 // load 361 AEXRL 362 ALARL 363 ALA 364 ALAY 365 366 // load/store multiple 367 ALMY 368 ALMG 369 ASTMY 370 ASTMG 371 372 // store clock 373 ASTCK 374 ASTCKC 375 ASTCKE 376 ASTCKF 377 378 // macros 379 ACLEAR 380 381 // vector 382 AVA 383 AVAB 384 AVAH 385 AVAF 386 AVAG 387 AVAQ 388 AVACC 389 AVACCB 390 AVACCH 391 AVACCF 392 AVACCG 393 AVACCQ 394 AVAC 395 AVACQ 396 AVACCC 397 AVACCCQ 398 AVN 399 AVNC 400 AVAVG 401 AVAVGB 402 AVAVGH 403 AVAVGF 404 AVAVGG 405 AVAVGL 406 AVAVGLB 407 AVAVGLH 408 AVAVGLF 409 AVAVGLG 410 AVCKSM 411 AVCEQ 412 AVCEQB 413 AVCEQH 414 AVCEQF 415 AVCEQG 416 AVCEQBS 417 AVCEQHS 418 AVCEQFS 419 AVCEQGS 420 AVCH 421 AVCHB 422 AVCHH 423 AVCHF 424 AVCHG 425 AVCHBS 426 AVCHHS 427 AVCHFS 428 AVCHGS 429 AVCHL 430 AVCHLB 431 AVCHLH 432 AVCHLF 433 AVCHLG 434 AVCHLBS 435 AVCHLHS 436 AVCHLFS 437 AVCHLGS 438 AVCLZ 439 AVCLZB 440 AVCLZH 441 AVCLZF 442 AVCLZG 443 AVCTZ 444 AVCTZB 445 AVCTZH 446 AVCTZF 447 AVCTZG 448 AVEC 449 AVECB 450 AVECH 451 AVECF 452 AVECG 453 AVECL 454 AVECLB 455 AVECLH 456 AVECLF 457 AVECLG 458 AVERIM 459 AVERIMB 460 AVERIMH 461 AVERIMF 462 AVERIMG 463 AVERLL 464 AVERLLB 465 AVERLLH 466 AVERLLF 467 AVERLLG 468 AVERLLV 469 AVERLLVB 470 AVERLLVH 471 AVERLLVF 472 AVERLLVG 473 AVESLV 474 AVESLVB 475 AVESLVH 476 AVESLVF 477 AVESLVG 478 AVESL 479 AVESLB 480 AVESLH 481 AVESLF 482 AVESLG 483 AVESRA 484 AVESRAB 485 AVESRAH 486 AVESRAF 487 AVESRAG 488 AVESRAV 489 AVESRAVB 490 AVESRAVH 491 AVESRAVF 492 AVESRAVG 493 AVESRL 494 AVESRLB 495 AVESRLH 496 AVESRLF 497 AVESRLG 498 AVESRLV 499 AVESRLVB 500 AVESRLVH 501 AVESRLVF 502 AVESRLVG 503 AVX 504 AVFAE 505 AVFAEB 506 AVFAEH 507 AVFAEF 508 AVFAEBS 509 AVFAEHS 510 AVFAEFS 511 AVFAEZB 512 AVFAEZH 513 AVFAEZF 514 AVFAEZBS 515 AVFAEZHS 516 AVFAEZFS 517 AVFEE 518 AVFEEB 519 AVFEEH 520 AVFEEF 521 AVFEEBS 522 AVFEEHS 523 AVFEEFS 524 AVFEEZB 525 AVFEEZH 526 AVFEEZF 527 AVFEEZBS 528 AVFEEZHS 529 AVFEEZFS 530 AVFENE 531 AVFENEB 532 AVFENEH 533 AVFENEF 534 AVFENEBS 535 AVFENEHS 536 AVFENEFS 537 AVFENEZB 538 AVFENEZH 539 AVFENEZF 540 AVFENEZBS 541 AVFENEZHS 542 AVFENEZFS 543 AVFA 544 AVFADB 545 AWFADB 546 AWFK 547 AWFKDB 548 AVFCE 549 AVFCEDB 550 AVFCEDBS 551 AWFCEDB 552 AWFCEDBS 553 AVFCH 554 AVFCHDB 555 AVFCHDBS 556 AWFCHDB 557 AWFCHDBS 558 AVFCHE 559 AVFCHEDB 560 AVFCHEDBS 561 AWFCHEDB 562 AWFCHEDBS 563 AWFC 564 AWFCDB 565 AVCDG 566 AVCDGB 567 AWCDGB 568 AVCDLG 569 AVCDLGB 570 AWCDLGB 571 AVCGD 572 AVCGDB 573 AWCGDB 574 AVCLGD 575 AVCLGDB 576 AWCLGDB 577 AVFD 578 AVFDDB 579 AWFDDB 580 AVLDE 581 AVLDEB 582 AWLDEB 583 AVLED 584 AVLEDB 585 AWLEDB 586 AVFM 587 AVFMDB 588 AWFMDB 589 AVFMA 590 AVFMADB 591 AWFMADB 592 AVFMS 593 AVFMSDB 594 AWFMSDB 595 AVFPSO 596 AVFPSODB 597 AWFPSODB 598 AVFLCDB 599 AWFLCDB 600 AVFLNDB 601 AWFLNDB 602 AVFLPDB 603 AWFLPDB 604 AVFSQ 605 AVFSQDB 606 AWFSQDB 607 AVFS 608 AVFSDB 609 AWFSDB 610 AVFTCI 611 AVFTCIDB 612 AWFTCIDB 613 AVGFM 614 AVGFMB 615 AVGFMH 616 AVGFMF 617 AVGFMG 618 AVGFMA 619 AVGFMAB 620 AVGFMAH 621 AVGFMAF 622 AVGFMAG 623 AVGEF 624 AVGEG 625 AVGBM 626 AVZERO 627 AVONE 628 AVGM 629 AVGMB 630 AVGMH 631 AVGMF 632 AVGMG 633 AVISTR 634 AVISTRB 635 AVISTRH 636 AVISTRF 637 AVISTRBS 638 AVISTRHS 639 AVISTRFS 640 AVL 641 AVLR 642 AVLREP 643 AVLREPB 644 AVLREPH 645 AVLREPF 646 AVLREPG 647 AVLC 648 AVLCB 649 AVLCH 650 AVLCF 651 AVLCG 652 AVLEH 653 AVLEF 654 AVLEG 655 AVLEB 656 AVLEIH 657 AVLEIF 658 AVLEIG 659 AVLEIB 660 AVFI 661 AVFIDB 662 AWFIDB 663 AVLGV 664 AVLGVB 665 AVLGVH 666 AVLGVF 667 AVLGVG 668 AVLLEZ 669 AVLLEZB 670 AVLLEZH 671 AVLLEZF 672 AVLLEZG 673 AVLM 674 AVLP 675 AVLPB 676 AVLPH 677 AVLPF 678 AVLPG 679 AVLBB 680 AVLVG 681 AVLVGB 682 AVLVGH 683 AVLVGF 684 AVLVGG 685 AVLVGP 686 AVLL 687 AVMX 688 AVMXB 689 AVMXH 690 AVMXF 691 AVMXG 692 AVMXL 693 AVMXLB 694 AVMXLH 695 AVMXLF 696 AVMXLG 697 AVMRH 698 AVMRHB 699 AVMRHH 700 AVMRHF 701 AVMRHG 702 AVMRL 703 AVMRLB 704 AVMRLH 705 AVMRLF 706 AVMRLG 707 AVMN 708 AVMNB 709 AVMNH 710 AVMNF 711 AVMNG 712 AVMNL 713 AVMNLB 714 AVMNLH 715 AVMNLF 716 AVMNLG 717 AVMAE 718 AVMAEB 719 AVMAEH 720 AVMAEF 721 AVMAH 722 AVMAHB 723 AVMAHH 724 AVMAHF 725 AVMALE 726 AVMALEB 727 AVMALEH 728 AVMALEF 729 AVMALH 730 AVMALHB 731 AVMALHH 732 AVMALHF 733 AVMALO 734 AVMALOB 735 AVMALOH 736 AVMALOF 737 AVMAL 738 AVMALB 739 AVMALHW 740 AVMALF 741 AVMAO 742 AVMAOB 743 AVMAOH 744 AVMAOF 745 AVME 746 AVMEB 747 AVMEH 748 AVMEF 749 AVMH 750 AVMHB 751 AVMHH 752 AVMHF 753 AVMLE 754 AVMLEB 755 AVMLEH 756 AVMLEF 757 AVMLH 758 AVMLHB 759 AVMLHH 760 AVMLHF 761 AVMLO 762 AVMLOB 763 AVMLOH 764 AVMLOF 765 AVML 766 AVMLB 767 AVMLHW 768 AVMLF 769 AVMO 770 AVMOB 771 AVMOH 772 AVMOF 773 AVNO 774 AVNOT 775 AVO 776 AVPK 777 AVPKH 778 AVPKF 779 AVPKG 780 AVPKLS 781 AVPKLSH 782 AVPKLSF 783 AVPKLSG 784 AVPKLSHS 785 AVPKLSFS 786 AVPKLSGS 787 AVPKS 788 AVPKSH 789 AVPKSF 790 AVPKSG 791 AVPKSHS 792 AVPKSFS 793 AVPKSGS 794 AVPERM 795 AVPDI 796 AVPOPCT 797 AVREP 798 AVREPB 799 AVREPH 800 AVREPF 801 AVREPG 802 AVREPI 803 AVREPIB 804 AVREPIH 805 AVREPIF 806 AVREPIG 807 AVSCEF 808 AVSCEG 809 AVSEL 810 AVSL 811 AVSLB 812 AVSLDB 813 AVSRA 814 AVSRAB 815 AVSRL 816 AVSRLB 817 AVSEG 818 AVSEGB 819 AVSEGH 820 AVSEGF 821 AVST 822 AVSTEH 823 AVSTEF 824 AVSTEG 825 AVSTEB 826 AVSTM 827 AVSTL 828 AVSTRC 829 AVSTRCB 830 AVSTRCH 831 AVSTRCF 832 AVSTRCBS 833 AVSTRCHS 834 AVSTRCFS 835 AVSTRCZB 836 AVSTRCZH 837 AVSTRCZF 838 AVSTRCZBS 839 AVSTRCZHS 840 AVSTRCZFS 841 AVS 842 AVSB 843 AVSH 844 AVSF 845 AVSG 846 AVSQ 847 AVSCBI 848 AVSCBIB 849 AVSCBIH 850 AVSCBIF 851 AVSCBIG 852 AVSCBIQ 853 AVSBCBI 854 AVSBCBIQ 855 AVSBI 856 AVSBIQ 857 AVSUMG 858 AVSUMGH 859 AVSUMGF 860 AVSUMQ 861 AVSUMQF 862 AVSUMQG 863 AVSUM 864 AVSUMB 865 AVSUMH 866 AVTM 867 AVUPH 868 AVUPHB 869 AVUPHH 870 AVUPHF 871 AVUPLH 872 AVUPLHB 873 AVUPLHH 874 AVUPLHF 875 AVUPLL 876 AVUPLLB 877 AVUPLLH 878 AVUPLLF 879 AVUPL 880 AVUPLB 881 AVUPLHW 882 AVUPLF 883 884 // binary 885 ABYTE 886 AWORD 887 ADWORD 888 889 // end marker 890 ALAST 891 892 // aliases 893 ABR = obj.AJMP 894 ABL = obj.ACALL 895 )