311 lines · plain
1// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a -o - %s | FileCheck %s2// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-v8.4a,+rcpc-immo -o - %s 2>&1 | FileCheck %s3// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a,-rcpc-immo -o - %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V844// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-v8.4a -o - %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V845// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -o - %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V846 7//------------------------------------------------------------------------------8// Armv8.4-A LDAPR and STLR instructions with immediate offsets9//------------------------------------------------------------------------------10 11STLURB WZR, [X10]12STLURB W1, [X10]13STLURB W1, [X10, #-256]14stlurb w2, [x11, #255]15STLURB W3, [SP, #-3]16 17//CHECK: stlurb w1, [x10] // encoding: [0x41,0x01,0x00,0x19]18//CHECK-NEXT: stlurb w1, [x10, #-256] // encoding: [0x41,0x01,0x10,0x19]19//CHECK-NEXT: stlurb w2, [x11, #255] // encoding: [0x62,0xf1,0x0f,0x19]20//CHECK-NEXT: stlurb w3, [sp, #-3] // encoding: [0xe3,0xd3,0x1f,0x19]21 22ldapurb wzr, [x12]23ldapurb w4, [x12]24ldapurb w4, [x12, #-256]25LDAPURB W5, [X13, #255]26LDAPURB W6, [SP, #-2]27 28//CHECK: ldapurb wzr, [x12] // encoding: [0x9f,0x01,0x40,0x19]29//CHECK-NEXT: ldapurb w4, [x12] // encoding: [0x84,0x01,0x40,0x19]30//CHECK-NEXT: ldapurb w4, [x12, #-256] // encoding: [0x84,0x01,0x50,0x19]31//CHECK-NEXT: ldapurb w5, [x13, #255] // encoding: [0xa5,0xf1,0x4f,0x19]32//CHECK-NEXT: ldapurb w6, [sp, #-2] // encoding: [0xe6,0xe3,0x5f,0x19]33 34LDAPURSB W7, [X14]35LDAPURSB W7, [X14, #-256]36ldapursb w8, [x15, #255]37ldapursb w9, [sp, #-1]38 39//CHECK: ldapursb w7, [x14] // encoding: [0xc7,0x01,0xc0,0x19]40//CHECK-NEXT: ldapursb w7, [x14, #-256] // encoding: [0xc7,0x01,0xd0,0x19]41//CHECK-NEXT: ldapursb w8, [x15, #255] // encoding: [0xe8,0xf1,0xcf,0x19]42//CHECK-NEXT: ldapursb w9, [sp, #-1] // encoding: [0xe9,0xf3,0xdf,0x19]43 44LDAPURSB X0, [X16]45LDAPURSB X0, [X16, #-256]46LDAPURSB X1, [X17, #255]47ldapursb x2, [sp, #0]48ldapursb x2, [sp]49 50//CHECK: ldapursb x0, [x16] // encoding: [0x00,0x02,0x80,0x19]51//CHECK-NEXT: ldapursb x0, [x16, #-256] // encoding: [0x00,0x02,0x90,0x19]52//CHECK-NEXT: ldapursb x1, [x17, #255] // encoding: [0x21,0xf2,0x8f,0x19]53//CHECK-NEXT: ldapursb x2, [sp] // encoding: [0xe2,0x03,0x80,0x19]54//CHECK-NEXT: ldapursb x2, [sp] // encoding: [0xe2,0x03,0x80,0x19]55 56stlurh w10, [x18]57stlurh w10, [x18, #-256]58STLURH W11, [X19, #255]59STLURH W12, [SP, #1]60 61//CHECK: stlurh w10, [x18] // encoding: [0x4a,0x02,0x00,0x59]62//CHECK-NEXT: stlurh w10, [x18, #-256] // encoding: [0x4a,0x02,0x10,0x59]63//CHECK-NEXT: stlurh w11, [x19, #255] // encoding: [0x6b,0xf2,0x0f,0x59]64//CHECK-NEXT: stlurh w12, [sp, #1] // encoding: [0xec,0x13,0x00,0x59]65 66LDAPURH W13, [X20]67LDAPURH W13, [X20, #-256]68ldapurh w14, [x21, #255]69LDAPURH W15, [SP, #2]70 71//CHECK: ldapurh w13, [x20] // encoding: [0x8d,0x02,0x40,0x59]72//CHECK-NEXT: ldapurh w13, [x20, #-256] // encoding: [0x8d,0x02,0x50,0x59]73//CHECK-NEXT: ldapurh w14, [x21, #255] // encoding: [0xae,0xf2,0x4f,0x59]74//CHECK-NEXT: ldapurh w15, [sp, #2] // encoding: [0xef,0x23,0x40,0x59]75 76LDAPURSH W16, [X22]77LDAPURSH W16, [X22, #-256]78LDAPURSH W17, [X23, #255]79ldapursh w18, [sp, #3]80 81//CHECK: ldapursh w16, [x22] // encoding: [0xd0,0x02,0xc0,0x59]82//CHECK-NEXT: ldapursh w16, [x22, #-256] // encoding: [0xd0,0x02,0xd0,0x59]83//CHECK-NEXT: ldapursh w17, [x23, #255] // encoding: [0xf1,0xf2,0xcf,0x59]84//CHECK-NEXT: ldapursh w18, [sp, #3] // encoding: [0xf2,0x33,0xc0,0x59]85 86ldapursh x3, [x24]87ldapursh x3, [x24, #-256]88LDAPURSH X4, [X25, #255]89LDAPURSH X5, [SP, #4]90 91//CHECK: ldapursh x3, [x24] // encoding: [0x03,0x03,0x80,0x59]92//CHECK-NEXT: ldapursh x3, [x24, #-256] // encoding: [0x03,0x03,0x90,0x59]93//CHECK-NEXT: ldapursh x4, [x25, #255] // encoding: [0x24,0xf3,0x8f,0x59]94//CHECK-NEXT: ldapursh x5, [sp, #4] // encoding: [0xe5,0x43,0x80,0x59]95 96STLUR W19, [X26]97STLUR W19, [X26, #-256]98stlur w20, [x27, #255]99STLUR W21, [SP, #5]100 101//CHECK: stlur w19, [x26] // encoding: [0x53,0x03,0x00,0x99]102//CHECK-NEXT: stlur w19, [x26, #-256] // encoding: [0x53,0x03,0x10,0x99]103//CHECK-NEXT: stlur w20, [x27, #255] // encoding: [0x74,0xf3,0x0f,0x99]104//CHECK-NEXT: stlur w21, [sp, #5] // encoding: [0xf5,0x53,0x00,0x99]105 106LDAPUR W22, [X28]107LDAPUR W22, [X28, #-256]108LDAPUR W23, [X29, #255]109ldapur w24, [sp, #6]110 111//CHECK: ldapur w22, [x28] // encoding: [0x96,0x03,0x40,0x99]112//CHECK-NEXT: ldapur w22, [x28, #-256] // encoding: [0x96,0x03,0x50,0x99]113//CHECK-NEXT: ldapur w23, [x29, #255] // encoding: [0xb7,0xf3,0x4f,0x99]114//CHECK-NEXT: ldapur w24, [sp, #6] // encoding: [0xf8,0x63,0x40,0x99]115 116ldapursw x6, [x30]117ldapursw x6, [x30, #-256]118LDAPURSW X7, [X0, #255]119LDAPURSW X8, [SP, #7]120 121//CHECK: ldapursw x6, [x30] // encoding: [0xc6,0x03,0x80,0x99]122//CHECK-NEXT: ldapursw x6, [x30, #-256] // encoding: [0xc6,0x03,0x90,0x99]123//CHECK-NEXT: ldapursw x7, [x0, #255] // encoding: [0x07,0xf0,0x8f,0x99]124//CHECK-NEXT: ldapursw x8, [sp, #7] // encoding: [0xe8,0x73,0x80,0x99]125 126STLUR X9, [X1]127STLUR X9, [X1, #-256]128stlur x10, [x2, #255]129STLUR X11, [SP, #8]130 131//CHECK: stlur x9, [x1] // encoding: [0x29,0x00,0x00,0xd9]132//CHECK-NEXT: stlur x9, [x1, #-256] // encoding: [0x29,0x00,0x10,0xd9]133//CHECK-NEXT: stlur x10, [x2, #255] // encoding: [0x4a,0xf0,0x0f,0xd9]134//CHECK-NEXT: stlur x11, [sp, #8] // encoding: [0xeb,0x83,0x00,0xd9]135 136LDAPUR X12, [X3]137LDAPUR X12, [X3, #-256]138LDAPUR X13, [X4, #255]139ldapur x14, [sp, #9]140 141//CHECK: ldapur x12, [x3] // encoding: [0x6c,0x00,0x40,0xd9]142//CHECK-NEXT: ldapur x12, [x3, #-256] // encoding: [0x6c,0x00,0x50,0xd9]143//CHECK-NEXT: ldapur x13, [x4, #255] // encoding: [0x8d,0xf0,0x4f,0xd9]144//CHECK-NEXT: ldapur x14, [sp, #9] // encoding: [0xee,0x93,0x40,0xd9]145 146//CHECK-NO-V84: error: instruction requires: rcpc-immo147//CHECK-NO-V84-NEXT: STLURB WZR, [X10]148//CHECK-NO-V84-NEXT: ^149//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo150//CHECK-NO-V84-NEXT: STLURB W1, [X10]151//CHECK-NO-V84-NEXT: ^152//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo153//CHECK-NO-V84-NEXT: STLURB W1, [X10, #-256]154//CHECK-NO-V84-NEXT: ^155//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo156//CHECK-NO-V84-NEXT: stlurb w2, [x11, #255]157//CHECK-NO-V84-NEXT: ^158//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo159//CHECK-NO-V84-NEXT: STLURB W3, [SP, #-3]160//CHECK-NO-V84-NEXT: ^161//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo162//CHECK-NO-V84-NEXT: ldapurb wzr, [x12]163//CHECK-NO-V84-NEXT: ^164//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo165//CHECK-NO-V84-NEXT: ldapurb w4, [x12]166//CHECK-NO-V84-NEXT: ^167//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo168//CHECK-NO-V84-NEXT: ldapurb w4, [x12, #-256]169//CHECK-NO-V84-NEXT: ^170//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo171//CHECK-NO-V84-NEXT: LDAPURB W5, [X13, #255]172//CHECK-NO-V84-NEXT: ^173//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo174//CHECK-NO-V84-NEXT: LDAPURB W6, [SP, #-2]175//CHECK-NO-V84-NEXT: ^176//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo177//CHECK-NO-V84-NEXT: LDAPURSB W7, [X14]178//CHECK-NO-V84-NEXT: ^179//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo180//CHECK-NO-V84-NEXT: LDAPURSB W7, [X14, #-256]181//CHECK-NO-V84-NEXT: ^182//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo183//CHECK-NO-V84-NEXT: ldapursb w8, [x15, #255]184//CHECK-NO-V84-NEXT: ^185//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo186//CHECK-NO-V84-NEXT: ldapursb w9, [sp, #-1]187//CHECK-NO-V84-NEXT: ^188//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo189//CHECK-NO-V84-NEXT: LDAPURSB X0, [X16]190//CHECK-NO-V84-NEXT: ^191//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo192//CHECK-NO-V84-NEXT: LDAPURSB X0, [X16, #-256]193//CHECK-NO-V84-NEXT: ^194//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo195//CHECK-NO-V84-NEXT: LDAPURSB X1, [X17, #255]196//CHECK-NO-V84-NEXT: ^197//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo198//CHECK-NO-V84-NEXT: ldapursb x2, [sp, #0]199//CHECK-NO-V84-NEXT: ^200//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo201//CHECK-NO-V84-NEXT: ldapursb x2, [sp]202//CHECK-NO-V84-NEXT: ^203//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo204//CHECK-NO-V84-NEXT: stlurh w10, [x18]205//CHECK-NO-V84-NEXT: ^206//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo207//CHECK-NO-V84-NEXT: stlurh w10, [x18, #-256]208//CHECK-NO-V84-NEXT: ^209//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo210//CHECK-NO-V84-NEXT: STLURH W11, [X19, #255]211//CHECK-NO-V84-NEXT: ^212//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo213//CHECK-NO-V84-NEXT: STLURH W12, [SP, #1]214//CHECK-NO-V84-NEXT: ^215//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo216//CHECK-NO-V84-NEXT: LDAPURH W13, [X20]217//CHECK-NO-V84-NEXT: ^218//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo219//CHECK-NO-V84-NEXT: LDAPURH W13, [X20, #-256]220//CHECK-NO-V84-NEXT: ^221//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo222//CHECK-NO-V84-NEXT: ldapurh w14, [x21, #255]223//CHECK-NO-V84-NEXT: ^224//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo225//CHECK-NO-V84-NEXT: LDAPURH W15, [SP, #2]226//CHECK-NO-V84-NEXT: ^227//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo228//CHECK-NO-V84-NEXT: LDAPURSH W16, [X22]229//CHECK-NO-V84-NEXT: ^230//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo231//CHECK-NO-V84-NEXT: LDAPURSH W16, [X22, #-256]232//CHECK-NO-V84-NEXT: ^233//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo234//CHECK-NO-V84-NEXT: LDAPURSH W17, [X23, #255]235//CHECK-NO-V84-NEXT: ^236//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo237//CHECK-NO-V84-NEXT: ldapursh w18, [sp, #3]238//CHECK-NO-V84-NEXT: ^239//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo240//CHECK-NO-V84-NEXT: ldapursh x3, [x24]241//CHECK-NO-V84-NEXT: ^242//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo243//CHECK-NO-V84-NEXT: ldapursh x3, [x24, #-256]244//CHECK-NO-V84-NEXT: ^245//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo246//CHECK-NO-V84-NEXT: LDAPURSH X4, [X25, #255]247//CHECK-NO-V84-NEXT: ^248//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo249//CHECK-NO-V84-NEXT: LDAPURSH X5, [SP, #4]250//CHECK-NO-V84-NEXT: ^251//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo252//CHECK-NO-V84-NEXT: STLUR W19, [X26]253//CHECK-NO-V84-NEXT: ^254//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo255//CHECK-NO-V84-NEXT: STLUR W19, [X26, #-256]256//CHECK-NO-V84-NEXT: ^257//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo258//CHECK-NO-V84-NEXT: stlur w20, [x27, #255]259//CHECK-NO-V84-NEXT: ^260//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo261//CHECK-NO-V84-NEXT: STLUR W21, [SP, #5]262//CHECK-NO-V84-NEXT: ^263//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo264//CHECK-NO-V84-NEXT: LDAPUR W22, [X28]265//CHECK-NO-V84-NEXT: ^266//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo267//CHECK-NO-V84-NEXT: LDAPUR W22, [X28, #-256]268//CHECK-NO-V84-NEXT: ^269//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo270//CHECK-NO-V84-NEXT: LDAPUR W23, [X29, #255]271//CHECK-NO-V84-NEXT: ^272//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo273//CHECK-NO-V84-NEXT: ldapur w24, [sp, #6]274//CHECK-NO-V84-NEXT: ^275//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo276//CHECK-NO-V84-NEXT: ldapursw x6, [x30]277//CHECK-NO-V84-NEXT: ^278//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo279//CHECK-NO-V84-NEXT: ldapursw x6, [x30, #-256]280//CHECK-NO-V84-NEXT: ^281//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo282//CHECK-NO-V84-NEXT: LDAPURSW X7, [X0, #255]283//CHECK-NO-V84-NEXT: ^284//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo285//CHECK-NO-V84-NEXT: LDAPURSW X8, [SP, #7]286//CHECK-NO-V84-NEXT: ^287//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo288//CHECK-NO-V84-NEXT: STLUR X9, [X1]289//CHECK-NO-V84-NEXT: ^290//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo291//CHECK-NO-V84-NEXT: STLUR X9, [X1, #-256]292//CHECK-NO-V84-NEXT: ^293//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo294//CHECK-NO-V84-NEXT: stlur x10, [x2, #255]295//CHECK-NO-V84-NEXT: ^296//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo297//CHECK-NO-V84-NEXT: STLUR X11, [SP, #8]298//CHECK-NO-V84-NEXT: ^299//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo300//CHECK-NO-V84-NEXT: LDAPUR X12, [X3]301//CHECK-NO-V84-NEXT: ^302//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo303//CHECK-NO-V84-NEXT: LDAPUR X12, [X3, #-256]304//CHECK-NO-V84-NEXT: ^305//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo306//CHECK-NO-V84-NEXT: LDAPUR X13, [X4, #255]307//CHECK-NO-V84-NEXT: ^308//CHECK-NO-V84-NEXT: error: instruction requires: rcpc-immo309//CHECK-NO-V84-NEXT: ldapur x14, [sp, #9]310//CHECK-NO-V84-NEXT: ^311