1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \ 2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST 3// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \ 4// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST 5// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \ 6// RUN: | FileCheck %s --check-prefix=CHECK-ERROR 7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \ 8// RUN: | llvm-objdump --no-print-imm-hex -d --mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST 9// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \ 10// RUN: | llvm-objdump --no-print-imm-hex -d --mattr=-sve - | FileCheck %s --check-prefix=CHECK-UNKNOWN 11 12 13// ---------------------------------------------------------------------------// 14// Test 64-bit form (x0) and its aliases 15// ---------------------------------------------------------------------------// 16 17uqinch x0 18// CHECK-INST: uqinch x0 19// CHECK-ENCODING: [0xe0,0xf7,0x70,0x04] 20// CHECK-ERROR: instruction requires: sve or sme 21// CHECK-UNKNOWN: 0470f7e0 <unknown> 22 23uqinch x0, all 24// CHECK-INST: uqinch x0 25// CHECK-ENCODING: [0xe0,0xf7,0x70,0x04] 26// CHECK-ERROR: instruction requires: sve or sme 27// CHECK-UNKNOWN: 0470f7e0 <unknown> 28 29uqinch x0, all, mul #1 30// CHECK-INST: uqinch x0 31// CHECK-ENCODING: [0xe0,0xf7,0x70,0x04] 32// CHECK-ERROR: instruction requires: sve or sme 33// CHECK-UNKNOWN: 0470f7e0 <unknown> 34 35uqinch x0, all, mul #16 36// CHECK-INST: uqinch x0, all, mul #16 37// CHECK-ENCODING: [0xe0,0xf7,0x7f,0x04] 38// CHECK-ERROR: instruction requires: sve or sme 39// CHECK-UNKNOWN: 047ff7e0 <unknown> 40 41 42// ---------------------------------------------------------------------------// 43// Test 32-bit form (w0) and its aliases 44// ---------------------------------------------------------------------------// 45 46uqinch w0 47// CHECK-INST: uqinch w0 48// CHECK-ENCODING: [0xe0,0xf7,0x60,0x04] 49// CHECK-ERROR: instruction requires: sve or sme 50// CHECK-UNKNOWN: 0460f7e0 <unknown> 51 52uqinch w0, all 53// CHECK-INST: uqinch w0 54// CHECK-ENCODING: [0xe0,0xf7,0x60,0x04] 55// CHECK-ERROR: instruction requires: sve or sme 56// CHECK-UNKNOWN: 0460f7e0 <unknown> 57 58uqinch w0, all, mul #1 59// CHECK-INST: uqinch w0 60// CHECK-ENCODING: [0xe0,0xf7,0x60,0x04] 61// CHECK-ERROR: instruction requires: sve or sme 62// CHECK-UNKNOWN: 0460f7e0 <unknown> 63 64uqinch w0, all, mul #16 65// CHECK-INST: uqinch w0, all, mul #16 66// CHECK-ENCODING: [0xe0,0xf7,0x6f,0x04] 67// CHECK-ERROR: instruction requires: sve or sme 68// CHECK-UNKNOWN: 046ff7e0 <unknown> 69 70uqinch w0, pow2 71// CHECK-INST: uqinch w0, pow2 72// CHECK-ENCODING: [0x00,0xf4,0x60,0x04] 73// CHECK-ERROR: instruction requires: sve or sme 74// CHECK-UNKNOWN: 0460f400 <unknown> 75 76uqinch w0, pow2, mul #16 77// CHECK-INST: uqinch w0, pow2, mul #16 78// CHECK-ENCODING: [0x00,0xf4,0x6f,0x04] 79// CHECK-ERROR: instruction requires: sve or sme 80// CHECK-UNKNOWN: 046ff400 <unknown> 81 82 83// ---------------------------------------------------------------------------// 84// Test vector form and aliases. 85// ---------------------------------------------------------------------------// 86 87uqinch z0.h 88// CHECK-INST: uqinch z0.h 89// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04] 90// CHECK-ERROR: instruction requires: sve or sme 91// CHECK-UNKNOWN: 0460c7e0 <unknown> 92 93uqinch z0.h, all 94// CHECK-INST: uqinch z0.h 95// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04] 96// CHECK-ERROR: instruction requires: sve or sme 97// CHECK-UNKNOWN: 0460c7e0 <unknown> 98 99uqinch z0.h, all, mul #1 100// CHECK-INST: uqinch z0.h 101// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04] 102// CHECK-ERROR: instruction requires: sve or sme 103// CHECK-UNKNOWN: 0460c7e0 <unknown> 104 105uqinch z0.h, all, mul #16 106// CHECK-INST: uqinch z0.h, all, mul #16 107// CHECK-ENCODING: [0xe0,0xc7,0x6f,0x04] 108// CHECK-ERROR: instruction requires: sve or sme 109// CHECK-UNKNOWN: 046fc7e0 <unknown> 110 111uqinch z0.h, pow2 112// CHECK-INST: uqinch z0.h, pow2 113// CHECK-ENCODING: [0x00,0xc4,0x60,0x04] 114// CHECK-ERROR: instruction requires: sve or sme 115// CHECK-UNKNOWN: 0460c400 <unknown> 116 117uqinch z0.h, pow2, mul #16 118// CHECK-INST: uqinch z0.h, pow2, mul #16 119// CHECK-ENCODING: [0x00,0xc4,0x6f,0x04] 120// CHECK-ERROR: instruction requires: sve or sme 121// CHECK-UNKNOWN: 046fc400 <unknown> 122 123 124// ---------------------------------------------------------------------------// 125// Test all patterns for 64-bit form 126// ---------------------------------------------------------------------------// 127 128uqinch x0, pow2 129// CHECK-INST: uqinch x0, pow2 130// CHECK-ENCODING: [0x00,0xf4,0x70,0x04] 131// CHECK-ERROR: instruction requires: sve or sme 132// CHECK-UNKNOWN: 0470f400 <unknown> 133 134uqinch x0, vl1 135// CHECK-INST: uqinch x0, vl1 136// CHECK-ENCODING: [0x20,0xf4,0x70,0x04] 137// CHECK-ERROR: instruction requires: sve or sme 138// CHECK-UNKNOWN: 0470f420 <unknown> 139 140uqinch x0, vl2 141// CHECK-INST: uqinch x0, vl2 142// CHECK-ENCODING: [0x40,0xf4,0x70,0x04] 143// CHECK-ERROR: instruction requires: sve or sme 144// CHECK-UNKNOWN: 0470f440 <unknown> 145 146uqinch x0, vl3 147// CHECK-INST: uqinch x0, vl3 148// CHECK-ENCODING: [0x60,0xf4,0x70,0x04] 149// CHECK-ERROR: instruction requires: sve or sme 150// CHECK-UNKNOWN: 0470f460 <unknown> 151 152uqinch x0, vl4 153// CHECK-INST: uqinch x0, vl4 154// CHECK-ENCODING: [0x80,0xf4,0x70,0x04] 155// CHECK-ERROR: instruction requires: sve or sme 156// CHECK-UNKNOWN: 0470f480 <unknown> 157 158uqinch x0, vl5 159// CHECK-INST: uqinch x0, vl5 160// CHECK-ENCODING: [0xa0,0xf4,0x70,0x04] 161// CHECK-ERROR: instruction requires: sve or sme 162// CHECK-UNKNOWN: 0470f4a0 <unknown> 163 164uqinch x0, vl6 165// CHECK-INST: uqinch x0, vl6 166// CHECK-ENCODING: [0xc0,0xf4,0x70,0x04] 167// CHECK-ERROR: instruction requires: sve or sme 168// CHECK-UNKNOWN: 0470f4c0 <unknown> 169 170uqinch x0, vl7 171// CHECK-INST: uqinch x0, vl7 172// CHECK-ENCODING: [0xe0,0xf4,0x70,0x04] 173// CHECK-ERROR: instruction requires: sve or sme 174// CHECK-UNKNOWN: 0470f4e0 <unknown> 175 176uqinch x0, vl8 177// CHECK-INST: uqinch x0, vl8 178// CHECK-ENCODING: [0x00,0xf5,0x70,0x04] 179// CHECK-ERROR: instruction requires: sve or sme 180// CHECK-UNKNOWN: 0470f500 <unknown> 181 182uqinch x0, vl16 183// CHECK-INST: uqinch x0, vl16 184// CHECK-ENCODING: [0x20,0xf5,0x70,0x04] 185// CHECK-ERROR: instruction requires: sve or sme 186// CHECK-UNKNOWN: 0470f520 <unknown> 187 188uqinch x0, vl32 189// CHECK-INST: uqinch x0, vl32 190// CHECK-ENCODING: [0x40,0xf5,0x70,0x04] 191// CHECK-ERROR: instruction requires: sve or sme 192// CHECK-UNKNOWN: 0470f540 <unknown> 193 194uqinch x0, vl64 195// CHECK-INST: uqinch x0, vl64 196// CHECK-ENCODING: [0x60,0xf5,0x70,0x04] 197// CHECK-ERROR: instruction requires: sve or sme 198// CHECK-UNKNOWN: 0470f560 <unknown> 199 200uqinch x0, vl128 201// CHECK-INST: uqinch x0, vl128 202// CHECK-ENCODING: [0x80,0xf5,0x70,0x04] 203// CHECK-ERROR: instruction requires: sve or sme 204// CHECK-UNKNOWN: 0470f580 <unknown> 205 206uqinch x0, vl256 207// CHECK-INST: uqinch x0, vl256 208// CHECK-ENCODING: [0xa0,0xf5,0x70,0x04] 209// CHECK-ERROR: instruction requires: sve or sme 210// CHECK-UNKNOWN: 0470f5a0 <unknown> 211 212uqinch x0, #14 213// CHECK-INST: uqinch x0, #14 214// CHECK-ENCODING: [0xc0,0xf5,0x70,0x04] 215// CHECK-ERROR: instruction requires: sve or sme 216// CHECK-UNKNOWN: 0470f5c0 <unknown> 217 218uqinch x0, #15 219// CHECK-INST: uqinch x0, #15 220// CHECK-ENCODING: [0xe0,0xf5,0x70,0x04] 221// CHECK-ERROR: instruction requires: sve or sme 222// CHECK-UNKNOWN: 0470f5e0 <unknown> 223 224uqinch x0, #16 225// CHECK-INST: uqinch x0, #16 226// CHECK-ENCODING: [0x00,0xf6,0x70,0x04] 227// CHECK-ERROR: instruction requires: sve or sme 228// CHECK-UNKNOWN: 0470f600 <unknown> 229 230uqinch x0, #17 231// CHECK-INST: uqinch x0, #17 232// CHECK-ENCODING: [0x20,0xf6,0x70,0x04] 233// CHECK-ERROR: instruction requires: sve or sme 234// CHECK-UNKNOWN: 0470f620 <unknown> 235 236uqinch x0, #18 237// CHECK-INST: uqinch x0, #18 238// CHECK-ENCODING: [0x40,0xf6,0x70,0x04] 239// CHECK-ERROR: instruction requires: sve or sme 240// CHECK-UNKNOWN: 0470f640 <unknown> 241 242uqinch x0, #19 243// CHECK-INST: uqinch x0, #19 244// CHECK-ENCODING: [0x60,0xf6,0x70,0x04] 245// CHECK-ERROR: instruction requires: sve or sme 246// CHECK-UNKNOWN: 0470f660 <unknown> 247 248uqinch x0, #20 249// CHECK-INST: uqinch x0, #20 250// CHECK-ENCODING: [0x80,0xf6,0x70,0x04] 251// CHECK-ERROR: instruction requires: sve or sme 252// CHECK-UNKNOWN: 0470f680 <unknown> 253 254uqinch x0, #21 255// CHECK-INST: uqinch x0, #21 256// CHECK-ENCODING: [0xa0,0xf6,0x70,0x04] 257// CHECK-ERROR: instruction requires: sve or sme 258// CHECK-UNKNOWN: 0470f6a0 <unknown> 259 260uqinch x0, #22 261// CHECK-INST: uqinch x0, #22 262// CHECK-ENCODING: [0xc0,0xf6,0x70,0x04] 263// CHECK-ERROR: instruction requires: sve or sme 264// CHECK-UNKNOWN: 0470f6c0 <unknown> 265 266uqinch x0, #23 267// CHECK-INST: uqinch x0, #23 268// CHECK-ENCODING: [0xe0,0xf6,0x70,0x04] 269// CHECK-ERROR: instruction requires: sve or sme 270// CHECK-UNKNOWN: 0470f6e0 <unknown> 271 272uqinch x0, #24 273// CHECK-INST: uqinch x0, #24 274// CHECK-ENCODING: [0x00,0xf7,0x70,0x04] 275// CHECK-ERROR: instruction requires: sve or sme 276// CHECK-UNKNOWN: 0470f700 <unknown> 277 278uqinch x0, #25 279// CHECK-INST: uqinch x0, #25 280// CHECK-ENCODING: [0x20,0xf7,0x70,0x04] 281// CHECK-ERROR: instruction requires: sve or sme 282// CHECK-UNKNOWN: 0470f720 <unknown> 283 284uqinch x0, #26 285// CHECK-INST: uqinch x0, #26 286// CHECK-ENCODING: [0x40,0xf7,0x70,0x04] 287// CHECK-ERROR: instruction requires: sve or sme 288// CHECK-UNKNOWN: 0470f740 <unknown> 289 290uqinch x0, #27 291// CHECK-INST: uqinch x0, #27 292// CHECK-ENCODING: [0x60,0xf7,0x70,0x04] 293// CHECK-ERROR: instruction requires: sve or sme 294// CHECK-UNKNOWN: 0470f760 <unknown> 295 296uqinch x0, #28 297// CHECK-INST: uqinch x0, #28 298// CHECK-ENCODING: [0x80,0xf7,0x70,0x04] 299// CHECK-ERROR: instruction requires: sve or sme 300// CHECK-UNKNOWN: 0470f780 <unknown> 301 302 303// --------------------------------------------------------------------------// 304// Test compatibility with MOVPRFX instruction. 305 306movprfx z0, z7 307// CHECK-INST: movprfx z0, z7 308// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 309// CHECK-ERROR: instruction requires: sve or sme 310// CHECK-UNKNOWN: 0420bce0 <unknown> 311 312uqinch z0.h 313// CHECK-INST: uqinch z0.h 314// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04] 315// CHECK-ERROR: instruction requires: sve or sme 316// CHECK-UNKNOWN: 0460c7e0 <unknown> 317 318movprfx z0, z7 319// CHECK-INST: movprfx z0, z7 320// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 321// CHECK-ERROR: instruction requires: sve or sme 322// CHECK-UNKNOWN: 0420bce0 <unknown> 323 324uqinch z0.h, pow2, mul #16 325// CHECK-INST: uqinch z0.h, pow2, mul #16 326// CHECK-ENCODING: [0x00,0xc4,0x6f,0x04] 327// CHECK-ERROR: instruction requires: sve or sme 328// CHECK-UNKNOWN: 046fc400 <unknown> 329 330movprfx z0, z7 331// CHECK-INST: movprfx z0, z7 332// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 333// CHECK-ERROR: instruction requires: sve or sme 334// CHECK-UNKNOWN: 0420bce0 <unknown> 335 336uqinch z0.h, pow2 337// CHECK-INST: uqinch z0.h, pow2 338// CHECK-ENCODING: [0x00,0xc4,0x60,0x04] 339// CHECK-ERROR: instruction requires: sve or sme 340// CHECK-UNKNOWN: 0460c400 <unknown> 341