...

Source file src/cmd/internal/obj/arm64/a.out.go

Documentation: cmd/internal/obj/arm64

     1  // cmd/7c/7.out.h  from Vita Nuova.
     2  // https://bitbucket.org/plan9-from-bell-labs/9-cc/src/master/src/cmd/7c/7.out.h
     3  //
     4  // 	Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
     5  // 	Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
     6  // 	Portions Copyright © 1997-1999 Vita Nuova Limited
     7  // 	Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
     8  // 	Portions Copyright © 2004,2006 Bruce Ellis
     9  // 	Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
    10  // 	Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
    11  // 	Portions Copyright © 2009 The Go Authors. All rights reserved.
    12  //
    13  // Permission is hereby granted, free of charge, to any person obtaining a copy
    14  // of this software and associated documentation files (the "Software"), to deal
    15  // in the Software without restriction, including without limitation the rights
    16  // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    17  // copies of the Software, and to permit persons to whom the Software is
    18  // furnished to do so, subject to the following conditions:
    19  //
    20  // The above copyright notice and this permission notice shall be included in
    21  // all copies or substantial portions of the Software.
    22  //
    23  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    24  // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    25  // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
    26  // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    27  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    28  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    29  // THE SOFTWARE.
    30  
    31  package arm64
    32  
    33  import "cmd/internal/obj"
    34  
    35  const (
    36  	NSNAME = 8
    37  	NSYM   = 50
    38  	NREG   = 32 /* number of general registers */
    39  	NFREG  = 32 /* number of floating point registers */
    40  )
    41  
    42  // General purpose registers, kept in the low bits of Prog.Reg.
    43  const (
    44  	// integer
    45  	REG_R0 = obj.RBaseARM64 + 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  	REG_R16
    62  	REG_R17
    63  	REG_R18
    64  	REG_R19
    65  	REG_R20
    66  	REG_R21
    67  	REG_R22
    68  	REG_R23
    69  	REG_R24
    70  	REG_R25
    71  	REG_R26
    72  	REG_R27
    73  	REG_R28
    74  	REG_R29
    75  	REG_R30
    76  	REG_R31
    77  
    78  	// scalar floating point
    79  	REG_F0
    80  	REG_F1
    81  	REG_F2
    82  	REG_F3
    83  	REG_F4
    84  	REG_F5
    85  	REG_F6
    86  	REG_F7
    87  	REG_F8
    88  	REG_F9
    89  	REG_F10
    90  	REG_F11
    91  	REG_F12
    92  	REG_F13
    93  	REG_F14
    94  	REG_F15
    95  	REG_F16
    96  	REG_F17
    97  	REG_F18
    98  	REG_F19
    99  	REG_F20
   100  	REG_F21
   101  	REG_F22
   102  	REG_F23
   103  	REG_F24
   104  	REG_F25
   105  	REG_F26
   106  	REG_F27
   107  	REG_F28
   108  	REG_F29
   109  	REG_F30
   110  	REG_F31
   111  
   112  	// SIMD
   113  	REG_V0
   114  	REG_V1
   115  	REG_V2
   116  	REG_V3
   117  	REG_V4
   118  	REG_V5
   119  	REG_V6
   120  	REG_V7
   121  	REG_V8
   122  	REG_V9
   123  	REG_V10
   124  	REG_V11
   125  	REG_V12
   126  	REG_V13
   127  	REG_V14
   128  	REG_V15
   129  	REG_V16
   130  	REG_V17
   131  	REG_V18
   132  	REG_V19
   133  	REG_V20
   134  	REG_V21
   135  	REG_V22
   136  	REG_V23
   137  	REG_V24
   138  	REG_V25
   139  	REG_V26
   140  	REG_V27
   141  	REG_V28
   142  	REG_V29
   143  	REG_V30
   144  	REG_V31
   145  
   146  	// SVE (Scalable Vector Extension) scalable vector registers
   147  	// The order matters, make sure that each
   148  	// kind of register starts numbering from the lowest bit.
   149  	REG_Z0
   150  	REG_Z1
   151  	REG_Z2
   152  	REG_Z3
   153  	REG_Z4
   154  	REG_Z5
   155  	REG_Z6
   156  	REG_Z7
   157  	REG_Z8
   158  	REG_Z9
   159  	REG_Z10
   160  	REG_Z11
   161  	REG_Z12
   162  	REG_Z13
   163  	REG_Z14
   164  	REG_Z15
   165  	REG_Z16
   166  	REG_Z17
   167  	REG_Z18
   168  	REG_Z19
   169  	REG_Z20
   170  	REG_Z21
   171  	REG_Z22
   172  	REG_Z23
   173  	REG_Z24
   174  	REG_Z25
   175  	REG_Z26
   176  	REG_Z27
   177  	REG_Z28
   178  	REG_Z29
   179  	REG_Z30
   180  	REG_Z31
   181  
   182  	REG_P0
   183  	REG_P1
   184  	REG_P2
   185  	REG_P3
   186  	REG_P4
   187  	REG_P5
   188  	REG_P6
   189  	REG_P7
   190  	REG_P8
   191  	REG_P9
   192  	REG_P10
   193  	REG_P11
   194  	REG_P12
   195  	REG_P13
   196  	REG_P14
   197  	REG_P15
   198  
   199  	REG_PN0
   200  	REG_PN1
   201  	REG_PN2
   202  	REG_PN3
   203  	REG_PN4
   204  	REG_PN5
   205  	REG_PN6
   206  	REG_PN7
   207  	REG_PN8
   208  	REG_PN9
   209  	REG_PN10
   210  	REG_PN11
   211  	REG_PN12
   212  	REG_PN13
   213  	REG_PN14
   214  	REG_PN15
   215  
   216  	REG_RSP = (REG_PN15 + 1) | 0x1f // to differentiate ZR/SP, REG_RSP&0x1f = 31
   217  )
   218  
   219  // bits 0-4 indicates register: Vn
   220  // bits 5-8 indicates arrangement: <T>
   221  // TODO: consider putting the register and arrangement in different fields of an
   222  // [obj.Prog] to make the bit pattern less confusing.
   223  const (
   224  	REG_ARNG      = obj.RBaseARM64 + 1<<10 + iota<<9 // Vn.<T>
   225  	REG_ELEM                                         // Vn.<T>[index]
   226  	REG_ZARNG                                        // Zn.<T>
   227  	REG_ZARNGELEM                                    // Zn.<T>[index]
   228  	// PZELEM is taking a portion of the P or Z register.
   229  	// Since it does not have an arrangement, it interpret bit 5 differently:
   230  	// bit 5 = 0: Z register
   231  	// bit 5 = 1: P register
   232  	REG_PZELEM  // Zn[index] or Pn[index] or PNd[index]
   233  	REG_PARNGZM // Pn.<T> or Pn/M, Pn/Z
   234  	// This currently overlaps with REG_EXT, if more arrangements are to be added,
   235  	// move REG_EXT to a higher range and update RBase.*.
   236  	REG_PARNGZM_END
   237  )
   238  
   239  // Not registers, but flags that can be combined with regular register
   240  // constants to indicate extended register conversion. When checking,
   241  // you should subtract obj.RBaseARM64 first. From this difference, bit 12
   242  // indicates extended register, bits 8-10 select the conversion mode.
   243  // REG_LSL is the index shift specifier, bit 9 indicates shifted offset register.
   244  const REG_LSL = obj.RBaseARM64 + 1<<9
   245  const REG_EXT = obj.RBaseARM64 + 1<<12
   246  
   247  const (
   248  	REG_UXTB = REG_EXT + iota<<8
   249  	REG_UXTH
   250  	REG_UXTW
   251  	REG_UXTX
   252  	REG_SXTB
   253  	REG_SXTH
   254  	REG_SXTW
   255  	REG_SXTX
   256  )
   257  
   258  // Special registers, after subtracting obj.RBaseARM64, bit 13 indicates
   259  // a special register and the low bits select the register.
   260  // SYSREG_END is the last item in the automatically generated system register
   261  // declaration, and it is defined in the sysRegEnc.go file.
   262  // Define the special register after REG_SPECIAL, the first value of it should be
   263  // REG_{name} = SYSREG_END + iota.
   264  const (
   265  	REG_SPECIAL = obj.RBaseARM64 + 1<<13
   266  )
   267  
   268  // Register assignments:
   269  //
   270  // compiler allocates R0 up as temps
   271  // compiler allocates register variables R7-R25
   272  // compiler allocates external registers R26 down
   273  //
   274  // compiler allocates register variables F7-F26
   275  // compiler allocates external registers F26 down
   276  const (
   277  	REGMIN = REG_R7  // register variables allocated from here to REGMAX
   278  	REGRT1 = REG_R16 // ARM64 IP0, external linker may use as a scratch register in trampoline
   279  	REGRT2 = REG_R17 // ARM64 IP1, external linker may use as a scratch register in trampoline
   280  	REGPR  = REG_R18 // ARM64 platform register, unused in the Go toolchain
   281  	REGMAX = REG_R25
   282  
   283  	REGCTXT = REG_R26 // environment for closures
   284  	REGTMP  = REG_R27 // reserved for liblink
   285  	REGG    = REG_R28 // G
   286  	REGFP   = REG_R29 // frame pointer
   287  	REGLINK = REG_R30
   288  
   289  	// ARM64 uses R31 as both stack pointer and zero register,
   290  	// depending on the instruction. To differentiate RSP from ZR,
   291  	// we use a different numeric value for REGZERO and REGSP.
   292  	REGZERO = REG_R31
   293  	REGSP   = REG_RSP
   294  
   295  	FREGRET = REG_F0
   296  	FREGMIN = REG_F7  // first register variable
   297  	FREGMAX = REG_F26 // last register variable for 7g only
   298  	FREGEXT = REG_F26 // first external register
   299  )
   300  
   301  // http://infocenter.arm.com/help/topic/com.arm.doc.ecm0665627/abi_sve_aadwarf_100985_0000_00_en.pdf
   302  var ARM64DWARFRegisters = map[int16]int16{
   303  	REG_R0:  0,
   304  	REG_R1:  1,
   305  	REG_R2:  2,
   306  	REG_R3:  3,
   307  	REG_R4:  4,
   308  	REG_R5:  5,
   309  	REG_R6:  6,
   310  	REG_R7:  7,
   311  	REG_R8:  8,
   312  	REG_R9:  9,
   313  	REG_R10: 10,
   314  	REG_R11: 11,
   315  	REG_R12: 12,
   316  	REG_R13: 13,
   317  	REG_R14: 14,
   318  	REG_R15: 15,
   319  	REG_R16: 16,
   320  	REG_R17: 17,
   321  	REG_R18: 18,
   322  	REG_R19: 19,
   323  	REG_R20: 20,
   324  	REG_R21: 21,
   325  	REG_R22: 22,
   326  	REG_R23: 23,
   327  	REG_R24: 24,
   328  	REG_R25: 25,
   329  	REG_R26: 26,
   330  	REG_R27: 27,
   331  	REG_R28: 28,
   332  	REG_R29: 29,
   333  	REG_R30: 30,
   334  
   335  	// SVE predicate registers
   336  	REG_P0:  48,
   337  	REG_P1:  49,
   338  	REG_P2:  50,
   339  	REG_P3:  51,
   340  	REG_P4:  52,
   341  	REG_P5:  53,
   342  	REG_P6:  54,
   343  	REG_P7:  55,
   344  	REG_P8:  56,
   345  	REG_P9:  57,
   346  	REG_P10: 58,
   347  	REG_P11: 59,
   348  	REG_P12: 60,
   349  	REG_P13: 61,
   350  	REG_P14: 62,
   351  	REG_P15: 63,
   352  
   353  	// floating point
   354  	REG_F0:  64,
   355  	REG_F1:  65,
   356  	REG_F2:  66,
   357  	REG_F3:  67,
   358  	REG_F4:  68,
   359  	REG_F5:  69,
   360  	REG_F6:  70,
   361  	REG_F7:  71,
   362  	REG_F8:  72,
   363  	REG_F9:  73,
   364  	REG_F10: 74,
   365  	REG_F11: 75,
   366  	REG_F12: 76,
   367  	REG_F13: 77,
   368  	REG_F14: 78,
   369  	REG_F15: 79,
   370  	REG_F16: 80,
   371  	REG_F17: 81,
   372  	REG_F18: 82,
   373  	REG_F19: 83,
   374  	REG_F20: 84,
   375  	REG_F21: 85,
   376  	REG_F22: 86,
   377  	REG_F23: 87,
   378  	REG_F24: 88,
   379  	REG_F25: 89,
   380  	REG_F26: 90,
   381  	REG_F27: 91,
   382  	REG_F28: 92,
   383  	REG_F29: 93,
   384  	REG_F30: 94,
   385  	REG_F31: 95,
   386  
   387  	// SIMD
   388  	REG_V0:  64,
   389  	REG_V1:  65,
   390  	REG_V2:  66,
   391  	REG_V3:  67,
   392  	REG_V4:  68,
   393  	REG_V5:  69,
   394  	REG_V6:  70,
   395  	REG_V7:  71,
   396  	REG_V8:  72,
   397  	REG_V9:  73,
   398  	REG_V10: 74,
   399  	REG_V11: 75,
   400  	REG_V12: 76,
   401  	REG_V13: 77,
   402  	REG_V14: 78,
   403  	REG_V15: 79,
   404  	REG_V16: 80,
   405  	REG_V17: 81,
   406  	REG_V18: 82,
   407  	REG_V19: 83,
   408  	REG_V20: 84,
   409  	REG_V21: 85,
   410  	REG_V22: 86,
   411  	REG_V23: 87,
   412  	REG_V24: 88,
   413  	REG_V25: 89,
   414  	REG_V26: 90,
   415  	REG_V27: 91,
   416  	REG_V28: 92,
   417  	REG_V29: 93,
   418  	REG_V30: 94,
   419  	REG_V31: 95,
   420  
   421  	// SVE vector registers
   422  	REG_Z0:  96,
   423  	REG_Z1:  97,
   424  	REG_Z2:  98,
   425  	REG_Z3:  99,
   426  	REG_Z4:  100,
   427  	REG_Z5:  101,
   428  	REG_Z6:  102,
   429  	REG_Z7:  103,
   430  	REG_Z8:  104,
   431  	REG_Z9:  105,
   432  	REG_Z10: 106,
   433  	REG_Z11: 107,
   434  	REG_Z12: 108,
   435  	REG_Z13: 109,
   436  	REG_Z14: 110,
   437  	REG_Z15: 111,
   438  	REG_Z16: 112,
   439  	REG_Z17: 113,
   440  	REG_Z18: 114,
   441  	REG_Z19: 115,
   442  	REG_Z20: 116,
   443  	REG_Z21: 117,
   444  	REG_Z22: 118,
   445  	REG_Z23: 119,
   446  	REG_Z24: 120,
   447  	REG_Z25: 121,
   448  	REG_Z26: 122,
   449  	REG_Z27: 123,
   450  	REG_Z28: 124,
   451  	REG_Z29: 125,
   452  	REG_Z30: 126,
   453  	REG_Z31: 127,
   454  }
   455  
   456  const (
   457  	BIG = 2048 - 8
   458  )
   459  
   460  const (
   461  	/* mark flags */
   462  	LABEL = 1 << iota
   463  	LEAF
   464  	FLOAT
   465  	BRANCH
   466  	LOAD
   467  	FCMP
   468  	SYNC
   469  	LIST
   470  	FOLL
   471  	NOSCHED
   472  )
   473  
   474  //go:generate go run ../mkcnames.go -i a.out.go -o anames7.go -p arm64
   475  const (
   476  	// optab is sorted based on the order of these constants
   477  	// and the first match is chosen.
   478  	// The more specific class needs to come earlier.
   479  	C_NONE   = iota + 1 // starting from 1, leave unclassified Addr's class as 0
   480  	C_REG               // R0..R30
   481  	C_ZREG              // R0..R30, ZR
   482  	C_RSP               // R0..R30, RSP
   483  	C_FREG              // F0..F31
   484  	C_VREG              // V0..V31
   485  	C_PAIR              // (Rn, Rm)
   486  	C_SHIFT             // Rn<<2
   487  	C_EXTREG            // Rn.UXTB[<<3]
   488  	C_SPR               // REG_NZCV
   489  	C_COND              // condition code, EQ, NE, etc.
   490  	C_SPOP              // special operand, PLDL1KEEP, VMALLE1IS, etc.
   491  	C_ARNG              // Vn.<T>
   492  	C_ELEM              // Vn.<T>[index]
   493  	C_LIST              // [V1, V2, V3]
   494  
   495  	C_ZCON     // $0
   496  	C_ABCON0   // could be C_ADDCON0 or C_BITCON
   497  	C_ADDCON0  // 12-bit unsigned, unshifted
   498  	C_ABCON    // could be C_ADDCON or C_BITCON
   499  	C_AMCON    // could be C_ADDCON or C_MOVCON
   500  	C_ADDCON   // 12-bit unsigned, shifted left by 0 or 12
   501  	C_MBCON    // could be C_MOVCON or C_BITCON
   502  	C_MOVCON   // generated by a 16-bit constant, optionally inverted and/or shifted by multiple of 16
   503  	C_BITCON   // bitfield and logical immediate masks
   504  	C_ADDCON2  // 24-bit constant
   505  	C_LCON     // 32-bit constant
   506  	C_MOVCON2  // a constant that can be loaded with one MOVZ/MOVN and one MOVK
   507  	C_MOVCON3  // a constant that can be loaded with one MOVZ/MOVN and two MOVKs
   508  	C_VCON     // 64-bit constant
   509  	C_FCON     // floating-point constant
   510  	C_VCONADDR // 64-bit memory address
   511  
   512  	C_AACON  // ADDCON offset in auto constant $a(FP)
   513  	C_AACON2 // 24-bit offset in auto constant $a(FP)
   514  	C_LACON  // 32-bit offset in auto constant $a(FP)
   515  	C_AECON  // ADDCON offset in extern constant $e(SB)
   516  
   517  	// TODO(aram): only one branch class should be enough
   518  	C_SBRA // for TYPE_BRANCH
   519  	C_LBRA
   520  
   521  	C_ZAUTO       // 0(RSP)
   522  	C_NSAUTO_16   // -256 <= x < 0, 0 mod 16
   523  	C_NSAUTO_8    // -256 <= x < 0, 0 mod 8
   524  	C_NSAUTO_4    // -256 <= x < 0, 0 mod 4
   525  	C_NSAUTO      // -256 <= x < 0
   526  	C_NPAUTO_16   // -512 <= x < 0, 0 mod 16
   527  	C_NPAUTO      // -512 <= x < 0, 0 mod 8
   528  	C_NQAUTO_16   // -1024 <= x < 0, 0 mod 16
   529  	C_NAUTO4K     // -4095 <= x < 0
   530  	C_PSAUTO_16   // 0 to 255, 0 mod 16
   531  	C_PSAUTO_8    // 0 to 255, 0 mod 8
   532  	C_PSAUTO_4    // 0 to 255, 0 mod 4
   533  	C_PSAUTO      // 0 to 255
   534  	C_PPAUTO_16   // 0 to 504, 0 mod 16
   535  	C_PPAUTO      // 0 to 504, 0 mod 8
   536  	C_PQAUTO_16   // 0 to 1008, 0 mod 16
   537  	C_UAUTO4K_16  // 0 to 4095, 0 mod 16
   538  	C_UAUTO4K_8   // 0 to 4095, 0 mod 8
   539  	C_UAUTO4K_4   // 0 to 4095, 0 mod 4
   540  	C_UAUTO4K_2   // 0 to 4095, 0 mod 2
   541  	C_UAUTO4K     // 0 to 4095
   542  	C_UAUTO8K_16  // 0 to 8190, 0 mod 16
   543  	C_UAUTO8K_8   // 0 to 8190, 0 mod 8
   544  	C_UAUTO8K_4   // 0 to 8190, 0 mod 4
   545  	C_UAUTO8K     // 0 to 8190, 0 mod 2  + C_PSAUTO
   546  	C_UAUTO16K_16 // 0 to 16380, 0 mod 16
   547  	C_UAUTO16K_8  // 0 to 16380, 0 mod 8
   548  	C_UAUTO16K    // 0 to 16380, 0 mod 4 + C_PSAUTO
   549  	C_UAUTO32K_16 // 0 to 32760, 0 mod 16 + C_PSAUTO
   550  	C_UAUTO32K    // 0 to 32760, 0 mod 8 + C_PSAUTO
   551  	C_UAUTO64K    // 0 to 65520, 0 mod 16 + C_PSAUTO
   552  	C_LAUTOPOOL   // any other constant up to 64 bits (needs pool literal)
   553  	C_LAUTO       // any other constant up to 64 bits
   554  
   555  	C_SEXT1  // 0 to 4095, direct
   556  	C_SEXT2  // 0 to 8190
   557  	C_SEXT4  // 0 to 16380
   558  	C_SEXT8  // 0 to 32760
   559  	C_SEXT16 // 0 to 65520
   560  	C_LEXT
   561  
   562  	C_ZOREG     // 0(R)
   563  	C_NSOREG_16 // must mirror C_NSAUTO_16, etc
   564  	C_NSOREG_8
   565  	C_NSOREG_4
   566  	C_NSOREG
   567  	C_NPOREG_16
   568  	C_NPOREG
   569  	C_NQOREG_16
   570  	C_NOREG4K
   571  	C_PSOREG_16
   572  	C_PSOREG_8
   573  	C_PSOREG_4
   574  	C_PSOREG
   575  	C_PPOREG_16
   576  	C_PPOREG
   577  	C_PQOREG_16
   578  	C_UOREG4K_16
   579  	C_UOREG4K_8
   580  	C_UOREG4K_4
   581  	C_UOREG4K_2
   582  	C_UOREG4K
   583  	C_UOREG8K_16
   584  	C_UOREG8K_8
   585  	C_UOREG8K_4
   586  	C_UOREG8K
   587  	C_UOREG16K_16
   588  	C_UOREG16K_8
   589  	C_UOREG16K
   590  	C_UOREG32K_16
   591  	C_UOREG32K
   592  	C_UOREG64K
   593  	C_LOREGPOOL
   594  	C_LOREG
   595  
   596  	C_ADDR // TODO(aram): explain difference from C_VCONADDR
   597  
   598  	// The GOT slot for a symbol in -dynlink mode.
   599  	C_GOTADDR
   600  
   601  	// TLS "var" in local exec mode: will become a constant offset from
   602  	// thread local base that is ultimately chosen by the program linker.
   603  	C_TLS_LE
   604  
   605  	// TLS "var" in initial exec mode: will become a memory address (chosen
   606  	// by the program linker) that the dynamic linker will fill with the
   607  	// offset from the thread local base.
   608  	C_TLS_IE
   609  
   610  	C_ROFF // register offset (including register extended)
   611  
   612  	C_GOK
   613  	C_TEXTSIZE
   614  	C_NCLASS // must be last
   615  )
   616  
   617  const (
   618  	C_XPRE  = 1 << 6 // match arm.C_WBIT, so Prog.String know how to print it
   619  	C_XPOST = 1 << 5 // match arm.C_PBIT, so Prog.String know how to print it
   620  )
   621  
   622  type AClass uint16 // operand type
   623  
   624  // [insts] is sorted based on the order of these constants and the first match is chosen.
   625  const (
   626  	AC_NONE AClass = iota
   627  	// TODO: probably make this AClass split into AC_REG (R0...R30), AC_RSP (R0...R30, RSP), AC_ZR (R0...R30, ZR).
   628  	AC_SPZGREG // general purpose registers R0..R30 and RSP and ZR
   629  	AC_VREG    // vector registers, such as V1
   630  	AC_ZREG    // the scalable vector registers, such as Z1
   631  	AC_PREG    // the scalable predicate registers, such as P1
   632  	AC_PREGZM  // Pg.Z or Pg.M
   633  	AC_PREGIDX // P8[1] or PN1[1] or Z1[1]
   634  	AC_ZREGIDX // P8[1] or PN1[1] or Z1[1]
   635  	AC_PREGSEL // P0[R1, 1], index is calculated as R1 + 1
   636  	AC_ARNG    // vector register with arrangement, such as Z1.D
   637  	AC_ARNGIDX // vector register with arrangement and index, such as Z1.D[1]
   638  
   639  	AC_IMM // constants
   640  
   641  	AC_REGLIST1      // list of 1 vector register, such as [Z1]
   642  	AC_REGLIST2      // list of 2 vector registers, such as [Z0, Z8]
   643  	AC_REGLIST3      // list of 3 vector registers, such as [Z1, Z2, Z3]
   644  	AC_REGLIST4      // list of 4 vector registers, such as [Z0, Z4, Z8, Z12]
   645  	AC_REGLIST_RANGE // list of vector register lists in range format, such as [Z0-Z4].
   646  
   647  	AC_MEMOFF      // address with optional constant offset, the offset is an immediate, such as 4(Z1.D)
   648  	AC_MEMOFFMULVL // address with optional constant offset, the offset is an immediate multiplied by the vector's in-memory size, such as (2*VL)(Z1.D)
   649  	AC_MEMEXT      // address with register offset with extensions, such as (Z2.D.UXTW<<3)(RSP)
   650  
   651  	AC_PREG_PATTERN // register with pattern, such as VL1*3(P1.D)
   652  	AC_REG_PATTERN  // register with pattern, such as VL1*3(R1)
   653  	AC_ZREG_PATTERN // register with pattern, such as VL1*3(Z1.D)
   654  
   655  	AC_SPECIAL // VL*i pattern, one of: VL*2, VL*4, or prefetch pattern, such as PLDL1KEEP, more patterns might come in the future.
   656  )
   657  
   658  //go:generate go run ../stringer.go -i $GOFILE -o anames.go -p arm64
   659  
   660  const (
   661  	AADC = obj.ABaseARM64 + obj.A_ARCHSPECIFIC + iota
   662  	AADCS
   663  	AADCSW
   664  	AADCW
   665  	AADD
   666  	AADDS
   667  	AADDSW
   668  	AADDW
   669  	AADR
   670  	AADRP
   671  	AAESD
   672  	AAESE
   673  	AAESIMC
   674  	AAESMC
   675  	AAND
   676  	AANDS
   677  	AANDSW
   678  	AANDW
   679  	AASR
   680  	AASRW
   681  	AAT
   682  	ABCC
   683  	ABCS
   684  	ABEQ
   685  	ABFI
   686  	ABFIW
   687  	ABFM
   688  	ABFMW
   689  	ABFXIL
   690  	ABFXILW
   691  	ABGE
   692  	ABGT
   693  	ABHI
   694  	ABHS
   695  	ABIC
   696  	ABICS
   697  	ABICSW
   698  	ABICW
   699  	ABLE
   700  	ABLO
   701  	ABLS
   702  	ABLT
   703  	ABMI
   704  	ABNE
   705  	ABPL
   706  	ABRK
   707  	ABVC
   708  	ABVS
   709  	ACASAD
   710  	ACASALB
   711  	ACASALD
   712  	ACASALH
   713  	ACASALW
   714  	ACASAW
   715  	ACASB
   716  	ACASD
   717  	ACASH
   718  	ACASLD
   719  	ACASLW
   720  	ACASPD
   721  	ACASPW
   722  	ACASW
   723  	ACBNZ
   724  	ACBNZW
   725  	ACBZ
   726  	ACBZW
   727  	ACCMN
   728  	ACCMNW
   729  	ACCMP
   730  	ACCMPW
   731  	ACINC
   732  	ACINCW
   733  	ACINV
   734  	ACINVW
   735  	ACLREX
   736  	ACLS
   737  	ACLSW
   738  	ACLZ
   739  	ACLZW
   740  	ACMN
   741  	ACMNW
   742  	ACMP
   743  	ACMPW
   744  	ACNEG
   745  	ACNEGW
   746  	ACRC32B
   747  	ACRC32CB
   748  	ACRC32CH
   749  	ACRC32CW
   750  	ACRC32CX
   751  	ACRC32H
   752  	ACRC32W
   753  	ACRC32X
   754  	ACSEL
   755  	ACSELW
   756  	ACSET
   757  	ACSETM
   758  	ACSETMW
   759  	ACSETW
   760  	ACSINC
   761  	ACSINCW
   762  	ACSINV
   763  	ACSINVW
   764  	ACSNEG
   765  	ACSNEGW
   766  	ADC
   767  	ADCPS1
   768  	ADCPS2
   769  	ADCPS3
   770  	ADMB
   771  	ADRPS
   772  	ADSB
   773  	ADWORD
   774  	AEON
   775  	AEONW
   776  	AEOR
   777  	AEORW
   778  	AERET
   779  	AEXTR
   780  	AEXTRW
   781  	AFABSD
   782  	AFABSS
   783  	AFADDD
   784  	AFADDS
   785  	AFCCMPD
   786  	AFCCMPED
   787  	AFCCMPES
   788  	AFCCMPS
   789  	AFCMPD
   790  	AFCMPED
   791  	AFCMPES
   792  	AFCMPS
   793  	AFCSELD
   794  	AFCSELS
   795  	AFCVTDH
   796  	AFCVTDS
   797  	AFCVTHD
   798  	AFCVTHS
   799  	AFCVTSD
   800  	AFCVTSH
   801  	AFCVTZSD
   802  	AFCVTZSDW
   803  	AFCVTZSS
   804  	AFCVTZSSW
   805  	AFCVTZUD
   806  	AFCVTZUDW
   807  	AFCVTZUS
   808  	AFCVTZUSW
   809  	AFDIVD
   810  	AFDIVS
   811  	AFLDPD
   812  	AFLDPQ
   813  	AFLDPS
   814  	AFMADDD
   815  	AFMADDS
   816  	AFMAXD
   817  	AFMAXNMD
   818  	AFMAXNMS
   819  	AFMAXS
   820  	AFMIND
   821  	AFMINNMD
   822  	AFMINNMS
   823  	AFMINS
   824  	AFMOVD
   825  	AFMOVQ
   826  	AFMOVS
   827  	AFMSUBD
   828  	AFMSUBS
   829  	AFMULD
   830  	AFMULS
   831  	AFNEGD
   832  	AFNEGS
   833  	AFNMADDD
   834  	AFNMADDS
   835  	AFNMSUBD
   836  	AFNMSUBS
   837  	AFNMULD
   838  	AFNMULS
   839  	AFRINTAD
   840  	AFRINTAS
   841  	AFRINTID
   842  	AFRINTIS
   843  	AFRINTMD
   844  	AFRINTMS
   845  	AFRINTND
   846  	AFRINTNS
   847  	AFRINTPD
   848  	AFRINTPS
   849  	AFRINTXD
   850  	AFRINTXS
   851  	AFRINTZD
   852  	AFRINTZS
   853  	AFSQRTD
   854  	AFSQRTS
   855  	AFSTPD
   856  	AFSTPQ
   857  	AFSTPS
   858  	AFSUBD
   859  	AFSUBS
   860  	AHINT
   861  	AHLT
   862  	AHVC
   863  	AIC
   864  	AISB
   865  	ALDADDAB
   866  	ALDADDAD
   867  	ALDADDAH
   868  	ALDADDALB
   869  	ALDADDALD
   870  	ALDADDALH
   871  	ALDADDALW
   872  	ALDADDAW
   873  	ALDADDB
   874  	ALDADDD
   875  	ALDADDH
   876  	ALDADDLB
   877  	ALDADDLD
   878  	ALDADDLH
   879  	ALDADDLW
   880  	ALDADDW
   881  	ALDAR
   882  	ALDARB
   883  	ALDARH
   884  	ALDARW
   885  	ALDAXP
   886  	ALDAXPW
   887  	ALDAXR
   888  	ALDAXRB
   889  	ALDAXRH
   890  	ALDAXRW
   891  	ALDCLRAB
   892  	ALDCLRAD
   893  	ALDCLRAH
   894  	ALDCLRALB
   895  	ALDCLRALD
   896  	ALDCLRALH
   897  	ALDCLRALW
   898  	ALDCLRAW
   899  	ALDCLRB
   900  	ALDCLRD
   901  	ALDCLRH
   902  	ALDCLRLB
   903  	ALDCLRLD
   904  	ALDCLRLH
   905  	ALDCLRLW
   906  	ALDCLRW
   907  	ALDEORAB
   908  	ALDEORAD
   909  	ALDEORAH
   910  	ALDEORALB
   911  	ALDEORALD
   912  	ALDEORALH
   913  	ALDEORALW
   914  	ALDEORAW
   915  	ALDEORB
   916  	ALDEORD
   917  	ALDEORH
   918  	ALDEORLB
   919  	ALDEORLD
   920  	ALDEORLH
   921  	ALDEORLW
   922  	ALDEORW
   923  	ALDORAB
   924  	ALDORAD
   925  	ALDORAH
   926  	ALDORALB
   927  	ALDORALD
   928  	ALDORALH
   929  	ALDORALW
   930  	ALDORAW
   931  	ALDORB
   932  	ALDORD
   933  	ALDORH
   934  	ALDORLB
   935  	ALDORLD
   936  	ALDORLH
   937  	ALDORLW
   938  	ALDORW
   939  	ALDP
   940  	ALDPSW
   941  	ALDPW
   942  	ALDXP
   943  	ALDXPW
   944  	ALDXR
   945  	ALDXRB
   946  	ALDXRH
   947  	ALDXRW
   948  	ALSL
   949  	ALSLW
   950  	ALSR
   951  	ALSRW
   952  	AMADD
   953  	AMADDW
   954  	AMNEG
   955  	AMNEGW
   956  	AMOVB
   957  	AMOVBU
   958  	AMOVD
   959  	AMOVH
   960  	AMOVHU
   961  	AMOVK
   962  	AMOVKW
   963  	AMOVN
   964  	AMOVNW
   965  	AMOVP
   966  	AMOVPD
   967  	AMOVPQ
   968  	AMOVPS
   969  	AMOVPSW
   970  	AMOVPW
   971  	AMOVW
   972  	AMOVWU
   973  	AMOVZ
   974  	AMOVZW
   975  	AMRS
   976  	AMSR
   977  	AMSUB
   978  	AMSUBW
   979  	AMUL
   980  	AMULW
   981  	AMVN
   982  	AMVNW
   983  	ANEG
   984  	ANEGS
   985  	ANEGSW
   986  	ANEGW
   987  	ANGC
   988  	ANGCS
   989  	ANGCSW
   990  	ANGCW
   991  	ANOOP
   992  	AORN
   993  	AORNW
   994  	AORR
   995  	AORRW
   996  	APRFM
   997  	APRFUM
   998  	ARBIT
   999  	ARBITW
  1000  	AREM
  1001  	AREMW
  1002  	AREV
  1003  	AREV16
  1004  	AREV16W
  1005  	AREV32
  1006  	AREVW
  1007  	AROR
  1008  	ARORW
  1009  	ARPRFM
  1010  	ASB
  1011  	ASBC
  1012  	ASBCS
  1013  	ASBCSW
  1014  	ASBCW
  1015  	ASBFIZ
  1016  	ASBFIZW
  1017  	ASBFM
  1018  	ASBFMW
  1019  	ASBFX
  1020  	ASBFXW
  1021  	ASCVTFD
  1022  	ASCVTFS
  1023  	ASCVTFWD
  1024  	ASCVTFWS
  1025  	ASDIV
  1026  	ASDIVW
  1027  	ASEV
  1028  	ASEVL
  1029  	ASHA1C
  1030  	ASHA1H
  1031  	ASHA1M
  1032  	ASHA1P
  1033  	ASHA1SU0
  1034  	ASHA1SU1
  1035  	ASHA256H
  1036  	ASHA256H2
  1037  	ASHA256SU0
  1038  	ASHA256SU1
  1039  	ASHA512H
  1040  	ASHA512H2
  1041  	ASHA512SU0
  1042  	ASHA512SU1
  1043  	ASMADDL
  1044  	ASMC
  1045  	ASMNEGL
  1046  	ASMSUBL
  1047  	ASMULH
  1048  	ASMULL
  1049  	ASTLR
  1050  	ASTLRB
  1051  	ASTLRH
  1052  	ASTLRW
  1053  	ASTLXP
  1054  	ASTLXPW
  1055  	ASTLXR
  1056  	ASTLXRB
  1057  	ASTLXRH
  1058  	ASTLXRW
  1059  	ASTP
  1060  	ASTPW
  1061  	ASTXP
  1062  	ASTXPW
  1063  	ASTXR
  1064  	ASTXRB
  1065  	ASTXRH
  1066  	ASTXRW
  1067  	ASUB
  1068  	ASUBS
  1069  	ASUBSW
  1070  	ASUBW
  1071  	ASVC
  1072  	ASWPAB
  1073  	ASWPAD
  1074  	ASWPAH
  1075  	ASWPALB
  1076  	ASWPALD
  1077  	ASWPALH
  1078  	ASWPALW
  1079  	ASWPAW
  1080  	ASWPB
  1081  	ASWPD
  1082  	ASWPH
  1083  	ASWPLB
  1084  	ASWPLD
  1085  	ASWPLH
  1086  	ASWPLW
  1087  	ASWPW
  1088  	ASXTB
  1089  	ASXTBW
  1090  	ASXTH
  1091  	ASXTHW
  1092  	ASXTW
  1093  	ASYS
  1094  	ASYSL
  1095  	ATBNZ
  1096  	ATBZ
  1097  	ATLBI
  1098  	ATST
  1099  	ATSTW
  1100  	AUBFIZ
  1101  	AUBFIZW
  1102  	AUBFM
  1103  	AUBFMW
  1104  	AUBFX
  1105  	AUBFXW
  1106  	AUCVTFD
  1107  	AUCVTFS
  1108  	AUCVTFWD
  1109  	AUCVTFWS
  1110  	AUDIV
  1111  	AUDIVW
  1112  	AUMADDL
  1113  	AUMNEGL
  1114  	AUMSUBL
  1115  	AUMULH
  1116  	AUMULL
  1117  	AUREM
  1118  	AUREMW
  1119  	AUXTB
  1120  	AUXTBW
  1121  	AUXTH
  1122  	AUXTHW
  1123  	AUXTW
  1124  	AVADD
  1125  	AVADDP
  1126  	AVSHADD
  1127  	AVSRHADD
  1128  	AVADDV
  1129  	AVFMAXV
  1130  	AVFMAXNMV
  1131  	AVFMINV
  1132  	AVFMINNMV
  1133  	AVSMAXV
  1134  	AVSMINV
  1135  	AVUMAXV
  1136  	AVUMINV
  1137  	AVAND
  1138  	AVBCAX
  1139  	AVBIF
  1140  	AVBIT
  1141  	AVBSL
  1142  	AVCMEQ
  1143  	AVCLS
  1144  	AVCLZ
  1145  	AVCMGE
  1146  	AVCMGT
  1147  	AVCMHI
  1148  	AVCMHS
  1149  	AVCMLE
  1150  	AVCMLT
  1151  	AVCMTST
  1152  	AVCNT
  1153  	AVDUP
  1154  	AVEOR
  1155  	AVEOR3
  1156  	AVEXT
  1157  	AVFMLA
  1158  	AVFMLS
  1159  	AVFCMEQ
  1160  	AVFCMGE
  1161  	AVFCMGT
  1162  	AVFCMLE
  1163  	AVFCMLT
  1164  	AVFADDP
  1165  	AVFADD
  1166  	AVFSUB
  1167  	AVFMUL
  1168  	AVFDIV
  1169  	AVFMAX
  1170  	AVFMAXNM
  1171  	AVFMAXP
  1172  	AVFMIN
  1173  	AVFMINNM
  1174  	AVFMINP
  1175  	AVFMAXNMP
  1176  	AVFMINNMP
  1177  	AVSQADD
  1178  	AVUQADD
  1179  	AVSQSUB
  1180  	AVSQABS
  1181  	AVSQNEG
  1182  	AVUQSUB
  1183  	AVUHADD
  1184  	AVURHADD
  1185  	AVMUL
  1186  	AVMLA
  1187  	AVMLS
  1188  	AVLD1
  1189  	AVLD1R
  1190  	AVLD2
  1191  	AVLD2R
  1192  	AVLD3
  1193  	AVLD3R
  1194  	AVLD4
  1195  	AVLD4R
  1196  	AVMOV
  1197  	AVMOVD
  1198  	AVMOVI
  1199  	AVMOVQ
  1200  	AVMOVS
  1201  	AVORR
  1202  	AVORN
  1203  	AVBIC
  1204  	AVPMULL
  1205  	AVPMULL2
  1206  	AVSMLAL
  1207  	AVSMLAL2
  1208  	AVSMLSL
  1209  	AVSMLSL2
  1210  	AVSMULL
  1211  	AVSMULL2
  1212  	AVUMLAL
  1213  	AVUMLAL2
  1214  	AVUMLSL
  1215  	AVUMLSL2
  1216  	AVUMULL
  1217  	AVUMULL2
  1218  	AVRAX1
  1219  	AVRBIT
  1220  	AVREV16
  1221  	AVREV32
  1222  	AVREV64
  1223  	AVABS
  1224  	AVFABS
  1225  	AVFNEG
  1226  	AVFSQRT
  1227  	AVFRINTN
  1228  	AVFRINTP
  1229  	AVFRINTM
  1230  	AVFRINTZ
  1231  	AVNEG
  1232  	AVNOT
  1233  	AVSHL
  1234  	AVSHRN
  1235  	AVSHRN2
  1236  	AVSLI
  1237  	AVSQSHL
  1238  	AVSSHL
  1239  	AVUSHL
  1240  	AVUQSHL
  1241  	AVSRI
  1242  	AVST1
  1243  	AVST2
  1244  	AVST3
  1245  	AVST4
  1246  	AVSUB
  1247  	AVSMAX
  1248  	AVSMIN
  1249  	AVSMAXP
  1250  	AVSMINP
  1251  	AVTBL
  1252  	AVTBX
  1253  	AVTRN1
  1254  	AVTRN2
  1255  	AVUADDLV
  1256  	AVUADDW
  1257  	AVUADDW2
  1258  	AVUMAX
  1259  	AVUMIN
  1260  	AVUMAXP
  1261  	AVUMINP
  1262  	AVUSHLL
  1263  	AVUSHLL2
  1264  	AVUSHR
  1265  	AVSRSHR
  1266  	AVSSHR
  1267  	AVUSRA
  1268  	AVUXTL
  1269  	AVUXTL2
  1270  	AVXTN
  1271  	AVXTN2
  1272  	AVSSHLL
  1273  	AVSSHLL2
  1274  	AVSXTL
  1275  	AVSXTL2
  1276  	AVSQXTN
  1277  	AVSQXTN2
  1278  	AVSQXTUN
  1279  	AVSQXTUN2
  1280  	AVUQXTN
  1281  	AVUQXTN2
  1282  	AVFCVTZS
  1283  	AVFCVTZU
  1284  	AVSCVTF
  1285  	AVUCVTF
  1286  	AVFCVTN
  1287  	AVFCVTN2
  1288  	AVFCVTL
  1289  	AVFCVTL2
  1290  	AVUZP1
  1291  	AVUZP2
  1292  	AVXAR
  1293  	AVZIP1
  1294  	AVZIP2
  1295  	AWFE
  1296  	AWFI
  1297  	AWORD
  1298  	AYIELD
  1299  	ABTI
  1300  	APACIASP
  1301  	AAUTIASP
  1302  	APACIBSP
  1303  	AAUTIBSP
  1304  	AAUTIA1716
  1305  	AAUTIB1716
  1306  	ASVESTART
  1307  	AB  = obj.AJMP
  1308  	ABL = obj.ACALL
  1309  )
  1310  
  1311  const (
  1312  	// shift types
  1313  	SHIFT_LL  = 0 << 22
  1314  	SHIFT_LR  = 1 << 22
  1315  	SHIFT_AR  = 2 << 22
  1316  	SHIFT_ROR = 3 << 22
  1317  )
  1318  
  1319  // Arrangement for ARM64 SIMD instructions
  1320  const (
  1321  	// arrangement types
  1322  	ARNG_8B = iota
  1323  	ARNG_16B
  1324  	ARNG_1D
  1325  	ARNG_4H
  1326  	ARNG_8H
  1327  	ARNG_2S
  1328  	ARNG_4S
  1329  	ARNG_2D
  1330  	ARNG_1Q
  1331  	ARNG_B
  1332  	ARNG_H
  1333  	ARNG_S
  1334  	ARNG_D
  1335  	ARNG_Q
  1336  	PRED_M
  1337  	PRED_Z
  1338  )
  1339  
  1340  //go:generate stringer -type SpecialOperand -trimprefix SPOP_
  1341  type SpecialOperand int
  1342  
  1343  const (
  1344  	// PRFM
  1345  	SPOP_PLDL1KEEP SpecialOperand = obj.SpecialOperandARM64Base + iota     // must be the first one
  1346  	SPOP_BEGIN     SpecialOperand = obj.SpecialOperandARM64Base + iota - 1 // set as the lower bound
  1347  	SPOP_PLDL1STRM
  1348  	SPOP_PLDL2KEEP
  1349  	SPOP_PLDL2STRM
  1350  	SPOP_PLDL3KEEP
  1351  	SPOP_PLDL3STRM
  1352  	SPOP_PLIL1KEEP
  1353  	SPOP_PLIL1STRM
  1354  	SPOP_PLIL2KEEP
  1355  	SPOP_PLIL2STRM
  1356  	SPOP_PLIL3KEEP
  1357  	SPOP_PLIL3STRM
  1358  	SPOP_PSTL1KEEP
  1359  	SPOP_PSTL1STRM
  1360  	SPOP_PSTL2KEEP
  1361  	SPOP_PSTL2STRM
  1362  	SPOP_PSTL3KEEP
  1363  	SPOP_PSTL3STRM
  1364  
  1365  	// VL
  1366  	SPOP_VLx2
  1367  	SPOP_VLx4
  1368  
  1369  	// TLBI
  1370  	SPOP_VMALLE1IS
  1371  	SPOP_VAE1IS
  1372  	SPOP_ASIDE1IS
  1373  	SPOP_VAAE1IS
  1374  	SPOP_VALE1IS
  1375  	SPOP_VAALE1IS
  1376  	SPOP_VMALLE1
  1377  	SPOP_VAE1
  1378  	SPOP_ASIDE1
  1379  	SPOP_VAAE1
  1380  	SPOP_VALE1
  1381  	SPOP_VAALE1
  1382  	SPOP_IPAS2E1IS
  1383  	SPOP_IPAS2LE1IS
  1384  	SPOP_ALLE2IS
  1385  	SPOP_VAE2IS
  1386  	SPOP_ALLE1IS
  1387  	SPOP_VALE2IS
  1388  	SPOP_VMALLS12E1IS
  1389  	SPOP_IPAS2E1
  1390  	SPOP_IPAS2LE1
  1391  	SPOP_ALLE2
  1392  	SPOP_VAE2
  1393  	SPOP_ALLE1
  1394  	SPOP_VALE2
  1395  	SPOP_VMALLS12E1
  1396  	SPOP_ALLE3IS
  1397  	SPOP_VAE3IS
  1398  	SPOP_VALE3IS
  1399  	SPOP_ALLE3
  1400  	SPOP_VAE3
  1401  	SPOP_VALE3
  1402  	SPOP_VMALLE1OS
  1403  	SPOP_VAE1OS
  1404  	SPOP_ASIDE1OS
  1405  	SPOP_VAAE1OS
  1406  	SPOP_VALE1OS
  1407  	SPOP_VAALE1OS
  1408  	SPOP_RVAE1IS
  1409  	SPOP_RVAAE1IS
  1410  	SPOP_RVALE1IS
  1411  	SPOP_RVAALE1IS
  1412  	SPOP_RVAE1OS
  1413  	SPOP_RVAAE1OS
  1414  	SPOP_RVALE1OS
  1415  	SPOP_RVAALE1OS
  1416  	SPOP_RVAE1
  1417  	SPOP_RVAAE1
  1418  	SPOP_RVALE1
  1419  	SPOP_RVAALE1
  1420  	SPOP_RIPAS2E1IS
  1421  	SPOP_RIPAS2LE1IS
  1422  	SPOP_ALLE2OS
  1423  	SPOP_VAE2OS
  1424  	SPOP_ALLE1OS
  1425  	SPOP_VALE2OS
  1426  	SPOP_VMALLS12E1OS
  1427  	SPOP_RVAE2IS
  1428  	SPOP_RVALE2IS
  1429  	SPOP_IPAS2E1OS
  1430  	SPOP_RIPAS2E1
  1431  	SPOP_RIPAS2E1OS
  1432  	SPOP_IPAS2LE1OS
  1433  	SPOP_RIPAS2LE1
  1434  	SPOP_RIPAS2LE1OS
  1435  	SPOP_RVAE2OS
  1436  	SPOP_RVALE2OS
  1437  	SPOP_RVAE2
  1438  	SPOP_RVALE2
  1439  	SPOP_ALLE3OS
  1440  	SPOP_VAE3OS
  1441  	SPOP_VALE3OS
  1442  	SPOP_RVAE3IS
  1443  	SPOP_RVALE3IS
  1444  	SPOP_RVAE3OS
  1445  	SPOP_RVALE3OS
  1446  	SPOP_RVAE3
  1447  	SPOP_RVALE3
  1448  
  1449  	// DC
  1450  	SPOP_IVAC
  1451  	SPOP_ISW
  1452  	SPOP_CSW
  1453  	SPOP_CISW
  1454  	SPOP_ZVA
  1455  	SPOP_CVAC
  1456  	SPOP_CVAU
  1457  	SPOP_CIVAC
  1458  	SPOP_IGVAC
  1459  	SPOP_IGSW
  1460  	SPOP_IGDVAC
  1461  	SPOP_IGDSW
  1462  	SPOP_CGSW
  1463  	SPOP_CGDSW
  1464  	SPOP_CIGSW
  1465  	SPOP_CIGDSW
  1466  	SPOP_GVA
  1467  	SPOP_GZVA
  1468  	SPOP_CGVAC
  1469  	SPOP_CGDVAC
  1470  	SPOP_CGVAP
  1471  	SPOP_CGDVAP
  1472  	SPOP_CGVADP
  1473  	SPOP_CGDVADP
  1474  	SPOP_CIGVAC
  1475  	SPOP_CIGDVAC
  1476  	SPOP_CVAP
  1477  	SPOP_CVADP
  1478  
  1479  	// PSTATE fields
  1480  	SPOP_DAIFSet
  1481  	SPOP_DAIFClr
  1482  
  1483  	// Condition code, EQ, NE, etc. Their relative order to EQ matters.
  1484  	SPOP_EQ
  1485  	SPOP_NE
  1486  	SPOP_HS
  1487  	SPOP_LO
  1488  	SPOP_MI
  1489  	SPOP_PL
  1490  	SPOP_VS
  1491  	SPOP_VC
  1492  	SPOP_HI
  1493  	SPOP_LS
  1494  	SPOP_GE
  1495  	SPOP_LT
  1496  	SPOP_GT
  1497  	SPOP_LE
  1498  	SPOP_AL
  1499  	SPOP_NV
  1500  
  1501  	// Branch Target Indicator (BTI) targets
  1502  	SPOP_C
  1503  	SPOP_J
  1504  	SPOP_JC
  1505  
  1506  	// Range PReFetch of Memory (RPRFM)
  1507  	SPOP_PLDKEEP
  1508  	SPOP_PSTKEEP
  1509  	SPOP_PLDSTRM
  1510  	SPOP_PSTSTRM
  1511  
  1512  	SPOP_END
  1513  )
  1514  

View as plain text