1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a < %s | FileCheck %s --check-prefix=CHECK 2 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-v8.4a < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V84 3 4 //------------------------------------------------------------------------------ 5 // Armv8.4-A LDAPR and STLR instructions with immediate offsets 6 //------------------------------------------------------------------------------ 7 8 STLURB WZR, [X10] 9 STLURB W1, [X10] 10 STLURB W1, [X10, #-256] 11 stlurb w2, [x11, #255] 12 STLURB W3, [SP, #-3] 13 14 //CHECK: stlurb w1, [x10] // encoding: [0x41,0x01,0x00,0x19] 15 //CHECK-NEXT: stlurb w1, [x10, #-256] // encoding: [0x41,0x01,0x10,0x19] 16 //CHECK-NEXT: stlurb w2, [x11, #255] // encoding: [0x62,0xf1,0x0f,0x19] 17 //CHECK-NEXT: stlurb w3, [sp, #-3] // encoding: [0xe3,0xd3,0x1f,0x19] 18 19 ldapurb wzr, [x12] 20 ldapurb w4, [x12] 21 ldapurb w4, [x12, #-256] 22 LDAPURB W5, [X13, #255] 23 LDAPURB W6, [SP, #-2] 24 25 //CHECK: ldapurb wzr, [x12] // encoding: [0x9f,0x01,0x40,0x19] 26 //CHECK-NEXT: ldapurb w4, [x12] // encoding: [0x84,0x01,0x40,0x19] 27 //CHECK-NEXT: ldapurb w4, [x12, #-256] // encoding: [0x84,0x01,0x50,0x19] 28 //CHECK-NEXT: ldapurb w5, [x13, #255] // encoding: [0xa5,0xf1,0x4f,0x19] 29 //CHECK-NEXT: ldapurb w6, [sp, #-2] // encoding: [0xe6,0xe3,0x5f,0x19] 30 31 LDAPURSB W7, [X14] 32 LDAPURSB W7, [X14, #-256] 33 ldapursb w8, [x15, #255] 34 ldapursb w9, [sp, #-1] 35 36 //CHECK: ldapursb w7, [x14] // encoding: [0xc7,0x01,0xc0,0x19] 37 //CHECK-NEXT: ldapursb w7, [x14, #-256] // encoding: [0xc7,0x01,0xd0,0x19] 38 //CHECK-NEXT: ldapursb w8, [x15, #255] // encoding: [0xe8,0xf1,0xcf,0x19] 39 //CHECK-NEXT: ldapursb w9, [sp, #-1] // encoding: [0xe9,0xf3,0xdf,0x19] 40 41 LDAPURSB X0, [X16] 42 LDAPURSB X0, [X16, #-256] 43 LDAPURSB X1, [X17, #255] 44 ldapursb x2, [sp, #0] 45 ldapursb x2, [sp] 46 47 //CHECK: ldapursb x0, [x16] // encoding: [0x00,0x02,0x80,0x19] 48 //CHECK-NEXT: ldapursb x0, [x16, #-256] // encoding: [0x00,0x02,0x90,0x19] 49 //CHECK-NEXT: ldapursb x1, [x17, #255] // encoding: [0x21,0xf2,0x8f,0x19] 50 //CHECK-NEXT: ldapursb x2, [sp] // encoding: [0xe2,0x03,0x80,0x19] 51 //CHECK-NEXT: ldapursb x2, [sp] // encoding: [0xe2,0x03,0x80,0x19] 52 53 stlurh w10, [x18] 54 stlurh w10, [x18, #-256] 55 STLURH W11, [X19, #255] 56 STLURH W12, [SP, #1] 57 58 //CHECK: stlurh w10, [x18] // encoding: [0x4a,0x02,0x00,0x59] 59 //CHECK-NEXT: stlurh w10, [x18, #-256] // encoding: [0x4a,0x02,0x10,0x59] 60 //CHECK-NEXT: stlurh w11, [x19, #255] // encoding: [0x6b,0xf2,0x0f,0x59] 61 //CHECK-NEXT: stlurh w12, [sp, #1] // encoding: [0xec,0x13,0x00,0x59] 62 63 LDAPURH W13, [X20] 64 LDAPURH W13, [X20, #-256] 65 ldapurh w14, [x21, #255] 66 LDAPURH W15, [SP, #2] 67 68 //CHECK: ldapurh w13, [x20] // encoding: [0x8d,0x02,0x40,0x59] 69 //CHECK-NEXT: ldapurh w13, [x20, #-256] // encoding: [0x8d,0x02,0x50,0x59] 70 //CHECK-NEXT: ldapurh w14, [x21, #255] // encoding: [0xae,0xf2,0x4f,0x59] 71 //CHECK-NEXT: ldapurh w15, [sp, #2] // encoding: [0xef,0x23,0x40,0x59] 72 73 LDAPURSH W16, [X22] 74 LDAPURSH W16, [X22, #-256] 75 LDAPURSH W17, [X23, #255] 76 ldapursh w18, [sp, #3] 77 78 //CHECK: ldapursh w16, [x22] // encoding: [0xd0,0x02,0xc0,0x59] 79 //CHECK-NEXT: ldapursh w16, [x22, #-256] // encoding: [0xd0,0x02,0xd0,0x59] 80 //CHECK-NEXT: ldapursh w17, [x23, #255] // encoding: [0xf1,0xf2,0xcf,0x59] 81 //CHECK-NEXT: ldapursh w18, [sp, #3] // encoding: [0xf2,0x33,0xc0,0x59] 82 83 ldapursh x3, [x24] 84 ldapursh x3, [x24, #-256] 85 LDAPURSH X4, [X25, #255] 86 LDAPURSH X5, [SP, #4] 87 88 //CHECK: ldapursh x3, [x24] // encoding: [0x03,0x03,0x80,0x59] 89 //CHECK-NEXT: ldapursh x3, [x24, #-256] // encoding: [0x03,0x03,0x90,0x59] 90 //CHECK-NEXT: ldapursh x4, [x25, #255] // encoding: [0x24,0xf3,0x8f,0x59] 91 //CHECK-NEXT: ldapursh x5, [sp, #4] // encoding: [0xe5,0x43,0x80,0x59] 92 93 STLUR W19, [X26] 94 STLUR W19, [X26, #-256] 95 stlur w20, [x27, #255] 96 STLUR W21, [SP, #5] 97 98 //CHECK: stlur w19, [x26] // encoding: [0x53,0x03,0x00,0x99] 99 //CHECK-NEXT: stlur w19, [x26, #-256] // encoding: [0x53,0x03,0x10,0x99] 100 //CHECK-NEXT: stlur w20, [x27, #255] // encoding: [0x74,0xf3,0x0f,0x99] 101 //CHECK-NEXT: stlur w21, [sp, #5] // encoding: [0xf5,0x53,0x00,0x99] 102 103 LDAPUR W22, [X28] 104 LDAPUR W22, [X28, #-256] 105 LDAPUR W23, [X29, #255] 106 ldapur w24, [sp, #6] 107 108 //CHECK: ldapur w22, [x28] // encoding: [0x96,0x03,0x40,0x99] 109 //CHECK-NEXT: ldapur w22, [x28, #-256] // encoding: [0x96,0x03,0x50,0x99] 110 //CHECK-NEXT: ldapur w23, [x29, #255] // encoding: [0xb7,0xf3,0x4f,0x99] 111 //CHECK-NEXT: ldapur w24, [sp, #6] // encoding: [0xf8,0x63,0x40,0x99] 112 113 ldapursw x6, [x30] 114 ldapursw x6, [x30, #-256] 115 LDAPURSW X7, [X0, #255] 116 LDAPURSW X8, [SP, #7] 117 118 //CHECK: ldapursw x6, [x30] // encoding: [0xc6,0x03,0x80,0x99] 119 //CHECK-NEXT: ldapursw x6, [x30, #-256] // encoding: [0xc6,0x03,0x90,0x99] 120 //CHECK-NEXT: ldapursw x7, [x0, #255] // encoding: [0x07,0xf0,0x8f,0x99] 121 //CHECK-NEXT: ldapursw x8, [sp, #7] // encoding: [0xe8,0x73,0x80,0x99] 122 123 STLUR X9, [X1] 124 STLUR X9, [X1, #-256] 125 stlur x10, [x2, #255] 126 STLUR X11, [SP, #8] 127 128 //CHECK: stlur x9, [x1] // encoding: [0x29,0x00,0x00,0xd9] 129 //CHECK-NEXT: stlur x9, [x1, #-256] // encoding: [0x29,0x00,0x10,0xd9] 130 //CHECK-NEXT: stlur x10, [x2, #255] // encoding: [0x4a,0xf0,0x0f,0xd9] 131 //CHECK-NEXT: stlur x11, [sp, #8] // encoding: [0xeb,0x83,0x00,0xd9] 132 133 LDAPUR X12, [X3] 134 LDAPUR X12, [X3, #-256] 135 LDAPUR X13, [X4, #255] 136 ldapur x14, [sp, #9] 137 138 //CHECK: ldapur x12, [x3] // encoding: [0x6c,0x00,0x40,0xd9] 139 //CHECK-NEXT: ldapur x12, [x3, #-256] // encoding: [0x6c,0x00,0x50,0xd9] 140 //CHECK-NEXT: ldapur x13, [x4, #255] // encoding: [0x8d,0xf0,0x4f,0xd9] 141 //CHECK-NEXT: ldapur x14, [sp, #9] // encoding: [0xee,0x93,0x40,0xd9] 142 143 //CHECK-NO-V84: error: instruction requires: armv8.4a 144 //CHECK-NO-V84-NEXT: STLURB WZR, [X10] 145 //CHECK-NO-V84-NEXT: ^ 146 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 147 //CHECK-NO-V84-NEXT: STLURB W1, [X10] 148 //CHECK-NO-V84-NEXT: ^ 149 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 150 //CHECK-NO-V84-NEXT: STLURB W1, [X10, #-256] 151 //CHECK-NO-V84-NEXT: ^ 152 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 153 //CHECK-NO-V84-NEXT: stlurb w2, [x11, #255] 154 //CHECK-NO-V84-NEXT: ^ 155 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 156 //CHECK-NO-V84-NEXT: STLURB W3, [SP, #-3] 157 //CHECK-NO-V84-NEXT: ^ 158 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 159 //CHECK-NO-V84-NEXT: ldapurb wzr, [x12] 160 //CHECK-NO-V84-NEXT: ^ 161 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 162 //CHECK-NO-V84-NEXT: ldapurb w4, [x12] 163 //CHECK-NO-V84-NEXT: ^ 164 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 165 //CHECK-NO-V84-NEXT: ldapurb w4, [x12, #-256] 166 //CHECK-NO-V84-NEXT: ^ 167 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 168 //CHECK-NO-V84-NEXT: LDAPURB W5, [X13, #255] 169 //CHECK-NO-V84-NEXT: ^ 170 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 171 //CHECK-NO-V84-NEXT: LDAPURB W6, [SP, #-2] 172 //CHECK-NO-V84-NEXT: ^ 173 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 174 //CHECK-NO-V84-NEXT: LDAPURSB W7, [X14] 175 //CHECK-NO-V84-NEXT: ^ 176 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 177 //CHECK-NO-V84-NEXT: LDAPURSB W7, [X14, #-256] 178 //CHECK-NO-V84-NEXT: ^ 179 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 180 //CHECK-NO-V84-NEXT: ldapursb w8, [x15, #255] 181 //CHECK-NO-V84-NEXT: ^ 182 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 183 //CHECK-NO-V84-NEXT: ldapursb w9, [sp, #-1] 184 //CHECK-NO-V84-NEXT: ^ 185 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 186 //CHECK-NO-V84-NEXT: LDAPURSB X0, [X16] 187 //CHECK-NO-V84-NEXT: ^ 188 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 189 //CHECK-NO-V84-NEXT: LDAPURSB X0, [X16, #-256] 190 //CHECK-NO-V84-NEXT: ^ 191 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 192 //CHECK-NO-V84-NEXT: LDAPURSB X1, [X17, #255] 193 //CHECK-NO-V84-NEXT: ^ 194 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 195 //CHECK-NO-V84-NEXT: ldapursb x2, [sp, #0] 196 //CHECK-NO-V84-NEXT: ^ 197 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 198 //CHECK-NO-V84-NEXT: ldapursb x2, [sp] 199 //CHECK-NO-V84-NEXT: ^ 200 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 201 //CHECK-NO-V84-NEXT: stlurh w10, [x18] 202 //CHECK-NO-V84-NEXT: ^ 203 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 204 //CHECK-NO-V84-NEXT: stlurh w10, [x18, #-256] 205 //CHECK-NO-V84-NEXT: ^ 206 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 207 //CHECK-NO-V84-NEXT: STLURH W11, [X19, #255] 208 //CHECK-NO-V84-NEXT: ^ 209 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 210 //CHECK-NO-V84-NEXT: STLURH W12, [SP, #1] 211 //CHECK-NO-V84-NEXT: ^ 212 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 213 //CHECK-NO-V84-NEXT: LDAPURH W13, [X20] 214 //CHECK-NO-V84-NEXT: ^ 215 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 216 //CHECK-NO-V84-NEXT: LDAPURH W13, [X20, #-256] 217 //CHECK-NO-V84-NEXT: ^ 218 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 219 //CHECK-NO-V84-NEXT: ldapurh w14, [x21, #255] 220 //CHECK-NO-V84-NEXT: ^ 221 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 222 //CHECK-NO-V84-NEXT: LDAPURH W15, [SP, #2] 223 //CHECK-NO-V84-NEXT: ^ 224 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 225 //CHECK-NO-V84-NEXT: LDAPURSH W16, [X22] 226 //CHECK-NO-V84-NEXT: ^ 227 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 228 //CHECK-NO-V84-NEXT: LDAPURSH W16, [X22, #-256] 229 //CHECK-NO-V84-NEXT: ^ 230 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 231 //CHECK-NO-V84-NEXT: LDAPURSH W17, [X23, #255] 232 //CHECK-NO-V84-NEXT: ^ 233 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 234 //CHECK-NO-V84-NEXT: ldapursh w18, [sp, #3] 235 //CHECK-NO-V84-NEXT: ^ 236 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 237 //CHECK-NO-V84-NEXT: ldapursh x3, [x24] 238 //CHECK-NO-V84-NEXT: ^ 239 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 240 //CHECK-NO-V84-NEXT: ldapursh x3, [x24, #-256] 241 //CHECK-NO-V84-NEXT: ^ 242 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 243 //CHECK-NO-V84-NEXT: LDAPURSH X4, [X25, #255] 244 //CHECK-NO-V84-NEXT: ^ 245 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 246 //CHECK-NO-V84-NEXT: LDAPURSH X5, [SP, #4] 247 //CHECK-NO-V84-NEXT: ^ 248 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 249 //CHECK-NO-V84-NEXT: STLUR W19, [X26] 250 //CHECK-NO-V84-NEXT: ^ 251 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 252 //CHECK-NO-V84-NEXT: STLUR W19, [X26, #-256] 253 //CHECK-NO-V84-NEXT: ^ 254 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 255 //CHECK-NO-V84-NEXT: stlur w20, [x27, #255] 256 //CHECK-NO-V84-NEXT: ^ 257 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 258 //CHECK-NO-V84-NEXT: STLUR W21, [SP, #5] 259 //CHECK-NO-V84-NEXT: ^ 260 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 261 //CHECK-NO-V84-NEXT: LDAPUR W22, [X28] 262 //CHECK-NO-V84-NEXT: ^ 263 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 264 //CHECK-NO-V84-NEXT: LDAPUR W22, [X28, #-256] 265 //CHECK-NO-V84-NEXT: ^ 266 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 267 //CHECK-NO-V84-NEXT: LDAPUR W23, [X29, #255] 268 //CHECK-NO-V84-NEXT: ^ 269 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 270 //CHECK-NO-V84-NEXT: ldapur w24, [sp, #6] 271 //CHECK-NO-V84-NEXT: ^ 272 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 273 //CHECK-NO-V84-NEXT: ldapursw x6, [x30] 274 //CHECK-NO-V84-NEXT: ^ 275 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 276 //CHECK-NO-V84-NEXT: ldapursw x6, [x30, #-256] 277 //CHECK-NO-V84-NEXT: ^ 278 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 279 //CHECK-NO-V84-NEXT: LDAPURSW X7, [X0, #255] 280 //CHECK-NO-V84-NEXT: ^ 281 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 282 //CHECK-NO-V84-NEXT: LDAPURSW X8, [SP, #7] 283 //CHECK-NO-V84-NEXT: ^ 284 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 285 //CHECK-NO-V84-NEXT: STLUR X9, [X1] 286 //CHECK-NO-V84-NEXT: ^ 287 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 288 //CHECK-NO-V84-NEXT: STLUR X9, [X1, #-256] 289 //CHECK-NO-V84-NEXT: ^ 290 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 291 //CHECK-NO-V84-NEXT: stlur x10, [x2, #255] 292 //CHECK-NO-V84-NEXT: ^ 293 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 294 //CHECK-NO-V84-NEXT: STLUR X11, [SP, #8] 295 //CHECK-NO-V84-NEXT: ^ 296 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 297 //CHECK-NO-V84-NEXT: LDAPUR X12, [X3] 298 //CHECK-NO-V84-NEXT: ^ 299 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 300 //CHECK-NO-V84-NEXT: LDAPUR X12, [X3, #-256] 301 //CHECK-NO-V84-NEXT: ^ 302 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 303 //CHECK-NO-V84-NEXT: LDAPUR X13, [X4, #255] 304 //CHECK-NO-V84-NEXT: ^ 305 //CHECK-NO-V84-NEXT: error: instruction requires: armv8.4a 306 //CHECK-NO-V84-NEXT: ldapur x14, [sp, #9] 307 //CHECK-NO-V84-NEXT: ^ 308