Home | History | Annotate | Download | only in AArch64
      1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.3a < %s 2> %t | FileCheck %s
      2 // RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s 2> %t
      3 // RUN: FileCheck --check-prefix=CHECK-REQ %s < %t
      4 
      5   mrs x0, apiakeylo_el1
      6   mrs x0, apiakeyhi_el1
      7   mrs x0, apibkeylo_el1
      8   mrs x0, apibkeyhi_el1
      9   mrs x0, apdakeylo_el1
     10   mrs x0, apdakeyhi_el1
     11   mrs x0, apdbkeylo_el1
     12   mrs x0, apdbkeyhi_el1
     13   mrs x0, apgakeylo_el1
     14   mrs x0, apgakeyhi_el1
     15 
     16 // CHECK: mrs x0, APIAKeyLo_EL1     // encoding: [0x00,0x21,0x38,0xd5]
     17 // CHECK: mrs x0, APIAKeyHi_EL1     // encoding: [0x20,0x21,0x38,0xd5]
     18 // CHECK: mrs x0, APIBKeyLo_EL1     // encoding: [0x40,0x21,0x38,0xd5]
     19 // CHECK: mrs x0, APIBKeyHi_EL1     // encoding: [0x60,0x21,0x38,0xd5]
     20 // CHECK: mrs x0, APDAKeyLo_EL1     // encoding: [0x00,0x22,0x38,0xd5]
     21 // CHECK: mrs x0, APDAKeyHi_EL1     // encoding: [0x20,0x22,0x38,0xd5]
     22 // CHECK: mrs x0, APDBKeyLo_EL1     // encoding: [0x40,0x22,0x38,0xd5]
     23 // CHECK: mrs x0, APDBKeyHi_EL1     // encoding: [0x60,0x22,0x38,0xd5]
     24 // CHECK: mrs x0, APGAKeyLo_EL1     // encoding: [0x00,0x23,0x38,0xd5]
     25 // CHECK: mrs x0, APGAKeyHi_EL1     // encoding: [0x20,0x23,0x38,0xd5]
     26 
     27 // CHECK-REQ: error: expected readable system register
     28 // CHECK-REQ: error: expected readable system register
     29 // CHECK-REQ: error: expected readable system register
     30 // CHECK-REQ: error: expected readable system register
     31 // CHECK-REQ: error: expected readable system register
     32 // CHECK-REQ: error: expected readable system register
     33 // CHECK-REQ: error: expected readable system register
     34 // CHECK-REQ: error: expected readable system register
     35 // CHECK-REQ: error: expected readable system register
     36 // CHECK-REQ: error: expected readable system register
     37 
     38   msr apiakeylo_el1, x0
     39   msr apiakeyhi_el1, x0
     40   msr apibkeylo_el1, x0
     41   msr apibkeyhi_el1, x0
     42   msr apdakeylo_el1, x0
     43   msr apdakeyhi_el1, x0
     44   msr apdbkeylo_el1, x0
     45   msr apdbkeyhi_el1, x0
     46   msr apgakeylo_el1, x0
     47   msr apgakeyhi_el1, x0
     48 
     49 // CHECK: msr APIAKeyLo_EL1, x0     // encoding: [0x00,0x21,0x18,0xd5]
     50 // CHECK: msr APIAKeyHi_EL1, x0     // encoding: [0x20,0x21,0x18,0xd5]
     51 // CHECK: msr APIBKeyLo_EL1, x0     // encoding: [0x40,0x21,0x18,0xd5]
     52 // CHECK: msr APIBKeyHi_EL1, x0     // encoding: [0x60,0x21,0x18,0xd5]
     53 // CHECK: msr APDAKeyLo_EL1, x0     // encoding: [0x00,0x22,0x18,0xd5]
     54 // CHECK: msr APDAKeyHi_EL1, x0     // encoding: [0x20,0x22,0x18,0xd5]
     55 // CHECK: msr APDBKeyLo_EL1, x0     // encoding: [0x40,0x22,0x18,0xd5]
     56 // CHECK: msr APDBKeyHi_EL1, x0     // encoding: [0x60,0x22,0x18,0xd5]
     57 // CHECK: msr APGAKeyLo_EL1, x0     // encoding: [0x00,0x23,0x18,0xd5]
     58 // CHECK: msr APGAKeyHi_EL1, x0     // encoding: [0x20,0x23,0x18,0xd5]
     59 
     60 // CHECK-REQ: error: expected writable system register or pstate
     61 // CHECK-REQ: error: expected writable system register or pstate
     62 // CHECK-REQ: error: expected writable system register or pstate
     63 // CHECK-REQ: error: expected writable system register or pstate
     64 // CHECK-REQ: error: expected writable system register or pstate
     65 // CHECK-REQ: error: expected writable system register or pstate
     66 // CHECK-REQ: error: expected writable system register or pstate
     67 // CHECK-REQ: error: expected writable system register or pstate
     68 // CHECK-REQ: error: expected writable system register or pstate
     69 // CHECK-REQ: error: expected writable system register or pstate
     70 
     71   paciasp
     72 // CHECK: paciasp        // encoding: [0x3f,0x23,0x03,0xd5]
     73 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     74   autiasp
     75 // CHECK: autiasp        // encoding: [0xbf,0x23,0x03,0xd5]
     76 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     77   paciaz
     78 // CHECK: paciaz         // encoding: [0x1f,0x23,0x03,0xd5]
     79 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     80   autiaz
     81 // CHECK: autiaz         // encoding: [0x9f,0x23,0x03,0xd5]
     82 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     83   pacia1716
     84 // CHECK: pacia1716      // encoding: [0x1f,0x21,0x03,0xd5]
     85 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     86   autia1716
     87 // CHECK: autia1716      // encoding: [0x9f,0x21,0x03,0xd5]
     88 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     89   pacibsp
     90 // CHECK: pacibsp        // encoding: [0x7f,0x23,0x03,0xd5]
     91 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     92   autibsp
     93 // CHECK: autibsp        // encoding: [0xff,0x23,0x03,0xd5]
     94 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     95   pacibz
     96 // CHECK: pacibz         // encoding: [0x5f,0x23,0x03,0xd5]
     97 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
     98   autibz
     99 // CHECK: autibz         // encoding: [0xdf,0x23,0x03,0xd5]
    100 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
    101   pacib1716
    102 // CHECK: pacib1716      // encoding: [0x5f,0x21,0x03,0xd5]
    103 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
    104   autib1716
    105 // CHECK: autib1716      // encoding: [0xdf,0x21,0x03,0xd5]
    106 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
    107   xpaclri
    108 // CHECK: xpaclri           // encoding: [0xff,0x20,0x03,0xd5]
    109 // CHECK-REQ-NOT: error: instruction requires: armv8.3a
    110 
    111   pacia x0, x1
    112 // CHECK: pacia x0, x1     // encoding: [0x20,0x00,0xc1,0xda]
    113 // CHECK-REQ: error: instruction requires: armv8.3a
    114   autia x0, x1
    115 // CHECK: autia x0, x1     // encoding: [0x20,0x10,0xc1,0xda]
    116 // CHECK-REQ: error: instruction requires: armv8.3a
    117   pacda x0, x1
    118 // CHECK: pacda x0, x1     // encoding: [0x20,0x08,0xc1,0xda]
    119 // CHECK-REQ: error: instruction requires: armv8.3a
    120   autda x0, x1
    121 // CHECK: autda x0, x1     // encoding: [0x20,0x18,0xc1,0xda]
    122 // CHECK-REQ: error: instruction requires: armv8.3a
    123   pacib x0, x1
    124 // CHECK: pacib x0, x1     // encoding: [0x20,0x04,0xc1,0xda]
    125 // CHECK-REQ: error: instruction requires: armv8.3a
    126   autib x0, x1
    127 // CHECK: autib x0, x1     // encoding: [0x20,0x14,0xc1,0xda]
    128 // CHECK-REQ: error: instruction requires: armv8.3a
    129   pacdb x0, x1
    130 // CHECK: pacdb x0, x1     // encoding: [0x20,0x0c,0xc1,0xda]
    131 // CHECK-REQ: error: instruction requires: armv8.3a
    132   autdb x0, x1
    133 // CHECK: autdb x0, x1     // encoding: [0x20,0x1c,0xc1,0xda]
    134 // CHECK-REQ: error: instruction requires: armv8.3a
    135   pacga x0, x1, x2
    136 // CHECK: pacga x0, x1, x2  // encoding: [0x20,0x30,0xc2,0x9a]
    137 // CHECK-REQ: error: instruction requires: armv8.3a
    138   paciza x0
    139 // CHECK: paciza x0         // encoding: [0xe0,0x23,0xc1,0xda]
    140 // CHECK-REQ: error: instruction requires: armv8.3a
    141   autiza x0
    142 // CHECK: autiza x0         // encoding: [0xe0,0x33,0xc1,0xda]
    143 // CHECK-REQ: error: instruction requires: armv8.3a
    144   pacdza x0
    145 // CHECK: pacdza x0         // encoding: [0xe0,0x2b,0xc1,0xda]
    146 // CHECK-REQ: error: instruction requires: armv8.3a
    147   autdza x0
    148 // CHECK: autdza x0         // encoding: [0xe0,0x3b,0xc1,0xda]
    149 // CHECK-REQ: error: instruction requires: armv8.3a
    150   pacizb x0
    151 // CHECK: pacizb x0         // encoding: [0xe0,0x27,0xc1,0xda]
    152 // CHECK-REQ: error: instruction requires: armv8.3a
    153   autizb x0
    154 // CHECK: autizb x0         // encoding: [0xe0,0x37,0xc1,0xda]
    155 // CHECK-REQ: error: instruction requires: armv8.3a
    156   pacdzb x0
    157 // CHECK: pacdzb x0         // encoding: [0xe0,0x2f,0xc1,0xda]
    158 // CHECK-REQ: error: instruction requires: armv8.3a
    159   autdzb x0
    160 // CHECK: autdzb x0         // encoding: [0xe0,0x3f,0xc1,0xda]
    161 // CHECK-REQ: error: instruction requires: armv8.3a
    162   xpaci x0
    163 // CHECK: xpaci x0          // encoding: [0xe0,0x43,0xc1,0xda]
    164 // CHECK-REQ: error: instruction requires: armv8.3a
    165   xpacd x0
    166 // CHECK: xpacd x0          // encoding: [0xe0,0x47,0xc1,0xda]
    167 // CHECK-REQ: error: instruction requires: armv8.3a
    168 
    169   braa x0, x1
    170 // CHECK: braa x0, x1       // encoding: [0x01,0x08,0x1f,0xd7]
    171 // CHECK-REQ: error: instruction requires: armv8.3a
    172   brab x0, x1
    173 // CHECK: brab x0, x1       // encoding: [0x01,0x0c,0x1f,0xd7]
    174 // CHECK-REQ: error: instruction requires: armv8.3a
    175   blraa x0, x1
    176 // CHECK: blraa x0, x1      // encoding: [0x01,0x08,0x3f,0xd7]
    177 // CHECK-REQ: error: instruction requires: armv8.3a
    178   blrab x0, x1
    179 // CHECK: blrab x0, x1      // encoding: [0x01,0x0c,0x3f,0xd7]
    180 // CHECK-REQ: error: instruction requires: armv8.3a
    181 
    182   braaz x0
    183 // CHECK: braaz x0          // encoding: [0x1f,0x08,0x1f,0xd6]
    184 // CHECK-REQ: error: instruction requires: armv8.3a
    185   brabz x0
    186 // CHECK: brabz x0          // encoding: [0x1f,0x0c,0x1f,0xd6]
    187 // CHECK-REQ: error: instruction requires: armv8.3a
    188   blraaz x0
    189 // CHECK: blraaz x0         // encoding: [0x1f,0x08,0x3f,0xd6]
    190 // CHECK-REQ: error: instruction requires: armv8.3a
    191   blrabz x0
    192 // CHECK: blrabz x0         // encoding: [0x1f,0x0c,0x3f,0xd6]
    193 // CHECK-REQ: error: instruction requires: armv8.3a
    194   retaa
    195 // CHECK: retaa             // encoding: [0xff,0x0b,0x5f,0xd6]
    196 // CHECK-REQ: error: instruction requires: armv8.3a
    197   retab
    198 // CHECK: retab             // encoding: [0xff,0x0f,0x5f,0xd6]
    199 // CHECK-REQ: error: instruction requires: armv8.3a
    200   eretaa
    201 // CHECK: eretaa            // encoding: [0xff,0x0b,0x9f,0xd6]
    202 // CHECK-REQ: error: instruction requires: armv8.3a
    203   eretab
    204 // CHECK: eretab            // encoding: [0xff,0x0f,0x9f,0xd6]
    205 // CHECK-REQ: error: instruction requires: armv8.3a
    206   ldraa x0, [x1, 4088]
    207 // CHECK: ldraa x0, [x1, #4088]  // encoding: [0x20,0xf4,0x3f,0xf8]
    208 // CHECK-REQ: error: instruction requires: armv8.3a
    209   ldraa x0, [x1, -4096]
    210 // CHECK: ldraa x0, [x1, #-4096] // encoding: [0x20,0x04,0x60,0xf8]
    211 // CHECK-REQ: error: instruction requires: armv8.3a
    212   ldrab x0, [x1, 4088]
    213 // CHECK: ldrab x0, [x1, #4088]  // encoding: [0x20,0xf4,0xbf,0xf8]
    214 // CHECK-REQ: error: instruction requires: armv8.3a
    215   ldrab x0, [x1, -4096]
    216 // CHECK: ldrab x0, [x1, #-4096] // encoding: [0x20,0x04,0xe0,0xf8]
    217 // CHECK-REQ: error: instruction requires: armv8.3a
    218   ldraa x0, [x1, 4088]!
    219 // CHECK: ldraa x0, [x1, #4088]!  // encoding: [0x20,0xfc,0x3f,0xf8]
    220 // CHECK-REQ: error: instruction requires: armv8.3a
    221   ldraa x0, [x1, -4096]!
    222 // CHECK: ldraa x0, [x1, #-4096]! // encoding: [0x20,0x0c,0x60,0xf8]
    223 // CHECK-REQ: error: instruction requires: armv8.3a
    224   ldrab x0, [x1, 4088]!
    225 // CHECK: ldrab x0, [x1, #4088]!  // encoding: [0x20,0xfc,0xbf,0xf8]
    226 // CHECK-REQ: error: instruction requires: armv8.3a
    227   ldrab x0, [x1, -4096]!
    228 // CHECK: ldrab x0, [x1, #-4096]! // encoding: [0x20,0x0c,0xe0,0xf8]
    229 // CHECK-REQ: error: instruction requires: armv8.3a
    230   ldraa x0, [x1]
    231 // CHECK: ldraa x0, [x1]  // encoding: [0x20,0x04,0x20,0xf8]
    232 // CHECK-REQ: error: instruction requires: armv8.3a
    233   ldrab x0, [x1]
    234 // CHECK: ldrab x0, [x1]  // encoding: [0x20,0x04,0xa0,0xf8]
    235 // CHECK-REQ: error: instruction requires: armv8.3a
    236