Home | History | Annotate | Download | only in AArch64
      1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon,+fullfp16 -show-encoding < %s | FileCheck %s
      2 
      3 // Check that the assembler can handle the documented syntax for AArch64
      4 
      5 //------------------------------------------------------------------------------
      6 // Vector shift right by immediate
      7 //------------------------------------------------------------------------------
      8          sshr v0.8b, v1.8b, #3
      9          sshr v0.4h, v1.4h, #3
     10          sshr v0.2s, v1.2s, #3
     11          sshr v0.16b, v1.16b, #3
     12          sshr v0.8h, v1.8h, #3
     13          sshr v0.4s, v1.4s, #3
     14          sshr v0.2d, v1.2d, #3
     15 // CHECK:	sshr	v0.8b, v1.8b, #3        // encoding: [0x20,0x04,0x0d,0x0f]
     16 // CHECK:	sshr	v0.4h, v1.4h, #3        // encoding: [0x20,0x04,0x1d,0x0f]
     17 // CHECK:	sshr	v0.2s, v1.2s, #3        // encoding: [0x20,0x04,0x3d,0x0f]
     18 // CHECK:	sshr	v0.16b, v1.16b, #3      // encoding: [0x20,0x04,0x0d,0x4f]
     19 // CHECK:	sshr	v0.8h, v1.8h, #3        // encoding: [0x20,0x04,0x1d,0x4f]
     20 // CHECK:	sshr	v0.4s, v1.4s, #3        // encoding: [0x20,0x04,0x3d,0x4f]
     21 // CHECK:	sshr	v0.2d, v1.2d, #3        // encoding: [0x20,0x04,0x7d,0x4f]
     22 
     23 //------------------------------------------------------------------------------
     24 // Vector  shift right by immediate
     25 //------------------------------------------------------------------------------
     26          ushr v0.8b, v1.8b, #3
     27          ushr v0.4h, v1.4h, #3
     28          ushr v0.2s, v1.2s, #3
     29          ushr v0.16b, v1.16b, #3
     30          ushr v0.8h, v1.8h, #3
     31          ushr v0.4s, v1.4s, #3
     32          ushr v0.2d, v1.2d, #3
     33 
     34 // CHECK: 	ushr	v0.8b, v1.8b, #3        // encoding: [0x20,0x04,0x0d,0x2f]
     35 // CHECK: 	ushr	v0.4h, v1.4h, #3        // encoding: [0x20,0x04,0x1d,0x2f]
     36 // CHECK:	ushr	v0.2s, v1.2s, #3        // encoding: [0x20,0x04,0x3d,0x2f]
     37 // CHECK:	ushr	v0.16b, v1.16b, #3      // encoding: [0x20,0x04,0x0d,0x6f]
     38 // CHECK:	ushr	v0.8h, v1.8h, #3        // encoding: [0x20,0x04,0x1d,0x6f]
     39 // CHECK:	ushr	v0.4s, v1.4s, #3        // encoding: [0x20,0x04,0x3d,0x6f]
     40 // CHECK:	ushr	v0.2d, v1.2d, #3        // encoding: [0x20,0x04,0x7d,0x6f]
     41 
     42 //------------------------------------------------------------------------------
     43 // Vector shift right and accumulate by immediate
     44 //------------------------------------------------------------------------------
     45          ssra v0.8b, v1.8b, #3
     46          ssra v0.4h, v1.4h, #3
     47          ssra v0.2s, v1.2s, #3
     48          ssra v0.16b, v1.16b, #3
     49          ssra v0.8h, v1.8h, #3
     50          ssra v0.4s, v1.4s, #3
     51          ssra v0.2d, v1.2d, #3
     52 
     53 // CHECK:	ssra	v0.8b, v1.8b, #3        // encoding: [0x20,0x14,0x0d,0x0f]
     54 // CHECK:	ssra	v0.4h, v1.4h, #3        // encoding: [0x20,0x14,0x1d,0x0f]
     55 // CHECK:	ssra	v0.2s, v1.2s, #3        // encoding: [0x20,0x14,0x3d,0x0f]
     56 // CHECK:	ssra	v0.16b, v1.16b, #3      // encoding: [0x20,0x14,0x0d,0x4f]
     57 // CHECK:	ssra	v0.8h, v1.8h, #3        // encoding: [0x20,0x14,0x1d,0x4f]
     58 // CHECK:	ssra	v0.4s, v1.4s, #3        // encoding: [0x20,0x14,0x3d,0x4f]
     59 // CHECK:	ssra	v0.2d, v1.2d, #3        // encoding: [0x20,0x14,0x7d,0x4f]
     60 
     61 //------------------------------------------------------------------------------
     62 // Vector  shift right and accumulate by immediate
     63 //------------------------------------------------------------------------------
     64          usra v0.8b, v1.8b, #3
     65          usra v0.4h, v1.4h, #3
     66          usra v0.2s, v1.2s, #3
     67          usra v0.16b, v1.16b, #3
     68          usra v0.8h, v1.8h, #3
     69          usra v0.4s, v1.4s, #3
     70          usra v0.2d, v1.2d, #3
     71 
     72 // CHECK:	usra	v0.8b, v1.8b, #3        // encoding: [0x20,0x14,0x0d,0x2f]
     73 // CHECK:	usra	v0.4h, v1.4h, #3        // encoding: [0x20,0x14,0x1d,0x2f]
     74 // CHECK:	usra	v0.2s, v1.2s, #3        // encoding: [0x20,0x14,0x3d,0x2f]
     75 // CHECK:	usra	v0.16b, v1.16b, #3      // encoding: [0x20,0x14,0x0d,0x6f]
     76 // CHECK:	usra	v0.8h, v1.8h, #3        // encoding: [0x20,0x14,0x1d,0x6f]
     77 // CHECK:	usra	v0.4s, v1.4s, #3        // encoding: [0x20,0x14,0x3d,0x6f]
     78 // CHECK:	usra	v0.2d, v1.2d, #3        // encoding: [0x20,0x14,0x7d,0x6f]
     79 
     80 //------------------------------------------------------------------------------
     81 // Vector rounding shift right by immediate
     82 //------------------------------------------------------------------------------
     83          srshr v0.8b, v1.8b, #3
     84          srshr v0.4h, v1.4h, #3
     85          srshr v0.2s, v1.2s, #3
     86          srshr v0.16b, v1.16b, #3
     87          srshr v0.8h, v1.8h, #3
     88          srshr v0.4s, v1.4s, #3
     89          srshr v0.2d, v1.2d, #3
     90 
     91 // CHECK:	srshr	v0.8b, v1.8b, #3        // encoding: [0x20,0x24,0x0d,0x0f]
     92 // CHECK:	srshr	v0.4h, v1.4h, #3        // encoding: [0x20,0x24,0x1d,0x0f]
     93 // CHECK:	srshr	v0.2s, v1.2s, #3        // encoding: [0x20,0x24,0x3d,0x0f]
     94 // CHECK:	srshr	v0.16b, v1.16b, #3      // encoding: [0x20,0x24,0x0d,0x4f]
     95 // CHECK:	srshr	v0.8h, v1.8h, #3        // encoding: [0x20,0x24,0x1d,0x4f]
     96 // CHECK:	srshr	v0.4s, v1.4s, #3        // encoding: [0x20,0x24,0x3d,0x4f]
     97 // CHECK:	srshr	v0.2d, v1.2d, #3        // encoding: [0x20,0x24,0x7d,0x4f]
     98 
     99 
    100 //------------------------------------------------------------------------------
    101 // Vecotr rounding shift right by immediate
    102 //------------------------------------------------------------------------------
    103          urshr v0.8b, v1.8b, #3
    104          urshr v0.4h, v1.4h, #3
    105          urshr v0.2s, v1.2s, #3
    106          urshr v0.16b, v1.16b, #3
    107          urshr v0.8h, v1.8h, #3
    108          urshr v0.4s, v1.4s, #3
    109          urshr v0.2d, v1.2d, #3
    110 
    111 // CHECK:	urshr	v0.8b, v1.8b, #3        // encoding: [0x20,0x24,0x0d,0x2f]
    112 // CHECK:	urshr	v0.4h, v1.4h, #3        // encoding: [0x20,0x24,0x1d,0x2f]
    113 // CHECK:	urshr	v0.2s, v1.2s, #3        // encoding: [0x20,0x24,0x3d,0x2f]
    114 // CHECK:	urshr	v0.16b, v1.16b, #3      // encoding: [0x20,0x24,0x0d,0x6f]
    115 // CHECK:	urshr	v0.8h, v1.8h, #3        // encoding: [0x20,0x24,0x1d,0x6f]
    116 // CHECK:	urshr	v0.4s, v1.4s, #3        // encoding: [0x20,0x24,0x3d,0x6f]
    117 // CHECK:	urshr	v0.2d, v1.2d, #3        // encoding: [0x20,0x24,0x7d,0x6f]
    118 
    119 
    120 //------------------------------------------------------------------------------
    121 // Vector rounding shift right and accumulate by immediate
    122 //------------------------------------------------------------------------------
    123          srsra v0.8b, v1.8b, #3
    124          srsra v0.4h, v1.4h, #3
    125          srsra v0.2s, v1.2s, #3
    126          srsra v0.16b, v1.16b, #3
    127          srsra v0.8h, v1.8h, #3
    128          srsra v0.4s, v1.4s, #3
    129          srsra v0.2d, v1.2d, #3
    130 
    131 // CHECK:	srsra	v0.8b, v1.8b, #3        // encoding: [0x20,0x34,0x0d,0x0f]
    132 // CHECK:	srsra	v0.4h, v1.4h, #3        // encoding: [0x20,0x34,0x1d,0x0f]
    133 // CHECK:	srsra	v0.2s, v1.2s, #3        // encoding: [0x20,0x34,0x3d,0x0f]
    134 // CHECK:	srsra	v0.16b, v1.16b, #3      // encoding: [0x20,0x34,0x0d,0x4f]
    135 // CHECK:	srsra	v0.8h, v1.8h, #3        // encoding: [0x20,0x34,0x1d,0x4f]
    136 // CHECK:	srsra	v0.4s, v1.4s, #3        // encoding: [0x20,0x34,0x3d,0x4f]
    137 // CHECK:	srsra	v0.2d, v1.2d, #3        // encoding: [0x20,0x34,0x7d,0x4f]
    138 
    139 
    140 //------------------------------------------------------------------------------
    141 // Vector rounding shift right and accumulate by immediate
    142 //------------------------------------------------------------------------------
    143          ursra v0.8b, v1.8b, #3
    144          ursra v0.4h, v1.4h, #3
    145          ursra v0.2s, v1.2s, #3
    146          ursra v0.16b, v1.16b, #3
    147          ursra v0.8h, v1.8h, #3
    148          ursra v0.4s, v1.4s, #3
    149          ursra v0.2d, v1.2d, #3
    150 
    151 // CHECK:	ursra	v0.8b, v1.8b, #3        // encoding: [0x20,0x34,0x0d,0x2f]
    152 // CHECK:	ursra	v0.4h, v1.4h, #3        // encoding: [0x20,0x34,0x1d,0x2f]
    153 // CHECK:	ursra	v0.2s, v1.2s, #3        // encoding: [0x20,0x34,0x3d,0x2f]
    154 // CHECK:	ursra	v0.16b, v1.16b, #3      // encoding: [0x20,0x34,0x0d,0x6f]
    155 // CHECK:	ursra	v0.8h, v1.8h, #3        // encoding: [0x20,0x34,0x1d,0x6f]
    156 // CHECK:	ursra	v0.4s, v1.4s, #3        // encoding: [0x20,0x34,0x3d,0x6f]
    157 // CHECK:	ursra	v0.2d, v1.2d, #3        // encoding: [0x20,0x34,0x7d,0x6f]
    158 
    159 
    160 //------------------------------------------------------------------------------
    161 // Vector shift right and insert by immediate
    162 //------------------------------------------------------------------------------
    163          sri v0.8b, v1.8b, #3
    164          sri v0.4h, v1.4h, #3
    165          sri v0.2s, v1.2s, #3
    166          sri v0.16b, v1.16b, #3
    167          sri v0.8h, v1.8h, #3
    168          sri v0.4s, v1.4s, #3
    169          sri v0.2d, v1.2d, #3
    170 
    171 // CHECK:	sri	v0.8b, v1.8b, #3        // encoding: [0x20,0x44,0x0d,0x2f]
    172 // CHECK:	sri	v0.4h, v1.4h, #3        // encoding: [0x20,0x44,0x1d,0x2f]
    173 // CHECK:	sri	v0.2s, v1.2s, #3        // encoding: [0x20,0x44,0x3d,0x2f]
    174 // CHECK:	sri	v0.16b, v1.16b, #3      // encoding: [0x20,0x44,0x0d,0x6f]
    175 // CHECK:	sri	v0.8h, v1.8h, #3        // encoding: [0x20,0x44,0x1d,0x6f]
    176 // CHECK:	sri	v0.4s, v1.4s, #3        // encoding: [0x20,0x44,0x3d,0x6f]
    177 
    178 
    179 //------------------------------------------------------------------------------
    180 // Vector shift left and insert by immediate
    181 //------------------------------------------------------------------------------
    182          sli v0.8b, v1.8b, #3
    183          sli v0.4h, v1.4h, #3
    184          sli v0.2s, v1.2s, #3
    185          sli v0.16b, v1.16b, #3
    186          sli v0.8h, v1.8h, #3
    187          sli v0.4s, v1.4s, #3
    188          sli v0.2d, v1.2d, #3
    189 
    190 // CHECK:	sli	v0.8b, v1.8b, #3        // encoding: [0x20,0x54,0x0b,0x2f]
    191 // CHECK:	sli	v0.4h, v1.4h, #3        // encoding: [0x20,0x54,0x13,0x2f]
    192 // CHECK:	sli	v0.2s, v1.2s, #3        // encoding: [0x20,0x54,0x23,0x2f]
    193 // CHECK:	sli	v0.16b, v1.16b, #3      // encoding: [0x20,0x54,0x0b,0x6f]
    194 // CHECK:	sli	v0.8h, v1.8h, #3        // encoding: [0x20,0x54,0x13,0x6f]
    195 // CHECK:	sli	v0.4s, v1.4s, #3        // encoding: [0x20,0x54,0x23,0x6f]
    196 // CHECK:	sli	v0.2d, v1.2d, #3        // encoding: [0x20,0x54,0x43,0x6f]
    197 
    198 //------------------------------------------------------------------------------
    199 // Vector saturating shift left unsigned by immediate
    200 //------------------------------------------------------------------------------
    201          sqshlu v0.8b, v1.8b, #3
    202          sqshlu v0.4h, v1.4h, #3
    203          sqshlu v0.2s, v1.2s, #3
    204          sqshlu v0.16b, v1.16b, #3
    205          sqshlu v0.8h, v1.8h, #3
    206          sqshlu v0.4s, v1.4s, #3
    207          sqshlu v0.2d, v1.2d, #3
    208 
    209 // CHECK:	sqshlu	v0.8b, v1.8b, #3        // encoding: [0x20,0x64,0x0b,0x2f]
    210 // CHECK:	sqshlu	v0.4h, v1.4h, #3        // encoding: [0x20,0x64,0x13,0x2f]
    211 // CHECK:	sqshlu	v0.2s, v1.2s, #3        // encoding: [0x20,0x64,0x23,0x2f]
    212 // CHECK:	sqshlu	v0.16b, v1.16b, #3      // encoding: [0x20,0x64,0x0b,0x6f]
    213 // CHECK:	sqshlu	v0.8h, v1.8h, #3        // encoding: [0x20,0x64,0x13,0x6f]
    214 // CHECK:	sqshlu	v0.4s, v1.4s, #3        // encoding: [0x20,0x64,0x23,0x6f]
    215 // CHECK:	sqshlu	v0.2d, v1.2d, #3        // encoding: [0x20,0x64,0x43,0x6f]
    216 
    217 
    218 //------------------------------------------------------------------------------
    219 // Vector saturating shift left by immediate
    220 //------------------------------------------------------------------------------
    221          sqshl v0.8b, v1.8b, #3
    222          sqshl v0.4h, v1.4h, #3
    223          sqshl v0.2s, v1.2s, #3
    224          sqshl v0.16b, v1.16b, #3
    225          sqshl v0.8h, v1.8h, #3
    226          sqshl v0.4s, v1.4s, #3
    227          sqshl v0.2d, v1.2d, #3
    228 
    229 // CHECK:	sqshl	v0.8b, v1.8b, #3        // encoding: [0x20,0x74,0x0b,0x0f]
    230 // CHECK:	sqshl	v0.4h, v1.4h, #3        // encoding: [0x20,0x74,0x13,0x0f]
    231 // CHECK:	sqshl	v0.2s, v1.2s, #3        // encoding: [0x20,0x74,0x23,0x0f]
    232 // CHECK:	sqshl	v0.16b, v1.16b, #3      // encoding: [0x20,0x74,0x0b,0x4f]
    233 // CHECK:	sqshl	v0.8h, v1.8h, #3        // encoding: [0x20,0x74,0x13,0x4f]
    234 // CHECK:	sqshl	v0.4s, v1.4s, #3        // encoding: [0x20,0x74,0x23,0x4f]
    235 // CHECK:	sqshl	v0.2d, v1.2d, #3        // encoding: [0x20,0x74,0x43,0x4f]
    236 
    237 
    238 
    239 //------------------------------------------------------------------------------
    240 // Vector saturating shift left by immediate
    241 //------------------------------------------------------------------------------
    242          uqshl v0.8b, v1.8b, #3
    243          uqshl v0.4h, v1.4h, #3
    244          uqshl v0.2s, v1.2s, #3
    245          uqshl v0.16b, v1.16b, #3
    246          uqshl v0.8h, v1.8h, #3
    247          uqshl v0.4s, v1.4s, #3
    248          uqshl v0.2d, v1.2d, #3
    249 
    250 // CHECK:	uqshl	v0.8b, v1.8b, #3        // encoding: [0x20,0x74,0x0b,0x2f]
    251 // CHECK:	uqshl	v0.4h, v1.4h, #3        // encoding: [0x20,0x74,0x13,0x2f]
    252 // CHECK:	uqshl	v0.2s, v1.2s, #3        // encoding: [0x20,0x74,0x23,0x2f]
    253 // CHECK:	uqshl	v0.16b, v1.16b, #3      // encoding: [0x20,0x74,0x0b,0x6f]
    254 // CHECK:	uqshl	v0.8h, v1.8h, #3        // encoding: [0x20,0x74,0x13,0x6f]
    255 // CHECK:	uqshl	v0.4s, v1.4s, #3        // encoding: [0x20,0x74,0x23,0x6f]
    256 // CHECK:	uqshl	v0.2d, v1.2d, #3        // encoding: [0x20,0x74,0x43,0x6f]
    257 
    258 
    259 //------------------------------------------------------------------------------
    260 // Vector shift right narrow by immediate
    261 //------------------------------------------------------------------------------
    262          shrn v0.8b, v1.8h, #3
    263          shrn v0.4h, v1.4s, #3
    264          shrn v0.2s, v1.2d, #3
    265          shrn2 v0.16b, v1.8h, #3
    266          shrn2 v0.8h, v1.4s, #3
    267          shrn2 v0.4s, v1.2d, #3
    268 
    269 // CHECK:	shrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x84,0x0d,0x0f]
    270 // CHECK:	shrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x0f]
    271 // CHECK:	shrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x0f]
    272 // CHECK:	shrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x84,0x0d,0x4f]
    273 // CHECK:	shrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x4f]
    274 // CHECK:	shrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x4f]
    275 
    276 //------------------------------------------------------------------------------
    277 // Vector saturating shift right unsigned narrow by immediate
    278 //------------------------------------------------------------------------------
    279          sqshrun v0.8b, v1.8h, #3
    280          sqshrun v0.4h, v1.4s, #3
    281          sqshrun v0.2s, v1.2d, #3
    282          sqshrun2 v0.16b, v1.8h, #3
    283          sqshrun2 v0.8h, v1.4s, #3
    284          sqshrun2 v0.4s, v1.2d, #3
    285 
    286 // CHECK:	sqshrun	v0.8b, v1.8h, #3        // encoding: [0x20,0x84,0x0d,0x2f]
    287 // CHECK:	sqshrun	v0.4h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x2f]
    288 // CHECK:	sqshrun	v0.2s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x2f]
    289 // CHECK:	sqshrun2	v0.16b, v1.8h, #3 	// encoding: [0x20,0x84,0x0d,0x6f]
    290 // CHECK:	sqshrun2	v0.8h, v1.4s, #3 	// encoding: [0x20,0x84,0x1d,0x6f]
    291 // CHECK:	sqshrun2	v0.4s, v1.2d, #3 	// encoding: [0x20,0x84,0x3d,0x6f]
    292 
    293 //------------------------------------------------------------------------------
    294 // Vector rounding shift right narrow by immediate
    295 //------------------------------------------------------------------------------
    296          rshrn v0.8b, v1.8h, #3
    297          rshrn v0.4h, v1.4s, #3
    298          rshrn v0.2s, v1.2d, #3
    299          rshrn2 v0.16b, v1.8h, #3
    300          rshrn2 v0.8h, v1.4s, #3
    301          rshrn2 v0.4s, v1.2d, #3
    302 
    303 // CHECK:	rshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x8c,0x0d,0x0f]
    304 // CHECK:	rshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x8c,0x1d,0x0f]
    305 // CHECK:	rshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x8c,0x3d,0x0f]
    306 // CHECK:	rshrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x8c,0x0d,0x4f]
    307 // CHECK:	rshrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x8c,0x1d,0x4f]
    308 // CHECK:	rshrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x8c,0x3d,0x4f]
    309 
    310 
    311 //------------------------------------------------------------------------------
    312 // Vector saturating shift right rounded unsigned narrow by immediate
    313 //------------------------------------------------------------------------------
    314          sqrshrun v0.8b, v1.8h, #3
    315          sqrshrun v0.4h, v1.4s, #3
    316          sqrshrun v0.2s, v1.2d, #3
    317          sqrshrun2 v0.16b, v1.8h, #3
    318          sqrshrun2 v0.8h, v1.4s, #3
    319          sqrshrun2 v0.4s, v1.2d, #3
    320 
    321 // CHECK:	sqrshrun	v0.8b, v1.8h, #3    // encoding: [0x20,0x8c,0x0d,0x2f]
    322 // CHECK:	sqrshrun	v0.4h, v1.4s, #3    // encoding: [0x20,0x8c,0x1d,0x2f]
    323 // CHECK:	sqrshrun	v0.2s, v1.2d, #3    // encoding: [0x20,0x8c,0x3d,0x2f]
    324 // CHECK:	sqrshrun2	v0.16b, v1.8h, #3   // encoding: [0x20,0x8c,0x0d,0x6f]
    325 // CHECK:	sqrshrun2	v0.8h, v1.4s, #3    // encoding: [0x20,0x8c,0x1d,0x6f]
    326 // CHECK:	sqrshrun2	v0.4s, v1.2d, #3    // encoding: [0x20,0x8c,0x3d,0x6f]
    327 
    328 
    329 //------------------------------------------------------------------------------
    330 // Vector saturating shift right narrow by immediate
    331 //------------------------------------------------------------------------------
    332          sqshrn v0.8b, v1.8h, #3
    333          sqshrn v0.4h, v1.4s, #3
    334          sqshrn v0.2s, v1.2d, #3
    335          sqshrn2 v0.16b, v1.8h, #3
    336          sqshrn2 v0.8h, v1.4s, #3
    337          sqshrn2 v0.4s, v1.2d, #3
    338 
    339 // CHECK:	sqshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x94,0x0d,0x0f]
    340 // CHECK:	sqshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x0f]
    341 // CHECK:	sqshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x0f]
    342 // CHECK:	sqshrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x94,0x0d,0x4f]
    343 // CHECK:	sqshrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x4f]
    344 // CHECK:	sqshrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x4f]
    345 
    346 
    347 //------------------------------------------------------------------------------
    348 // Vector saturating shift right narrow by immediate
    349 //------------------------------------------------------------------------------
    350          uqshrn v0.8b, v1.8h, #3
    351          uqshrn v0.4h, v1.4s, #3
    352          uqshrn v0.2s, v1.2d, #3
    353          uqshrn2 v0.16b, v1.8h, #3
    354          uqshrn2 v0.8h, v1.4s, #3
    355          uqshrn2 v0.4s, v1.2d, #3
    356 
    357 // CHECK:	uqshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x94,0x0d,0x2f]
    358 // CHECK:	uqshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x2f]
    359 // CHECK:	uqshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x2f]
    360 // CHECK:	uqshrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x94,0x0d,0x6f]
    361 // CHECK:	uqshrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x6f]
    362 // CHECK:	uqshrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x6f]
    363 
    364 //------------------------------------------------------------------------------
    365 // Vector saturating shift right rounded narrow by immediate
    366 //------------------------------------------------------------------------------
    367          sqrshrn v0.8b, v1.8h, #3
    368          sqrshrn v0.4h, v1.4s, #3
    369          sqrshrn v0.2s, v1.2d, #3
    370          sqrshrn2 v0.16b, v1.8h, #3
    371          sqrshrn2 v0.8h, v1.4s, #3
    372          sqrshrn2 v0.4s, v1.2d, #3
    373 
    374 // CHECK:	sqrshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x9c,0x0d,0x0f]
    375 // CHECK:	sqrshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x9c,0x1d,0x0f]
    376 // CHECK:	sqrshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x9c,0x3d,0x0f]
    377 // CHECK:	sqrshrn2	v0.16b, v1.8h, #3   // encoding: [0x20,0x9c,0x0d,0x4f]
    378 // CHECK:	sqrshrn2	v0.8h, v1.4s, #3    // encoding: [0x20,0x9c,0x1d,0x4f]
    379 // CHECK:	sqrshrn2	v0.4s, v1.2d, #3    // encoding: [0x20,0x9c,0x3d,0x4f]
    380 
    381 
    382 //------------------------------------------------------------------------------
    383 // Vector saturating shift right rounded narrow by immediate
    384 //------------------------------------------------------------------------------
    385          uqrshrn v0.8b, v1.8h, #3
    386          uqrshrn v0.4h, v1.4s, #3
    387          uqrshrn v0.2s, v1.2d, #3
    388          uqrshrn2 v0.16b, v1.8h, #3
    389          uqrshrn2 v0.8h, v1.4s, #3
    390          uqrshrn2 v0.4s, v1.2d, #3
    391 
    392 // CHECK:	uqrshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x9c,0x0d,0x2f]
    393 // CHECK:	uqrshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x9c,0x1d,0x2f]
    394 // CHECK:	uqrshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x9c,0x3d,0x2f]
    395 // CHECK:	uqrshrn2	v0.16b, v1.8h, #3   // encoding: [0x20,0x9c,0x0d,0x6f]
    396 // CHECK:	uqrshrn2	v0.8h, v1.4s, #3    // encoding: [0x20,0x9c,0x1d,0x6f]
    397 // CHECK:	uqrshrn2	v0.4s, v1.2d, #3    // encoding: [0x20,0x9c,0x3d,0x6f]
    398 
    399 
    400 //------------------------------------------------------------------------------
    401 // Fixed-point convert to floating-point
    402 //------------------------------------------------------------------------------
    403          scvtf v0.4h, v1.4h, #3
    404          scvtf v0.8h, v1.8h, #3
    405          scvtf v0.2s, v1.2s, #3
    406          scvtf v0.4s, v1.4s, #3
    407          scvtf v0.2d, v1.2d, #3
    408          ucvtf v0.4h, v1.4h, #3
    409          ucvtf v0.8h, v1.8h, #3
    410          ucvtf v0.2s, v1.2s, #3
    411          ucvtf v0.4s, v1.4s, #3
    412          ucvtf v0.2d, v1.2d, #3
    413 
    414 // CHECK: scvtf v0.4h, v1.4h, #3        // encoding: [0x20,0xe4,0x1d,0x0f]
    415 // CHECK: scvtf v0.8h, v1.8h, #3        // encoding: [0x20,0xe4,0x1d,0x4f]
    416 // CHECK:	scvtf	v0.2s, v1.2s, #3        // encoding: [0x20,0xe4,0x3d,0x0f]
    417 // CHECK:	scvtf	v0.4s, v1.4s, #3        // encoding: [0x20,0xe4,0x3d,0x4f]
    418 // CHECK:	scvtf	v0.2d, v1.2d, #3        // encoding: [0x20,0xe4,0x7d,0x4f]
    419 // CHECK:	ucvtf v0.4h, v1.4h, #3        // encoding: [0x20,0xe4,0x1d,0x2f]
    420 // CHECK:	ucvtf v0.8h, v1.8h, #3        // encoding: [0x20,0xe4,0x1d,0x6f]
    421 // CHECK:	ucvtf	v0.2s, v1.2s, #3        // encoding: [0x20,0xe4,0x3d,0x2f]
    422 // CHECK:	ucvtf	v0.4s, v1.4s, #3        // encoding: [0x20,0xe4,0x3d,0x6f]
    423 // CHECK:	ucvtf	v0.2d, v1.2d, #3        // encoding: [0x20,0xe4,0x7d,0x6f]
    424 
    425 //------------------------------------------------------------------------------
    426 // Floating-point convert to fixed-point
    427 //------------------------------------------------------------------------------
    428          fcvtzs v0.4h, v1.4h, #3
    429          fcvtzs v0.8h, v1.8h, #3
    430          fcvtzs v0.2s, v1.2s, #3
    431          fcvtzs v0.4s, v1.4s, #3
    432          fcvtzs v0.2d, v1.2d, #3
    433          fcvtzu v0.4h, v1.4h, #3
    434          fcvtzu v0.8h, v1.8h, #3
    435          fcvtzu v0.2s, v1.2s, #3
    436          fcvtzu v0.4s, v1.4s, #3
    437          fcvtzu v0.2d, v1.2d, #3
    438 
    439 
    440 // CHECK:	fcvtzs  v0.4h, v1.4h, #3        // encoding: [0x20,0xfc,0x1d,0x0f]
    441 // CHECK:	fcvtzs  v0.8h, v1.8h, #3        // encoding: [0x20,0xfc,0x1d,0x4f]
    442 // CHECK:	fcvtzs	v0.2s, v1.2s, #3        // encoding: [0x20,0xfc,0x3d,0x0f]
    443 // CHECK:	fcvtzs	v0.4s, v1.4s, #3        // encoding: [0x20,0xfc,0x3d,0x4f]
    444 // CHECK:	fcvtzs	v0.2d, v1.2d, #3        // encoding: [0x20,0xfc,0x7d,0x4f]
    445 // CHECK:	fcvtzu  v0.4h, v1.4h, #3        // encoding: [0x20,0xfc,0x1d,0x2f]
    446 // CHECK:	fcvtzu  v0.8h, v1.8h, #3        // encoding: [0x20,0xfc,0x1d,0x6f]
    447 // CHECK:	fcvtzu	v0.2s, v1.2s, #3        // encoding: [0x20,0xfc,0x3d,0x2f]
    448 // CHECK:	fcvtzu	v0.4s, v1.4s, #3        // encoding: [0x20,0xfc,0x3d,0x6f]
    449 // CHECK:	fcvtzu	v0.2d, v1.2d, #3        // encoding: [0x20,0xfc,0x7d,0x6f]
    450 
    451