341 lines · plain
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST3// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \4// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST5// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \6// RUN: | FileCheck %s --check-prefix=CHECK-ERROR7// 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-INST9// 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-UNKNOWN11 12 13// ---------------------------------------------------------------------------//14// Test 64-bit form (x0) and its aliases15// ---------------------------------------------------------------------------//16 17uqinch x018// CHECK-INST: uqinch x019// CHECK-ENCODING: [0xe0,0xf7,0x70,0x04]20// CHECK-ERROR: instruction requires: sve or sme21// CHECK-UNKNOWN: 0470f7e0 <unknown>22 23uqinch x0, all24// CHECK-INST: uqinch x025// CHECK-ENCODING: [0xe0,0xf7,0x70,0x04]26// CHECK-ERROR: instruction requires: sve or sme27// CHECK-UNKNOWN: 0470f7e0 <unknown>28 29uqinch x0, all, mul #130// CHECK-INST: uqinch x031// CHECK-ENCODING: [0xe0,0xf7,0x70,0x04]32// CHECK-ERROR: instruction requires: sve or sme33// CHECK-UNKNOWN: 0470f7e0 <unknown>34 35uqinch x0, all, mul #1636// CHECK-INST: uqinch x0, all, mul #1637// CHECK-ENCODING: [0xe0,0xf7,0x7f,0x04]38// CHECK-ERROR: instruction requires: sve or sme39// CHECK-UNKNOWN: 047ff7e0 <unknown>40 41 42// ---------------------------------------------------------------------------//43// Test 32-bit form (w0) and its aliases44// ---------------------------------------------------------------------------//45 46uqinch w047// CHECK-INST: uqinch w048// CHECK-ENCODING: [0xe0,0xf7,0x60,0x04]49// CHECK-ERROR: instruction requires: sve or sme50// CHECK-UNKNOWN: 0460f7e0 <unknown>51 52uqinch w0, all53// CHECK-INST: uqinch w054// CHECK-ENCODING: [0xe0,0xf7,0x60,0x04]55// CHECK-ERROR: instruction requires: sve or sme56// CHECK-UNKNOWN: 0460f7e0 <unknown>57 58uqinch w0, all, mul #159// CHECK-INST: uqinch w060// CHECK-ENCODING: [0xe0,0xf7,0x60,0x04]61// CHECK-ERROR: instruction requires: sve or sme62// CHECK-UNKNOWN: 0460f7e0 <unknown>63 64uqinch w0, all, mul #1665// CHECK-INST: uqinch w0, all, mul #1666// CHECK-ENCODING: [0xe0,0xf7,0x6f,0x04]67// CHECK-ERROR: instruction requires: sve or sme68// CHECK-UNKNOWN: 046ff7e0 <unknown>69 70uqinch w0, pow271// CHECK-INST: uqinch w0, pow272// CHECK-ENCODING: [0x00,0xf4,0x60,0x04]73// CHECK-ERROR: instruction requires: sve or sme74// CHECK-UNKNOWN: 0460f400 <unknown>75 76uqinch w0, pow2, mul #1677// CHECK-INST: uqinch w0, pow2, mul #1678// CHECK-ENCODING: [0x00,0xf4,0x6f,0x04]79// CHECK-ERROR: instruction requires: sve or sme80// CHECK-UNKNOWN: 046ff400 <unknown>81 82 83// ---------------------------------------------------------------------------//84// Test vector form and aliases.85// ---------------------------------------------------------------------------//86 87uqinch z0.h88// CHECK-INST: uqinch z0.h89// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04]90// CHECK-ERROR: instruction requires: sve or sme91// CHECK-UNKNOWN: 0460c7e0 <unknown>92 93uqinch z0.h, all94// CHECK-INST: uqinch z0.h95// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04]96// CHECK-ERROR: instruction requires: sve or sme97// CHECK-UNKNOWN: 0460c7e0 <unknown>98 99uqinch z0.h, all, mul #1100// CHECK-INST: uqinch z0.h101// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04]102// CHECK-ERROR: instruction requires: sve or sme103// CHECK-UNKNOWN: 0460c7e0 <unknown>104 105uqinch z0.h, all, mul #16106// CHECK-INST: uqinch z0.h, all, mul #16107// CHECK-ENCODING: [0xe0,0xc7,0x6f,0x04]108// CHECK-ERROR: instruction requires: sve or sme109// CHECK-UNKNOWN: 046fc7e0 <unknown>110 111uqinch z0.h, pow2112// CHECK-INST: uqinch z0.h, pow2113// CHECK-ENCODING: [0x00,0xc4,0x60,0x04]114// CHECK-ERROR: instruction requires: sve or sme115// CHECK-UNKNOWN: 0460c400 <unknown>116 117uqinch z0.h, pow2, mul #16118// CHECK-INST: uqinch z0.h, pow2, mul #16119// CHECK-ENCODING: [0x00,0xc4,0x6f,0x04]120// CHECK-ERROR: instruction requires: sve or sme121// CHECK-UNKNOWN: 046fc400 <unknown>122 123 124// ---------------------------------------------------------------------------//125// Test all patterns for 64-bit form126// ---------------------------------------------------------------------------//127 128uqinch x0, pow2129// CHECK-INST: uqinch x0, pow2130// CHECK-ENCODING: [0x00,0xf4,0x70,0x04]131// CHECK-ERROR: instruction requires: sve or sme132// CHECK-UNKNOWN: 0470f400 <unknown>133 134uqinch x0, vl1135// CHECK-INST: uqinch x0, vl1136// CHECK-ENCODING: [0x20,0xf4,0x70,0x04]137// CHECK-ERROR: instruction requires: sve or sme138// CHECK-UNKNOWN: 0470f420 <unknown>139 140uqinch x0, vl2141// CHECK-INST: uqinch x0, vl2142// CHECK-ENCODING: [0x40,0xf4,0x70,0x04]143// CHECK-ERROR: instruction requires: sve or sme144// CHECK-UNKNOWN: 0470f440 <unknown>145 146uqinch x0, vl3147// CHECK-INST: uqinch x0, vl3148// CHECK-ENCODING: [0x60,0xf4,0x70,0x04]149// CHECK-ERROR: instruction requires: sve or sme150// CHECK-UNKNOWN: 0470f460 <unknown>151 152uqinch x0, vl4153// CHECK-INST: uqinch x0, vl4154// CHECK-ENCODING: [0x80,0xf4,0x70,0x04]155// CHECK-ERROR: instruction requires: sve or sme156// CHECK-UNKNOWN: 0470f480 <unknown>157 158uqinch x0, vl5159// CHECK-INST: uqinch x0, vl5160// CHECK-ENCODING: [0xa0,0xf4,0x70,0x04]161// CHECK-ERROR: instruction requires: sve or sme162// CHECK-UNKNOWN: 0470f4a0 <unknown>163 164uqinch x0, vl6165// CHECK-INST: uqinch x0, vl6166// CHECK-ENCODING: [0xc0,0xf4,0x70,0x04]167// CHECK-ERROR: instruction requires: sve or sme168// CHECK-UNKNOWN: 0470f4c0 <unknown>169 170uqinch x0, vl7171// CHECK-INST: uqinch x0, vl7172// CHECK-ENCODING: [0xe0,0xf4,0x70,0x04]173// CHECK-ERROR: instruction requires: sve or sme174// CHECK-UNKNOWN: 0470f4e0 <unknown>175 176uqinch x0, vl8177// CHECK-INST: uqinch x0, vl8178// CHECK-ENCODING: [0x00,0xf5,0x70,0x04]179// CHECK-ERROR: instruction requires: sve or sme180// CHECK-UNKNOWN: 0470f500 <unknown>181 182uqinch x0, vl16183// CHECK-INST: uqinch x0, vl16184// CHECK-ENCODING: [0x20,0xf5,0x70,0x04]185// CHECK-ERROR: instruction requires: sve or sme186// CHECK-UNKNOWN: 0470f520 <unknown>187 188uqinch x0, vl32189// CHECK-INST: uqinch x0, vl32190// CHECK-ENCODING: [0x40,0xf5,0x70,0x04]191// CHECK-ERROR: instruction requires: sve or sme192// CHECK-UNKNOWN: 0470f540 <unknown>193 194uqinch x0, vl64195// CHECK-INST: uqinch x0, vl64196// CHECK-ENCODING: [0x60,0xf5,0x70,0x04]197// CHECK-ERROR: instruction requires: sve or sme198// CHECK-UNKNOWN: 0470f560 <unknown>199 200uqinch x0, vl128201// CHECK-INST: uqinch x0, vl128202// CHECK-ENCODING: [0x80,0xf5,0x70,0x04]203// CHECK-ERROR: instruction requires: sve or sme204// CHECK-UNKNOWN: 0470f580 <unknown>205 206uqinch x0, vl256207// CHECK-INST: uqinch x0, vl256208// CHECK-ENCODING: [0xa0,0xf5,0x70,0x04]209// CHECK-ERROR: instruction requires: sve or sme210// CHECK-UNKNOWN: 0470f5a0 <unknown>211 212uqinch x0, #14213// CHECK-INST: uqinch x0, #14214// CHECK-ENCODING: [0xc0,0xf5,0x70,0x04]215// CHECK-ERROR: instruction requires: sve or sme216// CHECK-UNKNOWN: 0470f5c0 <unknown>217 218uqinch x0, #15219// CHECK-INST: uqinch x0, #15220// CHECK-ENCODING: [0xe0,0xf5,0x70,0x04]221// CHECK-ERROR: instruction requires: sve or sme222// CHECK-UNKNOWN: 0470f5e0 <unknown>223 224uqinch x0, #16225// CHECK-INST: uqinch x0, #16226// CHECK-ENCODING: [0x00,0xf6,0x70,0x04]227// CHECK-ERROR: instruction requires: sve or sme228// CHECK-UNKNOWN: 0470f600 <unknown>229 230uqinch x0, #17231// CHECK-INST: uqinch x0, #17232// CHECK-ENCODING: [0x20,0xf6,0x70,0x04]233// CHECK-ERROR: instruction requires: sve or sme234// CHECK-UNKNOWN: 0470f620 <unknown>235 236uqinch x0, #18237// CHECK-INST: uqinch x0, #18238// CHECK-ENCODING: [0x40,0xf6,0x70,0x04]239// CHECK-ERROR: instruction requires: sve or sme240// CHECK-UNKNOWN: 0470f640 <unknown>241 242uqinch x0, #19243// CHECK-INST: uqinch x0, #19244// CHECK-ENCODING: [0x60,0xf6,0x70,0x04]245// CHECK-ERROR: instruction requires: sve or sme246// CHECK-UNKNOWN: 0470f660 <unknown>247 248uqinch x0, #20249// CHECK-INST: uqinch x0, #20250// CHECK-ENCODING: [0x80,0xf6,0x70,0x04]251// CHECK-ERROR: instruction requires: sve or sme252// CHECK-UNKNOWN: 0470f680 <unknown>253 254uqinch x0, #21255// CHECK-INST: uqinch x0, #21256// CHECK-ENCODING: [0xa0,0xf6,0x70,0x04]257// CHECK-ERROR: instruction requires: sve or sme258// CHECK-UNKNOWN: 0470f6a0 <unknown>259 260uqinch x0, #22261// CHECK-INST: uqinch x0, #22262// CHECK-ENCODING: [0xc0,0xf6,0x70,0x04]263// CHECK-ERROR: instruction requires: sve or sme264// CHECK-UNKNOWN: 0470f6c0 <unknown>265 266uqinch x0, #23267// CHECK-INST: uqinch x0, #23268// CHECK-ENCODING: [0xe0,0xf6,0x70,0x04]269// CHECK-ERROR: instruction requires: sve or sme270// CHECK-UNKNOWN: 0470f6e0 <unknown>271 272uqinch x0, #24273// CHECK-INST: uqinch x0, #24274// CHECK-ENCODING: [0x00,0xf7,0x70,0x04]275// CHECK-ERROR: instruction requires: sve or sme276// CHECK-UNKNOWN: 0470f700 <unknown>277 278uqinch x0, #25279// CHECK-INST: uqinch x0, #25280// CHECK-ENCODING: [0x20,0xf7,0x70,0x04]281// CHECK-ERROR: instruction requires: sve or sme282// CHECK-UNKNOWN: 0470f720 <unknown>283 284uqinch x0, #26285// CHECK-INST: uqinch x0, #26286// CHECK-ENCODING: [0x40,0xf7,0x70,0x04]287// CHECK-ERROR: instruction requires: sve or sme288// CHECK-UNKNOWN: 0470f740 <unknown>289 290uqinch x0, #27291// CHECK-INST: uqinch x0, #27292// CHECK-ENCODING: [0x60,0xf7,0x70,0x04]293// CHECK-ERROR: instruction requires: sve or sme294// CHECK-UNKNOWN: 0470f760 <unknown>295 296uqinch x0, #28297// CHECK-INST: uqinch x0, #28298// CHECK-ENCODING: [0x80,0xf7,0x70,0x04]299// CHECK-ERROR: instruction requires: sve or sme300// CHECK-UNKNOWN: 0470f780 <unknown>301 302 303// --------------------------------------------------------------------------//304// Test compatibility with MOVPRFX instruction.305 306movprfx z0, z7307// CHECK-INST: movprfx z0, z7308// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]309// CHECK-ERROR: instruction requires: sve or sme310// CHECK-UNKNOWN: 0420bce0 <unknown>311 312uqinch z0.h313// CHECK-INST: uqinch z0.h314// CHECK-ENCODING: [0xe0,0xc7,0x60,0x04]315// CHECK-ERROR: instruction requires: sve or sme316// CHECK-UNKNOWN: 0460c7e0 <unknown>317 318movprfx z0, z7319// CHECK-INST: movprfx z0, z7320// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]321// CHECK-ERROR: instruction requires: sve or sme322// CHECK-UNKNOWN: 0420bce0 <unknown>323 324uqinch z0.h, pow2, mul #16325// CHECK-INST: uqinch z0.h, pow2, mul #16326// CHECK-ENCODING: [0x00,0xc4,0x6f,0x04]327// CHECK-ERROR: instruction requires: sve or sme328// CHECK-UNKNOWN: 046fc400 <unknown>329 330movprfx z0, z7331// CHECK-INST: movprfx z0, z7332// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]333// CHECK-ERROR: instruction requires: sve or sme334// CHECK-UNKNOWN: 0420bce0 <unknown>335 336uqinch z0.h, pow2337// CHECK-INST: uqinch z0.h, pow2338// CHECK-ENCODING: [0x00,0xc4,0x60,0x04]339// CHECK-ERROR: instruction requires: sve or sme340// CHECK-UNKNOWN: 0460c400 <unknown>341