152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
252bae2fcc174535edd254f8a9b6d0af908a76480sewardj/* To compile:
352bae2fcc174535edd254f8a9b6d0af908a76480sewardj   aarch64-linux-gnu-gcc -Wall -g -O0 -o memory none/tests/arm64/memory.c
452bae2fcc174535edd254f8a9b6d0af908a76480sewardj*/
552bae2fcc174535edd254f8a9b6d0af908a76480sewardj
652bae2fcc174535edd254f8a9b6d0af908a76480sewardj#include <stdio.h>
752bae2fcc174535edd254f8a9b6d0af908a76480sewardj#include <malloc.h>  // memalign
852bae2fcc174535edd254f8a9b6d0af908a76480sewardj#include <string.h>  // memset
952bae2fcc174535edd254f8a9b6d0af908a76480sewardj#include <assert.h>
1052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1152bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  unsigned char           UChar;
1252bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  unsigned short int      UShort;
1352bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  unsigned int            UInt;
1452bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  signed int              Int;
1552bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  unsigned char           UChar;
1652bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  signed long long int    Long;
1752bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  unsigned long long int  ULong;
1852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1952bae2fcc174535edd254f8a9b6d0af908a76480sewardjtypedef  unsigned char           Bool;
2052bae2fcc174535edd254f8a9b6d0af908a76480sewardj#define False ((Bool)0)
2152bae2fcc174535edd254f8a9b6d0af908a76480sewardj#define True  ((Bool)1)
2252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
2352bae2fcc174535edd254f8a9b6d0af908a76480sewardj__attribute__((noinline))
2452bae2fcc174535edd254f8a9b6d0af908a76480sewardjstatic void* memalign16(size_t szB)
2552bae2fcc174535edd254f8a9b6d0af908a76480sewardj{
2652bae2fcc174535edd254f8a9b6d0af908a76480sewardj   void* x;
2752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   x = memalign(16, szB);
2852bae2fcc174535edd254f8a9b6d0af908a76480sewardj   assert(x);
2952bae2fcc174535edd254f8a9b6d0af908a76480sewardj   assert(0 == ((16-1) & (unsigned long)x));
3052bae2fcc174535edd254f8a9b6d0af908a76480sewardj   return x;
3152bae2fcc174535edd254f8a9b6d0af908a76480sewardj}
3252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
3352bae2fcc174535edd254f8a9b6d0af908a76480sewardjstatic inline UChar randUChar ( void )
3452bae2fcc174535edd254f8a9b6d0af908a76480sewardj{
3552bae2fcc174535edd254f8a9b6d0af908a76480sewardj   static UInt seed = 80021;
3652bae2fcc174535edd254f8a9b6d0af908a76480sewardj   seed = 1103515245 * seed + 12345;
3752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   return (seed >> 17) & 0xFF;
3852bae2fcc174535edd254f8a9b6d0af908a76480sewardj}
3952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
4052bae2fcc174535edd254f8a9b6d0af908a76480sewardjstatic ULong randULong ( void )
4152bae2fcc174535edd254f8a9b6d0af908a76480sewardj{
4252bae2fcc174535edd254f8a9b6d0af908a76480sewardj   Int i;
4352bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ULong r = 0;
4452bae2fcc174535edd254f8a9b6d0af908a76480sewardj   for (i = 0; i < 8; i++) {
4552bae2fcc174535edd254f8a9b6d0af908a76480sewardj      r = (r << 8) | (ULong)(0xFF & randUChar());
4652bae2fcc174535edd254f8a9b6d0af908a76480sewardj   }
4752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   return r;
4852bae2fcc174535edd254f8a9b6d0af908a76480sewardj}
4952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
5052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
5152bae2fcc174535edd254f8a9b6d0af908a76480sewardj// Same as TESTINST2 except it doesn't print the RN value, since
5252bae2fcc174535edd254f8a9b6d0af908a76480sewardj// that may differ between runs (it's a stack address).  Also,
5352bae2fcc174535edd254f8a9b6d0af908a76480sewardj// claim it trashes x28 so that can be used as scratch if needed.
5452bae2fcc174535edd254f8a9b6d0af908a76480sewardj#define TESTINST2_hide2(instruction, RNval, RD, RN, carryin) \
5552bae2fcc174535edd254f8a9b6d0af908a76480sewardj{ \
5652bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ULong out; \
5752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ULong nzcv_out; \
5852bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ULong nzcv_in = (carryin ? (1<<29) : 0); \
5952bae2fcc174535edd254f8a9b6d0af908a76480sewardj   __asm__ __volatile__( \
6052bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "msr nzcv,%3;" \
6152bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "mov " #RN ",%2;" \
6252bae2fcc174535edd254f8a9b6d0af908a76480sewardj      instruction ";" \
6352bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "mov %0," #RD ";" \
6452bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "mrs %1,nzcv;" \
6552bae2fcc174535edd254f8a9b6d0af908a76480sewardj      : "=&r" (out), "=&r" (nzcv_out) \
6652bae2fcc174535edd254f8a9b6d0af908a76480sewardj      : "r" (RNval), "r" (nzcv_in) \
6752bae2fcc174535edd254f8a9b6d0af908a76480sewardj      : #RD, #RN, "cc", "memory", "x28"  \
6852bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ); \
6952bae2fcc174535edd254f8a9b6d0af908a76480sewardj   printf("%s :: rd %016llx rn (hidden), " \
7052bae2fcc174535edd254f8a9b6d0af908a76480sewardj          "cin %d, nzcv %08llx %c%c%c%c\n",       \
7152bae2fcc174535edd254f8a9b6d0af908a76480sewardj      instruction, out, \
7252bae2fcc174535edd254f8a9b6d0af908a76480sewardj      carryin ? 1 : 0, \
7352bae2fcc174535edd254f8a9b6d0af908a76480sewardj      nzcv_out & 0xffff0000, \
7452bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<31) & nzcv_out) ? 'N' : ' ', \
7552bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<30) & nzcv_out) ? 'Z' : ' ', \
7652bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<29) & nzcv_out) ? 'C' : ' ', \
7752bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<28) & nzcv_out) ? 'V' : ' ' \
7852bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ); \
7952bae2fcc174535edd254f8a9b6d0af908a76480sewardj}
8052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
8152bae2fcc174535edd254f8a9b6d0af908a76480sewardj#define TESTINST3_hide2and3(instruction, RMval, RNval, RD, RM, RN, carryin) \
8252bae2fcc174535edd254f8a9b6d0af908a76480sewardj{ \
8352bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ULong out; \
8452bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ULong nzcv_out; \
8552bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ULong nzcv_in = (carryin ? (1<<29) : 0); \
8652bae2fcc174535edd254f8a9b6d0af908a76480sewardj   __asm__ __volatile__( \
8752bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "msr nzcv,%4;" \
8852bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "mov " #RM ",%2;" \
8952bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "mov " #RN ",%3;" \
9052bae2fcc174535edd254f8a9b6d0af908a76480sewardj      instruction ";" \
9152bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "mov %0," #RD ";" \
9252bae2fcc174535edd254f8a9b6d0af908a76480sewardj      "mrs %1,nzcv;" \
9352bae2fcc174535edd254f8a9b6d0af908a76480sewardj      : "=&r" (out), "=&r" (nzcv_out) \
9452bae2fcc174535edd254f8a9b6d0af908a76480sewardj      : "r" (RMval), "r" (RNval), "r" (nzcv_in) \
9552bae2fcc174535edd254f8a9b6d0af908a76480sewardj      : #RD, #RM, #RN, "cc", "memory" \
9652bae2fcc174535edd254f8a9b6d0af908a76480sewardj   ); \
9752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   printf("%s :: rd %016llx rm (hidden), rn (hidden), " \
9852bae2fcc174535edd254f8a9b6d0af908a76480sewardj          "cin %d, nzcv %08llx %c%c%c%c\n",       \
9952bae2fcc174535edd254f8a9b6d0af908a76480sewardj      instruction, out, \
10052bae2fcc174535edd254f8a9b6d0af908a76480sewardj      carryin ? 1 : 0, \
10152bae2fcc174535edd254f8a9b6d0af908a76480sewardj      nzcv_out & 0xffff0000, \
10252bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<31) & nzcv_out) ? 'N' : ' ', \
10352bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<30) & nzcv_out) ? 'Z' : ' ', \
10452bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<29) & nzcv_out) ? 'C' : ' ', \
10552bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ((1<<28) & nzcv_out) ? 'V' : ' ' \
10652bae2fcc174535edd254f8a9b6d0af908a76480sewardj      ); \
10752bae2fcc174535edd254f8a9b6d0af908a76480sewardj}
10852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
10952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
11052bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
11152bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
11252bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
113011dafb61cf25ff3337043315b2975986af226cfsewardj//                                                            //
114011dafb61cf25ff3337043315b2975986af226cfsewardj// test_memory_old                                            //
115011dafb61cf25ff3337043315b2975986af226cfsewardj//                                                            //
11652bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
11752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
11852bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
11952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
120011dafb61cf25ff3337043315b2975986af226cfsewardjstatic __attribute((noinline)) void test_memory_old ( void )
12152bae2fcc174535edd254f8a9b6d0af908a76480sewardj{
12252bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("Integer loads\n");
12352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
12452bae2fcc174535edd254f8a9b6d0af908a76480sewardjunsigned char area[512];
12552bae2fcc174535edd254f8a9b6d0af908a76480sewardj
12652bae2fcc174535edd254f8a9b6d0af908a76480sewardj#define RESET \
12752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   do { int i; for (i = 0; i < sizeof(area); i++) \
12852bae2fcc174535edd254f8a9b6d0af908a76480sewardj          area[i] = i | 0x80; \
12952bae2fcc174535edd254f8a9b6d0af908a76480sewardj   } while (0)
13052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
13152bae2fcc174535edd254f8a9b6d0af908a76480sewardj#define AREA_MID (((ULong)(&area[(sizeof(area)/2)-1])) & (~(ULong)0xF))
13252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
13352bae2fcc174535edd254f8a9b6d0af908a76480sewardjRESET;
13452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
13552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
13652bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR,STR (immediate, uimm12) (STR cases are MISSING)");
13752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldr  x21, [x22, #24]", AREA_MID, x21,x22,0);
13852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldr  w21, [x22, #20]", AREA_MID, x21,x22,0);
13952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrh w21, [x22, #44]", AREA_MID, x21,x22,0);
14052bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrb w21, [x22, #56]", AREA_MID, x21,x22,0);
14152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
14252bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
14352bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDUR,STUR (immediate, simm9) (STR cases and wb check are MISSING)\n");
14452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldr x21, [x22], #-24", AREA_MID, x21,x22,0);
14552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldr x21, [x22, #-40]!", AREA_MID, x21,x22,0);
14652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldr x21, [x22, #-48]", AREA_MID, x21,x22,0);
14752bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDUR,STUR (immediate, simm9): STR cases are MISSING");
14852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
14952bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
15052bae2fcc174535edd254f8a9b6d0af908a76480sewardj// TESTINST2_hide2 allows use of x28 as scratch
15152bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDP,STP (immediate, simm7) (STR cases and wb check is MISSING)\n");
15252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
15352bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp x21, x28, [x22], #-24 ; add x21,x21,x28", AREA_MID, x21,x22,0);
15452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp x21, x28, [x22], #-24 ; eor x21,x21,x28", AREA_MID, x21,x22,0);
15552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp x21, x28, [x22, #-40]! ; add x21,x21,x28", AREA_MID, x21,x22,0);
15652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp x21, x28, [x22, #-40]! ; eor x21,x21,x28", AREA_MID, x21,x22,0);
15752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp x21, x28, [x22, #-40] ; add x21,x21,x28", AREA_MID, x21,x22,0);
15852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp x21, x28, [x22, #-40] ; eor x21,x21,x28", AREA_MID, x21,x22,0);
15952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
16052bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp w21, w28, [x22], #-24 ; add x21,x21,x28", AREA_MID, x21,x22,0);
16152bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp w21, w28, [x22], #-24 ; eor x21,x21,x28", AREA_MID, x21,x22,0);
16252bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp w21, w28, [x22, #-40]! ; add x21,x21,x28", AREA_MID, x21,x22,0);
16352bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp w21, w28, [x22, #-40]! ; eor x21,x21,x28", AREA_MID, x21,x22,0);
16452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp w21, w28, [x22, #-40] ; add x21,x21,x28", AREA_MID, x21,x22,0);
16552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldp w21, w28, [x22, #-40] ; eor x21,x21,x28", AREA_MID, x21,x22,0);
16652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
16752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
16852bae2fcc174535edd254f8a9b6d0af908a76480sewardj// This is a bit tricky.  We load the value from just before and
16952bae2fcc174535edd254f8a9b6d0af908a76480sewardj// just after the actual instruction.  Because TESTINSN2_hide2
17052bae2fcc174535edd254f8a9b6d0af908a76480sewardj// generates two fixed insns either side of the test insn, these
17152bae2fcc174535edd254f8a9b6d0af908a76480sewardj// should be constant and hence "safe" to check.
17252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
17352bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR (literal, int reg)\n");
17452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("xyzzy00: ldr  x21, xyzzy00 - 8", AREA_MID, x21,x22,0);
17552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("xyzzy01: ldr  x21, xyzzy01 + 0", AREA_MID, x21,x22,0);
17652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("xyzzy02: ldr  x21, xyzzy02 + 8", AREA_MID, x21,x22,0);
17752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
17852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("xyzzy03: ldr  x21, xyzzy03 - 4", AREA_MID, x21,x22,0);
17952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("xyzzy04: ldr  x21, xyzzy04 + 0", AREA_MID, x21,x22,0);
18052bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("xyzzy05: ldr  x21, xyzzy05 + 4", AREA_MID, x21,x22,0);
18152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
18252bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
18352bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("{LD,ST}R (integer register) (entirely MISSING)\n");
18452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
18552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
18652bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDRS{B,H,W} (uimm12)\n");
18752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsw x21, [x22, #24]", AREA_MID, x21,x22,0);
18852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh x21, [x22, #20]", AREA_MID, x21,x22,0);
18952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh w21, [x22, #44]", AREA_MID, x21,x22,0);
19052bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb x21, [x22, #88]", AREA_MID, x21,x22,0);
19152bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb w21, [x22, #56]", AREA_MID, x21,x22,0);
19252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
19352bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
19452bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDRS{B,H,W} (simm9, upd) (upd check is MISSING)\n");
19552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsw x21, [x22, #-24]!", AREA_MID, x21,x22,0);
19652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh x21, [x22, #-20]!", AREA_MID, x21,x22,0);
19752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh w21, [x22, #-44]!", AREA_MID, x21,x22,0);
19852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb x21, [x22, #-88]!", AREA_MID, x21,x22,0);
19952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb w21, [x22, #-56]!", AREA_MID, x21,x22,0);
20052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
20152bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsw x21, [x22], #-24", AREA_MID, x21,x22,0);
20252bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh x21, [x22], #-20", AREA_MID, x21,x22,0);
20352bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh w21, [x22], #-44", AREA_MID, x21,x22,0);
20452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb x21, [x22], #-88", AREA_MID, x21,x22,0);
20552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb w21, [x22], #-56", AREA_MID, x21,x22,0);
20652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
20752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
20852bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDRS{B,H,W} (simm9, noUpd)\n");
20952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsw x21, [x22, #-24]", AREA_MID, x21,x22,0);
21052bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh x21, [x22, #-20]", AREA_MID, x21,x22,0);
21152bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsh w21, [x22, #-44]", AREA_MID, x21,x22,0);
21252bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb x21, [x22, #-88]", AREA_MID, x21,x22,0);
21352bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldrsb w21, [x22, #-56]", AREA_MID, x21,x22,0);
21452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
21552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
21652bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDP,STP (immediate, simm7) (FP&VEC) (entirely MISSING)\n");
21752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
21852bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
21952bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("{LD,ST}R (vector register) (entirely MISSING)\n");
22052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
22152bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
22252bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDRS{B,H,W} (integer register, SX)\n");
22352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
22452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsw x21, [x22,x23]", AREA_MID, 5, x21,x22,x23,0);
22552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsw x21, [x22,x23, lsl #2]", AREA_MID, 5, x21,x22,x23,0);
22652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsw x21, [x22,w23,uxtw #0]", AREA_MID, 5, x21,x22,x23,0);
22752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsw x21, [x22,w23,uxtw #2]", AREA_MID, 5, x21,x22,x23,0);
22852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsw x21, [x22,w23,sxtw #0]", AREA_MID, -5ULL, x21,x22,x23,0);
22952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsw x21, [x22,w23,sxtw #2]", AREA_MID, -5ULL, x21,x22,x23,0);
23052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
23152bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh x21, [x22,x23]", AREA_MID, 5, x21,x22,x23,0);
23252bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh x21, [x22,x23, lsl #1]", AREA_MID, 5, x21,x22,x23,0);
23352bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh x21, [x22,w23,uxtw #0]", AREA_MID, 5, x21,x22,x23,0);
23452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh x21, [x22,w23,uxtw #1]", AREA_MID, 5, x21,x22,x23,0);
23552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh x21, [x22,w23,sxtw #0]", AREA_MID, -5ULL, x21,x22,x23,0);
23652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh x21, [x22,w23,sxtw #1]", AREA_MID, -5ULL, x21,x22,x23,0);
23752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
23852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh w21, [x22,x23]", AREA_MID, 5, x21,x22,x23,0);
23952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh w21, [x22,x23, lsl #1]", AREA_MID, 5, x21,x22,x23,0);
24052bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh w21, [x22,w23,uxtw #0]", AREA_MID, 5, x21,x22,x23,0);
24152bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh w21, [x22,w23,uxtw #1]", AREA_MID, 5, x21,x22,x23,0);
24252bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh w21, [x22,w23,sxtw #0]", AREA_MID, -5ULL, x21,x22,x23,0);
24352bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsh w21, [x22,w23,sxtw #1]", AREA_MID, -5ULL, x21,x22,x23,0);
24452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
24552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb x21, [x22,x23]", AREA_MID, 5, x21,x22,x23,0);
24652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb x21, [x22,x23, lsl #0]", AREA_MID, 5, x21,x22,x23,0);
24752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb x21, [x22,w23,uxtw #0]", AREA_MID, 5, x21,x22,x23,0);
24852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb x21, [x22,w23,uxtw #0]", AREA_MID, 5, x21,x22,x23,0);
24952bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb x21, [x22,w23,sxtw #0]", AREA_MID, -5ULL, x21,x22,x23,0);
25052bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb x21, [x22,w23,sxtw #0]", AREA_MID, -5ULL, x21,x22,x23,0);
25152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
25252bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb w21, [x22,x23]", AREA_MID, 5, x21,x22,x23,0);
25352bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb w21, [x22,x23, lsl #0]", AREA_MID, 5, x21,x22,x23,0);
25452bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb w21, [x22,w23,uxtw #0]", AREA_MID, 5, x21,x22,x23,0);
25552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb w21, [x22,w23,uxtw #0]", AREA_MID, 5, x21,x22,x23,0);
25652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb w21, [x22,w23,sxtw #0]", AREA_MID, -5ULL, x21,x22,x23,0);
25752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST3_hide2and3("ldrsb w21, [x22,w23,sxtw #0]", AREA_MID, -5ULL, x21,x22,x23,0);
25852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
25952bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
26052bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR/STR (immediate, SIMD&FP, unsigned offset) (entirely MISSING)\n");
26152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
26252bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
26352bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR/STR (immediate, SIMD&FP, pre/post index) (entirely MISSING)\n");
26452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
26552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
26652bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDUR/STUR (unscaled offset, SIMD&FP) (entirely MISSING)\n");
26752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
26852bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
26952bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR (literal, SIMD&FP) (entirely MISSING)\n");
27052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
27152bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
27252bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LD1/ST1 (single structure, no offset) (entirely MISSING)\n");
27352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
27452bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
27552bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LD1/ST1 (single structure, post index) (entirely MISSING)\n");
27652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
27752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
27852bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LD{,A}X{R,RH,RB} (entirely MISSING)\n");
27952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
28052bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
28152bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("ST{,L}X{R,RH,RB} (entirely MISSING)\n");
28252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
28352bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
28452bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDA{R,RH,RB}\n");
28552bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldar  x21, [x22]", AREA_MID, x21,x22,0);
28652bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldar  w21, [x22]", AREA_MID, x21,x22,0);
28752bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldarh w21, [x22]", AREA_MID, x21,x22,0);
28852bae2fcc174535edd254f8a9b6d0af908a76480sewardjTESTINST2_hide2("ldarb w21, [x22]", AREA_MID, x21,x22,0);
28952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
29052bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
29152bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("STL{R,RH,RB} (entirely MISSING)\n");
292011dafb61cf25ff3337043315b2975986af226cfsewardj} /* end of test_memory_old() */
29352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
29452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
29552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
29652bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
29752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
298011dafb61cf25ff3337043315b2975986af226cfsewardj//                                                            //
299011dafb61cf25ff3337043315b2975986af226cfsewardj// test_memory_new                                            //
300011dafb61cf25ff3337043315b2975986af226cfsewardj//                                                            //
30152bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
30252bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
30352bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
30452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
30552bae2fcc174535edd254f8a9b6d0af908a76480sewardjstatic void show_block_xor ( UChar* block1, UChar* block2, Int n )
30652bae2fcc174535edd254f8a9b6d0af908a76480sewardj{
30752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   Int i;
30852bae2fcc174535edd254f8a9b6d0af908a76480sewardj   printf("  ");
30952bae2fcc174535edd254f8a9b6d0af908a76480sewardj   for (i = 0; i < n; i++) {
31052bae2fcc174535edd254f8a9b6d0af908a76480sewardj      if (i > 0 && 0 == (i & 15)) printf("\n  ");
31152bae2fcc174535edd254f8a9b6d0af908a76480sewardj      if (0 == (i & 15)) printf("[%3d]  ", i);
31252bae2fcc174535edd254f8a9b6d0af908a76480sewardj      UInt diff = 0xFF & (UInt)(block1[i] - block2[i]);
31352bae2fcc174535edd254f8a9b6d0af908a76480sewardj      if (diff == 0)
31452bae2fcc174535edd254f8a9b6d0af908a76480sewardj         printf(".. ");
31552bae2fcc174535edd254f8a9b6d0af908a76480sewardj      else
31652bae2fcc174535edd254f8a9b6d0af908a76480sewardj         printf("%02x ", diff);
31752bae2fcc174535edd254f8a9b6d0af908a76480sewardj   }
31852bae2fcc174535edd254f8a9b6d0af908a76480sewardj   printf("\n");
31952bae2fcc174535edd254f8a9b6d0af908a76480sewardj}
32052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
32152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
32252bae2fcc174535edd254f8a9b6d0af908a76480sewardj// In: rand:
32352bae2fcc174535edd254f8a9b6d0af908a76480sewardj//       memory area, xferred vec regs, xferred int regs,
32452bae2fcc174535edd254f8a9b6d0af908a76480sewardj//     caller spec:
32552bae2fcc174535edd254f8a9b6d0af908a76480sewardj//       addr reg1, addr reg2
32652bae2fcc174535edd254f8a9b6d0af908a76480sewardj//
32752bae2fcc174535edd254f8a9b6d0af908a76480sewardj// Out: memory area, xferred vec regs, xferred int regs, addr reg1, addr reg2
32852bae2fcc174535edd254f8a9b6d0af908a76480sewardj//
32952bae2fcc174535edd254f8a9b6d0af908a76480sewardj// INSN may mention the following regs as containing load/store data:
33052bae2fcc174535edd254f8a9b6d0af908a76480sewardj//     x13 x23 v17 v18 v19 v20
33152bae2fcc174535edd254f8a9b6d0af908a76480sewardj// and
33252bae2fcc174535edd254f8a9b6d0af908a76480sewardj//     x5 as containing the base address
33352bae2fcc174535edd254f8a9b6d0af908a76480sewardj//     x6 as containing an offset, if required
33452bae2fcc174535edd254f8a9b6d0af908a76480sewardj// A memory area is filled with random data, and x13, x23, v17, v18, v19, v20
33552bae2fcc174535edd254f8a9b6d0af908a76480sewardj// are loaded with random data too.  INSN is then executed, with
33652bae2fcc174535edd254f8a9b6d0af908a76480sewardj// x5 set to the middle of the memory area + AREG1OFF, and x6 set to AREG2VAL.
33752bae2fcc174535edd254f8a9b6d0af908a76480sewardj//
33852bae2fcc174535edd254f8a9b6d0af908a76480sewardj// What is printed out: the XOR of the new and old versions of the
33952bae2fcc174535edd254f8a9b6d0af908a76480sewardj// following:
34052bae2fcc174535edd254f8a9b6d0af908a76480sewardj//    the memory area
34152bae2fcc174535edd254f8a9b6d0af908a76480sewardj//    x13 x23 v17 v18 v19 v20
34252bae2fcc174535edd254f8a9b6d0af908a76480sewardj// and the SUB of the new and old values of the following:
34352bae2fcc174535edd254f8a9b6d0af908a76480sewardj//    x5 x6
34452bae2fcc174535edd254f8a9b6d0af908a76480sewardj// If the insn modifies its base register then (obviously) the x5 "new - old"
34552bae2fcc174535edd254f8a9b6d0af908a76480sewardj// value will be nonzero.
34652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
34752bae2fcc174535edd254f8a9b6d0af908a76480sewardj#define MEM_TEST(INSN, AREG1OFF, AREG2VAL) { \
34852bae2fcc174535edd254f8a9b6d0af908a76480sewardj  int i; \
34952bae2fcc174535edd254f8a9b6d0af908a76480sewardj  const int N = 256; \
35052bae2fcc174535edd254f8a9b6d0af908a76480sewardj  UChar* area = memalign16(N); \
35152bae2fcc174535edd254f8a9b6d0af908a76480sewardj  UChar area2[N]; \
35252bae2fcc174535edd254f8a9b6d0af908a76480sewardj  for (i = 0; i < N; i++) area[i] = area2[i] = randUChar(); \
35352bae2fcc174535edd254f8a9b6d0af908a76480sewardj  ULong block[12]; \
35452bae2fcc174535edd254f8a9b6d0af908a76480sewardj  /* 0:x13      1:x23      2:v17.d[0] 3:v17.d[1] 4:v18.d[0] 5:v18.d[1] */ \
35552bae2fcc174535edd254f8a9b6d0af908a76480sewardj  /* 6:v19.d[0] 7:v19.d[1] 8:v20.d[0] 9:v20.d[1] 10:x5      11:x6 */ \
35652bae2fcc174535edd254f8a9b6d0af908a76480sewardj  for (i = 0; i < 12; i++) block[i] = randULong(); \
35752bae2fcc174535edd254f8a9b6d0af908a76480sewardj  block[10] = (ULong)(&area[128]) + (Long)(Int)AREG1OFF; \
35852bae2fcc174535edd254f8a9b6d0af908a76480sewardj  block[11] = (Long)AREG2VAL; \
35952bae2fcc174535edd254f8a9b6d0af908a76480sewardj  ULong block2[12]; \
36052bae2fcc174535edd254f8a9b6d0af908a76480sewardj  for (i = 0; i < 12; i++) block2[i] = block[i]; \
36152bae2fcc174535edd254f8a9b6d0af908a76480sewardj  __asm__ __volatile__( \
36252bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr x13, [%0, #0]  ; " \
36352bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr x23, [%0, #8]  ; " \
36452bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr q17, [%0, #16] ; " \
36552bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr q18, [%0, #32] ; " \
36652bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr q19, [%0, #48] ; " \
36752bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr q20, [%0, #64] ; " \
36852bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr x5,  [%0, #80] ; " \
36952bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "ldr x6,  [%0, #88] ; " \
37052bae2fcc174535edd254f8a9b6d0af908a76480sewardj  INSN " ; " \
37152bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str x13, [%0, #0]  ; " \
37252bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str x23, [%0, #8]  ; " \
37352bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str q17, [%0, #16] ; " \
37452bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str q18, [%0, #32] ; " \
37552bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str q19, [%0, #48] ; " \
37652bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str q20, [%0, #64] ; " \
37752bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str x5,  [%0, #80] ; " \
37852bae2fcc174535edd254f8a9b6d0af908a76480sewardj  "str x6,  [%0, #88] ; " \
37952bae2fcc174535edd254f8a9b6d0af908a76480sewardj  : : "r"(&block[0]) : "x5", "x6", "x13", "x23", \
38052bae2fcc174535edd254f8a9b6d0af908a76480sewardj                       "v17", "v18", "v19", "v20", "memory", "cc" \
38152bae2fcc174535edd254f8a9b6d0af908a76480sewardj  ); \
38252bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("%s  with  x5 = middle_of_block+%lld,  x6=%lld\n", \
38352bae2fcc174535edd254f8a9b6d0af908a76480sewardj         INSN, (Long)AREG1OFF, (Long)AREG2VAL); \
38452bae2fcc174535edd254f8a9b6d0af908a76480sewardj  show_block_xor(&area2[0], area, 256); \
38552bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  x13      (xor, xfer intreg #1)\n", block[0] ^ block2[0]); \
38652bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  x23      (xor, xfer intreg #2)\n", block[1] ^ block2[1]); \
38752bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v17.d[0] (xor, xfer vecreg #1)\n", block[2] ^ block2[2]); \
38852bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v17.d[1] (xor, xfer vecreg #1)\n", block[3] ^ block2[3]); \
38952bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v18.d[0] (xor, xfer vecreg #2)\n", block[4] ^ block2[4]); \
39052bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v18.d[1] (xor, xfer vecreg #2)\n", block[5] ^ block2[5]); \
39152bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v19.d[0] (xor, xfer vecreg #3)\n", block[6] ^ block2[6]); \
39252bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v19.d[1] (xor, xfer vecreg #3)\n", block[7] ^ block2[7]); \
39352bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v20.d[0] (xor, xfer vecreg #3)\n", block[8] ^ block2[8]); \
39452bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %016llx  v20.d[1] (xor, xfer vecreg #3)\n", block[9] ^ block2[9]); \
39552bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %16lld  x5       (sub, base reg)\n",     block[10] - block2[10]); \
39652bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("  %16lld  x6       (sub, index reg)\n",    block[11] - block2[11]); \
39752bae2fcc174535edd254f8a9b6d0af908a76480sewardj  printf("\n"); \
39852bae2fcc174535edd254f8a9b6d0af908a76480sewardj  free(area); \
39952bae2fcc174535edd254f8a9b6d0af908a76480sewardj  }
40052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
401011dafb61cf25ff3337043315b2975986af226cfsewardj
402011dafb61cf25ff3337043315b2975986af226cfsewardjstatic __attribute__((noinline)) void test_memory_new ( void )
40352bae2fcc174535edd254f8a9b6d0af908a76480sewardj{
40452bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
40552bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR,STR (immediate, uimm12)");
40652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr  x13, [x5, #24]", -1, 0);
40752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr  w13, [x5, #20]", 1, 0);
40852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrh w13, [x5, #44]", 2, 0);
40952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrb w13, [x5, #56]", 3, 0);
41052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str  x13, [x5, #24]", -3, 0);
41152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str  w13, [x5, #20]", 5, 0);
41252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strh w13, [x5, #44]", 6, 0);
41352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strb w13, [x5, #56]", 7, 0);
41452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
41552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
41652bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDUR,STUR (immediate, simm9)\n");
41752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5], #-24",  0, 0);
41852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, #-40]!", 0, 0);
41952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, #-48]",  0, 0);
42052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5], #-24",  0, 0);
42152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, #-40]!", 0, 0);
42252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, #-48]",  0, 0);
42352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
42452bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
42552bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDP,STP (immediate, simm7)\n");
42652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldp x13, x23, [x5], #-24",   0, 0);
42752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldp x13, x23, [x5, #-40]!",  0, 0);
42852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldp x13, x23, [x5, #-40]",   0, 0);
42952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("stp x13, x23, [x5], #-24",   0, 0);
43052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("stp x13, x23, [x5, #-40]!",  0, 0);
43152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("stp x13, x23, [x5, #-40]",   0, 0);
43252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
43352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldp w13, w23, [x5], #-24",   0, 0);
43452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldp w13, w23, [x5, #-40]!",  0, 0);
43552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldp w13, w23, [x5, #-40]",   0, 0);
43652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("stp w13, w23, [x5], #-24",   0, 0);
43752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("stp w13, w23, [x5, #-40]!",  0, 0);
43852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("stp w13, w23, [x5, #-40]",   0, 0);
43952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
44052bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
441011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LDR (literal, int reg) (done above by test_memory_old)\n");
44252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
44352bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
444011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("{LD,ST}R (integer register)\n");
44552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, x6]",          12, -4);
44652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, x6, lsl #3]",  12, -4);
44752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, w6, uxtw]",    12,  4);
44852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, w6, uxtw #3]", 12,  4);
44952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, w6, sxtw]",    12,  4);
45052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str x13, [x5, w6, sxtw #3]", 12,  -4);
45152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, x6]",          12, -4);
45252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, x6, lsl #3]",  12, -4);
45352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, w6, uxtw]",    12,  4);
45452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, w6, uxtw #3]", 12,  4);
45552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, w6, sxtw]",    12,  4);
45652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr x13, [x5, w6, sxtw #3]", 12,  -4);
45752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
45852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str w13, [x5, x6]",          12, -4);
45952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str w13, [x5, x6, lsl #2]",  12, -4);
46052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str w13, [x5, w6, uxtw]",    12,  4);
46152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str w13, [x5, w6, uxtw #2]", 12,  4);
46252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str w13, [x5, w6, sxtw]",    12,  4);
46352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str w13, [x5, w6, sxtw #2]", 12,  -4);
46452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr w13, [x5, x6]",          12, -4);
46552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr w13, [x5, x6, lsl #2]",  12, -4);
46652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr w13, [x5, w6, uxtw]",    12,  4);
46752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr w13, [x5, w6, uxtw #2]", 12,  4);
46852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr w13, [x5, w6, sxtw]",    12,  4);
46952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr w13, [x5, w6, sxtw #2]", 12,  -4);
47052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
47152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strh w13, [x5, x6]",          12, -4);
47252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strh w13, [x5, x6, lsl #1]",  12, -4);
47352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strh w13, [x5, w6, uxtw]",    12,  4);
47452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strh w13, [x5, w6, uxtw #1]", 12,  4);
47552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strh w13, [x5, w6, sxtw]",    12,  4);
47652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strh w13, [x5, w6, sxtw #1]", 12,  -4);
47752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrh w13, [x5, x6]",          12, -4);
47852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrh w13, [x5, x6, lsl #1]",  12, -4);
47952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrh w13, [x5, w6, uxtw]",    12,  4);
48052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrh w13, [x5, w6, uxtw #1]", 12,  4);
48152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrh w13, [x5, w6, sxtw]",    12,  4);
48252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrh w13, [x5, w6, sxtw #1]", 12,  -4);
48352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
48452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strb w13, [x5, x6]",          12, -4);
48552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strb w13, [x5, x6, lsl #0]",  12, -4);
48652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strb w13, [x5, w6, uxtw]",    12,  4);
48752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strb w13, [x5, w6, uxtw #0]", 12,  4);
48852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strb w13, [x5, w6, sxtw]",    12,  4);
48952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("strb w13, [x5, w6, sxtw #0]", 12,  -4);
49052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrb w13, [x5, x6]",          12, -4);
49152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrb w13, [x5, x6, lsl #0]",  12, -4);
49252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrb w13, [x5, w6, uxtw]",    12,  4);
49352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrb w13, [x5, w6, uxtw #0]", 12,  4);
49452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrb w13, [x5, w6, sxtw]",    12,  4);
49552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrb w13, [x5, w6, sxtw #0]", 12,  -4);
49652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
49752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
49852bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDRS{B,H,W} (uimm12)\n");
49952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5, #24]", -16, 4);
50052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5, #20]", -16, 4);
50152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5, #44]", -16, 4);
50252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5, #72]", -16, 4);
50352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5, #56]", -16, 4);
50452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
50552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
506011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LDRS{B,H,W} (simm9, upd)\n");
50752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5, #-24]!", -16, 4);
50852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5, #-20]!", -16, 4);
50952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5, #-44]!", -16, 4);
51052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5, #-72]!", -16, 4);
51152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5, #-56]!", -16, 4);
51252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
51352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5], #-24", -16, 4);
51452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5], #-20", -16, 4);
51552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5], #-44", -16, 4);
51652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5], #-72", -16, 4);
51752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5], #-56", -16, 4);
51852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
51952bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
52052bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDRS{B,H,W} (simm9, noUpd)\n");
52152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5, #-24]", -16, 4);
52252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5, #-20]", -16, 4);
52352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5, #-44]", -16, 4);
52452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5, #-72]", -16, 4);
52552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5, #-56]", -16, 4);
52652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
52752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
52852bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDP,STP (immediate, simm7) (FP&VEC)\n");
52952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
530011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp q17, q18, [x5, 16]",  -15, 4);
531011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp q19, q18, [x5, 32]!", -11, 4);
532011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp q20, q17, [x5], -48",  -7, 4);
53352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
534011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp d18, d17, [x5, 16]",  -15, 4);
535011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp d17, d19, [x5, 32]!", -11, 4);
536011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp d20, d18, [x5], -48",  -7, 4);
53752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
538011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp s17, s18, [x5, 16]",  -15, 4);
539011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp s19, s18, [x5, 32]!", -11, 4);
540011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stp s20, s17, [x5], -48", -7, 4);
54152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
542011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp q17, q18, [x5, 16]",  -15, 4);
543011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp q18, q19, [x5, 32]!", -11, 4);
544011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp q19, q20, [x5], -48",  -7, 4);
545011dafb61cf25ff3337043315b2975986af226cfsewardj
546011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp d20, d17, [x5, 16]",  -15, 4);
547011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp d17, d18, [x5, 32]!", -11, 4);
548011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp d18, d19, [x5], -48", -7, 4);
549011dafb61cf25ff3337043315b2975986af226cfsewardj
550011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp s19, s20, [x5, 16]",  -15, 4);
551011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp s20, s17, [x5, 32]!", -11, 4);
552011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldp s17, s18, [x5], -48", -7, 4);
553011dafb61cf25ff3337043315b2975986af226cfsewardj
554011dafb61cf25ff3337043315b2975986af226cfsewardj////////////////////////////////////////////////////////////////
555011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LDNP,STNP (immediate, simm7) (FP&VEC, w/ nontemporal hint)\n");
55652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
557011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stnp q18, q17, [x5, 16]",  -15, 4);
558011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stnp d20, d19, [x5, 40]",  -15, 4);
559011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("stnp s19, s18, [x5, 68]",  -15, 4);
56052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
561011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldnp q18, q17, [x5, 16]",  -15, 4);
562011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldnp d17, d20, [x5, 40]",  -15, 4);
563011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldnp s20, s19, [x5, 68]",  -15, 4);
56452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
56552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
56652bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("{LD,ST}R (vector register)\n");
56752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
56852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, x6]",          12, -4);
56952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, x6, lsl #4]",  12, -4);
57052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, w6, uxtw]",    12,  4);
57152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, w6, uxtw #4]", 12,  4);
57252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, w6, sxtw]",    12,  4);
57352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, w6, sxtw #4]", 12,  -4);
57452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, x6]",          12, -4);
57552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, x6, lsl #4]",  12, -4);
57652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, w6, uxtw]",    12,  4);
57752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, w6, uxtw #4]", 12,  4);
57852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, w6, sxtw]",    12,  4);
57952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, w6, sxtw #4]", 12,  -4);
58052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
58152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, x6]",          12, -4);
58252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, x6, lsl #3]",  12, -4);
58352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, w6, uxtw]",    12,  4);
58452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, w6, uxtw #3]", 12,  4);
58552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, w6, sxtw]",    12,  4);
58652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, w6, sxtw #3]", 12,  -4);
58752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, x6]",          12, -4);
58852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, x6, lsl #3]",  12, -4);
58952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, w6, uxtw]",    12,  4);
59052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, w6, uxtw #3]", 12,  4);
59152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, w6, sxtw]",    12,  4);
59252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, w6, sxtw #3]", 12,  -4);
59352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
59452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, x6]",          12, -4);
59552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, x6, lsl #2]",  12, -4);
59652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, w6, uxtw]",    12,  4);
59752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, w6, uxtw #2]", 12,  4);
59852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, w6, sxtw]",    12,  4);
59952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, w6, sxtw #2]", 12,  -4);
60052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, x6]",          12, -4);
60152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, x6, lsl #2]",  12, -4);
60252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, w6, uxtw]",    12,  4);
60352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, w6, uxtw #2]", 12,  4);
60452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, w6, sxtw]",    12,  4);
60552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, w6, sxtw #2]", 12,  -4);
60652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
60752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str h17, [x5, x6]",          12, -4);
60852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str h17, [x5, x6, lsl #1]",  12, -4);
60952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str h17, [x5, w6, uxtw]",    12,  4);
61052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str h17, [x5, w6, uxtw #1]", 12,  4);
61152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str h17, [x5, w6, sxtw]",    12,  4);
61252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str h17, [x5, w6, sxtw #1]", 12,  -4);
61352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr h17, [x5, x6]",          12, -4);
61452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr h17, [x5, x6, lsl #1]",  12, -4);
61552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr h17, [x5, w6, uxtw]",    12,  4);
61652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr h17, [x5, w6, uxtw #1]", 12,  4);
61752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr h17, [x5, w6, sxtw]",    12,  4);
61852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr h17, [x5, w6, sxtw #1]", 12,  -4);
61952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
62052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str b17, [x5, x6]",          12, -4);
62152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str b17, [x5, x6, lsl #0]",  12, -4);
62252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str b17, [x5, w6, uxtw]",    12,  4);
62352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str b17, [x5, w6, uxtw #0]", 12,  4);
62452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str b17, [x5, w6, sxtw]",    12,  4);
62552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str b17, [x5, w6, sxtw #0]", 12,  -4);
62652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr b17, [x5, x6]",          12, -4);
62752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr b17, [x5, x6, lsl #0]",  12, -4);
62852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr b17, [x5, w6, uxtw]",    12,  4);
62952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr b17, [x5, w6, uxtw #0]", 12,  4);
63052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr b17, [x5, w6, sxtw]",    12,  4);
63152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr b17, [x5, w6, sxtw #0]", 12,  -4);
63252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
63352bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
63452bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDRS{B,H,W} (integer register, SX)\n");
63552bae2fcc174535edd254f8a9b6d0af908a76480sewardj
63652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5,x6]", 12, -4);
63752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5,x6, lsl #2]", 12, -4);
63852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5,w6,uxtw #0]", 12, 4);
63952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5,w6,uxtw #2]", 12, 4);
64052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5,w6,sxtw #0]", 12, 4);
64152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsw x13, [x5,w6,sxtw #2]", 12, -4);
64252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
64352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5,x6]",  12, -4);
64452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5,x6, lsl #1]",  12, -4);
64552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5,w6,uxtw #0]", 12, 4);
64652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5,w6,uxtw #1]", 12, 4);
64752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5,w6,sxtw #0]", 12, 4);
64852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh x13, [x5,w6,sxtw #1]",  12, -4);
64952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
65052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5,x6]",  12, -4);
65152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5,x6, lsl #1]",  12, -4);
65252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5,w6,uxtw #0]", 12, 4);
65352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5,w6,uxtw #1]", 12, 4);
65452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5,w6,sxtw #0]", 12, 4);
65552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsh w13, [x5,w6,sxtw #1]",  12, -4);
65652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
65752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5,x6]",  12, -4);
65852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5,x6, lsl #0]",  12, -4);
65952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5,w6,uxtw #0]", 12, 4);
66052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5,w6,uxtw #0]", 12, 4);
66152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5,w6,sxtw #0]", 12, 4);
66252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb x13, [x5,w6,sxtw #0]",  12, -4);
66352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
66452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5,x6]",  12, -4);
66552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5,x6, lsl #0]",  12, -4);
66652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5,w6,uxtw #0]", 12, 4);
66752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5,w6,uxtw #0]", 12, 4);
66852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5,w6,sxtw #0]", 12, 4);
66952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldrsb w13, [x5,w6,sxtw #0]",  12, -4);
67052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
67152bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
67252bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR/STR (immediate, SIMD&FP, unsigned offset)\n");
673011dafb61cf25ff3337043315b2975986af226cfsewardj
67452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, #-32]", 16, 0);
67552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, #-32]", 16, 0);
67652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, #-32]", 16, 0);
677011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str h17, [x5, #-32]", 16, 0);
678011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str b17, [x5, #-32]", 16, 0);
67952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, #-32]", 16, 0);
68052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, #-32]", 16, 0);
68152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, #-32]", 16, 0);
682011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr h17, [x5, #-32]", 16, 0);
683011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr b17, [x5, #-32]", 16, 0);
68452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
68552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
68652bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR/STR (immediate, SIMD&FP, pre/post index)\n");
687011dafb61cf25ff3337043315b2975986af226cfsewardj
68852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5], #-32", 16, 0);
68952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5], #-32", 16, 0);
69052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5], #-32", 16, 0);
691011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str h17, [x5], #-32", 16, 0);
692011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str b17, [x5], #-32", 16, 0);
69352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5], #-32", 16, 0);
69452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5], #-32", 16, 0);
69552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5], #-32", 16, 0);
696011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr h17, [x5], #-32", 16, 0);
697011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr b17, [x5], #-32", 16, 0);
69852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
69952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, #-32]!", 16, 0);
70052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, #-32]!", 16, 0);
70152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, #-32]!", 16, 0);
702011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str h17, [x5, #-32]!", 16, 0);
703011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str b17, [x5, #-32]!", 16, 0);
70452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, #-32]!", 16, 0);
70552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, #-32]!", 16, 0);
70652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, #-32]!", 16, 0);
707011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr h17, [x5, #-32]!", 16, 0);
708011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr b17, [x5, #-32]!", 16, 0);
70952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
71052bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
71152bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDUR/STUR (unscaled offset, SIMD&FP)\n");
712011dafb61cf25ff3337043315b2975986af226cfsewardj
71352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str q17, [x5, #-13]", 16, 0);
71452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str d17, [x5, #-13]", 16, 0);
71552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("str s17, [x5, #-13]", 16, 0);
716011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str h17, [x5, #-13]", 16, 0);
717011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("str b17, [x5, #-13]", 16, 0);
71852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr q17, [x5, #-13]", 16, 0);
71952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr d17, [x5, #-13]", 16, 0);
72052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ldr s17, [x5, #-13]", 16, 0);
721011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr h17, [x5, #-13]", 16, 0);
722011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ldr b17, [x5, #-13]", 16, 0);
72352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
72452bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
72552bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LDR (literal, SIMD&FP) (entirely MISSING)\n");
72652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
727011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("xyzzy10: ldr s17, xyzzy10 - 8", 0, 0)
728011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("xyzzy11: ldr d17, xyzzy11 + 8", 0, 0)
729011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("xyzzy12: ldr q17, xyzzy12 + 4", 0, 0)
730011dafb61cf25ff3337043315b2975986af226cfsewardj
73152bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
732011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD1/ST1 (multiple 1-elem structs to/from 1 reg\n");
733011dafb61cf25ff3337043315b2975986af226cfsewardj
734011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.2d}, [x5]",       17, 7)
735011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.2d}, [x5], #16",  9, 9)
736011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.2d}, [x5], x6",   -13, -5)
737011dafb61cf25ff3337043315b2975986af226cfsewardj
738011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.1d}, [x5]",       17, 7)
739011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.1d}, [x5], #8",   9, 9)
740011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.1d}, [x5], x6",   -13, -5)
741011dafb61cf25ff3337043315b2975986af226cfsewardj
742011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.4s}, [x5]",       17, 7)
743011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.4s}, [x5], #16",  9, 9)
744011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.4s}, [x5], x6",   -13, -5)
745011dafb61cf25ff3337043315b2975986af226cfsewardj
746011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.2s}, [x5]",       17, 7)
747011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.2s}, [x5], #8",   9, 9)
748011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.2s}, [x5], x6",   -13, -5)
749011dafb61cf25ff3337043315b2975986af226cfsewardj
750011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.8h}, [x5]",       17, 7)
751011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.8h}, [x5], #16",  9, 9)
752011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.8h}, [x5], x6",   -13, -5)
753011dafb61cf25ff3337043315b2975986af226cfsewardj
754011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.4h}, [x5]",       17, 7)
755011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.4h}, [x5], #8",   9, 9)
756011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.4h}, [x5], x6",   -13, -5)
757011dafb61cf25ff3337043315b2975986af226cfsewardj
758011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.16b}, [x5]",      17, 7)
759011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.16b}, [x5], #16", 9, 9)
760011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.16b}, [x5], x6",  -13, -5)
761011dafb61cf25ff3337043315b2975986af226cfsewardj
762011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.8b}, [x5]",       17, 7)
763011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.8b}, [x5], #8",   9, 9)
764011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v18.8b}, [x5], x6",   -13, -5)
765011dafb61cf25ff3337043315b2975986af226cfsewardj
766011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.2d}, [x5]",       17, 7)
767011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.2d}, [x5], #16",  9, 9)
768011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.2d}, [x5], x6",   -13, -5)
769011dafb61cf25ff3337043315b2975986af226cfsewardj
770011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.1d}, [x5]",       17, 7)
771011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.1d}, [x5], #8",   9, 9)
772011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.1d}, [x5], x6",   -13, -5)
773011dafb61cf25ff3337043315b2975986af226cfsewardj
774011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.4s}, [x5]",       17, 7)
775011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.4s}, [x5], #16",  9, 9)
776011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.4s}, [x5], x6",   -13, -5)
777011dafb61cf25ff3337043315b2975986af226cfsewardj
778011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.2s}, [x5]",       17, 7)
779011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.2s}, [x5], #8",   9, 9)
780011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.2s}, [x5], x6",   -13, -5)
781011dafb61cf25ff3337043315b2975986af226cfsewardj
782011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.8h}, [x5]",       17, 7)
783011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.8h}, [x5], #16",  9, 9)
784011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.8h}, [x5], x6",   -13, -5)
785011dafb61cf25ff3337043315b2975986af226cfsewardj
786011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.4h}, [x5]",       17, 7)
787011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.4h}, [x5], #8",   9, 9)
788011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.4h}, [x5], x6",   -13, -5)
789011dafb61cf25ff3337043315b2975986af226cfsewardj
790011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.16b}, [x5]",      17, 7)
791011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.16b}, [x5], #16", 9, 9)
792011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.16b}, [x5], x6",  -13, -5)
793011dafb61cf25ff3337043315b2975986af226cfsewardj
794011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.8b}, [x5]",       17, 7)
795011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.8b}, [x5], #8",   9, 9)
796011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v18.8b}, [x5], x6",   -13, -5)
797011dafb61cf25ff3337043315b2975986af226cfsewardj
798011dafb61cf25ff3337043315b2975986af226cfsewardj////////////////////////////////////////////////////////////////
799011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD2/ST2 (multiple 2-elem structs to/from 2 regs\n");
800011dafb61cf25ff3337043315b2975986af226cfsewardj
801011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.2d, v19.2d}, [x5]",         17, 7)
802011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.2d, v19.2d}, [x5], #32",    9, 9)
803011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.2d, v19.2d}, [x5], x6",     -13, -5)
804011dafb61cf25ff3337043315b2975986af226cfsewardj
805011dafb61cf25ff3337043315b2975986af226cfsewardj/* no 1d case */
806011dafb61cf25ff3337043315b2975986af226cfsewardj
807011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.4s, v19.4s}, [x5]",         17, 7)
808011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.4s, v19.4s}, [x5], #32",    9, 9)
809011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.4s, v19.4s}, [x5], x6",     -13, -5)
810011dafb61cf25ff3337043315b2975986af226cfsewardj
811011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.2s, v19.2s}, [x5]",         17, 7)
812011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.2s, v19.2s}, [x5], #16",    9, 9)
813011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.2s, v19.2s}, [x5], x6",     -13, -5)
814011dafb61cf25ff3337043315b2975986af226cfsewardj
815011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.8h, v19.8h}, [x5]",         17, 7)
816011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.8h, v19.8h}, [x5], #32",    9, 9)
817011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.8h, v19.8h}, [x5], x6",     -13, -5)
818011dafb61cf25ff3337043315b2975986af226cfsewardj
819011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.4h, v19.4h}, [x5]",         17, 7)
820011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.4h, v19.4h}, [x5], #16",    9, 9)
821011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.4h, v19.4h}, [x5], x6",     -13, -5)
822011dafb61cf25ff3337043315b2975986af226cfsewardj
823011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.16b, v19.16b}, [x5]",       17, 7)
824011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.16b, v19.16b}, [x5], #32",  9, 9)
825011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.16b, v19.16b}, [x5], x6",   -13, -5)
826011dafb61cf25ff3337043315b2975986af226cfsewardj
827011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.8b, v19.8b}, [x5]",         17, 7)
828011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.8b, v19.8b}, [x5], #16",    9, 9)
829011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st2 {v18.8b, v19.8b}, [x5], x6",     -13, -5)
830011dafb61cf25ff3337043315b2975986af226cfsewardj
831011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.2d, v19.2d}, [x5]",         17, 7)
832011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.2d, v19.2d}, [x5], #32",    9, 9)
833011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.2d, v19.2d}, [x5], x6",     -13, -5)
834011dafb61cf25ff3337043315b2975986af226cfsewardj
835011dafb61cf25ff3337043315b2975986af226cfsewardj/* no 1d case */
836011dafb61cf25ff3337043315b2975986af226cfsewardj
837011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.4s, v19.4s}, [x5]",         17, 7)
838011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.4s, v19.4s}, [x5], #32",    9, 9)
839011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.4s, v19.4s}, [x5], x6",     -13, -5)
840011dafb61cf25ff3337043315b2975986af226cfsewardj
841011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.2s, v19.2s}, [x5]",         17, 7)
842011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.2s, v19.2s}, [x5], #16",    9, 9)
843011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.2s, v19.2s}, [x5], x6",     -13, -5)
844011dafb61cf25ff3337043315b2975986af226cfsewardj
845011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.8h, v19.8h}, [x5]",         17, 7)
846011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.8h, v19.8h}, [x5], #32",    9, 9)
847011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.8h, v19.8h}, [x5], x6",     -13, -5)
848011dafb61cf25ff3337043315b2975986af226cfsewardj
849011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.4h, v19.4h}, [x5]",         17, 7)
850011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.4h, v19.4h}, [x5], #16",    9, 9)
851011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.4h, v19.4h}, [x5], x6",     -13, -5)
852011dafb61cf25ff3337043315b2975986af226cfsewardj
853011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.16b, v19.16b}, [x5]",       17, 7)
854011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.16b, v19.16b}, [x5], #32",  9, 9)
855011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.16b, v19.16b}, [x5], x6",   -13, -5)
856011dafb61cf25ff3337043315b2975986af226cfsewardj
857011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.8b, v19.8b}, [x5]",         17, 7)
858011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.8b, v19.8b}, [x5], #16",    9, 9)
859011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld2 {v18.8b, v19.8b}, [x5], x6",     -13, -5)
860011dafb61cf25ff3337043315b2975986af226cfsewardj
861011dafb61cf25ff3337043315b2975986af226cfsewardj////////////////////////////////////////////////////////////////
862011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD3/ST3 (multiple 3-elem structs to/from 3 regs\n");
863011dafb61cf25ff3337043315b2975986af226cfsewardj
864011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.2d, v18.2d, v19.2d}, [x5]",       17,  7)
865011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.2d, v18.2d, v19.2d}, [x5], #48",  9,   9)
866011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.2d, v18.2d, v19.2d}, [x5], x6",   -13, -5)
867011dafb61cf25ff3337043315b2975986af226cfsewardj
868011dafb61cf25ff3337043315b2975986af226cfsewardj/* no 1d case */
869011dafb61cf25ff3337043315b2975986af226cfsewardj
870011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.4s, v18.4s, v19.4s}, [x5]",          17, 7)
871011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.4s, v18.4s, v19.4s}, [x5], #48",     9, 9)
872011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.4s, v18.4s, v19.4s}, [x5], x6",      -13, -5)
873011dafb61cf25ff3337043315b2975986af226cfsewardj
874011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.2s, v18.2s, v19.2s}, [x5]",          17, 7)
875011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.2s, v18.2s, v19.2s}, [x5], #24",     9, 9)
876011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.2s, v18.2s, v19.2s}, [x5], x6",      -13, -5)
877011dafb61cf25ff3337043315b2975986af226cfsewardj
878011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.8h, v18.8h, v19.8h}, [x5]",          17, 7)
879011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.8h, v18.8h, v19.8h}, [x5], #48",     9, 9)
880011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.8h, v18.8h, v19.8h}, [x5], x6",      -13, -5)
881011dafb61cf25ff3337043315b2975986af226cfsewardj
882011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.4h, v18.4h, v19.4h}, [x5]",          17, 7)
883011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.4h, v18.4h, v19.4h}, [x5], #24",     9, 9)
884011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.4h, v18.4h, v19.4h}, [x5], x6",      -13, -5)
885011dafb61cf25ff3337043315b2975986af226cfsewardj
886011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.16b, v18.16b, v19.16b}, [x5]",       17, 7)
887011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.16b, v18.16b, v19.16b}, [x5], #48",  9, 9)
888011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.16b, v18.16b, v19.16b}, [x5], x6",   -13, -5)
889011dafb61cf25ff3337043315b2975986af226cfsewardj
890011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.8b, v18.8b, v19.8b}, [x5]",          17, 7)
891011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.8b, v18.8b, v19.8b}, [x5], #24",     9, 9)
892011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st3 {v17.8b, v18.8b, v19.8b}, [x5], x6",      -13, -5)
893011dafb61cf25ff3337043315b2975986af226cfsewardj
894011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.2d, v18.2d, v19.2d}, [x5]",       17,  7)
895011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.2d, v18.2d, v19.2d}, [x5], #48",  9,   9)
896011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.2d, v18.2d, v19.2d}, [x5], x6",   -13, -5)
897011dafb61cf25ff3337043315b2975986af226cfsewardj
898011dafb61cf25ff3337043315b2975986af226cfsewardj/* no 1d case */
899011dafb61cf25ff3337043315b2975986af226cfsewardj
900011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.4s, v18.4s, v19.4s}, [x5]",          17, 7)
901011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.4s, v18.4s, v19.4s}, [x5], #48",     9, 9)
902011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.4s, v18.4s, v19.4s}, [x5], x6",      -13, -5)
903011dafb61cf25ff3337043315b2975986af226cfsewardj
904011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.2s, v18.2s, v19.2s}, [x5]",          17, 7)
905011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.2s, v18.2s, v19.2s}, [x5], #24",     9, 9)
906011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.2s, v18.2s, v19.2s}, [x5], x6",      -13, -5)
907011dafb61cf25ff3337043315b2975986af226cfsewardj
908011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.8h, v18.8h, v19.8h}, [x5]",          17, 7)
909011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.8h, v18.8h, v19.8h}, [x5], #48",     9, 9)
910011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.8h, v18.8h, v19.8h}, [x5], x6",      -13, -5)
911011dafb61cf25ff3337043315b2975986af226cfsewardj
912011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.4h, v18.4h, v19.4h}, [x5]",          17, 7)
913011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.4h, v18.4h, v19.4h}, [x5], #24",     9, 9)
914011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.4h, v18.4h, v19.4h}, [x5], x6",      -13, -5)
915011dafb61cf25ff3337043315b2975986af226cfsewardj
916011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.16b, v18.16b, v19.16b}, [x5]",       17, 7)
917011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.16b, v18.16b, v19.16b}, [x5], #48",  9, 9)
918011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.16b, v18.16b, v19.16b}, [x5], x6",   -13, -5)
919011dafb61cf25ff3337043315b2975986af226cfsewardj
920011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.8b, v18.8b, v19.8b}, [x5]",          17, 7)
921011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.8b, v18.8b, v19.8b}, [x5], #24",     9, 9)
922011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld3 {v17.8b, v18.8b, v19.8b}, [x5], x6",      -13, -5)
923011dafb61cf25ff3337043315b2975986af226cfsewardj
924011dafb61cf25ff3337043315b2975986af226cfsewardj////////////////////////////////////////////////////////////////
925011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD4/ST4 (multiple 4-elem structs to/from 4 regs\n");
926011dafb61cf25ff3337043315b2975986af226cfsewardj
927011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.2d, v18.2d, v19.2d, v20.2d}, [x5]",           17, 7)
928011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.2d, v18.2d, v19.2d, v20.2d}, [x5], #64",      9, 9)
929011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.2d, v18.2d, v19.2d, v20.2d}, [x5], x6",       -13, -5)
930011dafb61cf25ff3337043315b2975986af226cfsewardj
931011dafb61cf25ff3337043315b2975986af226cfsewardj/* no 1d case */
932011dafb61cf25ff3337043315b2975986af226cfsewardj
933011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.4s, v18.4s, v19.4s, v20.4s}, [x5]",           17, 7)
934011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.4s, v18.4s, v19.4s, v20.4s}, [x5], #64",      9, 9)
935011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.4s, v18.4s, v19.4s, v20.4s}, [x5], x6",       -13, -5)
936011dafb61cf25ff3337043315b2975986af226cfsewardj
937011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.2s, v18.2s, v19.2s, v20.2s}, [x5]",           17, 7)
938011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.2s, v18.2s, v19.2s, v20.2s}, [x5], #32",      9, 9)
939011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.2s, v18.2s, v19.2s, v20.2s}, [x5], x6",       -13, -5)
940011dafb61cf25ff3337043315b2975986af226cfsewardj
941011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x5]",           17, 7)
942011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x5], #64",      9, 9)
943011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x5], x6",       -13, -5)
944011dafb61cf25ff3337043315b2975986af226cfsewardj
945011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.4h, v18.4h, v19.4h, v20.4h}, [x5]",           17, 7)
946011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.4h, v18.4h, v19.4h, v20.4h}, [x5], #32",      9, 9)
947011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.4h, v18.4h, v19.4h, v20.4h}, [x5], x6",       -13, -5)
948011dafb61cf25ff3337043315b2975986af226cfsewardj
949011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5]",       17, 7)
950011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], #64",  9, 9)
951011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], x6",   -13, -5)
952011dafb61cf25ff3337043315b2975986af226cfsewardj
953011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.8b, v18.8b, v19.8b, v20.8b}, [x5]",           17, 7)
954011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.8b, v18.8b, v19.8b, v20.8b}, [x5], #32",      9, 9)
955011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st4 {v17.8b, v18.8b, v19.8b, v20.8b}, [x5], x6",       -13, -5)
956011dafb61cf25ff3337043315b2975986af226cfsewardj
957011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.2d, v18.2d, v19.2d, v20.2d}, [x5]",           17, 7)
958011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.2d, v18.2d, v19.2d, v20.2d}, [x5], #64",      9, 9)
959011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.2d, v18.2d, v19.2d, v20.2d}, [x5], x6",       -13, -5)
960011dafb61cf25ff3337043315b2975986af226cfsewardj
961011dafb61cf25ff3337043315b2975986af226cfsewardj/* no 1d case */
962011dafb61cf25ff3337043315b2975986af226cfsewardj
963011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.4s, v18.4s, v19.4s, v20.4s}, [x5]",           17, 7)
964011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.4s, v18.4s, v19.4s, v20.4s}, [x5], #64",      9, 9)
965011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.4s, v18.4s, v19.4s, v20.4s}, [x5], x6",       -13, -5)
966011dafb61cf25ff3337043315b2975986af226cfsewardj
967011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.2s, v18.2s, v19.2s, v20.2s}, [x5]",           17, 7)
968011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.2s, v18.2s, v19.2s, v20.2s}, [x5], #32",      9, 9)
969011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.2s, v18.2s, v19.2s, v20.2s}, [x5], x6",       -13, -5)
970011dafb61cf25ff3337043315b2975986af226cfsewardj
971011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x5]",           17, 7)
972011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x5], #64",      9, 9)
973011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x5], x6",       -13, -5)
974011dafb61cf25ff3337043315b2975986af226cfsewardj
975011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.4h, v18.4h, v19.4h, v20.4h}, [x5]",           17, 7)
976011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.4h, v18.4h, v19.4h, v20.4h}, [x5], #32",      9, 9)
977011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.4h, v18.4h, v19.4h, v20.4h}, [x5], x6",       -13, -5)
978011dafb61cf25ff3337043315b2975986af226cfsewardj
979011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5]",       17, 7)
980011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], #64",  9, 9)
981011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], x6",   -13, -5)
982011dafb61cf25ff3337043315b2975986af226cfsewardj
983011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.8b, v18.8b, v19.8b, v20.8b}, [x5]",           17, 7)
984011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.8b, v18.8b, v19.8b, v20.8b}, [x5], #32",      9, 9)
985011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld4 {v17.8b, v18.8b, v19.8b, v20.8b}, [x5], x6",       -13, -5)
986011dafb61cf25ff3337043315b2975986af226cfsewardj
987011dafb61cf25ff3337043315b2975986af226cfsewardj////////////////////////////////////////////////////////////////
988011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD1/ST1 (multiple 1-elem structs to/from 2/3/4 regs\n");
989011dafb61cf25ff3337043315b2975986af226cfsewardj
990f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.2d, v20.2d},                     [x5]", 17, 7)
991f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.2d, v20.2d},                     [x5], #32", 9, 9)
992f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.2d, v20.2d},                     [x5], x6", -13, -5)
993f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
994f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2d, v18.2d, v19.2d},             [x5]", 17, 7)
995f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2d, v18.2d, v19.2d},             [x5], #48", 9, 9)
996f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2d, v18.2d, v19.2d},             [x5], x6", -13, -5)
997f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
998f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2d, v18.2d, v19.2d, v20.2d},     [x5]", 17, 7)
999f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2d, v18.2d, v19.2d, v20.2d},     [x5], #64", 9, 9)
1000f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2d, v18.2d, v19.2d, v20.2d},     [x5], x6", -13, -5)
1001f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1002f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1003f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.1d, v20.1d},                     [x5]", 17, 7)
1004f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.1d, v20.1d},                     [x5], #16", 9, 9)
1005f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.1d, v20.1d},                     [x5], x6", -13, -5)
1006f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1007f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.1d, v18.1d, v19.1d},             [x5]", 17, 7)
1008f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.1d, v18.1d, v19.1d},             [x5], #24", 9, 9)
1009f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.1d, v18.1d, v19.1d},             [x5], x6", -13, -5)
1010f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1011f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.1d, v18.1d, v19.1d, v20.1d},     [x5]", 17, 7)
1012f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.1d, v18.1d, v19.1d, v20.1d},     [x5], #32", 9, 9)
1013f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.1d, v18.1d, v19.1d, v20.1d},     [x5], x6", -13, -5)
1014f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1015f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1016f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.4s, v20.4s},                     [x5]", 17, 7)
1017f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.4s, v20.4s},                     [x5], #32", 9, 9)
1018f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.4s, v20.4s},                     [x5], x6", -13, -5)
1019f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1020f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4s, v18.4s, v19.4s},             [x5]", 17, 7)
1021f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4s, v18.4s, v19.4s},             [x5], #48", 9, 9)
1022f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4s, v18.4s, v19.4s},             [x5], x6", -13, -5)
1023f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1024f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4s, v18.4s, v19.4s, v20.4s},     [x5]", 17, 7)
1025f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4s, v18.4s, v19.4s, v20.4s},     [x5], #64", 9, 9)
1026f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4s, v18.4s, v19.4s, v20.4s},     [x5], x6", -13, -5)
1027f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1028f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1029f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.2s, v20.2s},                     [x5]", 17, 7)
1030f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.2s, v20.2s},                     [x5], #16", 9, 9)
1031f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.2s, v20.2s},                     [x5], x6", -13, -5)
1032f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1033f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2s, v18.2s, v19.2s},             [x5]", 17, 7)
1034f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2s, v18.2s, v19.2s},             [x5], #24", 9, 9)
1035f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2s, v18.2s, v19.2s},             [x5], x6", -13, -5)
1036f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1037f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2s, v18.2s, v19.2s, v20.2s},     [x5]", 17, 7)
1038f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2s, v18.2s, v19.2s, v20.2s},     [x5], #32", 9, 9)
1039f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.2s, v18.2s, v19.2s, v20.2s},     [x5], x6", -13, -5)
1040f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1041f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1042f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.8h, v20.8h},                     [x5]", 17, 7)
1043f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.8h, v20.8h},                     [x5], #32", 9, 9)
1044f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.8h, v20.8h},                     [x5], x6", -13, -5)
1045f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1046f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8h, v18.8h, v19.8h},             [x5]", 17, 7)
1047f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8h, v18.8h, v19.8h},             [x5], #48", 9, 9)
1048f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8h, v18.8h, v19.8h},             [x5], x6", -13, -5)
1049f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1050f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8h, v18.8h, v19.8h, v20.8h},     [x5]", 17, 7)
1051f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8h, v18.8h, v19.8h, v20.8h},     [x5], #64", 9, 9)
1052f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8h, v18.8h, v19.8h, v20.8h},     [x5], x6", -13, -5)
1053f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1054f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1055f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.4h, v20.4h},                     [x5]", 17, 7)
1056f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.4h, v20.4h},                     [x5], #16", 9, 9)
1057f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.4h, v20.4h},                     [x5], x6", -13, -5)
1058f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1059f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4h, v18.4h, v19.4h},             [x5]", 17, 7)
1060f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4h, v18.4h, v19.4h},             [x5], #24", 9, 9)
1061f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4h, v18.4h, v19.4h},             [x5], x6", -13, -5)
1062f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1063f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4h, v18.4h, v19.4h, v20.4h},     [x5]", 17, 7)
1064f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4h, v18.4h, v19.4h, v20.4h},     [x5], #32", 9, 9)
1065f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.4h, v18.4h, v19.4h, v20.4h},     [x5], x6", -13, -5)
1066011dafb61cf25ff3337043315b2975986af226cfsewardj
1067011dafb61cf25ff3337043315b2975986af226cfsewardj
1068011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v19.16b, v20.16b},                   [x5]", 17, 7)
1069011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v19.16b, v20.16b},                   [x5], #32", 9, 9)
1070f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.16b, v20.16b},                   [x5], x6", -13, -5)
1071011dafb61cf25ff3337043315b2975986af226cfsewardj
1072011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("st1 {v17.16b, v18.16b, v19.16b},          [x5]", 17, 7)
1073f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.16b, v18.16b, v19.16b},          [x5], #48", 9, 9)
1074f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.16b, v18.16b, v19.16b},          [x5], x6", -13, -5)
1075f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1076f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5]", 17, 7)
1077f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], #64", 9, 9)
1078f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], x6", -13, -5)
1079f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1080f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1081f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.8b, v20.8b},                     [x5]", 17, 7)
1082f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.8b, v20.8b},                     [x5], #16", 9, 9)
1083f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.8b, v20.8b},                     [x5], x6", -13, -5)
1084f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1085f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8b, v18.8b, v19.8b},             [x5]", 17, 7)
1086f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8b, v18.8b, v19.8b},             [x5], #24", 9, 9)
1087f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8b, v18.8b, v19.8b},             [x5], x6", -13, -5)
1088f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1089f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8b, v18.8b, v19.8b, v20.8b},     [x5]", 17, 7)
1090f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8b, v18.8b, v19.8b, v20.8b},     [x5], #32", 9, 9)
1091f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v17.8b, v18.8b, v19.8b, v20.8b},     [x5], x6", -13, -5)
1092f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1093f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1094f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.2d, v20.2d},                     [x5]", 17, 7)
1095f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.2d, v20.2d},                     [x5], #32", 9, 9)
1096f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.2d, v20.2d},                     [x5], x6", -13, -5)
1097f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1098f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2d, v18.2d, v19.2d},             [x5]", 17, 7)
1099f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2d, v18.2d, v19.2d},             [x5], #48", 9, 9)
1100f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2d, v18.2d, v19.2d},             [x5], x6", -13, -5)
1101f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1102f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2d, v18.2d, v19.2d, v20.2d},     [x5]", 17, 7)
1103f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2d, v18.2d, v19.2d, v20.2d},     [x5], #64", 9, 9)
1104f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2d, v18.2d, v19.2d, v20.2d},     [x5], x6", -13, -5)
1105f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1106f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1107f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.1d, v20.1d},                     [x5]", 17, 7)
1108f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.1d, v20.1d},                     [x5], #16", 9, 9)
1109f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.1d, v20.1d},                     [x5], x6", -13, -5)
1110f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1111f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.1d, v18.1d, v19.1d},             [x5]", 17, 7)
1112f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.1d, v18.1d, v19.1d},             [x5], #24", 9, 9)
1113f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.1d, v18.1d, v19.1d},             [x5], x6", -13, -5)
1114f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1115f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.1d, v18.1d, v19.1d, v20.1d},     [x5]", 17, 7)
1116f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.1d, v18.1d, v19.1d, v20.1d},     [x5], #32", 9, 9)
1117f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.1d, v18.1d, v19.1d, v20.1d},     [x5], x6", -13, -5)
1118f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1119f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1120f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.4s, v20.4s},                     [x5]", 17, 7)
1121f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.4s, v20.4s},                     [x5], #32", 9, 9)
1122f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.4s, v20.4s},                     [x5], x6", -13, -5)
1123f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1124f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4s, v18.4s, v19.4s},             [x5]", 17, 7)
1125f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4s, v18.4s, v19.4s},             [x5], #48", 9, 9)
1126f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4s, v18.4s, v19.4s},             [x5], x6", -13, -5)
1127f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1128f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4s, v18.4s, v19.4s, v20.4s},     [x5]", 17, 7)
1129f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4s, v18.4s, v19.4s, v20.4s},     [x5], #64", 9, 9)
1130f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4s, v18.4s, v19.4s, v20.4s},     [x5], x6", -13, -5)
1131f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1132f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1133f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.2s, v20.2s},                     [x5]", 17, 7)
1134f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.2s, v20.2s},                     [x5], #16", 9, 9)
1135f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.2s, v20.2s},                     [x5], x6", -13, -5)
1136f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1137f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2s, v18.2s, v19.2s},             [x5]", 17, 7)
1138f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2s, v18.2s, v19.2s},             [x5], #24", 9, 9)
1139f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2s, v18.2s, v19.2s},             [x5], x6", -13, -5)
1140f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1141f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2s, v18.2s, v19.2s, v20.2s},     [x5]", 17, 7)
1142f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2s, v18.2s, v19.2s, v20.2s},     [x5], #32", 9, 9)
1143f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.2s, v18.2s, v19.2s, v20.2s},     [x5], x6", -13, -5)
1144f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1145f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1146f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.8h, v20.8h},                     [x5]", 17, 7)
1147f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.8h, v20.8h},                     [x5], #32", 9, 9)
1148f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.8h, v20.8h},                     [x5], x6", -13, -5)
1149f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1150f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8h, v18.8h, v19.8h},             [x5]", 17, 7)
1151f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8h, v18.8h, v19.8h},             [x5], #48", 9, 9)
1152f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8h, v18.8h, v19.8h},             [x5], x6", -13, -5)
1153f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1154f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8h, v18.8h, v19.8h, v20.8h},     [x5]", 17, 7)
1155f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8h, v18.8h, v19.8h, v20.8h},     [x5], #64", 9, 9)
1156f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8h, v18.8h, v19.8h, v20.8h},     [x5], x6", -13, -5)
1157f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1158f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1159f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.4h, v20.4h},                     [x5]", 17, 7)
1160f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.4h, v20.4h},                     [x5], #16", 9, 9)
1161f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.4h, v20.4h},                     [x5], x6", -13, -5)
1162f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1163f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4h, v18.4h, v19.4h},             [x5]", 17, 7)
1164f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4h, v18.4h, v19.4h},             [x5], #24", 9, 9)
1165f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4h, v18.4h, v19.4h},             [x5], x6", -13, -5)
1166f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1167f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4h, v18.4h, v19.4h, v20.4h},     [x5]", 17, 7)
1168f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4h, v18.4h, v19.4h, v20.4h},     [x5], #32", 9, 9)
1169f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.4h, v18.4h, v19.4h, v20.4h},     [x5], x6", -13, -5)
1170011dafb61cf25ff3337043315b2975986af226cfsewardj
1171011dafb61cf25ff3337043315b2975986af226cfsewardj
1172011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v19.16b, v20.16b},                   [x5]", 17, 7)
1173011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v19.16b, v20.16b},                   [x5], #32", 9, 9)
1174f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.16b, v20.16b},                   [x5], x6", -13, -5)
1175011dafb61cf25ff3337043315b2975986af226cfsewardj
1176011dafb61cf25ff3337043315b2975986af226cfsewardjMEM_TEST("ld1 {v17.16b, v18.16b, v19.16b},          [x5]", 17, 7)
1177f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.16b, v18.16b, v19.16b},          [x5], #48", 9, 9)
1178f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.16b, v18.16b, v19.16b},          [x5], x6", -13, -5)
1179f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1180f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5]", 17, 7)
1181f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], #64", 9, 9)
1182f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.16b, v18.16b, v19.16b, v20.16b}, [x5], x6", -13, -5)
1183f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1184f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1185f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.8b, v20.8b},                     [x5]", 17, 7)
1186f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.8b, v20.8b},                     [x5], #16", 9, 9)
1187f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.8b, v20.8b},                     [x5], x6", -13, -5)
1188f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1189f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8b, v18.8b, v19.8b},             [x5]", 17, 7)
1190f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8b, v18.8b, v19.8b},             [x5], #24", 9, 9)
1191f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8b, v18.8b, v19.8b},             [x5], x6", -13, -5)
1192f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1193f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8b, v18.8b, v19.8b, v20.8b},     [x5]", 17, 7)
1194f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8b, v18.8b, v19.8b, v20.8b},     [x5], #32", 9, 9)
1195f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v17.8b, v18.8b, v19.8b, v20.8b},     [x5], x6", -13, -5)
1196011dafb61cf25ff3337043315b2975986af226cfsewardj
119752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
119852bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
119952bae2fcc174535edd254f8a9b6d0af908a76480sewardjprintf("LD1R (single structure, replicate)\n");
1200011dafb61cf25ff3337043315b2975986af226cfsewardj
120152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.2d},  [x5]", 3, -5)
120252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.1d},  [x5]", 3, -4)
120352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.4s},  [x5]", 3, -3)
120452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.2s},  [x5]", 3, -2)
120552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.8h},  [x5]", 3, -1)
120652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.4h},  [x5]", 3, 1)
120752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.16b}, [x5]", 3, 2)
120852bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.8b},  [x5]", 3, 3)
120952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
121052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.2d},  [x5], #8", 3, -5)
121152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.1d},  [x5], #8", 3, -4)
121252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.4s},  [x5], #4", 3, -3)
121352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.2s},  [x5], #4", 3, -2)
121452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.8h},  [x5], #2", 3, -1)
121552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.4h},  [x5], #2", 3, 1)
121652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.16b}, [x5], #1", 3, 2)
121752bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.8b},  [x5], #1", 3, 3)
121852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
121952bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.2d},  [x5], x6", 3, -5)
122052bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.1d},  [x5], x6", 3, -4)
122152bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.4s},  [x5], x6", 3, -3)
122252bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.2s},  [x5], x6", 3, -2)
122352bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.8h},  [x5], x6", 3, -1)
122452bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.4h},  [x5], x6", 3, 1)
122552bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.16b}, [x5], x6", 3, 2)
122652bae2fcc174535edd254f8a9b6d0af908a76480sewardjMEM_TEST("ld1r {v17.8b},  [x5], x6", 3, 3)
122752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1228011dafb61cf25ff3337043315b2975986af226cfsewardj
122952bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
1230011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD2R (single structure, replicate)\n");
1231011dafb61cf25ff3337043315b2975986af226cfsewardj
1232f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.2d , v18.2d },  [x5]", 3, -5)
1233f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.1d , v19.1d },  [x5]", 3, -4)
1234f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.4s , v20.4s },  [x5]", 3, -3)
1235f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.2s , v18.2s },  [x5]", 3, -2)
1236f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.8h , v19.8h },  [x5]", 3, -1)
1237f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.4h , v20.4h },  [x5]", 3, 1)
1238f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.16b, v18.16b},  [x5]", 3, 2)
1239f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.8b , v19.8b },  [x5]", 3, 3)
1240f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1241f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.2d , v20.2d },  [x5], #16", 3, -5)
1242f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.1d , v18.1d },  [x5], #16", 3, -4)
1243f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.4s , v19.4s },  [x5], #8", 3, -3)
1244f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.2s , v20.2s },  [x5], #8", 3, -2)
1245f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.8h , v18.8h },  [x5], #4", 3, -1)
1246f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.4h , v19.4h },  [x5], #4", 3, 1)
1247f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.16b, v20.16b},  [x5], #2", 3, 2)
1248f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.8b , v18.8b },  [x5], #2", 3, 3)
1249f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1250f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.2d , v19.2d },  [x5], x6", 3, -5)
1251f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.1d , v20.1d },  [x5], x6", 3, -4)
1252f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.4s , v18.4s },  [x5], x6", 3, -3)
1253f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.2s , v19.2s },  [x5], x6", 3, -2)
1254f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.8h , v20.8h },  [x5], x6", 3, -1)
1255f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v17.4h , v18.4h },  [x5], x6", 3, 1)
1256f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v18.16b, v19.16b},  [x5], x6", 3, 2)
1257f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2r {v19.8b , v20.8b },  [x5], x6", 3, 3)
1258011dafb61cf25ff3337043315b2975986af226cfsewardj
1259011dafb61cf25ff3337043315b2975986af226cfsewardj
1260011dafb61cf25ff3337043315b2975986af226cfsewardj//////////////////////////////////////////////////////////////////
1261f45e93c4f239d5e136e5275aca53ef91633257d0sewardjprintf("LD3R (single structure, replicate)\n");
1262f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1263f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.2d , v18.2d , v19.2d },  [x5]", 3, -5)
1264f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.1d , v19.1d , v20.1d },  [x5]", 3, -4)
1265f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.4s , v18.4s , v19.4s },  [x5]", 3, -3)
1266f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.2s , v19.2s , v20.2s },  [x5]", 3, -2)
1267f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.8h , v18.8h , v19.8h },  [x5]", 3, -5)
1268f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.4h , v19.4h , v20.4h },  [x5]", 3, -4)
1269f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.16b, v18.16b, v19.16b},  [x5]", 3, -3)
1270f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.8b , v19.8b , v20.8b },  [x5]", 3, -2)
1271f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1272f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.2d , v18.2d , v19.2d },  [x5], #24", 3, -5)
1273f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.1d , v19.1d , v20.1d },  [x5], #24", 3, -4)
1274f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.4s , v18.4s , v19.4s },  [x5], #12", 3, -3)
1275f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.2s , v19.2s , v20.2s },  [x5], #12", 3, -2)
1276f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.8h , v18.8h , v19.8h },  [x5], #6", 3, -5)
1277f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.4h , v19.4h , v20.4h },  [x5], #6", 3, -4)
1278f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.16b, v18.16b, v19.16b},  [x5], #3", 3, -3)
1279f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.8b , v19.8b , v20.8b },  [x5], #3", 3, -2)
1280f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1281f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.2d , v18.2d , v19.2d },  [x5], x6", 3, -5)
1282f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.1d , v19.1d , v20.1d },  [x5], x6", 3, -4)
1283f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.4s , v18.4s , v19.4s },  [x5], x6", 3, -3)
1284f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.2s , v19.2s , v20.2s },  [x5], x6", 3, -2)
1285f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.8h , v18.8h , v19.8h },  [x5], x6", 3, -5)
1286f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.4h , v19.4h , v20.4h },  [x5], x6", 3, -4)
1287f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v17.16b, v18.16b, v19.16b},  [x5], x6", 3, -3)
1288f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3r {v18.8b , v19.8b , v20.8b },  [x5], x6", 3, -2)
128952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
129052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1291011dafb61cf25ff3337043315b2975986af226cfsewardj////////////////////////////////////////////////////////////////
1292011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD4R (single structure, replicate)\n");
1293011dafb61cf25ff3337043315b2975986af226cfsewardj
1294f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.2d , v18.2d , v19.2d , v20.2d },  [x5]", 3, -5)
1295f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.1d , v18.1d , v19.1d , v20.1d },  [x5]", 3, -4)
1296f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.4s , v18.4s , v19.4s , v20.4s },  [x5]", 3, -3)
1297f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.2s , v18.2s , v19.2s , v20.2s },  [x5]", 3, -2)
1298f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.8h , v18.8h , v19.8h , v20.8h },  [x5]", 3, -5)
1299f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.4h , v18.4h , v19.4h , v20.4h },  [x5]", 3, -4)
1300f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.16b, v18.16b, v19.16b, v20.16b},  [x5]", 3, -3)
1301f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.8b , v18.8b , v19.8b , v20.8b },  [x5]", 3, -2)
1302f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1303f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.2d , v18.2d , v19.2d , v20.2d },  [x5], #32", 3, -5)
1304f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.1d , v18.1d , v19.1d , v20.1d },  [x5], #32", 3, -4)
1305f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.4s , v18.4s , v19.4s , v20.4s },  [x5], #16", 3, -3)
1306f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.2s , v18.2s , v19.2s , v20.2s },  [x5], #16", 3, -2)
1307f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.8h , v18.8h , v19.8h , v20.8h },  [x5], #8", 3, -5)
1308f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.4h , v18.4h , v19.4h , v20.4h },  [x5], #8", 3, -4)
1309f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.16b, v18.16b, v19.16b, v20.16b},  [x5], #4", 3, -3)
1310f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.8b , v18.8b , v19.8b , v20.8b },  [x5], #4", 3, -2)
1311f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1312f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.2d , v18.2d , v19.2d , v20.2d },  [x5], x6", 3, -5)
1313f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.1d , v18.1d , v19.1d , v20.1d },  [x5], x6", 3, -4)
1314f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.4s , v18.4s , v19.4s , v20.4s },  [x5], x6", 3, -3)
1315f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.2s , v18.2s , v19.2s , v20.2s },  [x5], x6", 3, -2)
1316f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.8h , v18.8h , v19.8h , v20.8h },  [x5], x6", 3, -5)
1317f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.4h , v18.4h , v19.4h , v20.4h },  [x5], x6", 3, -4)
1318f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.16b, v18.16b, v19.16b, v20.16b},  [x5], x6", 3, -3)
1319f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4r {v17.8b , v18.8b , v19.8b , v20.8b },  [x5], x6", 3, -2)
132052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
132152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
132252bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
1323011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD1/ST1 (single 1-elem struct to/from one lane of 1 reg\n");
132452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1325f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.d}[0], [x5]",       17,  7)
1326f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.d}[0], [x5], #8",   -9, 12)
1327f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.d}[0], [x5], x6",   9, 13)
1328f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1329f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.d}[1], [x5]",       17,  7)
1330f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.d}[1], [x5], #8",   -9, 12)
1331f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.d}[1], [x5], x6",   9, 13)
1332f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1333f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.s}[0], [x5]",       17,  7)
1334f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.s}[0], [x5], #4",   -9, 12)
1335f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.s}[0], [x5], x6",   9, 13)
1336f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1337f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.s}[3], [x5]",       17,  7)
1338f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.s}[3], [x5], #4",   -9, 12)
1339f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.s}[3], [x5], x6",   9, 13)
1340f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1341f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.h}[0], [x5]",       17,  7)
1342f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.h}[0], [x5], #2",   -9, 12)
1343f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.h}[0], [x5], x6",   9, 13)
1344f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1345f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.h}[6], [x5]",       17,  7)
1346f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.h}[6], [x5], #2",   -9, 12)
1347f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.h}[6], [x5], x6",   9, 13)
1348f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1349f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.b}[0], [x5]",       17,  7)
1350f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.b}[0], [x5], #1",   -9, 12)
1351f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.b}[0], [x5], x6",   9, 13)
1352f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1353f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.b}[13], [x5]",      17,  7)
1354f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.b}[13], [x5], #1",  -9, 12)
1355f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st1 {v19.b}[13], [x5], x6",  9, 13)
1356f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1357f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1358f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.d}[0], [x5]",       17,  7)
1359f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.d}[0], [x5], #8",   -9, 12)
1360f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.d}[0], [x5], x6",   9, 13)
1361f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1362f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.d}[1], [x5]",       17,  7)
1363f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.d}[1], [x5], #8",   -9, 12)
1364f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.d}[1], [x5], x6",   9, 13)
1365f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1366f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.s}[0], [x5]",       17,  7)
1367f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.s}[0], [x5], #4",   -9, 12)
1368f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.s}[0], [x5], x6",   9, 13)
1369f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1370f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.s}[3], [x5]",       17,  7)
1371f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.s}[3], [x5], #4",   -9, 12)
1372f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.s}[3], [x5], x6",   9, 13)
1373f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1374f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.h}[0], [x5]",       17,  7)
1375f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.h}[0], [x5], #2",   -9, 12)
1376f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.h}[0], [x5], x6",   9, 13)
1377f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1378f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.h}[6], [x5]",       17,  7)
1379f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.h}[6], [x5], #2",   -9, 12)
1380f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.h}[6], [x5], x6",   9, 13)
1381f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1382f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.b}[0], [x5]",       17,  7)
1383f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.b}[0], [x5], #1",   -9, 12)
1384f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.b}[0], [x5], x6",   9, 13)
1385f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1386f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.b}[13], [x5]",      17,  7)
1387f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.b}[13], [x5], #1",  -9, 12)
1388f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld1 {v19.b}[13], [x5], x6",  9, 13)
138952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
139052bae2fcc174535edd254f8a9b6d0af908a76480sewardj
139152bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
1392011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD2/ST2 (single 2-elem struct to/from one lane of 2 regs\n");
139352bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1394f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.d, v19.d}[0], [x5]",       17,  7)
1395f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.d, v19.d}[0], [x5], #16",  -9, 12)
1396f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.d, v19.d}[0], [x5], x6",   9, 13)
1397f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1398f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.d, v19.d}[1], [x5]",       17,  7)
1399f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.d, v19.d}[1], [x5], #16",  -9, 12)
1400f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.d, v19.d}[1], [x5], x6",   9, 13)
1401f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1402f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.s, v19.s}[0], [x5]",       17,  7)
1403f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.s, v19.s}[0], [x5], #8",   -9, 12)
1404f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.s, v19.s}[0], [x5], x6",   9, 13)
1405f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1406f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.s, v19.s}[3], [x5]",       17,  7)
1407f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.s, v19.s}[3], [x5], #8",   -9, 12)
1408f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.s, v19.s}[3], [x5], x6",   9, 13)
1409f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1410f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.h, v19.h}[0], [x5]",       17,  7)
1411f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.h, v19.h}[0], [x5], #4",   -9, 12)
1412f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.h, v19.h}[0], [x5], x6",   9, 13)
1413f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1414f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.h, v19.h}[6], [x5]",       17,  7)
1415f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.h, v19.h}[6], [x5], #4",   -9, 12)
1416f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.h, v19.h}[6], [x5], x6",   9, 13)
1417f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1418f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.b, v19.b}[0], [x5]",       17,  7)
1419f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.b, v19.b}[0], [x5], #2",   -9, 12)
1420f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.b, v19.b}[0], [x5], x6",   9, 13)
1421f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1422f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.b, v19.b}[13], [x5]",      17,  7)
1423f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.b, v19.b}[13], [x5], #2",  -9, 12)
1424f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st2 {v18.b, v19.b}[13], [x5], x6",  9, 13)
1425f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1426f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1427f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.d, v19.d}[0], [x5]",       17,  7)
1428f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.d, v19.d}[0], [x5], #16",  -9, 12)
1429f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.d, v19.d}[0], [x5], x6",   9, 13)
1430f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1431f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.d, v19.d}[1], [x5]",       17,  7)
1432f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.d, v19.d}[1], [x5], #16",  -9, 12)
1433f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.d, v19.d}[1], [x5], x6",   9, 13)
1434f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1435f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.s, v19.s}[0], [x5]",       17,  7)
1436f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.s, v19.s}[0], [x5], #8",   -9, 12)
1437f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.s, v19.s}[0], [x5], x6",   9, 13)
1438f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1439f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.s, v19.s}[3], [x5]",       17,  7)
1440f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.s, v19.s}[3], [x5], #8",   -9, 12)
1441f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.s, v19.s}[3], [x5], x6",   9, 13)
1442f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1443f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.h, v19.h}[0], [x5]",       17,  7)
1444f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.h, v19.h}[0], [x5], #4",   -9, 12)
1445f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.h, v19.h}[0], [x5], x6",   9, 13)
1446f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1447f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.h, v19.h}[6], [x5]",       17,  7)
1448f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.h, v19.h}[6], [x5], #4",   -9, 12)
1449f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.h, v19.h}[6], [x5], x6",   9, 13)
1450f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1451f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.b, v19.b}[0], [x5]",       17,  7)
1452f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.b, v19.b}[0], [x5], #2",   -9, 12)
1453f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.b, v19.b}[0], [x5], x6",   9, 13)
1454f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1455f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.b, v19.b}[13], [x5]",      17,  7)
1456f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.b, v19.b}[13], [x5], #2",  -9, 12)
1457f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld2 {v18.b, v19.b}[13], [x5], x6",  9, 13)
145852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
145952bae2fcc174535edd254f8a9b6d0af908a76480sewardj
146052bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
1461011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD3/ST3 (single 3-elem struct to/from one lane of 3 regs\n");
146252bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1463f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.d, v18.d, v19.d}[0], [x5]",       17,  7)
1464f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.d, v18.d, v19.d}[0], [x5], #24",  -9, 12)
1465f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.d, v18.d, v19.d}[0], [x5], x6",   9, 13)
1466f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1467f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.d, v18.d, v19.d}[1], [x5]",       17,  7)
1468f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.d, v18.d, v19.d}[1], [x5], #24",  -9, 12)
1469f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.d, v18.d, v19.d}[1], [x5], x6",   9, 13)
1470f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1471f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.s, v18.s, v19.s}[0], [x5]",       17,  7)
1472f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.s, v18.s, v19.s}[0], [x5], #12",  -9, 12)
1473f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.s, v18.s, v19.s}[0], [x5], x6",   9, 13)
1474f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1475f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.s, v18.s, v19.s}[3], [x5]",       17,  7)
1476f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.s, v18.s, v19.s}[3], [x5], #12",  -9, 12)
1477f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.s, v18.s, v19.s}[3], [x5], x6",   9, 13)
1478f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1479f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.h, v18.h, v19.h}[0], [x5]",       17,  7)
1480f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.h, v18.h, v19.h}[0], [x5], #6",   -9, 12)
1481f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.h, v18.h, v19.h}[0], [x5], x6",   9, 13)
1482f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1483f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.h, v18.h, v19.h}[6], [x5]",       17,  7)
1484f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.h, v18.h, v19.h}[6], [x5], #6",   -9, 12)
1485f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.h, v18.h, v19.h}[6], [x5], x6",   9, 13)
1486f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1487f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.b, v18.b, v19.b}[0], [x5]",       17,  7)
1488f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.b, v18.b, v19.b}[0], [x5], #3",   -9, 12)
1489f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.b, v18.b, v19.b}[0], [x5], x6",   9, 13)
1490f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1491f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.b, v18.b, v19.b}[13], [x5]",      17,  7)
1492f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.b, v18.b, v19.b}[13], [x5], #3",  -9, 12)
1493f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st3 {v17.b, v18.b, v19.b}[13], [x5], x6",  9, 13)
1494f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1495f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1496f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.d, v18.d, v19.d}[0], [x5]",       17,  7)
1497f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.d, v18.d, v19.d}[0], [x5], #24",  -9, 12)
1498f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.d, v18.d, v19.d}[0], [x5], x6",   9, 13)
1499f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1500f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.d, v18.d, v19.d}[1], [x5]",       17,  7)
1501f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.d, v18.d, v19.d}[1], [x5], #24",  -9, 12)
1502f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.d, v18.d, v19.d}[1], [x5], x6",   9, 13)
1503f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1504f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.s, v18.s, v19.s}[0], [x5]",       17,  7)
1505f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.s, v18.s, v19.s}[0], [x5], #12",  -9, 12)
1506f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.s, v18.s, v19.s}[0], [x5], x6",   9, 13)
1507f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1508f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.s, v18.s, v19.s}[3], [x5]",       17,  7)
1509f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.s, v18.s, v19.s}[3], [x5], #12",  -9, 12)
1510f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.s, v18.s, v19.s}[3], [x5], x6",   9, 13)
1511f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1512f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.h, v18.h, v19.h}[0], [x5]",       17,  7)
1513f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.h, v18.h, v19.h}[0], [x5], #6",   -9, 12)
1514f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.h, v18.h, v19.h}[0], [x5], x6",   9, 13)
1515f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1516f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.h, v18.h, v19.h}[6], [x5]",       17,  7)
1517f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.h, v18.h, v19.h}[6], [x5], #6",   -9, 12)
1518f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.h, v18.h, v19.h}[6], [x5], x6",   9, 13)
1519f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1520f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.b, v18.b, v19.b}[0], [x5]",       17,  7)
1521f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.b, v18.b, v19.b}[0], [x5], #3",   -9, 12)
1522f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.b, v18.b, v19.b}[0], [x5], x6",   9, 13)
1523f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1524f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.b, v18.b, v19.b}[13], [x5]",      17,  7)
1525f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.b, v18.b, v19.b}[13], [x5], #3",  -9, 12)
1526f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld3 {v17.b, v18.b, v19.b}[13], [x5], x6",  9, 13)
152752bae2fcc174535edd254f8a9b6d0af908a76480sewardj
152852bae2fcc174535edd254f8a9b6d0af908a76480sewardj
152952bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
1530011dafb61cf25ff3337043315b2975986af226cfsewardjprintf("LD4/ST4 (single 4-elem struct to/from one lane of 4 regs\n");
153152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
1532f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.d, v18.d, v19.d, v20.d}[0], [x5]",       17,  7)
1533f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.d, v18.d, v19.d, v20.d}[0], [x5], #32",  -9, 12)
1534f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.d, v18.d, v19.d, v20.d}[0], [x5], x6",   9, 13)
1535f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1536f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.d, v18.d, v19.d, v20.d}[1], [x5]",       17,  7)
1537f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.d, v18.d, v19.d, v20.d}[1], [x5], #32",  -9, 12)
1538f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.d, v18.d, v19.d, v20.d}[1], [x5], x6",   9, 13)
1539f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1540f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.s, v18.s, v19.s, v20.s}[0], [x5]",       17,  7)
1541f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.s, v18.s, v19.s, v20.s}[0], [x5], #16",  -9, 12)
1542f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.s, v18.s, v19.s, v20.s}[0], [x5], x6",   9, 13)
1543f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1544f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.s, v18.s, v19.s, v20.s}[3], [x5]",       17,  7)
1545f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.s, v18.s, v19.s, v20.s}[3], [x5], #16",  -9, 12)
1546f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.s, v18.s, v19.s, v20.s}[3], [x5], x6",   9, 13)
1547f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1548f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.h, v18.h, v19.h, v20.h}[0], [x5]",       17,  7)
1549f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.h, v18.h, v19.h, v20.h}[0], [x5], #8",   -9, 12)
1550f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.h, v18.h, v19.h, v20.h}[0], [x5], x6",   9, 13)
1551f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1552f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.h, v18.h, v19.h, v20.h}[6], [x5]",       17,  7)
1553f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.h, v18.h, v19.h, v20.h}[6], [x5], #8",   -9, 12)
1554f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.h, v18.h, v19.h, v20.h}[6], [x5], x6",   9, 13)
1555f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1556f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.b, v18.b, v19.b, v20.b}[0], [x5]",       17,  7)
1557f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.b, v18.b, v19.b, v20.b}[0], [x5], #4",   -9, 12)
1558f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.b, v18.b, v19.b, v20.b}[0], [x5], x6",   9, 13)
1559f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1560f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.b, v18.b, v19.b, v20.b}[13], [x5]",      17,  7)
1561f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.b, v18.b, v19.b, v20.b}[13], [x5], #4",  -9, 12)
1562f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("st4 {v17.b, v18.b, v19.b, v20.b}[13], [x5], x6",  9, 13)
1563f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1564f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1565f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.d, v18.d, v19.d, v20.d}[0], [x5]",       17,  7)
1566f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.d, v18.d, v19.d, v20.d}[0], [x5], #32",  -9, 12)
1567f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.d, v18.d, v19.d, v20.d}[0], [x5], x6",   9, 13)
1568f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1569f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.d, v18.d, v19.d, v20.d}[1], [x5]",       17,  7)
1570f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.d, v18.d, v19.d, v20.d}[1], [x5], #32",  -9, 12)
1571f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.d, v18.d, v19.d, v20.d}[1], [x5], x6",   9, 13)
1572f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1573f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.s, v18.s, v19.s, v20.s}[0], [x5]",       17,  7)
1574f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.s, v18.s, v19.s, v20.s}[0], [x5], #16",  -9, 12)
1575f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.s, v18.s, v19.s, v20.s}[0], [x5], x6",   9, 13)
1576f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1577f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.s, v18.s, v19.s, v20.s}[3], [x5]",       17,  7)
1578f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.s, v18.s, v19.s, v20.s}[3], [x5], #16",  -9, 12)
1579f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.s, v18.s, v19.s, v20.s}[3], [x5], x6",   9, 13)
1580f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1581f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.h, v18.h, v19.h, v20.h}[0], [x5]",       17,  7)
1582f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.h, v18.h, v19.h, v20.h}[0], [x5], #8",   -9, 12)
1583f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.h, v18.h, v19.h, v20.h}[0], [x5], x6",   9, 13)
1584f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1585f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.h, v18.h, v19.h, v20.h}[6], [x5]",       17,  7)
1586f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.h, v18.h, v19.h, v20.h}[6], [x5], #8",   -9, 12)
1587f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.h, v18.h, v19.h, v20.h}[6], [x5], x6",   9, 13)
1588f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1589f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.b, v18.b, v19.b, v20.b}[0], [x5]",       17,  7)
1590f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.b, v18.b, v19.b, v20.b}[0], [x5], #4",   -9, 12)
1591f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.b, v18.b, v19.b, v20.b}[0], [x5], x6",   9, 13)
1592f45e93c4f239d5e136e5275aca53ef91633257d0sewardj
1593f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.b, v18.b, v19.b, v20.b}[13], [x5]",      17,  7)
1594f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.b, v18.b, v19.b, v20.b}[13], [x5], #4",  -9, 12)
1595f45e93c4f239d5e136e5275aca53ef91633257d0sewardjMEM_TEST("ld4 {v17.b, v18.b, v19.b, v20.b}[13], [x5], x6",  9, 13)
159652bae2fcc174535edd254f8a9b6d0af908a76480sewardj
159771982253f53cf33d72d5f0d5d22ee9d3055de7aesewardj////////////////////////////////////////////////////////////////
159871982253f53cf33d72d5f0d5d22ee9d3055de7aesewardjprintf("PRFM (immediate)\n");
159971982253f53cf33d72d5f0d5d22ee9d3055de7aesewardj
160071982253f53cf33d72d5f0d5d22ee9d3055de7aesewardjMEM_TEST("prfm pldl1keep, [x5, #40]",  12, -4);
160171982253f53cf33d72d5f0d5d22ee9d3055de7aesewardjMEM_TEST("prfm pstl3strm, [x5, #56]",  12, -4);
160271982253f53cf33d72d5f0d5d22ee9d3055de7aesewardj
160352bae2fcc174535edd254f8a9b6d0af908a76480sewardj} /* end of test_memory2() */
160452bae2fcc174535edd254f8a9b6d0af908a76480sewardj
160552bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
160652bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
160752bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
160852bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
160952bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
161052bae2fcc174535edd254f8a9b6d0af908a76480sewardj////////////////////////////////////////////////////////////////
161152bae2fcc174535edd254f8a9b6d0af908a76480sewardj
161252bae2fcc174535edd254f8a9b6d0af908a76480sewardjint main ( void )
161352bae2fcc174535edd254f8a9b6d0af908a76480sewardj{
1614011dafb61cf25ff3337043315b2975986af226cfsewardj  if (1) test_memory_old();
1615011dafb61cf25ff3337043315b2975986af226cfsewardj  if (1) test_memory_new();
161652bae2fcc174535edd254f8a9b6d0af908a76480sewardj  return 0;
161752bae2fcc174535edd254f8a9b6d0af908a76480sewardj}
1618