363 lines · plain
1// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.3a -o - %s 2>&1 | \2// RUN: FileCheck --check-prefixes=CHECK,ALL %s3 4// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding %s -o - > %t.1 2>%t.25// RUN: FileCheck --check-prefixes=NO83,ALL %s < %t.16// RUN: FileCheck --check-prefix=CHECK-REQ %s < %t.27 8.text9 mrs x0, apiakeylo_el110 mrs x0, apiakeyhi_el111 mrs x0, apibkeylo_el112 mrs x0, apibkeyhi_el113 mrs x0, apdakeylo_el114 mrs x0, apdakeyhi_el115 mrs x0, apdbkeylo_el116 mrs x0, apdbkeyhi_el117 mrs x0, apgakeylo_el118 mrs x0, apgakeyhi_el119// ALL: .text20// CHECK-NEXT: mrs x0, APIAKeyLo_EL1 // encoding: [0x00,0x21,0x38,0xd5]21// CHECK-NEXT: mrs x0, APIAKeyHi_EL1 // encoding: [0x20,0x21,0x38,0xd5]22// CHECK-NEXT: mrs x0, APIBKeyLo_EL1 // encoding: [0x40,0x21,0x38,0xd5]23// CHECK-NEXT: mrs x0, APIBKeyHi_EL1 // encoding: [0x60,0x21,0x38,0xd5]24// CHECK-NEXT: mrs x0, APDAKeyLo_EL1 // encoding: [0x00,0x22,0x38,0xd5]25// CHECK-NEXT: mrs x0, APDAKeyHi_EL1 // encoding: [0x20,0x22,0x38,0xd5]26// CHECK-NEXT: mrs x0, APDBKeyLo_EL1 // encoding: [0x40,0x22,0x38,0xd5]27// CHECK-NEXT: mrs x0, APDBKeyHi_EL1 // encoding: [0x60,0x22,0x38,0xd5]28// CHECK-NEXT: mrs x0, APGAKeyLo_EL1 // encoding: [0x00,0x23,0x38,0xd5]29// CHECK-NEXT: mrs x0, APGAKeyHi_EL1 // encoding: [0x20,0x23,0x38,0xd5]30 31// CHECK-REQ: error: expected readable system register32// CHECK-REQ-NEXT: mrs x0, apiakeylo_el133// CHECK-REQ: error: expected readable system register34// CHECK-REQ-NEXT: mrs x0, apiakeyhi_el135// CHECK-REQ: error: expected readable system register36// CHECK-REQ-NEXT: mrs x0, apibkeylo_el137// CHECK-REQ: error: expected readable system register38// CHECK-REQ-NEXT: mrs x0, apibkeyhi_el139// CHECK-REQ: error: expected readable system register40// CHECK-REQ-NEXT: mrs x0, apdakeylo_el141// CHECK-REQ: error: expected readable system register42// CHECK-REQ-NEXT: mrs x0, apdakeyhi_el143// CHECK-REQ: error: expected readable system register44// CHECK-REQ-NEXT: mrs x0, apdbkeylo_el145// CHECK-REQ: error: expected readable system register46// CHECK-REQ-NEXT: mrs x0, apdbkeyhi_el147// CHECK-REQ: error: expected readable system register48// CHECK-REQ-NEXT: mrs x0, apgakeylo_el149// CHECK-REQ: error: expected readable system register50// CHECK-REQ-NEXT: mrs x0, apgakeyhi_el151 52 msr apiakeylo_el1, x053 msr apiakeyhi_el1, x054 msr apibkeylo_el1, x055 msr apibkeyhi_el1, x056 msr apdakeylo_el1, x057 msr apdakeyhi_el1, x058 msr apdbkeylo_el1, x059 msr apdbkeyhi_el1, x060 msr apgakeylo_el1, x061 msr apgakeyhi_el1, x062// ALL-EMPTY:63// ALL-EMPTY:64// CHECK-NEXT: msr APIAKeyLo_EL1, x0 // encoding: [0x00,0x21,0x18,0xd5]65// CHECK-NEXT: msr APIAKeyHi_EL1, x0 // encoding: [0x20,0x21,0x18,0xd5]66// CHECK-NEXT: msr APIBKeyLo_EL1, x0 // encoding: [0x40,0x21,0x18,0xd5]67// CHECK-NEXT: msr APIBKeyHi_EL1, x0 // encoding: [0x60,0x21,0x18,0xd5]68// CHECK-NEXT: msr APDAKeyLo_EL1, x0 // encoding: [0x00,0x22,0x18,0xd5]69// CHECK-NEXT: msr APDAKeyHi_EL1, x0 // encoding: [0x20,0x22,0x18,0xd5]70// CHECK-NEXT: msr APDBKeyLo_EL1, x0 // encoding: [0x40,0x22,0x18,0xd5]71// CHECK-NEXT: msr APDBKeyHi_EL1, x0 // encoding: [0x60,0x22,0x18,0xd5]72// CHECK-NEXT: msr APGAKeyLo_EL1, x0 // encoding: [0x00,0x23,0x18,0xd5]73// CHECK-NEXT: msr APGAKeyHi_EL1, x0 // encoding: [0x20,0x23,0x18,0xd5]74 75// CHECK-REQ: error: expected writable system register or pstate76// CHECK-REQ-NEXT: msr apiakeylo_el1, x077// CHECK-REQ: error: expected writable system register or pstate78// CHECK-REQ-NEXT: msr apiakeyhi_el1, x079// CHECK-REQ: error: expected writable system register or pstate80// CHECK-REQ-NEXT: msr apibkeylo_el1, x081// CHECK-REQ: error: expected writable system register or pstate82// CHECK-REQ-NEXT: msr apibkeyhi_el1, x083// CHECK-REQ: error: expected writable system register or pstate84// CHECK-REQ-NEXT: msr apdakeylo_el1, x085// CHECK-REQ: error: expected writable system register or pstate86// CHECK-REQ-NEXT: msr apdakeyhi_el1, x087// CHECK-REQ: error: expected writable system register or pstate88// CHECK-REQ-NEXT: msr apdbkeylo_el1, x089// CHECK-REQ: error: expected writable system register or pstate90// CHECK-REQ-NEXT: msr apdbkeyhi_el1, x091// CHECK-REQ: error: expected writable system register or pstate92// CHECK-REQ-NEXT: msr apgakeylo_el1, x093// CHECK-REQ: error: expected writable system register or pstate94// CHECK-REQ-NEXT: msr apgakeyhi_el1, x095 96// ALL-EMPTY:97// ALL-EMPTY:98 hint #799 xpaclri100// CHECK-NEXT: xpaclri // encoding: [0xff,0x20,0x03,0xd5]101// CHECK-NEXT: xpaclri // encoding: [0xff,0x20,0x03,0xd5]102// NO83-NEXT: hint #7 // encoding: [0xff,0x20,0x03,0xd5]103// NO83-NEXT: hint #7 // encoding: [0xff,0x20,0x03,0xd5]104 hint #8105 pacia1716106// CHECK-NEXT: pacia1716 // encoding: [0x1f,0x21,0x03,0xd5]107// CHECK-NEXT: pacia1716 // encoding: [0x1f,0x21,0x03,0xd5]108// NO83-NEXT: hint #8 // encoding: [0x1f,0x21,0x03,0xd5]109// NO83-NEXT: hint #8 // encoding: [0x1f,0x21,0x03,0xd5]110 hint #10111 pacib1716112// CHECK-NEXT: pacib1716 // encoding: [0x5f,0x21,0x03,0xd5]113// CHECK-NEXT: pacib1716 // encoding: [0x5f,0x21,0x03,0xd5]114// NO83-NEXT: hint #10 // encoding: [0x5f,0x21,0x03,0xd5]115// NO83-NEXT: hint #10 // encoding: [0x5f,0x21,0x03,0xd5]116 hint #12117 autia1716118// CHECK-NEXT: autia1716 // encoding: [0x9f,0x21,0x03,0xd5]119// CHECK-NEXT: autia1716 // encoding: [0x9f,0x21,0x03,0xd5]120// NO83-NEXT: hint #12 // encoding: [0x9f,0x21,0x03,0xd5]121// NO83-NEXT: hint #12 // encoding: [0x9f,0x21,0x03,0xd5]122 hint #14123 autib1716124// CHECK-NEXT: autib1716 // encoding: [0xdf,0x21,0x03,0xd5]125// CHECK-NEXT: autib1716 // encoding: [0xdf,0x21,0x03,0xd5]126// NO83-NEXT: hint #14 // encoding: [0xdf,0x21,0x03,0xd5]127// NO83-NEXT: hint #14 // encoding: [0xdf,0x21,0x03,0xd5]128 hint #24129 paciaz130// CHECK-NEXT: paciaz // encoding: [0x1f,0x23,0x03,0xd5]131// CHECK-NEXT: paciaz // encoding: [0x1f,0x23,0x03,0xd5]132// NO83-NEXT: hint #24 // encoding: [0x1f,0x23,0x03,0xd5]133// NO83-NEXT: hint #24 // encoding: [0x1f,0x23,0x03,0xd5]134 hint #25135 paciasp136// CHECK-NEXT: paciasp // encoding: [0x3f,0x23,0x03,0xd5]137// CHECK-NEXT: paciasp // encoding: [0x3f,0x23,0x03,0xd5]138// NO83-NEXT: hint #25 // encoding: [0x3f,0x23,0x03,0xd5]139// NO83-NEXT: hint #25 // encoding: [0x3f,0x23,0x03,0xd5]140 hint #26141 pacibz142// CHECK-NEXT: pacibz // encoding: [0x5f,0x23,0x03,0xd5]143// CHECK-NEXT: pacibz // encoding: [0x5f,0x23,0x03,0xd5]144// NO83-NEXT: hint #26 // encoding: [0x5f,0x23,0x03,0xd5]145// NO83-NEXT: hint #26 // encoding: [0x5f,0x23,0x03,0xd5]146 hint #27147 pacibsp148// CHECK-NEXT: pacibsp // encoding: [0x7f,0x23,0x03,0xd5]149// CHECK-NEXT: pacibsp // encoding: [0x7f,0x23,0x03,0xd5]150// NO83-NEXT: hint #27 // encoding: [0x7f,0x23,0x03,0xd5]151// NO83-NEXT: hint #27 // encoding: [0x7f,0x23,0x03,0xd5]152 hint #28153 autiaz154// CHECK-NEXT: autiaz // encoding: [0x9f,0x23,0x03,0xd5]155// CHECK-NEXT: autiaz // encoding: [0x9f,0x23,0x03,0xd5]156// NO83-NEXT: hint #28 // encoding: [0x9f,0x23,0x03,0xd5]157// NO83-NEXT: hint #28 // encoding: [0x9f,0x23,0x03,0xd5]158 hint #29159 autiasp160// CHECK-NEXT: autiasp // encoding: [0xbf,0x23,0x03,0xd5]161// CHECK-NEXT: autiasp // encoding: [0xbf,0x23,0x03,0xd5]162// NO83-NEXT: hint #29 // encoding: [0xbf,0x23,0x03,0xd5]163// NO83-NEXT: hint #29 // encoding: [0xbf,0x23,0x03,0xd5]164 hint #30165 autibz166// CHECK-NEXT: autibz // encoding: [0xdf,0x23,0x03,0xd5]167// CHECK-NEXT: autibz // encoding: [0xdf,0x23,0x03,0xd5]168// NO83-NEXT: hint #30 // encoding: [0xdf,0x23,0x03,0xd5]169// NO83-NEXT: hint #30 // encoding: [0xdf,0x23,0x03,0xd5]170 hint #31171 autibsp172// CHECK-NEXT: autibsp // encoding: [0xff,0x23,0x03,0xd5]173// CHECK-NEXT: autibsp // encoding: [0xff,0x23,0x03,0xd5]174// NO83-NEXT: hint #31 // encoding: [0xff,0x23,0x03,0xd5]175// NO83-NEXT: hint #31 // encoding: [0xff,0x23,0x03,0xd5]176 177// ALL-EMPTY:178 pacia x0, x1179// CHECK-NEXT: pacia x0, x1 // encoding: [0x20,0x00,0xc1,0xda]180// CHECK-REQ-NEXT: ^181// CHECK-REQ-NEXT: error: instruction requires: pa182// CHECK-REQ-NEXT: pacia x0, x1183 autia x0, x1184// CHECK-NEXT: autia x0, x1 // encoding: [0x20,0x10,0xc1,0xda]185// CHECK-REQ: error: instruction requires: pa186// CHECK-REQ-NEXT: autia x0, x1187 pacda x0, x1188// CHECK-NEXT: pacda x0, x1 // encoding: [0x20,0x08,0xc1,0xda]189// CHECK-REQ: error: instruction requires: pa190// CHECK-REQ-NEXT: pacda x0, x1191 autda x0, x1192// CHECK-NEXT: autda x0, x1 // encoding: [0x20,0x18,0xc1,0xda]193// CHECK-REQ: error: instruction requires: pa194// CHECK-REQ-NEXT: autda x0, x1195 pacib x0, x1196// CHECK-NEXT: pacib x0, x1 // encoding: [0x20,0x04,0xc1,0xda]197// CHECK-REQ: error: instruction requires: pa198// CHECK-REQ-NEXT: pacib x0, x1199 autib x0, x1200// CHECK-NEXT: autib x0, x1 // encoding: [0x20,0x14,0xc1,0xda]201// CHECK-REQ: error: instruction requires: pa202// CHECK-REQ-NEXT: autib x0, x1203 pacdb x0, x1204// CHECK-NEXT: pacdb x0, x1 // encoding: [0x20,0x0c,0xc1,0xda]205// CHECK-REQ: error: instruction requires: pa206// CHECK-REQ-NEXT: pacdb x0, x1207 autdb x0, x1208// CHECK-NEXT: autdb x0, x1 // encoding: [0x20,0x1c,0xc1,0xda]209// CHECK-REQ: error: instruction requires: pa210// CHECK-REQ-NEXT: autdb x0, x1211 pacga x0, x1, x2212// CHECK-NEXT: pacga x0, x1, x2 // encoding: [0x20,0x30,0xc2,0x9a]213// CHECK-REQ: error: instruction requires: pa214// CHECK-REQ-NEXT: pacga x0, x1, x2215 paciza x0216// CHECK-NEXT: paciza x0 // encoding: [0xe0,0x23,0xc1,0xda]217// CHECK-REQ: error: instruction requires: pa218// CHECK-REQ-NEXT: paciza x0219 autiza x0220// CHECK-NEXT: autiza x0 // encoding: [0xe0,0x33,0xc1,0xda]221// CHECK-REQ: error: instruction requires: pa222// CHECK-REQ-NEXT: autiza x0223 pacdza x0224// CHECK-NEXT: pacdza x0 // encoding: [0xe0,0x2b,0xc1,0xda]225// CHECK-REQ: error: instruction requires: pa226// CHECK-REQ-NEXT: pacdza x0227 autdza x0228// CHECK-NEXT: autdza x0 // encoding: [0xe0,0x3b,0xc1,0xda]229// CHECK-REQ: error: instruction requires: pa230// CHECK-REQ-NEXT: autdza x0231 pacizb x0232// CHECK-NEXT: pacizb x0 // encoding: [0xe0,0x27,0xc1,0xda]233// CHECK-REQ: error: instruction requires: pa234// CHECK-REQ-NEXT: pacizb x0235 autizb x0236// CHECK-NEXT: autizb x0 // encoding: [0xe0,0x37,0xc1,0xda]237// CHECK-REQ: error: instruction requires: pa238// CHECK-REQ-NEXT: autizb x0239 pacdzb x0240// CHECK-NEXT: pacdzb x0 // encoding: [0xe0,0x2f,0xc1,0xda]241// CHECK-REQ: error: instruction requires: pa242// CHECK-REQ-NEXT: pacdzb x0243 autdzb x0244// CHECK-NEXT: autdzb x0 // encoding: [0xe0,0x3f,0xc1,0xda]245// CHECK-REQ: error: instruction requires: pa246// CHECK-REQ-NEXT: autdzb x0247 xpaci x0248// CHECK-NEXT: xpaci x0 // encoding: [0xe0,0x43,0xc1,0xda]249// CHECK-REQ: error: instruction requires: pa250// CHECK-REQ-NEXT: xpaci x0251 xpacd x0252// CHECK-NEXT: xpacd x0 // encoding: [0xe0,0x47,0xc1,0xda]253// CHECK-REQ: error: instruction requires: pa254// CHECK-REQ-NEXT: xpacd x0255 256 braa x0, x1257// CHECK-EMPTY:258// CHECK-NEXT: braa x0, x1 // encoding: [0x01,0x08,0x1f,0xd7]259// CHECK-REQ: error: instruction requires: pa260// CHECK-REQ-NEXT: braa x0, x1261 brab x0, x1262// CHECK-NEXT: brab x0, x1 // encoding: [0x01,0x0c,0x1f,0xd7]263// CHECK-REQ: error: instruction requires: pa264// CHECK-REQ-NEXT: brab x0, x1265 blraa x0, x1266// CHECK-NEXT: blraa x0, x1 // encoding: [0x01,0x08,0x3f,0xd7]267// CHECK-REQ: error: instruction requires: pa268// CHECK-REQ-NEXT: blraa x0, x1269 blrab x0, x1270// CHECK-NEXT: blrab x0, x1 // encoding: [0x01,0x0c,0x3f,0xd7]271// CHECK-REQ: error: instruction requires: pa272// CHECK-REQ-NEXT: blrab x0, x1273 274 braaz x0275// CHECK-EMPTY:276// CHECK-NEXT: braaz x0 // encoding: [0x1f,0x08,0x1f,0xd6]277// CHECK-REQ: error: instruction requires: pa278// CHECK-REQ-NEXT: braaz x0279 brabz x0280// CHECK-NEXT: brabz x0 // encoding: [0x1f,0x0c,0x1f,0xd6]281// CHECK-REQ: error: instruction requires: pa282// CHECK-REQ-NEXT: brabz x0283 blraaz x0284// CHECK-NEXT: blraaz x0 // encoding: [0x1f,0x08,0x3f,0xd6]285// CHECK-REQ: error: instruction requires: pa286// CHECK-REQ-NEXT: blraaz x0287 blrabz x0288// CHECK-NEXT: blrabz x0 // encoding: [0x1f,0x0c,0x3f,0xd6]289// CHECK-REQ: error: instruction requires: pa290// CHECK-REQ-NEXT: blrabz x0291 retaa292// CHECK-NEXT: retaa // encoding: [0xff,0x0b,0x5f,0xd6]293// CHECK-REQ: error: instruction requires: pa294// CHECK-REQ-NEXT: retaa295 retab296// CHECK-NEXT: retab // encoding: [0xff,0x0f,0x5f,0xd6]297// CHECK-REQ: error: instruction requires: pa298// CHECK-REQ-NEXT: retab299 eretaa300// CHECK-NEXT: eretaa // encoding: [0xff,0x0b,0x9f,0xd6]301// CHECK-REQ: error: instruction requires: pa302// CHECK-REQ-NEXT: eretaa303 eretab304// CHECK-NEXT: eretab // encoding: [0xff,0x0f,0x9f,0xd6]305// CHECK-REQ: error: instruction requires: pa306// CHECK-REQ-NEXT: eretab307 ldraa x0, [x1, 4088]308// CHECK-NEXT: ldraa x0, [x1, #4088] // encoding: [0x20,0xf4,0x3f,0xf8]309// CHECK-REQ: error: instruction requires: pa310// CHECK-REQ-NEXT: ldraa x0, [x1, 4088]311 ldraa x0, [x1, -4096]312// CHECK-NEXT: ldraa x0, [x1, #-4096] // encoding: [0x20,0x04,0x60,0xf8]313// CHECK-REQ: error: instruction requires: pa314// CHECK-REQ-NEXT: ldraa x0, [x1, -4096]315 ldrab x0, [x1, 4088]316// CHECK-NEXT: ldrab x0, [x1, #4088] // encoding: [0x20,0xf4,0xbf,0xf8]317// CHECK-REQ: error: instruction requires: pa318// CHECK-REQ-NEXT: ldrab x0, [x1, 4088]319 ldrab x0, [x1, -4096]320// CHECK-NEXT: ldrab x0, [x1, #-4096] // encoding: [0x20,0x04,0xe0,0xf8]321// CHECK-REQ: error: instruction requires: pa322// CHECK-REQ-NEXT: ldrab x0, [x1, -4096]323 ldraa x0, [x1, 4088]!324// CHECK-NEXT: ldraa x0, [x1, #4088]! // encoding: [0x20,0xfc,0x3f,0xf8]325// CHECK-REQ: error: instruction requires: pa326// CHECK-REQ-NEXT: ldraa x0, [x1, 4088]!327 ldraa x0, [x1, -4096]!328// CHECK-NEXT: ldraa x0, [x1, #-4096]! // encoding: [0x20,0x0c,0x60,0xf8]329// CHECK-REQ: error: instruction requires: pa330// CHECK-REQ-NEXT: ldraa x0, [x1, -4096]!331 ldrab x0, [x1, 4088]!332// CHECK-NEXT: ldrab x0, [x1, #4088]! // encoding: [0x20,0xfc,0xbf,0xf8]333// CHECK-REQ: error: instruction requires: pa334// CHECK-REQ-NEXT: ldrab x0, [x1, 4088]!335 ldrab x0, [x1, -4096]!336// CHECK-NEXT: ldrab x0, [x1, #-4096]! // encoding: [0x20,0x0c,0xe0,0xf8]337// CHECK-REQ: error: instruction requires: pa338// CHECK-REQ-NEXT: ldrab x0, [x1, -4096]!339 ldraa x0, [x1]340// CHECK-NEXT: ldraa x0, [x1] // encoding: [0x20,0x04,0x20,0xf8]341// CHECK-REQ: error: instruction requires: pa342// CHECK-REQ-NEXT: ldraa x0, [x1]343 ldrab x0, [x1]344// CHECK-NEXT: ldrab x0, [x1] // encoding: [0x20,0x04,0xa0,0xf8]345// CHECK-REQ: error: instruction requires: pa346// CHECK-REQ-NEXT: ldrab x0, [x1]347 ldraa x0, [x1]!348// CHECK-NEXT: ldraa x0, [x1, #0]! // encoding: [0x20,0x0c,0x20,0xf8]349// CHECK-REQ: error: instruction requires: pa350// CHECK-REQ-NEXT: ldraa x0, [x1]!351 ldrab x0, [x1]!352// CHECK-NEXT: ldrab x0, [x1, #0]! // encoding: [0x20,0x0c,0xa0,0xf8]353// CHECK-REQ: error: instruction requires: pa354// CHECK-REQ-NEXT: ldrab x0, [x1]!355 ldraa xzr, [sp, -4096]!356// CHECK-NEXT: ldraa xzr, [sp, #-4096]! // encoding: [0xff,0x0f,0x60,0xf8]357// CHECK-REQ: error: instruction requires: pa358// CHECK-REQ-NEXT: ldraa xzr, [sp, -4096]!359 ldrab xzr, [sp, -4096]!360// CHECK-NEXT: ldrab xzr, [sp, #-4096]! // encoding: [0xff,0x0f,0xe0,0xf8]361// CHECK-REQ: error: instruction requires: pa362// CHECK-REQ-NEXT: ldrab xzr, [sp, -4096]!363