Text file src/cmd/asm/internal/asm/testdata/arm64.s

     1  // Copyright 2015 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // This input was created by taking the instruction productions in
     6  // the old assembler's (7a's) grammar and hand-writing complete
     7  // instructions for each rule, to guarantee we cover the same space.
     8  
     9  #include "../../../../../runtime/textflag.h"
    10  
    11  TEXT	foo(SB), DUPOK|NOSPLIT, $-8
    12  
    13  // arithmetic operations
    14  	ADDW	$1, R2, R3
    15  	ADDW	R1, R2, R3
    16  	ADDW	R1, ZR, R3
    17  	ADD	$1, R2, R3
    18  	ADD	R1, R2, R3
    19  	ADD	R1, ZR, R3
    20  	ADD	$1, R2, R3
    21  	ADDW	$1, R2
    22  	ADDW	R1, R2
    23  	ADD	$1, R2
    24  	ADD	R1, R2
    25  	ADD	R1>>11, R2
    26  	ADD	R1<<22, R2
    27  	ADD	R1->33, R2
    28  	ADD	$0x000aaa, R2, R3               // ADD $2730, R2, R3                      // 43a82a91
    29  	ADD	$0x000aaa, R2                   // ADD $2730, R2                          // 42a82a91
    30  	ADD	$0xaaa000, R2, R3               // ADD $11182080, R2, R3                  // 43a86a91
    31  	ADD	$0xaaa000, R2                   // ADD $11182080, R2                      // 42a86a91
    32  	ADD	$0xaaaaaa, R2, R3               // ADD $11184810, R2, R3                  // 43a82a9163a86a91
    33  	ADD	$0xaaaaaa, R2                   // ADD $11184810, R2                      // 42a82a9142a86a91
    34  	SUB	$0x000aaa, R2, R3               // SUB $2730, R2, R3                      // 43a82ad1
    35  	SUB	$0x000aaa, R2                   // SUB $2730, R2                          // 42a82ad1
    36  	SUB	$0xaaa000, R2, R3               // SUB $11182080, R2, R3                  // 43a86ad1
    37  	SUB	$0xaaa000, R2                   // SUB $11182080, R2                      // 42a86ad1
    38  	SUB	$0xaaaaaa, R2, R3               // SUB $11184810, R2, R3                  // 43a82ad163a86ad1
    39  	SUB	$0xaaaaaa, R2                   // SUB $11184810, R2                      // 42a82ad142a86ad1
    40  	ADDW	$0x60060, R2                    // ADDW	$393312, R2                       // 4280011142804111
    41  	ADD	$0x186a0, R2, R5                // ADD	$100000, R2, R5                   // 45801a91a5604091
    42  	SUB	$0xe7791f700, R3, R1            // SUB	$62135596800, R3, R1              // 1be09ed23bf2aef2db01c0f261001bcb
    43  	ADD	$0x3fffffffc000, R5             // ADD	$70368744161280, R5               // fb7f72b2a5001b8b
    44  	ADD	R1>>11, R2, R3
    45  	ADD	R1<<22, R2, R3
    46  	ADD	R1->33, R2, R3
    47  	AND	R1@>33, R2, R3
    48  	ADD	R1.UXTB, R2, R3                 // 4300218b
    49  	ADD	R1.UXTB<<4, R2, R3              // 4310218b
    50  	ADD	R2, RSP, RSP                    // ff63228b
    51  	ADD	R2.SXTX<<1, RSP, RSP            // ffe7228b
    52  	ADD	ZR.SXTX<<1, R2, R3              // 43e43f8b
    53  	ADDW	R2.SXTW, R10, R12               // 4cc1220b
    54  	ADD	R19.UXTX, R14, R17              // d161338b
    55  	ADDSW	R19.UXTW, R14, R17              // d141332b
    56  	ADDS	R12.SXTX, R3, R1                // 61e02cab
    57  	SUB	R19.UXTH<<4, R2, R21            // 553033cb
    58  	SUBW	R1.UXTX<<1, R3, R2              // 6264214b
    59  	SUBS	R3.UXTX, R8, R9                 // 096123eb
    60  	SUBSW	R17.UXTH, R15, R21              // f521316b
    61  	SUBW	ZR<<14, R19, R13                // 6d3a1f4b
    62  	CMP	R2.SXTH, R13                    // bfa122eb
    63  	CMN	R1.SXTX<<2, R10                 // 5fe921ab
    64  	CMPW	R2.UXTH<<3, R11                 // 7f2d226b
    65  	CMNW	R1.SXTB, R9                     // 3f81212b
    66  	ADD	R1<<1, RSP, R3                  // e367218b
    67  	ADDW	R1<<2, R3, RSP                  // 7f48210b
    68  	SUB	R1<<3, RSP                      // ff6f21cb
    69  	SUBS	R1<<4, RSP, R3                  // e37321eb
    70  	ADDS	R1<<1, RSP, R4                  // e46721ab
    71  	CMP	R1<<2, RSP                      // ff6b21eb
    72  	CMN	R1<<3, RSP                      // ff6f21ab
    73  	ADDS	R1<<1, ZR, R4                   // e40701ab
    74  	ADD	R3<<50, ZR, ZR                  // ffcb038b
    75  	CMP	R4<<24, ZR                      // ff6304eb
    76  	CMPW	$0x60060, R2                    // CMPW	$393312, R2                       // 1b0c8052db00a0725f001b6b
    77  	CMPW	$40960, R0                      // 1f284071
    78  	CMPW	$27745, R2                      // 3b8c8d525f001b6b
    79  	CMNW	$0x3fffffc0, R2                 // CMNW	$1073741760, R2                   // fb5f1a325f001b2b
    80  	CMPW	$0xffff0, R1                    // CMPW	$1048560, R1                      // fb3f1c323f001b6b
    81  	CMP	$0xffffffffffa0, R3             // CMP	$281474976710560, R3              // fb0b80921b00e0f27f001beb
    82  	CMP	$0xf4240, R1                    // CMP	$1000000, R1                      // 1b4888d2fb01a0f23f001beb
    83  	CMP     $3343198598084851058, R3        // 5bae8ed2db8daef23badcdf2bbcce5f27f001beb
    84  	CMP	$3, R2
    85  	CMP	R1, R2
    86  	CMP	R1->11, R2
    87  	CMP	R1>>22, R2
    88  	CMP	R1<<33, R2
    89  	CMP	R22.SXTX, RSP                    // ffe336eb
    90  	CMP	$0x22220000, RSP                 // CMP $572653568, RSP   // 5b44a4d2ff633beb
    91  	CMPW	$0x22220000, RSP                 // CMPW $572653568, RSP  // 5b44a452ff433b6b
    92  	CCMN	MI, ZR, R1, $4	                 // e44341ba
    93  	// MADD Rn,Rm,Ra,Rd
    94  	MADD	R1, R2, R3, R4                   // 6408019b
    95  	// CLS
    96  	CLSW	R1, R2
    97  	CLS	R1, R2
    98  	SBC	$0, R1                           // 21001fda
    99  	SBCW	$0, R1                           // 21001f5a
   100  	SBCS	$0, R1                           // 21001ffa
   101  	SBCSW	$0, R1                           // 21001f7a
   102  	ADC	$0, R1                           // 21001f9a
   103  	ADCW	$0, R1                           // 21001f1a
   104  	ADCS	$0, R1                           // 21001fba
   105  	ADCSW	$0, R1                           // 21001f3a
   106  
   107  // fp/simd instructions.
   108  	VADDP	V1.B16, V2.B16, V3.B16          // 43bc214e
   109  	VADDP	V1.S4, V2.S4, V3.S4             // 43bca14e
   110  	VADDP	V1.D2, V2.D2, V3.D2             // 43bce14e
   111  	VAND	V21.B8, V12.B8, V3.B8           // 831d350e
   112  	VCMEQ	V1.H4, V2.H4, V3.H4             // 438c612e
   113  	VORR	V5.B16, V4.B16, V3.B16          // 831ca54e
   114  	VADD	V16.S4, V5.S4, V9.S4            // a984b04e
   115  	VEOR	V0.B16, V1.B16, V0.B16          // 201c206e
   116  	VADDV	V0.S4, V0                       // 00b8b14e
   117  	VMOVI	$82, V0.B16                     // 40e6024f
   118  	VUADDLV	V6.B16, V6                      // c638306e
   119  	VADD	V1, V2, V3                      // 4384e15e
   120  	VADD	V1, V3, V3                      // 6384e15e
   121  	VSUB	V12, V30, V30                   // de87ec7e
   122  	VSUB	V12, V20, V30                   // 9e86ec7e
   123  	VFMLA	V1.D2, V12.D2, V1.D2            // 81cd614e
   124  	VFMLA	V1.S2, V12.S2, V1.S2            // 81cd210e
   125  	VFMLA	V1.S4, V12.S4, V1.S4            // 81cd214e
   126  	VFMLS	V1.D2, V12.D2, V1.D2            // 81cde14e
   127  	VFMLS	V1.S2, V12.S2, V1.S2            // 81cda10e
   128  	VFMLS	V1.S4, V12.S4, V1.S4            // 81cda14e
   129  	VEXT	$4, V2.B8, V1.B8, V3.B8         // 2320022e
   130  	VEXT	$8, V2.B16, V1.B16, V3.B16      // 2340026e
   131  	VRBIT	V24.B16, V24.B16                // 185b606e
   132  	VRBIT	V24.B8, V24.B8                  // 185b602e
   133  	VUSHR	$56, V1.D2, V2.D2               // 2204486f
   134  	VUSHR	$24, V1.S4, V2.S4               // 2204286f
   135  	VUSHR	$24, V1.S2, V2.S2               // 2204282f
   136  	VUSHR	$8, V1.H4, V2.H4                // 2204182f
   137  	VUSHR	$8, V1.H8, V2.H8                // 2204186f
   138  	VUSHR	$2, V1.B8, V2.B8                // 22040e2f
   139  	VUSHR	$2, V1.B16, V2.B16              // 22040e6f
   140  	VSHL	$56, V1.D2, V2.D2               // 2254784f
   141  	VSHL	$24, V1.S4, V2.S4               // 2254384f
   142  	VSHL	$24, V1.S2, V2.S2               // 2254380f
   143  	VSHL	$8, V1.H4, V2.H4                // 2254180f
   144  	VSHL	$8, V1.H8, V2.H8                // 2254184f
   145  	VSHL	$2, V1.B8, V2.B8                // 22540a0f
   146  	VSHL	$2, V1.B16, V2.B16              // 22540a4f
   147  	VSRI	$56, V1.D2, V2.D2               // 2244486f
   148  	VSRI	$24, V1.S4, V2.S4               // 2244286f
   149  	VSRI	$24, V1.S2, V2.S2               // 2244282f
   150  	VSRI	$8, V1.H4, V2.H4                // 2244182f
   151  	VSRI	$8, V1.H8, V2.H8                // 2244186f
   152  	VSRI	$2, V1.B8, V2.B8                // 22440e2f
   153  	VSRI	$2, V1.B16, V2.B16              // 22440e6f
   154  	VSLI	$7, V2.B16, V3.B16              // 43540f6f
   155  	VSLI	$15, V3.H4, V4.H4               // 64541f2f
   156  	VSLI	$31, V5.S4, V6.S4               // a6543f6f
   157  	VSLI	$63, V7.D2, V8.D2               // e8547f6f
   158  	VUSRA	$8, V2.B16, V3.B16              // 4314086f
   159  	VUSRA	$16, V3.H4, V4.H4               // 6414102f
   160  	VUSRA	$32, V5.S4, V6.S4               // a614206f
   161  	VUSRA	$64, V7.D2, V8.D2               // e814406f
   162  	VTBL	V22.B16, [V28.B16, V29.B16], V11.B16                                    // 8b23164e
   163  	VTBL	V18.B8, [V17.B16, V18.B16, V19.B16], V22.B8                             // 3642120e
   164  	VTBL	V31.B8, [V14.B16, V15.B16, V16.B16, V17.B16], V15.B8                    // cf611f0e
   165  	VTBL	V14.B16, [V16.B16], V11.B16                                             // 0b020e4e
   166  	VTBL	V28.B16, [V25.B16, V26.B16], V5.B16                                     // 25231c4e
   167  	VTBL	V16.B8, [V4.B16, V5.B16, V6.B16], V12.B8                                // 8c40100e
   168  	VTBL	V4.B8, [V16.B16, V17.B16, V18.B16, V19.B16], V4.B8                      // 0462040e
   169  	VTBL	V15.B8, [V1.B16], V20.B8                                                // 34000f0e
   170  	VTBL	V26.B16, [V2.B16, V3.B16], V26.B16                                      // 5a201a4e
   171  	VTBL	V15.B8, [V6.B16, V7.B16, V8.B16], V2.B8                                 // c2400f0e
   172  	VTBL	V2.B16, [V27.B16, V28.B16, V29.B16, V30.B16], V18.B16                   // 7263024e
   173  	VTBL	V11.B16, [V13.B16], V27.B16                                             // bb010b4e
   174  	VTBL	V3.B8, [V7.B16, V8.B16], V25.B8                                         // f920030e
   175  	VTBL	V14.B16, [V3.B16, V4.B16, V5.B16], V17.B16                              // 71400e4e
   176  	VTBL	V13.B16, [V29.B16, V30.B16, V31.B16, V0.B16], V28.B16                   // bc630d4e
   177  	VTBL	V3.B8, [V27.B16], V8.B8                                                 // 6803030e
   178  	VTBX	V22.B16, [V28.B16, V29.B16], V11.B16                                    // 8b33164e
   179  	VTBX	V18.B8, [V17.B16, V18.B16, V19.B16], V22.B8                             // 3652120e
   180  	VTBX	V31.B8, [V14.B16, V15.B16, V16.B16, V17.B16], V15.B8                    // cf711f0e
   181  	VTBX	V14.B16, [V16.B16], V11.B16                                             // 0b120e4e
   182  	VTBX	V28.B16, [V25.B16, V26.B16], V5.B16                                     // 25331c4e
   183  	VTBX	V16.B8, [V4.B16, V5.B16, V6.B16], V12.B8                                // 8c50100e
   184  	VTBX	V4.B8, [V16.B16, V17.B16, V18.B16, V19.B16], V4.B8                      // 0472040e
   185  	VTBX	V15.B8, [V1.B16], V20.B8                                                // 34100f0e
   186  	VTBX	V26.B16, [V2.B16, V3.B16], V26.B16                                      // 5a301a4e
   187  	VTBX	V15.B8, [V6.B16, V7.B16, V8.B16], V2.B8                                 // c2500f0e
   188  	VTBX	V2.B16, [V27.B16, V28.B16, V29.B16, V30.B16], V18.B16                   // 7273024e
   189  	VTBX	V11.B16, [V13.B16], V27.B16                                             // bb110b4e
   190  	VTBX	V3.B8, [V7.B16, V8.B16], V25.B8                                         // f930030e
   191  	VTBX	V14.B16, [V3.B16, V4.B16, V5.B16], V17.B16                              // 71500e4e
   192  	VTBX	V13.B16, [V29.B16, V30.B16, V31.B16, V0.B16], V28.B16                   // bc730d4e
   193  	VTBX	V3.B8, [V27.B16], V8.B8                                                 // 6813030e
   194  	VZIP1	V16.H8, V3.H8, V19.H8           // 7338504e
   195  	VZIP2	V22.D2, V25.D2, V21.D2          // 357bd64e
   196  	VZIP1	V6.D2, V9.D2, V11.D2            // 2b39c64e
   197  	VZIP2	V10.D2, V13.D2, V3.D2           // a379ca4e
   198  	VZIP1	V17.S2, V4.S2, V26.S2           // 9a38910e
   199  	VZIP2	V25.S2, V14.S2, V25.S2          // d979990e
   200  	VUXTL	V30.B8, V30.H8                  // dea7082f
   201  	VUXTL	V30.H4, V29.S4                  // dda7102f
   202  	VUXTL	V29.S2, V2.D2                   // a2a7202f
   203  	VUXTL2	V30.H8, V30.S4                  // dea7106f
   204  	VUXTL2	V29.S4, V2.D2                   // a2a7206f
   205  	VUXTL2	V30.B16, V2.H8                  // c2a7086f
   206  	VBIT	V21.B16, V25.B16, V4.B16        // 241fb56e
   207  	VBSL	V23.B16, V3.B16, V7.B16         // 671c776e
   208  	VCMTST	V2.B8, V29.B8, V2.B8            // a28f220e
   209  	VCMTST	V2.D2, V23.D2, V3.D2            // e38ee24e
   210  	VSUB	V2.B8, V30.B8, V30.B8           // de87222e
   211  	VUZP1	V0.B8, V30.B8, V1.B8            // c11b000e
   212  	VUZP1	V1.B16, V29.B16, V2.B16         // a21b014e
   213  	VUZP1	V2.H4, V28.H4, V3.H4            // 831b420e
   214  	VUZP1	V3.H8, V27.H8, V4.H8            // 641b434e
   215  	VUZP1	V28.S2, V2.S2, V5.S2            // 45189c0e
   216  	VUZP1	V29.S4, V1.S4, V6.S4            // 26189d4e
   217  	VUZP1	V30.D2, V0.D2, V7.D2            // 0718de4e
   218  	VUZP2	V0.D2, V30.D2, V1.D2            // c15bc04e
   219  	VUZP2	V30.D2, V0.D2, V29.D2           // 1d58de4e
   220  	VUSHLL	$0, V30.B8, V30.H8              // dea7082f
   221  	VUSHLL	$0, V30.H4, V29.S4              // dda7102f
   222  	VUSHLL	$0, V29.S2, V2.D2               // a2a7202f
   223  	VUSHLL2	$0, V30.B16, V2.H8              // c2a7086f
   224  	VUSHLL2	$0, V30.H8, V30.S4              // dea7106f
   225  	VUSHLL2	$0, V29.S4, V2.D2               // a2a7206f
   226  	VUSHLL	$7, V30.B8, V30.H8              // dea70f2f
   227  	VUSHLL	$15, V30.H4, V29.S4             // dda71f2f
   228  	VUSHLL2	$31, V30.S4, V2.D2              // c2a73f6f
   229  	VBIF	V0.B8, V30.B8, V1.B8            // c11fe02e
   230  	VBIF	V30.B16, V0.B16, V2.B16         // 021cfe6e
   231  	FMOVS	$(4.0), F0                      // 0010221e
   232  	FMOVD	$(4.0), F0                      // 0010621e
   233  	FMOVS	$(0.265625), F1                 // 01302a1e
   234  	FMOVD	$(0.1796875), F2                // 02f0681e
   235  	FMOVS	$(0.96875), F3                  // 03f02d1e
   236  	FMOVD	$(28.0), F4                     // 0490671e
   237  	FMOVD	$0, F0                          // e003679e
   238  	FMOVS	$0, F0                          // e003271e
   239  	FMOVD	ZR, F0                          // e003679e
   240  	FMOVS	ZR, F0                          // e003271e
   241  	FMOVD	F1, ZR                          // 3f00669e
   242  	FMOVS	F1, ZR                          // 3f00261e
   243  	VUADDW	V9.B8, V12.H8, V14.H8           // 8e11292e
   244  	VUADDW	V13.H4, V10.S4, V11.S4          // 4b116d2e
   245  	VUADDW	V21.S2, V24.D2, V29.D2          // 1d13b52e
   246  	VUADDW2	V9.B16, V12.H8, V14.H8          // 8e11296e
   247  	VUADDW2	V13.H8, V20.S4, V30.S4          // 9e126d6e
   248  	VUADDW2	V21.S4, V24.D2, V29.D2          // 1d13b56e
   249  	VUMAX	V3.B8, V2.B8, V1.B8             // 4164232e
   250  	VUMAX	V3.B16, V2.B16, V1.B16          // 4164236e
   251  	VUMAX	V3.H4, V2.H4, V1.H4             // 4164632e
   252  	VUMAX	V3.H8, V2.H8, V1.H8             // 4164636e
   253  	VUMAX	V3.S2, V2.S2, V1.S2             // 4164a32e
   254  	VUMAX	V3.S4, V2.S4, V1.S4             // 4164a36e
   255  	VUMIN	V3.B8, V2.B8, V1.B8             // 416c232e
   256  	VUMIN	V3.B16, V2.B16, V1.B16          // 416c236e
   257  	VUMIN	V3.H4, V2.H4, V1.H4             // 416c632e
   258  	VUMIN	V3.H8, V2.H8, V1.H8             // 416c636e
   259  	VUMIN	V3.S2, V2.S2, V1.S2             // 416ca32e
   260  	VUMIN	V3.S4, V2.S4, V1.S4             // 416ca36e
   261  	FCCMPS	LT, F1, F2, $1	                // 41b4211e
   262  	FMADDS	F1, F3, F2, F4                  // 440c011f
   263  	FMADDD	F4, F5, F4, F4                  // 8414441f
   264  	FMSUBS	F13, F21, F13, F19              // b3d50d1f
   265  	FMSUBD	F11, F7, F15, F31               // ff9d4b1f
   266  	FNMADDS	F1, F3, F2, F4                  // 440c211f
   267  	FNMADDD	F1, F3, F2, F4                  // 440c611f
   268  	FNMSUBS	F1, F3, F2, F4                  // 448c211f
   269  	FNMSUBD	F1, F3, F2, F4                  // 448c611f
   270  	FADDS	F2, F3, F4                      // 6428221e
   271  	FADDD	F1, F2                          // 4228611e
   272  	VDUP	V19.S[0], V17.S4                // 7106044e
   273  	VTRN1	V3.D2, V2.D2, V20.D2            // 5428c34e
   274  	VTRN2	V3.D2, V2.D2, V21.D2            // 5568c34e
   275  	VTRN1	V5.D2, V4.D2, V22.D2            // 9628c54e
   276  	VTRN2	V5.D2, V4.D2, V23.D2            // 9768c54e
   277  
   278  
   279  // special
   280  	PRFM	(R2), PLDL1KEEP                 // 400080f9
   281  	PRFM	16(R2), PLDL1KEEP               // 400880f9
   282  	PRFM	48(R6), PSTL2STRM               // d31880f9
   283  	PRFM	8(R12), PLIL3STRM               // 8d0580f9
   284  	PRFM	(R8), $25                       // 190180f9
   285  	PRFM	8(R9), $30                      // 3e0580f9
   286  	NOOP                                    // 1f2003d5
   287  	HINT $0                                 // 1f2003d5
   288  	DMB	$1
   289  	SVC
   290  
   291  // encryption
   292  	SHA256H	V9.S4, V3, V2                   // 6240095e
   293  	SHA256H2	V9.S4, V4, V3           // 8350095e
   294  	SHA256SU0	V8.S4, V7.S4            // 0729285e
   295  	SHA256SU1	V6.S4, V5.S4, V7.S4     // a760065e
   296  	SHA1SU0	V11.S4, V8.S4, V6.S4            // 06310b5e
   297  	SHA1SU1	V5.S4, V1.S4                    // a118285e
   298  	SHA1C	V1.S4, V2, V3                   // 4300015e
   299  	SHA1H	V5, V4                          // a408285e
   300  	SHA1M	V8.S4, V7, V6                   // e620085e
   301  	SHA1P	V11.S4, V10, V9                 // 49110b5e
   302  	SHA512H	V2.D2, V1, V0                   // 208062ce
   303  	SHA512H2	V4.D2, V3, V2           // 628464ce
   304  	SHA512SU0	V9.D2, V8.D2            // 2881c0ce
   305  	SHA512SU1	V7.D2, V6.D2, V5.D2     // c58867ce
   306  	VRAX1	V26.D2, V29.D2, V30.D2          // be8f7ace
   307  	VXAR	$63, V27.D2, V21.D2, V26.D2     // bafe9bce
   308  	VPMULL	V2.D1, V1.D1, V3.Q1             // 23e0e20e
   309  	VPMULL2	V2.D2, V1.D2, V4.Q1             // 24e0e24e
   310  	VPMULL	V2.B8, V1.B8, V3.H8             // 23e0220e
   311  	VPMULL2	V2.B16, V1.B16, V4.H8           // 24e0224e
   312  	VEOR3	V2.B16, V7.B16, V12.B16, V25.B16            // 990907ce
   313  	VBCAX	V1.B16, V2.B16, V26.B16, V31.B16            // 5f0722ce
   314  	VREV32	V5.B16, V5.B16                  // a508206e
   315  	VREV64	V2.S2, V3.S2                    // 4308a00e
   316  	VREV64	V2.S4, V3.S4                    // 4308a04e
   317  
   318  // logical ops
   319  //
   320  // make sure constants get encoded into an instruction when it could
   321  	AND	R1@>33, R2
   322  	AND	$(1<<63), R1                        // AND	$-9223372036854775808, R1       // 21004192
   323  	AND	$(1<<63-1), R1                      // AND	$9223372036854775807, R1        // 21f84092
   324  	ORR	$(1<<63), R1                        // ORR	$-9223372036854775808, R1       // 210041b2
   325  	ORR	$(1<<63-1), R1                      // ORR	$9223372036854775807, R1        // 21f840b2
   326  	EOR	$(1<<63), R1                        // EOR	$-9223372036854775808, R1       // 210041d2
   327  	EOR	$(1<<63-1), R1                      // EOR	$9223372036854775807, R1        // 21f840d2
   328  	ANDW	$0x3ff00000, R2                     // ANDW	$1072693248, R2                 // 42240c12
   329  	BICW	$0x3ff00000, R2                     // BICW	$1072693248, R2                 // 42540212
   330  	ORRW	$0x3ff00000, R2                     // ORRW	$1072693248, R2                 // 42240c32
   331  	ORNW	$0x3ff00000, R2                     // ORNW	$1072693248, R2                 // 42540232
   332  	EORW	$0x3ff00000, R2                     // EORW	$1072693248, R2                 // 42240c52
   333  	EONW	$0x3ff00000, R2                     // EONW	$1072693248, R2                 // 42540252
   334  	AND	$0x22220000, R3, R4                 // AND	$572653568, R3, R4              // 5b44a4d264001b8a
   335  	ORR	$0x22220000, R3, R4                 // ORR	$572653568, R3, R4              // 5b44a4d264001baa
   336  	EOR	$0x22220000, R3, R4                 // EOR	$572653568, R3, R4              // 5b44a4d264001bca
   337  	BIC	$0x22220000, R3, R4                 // BIC	$572653568, R3, R4              // 5b44a4d264003b8a
   338  	ORN	$0x22220000, R3, R4                 // ORN	$572653568, R3, R4              // 5b44a4d264003baa
   339  	EON	$0x22220000, R3, R4                 // EON	$572653568, R3, R4              // 5b44a4d264003bca
   340  	ANDS	$0x22220000, R3, R4                 // ANDS	$572653568, R3, R4              // 5b44a4d264001bea
   341  	BICS	$0x22220000, R3, R4                 // BICS	$572653568, R3, R4              // 5b44a4d264003bea
   342  	EOR	$0xe03fffffffffffff, R20, R22       // EOR	$-2287828610704211969, R20, R22 // 96e243d2
   343  	TSTW	$0x600000006, R1                    // TSTW	$25769803782, R1                // 3f041f72
   344  	TST	$0x4900000049, R0                   // TST	$313532612681, R0               // 3b0980d23b09c0f21f001bea
   345  	ORR	$0x170000, R2, R1                   // ORR	$1507328, R2, R1                // fb02a0d241001baa
   346  	AND	$0xff00ff, R2                       // AND	$16711935, R2                   // fb1f80d2fb1fa0f242001b8a
   347  	AND	$0xff00ffff, R1                     // AND	$4278255615, R1                 // fbff9fd21be0bff221001b8a
   348  	ANDS	$0xffff, R2                         // ANDS	$65535, R2                      // 423c40f2
   349  	AND	$0x7fffffff, R3                     // AND	$2147483647, R3                 // 63784092
   350  	ANDS	$0x0ffffffff80000000, R2            // ANDS	$-2147483648, R2                // 428061f2
   351  	AND	$0xfffff, R2                        // AND	$1048575, R2                    // 424c4092
   352  	ANDW	$0xf00fffff, R1                     // ANDW	$4027580415, R1                 // 215c0412
   353  	ANDSW	$0xff00ffff, R1                     // ANDSW	$4278255615, R1                 // 215c0872
   354  	TST	$0x11223344, R2                     // TST	$287454020, R2                  // 9b6886d25b24a2f25f001bea
   355  	TSTW	$0xa000, R3                         // TSTW	$40960, R3                      // 1b0094527f001b6a
   356  	BICW	$0xa000, R3                         // BICW	$40960, R3                      // 1b00945263003b0a
   357  	ORRW	$0x1b000, R2, R3                    // ORRW	$110592, R2, R3                 // 1b0096523b00a07243001b2a
   358  	TSTW	$0x500000, R1                       // TSTW	$5242880, R1                    // 1b0aa0523f001b6a
   359  	TSTW	$0xff00ff, R1                       // TSTW	$16711935, R1                   // 3f9c0072
   360  	TSTW	$0x60060, R5                        // TSTW	$393312, R5                     // 1b0c8052db00a072bf001b6a
   361  	TSTW	$0x6006000060060, R5                // TSTW	$1689262177517664, R5           // 1b0c8052db00a072bf001b6a
   362  	ANDW	$0x6006000060060, R5                // ANDW	$1689262177517664, R5           // 1b0c8052db00a072a5001b0a
   363  	ANDSW	$0x6006000060060, R5                // ANDSW	$1689262177517664, R5           // 1b0c8052db00a072a5001b6a
   364  	EORW	$0x6006000060060, R5                // EORW	$1689262177517664, R5           // 1b0c8052db00a072a5001b4a
   365  	ORRW	$0x6006000060060, R5                // ORRW	$1689262177517664, R5           // 1b0c8052db00a072a5001b2a
   366  	BICW	$0x6006000060060, R5                // BICW	$1689262177517664, R5           // 1b0c8052db00a072a5003b0a
   367  	EONW	$0x6006000060060, R5                // EONW	$1689262177517664, R5           // 1b0c8052db00a072a5003b4a
   368  	ORNW	$0x6006000060060, R5                // ORNW	$1689262177517664, R5           // 1b0c8052db00a072a5003b2a
   369  	BICSW	$0x6006000060060, R5                // BICSW	$1689262177517664, R5           // 1b0c8052db00a072a5003b6a
   370  	AND	$1, ZR                              // fb0340b2ff031b8a
   371  	ANDW	$1, ZR                              // fb030032ff031b0a
   372  	// TODO: this could have better encoding
   373  	ANDW	$-1, R10                            // 1b0080124a011b0a
   374  	AND	$8, R0, RSP                         // 1f007d92
   375  	ORR	$8, R0, RSP                         // 1f007db2
   376  	EOR	$8, R0, RSP                         // 1f007dd2
   377  	BIC	$8, R0, RSP                         // 1ff87c92
   378  	ORN	$8, R0, RSP                         // 1ff87cb2
   379  	EON	$8, R0, RSP                         // 1ff87cd2
   380  	TST	$15, R2                             // 5f0c40f2
   381  	TST	R1, R2                              // 5f0001ea
   382  	TST	R1->11, R2                          // 5f2c81ea
   383  	TST	R1>>22, R2                          // 5f5841ea
   384  	TST	R1<<33, R2                          // 5f8401ea
   385  	TST	$0x22220000, R3                     // TST $572653568, R3           // 5b44a4d27f001bea
   386  
   387  // move an immediate to a Rn.
   388  	MOVD	$0x3fffffffc000, R0           // MOVD	$70368744161280, R0         // e07f72b2
   389  	MOVW	$1000000, R4                  // 04488852e401a072
   390  	MOVW	$0xaaaa0000, R1               // MOVW	$2863267840, R1             // 4155b552
   391  	MOVW	$0xaaaaffff, R1               // MOVW	$2863333375, R1             // a1aaaa12
   392  	MOVW	$0xaaaa, R1                   // MOVW	$43690, R1                  // 41559552
   393  	MOVW	$0xffffaaaa, R1               // MOVW	$4294945450, R1             // a1aa8a12
   394  	MOVW	$0xffff0000, R1               // MOVW	$4294901760, R1             // e1ffbf52
   395  	MOVD	$0xffff00000000000, R1        // MOVD	$1152903912420802560, R1    // e13f54b2
   396  	MOVD	$0x1111000000001111, R1       // MOVD	$1229764173248860433, R1    // 212282d22122e2f2
   397  	MOVD	$0x1111ffff1111ffff, R1       // MOVD	$1230045644216991743, R1    // c1ddbd922122e2f2
   398  	MOVD	$0x1111222233334444, R1       // MOVD	$1229801703532086340, R1    // 818888d26166a6f24144c4f22122e2f2
   399  	MOVD	$0xaaaaffff, R1               // MOVD	$2863333375, R1             // e1ff9fd24155b5f2
   400  	MOVD	$0x11110000, R1               // MOVD	$286326784, R1              // 2122a2d2
   401  	MOVD	$0xaaaa0000aaaa1111, R1       // MOVD	$-6149102338357718767, R1   // 212282d24155b5f24155f5f2
   402  	MOVD	$0x1111ffff1111aaaa, R1       // MOVD	$1230045644216969898, R1    // a1aa8a922122a2f22122e2f2
   403  	MOVD	$0, R1                        // e1031faa
   404  	MOVD	$-1, R1                       // 01008092
   405  	MOVD	$0x210000, R0                 // MOVD	$2162688, R0                // 2004a0d2
   406  	MOVD	$0xffffffffffffaaaa, R1       // MOVD	$-21846, R1                 // a1aa8a92
   407  	MOVW	$1, ZR                        // 3f008052
   408  	MOVW	$1, R1
   409  	MOVD	$1, ZR                        // 3f0080d2
   410  	MOVD	$1, R1
   411  	MOVK	$1, R1
   412  	MOVD	$0x1000100010001000, RSP      // MOVD	$1152939097061330944, RSP   // ff8304b2
   413  	MOVW	$0x10001000, RSP              // MOVW	$268439552, RSP             // ff830432
   414  	ADDW	$0x10001000, R1               // ADDW	$268439552, R1              // fb83043221001b0b
   415  	ADDW	$0x22220000, RSP, R3          // ADDW	$572653568, RSP, R3         // 5b44a452e3433b0b
   416  
   417  // move a large constant to a Vd.
   418  	VMOVS	$0x80402010, V11                                      // VMOVS	$2151686160, V11
   419  	VMOVD	$0x8040201008040201, V20                              // VMOVD	$-9205322385119247871, V20
   420  	VMOVQ	$0x7040201008040201, $0x8040201008040201, V10         // VMOVQ	$8088500183983456769, $-9205322385119247871, V10
   421  	VMOVQ	$0x8040201008040202, $0x7040201008040201, V20         // VMOVQ	$-9205322385119247870, $8088500183983456769, V20
   422  
   423  // mov(to/from sp)
   424  	MOVD	$0x1002(RSP), R1              // MOVD	$4098(RSP), R1              // e107409121080091
   425  	MOVD	$0x1708(RSP), RSP             // MOVD	$5896(RSP), RSP             // ff074091ff231c91
   426  	MOVD	$0x2001(R7), R1               // MOVD	$8193(R7), R1               // e108409121040091
   427  	MOVD	$0xffffff(R7), R1             // MOVD	$16777215(R7), R1           // e1fc7f9121fc3f91
   428  	MOVD	$-0x1(R7), R1                 // MOVD	$-1(R7), R1                 // e10400d1
   429  	MOVD	$-0x30(R7), R1                // MOVD	$-48(R7), R1                // e1c000d1
   430  	MOVD	$-0x708(R7), R1               // MOVD	$-1800(R7), R1              // e1201cd1
   431  	MOVD	$-0x2000(RSP), R1             // MOVD	$-8192(RSP), R1             // e10b40d1
   432  	MOVD	$-0x10000(RSP), RSP           // MOVD	$-65536(RSP), RSP           // ff4340d1
   433  	MOVW	R1, R2
   434  	MOVW	ZR, R1
   435  	MOVW	R1, ZR
   436  	MOVD	R1, R2
   437  	MOVD	ZR, R1
   438  
   439  // store and load
   440  //
   441  // LD1/ST1
   442  	VLD1	(R8), [V1.B16, V2.B16]                          // 01a1404c
   443  	VLD1.P	(R3), [V31.H8, V0.H8]                           // 7fa4df4c
   444  	VLD1.P	(R8)(R20), [V21.B16, V22.B16]                   // 15a1d44c
   445  	VLD1.P	64(R1), [V5.B16, V6.B16, V7.B16, V8.B16]        // 2520df4c
   446  	VLD1.P	1(R0), V4.B[15]                                 // 041cdf4d
   447  	VLD1.P	2(R0), V4.H[7]                                  // 0458df4d
   448  	VLD1.P	4(R0), V4.S[3]                                  // 0490df4d
   449  	VLD1.P	8(R0), V4.D[1]                                  // 0484df4d
   450  	VLD1.P	(R0)(R1), V4.D[1]                               // 0484c14d
   451  	VLD1	(R0), V4.D[1]                                   // 0484404d
   452  	VST1.P	[V4.S4, V5.S4], 32(R1)                          // 24a89f4c
   453  	VST1	[V0.S4, V1.S4], (R0)                            // 00a8004c
   454  	VLD1	(R30), [V15.S2, V16.S2]                         // cfab400c
   455  	VLD1.P	24(R30), [V3.S2,V4.S2,V5.S2]                    // c36bdf0c
   456  	VLD2	(R29), [V23.H8, V24.H8]                         // b787404c
   457  	VLD2.P	16(R0), [V18.B8, V19.B8]                        // 1280df0c
   458  	VLD2.P	(R1)(R2), [V15.S2, V16.S2]                      // 2f88c20c
   459  	VLD3	(R27), [V11.S4, V12.S4, V13.S4]                 // 6b4b404c
   460  	VLD3.P	48(RSP), [V11.S4, V12.S4, V13.S4]               // eb4bdf4c
   461  	VLD3.P	(R30)(R2), [V14.D2, V15.D2, V16.D2]             // ce4fc24c
   462  	VLD4	(R15), [V10.H4, V11.H4, V12.H4, V13.H4]         // ea05400c
   463  	VLD4.P	32(R24), [V31.B8, V0.B8, V1.B8, V2.B8]          // 1f03df0c
   464  	VLD4.P	(R13)(R9), [V14.S2, V15.S2, V16.S2, V17.S2]     // ae09c90c
   465  	VLD1R	(R1), [V9.B8]                                   // 29c0400d
   466  	VLD1R.P	(R1), [V9.B8]                                   // 29c0df0d
   467  	VLD1R.P	1(R1), [V2.B8]                                  // 22c0df0d
   468  	VLD1R.P	2(R1), [V2.H4]                                  // 22c4df0d
   469  	VLD1R	(R0), [V0.B16]                                  // 00c0404d
   470  	VLD1R.P	(R0), [V0.B16]                                  // 00c0df4d
   471  	VLD1R.P	(R15)(R1), [V15.H4]                             // efc5c10d
   472  	VLD2R	(R15), [V15.H4, V16.H4]                         // efc5600d
   473  	VLD2R.P	16(R0), [V0.D2, V1.D2]                          // 00ccff4d
   474  	VLD2R.P	(R0)(R5), [V31.D1, V0.D1]                       // 1fcce50d
   475  	VLD3R	(RSP), [V31.S2, V0.S2, V1.S2]                   // ffeb400d
   476  	VLD3R.P	6(R15), [V15.H4, V16.H4, V17.H4]                // efe5df0d
   477  	VLD3R.P	(R15)(R6), [V15.H8, V16.H8, V17.H8]             // efe5c64d
   478  	VLD4R	(R0), [V0.B8, V1.B8, V2.B8, V3.B8]              // 00e0600d
   479  	VLD4R.P	16(RSP), [V31.S4, V0.S4, V1.S4, V2.S4]          // ffebff4d
   480  	VLD4R.P	(R15)(R9), [V15.H4, V16.H4, V17.H4, V18.H4]     // efe5e90d
   481  	VST1.P	[V24.S2], 8(R2)                                 // 58789f0c
   482  	VST1	[V29.S2, V30.S2], (R29)                         // bdab000c
   483  	VST1	[V14.H4, V15.H4, V16.H4], (R27)                 // 6e67000c
   484  	VST1.P	V4.B[15], 1(R0)                                 // 041c9f4d
   485  	VST1.P	V4.H[7], 2(R0)                                  // 04589f4d
   486  	VST1.P	V4.S[3], 4(R0)                                  // 04909f4d
   487  	VST1.P	V4.D[1], 8(R0)                                  // 04849f4d
   488  	VST1.P	V4.D[1], (R0)(R1)                               // 0484814d
   489  	VST1	V4.D[1], (R0)                                   // 0484004d
   490  	VST2	[V22.H8, V23.H8], (R23)                         // f686004c
   491  	VST2.P	[V14.H4, V15.H4], 16(R17)                       // 2e869f0c
   492  	VST2.P	[V14.H4, V15.H4], (R3)(R17)                     // 6e84910c
   493  	VST3	[V1.D2, V2.D2, V3.D2], (R11)                    // 614d004c
   494  	VST3.P	[V18.S4, V19.S4, V20.S4], 48(R25)               // 324b9f4c
   495  	VST3.P	[V19.B8, V20.B8, V21.B8], (R3)(R7)              // 7340870c
   496  	VST4	[V22.D2, V23.D2, V24.D2, V25.D2], (R3)          // 760c004c
   497  	VST4.P	[V14.D2, V15.D2, V16.D2, V17.D2], 64(R15)       // ee0d9f4c
   498  	VST4.P	[V24.B8, V25.B8, V26.B8, V27.B8], (R3)(R23)     // 7800970c
   499  
   500  // pre/post-indexed
   501  	FMOVS.P	F20, 4(R0)                                      // 144400bc
   502  	FMOVS.W	F20, 4(R0)                                      // 144c00bc
   503  	FMOVD.P	F20, 8(R1)                                      // 348400fc
   504  	FMOVQ.P	F13, 11(R10)                                    // 4db5803c
   505  	FMOVQ.W	F15, 11(R20)                                    // 8fbe803c
   506  
   507  	FMOVS.P	8(R0), F20                                      // 148440bc
   508  	FMOVS.W	8(R0), F20                                      // 148c40bc
   509  	FMOVD.W	8(R1), F20                                      // 348c40fc
   510  	FMOVQ.P	11(R10), F13                                    // 4db5c03c
   511  	FMOVQ.W	11(R20), F15                                    // 8fbec03c
   512  
   513  // storing $0 to memory, $0 will be replaced with ZR.
   514  	MOVD	$0, (R1)  // 3f0000f9
   515  	MOVW	$0, (R1)  // 3f0000b9
   516  	MOVWU	$0, (R1)  // 3f0000b9
   517  	MOVH	$0, (R1)  // 3f000079
   518  	MOVHU	$0, (R1)  // 3f000079
   519  	MOVB	$0, (R1)  // 3f000039
   520  	MOVBU	$0, (R1)  // 3f000039
   521  
   522  // small offset fits into instructions
   523  	MOVB	R1, 1(R2) // 41040039
   524  	MOVH	R1, 1(R2) // 41100078
   525  	MOVH	R1, 2(R2) // 41040079
   526  	MOVW	R1, 1(R2) // 411000b8
   527  	MOVW	R1, 4(R2) // 410400b9
   528  	MOVD	R1, 1(R2) // 411000f8
   529  	MOVD	R1, 8(R2) // 410400f9
   530  	MOVD	ZR, (R1)
   531  	MOVW	ZR, (R1)
   532  	FMOVS	F1, 1(R2) // 411000bc
   533  	FMOVS	F1, 4(R2) // 410400bd
   534  	FMOVS	F20, (R0) // 140000bd
   535  	FMOVD	F1, 1(R2) // 411000fc
   536  	FMOVD	F1, 8(R2) // 410400fd
   537  	FMOVD	F20, (R2) // 540000fd
   538  	FMOVQ	F0, 32(R5)// a008803d
   539  	FMOVQ	F10, 65520(R10) // 4afdbf3d
   540  	FMOVQ	F11, 64(RSP)    // eb13803d
   541  	FMOVQ	F11, 8(R20)     // 8b82803c
   542  	FMOVQ	F11, 4(R20)     // 8b42803c
   543  
   544  	MOVB	1(R1), R2 // 22048039
   545  	MOVH	1(R1), R2 // 22108078
   546  	MOVH	2(R1), R2 // 22048079
   547  	MOVW	1(R1), R2 // 221080b8
   548  	MOVW	4(R1), R2 // 220480b9
   549  	MOVD	1(R1), R2 // 221040f8
   550  	MOVD	8(R1), R2 // 220440f9
   551  	FMOVS	(R0), F20 // 140040bd
   552  	FMOVS	1(R1), F2 // 221040bc
   553  	FMOVS	4(R1), F2 // 220440bd
   554  	FMOVD	1(R1), F2 // 221040fc
   555  	FMOVD	8(R1), F2 // 220440fd
   556  	FMOVQ	32(R5), F2 // a208c03d
   557  	FMOVQ	65520(R10), F10 // 4afdff3d
   558  	FMOVQ	64(RSP), F11    // eb13c03d
   559  
   560  // medium offsets that either fit a single instruction or can use add+ldr/str
   561  	MOVD -4095(R17), R3                        // 3bfe3fd1630340f9
   562  	MOVD -391(R17), R3                         // 3b1e06d1630340f9
   563  	MOVD -257(R17), R3                         // 3b0604d1630340f9
   564  	MOVD -256(R17), R3                         // 230250f8
   565  	MOVD 255(R17), R3                          // 23f24ff8
   566  	MOVD 256(R17), R3                          // 238240f9
   567  	MOVD 257(R17), R3                          // 3b060491630340f9
   568  	MOVD 391(R17), R3                          // 3b1e0691630340f9
   569  	MOVD 4095(R17), R3                         // 3bfe3f91630340f9
   570  
   571  	MOVD R0, -4095(R17)                        // 3bfe3fd1600300f9
   572  	MOVD R0, -391(R17)                         // 3b1e06d1600300f9
   573  	MOVD R0, -257(R17)                         // 3b0604d1600300f9
   574  	MOVD R0, -256(R17)                         // 200210f8
   575  	MOVD R0, 255(R17)                          // 20f20ff8
   576  	MOVD R0, 256(R17)                          // 208200f9
   577  	MOVD R0, 257(R17)                          // 3b060491600300f9
   578  	MOVD R0, 391(R17)                          // 3b1e0691600300f9
   579  	MOVD R0, 4095(R17)                         // 3bfe3f91600300f9
   580  	MOVD R0, 4096(R17)                         // 200208f9
   581  	MOVD R3, -4095(R17)                        // 3bfe3fd1630300f9
   582  	MOVD R3, -391(R17)                         // 3b1e06d1630300f9
   583  	MOVD R3, -257(R17)                         // 3b0604d1630300f9
   584  	MOVD R3, -256(R17)                         // 230210f8
   585  	MOVD R3, 255(R17)                          // 23f20ff8
   586  	MOVD R3, 256(R17)                          // 238200f9
   587  	MOVD R3, 257(R17)                          // 3b060491630300f9
   588  	MOVD R3, 391(R17)                          // 3b1e0691630300f9
   589  	MOVD R3, 4095(R17)                         // 3bfe3f91630300f9
   590  
   591  // large aligned offset, use two instructions(add+ldr/str).
   592  	MOVB	R1, 0x1001(R2) 		// MOVB		R1, 4097(R2)		// 5b04409161070039
   593  	MOVB	R1, 0xffffff(R2)	// MOVB		R1, 16777215(R2)	// 5bfc7f9161ff3f39
   594  	MOVH	R1, 0x2002(R2)		// MOVH		R1, 8194(R2)		// 5b08409161070079
   595  	MOVH	R1, 0x1000ffe(R2)	// MOVH		R1, 16781310(R2)	// 5bfc7f9161ff3f79
   596  	MOVW	R1, 0x4004(R2)		// MOVW		R1, 16388(R2)		// 5b104091610700b9
   597  	MOVW	R1, 0x1002ffc(R2)	// MOVW		R1, 16789500(R2)	// 5bfc7f9161ff3fb9
   598  	MOVD	R1, 0x8008(R2)		// MOVD		R1, 32776(R2)		// 5b204091610700f9
   599  	MOVD	R1, 0x1006ff8(R2)	// MOVD		R1, 16805880(R2)	// 5bfc7f9161ff3ff9
   600  	FMOVS	F1, 0x4004(R2)		// FMOVS	F1, 16388(R2)		// 5b104091610700bd
   601  	FMOVS	F1, 0x1002ffc(R2)	// FMOVS	F1, 16789500(R2)	// 5bfc7f9161ff3fbd
   602  	FMOVD	F1, 0x8008(R2)		// FMOVD	F1, 32776(R2)		// 5b204091610700fd
   603  	FMOVD	F1, 0x1006ff8(R2)	// FMOVD	F1, 16805880(R2)	// 5bfc7f9161ff3ffd
   604  
   605  	MOVB	0x1001(R1), R2 		// MOVB		4097(R1), R2		// 3b04409162078039
   606  	MOVB	0xffffff(R1), R2	// MOVB		16777215(R1), R2	// 3bfc7f9162ffbf39
   607  	MOVH	0x2002(R1), R2		// MOVH		8194(R1), R2		// 3b08409162078079
   608  	MOVH	0x1000ffe(R1), R2	// MOVH		16781310(R1), R2	// 3bfc7f9162ffbf79
   609  	MOVW	0x4004(R1), R2		// MOVW		16388(R1), R2		// 3b104091620780b9
   610  	MOVW	0x1002ffc(R1), R2	// MOVW		16789500(R1), R2	// 3bfc7f9162ffbfb9
   611  	MOVD	0x8008(R1), R2		// MOVD		32776(R1), R2		// 3b204091620740f9
   612  	MOVD	0x1006ff8(R1), R2	// MOVD		16805880(R1), R2	// 3bfc7f9162ff7ff9
   613  	FMOVS	0x4004(R1), F2		// FMOVS	16388(R1), F2		// 3b104091620740bd
   614  	FMOVS	0x1002ffc(R1), F2	// FMOVS	16789500(R1), F2	// 3bfc7f9162ff7fbd
   615  	FMOVD	0x8008(R1), F2		// FMOVD	32776(R1), F2		// 3b204091620740fd
   616  	FMOVD	0x1006ff8(R1), F2	// FMOVD	16805880(R1), F2	// 3bfc7f9162ff7ffd
   617  
   618  // very large or unaligned offset uses constant pool.
   619  // the encoding cannot be checked as the address of the constant pool is unknown.
   620  // here we only test that they can be assembled.
   621  	MOVB	R1, 0x1000000(R2)	// MOVB		R1, 16777216(R2)
   622  	MOVB	R1, 0x44332211(R2)	// MOVB		R1, 1144201745(R2)
   623  	MOVH	R1, 0x1001000(R2)	// MOVH		R1, 16781312(R2)
   624  	MOVH	R1, 0x44332211(R2)	// MOVH		R1, 1144201745(R2)
   625  	MOVW	R1, 0x1003000(R2)	// MOVW		R1, 16789504(R2)
   626  	MOVW	R1, 0x44332211(R2)	// MOVW		R1, 1144201745(R2)
   627  	MOVD	R1, 0x1007000(R2)	// MOVD		R1, 16805888(R2)
   628  	MOVD	R1, 0x44332211(R2)	// MOVD		R1, 1144201745(R2)
   629  	FMOVS	F1, 0x1003000(R2)	// FMOVS	F1, 16789504(R2)
   630  	FMOVS	F1, 0x44332211(R2)	// FMOVS	F1, 1144201745(R2)
   631  	FMOVD	F1, 0x1007000(R2)	// FMOVD	F1, 16805888(R2)
   632  	FMOVD	F1, 0x44332211(R2)	// FMOVD	F1, 1144201745(R2)
   633  
   634  	MOVB	0x1000000(R1), R2	// MOVB		16777216(R1), R2
   635  	MOVB	0x44332211(R1), R2	// MOVB		1144201745(R1), R2
   636  	MOVH	0x1000000(R1), R2	// MOVH		16777216(R1), R2
   637  	MOVH	0x44332211(R1), R2	// MOVH		1144201745(R1), R2
   638  	MOVW	0x1000000(R1), R2	// MOVW		16777216(R1), R2
   639  	MOVW	0x44332211(R1), R2	// MOVW		1144201745(R1), R2
   640  	MOVD	0x1000000(R1), R2	// MOVD		16777216(R1), R2
   641  	MOVD	0x44332211(R1), R2	// MOVD		1144201745(R1), R2
   642  	FMOVS	0x1000000(R1), F2	// FMOVS	16777216(R1), F2
   643  	FMOVS	0x44332211(R1), F2	// FMOVS	1144201745(R1), F2
   644  	FMOVD	0x1000000(R1), F2	// FMOVD	16777216(R1), F2
   645  	FMOVD	0x44332211(R1), F2	// FMOVD	1144201745(R1), F2
   646  
   647  // shifted or extended register offset.
   648  	MOVD	(R2)(R6.SXTW), R4               // 44c866f8
   649  	MOVD	(R3)(R6), R5                    // 656866f8
   650  	MOVD	(R3)(R6*1), R5                  // 656866f8
   651  	MOVD	(R2)(R6), R4                    // 446866f8
   652  	MOVWU	(R19)(R20<<2), R20              // 747a74b8
   653  	MOVD	(R2)(R3<<0), R1                 // 416863f8
   654  	MOVD	(R2)(R6<<3), R4                 // 447866f8
   655  	MOVD	(R3)(R7.SXTX<<3), R8            // 68f867f8
   656  	MOVWU	(R5)(R4.UXTW), R10              // aa4864b8
   657  	MOVBU	(R3)(R9.UXTW), R8               // 68486938
   658  	MOVBU	(R5)(R8), R10                   // aa686838
   659  	MOVHU	(R2)(R7.SXTW<<1), R11           // 4bd86778
   660  	MOVHU	(R1)(R2<<1), R5                 // 25786278
   661  	MOVB	(R9)(R3.UXTW), R6               // 2649a338
   662  	MOVB	(R10)(R6), R15                  // 4f69a638
   663  	MOVB	(R29)(R30<<0), R14              // ae6bbe38
   664  	MOVB	(R29)(R30), R14                 // ae6bbe38
   665  	MOVH	(R5)(R7.SXTX<<1), R19           // b3f8a778
   666  	MOVH	(R8)(R4<<1), R10                // 0a79a478
   667  	MOVW	(R9)(R8.SXTW<<2), R19           // 33d9a8b8
   668  	MOVW	(R1)(R4.SXTX), R11              // 2be8a4b8
   669  	MOVW	(R1)(R4.SXTX), ZR               // 3fe8a4b8
   670  	MOVW	(R2)(R5), R12                   // 4c68a5b8
   671  	FMOVS	(R2)(R6), F4                    // 446866bc
   672  	FMOVS	(R2)(R6<<2), F4                 // 447866bc
   673  	FMOVD	(R2)(R6), F4                    // 446866fc
   674  	FMOVD	(R2)(R6<<3), F4                 // 447866fc
   675  
   676  	MOVD	R5, (R2)(R6<<3)                 // 457826f8
   677  	MOVD	R9, (R6)(R7.SXTX<<3)            // c9f827f8
   678  	MOVD	ZR, (R6)(R7.SXTX<<3)            // dff827f8
   679  	MOVW	R8, (R2)(R3.UXTW<<2)            // 485823b8
   680  	MOVW	R7, (R3)(R4.SXTW)               // 67c824b8
   681  	MOVB	R4, (R2)(R6.SXTX)               // 44e82638
   682  	MOVB	R8, (R3)(R9.UXTW)               // 68482938
   683  	MOVB	R10, (R5)(R8)                   // aa682838
   684  	MOVB	R10, (R5)(R8*1)                 // aa682838
   685  	MOVH	R11, (R2)(R7.SXTW<<1)           // 4bd82778
   686  	MOVH	R5, (R1)(R2<<1)                 // 25782278
   687  	MOVH	R7, (R2)(R5.SXTX<<1)            // 47f82578
   688  	MOVH	R8, (R3)(R6.UXTW)               // 68482678
   689  	MOVB	R4, (R2)(R6.SXTX)               // 44e82638
   690  	FMOVS	F4, (R2)(R6)                    // 446826bc
   691  	FMOVS	F4, (R2)(R6<<2)                 // 447826bc
   692  	FMOVD	F4, (R2)(R6)                    // 446826fc
   693  	FMOVD	F4, (R2)(R6<<3)                 // 447826fc
   694  
   695  // vmov
   696  	VMOV	V8.S[1], R1           // 013d0c0e
   697  	VMOV	V0.D[0], R11          // 0b3c084e
   698  	VMOV	V0.D[1], R11          // 0b3c184e
   699  	VMOV	R20, V1.S[0]          // 811e044e
   700  	VMOV	R20, V1.S[1]          // 811e0c4e
   701  	VMOV	R1, V9.H4             // 290c020e
   702  	VDUP	R1, V9.H4             // 290c020e
   703  	VMOV	R22, V11.D2           // cb0e084e
   704  	VDUP	R22, V11.D2           // cb0e084e
   705  	VMOV	V2.B16, V4.B16        // 441ca24e
   706  	VMOV	V20.S[0], V20         // 9406045e
   707  	VDUP	V20.S[0], V20         // 9406045e
   708  	VMOV	V12.D[0], V12.D[1]    // 8c05186e
   709  	VMOV	V10.S[0], V12.S[1]    // 4c050c6e
   710  	VMOV	V9.H[0], V12.H[1]     // 2c05066e
   711  	VMOV	V8.B[0], V12.B[1]     // 0c05036e
   712  	VMOV	V8.B[7], V4.B[8]      // 043d116e
   713  
   714  // CBZ
   715  again:
   716  	CBZ	R1, again // CBZ R1
   717  
   718  // conditional operations
   719  	CSET	GT, R1	        // e1d79f9a
   720  	CSETW	HI, R2	        // e2979f1a
   721  	CSEL	LT, R1, R2, ZR	// 3fb0829a
   722  	CSELW	LT, R2, R3, R4	// 44b0831a
   723  	CSINC	GT, R1, ZR, R3	// 23c49f9a
   724  	CSNEG	MI, R1, R2, R3	// 234482da
   725  	CSINV	CS, R1, R2, R3	// CSINV	HS, R1, R2, R3 // 232082da
   726  	CSINV	HS, R1, R2, R3	// 232082da
   727  	CSINVW	MI, R2, ZR, R2	// 42409f5a
   728  	CINC	EQ, R4, R9	// 8914849a
   729  	CINCW	PL, R2, ZR	// 5f44821a
   730  	CINV	PL, R11, R22	// 76418bda
   731  	CINVW	LS, R7, R13	// ed80875a
   732  	CNEG	LS, R13, R7	// a7858dda
   733  	CNEGW	EQ, R8, R13	// 0d15885a
   734  
   735  // atomic ops
   736  	LDARB	(R25), R2                            // 22ffdf08
   737  	LDARH	(R5), R7                             // a7fcdf48
   738  	LDAXPW	(R10), (R20, R16)                    // 54c17f88
   739  	LDAXP	(R25), (R30, R11)                    // 3eaf7fc8
   740  	LDAXRW	(R0), R2                             // 02fc5f88
   741  	LDXPW	(R24), (R23, R11)                    // 172f7f88
   742  	LDXP	(R0), (R16, R13)                     // 10347fc8
   743  	STLRB	R11, (R22)                           // cbfe9f08
   744  	STLRH	R16, (R23)                           // f0fe9f48
   745  	STLXP	(R6, R3), (R10), R2                  // 468d22c8
   746  	STLXPW	(R6, R11), (R22), R21                // c6ae3588
   747  	STLXRW	R1, (R0), R3                         // 01fc0388
   748  	STXP	(R1, R2), (R3), R10                  // 61082ac8
   749  	STXP	(R1, R2), (RSP), R10                 // e10b2ac8
   750  	STXPW	(R1, R2), (R3), R10                  // 61082a88
   751  	STXPW	(R1, R2), (RSP), R10                 // e10b2a88
   752  	SWPAD	R5, (R6), R7                         // c780a5f8
   753  	SWPAD	R5, (RSP), R7                        // e783a5f8
   754  	SWPAW	R5, (R6), R7                         // c780a5b8
   755  	SWPAW	R5, (RSP), R7                        // e783a5b8
   756  	SWPAH	R5, (R6), R7                         // c780a578
   757  	SWPAH	R5, (RSP), R7                        // e783a578
   758  	SWPAB	R5, (R6), R7                         // c780a538
   759  	SWPAB	R5, (RSP), R7                        // e783a538
   760  	SWPALD	R5, (R6), R7                         // c780e5f8
   761  	SWPALD	R5, (RSP), R7                        // e783e5f8
   762  	SWPALW	R5, (R6), R7                         // c780e5b8
   763  	SWPALW	R5, (RSP), R7                        // e783e5b8
   764  	SWPALH	R5, (R6), R7                         // c780e578
   765  	SWPALH	R5, (RSP), R7                        // e783e578
   766  	SWPALB	R5, (R6), R7                         // c780e538
   767  	SWPALB	R5, (RSP), R7                        // e783e538
   768  	SWPD	R5, (R6), R7                         // c78025f8
   769  	SWPD	R5, (RSP), R7                        // e78325f8
   770  	SWPW	R5, (R6), R7                         // c78025b8
   771  	SWPW	R5, (RSP), R7                        // e78325b8
   772  	SWPH	R5, (R6), R7                         // c7802578
   773  	SWPH	R5, (RSP), R7                        // e7832578
   774  	SWPB	R5, (R6), R7                         // c7802538
   775  	SWPB	R5, (RSP), R7                        // e7832538
   776  	SWPLD	R5, (R6), R7                         // c78065f8
   777  	SWPLD	R5, (RSP), R7                        // e78365f8
   778  	SWPLW	R5, (R6), R7                         // c78065b8
   779  	SWPLW	R5, (RSP), R7                        // e78365b8
   780  	SWPLH	R5, (R6), R7                         // c7806578
   781  	SWPLH	R5, (RSP), R7                        // e7836578
   782  	SWPLB	R5, (R6), R7                         // c7806538
   783  	SWPLB	R5, (RSP), R7                        // e7836538
   784  	LDADDAD	R5, (R6), R7                         // c700a5f8
   785  	LDADDAD	R5, (RSP), R7                        // e703a5f8
   786  	LDADDAW	R5, (R6), R7                         // c700a5b8
   787  	LDADDAW	R5, (RSP), R7                        // e703a5b8
   788  	LDADDAH	R5, (R6), R7                         // c700a578
   789  	LDADDAH	R5, (RSP), R7                        // e703a578
   790  	LDADDAB	R5, (R6), R7                         // c700a538
   791  	LDADDAB	R5, (RSP), R7                        // e703a538
   792  	LDADDALD	R5, (R6), R7                 // c700e5f8
   793  	LDADDALD	R5, (RSP), R7                // e703e5f8
   794  	LDADDALW	R5, (R6), R7                 // c700e5b8
   795  	LDADDALW	R5, (RSP), R7                // e703e5b8
   796  	LDADDALH	R5, (R6), R7                 // c700e578
   797  	LDADDALH	R5, (RSP), R7                // e703e578
   798  	LDADDALB	R5, (R6), R7                 // c700e538
   799  	LDADDALB	R5, (RSP), R7                // e703e538
   800  	LDADDD	R5, (R6), R7                         // c70025f8
   801  	LDADDD	R5, (RSP), R7                        // e70325f8
   802  	LDADDW	R5, (R6), R7                         // c70025b8
   803  	LDADDW	R5, (RSP), R7                        // e70325b8
   804  	LDADDH	R5, (R6), R7                         // c7002578
   805  	LDADDH	R5, (RSP), R7                        // e7032578
   806  	LDADDB	R5, (R6), R7                         // c7002538
   807  	LDADDB	R5, (RSP), R7                        // e7032538
   808  	LDADDLD	R5, (R6), R7                         // c70065f8
   809  	LDADDLD	R5, (RSP), R7                        // e70365f8
   810  	LDADDLW	R5, (R6), R7                         // c70065b8
   811  	LDADDLW	R5, (RSP), R7                        // e70365b8
   812  	LDADDLH	R5, (R6), R7                         // c7006578
   813  	LDADDLH	R5, (RSP), R7                        // e7036578
   814  	LDADDLB	R5, (R6), R7                         // c7006538
   815  	LDADDLB	R5, (RSP), R7                        // e7036538
   816  	LDCLRAD	R5, (R6), R7                         // c710a5f8
   817  	LDCLRAD	R5, (RSP), R7                        // e713a5f8
   818  	LDCLRAW	R5, (R6), R7                         // c710a5b8
   819  	LDCLRAW	R5, (RSP), R7                        // e713a5b8
   820  	LDCLRAH	R5, (R6), R7                         // c710a578
   821  	LDCLRAH	R5, (RSP), R7                        // e713a578
   822  	LDCLRAB	R5, (R6), R7                         // c710a538
   823  	LDCLRAB	R5, (RSP), R7                        // e713a538
   824  	LDCLRALD	R5, (R6), R7                 // c710e5f8
   825  	LDCLRALD	R5, (RSP), R7                // e713e5f8
   826  	LDCLRALW	R5, (R6), R7                 // c710e5b8
   827  	LDCLRALW	R5, (RSP), R7                // e713e5b8
   828  	LDCLRALH	R5, (R6), R7                 // c710e578
   829  	LDCLRALH	R5, (RSP), R7                // e713e578
   830  	LDCLRALB	R5, (R6), R7                 // c710e538
   831  	LDCLRALB	R5, (RSP), R7                // e713e538
   832  	LDCLRD	R5, (R6), R7                         // c71025f8
   833  	LDCLRD	R5, (RSP), R7                        // e71325f8
   834  	LDCLRW	R5, (R6), R7                         // c71025b8
   835  	LDCLRW	R5, (RSP), R7                        // e71325b8
   836  	LDCLRH	R5, (R6), R7                         // c7102578
   837  	LDCLRH	R5, (RSP), R7                        // e7132578
   838  	LDCLRB	R5, (R6), R7                         // c7102538
   839  	LDCLRB	R5, (RSP), R7                        // e7132538
   840  	LDCLRLD	R5, (R6), R7                         // c71065f8
   841  	LDCLRLD	R5, (RSP), R7                        // e71365f8
   842  	LDCLRLW	R5, (R6), R7                         // c71065b8
   843  	LDCLRLW	R5, (RSP), R7                        // e71365b8
   844  	LDCLRLH	R5, (R6), R7                         // c7106578
   845  	LDCLRLH	R5, (RSP), R7                        // e7136578
   846  	LDCLRLB	R5, (R6), R7                         // c7106538
   847  	LDCLRLB	R5, (RSP), R7                        // e7136538
   848  	LDEORAD	R5, (R6), R7                         // c720a5f8
   849  	LDEORAD	R5, (RSP), R7                        // e723a5f8
   850  	LDEORAW	R5, (R6), R7                         // c720a5b8
   851  	LDEORAW	R5, (RSP), R7                        // e723a5b8
   852  	LDEORAH	R5, (R6), R7                         // c720a578
   853  	LDEORAH	R5, (RSP), R7                        // e723a578
   854  	LDEORAB	R5, (R6), R7                         // c720a538
   855  	LDEORAB	R5, (RSP), R7                        // e723a538
   856  	LDEORALD	R5, (R6), R7                 // c720e5f8
   857  	LDEORALD	R5, (RSP), R7                // e723e5f8
   858  	LDEORALW	R5, (R6), R7                 // c720e5b8
   859  	LDEORALW	R5, (RSP), R7                // e723e5b8
   860  	LDEORALH	R5, (R6), R7                 // c720e578
   861  	LDEORALH	R5, (RSP), R7                // e723e578
   862  	LDEORALB	R5, (R6), R7                 // c720e538
   863  	LDEORALB	R5, (RSP), R7                // e723e538
   864  	LDEORD	R5, (R6), R7                         // c72025f8
   865  	LDEORD	R5, (RSP), R7                        // e72325f8
   866  	LDEORW	R5, (R6), R7                         // c72025b8
   867  	LDEORW	R5, (RSP), R7                        // e72325b8
   868  	LDEORH	R5, (R6), R7                         // c7202578
   869  	LDEORH	R5, (RSP), R7                        // e7232578
   870  	LDEORB	R5, (R6), R7                         // c7202538
   871  	LDEORB	R5, (RSP), R7                        // e7232538
   872  	LDEORLD	R5, (R6), R7                         // c72065f8
   873  	LDEORLD	R5, (RSP), R7                        // e72365f8
   874  	LDEORLW	R5, (R6), R7                         // c72065b8
   875  	LDEORLW	R5, (RSP), R7                        // e72365b8
   876  	LDEORLH	R5, (R6), R7                         // c7206578
   877  	LDEORLH	R5, (RSP), R7                        // e7236578
   878  	LDEORLB	R5, (R6), R7                         // c7206538
   879  	LDEORLB	R5, (RSP), R7                        // e7236538
   880  	LDADDD	R5, (R6), ZR                         // df0025f8
   881  	LDADDW	R5, (R6), ZR                         // df0025b8
   882  	LDADDH	R5, (R6), ZR                         // df002578
   883  	LDADDB	R5, (R6), ZR                         // df002538
   884  	LDADDLD	R5, (R6), ZR                         // df0065f8
   885  	LDADDLW	R5, (R6), ZR                         // df0065b8
   886  	LDADDLH	R5, (R6), ZR                         // df006578
   887  	LDADDLB	R5, (R6), ZR                         // df006538
   888  	LDCLRD	R5, (R6), ZR                         // df1025f8
   889  	LDCLRW	R5, (R6), ZR                         // df1025b8
   890  	LDCLRH	R5, (R6), ZR                         // df102578
   891  	LDCLRB	R5, (R6), ZR                         // df102538
   892  	LDCLRLD	R5, (R6), ZR                         // df1065f8
   893  	LDCLRLW	R5, (R6), ZR                         // df1065b8
   894  	LDCLRLH	R5, (R6), ZR                         // df106578
   895  	LDCLRLB	R5, (R6), ZR                         // df106538
   896  	LDEORD	R5, (R6), ZR                         // df2025f8
   897  	LDEORW	R5, (R6), ZR                         // df2025b8
   898  	LDEORH	R5, (R6), ZR                         // df202578
   899  	LDEORB	R5, (R6), ZR                         // df202538
   900  	LDEORLD	R5, (R6), ZR                         // df2065f8
   901  	LDEORLW	R5, (R6), ZR                         // df2065b8
   902  	LDEORLH	R5, (R6), ZR                         // df206578
   903  	LDEORLB	R5, (R6), ZR                         // df206538
   904  	LDORD	R5, (R6), ZR                         // df3025f8
   905  	LDORW	R5, (R6), ZR                         // df3025b8
   906  	LDORH	R5, (R6), ZR                         // df302578
   907  	LDORB	R5, (R6), ZR                         // df302538
   908  	LDORLD	R5, (R6), ZR                         // df3065f8
   909  	LDORLW	R5, (R6), ZR                         // df3065b8
   910  	LDORLH	R5, (R6), ZR                         // df306578
   911  	LDORLB	R5, (R6), ZR                         // df306538
   912  	LDORAD	R5, (R6), R7                         // c730a5f8
   913  	LDORAD	R5, (RSP), R7                        // e733a5f8
   914  	LDORAW	R5, (R6), R7                         // c730a5b8
   915  	LDORAW	R5, (RSP), R7                        // e733a5b8
   916  	LDORAH	R5, (R6), R7                         // c730a578
   917  	LDORAH	R5, (RSP), R7                        // e733a578
   918  	LDORAB	R5, (R6), R7                         // c730a538
   919  	LDORAB	R5, (RSP), R7                        // e733a538
   920  	LDORALD	R5, (R6), R7                         // c730e5f8
   921  	LDORALD	R5, (RSP), R7                        // e733e5f8
   922  	LDORALW	R5, (R6), R7                         // c730e5b8
   923  	LDORALW	R5, (RSP), R7                        // e733e5b8
   924  	LDORALH	R5, (R6), R7                         // c730e578
   925  	LDORALH	R5, (RSP), R7                        // e733e578
   926  	LDORALB	R5, (R6), R7                         // c730e538
   927  	LDORALB	R5, (RSP), R7                        // e733e538
   928  	LDORD	R5, (R6), R7                         // c73025f8
   929  	LDORD	R5, (RSP), R7                        // e73325f8
   930  	LDORW	R5, (R6), R7                         // c73025b8
   931  	LDORW	R5, (RSP), R7                        // e73325b8
   932  	LDORH	R5, (R6), R7                         // c7302578
   933  	LDORH	R5, (RSP), R7                        // e7332578
   934  	LDORB	R5, (R6), R7                         // c7302538
   935  	LDORB	R5, (RSP), R7                        // e7332538
   936  	LDORLD	R5, (R6), R7                         // c73065f8
   937  	LDORLD	R5, (RSP), R7                        // e73365f8
   938  	LDORLW	R5, (R6), R7                         // c73065b8
   939  	LDORLW	R5, (RSP), R7                        // e73365b8
   940  	LDORLH	R5, (R6), R7                         // c7306578
   941  	LDORLH	R5, (RSP), R7                        // e7336578
   942  	LDORLB	R5, (R6), R7                         // c7306538
   943  	LDORLB	R5, (RSP), R7                        // e7336538
   944  	CASD	R1, (R2), ZR                         // 5f7ca1c8
   945  	CASW	R1, (RSP), ZR                        // ff7fa188
   946  	CASB	ZR, (R5), R3                         // a37cbf08
   947  	CASH	R3, (RSP), ZR                        // ff7fa348
   948  	CASW	R5, (R7), R6                         // e67ca588
   949  	CASLD	ZR, (RSP), R8                        // e8ffbfc8
   950  	CASLW	R9, (R10), ZR                        // 5ffda988
   951  	CASAD	R7, (R11), R15                       // 6f7de7c8
   952  	CASAW	R10, (RSP), R19                      // f37fea88
   953  	CASALD	R5, (R6), R7                         // c7fce5c8
   954  	CASALD	R5, (RSP), R7                        // e7ffe5c8
   955  	CASALW	R5, (R6), R7                         // c7fce588
   956  	CASALW	R5, (RSP), R7                        // e7ffe588
   957  	CASALH	ZR, (R5), R8                         // a8fcff48
   958  	CASALB	R8, (R9), ZR                         // 3ffde808
   959  	CASPD	(R30, ZR), (RSP), (R8, R9)           // e87f3e48
   960  	CASPW	(R6, R7), (R8), (R4, R5)             // 047d2608
   961  	CASPD	(R2, R3), (R2), (R8, R9)             // 487c2248
   962  
   963  // RET
   964  	RET
   965  	RET	foo(SB)
   966  
   967  // B/BL/B.cond cases, and canonical names JMP, CALL.
   968  	BL	1(PC)      // CALL 1(PC)
   969  	BL	(R2)       // CALL (R2)
   970  	BL	foo(SB)    // CALL foo(SB)
   971  	BL	bar<>(SB)  // CALL bar<>(SB)
   972  	B	foo(SB)    // JMP foo(SB)
   973  	BEQ	1(PC)
   974  	BEQ	2(PC)
   975  	TBZ	$1, R1, 2(PC)
   976  	TBNZ	$2, R2, 2(PC)
   977  	JMP	foo(SB)
   978  	CALL	foo(SB)
   979  
   980  // ADR
   981  	ADR	next, R11     // ADR R11 // 2b000010
   982  next:
   983  	NOP
   984  	ADR -2(PC), R10    // 0a000010
   985  	ADR 2(PC), R16     // 10000010
   986  	ADR -26(PC), R1    // 01000010
   987  	ADR 12(PC), R2     // 02000010
   988  	ADRP -2(PC), R10   // 0a000090
   989  	ADRP 2(PC), R16    // 10000090
   990  	ADRP -26(PC), R1   // 01000090
   991  	ADRP 12(PC), R2    // 02000090
   992  
   993  // LDP/STP
   994  	LDP	(R0), (R0, R1)      // 000440a9
   995  	LDP	(R0), (R1, R2)      // 010840a9
   996  	LDP	8(R0), (R1, R2)     // 018840a9
   997  	LDP	-8(R0), (R1, R2)    // 01887fa9
   998  	LDP	11(R0), (R1, R2)    // 1b2c0091610b40a9
   999  	LDP	1024(R0), (R1, R2)  // 1b001091610b40a9
  1000  	LDP.W	8(R0), (R1, R2)     // 0188c0a9
  1001  	LDP.P	8(R0), (R1, R2)     // 0188c0a8
  1002  	LDP	(RSP), (R1, R2)     // e10b40a9
  1003  	LDP	8(RSP), (R1, R2)    // e18b40a9
  1004  	LDP	-8(RSP), (R1, R2)   // e18b7fa9
  1005  	LDP	11(RSP), (R1, R2)   // fb2f0091610b40a9
  1006  	LDP	1024(RSP), (R1, R2) // fb031091610b40a9
  1007  	LDP.W	8(RSP), (R1, R2)    // e18bc0a9
  1008  	LDP.P	8(RSP), (R1, R2)    // e18bc0a8
  1009  	LDP	-31(R0), (R1, R2)   // 1b7c00d1610b40a9
  1010  	LDP	-4(R0), (R1, R2)    // 1b1000d1610b40a9
  1011  	LDP	-8(R0), (R1, R2)    // 01887fa9
  1012  	LDP	x(SB), (R1, R2)
  1013  	LDP	x+8(SB), (R1, R2)
  1014  	LDP	8(R1), (ZR, R2)     // 3f8840a9
  1015  	LDPW	-5(R0), (R1, R2)    // 1b1400d1610b4029
  1016  	LDPW	(R0), (R1, R2)      // 01084029
  1017  	LDPW	4(R0), (R1, R2)     // 01884029
  1018  	LDPW	-4(R0), (R1, R2)    // 01887f29
  1019  	LDPW.W	4(R0), (R1, R2)     // 0188c029
  1020  	LDPW.P	4(R0), (R1, R2)     // 0188c028
  1021  	LDPW	11(R0), (R1, R2)    // 1b2c0091610b4029
  1022  	LDPW	1024(R0), (R1, R2)  // 1b001091610b4029
  1023  	LDPW	(RSP), (R1, R2)     // e10b4029
  1024  	LDPW	4(RSP), (R1, R2)    // e18b4029
  1025  	LDPW	-4(RSP), (R1, R2)   // e18b7f29
  1026  	LDPW.W	4(RSP), (R1, R2)    // e18bc029
  1027  	LDPW.P	4(RSP), (R1, R2)    // e18bc028
  1028  	LDPW	11(RSP), (R1, R2)   // fb2f0091610b4029
  1029  	LDPW	1024(RSP), (R1, R2) // fb031091610b4029
  1030  	LDPW	x(SB), (R1, R2)
  1031  	LDPW	x+8(SB), (R1, R2)
  1032  	LDPW	8(R1), (ZR, R2)     // 3f084129
  1033  	LDPSW	(R0), (R1, R2)      // 01084069
  1034  	LDPSW	4(R0), (R1, R2)     // 01884069
  1035  	LDPSW	-4(R0), (R1, R2)    // 01887f69
  1036  	LDPSW.W	4(R0), (R1, R2)     // 0188c069
  1037  	LDPSW.P	4(R0), (R1, R2)     // 0188c068
  1038  	LDPSW	11(R0), (R1, R2)    // 1b2c0091610b4069
  1039  	LDPSW	1024(R0), (R1, R2)  // 1b001091610b4069
  1040  	LDPSW	(RSP), (R1, R2)     // e10b4069
  1041  	LDPSW	4(RSP), (R1, R2)    // e18b4069
  1042  	LDPSW	-4(RSP), (R1, R2)   // e18b7f69
  1043  	LDPSW.W	4(RSP), (R1, R2)    // e18bc069
  1044  	LDPSW.P	4(RSP), (R1, R2)    // e18bc068
  1045  	LDPSW	11(RSP), (R1, R2)   // fb2f0091610b4069
  1046  	LDPSW	1024(RSP), (R1, R2) // fb031091610b4069
  1047  	LDPSW	x(SB), (R1, R2)
  1048  	LDPSW	x+8(SB), (R1, R2)
  1049  	LDPSW	8(R1), (ZR, R2)     // 3f084169
  1050  	STP	(R3, R4), (R5)      // a31000a9
  1051  	STP	(R3, R4), 8(R5)     // a39000a9
  1052  	STP.W	(R3, R4), 8(R5)     // a39080a9
  1053  	STP.P	(R3, R4), 8(R5)     // a39080a8
  1054  	STP	(R3, R4), -8(R5)    // a3903fa9
  1055  	STP	(R3, R4), -4(R5)    // bb1000d1631300a9
  1056  	STP	(R3, R4), 11(R0)    // 1b2c0091631300a9
  1057  	STP	(R3, R4), 1024(R0)  // 1b001091631300a9
  1058  	STP	(R3, R4), (RSP)     // e31300a9
  1059  	STP	(R3, R4), 8(RSP)    // e39300a9
  1060  	STP.W	(R3, R4), 8(RSP)    // e39380a9
  1061  	STP.P	(R3, R4), 8(RSP)    // e39380a8
  1062  	STP	(R3, R4), -8(RSP)   // e3933fa9
  1063  	STP	(R3, R4), 11(RSP)   // fb2f0091631300a9
  1064  	STP	(R3, R4), 1024(RSP) // fb031091631300a9
  1065  	STP	(R3, R4), x(SB)
  1066  	STP	(R3, R4), x+8(SB)
  1067  	STPW	(R3, R4), (R5)      // a3100029
  1068  	STPW	(R3, R4), 4(R5)     // a3900029
  1069  	STPW.W	(R3, R4), 4(R5)     // a3908029
  1070  	STPW.P	(R3, R4), 4(R5)     // a3908028
  1071  	STPW	(R3, R4), -4(R5)    // a3903f29
  1072  	STPW	(R3, R4), -5(R5)    // bb1400d163130029
  1073  	STPW	(R3, R4), 11(R0)    // 1b2c009163130029
  1074  	STPW	(R3, R4), 1024(R0)  // 1b00109163130029
  1075  	STPW	(R3, R4), (RSP)     // e3130029
  1076  	STPW	(R3, R4), 4(RSP)    // e3930029
  1077  	STPW.W	(R3, R4), 4(RSP)    // e3938029
  1078  	STPW.P	(R3, R4), 4(RSP)    // e3938028
  1079  	STPW	(R3, R4), -4(RSP)   // e3933f29
  1080  	STPW	(R3, R4), 11(RSP)   // fb2f009163130029
  1081  	STPW	(R3, R4), 1024(RSP) // fb03109163130029
  1082  	STPW	(R3, R4), x(SB)
  1083  	STPW	(R3, R4), x+8(SB)
  1084  
  1085  // bit field operation
  1086  	BFI	$0, R1, $1, R2      // 220040b3
  1087  	BFIW	$0, R1, $1, R2      // 22000033
  1088  	SBFIZ	$0, R1, $1, R2      // 22004093
  1089  	SBFIZW	$0, R1, $1, R2      // 22000013
  1090  	UBFIZ	$0, R1, $1, R2      // 220040d3
  1091  	UBFIZW	$0, R1, $1, R2      // 22000053
  1092  
  1093  // FSTPD/FSTPS/FLDPD/FLDPS
  1094  	FLDPD	(R0), (F1, F2)      // 0108406d
  1095  	FLDPD	8(R0), (F1, F2)     // 0188406d
  1096  	FLDPD	-8(R0), (F1, F2)    // 01887f6d
  1097  	FLDPD	11(R0), (F1, F2)    // 1b2c0091610b406d
  1098  	FLDPD	1024(R0), (F1, F2)  // 1b001091610b406d
  1099  	FLDPD.W	8(R0), (F1, F2)     // 0188c06d
  1100  	FLDPD.P	8(R0), (F1, F2)     // 0188c06c
  1101  	FLDPD	(RSP), (F1, F2)     // e10b406d
  1102  	FLDPD	8(RSP), (F1, F2)    // e18b406d
  1103  	FLDPD	-8(RSP), (F1, F2)   // e18b7f6d
  1104  	FLDPD	11(RSP), (F1, F2)   // fb2f0091610b406d
  1105  	FLDPD	1024(RSP), (F1, F2) // fb031091610b406d
  1106  	FLDPD.W	8(RSP), (F1, F2)    // e18bc06d
  1107  	FLDPD.P	8(RSP), (F1, F2)    // e18bc06c
  1108  	FLDPD	-31(R0), (F1, F2)   // 1b7c00d1610b406d
  1109  	FLDPD	-4(R0), (F1, F2)    // 1b1000d1610b406d
  1110  	FLDPD	-8(R0), (F1, F2)    // 01887f6d
  1111  	FLDPD	x(SB), (F1, F2)
  1112  	FLDPD	x+8(SB), (F1, F2)
  1113  	FLDPS	-5(R0), (F1, F2)    // 1b1400d1610b402d
  1114  	FLDPS	(R0), (F1, F2)      // 0108402d
  1115  	FLDPS	4(R0), (F1, F2)     // 0188402d
  1116  	FLDPS	-4(R0), (F1, F2)    // 01887f2d
  1117  	FLDPS.W	4(R0), (F1, F2)     // 0188c02d
  1118  	FLDPS.P	4(R0), (F1, F2)     // 0188c02c
  1119  	FLDPS	11(R0), (F1, F2)    // 1b2c0091610b402d
  1120  	FLDPS	1024(R0), (F1, F2)  // 1b001091610b402d
  1121  	FLDPS	(RSP), (F1, F2)     // e10b402d
  1122  	FLDPS	4(RSP), (F1, F2)    // e18b402d
  1123  	FLDPS	-4(RSP), (F1, F2)   // e18b7f2d
  1124  	FLDPS.W	4(RSP), (F1, F2)    // e18bc02d
  1125  	FLDPS.P	4(RSP), (F1, F2)    // e18bc02c
  1126  	FLDPS	11(RSP), (F1, F2)   // fb2f0091610b402d
  1127  	FLDPS	1024(RSP), (F1, F2) // fb031091610b402d
  1128  	FLDPS	x(SB), (F1, F2)
  1129  	FLDPS	x+8(SB), (F1, F2)
  1130  	FSTPD	(F3, F4), (R5)      // a310006d
  1131  	FSTPD	(F3, F4), 8(R5)     // a390006d
  1132  	FSTPD.W	(F3, F4), 8(R5)     // a390806d
  1133  	FSTPD.P	(F3, F4), 8(R5)     // a390806c
  1134  	FSTPD	(F3, F4), -8(R5)    // a3903f6d
  1135  	FSTPD	(F3, F4), -4(R5)    // bb1000d16313006d
  1136  	FSTPD	(F3, F4), 11(R0)    // 1b2c00916313006d
  1137  	FSTPD	(F3, F4), 1024(R0)  // 1b0010916313006d
  1138  	FSTPD	(F3, F4), (RSP)     // e313006d
  1139  	FSTPD	(F3, F4), 8(RSP)    // e393006d
  1140  	FSTPD.W	(F3, F4), 8(RSP)    // e393806d
  1141  	FSTPD.P	(F3, F4), 8(RSP)    // e393806c
  1142  	FSTPD	(F3, F4), -8(RSP)   // e3933f6d
  1143  	FSTPD	(F3, F4), 11(RSP)   // fb2f00916313006d
  1144  	FSTPD	(F3, F4), 1024(RSP) // fb0310916313006d
  1145  	FSTPD	(F3, F4), x(SB)
  1146  	FSTPD	(F3, F4), x+8(SB)
  1147  	FSTPS	(F3, F4), (R5)      // a310002d
  1148  	FSTPS	(F3, F4), 4(R5)     // a390002d
  1149  	FSTPS.W	(F3, F4), 4(R5)     // a390802d
  1150  	FSTPS.P	(F3, F4), 4(R5)     // a390802c
  1151  	FSTPS	(F3, F4), -4(R5)    // a3903f2d
  1152  	FSTPS	(F3, F4), -5(R5)    // bb1400d16313002d
  1153  	FSTPS	(F3, F4), 11(R0)    // 1b2c00916313002d
  1154  	FSTPS	(F3, F4), 1024(R0)  // 1b0010916313002d
  1155  	FSTPS	(F3, F4), (RSP)     // e313002d
  1156  	FSTPS	(F3, F4), 4(RSP)    // e393002d
  1157  	FSTPS.W	(F3, F4), 4(RSP)    // e393802d
  1158  	FSTPS.P	(F3, F4), 4(RSP)    // e393802c
  1159  	FSTPS	(F3, F4), -4(RSP)   // e3933f2d
  1160  	FSTPS	(F3, F4), 11(RSP)   // fb2f00916313002d
  1161  	FSTPS	(F3, F4), 1024(RSP) // fb0310916313002d
  1162  	FSTPS	(F3, F4), x(SB)
  1163  	FSTPS	(F3, F4), x+8(SB)
  1164  
  1165  // FLDPQ/FSTPQ
  1166  	FLDPQ   -4000(R0), (F1, F2)  // 1b803ed1610b40ad
  1167  	FLDPQ	-1024(R0), (F1, F2)  // 010860ad
  1168  	FLDPQ	(R0), (F1, F2)       // 010840ad
  1169  	FLDPQ	16(R0), (F1, F2)     // 018840ad
  1170  	FLDPQ	-16(R0), (F1, F2)    // 01887fad
  1171  	FLDPQ.W	32(R0), (F1, F2)     // 0108c1ad
  1172  	FLDPQ.P	32(R0), (F1, F2)     // 0108c1ac
  1173  	FLDPQ	11(R0), (F1, F2)     // 1b2c0091610b40ad
  1174  	FLDPQ	1024(R0), (F1, F2)   // 1b001091610b40ad
  1175  	FLDPQ   4104(R0), (F1, F2)
  1176  	FLDPQ   -4000(RSP), (F1, F2) // fb833ed1610b40ad
  1177  	FLDPQ	-1024(RSP), (F1, F2) // e10b60ad
  1178  	FLDPQ	(RSP), (F1, F2)      // e10b40ad
  1179  	FLDPQ	16(RSP), (F1, F2)    // e18b40ad
  1180  	FLDPQ	-16(RSP), (F1, F2)   // e18b7fad
  1181  	FLDPQ.W	32(RSP), (F1, F2)    // e10bc1ad
  1182  	FLDPQ.P	32(RSP), (F1, F2)    // e10bc1ac
  1183  	FLDPQ	11(RSP), (F1, F2)    // fb2f0091610b40ad
  1184  	FLDPQ	1024(RSP), (F1, F2)  // fb031091610b40ad
  1185  	FLDPQ   4104(RSP), (F1, F2)
  1186  	FLDPQ	-31(R0), (F1, F2)    // 1b7c00d1610b40ad
  1187  	FLDPQ	-4(R0), (F1, F2)     // 1b1000d1610b40ad
  1188  	FLDPQ	x(SB), (F1, F2)
  1189  	FLDPQ	x+8(SB), (F1, F2)
  1190  	FSTPQ	(F3, F4), -4000(R5)  // bb803ed1631300ad
  1191  	FSTPQ	(F3, F4), -1024(R5)  // a31020ad
  1192  	FSTPQ	(F3, F4), (R5)       // a31000ad
  1193  	FSTPQ	(F3, F4), 16(R5)     // a39000ad
  1194  	FSTPQ	(F3, F4), -16(R5)    // a3903fad
  1195  	FSTPQ.W	(F3, F4), 32(R5)     // a31081ad
  1196  	FSTPQ.P	(F3, F4), 32(R5)     // a31081ac
  1197  	FSTPQ	(F3, F4), 11(R5)     // bb2c0091631300ad
  1198  	FSTPQ	(F3, F4), 1024(R5)   // bb001091631300ad
  1199  	FSTPQ	(F3, F4), 4104(R5)
  1200  	FSTPQ	(F3, F4), -4000(RSP) // fb833ed1631300ad
  1201  	FSTPQ	(F3, F4), -1024(RSP) // e31320ad
  1202  	FSTPQ	(F3, F4), (RSP)      // e31300ad
  1203  	FSTPQ	(F3, F4), 16(RSP)    // e39300ad
  1204  	FSTPQ	(F3, F4), -16(RSP)   // e3933fad
  1205  	FSTPQ.W	(F3, F4), 32(RSP)    // e31381ad
  1206  	FSTPQ.P	(F3, F4), 32(RSP)    // e31381ac
  1207  	FSTPQ	(F3, F4), 11(RSP)    // fb2f0091631300ad
  1208  	FSTPQ	(F3, F4), 1024(RSP)  // fb031091631300ad
  1209  	FSTPQ	(F3, F4), 4104(RSP)
  1210  	FSTPQ	(F3, F4), x(SB)
  1211  	FSTPQ	(F3, F4), x+8(SB)
  1212  
  1213  // System Register
  1214  	MSR	$1, SPSel                          // bf4100d5
  1215  	MSR	$9, DAIFSet                        // df4903d5
  1216  	MSR	$6, DAIFClr                        // ff4603d5
  1217  	MSR	$0, CPACR_EL1                      // 5f1018d5
  1218  	MRS	ELR_EL1, R8                        // 284038d5
  1219  	MSR	R16, ELR_EL1                       // 304018d5
  1220  	MSR	R2, ACTLR_EL1                      // 221018d5
  1221  	MRS	TCR_EL1, R5                        // 452038d5
  1222  	MRS	PMEVCNTR15_EL0, R12                // ece93bd5
  1223  	MSR	R20, PMEVTYPER26_EL0               // 54ef1bd5
  1224  	MSR	R10, DBGBCR15_EL1                  // aa0f10d5
  1225  	MRS	ACTLR_EL1, R3                      // 231038d5
  1226  	MSR	R9, ACTLR_EL1                      // 291018d5
  1227  	MRS	AFSR0_EL1, R10                     // 0a5138d5
  1228  	MSR	R1, AFSR0_EL1                      // 015118d5
  1229  	MRS	AFSR0_EL1, R9                      // 095138d5
  1230  	MSR	R30, AFSR0_EL1                     // 1e5118d5
  1231  	MRS	AFSR1_EL1, R0                      // 205138d5
  1232  	MSR	R1, AFSR1_EL1                      // 215118d5
  1233  	MRS	AFSR1_EL1, R8                      // 285138d5
  1234  	MSR	R19, AFSR1_EL1                     // 335118d5
  1235  	MRS	AIDR_EL1, R11                      // eb0039d5
  1236  	MRS	AMAIR_EL1, R0                      // 00a338d5
  1237  	MSR	R22, AMAIR_EL1                     // 16a318d5
  1238  	MRS	AMAIR_EL1, R14                     // 0ea338d5
  1239  	MSR	R0, AMAIR_EL1                      // 00a318d5
  1240  	MRS	APDAKeyHi_EL1, R16                 // 302238d5
  1241  	MSR	R26, APDAKeyHi_EL1                 // 3a2218d5
  1242  	MRS	APDAKeyLo_EL1, R21                 // 152238d5
  1243  	MSR	R22, APDAKeyLo_EL1                 // 162218d5
  1244  	MRS	APDBKeyHi_EL1, R2                  // 622238d5
  1245  	MSR	R6, APDBKeyHi_EL1                  // 662218d5
  1246  	MRS	APDBKeyLo_EL1, R5                  // 452238d5
  1247  	MSR	R22, APDBKeyLo_EL1                 // 562218d5
  1248  	MRS	APGAKeyHi_EL1, R22                 // 362338d5
  1249  	MSR	R5, APGAKeyHi_EL1                  // 252318d5
  1250  	MRS	APGAKeyLo_EL1, R16                 // 102338d5
  1251  	MSR	R22, APGAKeyLo_EL1                 // 162318d5
  1252  	MRS	APIAKeyHi_EL1, R23                 // 372138d5
  1253  	MSR	R17, APIAKeyHi_EL1                 // 312118d5
  1254  	MRS	APIAKeyLo_EL1, R16                 // 102138d5
  1255  	MSR	R6, APIAKeyLo_EL1                  // 062118d5
  1256  	MRS	APIBKeyHi_EL1, R10                 // 6a2138d5
  1257  	MSR	R11, APIBKeyHi_EL1                 // 6b2118d5
  1258  	MRS	APIBKeyLo_EL1, R25                 // 592138d5
  1259  	MSR	R22, APIBKeyLo_EL1                 // 562118d5
  1260  	MRS	CCSIDR_EL1, R25                    // 190039d5
  1261  	MRS	CLIDR_EL1, R16                     // 300039d5
  1262  	MRS	CNTFRQ_EL0, R20                    // 14e03bd5
  1263  	MSR	R16, CNTFRQ_EL0                    // 10e01bd5
  1264  	MRS	CNTKCTL_EL1, R26                   // 1ae138d5
  1265  	MSR	R0, CNTKCTL_EL1                    // 00e118d5
  1266  	MRS	CNTP_CTL_EL0, R14                  // 2ee23bd5
  1267  	MSR	R17, CNTP_CTL_EL0                  // 31e21bd5
  1268  	MRS	CNTP_CVAL_EL0, R15                 // 4fe23bd5
  1269  	MSR	R8, CNTP_CVAL_EL0                  // 48e21bd5
  1270  	MRS	CNTP_TVAL_EL0, R6                  // 06e23bd5
  1271  	MSR	R29, CNTP_TVAL_EL0                 // 1de21bd5
  1272  	MRS	CNTP_CTL_EL0, R22                  // 36e23bd5
  1273  	MSR	R0, CNTP_CTL_EL0                   // 20e21bd5
  1274  	MRS	CNTP_CVAL_EL0, R9                  // 49e23bd5
  1275  	MSR	R4, CNTP_CVAL_EL0                  // 44e21bd5
  1276  	MRS	CNTP_TVAL_EL0, R27                 // 1be23bd5
  1277  	MSR	R17, CNTP_TVAL_EL0                 // 11e21bd5
  1278  	MRS	CNTV_CTL_EL0, R27                  // 3be33bd5
  1279  	MSR	R2, CNTV_CTL_EL0                   // 22e31bd5
  1280  	MRS	CNTV_CVAL_EL0, R16                 // 50e33bd5
  1281  	MSR	R27, CNTV_CVAL_EL0                 // 5be31bd5
  1282  	MRS	CNTV_TVAL_EL0, R12                 // 0ce33bd5
  1283  	MSR	R19, CNTV_TVAL_EL0                 // 13e31bd5
  1284  	MRS	CNTV_CTL_EL0, R14                  // 2ee33bd5
  1285  	MSR	R2, CNTV_CTL_EL0                   // 22e31bd5
  1286  	MRS	CNTV_CVAL_EL0, R8                  // 48e33bd5
  1287  	MSR	R26, CNTV_CVAL_EL0                 // 5ae31bd5
  1288  	MRS	CNTV_TVAL_EL0, R6                  // 06e33bd5
  1289  	MSR	R19, CNTV_TVAL_EL0                 // 13e31bd5
  1290  	MRS	CNTKCTL_EL1, R16                   // 10e138d5
  1291  	MSR	R26, CNTKCTL_EL1                   // 1ae118d5
  1292  	MRS	CNTPCT_EL0, R9                     // 29e03bd5
  1293  	MRS	CNTPS_CTL_EL1, R30                 // 3ee23fd5
  1294  	MSR	R26, CNTPS_CTL_EL1                 // 3ae21fd5
  1295  	MRS	CNTPS_CVAL_EL1, R8                 // 48e23fd5
  1296  	MSR	R26, CNTPS_CVAL_EL1                // 5ae21fd5
  1297  	MRS	CNTPS_TVAL_EL1, R7                 // 07e23fd5
  1298  	MSR	R13, CNTPS_TVAL_EL1                // 0de21fd5
  1299  	MRS	CNTP_CTL_EL0, R2                   // 22e23bd5
  1300  	MSR	R10, CNTP_CTL_EL0                  // 2ae21bd5
  1301  	MRS	CNTP_CVAL_EL0, R6                  // 46e23bd5
  1302  	MSR	R21, CNTP_CVAL_EL0                 // 55e21bd5
  1303  	MRS	CNTP_TVAL_EL0, R27                 // 1be23bd5
  1304  	MSR	R29, CNTP_TVAL_EL0                 // 1de21bd5
  1305  	MRS	CNTVCT_EL0, R13                    // 4de03bd5
  1306  	MRS	CNTV_CTL_EL0, R30                  // 3ee33bd5
  1307  	MSR	R19, CNTV_CTL_EL0                  // 33e31bd5
  1308  	MRS	CNTV_CVAL_EL0, R27                 // 5be33bd5
  1309  	MSR	R24, CNTV_CVAL_EL0                 // 58e31bd5
  1310  	MRS	CNTV_TVAL_EL0, R24                 // 18e33bd5
  1311  	MSR	R5, CNTV_TVAL_EL0                  // 05e31bd5
  1312  	MRS	CONTEXTIDR_EL1, R15                // 2fd038d5
  1313  	MSR	R27, CONTEXTIDR_EL1                // 3bd018d5
  1314  	MRS	CONTEXTIDR_EL1, R29                // 3dd038d5
  1315  	MSR	R24, CONTEXTIDR_EL1                // 38d018d5
  1316  	MRS	CPACR_EL1, R10                     // 4a1038d5
  1317  	MSR	R14, CPACR_EL1                     // 4e1018d5
  1318  	MRS	CPACR_EL1, R27                     // 5b1038d5
  1319  	MSR	R22, CPACR_EL1                     // 561018d5
  1320  	MRS	CSSELR_EL1, R3                     // 03003ad5
  1321  	MSR	R4, CSSELR_EL1                     // 04001ad5
  1322  	MRS	CTR_EL0, R15                       // 2f003bd5
  1323  	MRS	CurrentEL, R1                      // 414238d5
  1324  	MRS	DAIF, R24                          // 38423bd5
  1325  	MSR	R9, DAIF                           // 29421bd5
  1326  	MRS	DBGAUTHSTATUS_EL1, R5              // c57e30d5
  1327  	MRS	DBGBCR0_EL1, R29                   // bd0030d5
  1328  	MRS	DBGBCR1_EL1, R13                   // ad0130d5
  1329  	MRS	DBGBCR2_EL1, R22                   // b60230d5
  1330  	MRS	DBGBCR3_EL1, R8                    // a80330d5
  1331  	MRS	DBGBCR4_EL1, R2                    // a20430d5
  1332  	MRS	DBGBCR5_EL1, R4                    // a40530d5
  1333  	MRS	DBGBCR6_EL1, R2                    // a20630d5
  1334  	MRS	DBGBCR7_EL1, R6                    // a60730d5
  1335  	MRS	DBGBCR8_EL1, R1                    // a10830d5
  1336  	MRS	DBGBCR9_EL1, R16                   // b00930d5
  1337  	MRS	DBGBCR10_EL1, R23                  // b70a30d5
  1338  	MRS	DBGBCR11_EL1, R3                   // a30b30d5
  1339  	MRS	DBGBCR12_EL1, R6                   // a60c30d5
  1340  	MRS	DBGBCR13_EL1, R16                  // b00d30d5
  1341  	MRS	DBGBCR14_EL1, R4                   // a40e30d5
  1342  	MRS	DBGBCR15_EL1, R9                   // a90f30d5
  1343  	MSR	R4, DBGBCR0_EL1                    // a40010d5
  1344  	MSR	R14, DBGBCR1_EL1                   // ae0110d5
  1345  	MSR	R7, DBGBCR2_EL1                    // a70210d5
  1346  	MSR	R12, DBGBCR3_EL1                   // ac0310d5
  1347  	MSR	R6, DBGBCR4_EL1                    // a60410d5
  1348  	MSR	R11, DBGBCR5_EL1                   // ab0510d5
  1349  	MSR	R6, DBGBCR6_EL1                    // a60610d5
  1350  	MSR	R13, DBGBCR7_EL1                   // ad0710d5
  1351  	MSR	R17, DBGBCR8_EL1                   // b10810d5
  1352  	MSR	R17, DBGBCR9_EL1                   // b10910d5
  1353  	MSR	R22, DBGBCR10_EL1                  // b60a10d5
  1354  	MSR	R16, DBGBCR11_EL1                  // b00b10d5
  1355  	MSR	R24, DBGBCR12_EL1                  // b80c10d5
  1356  	MSR	R29, DBGBCR13_EL1                  // bd0d10d5
  1357  	MSR	R1, DBGBCR14_EL1                   // a10e10d5
  1358  	MSR	R10, DBGBCR15_EL1                  // aa0f10d5
  1359  	MRS	DBGBVR0_EL1, R16                   // 900030d5
  1360  	MRS	DBGBVR1_EL1, R21                   // 950130d5
  1361  	MRS	DBGBVR2_EL1, R13                   // 8d0230d5
  1362  	MRS	DBGBVR3_EL1, R12                   // 8c0330d5
  1363  	MRS	DBGBVR4_EL1, R20                   // 940430d5
  1364  	MRS	DBGBVR5_EL1, R21                   // 950530d5
  1365  	MRS	DBGBVR6_EL1, R27                   // 9b0630d5
  1366  	MRS	DBGBVR7_EL1, R6                    // 860730d5
  1367  	MRS	DBGBVR8_EL1, R14                   // 8e0830d5
  1368  	MRS	DBGBVR9_EL1, R5                    // 850930d5
  1369  	MRS	DBGBVR10_EL1, R9                   // 890a30d5
  1370  	MRS	DBGBVR11_EL1, R25                  // 990b30d5
  1371  	MRS	DBGBVR12_EL1, R30                  // 9e0c30d5
  1372  	MRS	DBGBVR13_EL1, R1                   // 810d30d5
  1373  	MRS	DBGBVR14_EL1, R17                  // 910e30d5
  1374  	MRS	DBGBVR15_EL1, R25                  // 990f30d5
  1375  	MSR	R15, DBGBVR0_EL1                   // 8f0010d5
  1376  	MSR	R6, DBGBVR1_EL1                    // 860110d5
  1377  	MSR	R24, DBGBVR2_EL1                   // 980210d5
  1378  	MSR	R17, DBGBVR3_EL1                   // 910310d5
  1379  	MSR	R3, DBGBVR4_EL1                    // 830410d5
  1380  	MSR	R21, DBGBVR5_EL1                   // 950510d5
  1381  	MSR	R5, DBGBVR6_EL1                    // 850610d5
  1382  	MSR	R6, DBGBVR7_EL1                    // 860710d5
  1383  	MSR	R25, DBGBVR8_EL1                   // 990810d5
  1384  	MSR	R4, DBGBVR9_EL1                    // 840910d5
  1385  	MSR	R25, DBGBVR10_EL1                  // 990a10d5
  1386  	MSR	R17, DBGBVR11_EL1                  // 910b10d5
  1387  	MSR	R0, DBGBVR12_EL1                   // 800c10d5
  1388  	MSR	R5, DBGBVR13_EL1                   // 850d10d5
  1389  	MSR	R9, DBGBVR14_EL1                   // 890e10d5
  1390  	MSR	R12, DBGBVR15_EL1                  // 8c0f10d5
  1391  	MRS	DBGCLAIMCLR_EL1, R27               // db7930d5
  1392  	MSR	R0, DBGCLAIMCLR_EL1                // c07910d5
  1393  	MRS	DBGCLAIMSET_EL1, R7                // c77830d5
  1394  	MSR	R13, DBGCLAIMSET_EL1               // cd7810d5
  1395  	MRS	DBGDTRRX_EL0, R0                   // 000533d5
  1396  	MSR	R29, DBGDTRTX_EL0                  // 1d0513d5
  1397  	MRS	DBGDTR_EL0, R27                    // 1b0433d5
  1398  	MSR	R30, DBGDTR_EL0                    // 1e0413d5
  1399  	MRS	DBGPRCR_EL1, R4                    // 841430d5
  1400  	MSR	R0, DBGPRCR_EL1                    // 801410d5
  1401  	MRS	DBGWCR0_EL1, R24                   // f80030d5
  1402  	MRS	DBGWCR1_EL1, R19                   // f30130d5
  1403  	MRS	DBGWCR2_EL1, R25                   // f90230d5
  1404  	MRS	DBGWCR3_EL1, R0                    // e00330d5
  1405  	MRS	DBGWCR4_EL1, R13                   // ed0430d5
  1406  	MRS	DBGWCR5_EL1, R8                    // e80530d5
  1407  	MRS	DBGWCR6_EL1, R22                   // f60630d5
  1408  	MRS	DBGWCR7_EL1, R11                   // eb0730d5
  1409  	MRS	DBGWCR8_EL1, R11                   // eb0830d5
  1410  	MRS	DBGWCR9_EL1, R3                    // e30930d5
  1411  	MRS	DBGWCR10_EL1, R17                  // f10a30d5
  1412  	MRS	DBGWCR11_EL1, R21                  // f50b30d5
  1413  	MRS	DBGWCR12_EL1, R10                  // ea0c30d5
  1414  	MRS	DBGWCR13_EL1, R22                  // f60d30d5
  1415  	MRS	DBGWCR14_EL1, R11                  // eb0e30d5
  1416  	MRS	DBGWCR15_EL1, R0                   // e00f30d5
  1417  	MSR	R24, DBGWCR0_EL1                   // f80010d5
  1418  	MSR	R8, DBGWCR1_EL1                    // e80110d5
  1419  	MSR	R17, DBGWCR2_EL1                   // f10210d5
  1420  	MSR	R29, DBGWCR3_EL1                   // fd0310d5
  1421  	MSR	R13, DBGWCR4_EL1                   // ed0410d5
  1422  	MSR	R22, DBGWCR5_EL1                   // f60510d5
  1423  	MSR	R3, DBGWCR6_EL1                    // e30610d5
  1424  	MSR	R4, DBGWCR7_EL1                    // e40710d5
  1425  	MSR	R7, DBGWCR8_EL1                    // e70810d5
  1426  	MSR	R29, DBGWCR9_EL1                   // fd0910d5
  1427  	MSR	R3, DBGWCR10_EL1                   // e30a10d5
  1428  	MSR	R11, DBGWCR11_EL1                  // eb0b10d5
  1429  	MSR	R20, DBGWCR12_EL1                  // f40c10d5
  1430  	MSR	R6, DBGWCR13_EL1                   // e60d10d5
  1431  	MSR	R22, DBGWCR14_EL1                  // f60e10d5
  1432  	MSR	R25, DBGWCR15_EL1                  // f90f10d5
  1433  	MRS	DBGWVR0_EL1, R14                   // ce0030d5
  1434  	MRS	DBGWVR1_EL1, R16                   // d00130d5
  1435  	MRS	DBGWVR2_EL1, R15                   // cf0230d5
  1436  	MRS	DBGWVR3_EL1, R1                    // c10330d5
  1437  	MRS	DBGWVR4_EL1, R26                   // da0430d5
  1438  	MRS	DBGWVR5_EL1, R14                   // ce0530d5
  1439  	MRS	DBGWVR6_EL1, R17                   // d10630d5
  1440  	MRS	DBGWVR7_EL1, R22                   // d60730d5
  1441  	MRS	DBGWVR8_EL1, R4                    // c40830d5
  1442  	MRS	DBGWVR9_EL1, R3                    // c30930d5
  1443  	MRS	DBGWVR10_EL1, R16                  // d00a30d5
  1444  	MRS	DBGWVR11_EL1, R2                   // c20b30d5
  1445  	MRS	DBGWVR12_EL1, R5                   // c50c30d5
  1446  	MRS	DBGWVR13_EL1, R23                  // d70d30d5
  1447  	MRS	DBGWVR14_EL1, R5                   // c50e30d5
  1448  	MRS	DBGWVR15_EL1, R6                   // c60f30d5
  1449  	MSR	R24, DBGWVR0_EL1                   // d80010d5
  1450  	MSR	R6, DBGWVR1_EL1                    // c60110d5
  1451  	MSR	R1, DBGWVR2_EL1                    // c10210d5
  1452  	MSR	R24, DBGWVR3_EL1                   // d80310d5
  1453  	MSR	R24, DBGWVR4_EL1                   // d80410d5
  1454  	MSR	R0, DBGWVR5_EL1                    // c00510d5
  1455  	MSR	R10, DBGWVR6_EL1                   // ca0610d5
  1456  	MSR	R17, DBGWVR7_EL1                   // d10710d5
  1457  	MSR	R7, DBGWVR8_EL1                    // c70810d5
  1458  	MSR	R8, DBGWVR9_EL1                    // c80910d5
  1459  	MSR	R15, DBGWVR10_EL1                  // cf0a10d5
  1460  	MSR	R8, DBGWVR11_EL1                   // c80b10d5
  1461  	MSR	R7, DBGWVR12_EL1                   // c70c10d5
  1462  	MSR	R14, DBGWVR13_EL1                  // ce0d10d5
  1463  	MSR	R16, DBGWVR14_EL1                  // d00e10d5
  1464  	MSR	R5, DBGWVR15_EL1                   // c50f10d5
  1465  	MRS	DCZID_EL0, R21                     // f5003bd5
  1466  	MRS	DISR_EL1, R8                       // 28c138d5
  1467  	MSR	R5, DISR_EL1                       // 25c118d5
  1468  	MRS	DIT, R29                           // bd423bd5
  1469  	MSR	R22, DIT                           // b6421bd5
  1470  	MRS	DLR_EL0, R25                       // 39453bd5
  1471  	MSR	R9, DLR_EL0                        // 29451bd5
  1472  	MRS	DSPSR_EL0, R3                      // 03453bd5
  1473  	MSR	R10, DSPSR_EL0                     // 0a451bd5
  1474  	MRS	ELR_EL1, R24                       // 384038d5
  1475  	MSR	R3, ELR_EL1                        // 234018d5
  1476  	MRS	ELR_EL1, R13                       // 2d4038d5
  1477  	MSR	R27, ELR_EL1                       // 3b4018d5
  1478  	MRS	ERRIDR_EL1, R30                    // 1e5338d5
  1479  	MRS	ERRSELR_EL1, R21                   // 355338d5
  1480  	MSR	R22, ERRSELR_EL1                   // 365318d5
  1481  	MRS	ERXADDR_EL1, R30                   // 7e5438d5
  1482  	MSR	R0, ERXADDR_EL1                    // 605418d5
  1483  	MRS	ERXCTLR_EL1, R6                    // 265438d5
  1484  	MSR	R9, ERXCTLR_EL1                    // 295418d5
  1485  	MRS	ERXFR_EL1, R19                     // 135438d5
  1486  	MRS	ERXMISC0_EL1, R20                  // 145538d5
  1487  	MSR	R24, ERXMISC0_EL1                  // 185518d5
  1488  	MRS	ERXMISC1_EL1, R15                  // 2f5538d5
  1489  	MSR	R10, ERXMISC1_EL1                  // 2a5518d5
  1490  	MRS	ERXSTATUS_EL1, R30                 // 5e5438d5
  1491  	MSR	R3, ERXSTATUS_EL1                  // 435418d5
  1492  	MRS	ESR_EL1, R6                        // 065238d5
  1493  	MSR	R21, ESR_EL1                       // 155218d5
  1494  	MRS	ESR_EL1, R17                       // 115238d5
  1495  	MSR	R12, ESR_EL1                       // 0c5218d5
  1496  	MRS	FAR_EL1, R3                        // 036038d5
  1497  	MSR	R17, FAR_EL1                       // 116018d5
  1498  	MRS	FAR_EL1, R9                        // 096038d5
  1499  	MSR	R25, FAR_EL1                       // 196018d5
  1500  	MRS	FPCR, R1                           // 01443bd5
  1501  	MSR	R27, FPCR                          // 1b441bd5
  1502  	MRS	FPSR, R5                           // 25443bd5
  1503  	MSR	R15, FPSR                          // 2f441bd5
  1504  	MRS	ID_AA64AFR0_EL1, R19               // 930538d5
  1505  	MRS	ID_AA64AFR1_EL1, R24               // b80538d5
  1506  	MRS	ID_AA64DFR0_EL1, R21               // 150538d5
  1507  	MRS	ID_AA64DFR1_EL1, R20               // 340538d5
  1508  	MRS	ID_AA64ISAR0_EL1, R4               // 040638d5
  1509  	MRS	ID_AA64ISAR1_EL1, R6               // 260638d5
  1510  	MRS	ID_AA64MMFR0_EL1, R0               // 000738d5
  1511  	MRS	ID_AA64MMFR1_EL1, R17              // 310738d5
  1512  	MRS	ID_AA64MMFR2_EL1, R23              // 570738d5
  1513  	MRS	ID_AA64PFR0_EL1, R20               // 140438d5
  1514  	MRS	ID_AA64PFR1_EL1, R26               // 3a0438d5
  1515  	MRS	ID_AA64ZFR0_EL1, R26               // 9a0438d5
  1516  	MRS	ID_AFR0_EL1, R21                   // 750138d5
  1517  	MRS	ID_DFR0_EL1, R15                   // 4f0138d5
  1518  	MRS	ID_ISAR0_EL1, R11                  // 0b0238d5
  1519  	MRS	ID_ISAR1_EL1, R16                  // 300238d5
  1520  	MRS	ID_ISAR2_EL1, R10                  // 4a0238d5
  1521  	MRS	ID_ISAR3_EL1, R13                  // 6d0238d5
  1522  	MRS	ID_ISAR4_EL1, R24                  // 980238d5
  1523  	MRS	ID_ISAR5_EL1, R29                  // bd0238d5
  1524  	MRS	ID_MMFR0_EL1, R10                  // 8a0138d5
  1525  	MRS	ID_MMFR1_EL1, R29                  // bd0138d5
  1526  	MRS	ID_MMFR2_EL1, R16                  // d00138d5
  1527  	MRS	ID_MMFR3_EL1, R10                  // ea0138d5
  1528  	MRS	ID_MMFR4_EL1, R23                  // d70238d5
  1529  	MRS	ID_PFR0_EL1, R4                    // 040138d5
  1530  	MRS	ID_PFR1_EL1, R12                   // 2c0138d5
  1531  	MRS	ISR_EL1, R24                       // 18c138d5
  1532  	MRS	MAIR_EL1, R20                      // 14a238d5
  1533  	MSR	R21, MAIR_EL1                      // 15a218d5
  1534  	MRS	MAIR_EL1, R20                      // 14a238d5
  1535  	MSR	R5, MAIR_EL1                       // 05a218d5
  1536  	MRS	MDCCINT_EL1, R23                   // 170230d5
  1537  	MSR	R27, MDCCINT_EL1                   // 1b0210d5
  1538  	MRS	MDCCSR_EL0, R19                    // 130133d5
  1539  	MRS	MDRAR_EL1, R12                     // 0c1030d5
  1540  	MRS	MDSCR_EL1, R15                     // 4f0230d5
  1541  	MSR	R15, MDSCR_EL1                     // 4f0210d5
  1542  	MRS	MIDR_EL1, R26                      // 1a0038d5
  1543  	MRS	MPIDR_EL1, R25                     // b90038d5
  1544  	MRS	MVFR0_EL1, R29                     // 1d0338d5
  1545  	MRS	MVFR1_EL1, R7                      // 270338d5
  1546  	MRS	MVFR2_EL1, R19                     // 530338d5
  1547  	MRS	NZCV, R11                          // 0b423bd5
  1548  	MSR	R10, NZCV                          // 0a421bd5
  1549  	MRS	OSDLR_EL1, R16                     // 901330d5
  1550  	MSR	R21, OSDLR_EL1                     // 951310d5
  1551  	MRS	OSDTRRX_EL1, R5                    // 450030d5
  1552  	MSR	R30, OSDTRRX_EL1                   // 5e0010d5
  1553  	MRS	OSDTRTX_EL1, R3                    // 430330d5
  1554  	MSR	R13, OSDTRTX_EL1                   // 4d0310d5
  1555  	MRS	OSECCR_EL1, R2                     // 420630d5
  1556  	MSR	R17, OSECCR_EL1                    // 510610d5
  1557  	MSR	R3, OSLAR_EL1                      // 831010d5
  1558  	MRS	OSLSR_EL1, R15                     // 8f1130d5
  1559  	MRS	PAN, R14                           // 6e4238d5
  1560  	MSR	R0, PAN                            // 604218d5
  1561  	MRS	PAR_EL1, R27                       // 1b7438d5
  1562  	MSR	R3, PAR_EL1                        // 037418d5
  1563  	MRS	PMCCFILTR_EL0, R10                 // eaef3bd5
  1564  	MSR	R16, PMCCFILTR_EL0                 // f0ef1bd5
  1565  	MRS	PMCCNTR_EL0, R17                   // 119d3bd5
  1566  	MSR	R13, PMCCNTR_EL0                   // 0d9d1bd5
  1567  	MRS	PMCEID0_EL0, R8                    // c89c3bd5
  1568  	MRS	PMCEID1_EL0, R30                   // fe9c3bd5
  1569  	MRS	PMCNTENCLR_EL0, R11                // 4b9c3bd5
  1570  	MSR	R21, PMCNTENCLR_EL0                // 559c1bd5
  1571  	MRS	PMCNTENSET_EL0, R25                // 399c3bd5
  1572  	MSR	R13, PMCNTENSET_EL0                // 2d9c1bd5
  1573  	MRS	PMCR_EL0, R23                      // 179c3bd5
  1574  	MSR	R11, PMCR_EL0                      // 0b9c1bd5
  1575  	MRS	PMEVCNTR0_EL0, R27                 // 1be83bd5
  1576  	MRS	PMEVCNTR1_EL0, R23                 // 37e83bd5
  1577  	MRS	PMEVCNTR2_EL0, R26                 // 5ae83bd5
  1578  	MRS	PMEVCNTR3_EL0, R11                 // 6be83bd5
  1579  	MRS	PMEVCNTR4_EL0, R14                 // 8ee83bd5
  1580  	MRS	PMEVCNTR5_EL0, R9                  // a9e83bd5
  1581  	MRS	PMEVCNTR6_EL0, R30                 // dee83bd5
  1582  	MRS	PMEVCNTR7_EL0, R19                 // f3e83bd5
  1583  	MRS	PMEVCNTR8_EL0, R5                  // 05e93bd5
  1584  	MRS	PMEVCNTR9_EL0, R27                 // 3be93bd5
  1585  	MRS	PMEVCNTR10_EL0, R23                // 57e93bd5
  1586  	MRS	PMEVCNTR11_EL0, R27                // 7be93bd5
  1587  	MRS	PMEVCNTR12_EL0, R0                 // 80e93bd5
  1588  	MRS	PMEVCNTR13_EL0, R13                // ade93bd5
  1589  	MRS	PMEVCNTR14_EL0, R27                // dbe93bd5
  1590  	MRS	PMEVCNTR15_EL0, R16                // f0e93bd5
  1591  	MRS	PMEVCNTR16_EL0, R16                // 10ea3bd5
  1592  	MRS	PMEVCNTR17_EL0, R14                // 2eea3bd5
  1593  	MRS	PMEVCNTR18_EL0, R10                // 4aea3bd5
  1594  	MRS	PMEVCNTR19_EL0, R12                // 6cea3bd5
  1595  	MRS	PMEVCNTR20_EL0, R5                 // 85ea3bd5
  1596  	MRS	PMEVCNTR21_EL0, R26                // baea3bd5
  1597  	MRS	PMEVCNTR22_EL0, R19                // d3ea3bd5
  1598  	MRS	PMEVCNTR23_EL0, R5                 // e5ea3bd5
  1599  	MRS	PMEVCNTR24_EL0, R17                // 11eb3bd5
  1600  	MRS	PMEVCNTR25_EL0, R0                 // 20eb3bd5
  1601  	MRS	PMEVCNTR26_EL0, R20                // 54eb3bd5
  1602  	MRS	PMEVCNTR27_EL0, R12                // 6ceb3bd5
  1603  	MRS	PMEVCNTR28_EL0, R29                // 9deb3bd5
  1604  	MRS	PMEVCNTR29_EL0, R22                // b6eb3bd5
  1605  	MRS	PMEVCNTR30_EL0, R22                // d6eb3bd5
  1606  	MSR	R30, PMEVCNTR0_EL0                 // 1ee81bd5
  1607  	MSR	R1, PMEVCNTR1_EL0                  // 21e81bd5
  1608  	MSR	R20, PMEVCNTR2_EL0                 // 54e81bd5
  1609  	MSR	R9, PMEVCNTR3_EL0                  // 69e81bd5
  1610  	MSR	R8, PMEVCNTR4_EL0                  // 88e81bd5
  1611  	MSR	R2, PMEVCNTR5_EL0                  // a2e81bd5
  1612  	MSR	R30, PMEVCNTR6_EL0                 // dee81bd5
  1613  	MSR	R14, PMEVCNTR7_EL0                 // eee81bd5
  1614  	MSR	R1, PMEVCNTR8_EL0                  // 01e91bd5
  1615  	MSR	R15, PMEVCNTR9_EL0                 // 2fe91bd5
  1616  	MSR	R15, PMEVCNTR10_EL0                // 4fe91bd5
  1617  	MSR	R14, PMEVCNTR11_EL0                // 6ee91bd5
  1618  	MSR	R15, PMEVCNTR12_EL0                // 8fe91bd5
  1619  	MSR	R25, PMEVCNTR13_EL0                // b9e91bd5
  1620  	MSR	R26, PMEVCNTR14_EL0                // dae91bd5
  1621  	MSR	R21, PMEVCNTR15_EL0                // f5e91bd5
  1622  	MSR	R29, PMEVCNTR16_EL0                // 1dea1bd5
  1623  	MSR	R11, PMEVCNTR17_EL0                // 2bea1bd5
  1624  	MSR	R16, PMEVCNTR18_EL0                // 50ea1bd5
  1625  	MSR	R2, PMEVCNTR19_EL0                 // 62ea1bd5
  1626  	MSR	R19, PMEVCNTR20_EL0                // 93ea1bd5
  1627  	MSR	R17, PMEVCNTR21_EL0                // b1ea1bd5
  1628  	MSR	R7, PMEVCNTR22_EL0                 // c7ea1bd5
  1629  	MSR	R23, PMEVCNTR23_EL0                // f7ea1bd5
  1630  	MSR	R15, PMEVCNTR24_EL0                // 0feb1bd5
  1631  	MSR	R27, PMEVCNTR25_EL0                // 3beb1bd5
  1632  	MSR	R13, PMEVCNTR26_EL0                // 4deb1bd5
  1633  	MSR	R2, PMEVCNTR27_EL0                 // 62eb1bd5
  1634  	MSR	R15, PMEVCNTR28_EL0                // 8feb1bd5
  1635  	MSR	R14, PMEVCNTR29_EL0                // aeeb1bd5
  1636  	MSR	R23, PMEVCNTR30_EL0                // d7eb1bd5
  1637  	MRS	PMEVTYPER0_EL0, R23                // 17ec3bd5
  1638  	MRS	PMEVTYPER1_EL0, R30                // 3eec3bd5
  1639  	MRS	PMEVTYPER2_EL0, R12                // 4cec3bd5
  1640  	MRS	PMEVTYPER3_EL0, R13                // 6dec3bd5
  1641  	MRS	PMEVTYPER4_EL0, R25                // 99ec3bd5
  1642  	MRS	PMEVTYPER5_EL0, R23                // b7ec3bd5
  1643  	MRS	PMEVTYPER6_EL0, R8                 // c8ec3bd5
  1644  	MRS	PMEVTYPER7_EL0, R2                 // e2ec3bd5
  1645  	MRS	PMEVTYPER8_EL0, R23                // 17ed3bd5
  1646  	MRS	PMEVTYPER9_EL0, R25                // 39ed3bd5
  1647  	MRS	PMEVTYPER10_EL0, R0                // 40ed3bd5
  1648  	MRS	PMEVTYPER11_EL0, R30               // 7eed3bd5
  1649  	MRS	PMEVTYPER12_EL0, R0                // 80ed3bd5
  1650  	MRS	PMEVTYPER13_EL0, R9                // a9ed3bd5
  1651  	MRS	PMEVTYPER14_EL0, R15               // cfed3bd5
  1652  	MRS	PMEVTYPER15_EL0, R13               // eded3bd5
  1653  	MRS	PMEVTYPER16_EL0, R11               // 0bee3bd5
  1654  	MRS	PMEVTYPER17_EL0, R19               // 33ee3bd5
  1655  	MRS	PMEVTYPER18_EL0, R3                // 43ee3bd5
  1656  	MRS	PMEVTYPER19_EL0, R17               // 71ee3bd5
  1657  	MRS	PMEVTYPER20_EL0, R8                // 88ee3bd5
  1658  	MRS	PMEVTYPER21_EL0, R2                // a2ee3bd5
  1659  	MRS	PMEVTYPER22_EL0, R5                // c5ee3bd5
  1660  	MRS	PMEVTYPER23_EL0, R17               // f1ee3bd5
  1661  	MRS	PMEVTYPER24_EL0, R22               // 16ef3bd5
  1662  	MRS	PMEVTYPER25_EL0, R3                // 23ef3bd5
  1663  	MRS	PMEVTYPER26_EL0, R23               // 57ef3bd5
  1664  	MRS	PMEVTYPER27_EL0, R19               // 73ef3bd5
  1665  	MRS	PMEVTYPER28_EL0, R24               // 98ef3bd5
  1666  	MRS	PMEVTYPER29_EL0, R3                // a3ef3bd5
  1667  	MRS	PMEVTYPER30_EL0, R1                // c1ef3bd5
  1668  	MSR	R20, PMEVTYPER0_EL0                // 14ec1bd5
  1669  	MSR	R20, PMEVTYPER1_EL0                // 34ec1bd5
  1670  	MSR	R14, PMEVTYPER2_EL0                // 4eec1bd5
  1671  	MSR	R26, PMEVTYPER3_EL0                // 7aec1bd5
  1672  	MSR	R11, PMEVTYPER4_EL0                // 8bec1bd5
  1673  	MSR	R16, PMEVTYPER5_EL0                // b0ec1bd5
  1674  	MSR	R29, PMEVTYPER6_EL0                // ddec1bd5
  1675  	MSR	R3, PMEVTYPER7_EL0                 // e3ec1bd5
  1676  	MSR	R30, PMEVTYPER8_EL0                // 1eed1bd5
  1677  	MSR	R17, PMEVTYPER9_EL0                // 31ed1bd5
  1678  	MSR	R10, PMEVTYPER10_EL0               // 4aed1bd5
  1679  	MSR	R19, PMEVTYPER11_EL0               // 73ed1bd5
  1680  	MSR	R13, PMEVTYPER12_EL0               // 8ded1bd5
  1681  	MSR	R23, PMEVTYPER13_EL0               // b7ed1bd5
  1682  	MSR	R13, PMEVTYPER14_EL0               // cded1bd5
  1683  	MSR	R9, PMEVTYPER15_EL0                // e9ed1bd5
  1684  	MSR	R1, PMEVTYPER16_EL0                // 01ee1bd5
  1685  	MSR	R19, PMEVTYPER17_EL0               // 33ee1bd5
  1686  	MSR	R22, PMEVTYPER18_EL0               // 56ee1bd5
  1687  	MSR	R23, PMEVTYPER19_EL0               // 77ee1bd5
  1688  	MSR	R30, PMEVTYPER20_EL0               // 9eee1bd5
  1689  	MSR	R9, PMEVTYPER21_EL0                // a9ee1bd5
  1690  	MSR	R3, PMEVTYPER22_EL0                // c3ee1bd5
  1691  	MSR	R1, PMEVTYPER23_EL0                // e1ee1bd5
  1692  	MSR	R16, PMEVTYPER24_EL0               // 10ef1bd5
  1693  	MSR	R12, PMEVTYPER25_EL0               // 2cef1bd5
  1694  	MSR	R7, PMEVTYPER26_EL0                // 47ef1bd5
  1695  	MSR	R9, PMEVTYPER27_EL0                // 69ef1bd5
  1696  	MSR	R10, PMEVTYPER28_EL0               // 8aef1bd5
  1697  	MSR	R5, PMEVTYPER29_EL0                // a5ef1bd5
  1698  	MSR	R12, PMEVTYPER30_EL0               // ccef1bd5
  1699  	MRS	PMINTENCLR_EL1, R24                // 589e38d5
  1700  	MSR	R15, PMINTENCLR_EL1                // 4f9e18d5
  1701  	MRS	PMINTENSET_EL1, R1                 // 219e38d5
  1702  	MSR	R4, PMINTENSET_EL1                 // 249e18d5
  1703  	MRS	PMOVSCLR_EL0, R6                   // 669c3bd5
  1704  	MSR	R30, PMOVSCLR_EL0                  // 7e9c1bd5
  1705  	MRS	PMOVSSET_EL0, R16                  // 709e3bd5
  1706  	MSR	R12, PMOVSSET_EL0                  // 6c9e1bd5
  1707  	MRS	PMSELR_EL0, R30                    // be9c3bd5
  1708  	MSR	R5, PMSELR_EL0                     // a59c1bd5
  1709  	MSR	R27, PMSWINC_EL0                   // 9b9c1bd5
  1710  	MRS	PMUSERENR_EL0, R8                  // 089e3bd5
  1711  	MSR	R6, PMUSERENR_EL0                  // 069e1bd5
  1712  	MRS	PMXEVCNTR_EL0, R26                 // 5a9d3bd5
  1713  	MSR	R10, PMXEVCNTR_EL0                 // 4a9d1bd5
  1714  	MRS	PMXEVTYPER_EL0, R4                 // 249d3bd5
  1715  	MSR	R4, PMXEVTYPER_EL0                 // 249d1bd5
  1716  	MRS	REVIDR_EL1, R29                    // dd0038d5
  1717  	MRS	RMR_EL1, R4                        // 44c038d5
  1718  	MSR	R0, RMR_EL1                        // 40c018d5
  1719  	MRS	RVBAR_EL1, R7                      // 27c038d5
  1720  	MRS	SCTLR_EL1, R8                      // 081038d5
  1721  	MSR	R0, SCTLR_EL1                      // 001018d5
  1722  	MRS	SCTLR_EL1, R30                     // 1e1038d5
  1723  	MSR	R13, SCTLR_EL1                     // 0d1018d5
  1724  	MRS	SPSR_EL1, R1                       // 014038d5
  1725  	MSR	R2, SPSR_EL1                       // 024018d5
  1726  	MRS	SPSR_EL1, R3                       // 034038d5
  1727  	MSR	R14, SPSR_EL1                      // 0e4018d5
  1728  	MRS	SPSR_abt, R12                      // 2c433cd5
  1729  	MSR	R4, SPSR_abt                       // 24431cd5
  1730  	MRS	SPSR_fiq, R17                      // 71433cd5
  1731  	MSR	R9, SPSR_fiq                       // 69431cd5
  1732  	MRS	SPSR_irq, R12                      // 0c433cd5
  1733  	MSR	R23, SPSR_irq                      // 17431cd5
  1734  	MRS	SPSR_und, R29                      // 5d433cd5
  1735  	MSR	R3, SPSR_und                       // 43431cd5
  1736  	MRS	SPSel, R29                         // 1d4238d5
  1737  	MSR	R1, SPSel                          // 014218d5
  1738  	MRS	SP_EL0, R10                        // 0a4138d5
  1739  	MSR	R4, SP_EL0                         // 044118d5
  1740  	MRS	SP_EL1, R22                        // 16413cd5
  1741  	MSR	R17, SP_EL1                        // 11411cd5
  1742  	MRS	TCR_EL1, R17                       // 512038d5
  1743  	MSR	R23, TCR_EL1                       // 572018d5
  1744  	MRS	TCR_EL1, R14                       // 4e2038d5
  1745  	MSR	R29, TCR_EL1                       // 5d2018d5
  1746  	MRS	TPIDRRO_EL0, R26                   // 7ad03bd5
  1747  	MSR	R16, TPIDRRO_EL0                   // 70d01bd5
  1748  	MRS	TPIDR_EL0, R23                     // 57d03bd5
  1749  	MSR	R5, TPIDR_EL0                      // 45d01bd5
  1750  	MRS	TPIDR_EL1, R17                     // 91d038d5
  1751  	MSR	R22, TPIDR_EL1                     // 96d018d5
  1752  	MRS	TTBR0_EL1, R30                     // 1e2038d5
  1753  	MSR	R29, TTBR0_EL1                     // 1d2018d5
  1754  	MRS	TTBR0_EL1, R23                     // 172038d5
  1755  	MSR	R15, TTBR0_EL1                     // 0f2018d5
  1756  	MRS	TTBR1_EL1, R5                      // 252038d5
  1757  	MSR	R26, TTBR1_EL1                     // 3a2018d5
  1758  	MRS	TTBR1_EL1, R19                     // 332038d5
  1759  	MSR	R23, TTBR1_EL1                     // 372018d5
  1760  	MRS	UAO, R22                           // 964238d5
  1761  	MSR	R4, UAO                            // 844218d5
  1762  	MRS	VBAR_EL1, R23                      // 17c038d5
  1763  	MSR	R2, VBAR_EL1                       // 02c018d5
  1764  	MRS	VBAR_EL1, R6                       // 06c038d5
  1765  	MSR	R3, VBAR_EL1                       // 03c018d5
  1766  	MRS	DISR_EL1, R12                      // 2cc138d5
  1767  	MSR	R24, DISR_EL1                      // 38c118d5
  1768  	MRS	MPIDR_EL1, R1                      // a10038d5
  1769  	MRS	MIDR_EL1, R13                      // 0d0038d5
  1770  	MRS	ZCR_EL1, R24                       // 181238d5
  1771  	MSR	R13, ZCR_EL1                       // 0d1218d5
  1772  	MRS	ZCR_EL1, R23                       // 171238d5
  1773  	MSR	R17, ZCR_EL1                       // 111218d5
  1774  	SYS	$32768, R1                         // 018008d5
  1775  	SYS	$32768                             // 1f8008d5
  1776  
  1777  // TLBI instruction
  1778  	TLBI	VMALLE1IS                          // 1f8308d5
  1779  	TLBI	VMALLE1                            // 1f8708d5
  1780  	TLBI	ALLE2IS                            // 1f830cd5
  1781  	TLBI	ALLE1IS                            // 9f830cd5
  1782  	TLBI	VMALLS12E1IS                       // df830cd5
  1783  	TLBI	ALLE2                              // 1f870cd5
  1784  	TLBI	ALLE1                              // 9f870cd5
  1785  	TLBI	VMALLS12E1                         // df870cd5
  1786  	TLBI	ALLE3IS                            // 1f830ed5
  1787  	TLBI	ALLE3                              // 1f870ed5
  1788  	TLBI	VMALLE1OS                          // 1f8108d5
  1789  	TLBI	ALLE2OS                            // 1f810cd5
  1790  	TLBI	ALLE1OS                            // 9f810cd5
  1791  	TLBI	VMALLS12E1OS                       // df810cd5
  1792  	TLBI	ALLE3OS                            // 1f810ed5
  1793  	TLBI	VAE1IS, R0                         // 208308d5
  1794  	TLBI	ASIDE1IS, R1                       // 418308d5
  1795  	TLBI	VAAE1IS, R2                        // 628308d5
  1796  	TLBI	VALE1IS, R3                        // a38308d5
  1797  	TLBI	VAALE1IS, R4                       // e48308d5
  1798  	TLBI	VAE1, R5                           // 258708d5
  1799  	TLBI	ASIDE1, R6                         // 468708d5
  1800  	TLBI	VAAE1, R7                          // 678708d5
  1801  	TLBI	VALE1, R8                          // a88708d5
  1802  	TLBI	VAALE1, R9                         // e98708d5
  1803  	TLBI	IPAS2E1IS, R10                     // 2a800cd5
  1804  	TLBI	IPAS2LE1IS, R11                    // ab800cd5
  1805  	TLBI	VAE2IS, R12                        // 2c830cd5
  1806  	TLBI	VALE2IS, R13                       // ad830cd5
  1807  	TLBI	IPAS2E1, R14                       // 2e840cd5
  1808  	TLBI	IPAS2LE1, R15                      // af840cd5
  1809  	TLBI	VAE2, R16                          // 30870cd5
  1810  	TLBI	VALE2, R17                         // b1870cd5
  1811  	TLBI	VAE3IS, ZR                         // 3f830ed5
  1812  	TLBI	VALE3IS, R19                       // b3830ed5
  1813  	TLBI	VAE3, R20                          // 34870ed5
  1814  	TLBI	VALE3, R21                         // b5870ed5
  1815  	TLBI	VAE1OS, R22                        // 368108d5
  1816  	TLBI	ASIDE1OS, R23                      // 578108d5
  1817  	TLBI	VAAE1OS, R24                       // 788108d5
  1818  	TLBI	VALE1OS, R25                       // b98108d5
  1819  	TLBI	VAALE1OS, R26                      // fa8108d5
  1820  	TLBI	RVAE1IS, R27                       // 3b8208d5
  1821  	TLBI	RVAAE1IS, ZR                       // 7f8208d5
  1822  	TLBI	RVALE1IS, R29                      // bd8208d5
  1823  	TLBI	RVAALE1IS, R30                     // fe8208d5
  1824  	TLBI	RVAE1OS, ZR                        // 3f8508d5
  1825  	TLBI	RVAAE1OS, R0                       // 608508d5
  1826  	TLBI	RVALE1OS, R1                       // a18508d5
  1827  	TLBI	RVAALE1OS, R2                      // e28508d5
  1828  	TLBI	RVAE1, R3                          // 238608d5
  1829  	TLBI	RVAAE1, R4                         // 648608d5
  1830  	TLBI	RVALE1, R5                         // a58608d5
  1831  	TLBI	RVAALE1, R6                        // e68608d5
  1832  	TLBI	RIPAS2E1IS, R7                     // 47800cd5
  1833  	TLBI	RIPAS2LE1IS, R8                    // c8800cd5
  1834  	TLBI	VAE2OS, R9                         // 29810cd5
  1835  	TLBI	VALE2OS, R10                       // aa810cd5
  1836  	TLBI	RVAE2IS, R11                       // 2b820cd5
  1837  	TLBI	RVALE2IS, R12                      // ac820cd5
  1838  	TLBI	IPAS2E1OS, R13                     // 0d840cd5
  1839  	TLBI	RIPAS2E1, R14                      // 4e840cd5
  1840  	TLBI	RIPAS2E1OS, R15                    // 6f840cd5
  1841  	TLBI	IPAS2LE1OS, R16                    // 90840cd5
  1842  	TLBI	RIPAS2LE1, R17                     // d1840cd5
  1843  	TLBI	RIPAS2LE1OS, ZR                    // ff840cd5
  1844  	TLBI	RVAE2OS, R19                       // 33850cd5
  1845  	TLBI	RVALE2OS, R20                      // b4850cd5
  1846  	TLBI	RVAE2, R21                         // 35860cd5
  1847  	TLBI	RVALE2, R22                        // b6860cd5
  1848  	TLBI	VAE3OS, R23                        // 37810ed5
  1849  	TLBI	VALE3OS, R24                       // b8810ed5
  1850  	TLBI	RVAE3IS, R25                       // 39820ed5
  1851  	TLBI	RVALE3IS, R26                      // ba820ed5
  1852  	TLBI	RVAE3OS, R27                       // 3b850ed5
  1853  	TLBI	RVALE3OS, ZR                       // bf850ed5
  1854  	TLBI	RVAE3, R29                         // 3d860ed5
  1855  	TLBI	RVALE3, R30                        // be860ed5
  1856  
  1857  // DC instruction
  1858  	DC	IVAC, R0                           // 207608d5
  1859  	DC	ISW, R1                            // 417608d5
  1860  	DC	CSW, R2                            // 427a08d5
  1861  	DC	CISW, R3                           // 437e08d5
  1862  	DC	ZVA, R4                            // 24740bd5
  1863  	DC	CVAC, R5                           // 257a0bd5
  1864  	DC	CVAU, R6                           // 267b0bd5
  1865  	DC	CIVAC, R7                          // 277e0bd5
  1866  	DC	IGVAC, R8                          // 687608d5
  1867  	DC	IGSW, R9                           // 897608d5
  1868  	DC	IGDVAC, R10                        // aa7608d5
  1869  	DC	IGDSW, R11                         // cb7608d5
  1870  	DC	CGSW, R12                          // 8c7a08d5
  1871  	DC	CGDSW, R13                         // cd7a08d5
  1872  	DC	CIGSW, R14                         // 8e7e08d5
  1873  	DC	CIGDSW, R15                        // cf7e08d5
  1874  	DC	GVA, R16                           // 70740bd5
  1875  	DC	GZVA, R17                          // 91740bd5
  1876  	DC	CGVAC, ZR                          // 7f7a0bd5
  1877  	DC	CGDVAC, R19                        // b37a0bd5
  1878  	DC	CGVAP, R20                         // 747c0bd5
  1879  	DC	CGDVAP, R21                        // b57c0bd5
  1880  	DC	CGVADP, R22                        // 767d0bd5
  1881  	DC	CGDVADP, R23                       // b77d0bd5
  1882  	DC	CIGVAC, R24                        // 787e0bd5
  1883  	DC	CIGDVAC, R25                       // b97e0bd5
  1884  	DC	CVAP, R26                          // 3a7c0bd5
  1885  	DC	CVADP, R27                         // 3b7d0bd5
  1886  	END
  1887  

View as plain text