464 lines · plain
1// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s2 3// Check that the assembler can handle the documented syntax for AArch644 5//------------------------------------------------------------------------------6// Store multiple 1-element structures from one register7//------------------------------------------------------------------------------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 registers27//------------------------------------------------------------------------------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 registers64//------------------------------------------------------------------------------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 registers101//------------------------------------------------------------------------------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 registers138//------------------------------------------------------------------------------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 registers171//------------------------------------------------------------------------------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 registers204//------------------------------------------------------------------------------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 register237//------------------------------------------------------------------------------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 registers257//------------------------------------------------------------------------------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 registers294//------------------------------------------------------------------------------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 registers331//------------------------------------------------------------------------------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 registers368//------------------------------------------------------------------------------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 registers401//------------------------------------------------------------------------------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 registers434//------------------------------------------------------------------------------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