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