1// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s 2 3// Check that the assembler can handle the documented syntax for AArch64 4 5//------------------------------------------------------------------------------ 6// Store multiple 1-element structures from one register 7//------------------------------------------------------------------------------ 8 st1 { v0.16b }, [x0] 9 st1 { v15.8h }, [x15] 10 st1 { v31.4s }, [sp] 11 st1 { v0.2d }, [x0] 12 st1 { v0.8b }, [x0] 13 st1 { v15.4h }, [x15] 14 st1 { v31.2s }, [sp] 15 st1 { v0.1d }, [x0] 16// CHECK: st1 { v0.16b }, [x0] // encoding: [0x00,0x70,0x00,0x4c] 17// CHECK: st1 { v15.8h }, [x15] // encoding: [0xef,0x75,0x00,0x4c] 18// CHECK: st1 { v31.4s }, [sp] // encoding: [0xff,0x7b,0x00,0x4c] 19// CHECK: st1 { v0.2d }, [x0] // encoding: [0x00,0x7c,0x00,0x4c] 20// CHECK: st1 { v0.8b }, [x0] // encoding: [0x00,0x70,0x00,0x0c] 21// CHECK: st1 { v15.4h }, [x15] // encoding: [0xef,0x75,0x00,0x0c] 22// CHECK: st1 { v31.2s }, [sp] // encoding: [0xff,0x7b,0x00,0x0c] 23// CHECK: st1 { v0.1d }, [x0] // encoding: [0x00,0x7c,0x00,0x0c] 24 25//------------------------------------------------------------------------------ 26// Store multiple 1-element structures from two consecutive registers 27//------------------------------------------------------------------------------ 28 st1 { v0.16b, v1.16b }, [x0] 29 st1 { v15.8h, v16.8h }, [x15] 30 st1 { v31.4s, v0.4s }, [sp] 31 st1 { v0.2d, v1.2d }, [x0] 32 st1 { v0.8b, v1.8b }, [x0] 33 st1 { v15.4h, v16.4h }, [x15] 34 st1 { v31.2s, v0.2s }, [sp] 35 st1 { v0.1d, v1.1d }, [x0] 36// CHECK: st1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x00,0x4c] 37// CHECK: st1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x00,0x4c] 38// CHECK: st1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x00,0x4c] 39// CHECK: st1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x00,0x4c] 40// CHECK: st1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x00,0x0c] 41// CHECK: st1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x00,0x0c] 42// CHECK: st1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x00,0x0c] 43// CHECK: st1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x00,0x0c] 44 45 st1 { v0.16b-v1.16b }, [x0] 46 st1 { v15.8h-v16.8h }, [x15] 47 st1 { v31.4s-v0.4s }, [sp] 48 st1 { v0.2d-v1.2d }, [x0] 49 st1 { v0.8b-v1.8b }, [x0] 50 st1 { v15.4h-v16.4h }, [x15] 51 st1 { v31.2s-v0.2s }, [sp] 52 st1 { v0.1d-v1.1d }, [x0] 53// CHECK: st1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x00,0x4c] 54// CHECK: st1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x00,0x4c] 55// CHECK: st1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x00,0x4c] 56// CHECK: st1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x00,0x4c] 57// CHECK: st1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x00,0x0c] 58// CHECK: st1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x00,0x0c] 59// CHECK: st1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x00,0x0c] 60// CHECK: st1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x00,0x0c] 61 62//------------------------------------------------------------------------------ 63// Store multiple 1-element structures from three consecutive registers 64//------------------------------------------------------------------------------ 65 st1 { v0.16b, v1.16b, v2.16b }, [x0] 66 st1 { v15.8h, v16.8h, v17.8h }, [x15] 67 st1 { v31.4s, v0.4s, v1.4s }, [sp] 68 st1 { v0.2d, v1.2d, v2.2d }, [x0] 69 st1 { v0.8b, v1.8b, v2.8b }, [x0] 70 st1 { v15.4h, v16.4h, v17.4h }, [x15] 71 st1 { v31.2s, v0.2s, v1.2s }, [sp] 72 st1 { v0.1d, v1.1d, v2.1d }, [x0] 73// CHECK: st1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x00,0x4c] 74// CHECK: st1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x00,0x4c] 75// CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x00,0x4c] 76// CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x00,0x4c] 77// CHECK: st1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x00,0x0c] 78// CHECK: st1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x00,0x0c] 79// CHECK: st1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x00,0x0c] 80// CHECK: st1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x00,0x0c] 81 82 st1 { v0.16b-v2.16b }, [x0] 83 st1 { v15.8h-v17.8h }, [x15] 84 st1 { v31.4s-v1.4s }, [sp] 85 st1 { v0.2d-v2.2d }, [x0] 86 st1 { v0.8b-v2.8b }, [x0] 87 st1 { v15.4h-v17.4h }, [x15] 88 st1 { v31.2s-v1.2s }, [sp] 89 st1 { v0.1d-v2.1d }, [x0] 90// CHECK: st1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x00,0x4c] 91// CHECK: st1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x00,0x4c] 92// CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x00,0x4c] 93// CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x00,0x4c] 94// CHECK: st1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x00,0x0c] 95// CHECK: st1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x00,0x0c] 96// CHECK: st1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x00,0x0c] 97// CHECK: st1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x00,0x0c] 98 99//------------------------------------------------------------------------------ 100// Store multiple 1-element structures from four consecutive registers 101//------------------------------------------------------------------------------ 102 st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] 103 st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] 104 st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] 105 st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] 106 st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] 107 st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] 108 st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] 109 st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] 110// CHECK: st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x00,0x4c] 111// CHECK: st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x00,0x4c] 112// CHECK: st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x00,0x4c] 113// CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x00,0x4c] 114// CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x00,0x0c] 115// CHECK: st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x00,0x0c] 116// CHECK: st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x00,0x0c] 117// CHECK: st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x00,0x0c] 118 119 st1 { v0.16b-v3.16b }, [x0] 120 st1 { v15.8h-v18.8h }, [x15] 121 st1 { v31.4s-v2.4s }, [sp] 122 st1 { v0.2d-v3.2d }, [x0] 123 st1 { v0.8b-v3.8b }, [x0] 124 st1 { v15.4h-v18.4h }, [x15] 125 st1 { v31.2s-v2.2s }, [sp] 126 st1 { v0.1d-v3.1d }, [x0] 127// CHECK: st1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x00,0x4c] 128// CHECK: st1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x00,0x4c] 129// CHECK: st1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x00,0x4c] 130// CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x00,0x4c] 131// CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x00,0x0c] 132// CHECK: st1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x00,0x0c] 133// CHECK: st1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x00,0x0c] 134// CHECK: st1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x00,0x0c] 135 136//------------------------------------------------------------------------------ 137// Store multiple 2-element structures from two consecutive registers 138//------------------------------------------------------------------------------ 139 st2 { v0.16b, v1.16b }, [x0] 140 st2 { v15.8h, v16.8h }, [x15] 141 st2 { v31.4s, v0.4s }, [sp] 142 st2 { v0.2d, v1.2d }, [x0] 143 st2 { v0.8b, v1.8b }, [x0] 144 st2 { v15.4h, v16.4h }, [x15] 145 st2 { v31.2s, v0.2s }, [sp] 146// CHECK: st2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x00,0x4c] 147// CHECK: st2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x00,0x4c] 148// CHECK: st2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x00,0x4c] 149// CHECK: st2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x00,0x4c] 150// CHECK: st2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x00,0x0c] 151// CHECK: st2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x00,0x0c] 152// CHECK: st2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x00,0x0c] 153 154 st2 { v0.16b-v1.16b }, [x0] 155 st2 { v15.8h-v16.8h }, [x15] 156 st2 { v31.4s-v0.4s }, [sp] 157 st2 { v0.2d-v1.2d }, [x0] 158 st2 { v0.8b-v1.8b }, [x0] 159 st2 { v15.4h-v16.4h }, [x15] 160 st2 { v31.2s-v0.2s }, [sp] 161// CHECK: st2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x00,0x4c] 162// CHECK: st2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x00,0x4c] 163// CHECK: st2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x00,0x4c] 164// CHECK: st2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x00,0x4c] 165// CHECK: st2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x00,0x0c] 166// CHECK: st2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x00,0x0c] 167// CHECK: st2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x00,0x0c] 168 169//------------------------------------------------------------------------------ 170// Store multiple 3-element structures from three consecutive registers 171//------------------------------------------------------------------------------ 172 st3 { v0.16b, v1.16b, v2.16b }, [x0] 173 st3 { v15.8h, v16.8h, v17.8h }, [x15] 174 st3 { v31.4s, v0.4s, v1.4s }, [sp] 175 st3 { v0.2d, v1.2d, v2.2d }, [x0] 176 st3 { v0.8b, v1.8b, v2.8b }, [x0] 177 st3 { v15.4h, v16.4h, v17.4h }, [x15] 178 st3 { v31.2s, v0.2s, v1.2s }, [sp] 179// CHECK: st3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x00,0x4c] 180// CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x00,0x4c] 181// CHECK: st3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x00,0x4c] 182// CHECK: st3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x00,0x4c] 183// CHECK: st3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x00,0x0c] 184// CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x00,0x0c] 185// CHECK: st3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x00,0x0c] 186 187 st3 { v0.16b-v2.16b }, [x0] 188 st3 { v15.8h-v17.8h }, [x15] 189 st3 { v31.4s-v1.4s }, [sp] 190 st3 { v0.2d-v2.2d }, [x0] 191 st3 { v0.8b-v2.8b }, [x0] 192 st3 { v15.4h-v17.4h }, [x15] 193 st3 { v31.2s-v1.2s }, [sp] 194// CHECK: st3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x00,0x4c] 195// CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x00,0x4c] 196// CHECK: st3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x00,0x4c] 197// CHECK: st3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x00,0x4c] 198// CHECK: st3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x00,0x0c] 199// CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x00,0x0c] 200// CHECK: st3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x00,0x0c] 201 202//------------------------------------------------------------------------------ 203// Store multiple 4-element structures from four consecutive registers 204//------------------------------------------------------------------------------ 205 st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] 206 st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] 207 st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] 208 st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] 209 st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] 210 st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] 211 st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] 212// CHECK: st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x00,0x4c] 213// CHECK: st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x00,0x4c] 214// CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x00,0x4c] 215// CHECK: st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x00,0x4c] 216// CHECK: st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x00,0x0c] 217// CHECK: st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x00,0x0c] 218// CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x00,0x0c] 219 220 st4 { v0.16b-v3.16b }, [x0] 221 st4 { v15.8h-v18.8h }, [x15] 222 st4 { v31.4s-v2.4s }, [sp] 223 st4 { v0.2d-v3.2d }, [x0] 224 st4 { v0.8b-v3.8b }, [x0] 225 st4 { v15.4h-v18.4h }, [x15] 226 st4 { v31.2s-v2.2s }, [sp] 227// CHECK: st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x00,0x4c] 228// CHECK: st4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x00,0x4c] 229// CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x00,0x4c] 230// CHECK: st4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x00,0x4c] 231// CHECK: st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x00,0x0c] 232// CHECK: st4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x00,0x0c] 233// CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x00,0x0c] 234 235//------------------------------------------------------------------------------ 236// Load multiple 1-element structures to one register 237//------------------------------------------------------------------------------ 238 ld1 { v0.16b }, [x0] 239 ld1 { v15.8h }, [x15] 240 ld1 { v31.4s }, [sp] 241 ld1 { v0.2d }, [x0] 242 ld1 { v0.8b }, [x0] 243 ld1 { v15.4h }, [x15] 244 ld1 { v31.2s }, [sp] 245 ld1 { v0.1d }, [x0] 246// CHECK: ld1 { v0.16b }, [x0] // encoding: [0x00,0x70,0x40,0x4c] 247// CHECK: ld1 { v15.8h }, [x15] // encoding: [0xef,0x75,0x40,0x4c] 248// CHECK: ld1 { v31.4s }, [sp] // encoding: [0xff,0x7b,0x40,0x4c] 249// CHECK: ld1 { v0.2d }, [x0] // encoding: [0x00,0x7c,0x40,0x4c] 250// CHECK: ld1 { v0.8b }, [x0] // encoding: [0x00,0x70,0x40,0x0c] 251// CHECK: ld1 { v15.4h }, [x15] // encoding: [0xef,0x75,0x40,0x0c] 252// CHECK: ld1 { v31.2s }, [sp] // encoding: [0xff,0x7b,0x40,0x0c] 253// CHECK: ld1 { v0.1d }, [x0] // encoding: [0x00,0x7c,0x40,0x0c] 254 255//------------------------------------------------------------------------------ 256// Load multiple 1-element structures to two consecutive registers 257//------------------------------------------------------------------------------ 258 ld1 { v0.16b, v1.16b }, [x0] 259 ld1 { v15.8h, v16.8h }, [x15] 260 ld1 { v31.4s, v0.4s }, [sp] 261 ld1 { v0.2d, v1.2d }, [x0] 262 ld1 { v0.8b, v1.8b }, [x0] 263 ld1 { v15.4h, v16.4h }, [x15] 264 ld1 { v31.2s, v0.2s }, [sp] 265 ld1 { v0.1d, v1.1d }, [x0] 266// CHECK: ld1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x40,0x4c] 267// CHECK: ld1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x40,0x4c] 268// CHECK: ld1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x40,0x4c] 269// CHECK: ld1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x40,0x4c] 270// CHECK: ld1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x40,0x0c] 271// CHECK: ld1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x40,0x0c] 272// CHECK: ld1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x40,0x0c] 273// CHECK: ld1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x40,0x0c] 274 275 ld1 { v0.16b-v1.16b }, [x0] 276 ld1 { v15.8h-v16.8h }, [x15] 277 ld1 { v31.4s-v0.4s }, [sp] 278 ld1 { v0.2d-v1.2d }, [x0] 279 ld1 { v0.8b-v1.8b }, [x0] 280 ld1 { v15.4h-v16.4h }, [x15] 281 ld1 { v31.2s-v0.2s }, [sp] 282 ld1 { v0.1d-v1.1d }, [x0] 283// CHECK: ld1 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0xa0,0x40,0x4c] 284// CHECK: ld1 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0xa5,0x40,0x4c] 285// CHECK: ld1 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0xab,0x40,0x4c] 286// CHECK: ld1 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0xac,0x40,0x4c] 287// CHECK: ld1 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0xa0,0x40,0x0c] 288// CHECK: ld1 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0xa5,0x40,0x0c] 289// CHECK: ld1 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0xab,0x40,0x0c] 290// CHECK: ld1 { v0.1d, v1.1d }, [x0] // encoding: [0x00,0xac,0x40,0x0c] 291 292//------------------------------------------------------------------------------ 293// Load multiple 1-element structures to three consecutive registers 294//------------------------------------------------------------------------------ 295 ld1 { v0.16b, v1.16b, v2.16b }, [x0] 296 ld1 { v15.8h, v16.8h, v17.8h }, [x15] 297 ld1 { v31.4s, v0.4s, v1.4s }, [sp] 298 ld1 { v0.2d, v1.2d, v2.2d }, [x0] 299 ld1 { v0.8b, v1.8b, v2.8b }, [x0] 300 ld1 { v15.4h, v16.4h, v17.4h }, [x15] 301 ld1 { v31.2s, v0.2s, v1.2s }, [sp] 302 ld1 { v0.1d, v1.1d, v2.1d }, [x0] 303// CHECK: ld1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x40,0x4c] 304// CHECK: ld1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x40,0x4c] 305// CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x40,0x4c] 306// CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x40,0x4c] 307// CHECK: ld1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x40,0x0c] 308// CHECK: ld1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x40,0x0c] 309// CHECK: ld1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x40,0x0c] 310// CHECK: ld1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x40,0x0c] 311 312 ld1 { v0.16b-v2.16b }, [x0] 313 ld1 { v15.8h-v17.8h }, [x15] 314 ld1 { v31.4s-v1.4s }, [sp] 315 ld1 { v0.2d-v2.2d }, [x0] 316 ld1 { v0.8b-v2.8b }, [x0] 317 ld1 { v15.4h-v17.4h }, [x15] 318 ld1 { v31.2s-v1.2s }, [sp] 319 ld1 { v0.1d-v2.1d }, [x0] 320// CHECK: ld1 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x60,0x40,0x4c] 321// CHECK: ld1 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x65,0x40,0x4c] 322// CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x6b,0x40,0x4c] 323// CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x6c,0x40,0x4c] 324// CHECK: ld1 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x60,0x40,0x0c] 325// CHECK: ld1 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x65,0x40,0x0c] 326// CHECK: ld1 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x6b,0x40,0x0c] 327// CHECK: ld1 { v0.1d, v1.1d, v2.1d }, [x0] // encoding: [0x00,0x6c,0x40,0x0c] 328 329//------------------------------------------------------------------------------ 330// Load multiple 1-element structures to four consecutive registers 331//------------------------------------------------------------------------------ 332 ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] 333 ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] 334 ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] 335 ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] 336 ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] 337 ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] 338 ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] 339 ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] 340// CHECK: ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x40,0x4c] 341// CHECK: ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x40,0x4c] 342// CHECK: ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x40,0x4c] 343// CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x40,0x4c] 344// CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x40,0x0c] 345// CHECK: ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x40,0x0c] 346// CHECK: ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x40,0x0c] 347// CHECK: ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x40,0x0c] 348 349 ld1 { v0.16b-v3.16b }, [x0] 350 ld1 { v15.8h-v18.8h }, [x15] 351 ld1 { v31.4s-v2.4s }, [sp] 352 ld1 { v0.2d-v3.2d }, [x0] 353 ld1 { v0.8b-v3.8b }, [x0] 354 ld1 { v15.4h-v18.4h }, [x15] 355 ld1 { v31.2s-v2.2s }, [sp] 356 ld1 { v0.1d-v3.1d }, [x0] 357// CHECK: ld1 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x20,0x40,0x4c] 358// CHECK: ld1 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x25,0x40,0x4c] 359// CHECK: ld1 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x2b,0x40,0x4c] 360// CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x2c,0x40,0x4c] 361// CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x20,0x40,0x0c] 362// CHECK: ld1 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x25,0x40,0x0c] 363// CHECK: ld1 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x2b,0x40,0x0c] 364// CHECK: ld1 { v0.1d, v1.1d, v2.1d, v3.1d }, [x0] // encoding: [0x00,0x2c,0x40,0x0c] 365 366//------------------------------------------------------------------------------ 367// Load multiple 4-element structures to two consecutive registers 368//------------------------------------------------------------------------------ 369 ld2 { v0.16b, v1.16b }, [x0] 370 ld2 { v15.8h, v16.8h }, [x15] 371 ld2 { v31.4s, v0.4s }, [sp] 372 ld2 { v0.2d, v1.2d }, [x0] 373 ld2 { v0.8b, v1.8b }, [x0] 374 ld2 { v15.4h, v16.4h }, [x15] 375 ld2 { v31.2s, v0.2s }, [sp] 376// CHECK: ld2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x40,0x4c] 377// CHECK: ld2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x40,0x4c] 378// CHECK: ld2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x40,0x4c] 379// CHECK: ld2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x40,0x4c] 380// CHECK: ld2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x40,0x0c] 381// CHECK: ld2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x40,0x0c] 382// CHECK: ld2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x40,0x0c] 383 384 ld2 { v0.16b-v1.16b }, [x0] 385 ld2 { v15.8h-v16.8h }, [x15] 386 ld2 { v31.4s-v0.4s }, [sp] 387 ld2 { v0.2d-v1.2d }, [x0] 388 ld2 { v0.8b-v1.8b }, [x0] 389 ld2 { v15.4h-v16.4h }, [x15] 390 ld2 { v31.2s-v0.2s }, [sp] 391// CHECK: ld2 { v0.16b, v1.16b }, [x0] // encoding: [0x00,0x80,0x40,0x4c] 392// CHECK: ld2 { v15.8h, v16.8h }, [x15] // encoding: [0xef,0x85,0x40,0x4c] 393// CHECK: ld2 { v31.4s, v0.4s }, [sp] // encoding: [0xff,0x8b,0x40,0x4c] 394// CHECK: ld2 { v0.2d, v1.2d }, [x0] // encoding: [0x00,0x8c,0x40,0x4c] 395// CHECK: ld2 { v0.8b, v1.8b }, [x0] // encoding: [0x00,0x80,0x40,0x0c] 396// CHECK: ld2 { v15.4h, v16.4h }, [x15] // encoding: [0xef,0x85,0x40,0x0c] 397// CHECK: ld2 { v31.2s, v0.2s }, [sp] // encoding: [0xff,0x8b,0x40,0x0c] 398 399//------------------------------------------------------------------------------ 400// Load multiple 3-element structures to three consecutive registers 401//------------------------------------------------------------------------------ 402 ld3 { v0.16b, v1.16b, v2.16b }, [x0] 403 ld3 { v15.8h, v16.8h, v17.8h }, [x15] 404 ld3 { v31.4s, v0.4s, v1.4s }, [sp] 405 ld3 { v0.2d, v1.2d, v2.2d }, [x0] 406 ld3 { v0.8b, v1.8b, v2.8b }, [x0] 407 ld3 { v15.4h, v16.4h, v17.4h }, [x15] 408 ld3 { v31.2s, v0.2s, v1.2s }, [sp] 409// CHECK: ld3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x40,0x4c] 410// CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x40,0x4c] 411// CHECK: ld3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x40,0x4c] 412// CHECK: ld3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x40,0x4c] 413// CHECK: ld3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x40,0x0c] 414// CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x40,0x0c] 415// CHECK: ld3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x40,0x0c] 416 417 ld3 { v0.16b-v2.16b }, [x0] 418 ld3 { v15.8h-v17.8h }, [x15] 419 ld3 { v31.4s-v1.4s }, [sp] 420 ld3 { v0.2d-v2.2d }, [x0] 421 ld3 { v0.8b-v2.8b }, [x0] 422 ld3 { v15.4h-v17.4h }, [x15] 423 ld3 { v31.2s-v1.2s }, [sp] 424// CHECK: ld3 { v0.16b, v1.16b, v2.16b }, [x0] // encoding: [0x00,0x40,0x40,0x4c] 425// CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15] // encoding: [0xef,0x45,0x40,0x4c] 426// CHECK: ld3 { v31.4s, v0.4s, v1.4s }, [sp] // encoding: [0xff,0x4b,0x40,0x4c] 427// CHECK: ld3 { v0.2d, v1.2d, v2.2d }, [x0] // encoding: [0x00,0x4c,0x40,0x4c] 428// CHECK: ld3 { v0.8b, v1.8b, v2.8b }, [x0] // encoding: [0x00,0x40,0x40,0x0c] 429// CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15] // encoding: [0xef,0x45,0x40,0x0c] 430// CHECK: ld3 { v31.2s, v0.2s, v1.2s }, [sp] // encoding: [0xff,0x4b,0x40,0x0c] 431 432//------------------------------------------------------------------------------ 433// Load multiple 4-element structures to four consecutive registers 434//------------------------------------------------------------------------------ 435 ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] 436 ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] 437 ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] 438 ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] 439 ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] 440 ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] 441 ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] 442// CHECK: ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x40,0x4c] 443// CHECK: ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x40,0x4c] 444// CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x40,0x4c] 445// CHECK: ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x40,0x4c] 446// CHECK: ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x40,0x0c] 447// CHECK: ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x40,0x0c] 448// CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x40,0x0c] 449 450 ld4 { v0.16b-v3.16b }, [x0] 451 ld4 { v15.8h-v18.8h }, [x15] 452 ld4 { v31.4s-v2.4s }, [sp] 453 ld4 { v0.2d-v3.2d }, [x0] 454 ld4 { v0.8b-v3.8b }, [x0] 455 ld4 { v15.4h-v18.4h }, [x15] 456 ld4 { v31.2s-v2.2s }, [sp] 457// CHECK: ld4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0] // encoding: [0x00,0x00,0x40,0x4c] 458// CHECK: ld4 { v15.8h, v16.8h, v17.8h, v18.8h }, [x15] // encoding: [0xef,0x05,0x40,0x4c] 459// CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp] // encoding: [0xff,0x0b,0x40,0x4c] 460// CHECK: ld4 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] // encoding: [0x00,0x0c,0x40,0x4c] 461// CHECK: ld4 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0] // encoding: [0x00,0x00,0x40,0x0c] 462// CHECK: ld4 { v15.4h, v16.4h, v17.4h, v18.4h }, [x15] // encoding: [0xef,0x05,0x40,0x0c] 463// CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] // encoding: [0xff,0x0b,0x40,0x0c] 464