1// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+mte < %s | FileCheck %s 2// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=+v8.5a < %s 2>&1 | FileCheck %s --check-prefix=NOMTE 3// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=-mte < %s 2>&1 | FileCheck %s --check-prefix=NOMTE 4 5irg x0, x1 6irg sp, x1 7irg x0, sp 8irg x0, x1, x2 9irg sp, x1, x2 10 11// CHECK: irg x0, x1 // encoding: [0x20,0x10,0xdf,0x9a] 12// CHECK: irg sp, x1 // encoding: [0x3f,0x10,0xdf,0x9a] 13// CHECK: irg x0, sp // encoding: [0xe0,0x13,0xdf,0x9a] 14// CHECK: irg x0, x1, x2 // encoding: [0x20,0x10,0xc2,0x9a] 15// CHECK: irg sp, x1, x2 // encoding: [0x3f,0x10,0xc2,0x9a] 16 17// NOMTE: instruction requires: mte 18// NOMTE-NEXT: irg x0, x1 19// NOMTE: instruction requires: mte 20// NOMTE-NEXT: irg sp, x1 21// NOMTE: instruction requires: mte 22// NOMTE-NEXT: irg x0, sp 23// NOMTE: instruction requires: mte 24// NOMTE-NEXT: irg x0, x1, x2 25// NOMTE: instruction requires: mte 26// NOMTE-NEXT: irg sp, x1, x2 27 28addg x0, x1, #0, #1 29addg sp, x2, #32, #3 30addg x0, sp, #64, #5 31addg x3, x4, #1008, #6 32addg x5, x6, #112, #15 33 34subg x0, x1, #0, #1 35subg sp, x2, #32, #3 36subg x0, sp, #64, #5 37subg x3, x4, #1008, #6 38subg x5, x6, #112, #15 39 40// CHECK: addg x0, x1, #0, #1 // encoding: [0x20,0x04,0x80,0x91] 41// CHECK: addg sp, x2, #32, #3 // encoding: [0x5f,0x0c,0x82,0x91] 42// CHECK: addg x0, sp, #64, #5 // encoding: [0xe0,0x17,0x84,0x91] 43// CHECK: addg x3, x4, #1008, #6 // encoding: [0x83,0x18,0xbf,0x91] 44// CHECK: addg x5, x6, #112, #15 // encoding: [0xc5,0x3c,0x87,0x91] 45 46// CHECK: subg x0, x1, #0, #1 // encoding: [0x20,0x04,0x80,0xd1] 47// CHECK: subg sp, x2, #32, #3 // encoding: [0x5f,0x0c,0x82,0xd1] 48// CHECK: subg x0, sp, #64, #5 // encoding: [0xe0,0x17,0x84,0xd1] 49// CHECK: subg x3, x4, #1008, #6 // encoding: [0x83,0x18,0xbf,0xd1] 50// CHECK: subg x5, x6, #112, #15 // encoding: [0xc5,0x3c,0x87,0xd1] 51 52// NOMTE: instruction requires: mte 53// NOMTE-NEXT: addg x0, x1, #0, #1 54// NOMTE: instruction requires: mte 55// NOMTE-NEXT: addg sp, x2, #32, #3 56// NOMTE: instruction requires: mte 57// NOMTE-NEXT: addg x0, sp, #64, #5 58// NOMTE: instruction requires: mte 59// NOMTE-NEXT: addg x3, x4, #1008, #6 60// NOMTE: instruction requires: mte 61// NOMTE-NEXT: addg x5, x6, #112, #15 62 63// NOMTE: instruction requires: mte 64// NOMTE-NEXT: subg x0, x1, #0, #1 65// NOMTE: instruction requires: mte 66// NOMTE-NEXT: subg sp, x2, #32, #3 67// NOMTE: instruction requires: mte 68// NOMTE-NEXT: subg x0, sp, #64, #5 69// NOMTE: instruction requires: mte 70// NOMTE-NEXT: subg x3, x4, #1008, #6 71// NOMTE: instruction requires: mte 72// NOMTE-NEXT: subg x5, x6, #112, #15 73 74gmi x0, x1, x2 75gmi x3, sp, x4 76gmi xzr, x0, x30 77gmi x30, x0, xzr 78 79// CHECK: gmi x0, x1, x2 // encoding: [0x20,0x14,0xc2,0x9a] 80// CHECK: gmi x3, sp, x4 // encoding: [0xe3,0x17,0xc4,0x9a] 81// CHECK: gmi xzr, x0, x30 // encoding: [0x1f,0x14,0xde,0x9a] 82// CHECK: gmi x30, x0, xzr // encoding: [0x1e,0x14,0xdf,0x9a] 83 84// NOMTE: instruction requires: mte 85// NOMTE-NEXT: gmi x0, x1, x2 86// NOMTE: instruction requires: mte 87// NOMTE-NEXT: gmi x3, sp, x4 88// NOMTE: instruction requires: mte 89// NOMTE-NEXT: gmi xzr, x0, x30 90// NOMTE: instruction requires: mte 91// NOMTE-NEXT: gmi x30, x0, xzr 92 93stg [x1] 94stg [x1, #-4096] 95stg [x2, #4080] 96stg [sp, #16] 97 98// CHECK: stg [x1] // encoding: [0x3f,0x08,0x20,0xd9] 99// CHECK: stg [x1, #-4096] // encoding: [0x3f,0x08,0x30,0xd9] 100// CHECK: stg [x2, #4080] // encoding: [0x5f,0xf8,0x2f,0xd9] 101// CHECK: stg [sp, #16] // encoding: [0xff,0x1b,0x20,0xd9] 102 103// NOMTE: instruction requires: mte 104// NOMTE-NEXT: stg 105// NOMTE: instruction requires: mte 106// NOMTE-NEXT: stg 107// NOMTE: instruction requires: mte 108// NOMTE-NEXT: stg 109// NOMTE: instruction requires: mte 110// NOMTE-NEXT: stg 111 112stzg [x1] 113stzg [x1, #-4096] 114stzg [x2, #4080] 115stzg [sp, #16] 116 117// CHECK: stzg [x1] // encoding: [0x3f,0x08,0x60,0xd9] 118// CHECK: stzg [x1, #-4096] // encoding: [0x3f,0x08,0x70,0xd9] 119// CHECK: stzg [x2, #4080] // encoding: [0x5f,0xf8,0x6f,0xd9] 120// CHECK: stzg [sp, #16] // encoding: [0xff,0x1b,0x60,0xd9] 121 122// NOMTE: instruction requires: mte 123// NOMTE-NEXT: stzg 124// NOMTE: instruction requires: mte 125// NOMTE-NEXT: stzg 126// NOMTE: instruction requires: mte 127// NOMTE-NEXT: stzg 128// NOMTE: instruction requires: mte 129// NOMTE-NEXT: stzg 130 131stg [x1, #-4096]! 132stg [x2, #4080]! 133stg [sp, #16]! 134 135// CHECK: stg [x1, #-4096]! // encoding: [0x3f,0x0c,0x30,0xd9] 136// CHECK: stg [x2, #4080]! // encoding: [0x5f,0xfc,0x2f,0xd9] 137// CHECK: stg [sp, #16]! // encoding: [0xff,0x1f,0x20,0xd9] 138 139// NOMTE: instruction requires: mte 140// NOMTE-NEXT: stg 141// NOMTE: instruction requires: mte 142// NOMTE-NEXT: stg 143// NOMTE: instruction requires: mte 144// NOMTE-NEXT: stg 145 146stzg [x1, #-4096]! 147stzg [x2, #4080]! 148stzg [sp, #16]! 149 150// CHECK: stzg [x1, #-4096]! // encoding: [0x3f,0x0c,0x70,0xd9] 151// CHECK: stzg [x2, #4080]! // encoding: [0x5f,0xfc,0x6f,0xd9] 152// CHECK: stzg [sp, #16]! // encoding: [0xff,0x1f,0x60,0xd9] 153 154// NOMTE: instruction requires: mte 155// NOMTE-NEXT: stzg 156// NOMTE: instruction requires: mte 157// NOMTE-NEXT: stzg 158// NOMTE: instruction requires: mte 159// NOMTE-NEXT: stzg 160 161stg [x1], #-4096 162stg [x2], #4080 163stg [sp], #16 164 165// CHECK: stg [x1], #-4096 // encoding: [0x3f,0x04,0x30,0xd9] 166// CHECK: stg [x2], #4080 // encoding: [0x5f,0xf4,0x2f,0xd9] 167// CHECK: stg [sp], #16 // encoding: [0xff,0x17,0x20,0xd9] 168 169// NOMTE: instruction requires: mte 170// NOMTE-NEXT: stg 171// NOMTE: instruction requires: mte 172// NOMTE-NEXT: stg 173// NOMTE: instruction requires: mte 174// NOMTE-NEXT: stg 175 176stzg [x1], #-4096 177stzg [x2], #4080 178stzg [sp], #16 179 180// CHECK: stzg [x1], #-4096 // encoding: [0x3f,0x04,0x70,0xd9] 181// CHECK: stzg [x2], #4080 // encoding: [0x5f,0xf4,0x6f,0xd9] 182// CHECK: stzg [sp], #16 // encoding: [0xff,0x17,0x60,0xd9] 183 184// NOMTE: instruction requires: mte 185// NOMTE-NEXT: stzg 186// NOMTE: instruction requires: mte 187// NOMTE-NEXT: stzg 188// NOMTE: instruction requires: mte 189// NOMTE-NEXT: stzg 190 191st2g [x1] 192st2g [x1, #-4096] 193st2g [x2, #4080] 194st2g [sp, #16] 195 196// CHECK: st2g [x1] // encoding: [0x3f,0x08,0xa0,0xd9] 197// CHECK: st2g [x1, #-4096] // encoding: [0x3f,0x08,0xb0,0xd9] 198// CHECK: st2g [x2, #4080] // encoding: [0x5f,0xf8,0xaf,0xd9] 199// CHECK: st2g [sp, #16] // encoding: [0xff,0x1b,0xa0,0xd9] 200 201// NOMTE: instruction requires: mte 202// NOMTE-NEXT: st2g 203// NOMTE: instruction requires: mte 204// NOMTE-NEXT: st2g 205// NOMTE: instruction requires: mte 206// NOMTE-NEXT: st2g 207// NOMTE: instruction requires: mte 208// NOMTE-NEXT: st2g 209 210stz2g [x1] 211stz2g [x1, #-4096] 212stz2g [x2, #4080] 213stz2g [sp, #16] 214 215// CHECK: stz2g [x1] // encoding: [0x3f,0x08,0xe0,0xd9] 216// CHECK: stz2g [x1, #-4096] // encoding: [0x3f,0x08,0xf0,0xd9] 217// CHECK: stz2g [x2, #4080] // encoding: [0x5f,0xf8,0xef,0xd9] 218// CHECK: stz2g [sp, #16] // encoding: [0xff,0x1b,0xe0,0xd9] 219 220// NOMTE: instruction requires: mte 221// NOMTE-NEXT: stz2g 222// NOMTE: instruction requires: mte 223// NOMTE-NEXT: stz2g 224// NOMTE: instruction requires: mte 225// NOMTE-NEXT: stz2g 226// NOMTE: instruction requires: mte 227// NOMTE-NEXT: stz2g 228 229st2g [x1, #-4096]! 230st2g [x2, #4080]! 231st2g [sp, #16]! 232 233// CHECK: st2g [x1, #-4096]! // encoding: [0x3f,0x0c,0xb0,0xd9] 234// CHECK: st2g [x2, #4080]! // encoding: [0x5f,0xfc,0xaf,0xd9] 235// CHECK: st2g [sp, #16]! // encoding: [0xff,0x1f,0xa0,0xd9] 236 237// NOMTE: instruction requires: mte 238// NOMTE-NEXT: st2g 239// NOMTE: instruction requires: mte 240// NOMTE-NEXT: st2g 241// NOMTE: instruction requires: mte 242// NOMTE-NEXT: st2g 243 244stz2g [x1, #-4096]! 245stz2g [x2, #4080]! 246stz2g [sp, #16]! 247 248// CHECK: stz2g [x1, #-4096]! // encoding: [0x3f,0x0c,0xf0,0xd9] 249// CHECK: stz2g [x2, #4080]! // encoding: [0x5f,0xfc,0xef,0xd9] 250// CHECK: stz2g [sp, #16]! // encoding: [0xff,0x1f,0xe0,0xd9] 251 252// NOMTE: instruction requires: mte 253// NOMTE-NEXT: stz2g 254// NOMTE: instruction requires: mte 255// NOMTE-NEXT: stz2g 256// NOMTE: instruction requires: mte 257// NOMTE-NEXT: stz2g 258 259st2g [x1], #-4096 260st2g [x2], #4080 261st2g [sp], #16 262 263// CHECK: st2g [x1], #-4096 // encoding: [0x3f,0x04,0xb0,0xd9] 264// CHECK: st2g [x2], #4080 // encoding: [0x5f,0xf4,0xaf,0xd9] 265// CHECK: st2g [sp], #16 // encoding: [0xff,0x17,0xa0,0xd9] 266 267// NOMTE: instruction requires: mte 268// NOMTE-NEXT: st2g 269// NOMTE: instruction requires: mte 270// NOMTE-NEXT: st2g 271// NOMTE: instruction requires: mte 272// NOMTE-NEXT: st2g 273 274stz2g [x1], #-4096 275stz2g [x2], #4080 276stz2g [sp], #16 277 278// CHECK: stz2g [x1], #-4096 // encoding: [0x3f,0x04,0xf0,0xd9] 279// CHECK: stz2g [x2], #4080 // encoding: [0x5f,0xf4,0xef,0xd9] 280// CHECK: stz2g [sp], #16 // encoding: [0xff,0x17,0xe0,0xd9] 281 282// NOMTE: instruction requires: mte 283// NOMTE-NEXT: stz2g 284// NOMTE: instruction requires: mte 285// NOMTE-NEXT: stz2g 286// NOMTE: instruction requires: mte 287// NOMTE-NEXT: stz2g 288 289stgp x0, x1, [x2] 290stgp x0, x1, [x2, #-1024] 291stgp x0, x1, [x2, #1008] 292stgp x0, x1, [sp, #16] 293stgp xzr, x1, [x2, #16] 294stgp x0, xzr, [x2, #16] 295 296// CHECK: stgp x0, x1, [x2] // encoding: [0x40,0x04,0x00,0x69] 297// CHECK: stgp x0, x1, [x2, #-1024] // encoding: [0x40,0x04,0x20,0x69] 298// CHECK: stgp x0, x1, [x2, #1008] // encoding: [0x40,0x84,0x1f,0x69] 299// CHECK: stgp x0, x1, [sp, #16] // encoding: [0xe0,0x87,0x00,0x69] 300// CHECK: stgp xzr, x1, [x2, #16] // encoding: [0x5f,0x84,0x00,0x69] 301// CHECK: stgp x0, xzr, [x2, #16] // encoding: [0x40,0xfc,0x00,0x69] 302 303// NOMTE: instruction requires: mte 304// NOMTE-NEXT: stgp 305// NOMTE: instruction requires: mte 306// NOMTE-NEXT: stgp 307// NOMTE: instruction requires: mte 308// NOMTE-NEXT: stgp 309// NOMTE: instruction requires: mte 310// NOMTE-NEXT: stgp 311 312stgp x0, x1, [x2, #-1024]! 313stgp x0, x1, [x2, #1008]! 314stgp x0, x1, [sp, #16]! 315stgp xzr, x1, [x2, #16]! 316stgp x0, xzr, [x2, #16]! 317 318// CHECK: stgp x0, x1, [x2, #-1024]! // encoding: [0x40,0x04,0xa0,0x69] 319// CHECK: stgp x0, x1, [x2, #1008]! // encoding: [0x40,0x84,0x9f,0x69] 320// CHECK: stgp x0, x1, [sp, #16]! // encoding: [0xe0,0x87,0x80,0x69] 321// CHECK: stgp xzr, x1, [x2, #16]! // encoding: [0x5f,0x84,0x80,0x69] 322// CHECK: stgp x0, xzr, [x2, #16]! // encoding: [0x40,0xfc,0x80,0x69] 323 324// NOMTE: instruction requires: mte 325// NOMTE-NEXT: stgp 326// NOMTE: instruction requires: mte 327// NOMTE-NEXT: stgp 328// NOMTE: instruction requires: mte 329// NOMTE-NEXT: stgp 330// NOMTE: instruction requires: mte 331// NOMTE-NEXT: stgp 332// NOMTE: instruction requires: mte 333// NOMTE-NEXT: stgp 334 335stgp x0, x1, [x2], #-1024 336stgp x0, x1, [x2], #1008 337stgp x0, x1, [sp], #16 338stgp xzr, x1, [x2], #16 339stgp x0, xzr, [x2], #16 340 341// CHECK: stgp x0, x1, [x2], #-1024 // encoding: [0x40,0x04,0xa0,0x68] 342// CHECK: stgp x0, x1, [x2], #1008 // encoding: [0x40,0x84,0x9f,0x68] 343// CHECK: stgp x0, x1, [sp], #16 // encoding: [0xe0,0x87,0x80,0x68] 344// CHECK: stgp xzr, x1, [x2], #16 // encoding: [0x5f,0x84,0x80,0x68] 345// CHECK: stgp x0, xzr, [x2], #16 // encoding: [0x40,0xfc,0x80,0x68] 346 347// NOMTE: instruction requires: mte 348// NOMTE-NEXT: stgp 349// NOMTE: instruction requires: mte 350// NOMTE-NEXT: stgp 351// NOMTE: instruction requires: mte 352// NOMTE-NEXT: stgp 353// NOMTE: instruction requires: mte 354// NOMTE-NEXT: stgp 355// NOMTE: instruction requires: mte 356// NOMTE-NEXT: stgp 357 358dc igvac, x0 359dc igsw, x1 360dc cgsw, x2 361dc cigsw, x3 362dc cgvac, x4 363dc cgvap, x5 364dc cgvadp, x6 365dc cigvac, x7 366dc gva, x8 367dc igdvac, x9 368dc igdsw, x10 369dc cgdsw, x11 370dc cigdsw, x12 371dc cgdvac, x13 372dc cgdvap, x14 373dc cgdvadp, x15 374dc cigdvac, x16 375dc gzva, x17 376 377// CHECK: dc igvac, x0 // encoding: [0x60,0x76,0x08,0xd5] 378// CHECK: dc igsw, x1 // encoding: [0x81,0x76,0x08,0xd5] 379// CHECK: dc cgsw, x2 // encoding: [0x82,0x7a,0x08,0xd5] 380// CHECK: dc cigsw, x3 // encoding: [0x83,0x7e,0x08,0xd5] 381// CHECK: dc cgvac, x4 // encoding: [0x64,0x7a,0x0b,0xd5] 382// CHECK: dc cgvap, x5 // encoding: [0x65,0x7c,0x0b,0xd5] 383// CHECK: dc cgvadp, x6 // encoding: [0x66,0x7d,0x0b,0xd5] 384// CHECK: dc cigvac, x7 // encoding: [0x67,0x7e,0x0b,0xd5] 385// CHECK: dc gva, x8 // encoding: [0x68,0x74,0x0b,0xd5] 386// CHECK: dc igdvac, x9 // encoding: [0xa9,0x76,0x08,0xd5] 387// CHECK: dc igdsw, x10 // encoding: [0xca,0x76,0x08,0xd5] 388// CHECK: dc cgdsw, x11 // encoding: [0xcb,0x7a,0x08,0xd5] 389// CHECK: dc cigdsw, x12 // encoding: [0xcc,0x7e,0x08,0xd5] 390// CHECK: dc cgdvac, x13 // encoding: [0xad,0x7a,0x0b,0xd5] 391// CHECK: dc cgdvap, x14 // encoding: [0xae,0x7c,0x0b,0xd5] 392// CHECK: dc cgdvadp, x15 // encoding: [0xaf,0x7d,0x0b,0xd5] 393// CHECK: dc cigdvac, x16 // encoding: [0xb0,0x7e,0x0b,0xd5] 394// CHECK: dc gzva, x17 // encoding: [0x91,0x74,0x0b,0xd5] 395 396// NOMTE: DC IGVAC requires mte 397// NOMTE: DC IGSW requires mte 398// NOMTE: DC CGSW requires mte 399// NOMTE: DC CIGSW requires mte 400// NOMTE: DC CGVAC requires mte 401// NOMTE: DC CGVAP requires mte 402// NOMTE: DC CGVADP requires mte 403// NOMTE: DC CIGVAC requires mte 404// NOMTE: DC GVA requires mte 405// NOMTE: DC IGDVAC requires mte 406// NOMTE: DC IGDSW requires mte 407// NOMTE: DC CGDSW requires mte 408// NOMTE: DC CIGDSW requires mte 409// NOMTE: DC CGDVAC requires mte 410// NOMTE: DC CGDVAP requires mte 411// NOMTE: DC CGDVADP requires mte 412// NOMTE: DC CIGDVAC requires mte 413// NOMTE: DC GZVA requires mte 414 415mrs x0, tco 416mrs x1, gcr_el1 417mrs x2, rgsr_el1 418mrs x3, tfsr_el1 419mrs x4, tfsr_el2 420mrs x5, tfsr_el3 421mrs x6, tfsr_el12 422mrs x7, tfsre0_el1 423 424// CHECK: mrs x0, TCO // encoding: [0xe0,0x42,0x3b,0xd5] 425// CHECK: mrs x1, GCR_EL1 // encoding: [0xc1,0x10,0x38,0xd5] 426// CHECK: mrs x2, RGSR_EL1 // encoding: [0xa2,0x10,0x38,0xd5] 427// CHECK: mrs x3, TFSR_EL1 // encoding: [0x03,0x65,0x38,0xd5] 428// CHECK: mrs x4, TFSR_EL2 // encoding: [0x04,0x65,0x3c,0xd5] 429// CHECK: mrs x5, TFSR_EL3 // encoding: [0x05,0x66,0x3e,0xd5] 430// CHECK: mrs x6, TFSR_EL12 // encoding: [0x06,0x66,0x3d,0xd5] 431// CHECK: mrs x7, TFSRE0_EL1 // encoding: [0x27,0x66,0x38,0xd5] 432 433// NOMTE: expected readable system register 434// NOMTE-NEXT: tco 435// NOMTE: expected readable system register 436// NOMTE-NEXT: gcr_el1 437// NOMTE: expected readable system register 438// NOMTE-NEXT: rgsr_el1 439// NOMTE: expected readable system register 440// NOMTE-NEXT: tfsr_el1 441// NOMTE: expected readable system register 442// NOMTE-NEXT: tfsr_el2 443// NOMTE: expected readable system register 444// NOMTE-NEXT: tfsr_el3 445// NOMTE: expected readable system register 446// NOMTE-NEXT: tfsr_el12 447// NOMTE: expected readable system register 448// NOMTE-NEXT: tfsre0_el1 449 450msr tco, #0 451 452// CHECK: msr TCO, #0 // encoding: [0x9f,0x40,0x03,0xd5] 453 454// NOMTE: expected writable system register or pstate 455// NOMTE-NEXT: tco 456 457msr tco, x0 458msr gcr_el1, x1 459msr rgsr_el1, x2 460msr tfsr_el1, x3 461msr tfsr_el2, x4 462msr tfsr_el3, x5 463msr tfsr_el12, x6 464msr tfsre0_el1, x7 465 466// CHECK: msr TCO, x0 // encoding: [0xe0,0x42,0x1b,0xd5] 467// CHECK: msr GCR_EL1, x1 // encoding: [0xc1,0x10,0x18,0xd5] 468// CHECK: msr RGSR_EL1, x2 // encoding: [0xa2,0x10,0x18,0xd5] 469// CHECK: msr TFSR_EL1, x3 // encoding: [0x03,0x65,0x18,0xd5] 470// CHECK: msr TFSR_EL2, x4 // encoding: [0x04,0x65,0x1c,0xd5] 471// CHECK: msr TFSR_EL3, x5 // encoding: [0x05,0x66,0x1e,0xd5] 472// CHECK: msr TFSR_EL12, x6 // encoding: [0x06,0x66,0x1d,0xd5] 473// CHECK: msr TFSRE0_EL1, x7 // encoding: [0x27,0x66,0x18,0xd5] 474 475// NOMTE: expected writable system register or pstate 476// NOMTE-NEXT: tco 477// NOMTE: expected writable system register or pstate 478// NOMTE-NEXT: gcr_el1 479// NOMTE: expected writable system register or pstate 480// NOMTE-NEXT: rgsr_el1 481// NOMTE: expected writable system register or pstate 482// NOMTE-NEXT: tfsr_el1 483// NOMTE: expected writable system register or pstate 484// NOMTE-NEXT: tfsr_el2 485// NOMTE: expected writable system register or pstate 486// NOMTE-NEXT: tfsr_el3 487// NOMTE: expected writable system register or pstate 488// NOMTE-NEXT: tfsr_el12 489// NOMTE: expected writable system register or pstate 490// NOMTE-NEXT: tfsre0_el1 491 492subp x0, x1, x2 493subp x0, sp, sp 494subps x0, x1, x2 495subps x0, sp, sp 496 497// CHECK: subp x0, x1, x2 // encoding: [0x20,0x00,0xc2,0x9a] 498// CHECK: subp x0, sp, sp // encoding: [0xe0,0x03,0xdf,0x9a] 499// CHECK: subps x0, x1, x2 // encoding: [0x20,0x00,0xc2,0xba] 500// CHECK: subps x0, sp, sp // encoding: [0xe0,0x03,0xdf,0xba] 501 502// NOMTE: instruction requires: mte 503// NOMTE: instruction requires: mte 504// NOMTE: instruction requires: mte 505 506subps xzr, x0, x1 507cmpp x0, x1 508subps xzr, sp, sp 509cmpp sp, sp 510 511// CHECK: subps xzr, x0, x1 // encoding: [0x1f,0x00,0xc1,0xba] 512// CHECK: subps xzr, x0, x1 // encoding: [0x1f,0x00,0xc1,0xba] 513// CHECK: subps xzr, sp, sp // encoding: [0xff,0x03,0xdf,0xba] 514// CHECK: subps xzr, sp, sp // encoding: [0xff,0x03,0xdf,0xba] 515 516// NOMTE: instruction requires: mte 517// NOMTE: instruction requires: mte 518// NOMTE: instruction requires: mte 519// NOMTE: instruction requires: mte 520 521ldg X0, [X1, #0] 522ldg X2, [sp, #-4096] 523ldg x3, [x4, #4080] 524 525// CHECK: ldg x0, [x1] // encoding: [0x20,0x00,0x60,0xd9] 526// CHECK: ldg x2, [sp, #-4096] // encoding: [0xe2,0x03,0x70,0xd9] 527// CHECK: ldg x3, [x4, #4080] // encoding: [0x83,0xf0,0x6f,0xd9] 528 529// NOMTE: instruction requires: mte 530// NOMTE: instruction requires: mte 531// NOMTE: instruction requires: mte 532 533ldgv x0, [x1]! 534ldgv x1, [sp]! 535ldgv xzr, [x2]! 536 537// CHECK: ldgv x0, [x1]! // encoding: [0x20,0x00,0xe0,0xd9] 538// CHECK: ldgv x1, [sp]! // encoding: [0xe1,0x03,0xe0,0xd9] 539// CHECK: ldgv xzr, [x2]! // encoding: [0x5f,0x00,0xe0,0xd9] 540 541// NOMTE: instruction requires: mte 542// NOMTE: instruction requires: mte 543 544stgv x0, [x1]! 545stgv x1, [sp]! 546stgv xzr, [x2]! 547 548// CHECK: stgv x0, [x1]! // encoding: [0x20,0x00,0xa0,0xd9] 549// CHECK: stgv x1, [sp]! // encoding: [0xe1,0x03,0xa0,0xd9] 550// CHECK: stgv xzr, [x2]! // encoding: [0x5f,0x00,0xa0,0xd9] 551 552// NOMTE: instruction requires: mte 553// NOMTE: instruction requires: mte 554