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