1 // REQUIRES: aarch64-registered-target 2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \ 3 // RUN: -ffp-contract=fast -S -O3 -o - %s | FileCheck %s 4 5 // Test new aarch64 intrinsics and types 6 #include <arm_neon.h> 7 8 int8x8_t test_vuzp1_s8(int8x8_t a, int8x8_t b) { 9 // CHECK-LABEL: test_vuzp1_s8 10 return vuzp1_s8(a, b); 11 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 12 } 13 14 int8x16_t test_vuzp1q_s8(int8x16_t a, int8x16_t b) { 15 // CHECK-LABEL: test_vuzp1q_s8 16 return vuzp1q_s8(a, b); 17 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 18 } 19 20 int16x4_t test_vuzp1_s16(int16x4_t a, int16x4_t b) { 21 // CHECK-LABEL: test_vuzp1_s16 22 return vuzp1_s16(a, b); 23 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 24 } 25 26 int16x8_t test_vuzp1q_s16(int16x8_t a, int16x8_t b) { 27 // CHECK-LABEL: test_vuzp1q_s16 28 return vuzp1q_s16(a, b); 29 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 30 } 31 32 int32x2_t test_vuzp1_s32(int32x2_t a, int32x2_t b) { 33 // CHECK-LABEL: test_vuzp1_s32 34 return vuzp1_s32(a, b); 35 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 36 } 37 38 int32x4_t test_vuzp1q_s32(int32x4_t a, int32x4_t b) { 39 // CHECK-LABEL: test_vuzp1q_s32 40 return vuzp1q_s32(a, b); 41 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 42 } 43 44 int64x2_t test_vuzp1q_s64(int64x2_t a, int64x2_t b) { 45 // CHECK-LABEL: test_vuzp1q_s64 46 return vuzp1q_s64(a, b); 47 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 48 } 49 50 uint8x8_t test_vuzp1_u8(uint8x8_t a, uint8x8_t b) { 51 // CHECK-LABEL: test_vuzp1_u8 52 return vuzp1_u8(a, b); 53 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 54 } 55 56 uint8x16_t test_vuzp1q_u8(uint8x16_t a, uint8x16_t b) { 57 // CHECK-LABEL: test_vuzp1q_u8 58 return vuzp1q_u8(a, b); 59 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 60 } 61 62 uint16x4_t test_vuzp1_u16(uint16x4_t a, uint16x4_t b) { 63 // CHECK-LABEL: test_vuzp1_u16 64 return vuzp1_u16(a, b); 65 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 66 } 67 68 uint16x8_t test_vuzp1q_u16(uint16x8_t a, uint16x8_t b) { 69 // CHECK-LABEL: test_vuzp1q_u16 70 return vuzp1q_u16(a, b); 71 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 72 } 73 74 uint32x2_t test_vuzp1_u32(uint32x2_t a, uint32x2_t b) { 75 // CHECK-LABEL: test_vuzp1_u32 76 return vuzp1_u32(a, b); 77 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 78 } 79 80 uint32x4_t test_vuzp1q_u32(uint32x4_t a, uint32x4_t b) { 81 // CHECK-LABEL: test_vuzp1q_u32 82 return vuzp1q_u32(a, b); 83 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 84 } 85 86 uint64x2_t test_vuzp1q_u64(uint64x2_t a, uint64x2_t b) { 87 // CHECK-LABEL: test_vuzp1q_u64 88 return vuzp1q_u64(a, b); 89 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 90 } 91 92 float32x2_t test_vuzp1_f32(float32x2_t a, float32x2_t b) { 93 // CHECK-LABEL: test_vuzp1_f32 94 return vuzp1_f32(a, b); 95 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 96 } 97 98 float32x4_t test_vuzp1q_f32(float32x4_t a, float32x4_t b) { 99 // CHECK-LABEL: test_vuzp1q_f32 100 return vuzp1q_f32(a, b); 101 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 102 } 103 104 float64x2_t test_vuzp1q_f64(float64x2_t a, float64x2_t b) { 105 // CHECK-LABEL: test_vuzp1q_f64 106 return vuzp1q_f64(a, b); 107 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 108 } 109 110 poly8x8_t test_vuzp1_p8(poly8x8_t a, poly8x8_t b) { 111 // CHECK-LABEL: test_vuzp1_p8 112 return vuzp1_p8(a, b); 113 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 114 } 115 116 poly8x16_t test_vuzp1q_p8(poly8x16_t a, poly8x16_t b) { 117 // CHECK-LABEL: test_vuzp1q_p8 118 return vuzp1q_p8(a, b); 119 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 120 } 121 122 poly16x4_t test_vuzp1_p16(poly16x4_t a, poly16x4_t b) { 123 // CHECK-LABEL: test_vuzp1_p16 124 return vuzp1_p16(a, b); 125 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 126 } 127 128 poly16x8_t test_vuzp1q_p16(poly16x8_t a, poly16x8_t b) { 129 // CHECK-LABEL: test_vuzp1q_p16 130 return vuzp1q_p16(a, b); 131 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 132 } 133 134 int8x8_t test_vuzp2_s8(int8x8_t a, int8x8_t b) { 135 // CHECK-LABEL: test_vuzp2_s8 136 return vuzp2_s8(a, b); 137 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 138 } 139 140 int8x16_t test_vuzp2q_s8(int8x16_t a, int8x16_t b) { 141 // CHECK-LABEL: test_vuzp2q_s8 142 return vuzp2q_s8(a, b); 143 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 144 } 145 146 int16x4_t test_vuzp2_s16(int16x4_t a, int16x4_t b) { 147 // CHECK-LABEL: test_vuzp2_s16 148 return vuzp2_s16(a, b); 149 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 150 } 151 152 int16x8_t test_vuzp2q_s16(int16x8_t a, int16x8_t b) { 153 // CHECK-LABEL: test_vuzp2q_s16 154 return vuzp2q_s16(a, b); 155 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 156 } 157 158 int32x2_t test_vuzp2_s32(int32x2_t a, int32x2_t b) { 159 // CHECK-LABEL: test_vuzp2_s32 160 return vuzp2_s32(a, b); 161 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 162 } 163 164 int32x4_t test_vuzp2q_s32(int32x4_t a, int32x4_t b) { 165 // CHECK-LABEL: test_vuzp2q_s32 166 return vuzp2q_s32(a, b); 167 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 168 } 169 170 int64x2_t test_vuzp2q_s64(int64x2_t a, int64x2_t b) { 171 // CHECK-LABEL: test_vuzp2q_s64 172 return vuzp2q_s64(a, b); 173 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 174 } 175 176 uint8x8_t test_vuzp2_u8(uint8x8_t a, uint8x8_t b) { 177 // CHECK-LABEL: test_vuzp2_u8 178 return vuzp2_u8(a, b); 179 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 180 } 181 182 uint8x16_t test_vuzp2q_u8(uint8x16_t a, uint8x16_t b) { 183 // CHECK-LABEL: test_vuzp2q_u8 184 return vuzp2q_u8(a, b); 185 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 186 } 187 188 uint16x4_t test_vuzp2_u16(uint16x4_t a, uint16x4_t b) { 189 // CHECK-LABEL: test_vuzp2_u16 190 return vuzp2_u16(a, b); 191 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 192 } 193 194 uint16x8_t test_vuzp2q_u16(uint16x8_t a, uint16x8_t b) { 195 // CHECK-LABEL: test_vuzp2q_u16 196 return vuzp2q_u16(a, b); 197 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 198 } 199 200 uint32x2_t test_vuzp2_u32(uint32x2_t a, uint32x2_t b) { 201 // CHECK-LABEL: test_vuzp2_u32 202 return vuzp2_u32(a, b); 203 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 204 } 205 206 uint32x4_t test_vuzp2q_u32(uint32x4_t a, uint32x4_t b) { 207 // CHECK-LABEL: test_vuzp2q_u32 208 return vuzp2q_u32(a, b); 209 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 210 } 211 212 uint64x2_t test_vuzp2q_u64(uint64x2_t a, uint64x2_t b) { 213 // CHECK-LABEL: test_vuzp2q_u64 214 return vuzp2q_u64(a, b); 215 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 216 } 217 218 float32x2_t test_vuzp2_f32(float32x2_t a, float32x2_t b) { 219 // CHECK-LABEL: test_vuzp2_f32 220 return vuzp2_f32(a, b); 221 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 222 } 223 224 float32x4_t test_vuzp2q_f32(float32x4_t a, float32x4_t b) { 225 // CHECK-LABEL: test_vuzp2q_f32 226 return vuzp2q_f32(a, b); 227 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 228 } 229 230 float64x2_t test_vuzp2q_f64(float64x2_t a, float64x2_t b) { 231 // CHECK-LABEL: test_vuzp2q_f64 232 return vuzp2q_f64(a, b); 233 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 234 } 235 236 poly8x8_t test_vuzp2_p8(poly8x8_t a, poly8x8_t b) { 237 // CHECK-LABEL: test_vuzp2_p8 238 return vuzp2_p8(a, b); 239 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 240 } 241 242 poly8x16_t test_vuzp2q_p8(poly8x16_t a, poly8x16_t b) { 243 // CHECK-LABEL: test_vuzp2q_p8 244 return vuzp2q_p8(a, b); 245 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 246 } 247 248 poly16x4_t test_vuzp2_p16(poly16x4_t a, poly16x4_t b) { 249 // CHECK-LABEL: test_vuzp2_p16 250 return vuzp2_p16(a, b); 251 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 252 } 253 254 poly16x8_t test_vuzp2q_p16(poly16x8_t a, poly16x8_t b) { 255 // CHECK-LABEL: test_vuzp2q_p16 256 return vuzp2q_p16(a, b); 257 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 258 } 259 260 int8x8_t test_vzip1_s8(int8x8_t a, int8x8_t b) { 261 // CHECK-LABEL: test_vzip1_s8 262 return vzip1_s8(a, b); 263 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 264 } 265 266 int8x16_t test_vzip1q_s8(int8x16_t a, int8x16_t b) { 267 // CHECK-LABEL: test_vzip1q_s8 268 return vzip1q_s8(a, b); 269 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 270 } 271 272 int16x4_t test_vzip1_s16(int16x4_t a, int16x4_t b) { 273 // CHECK-LABEL: test_vzip1_s16 274 return vzip1_s16(a, b); 275 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 276 } 277 278 int16x8_t test_vzip1q_s16(int16x8_t a, int16x8_t b) { 279 // CHECK-LABEL: test_vzip1q_s16 280 return vzip1q_s16(a, b); 281 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 282 } 283 284 int32x2_t test_vzip1_s32(int32x2_t a, int32x2_t b) { 285 // CHECK-LABEL: test_vzip1_s32 286 return vzip1_s32(a, b); 287 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 288 } 289 290 int32x4_t test_vzip1q_s32(int32x4_t a, int32x4_t b) { 291 // CHECK-LABEL: test_vzip1q_s32 292 return vzip1q_s32(a, b); 293 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 294 } 295 296 int64x2_t test_vzip1q_s64(int64x2_t a, int64x2_t b) { 297 // CHECK-LABEL: test_vzip1q_s64 298 return vzip1q_s64(a, b); 299 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 300 } 301 302 uint8x8_t test_vzip1_u8(uint8x8_t a, uint8x8_t b) { 303 // CHECK-LABEL: test_vzip1_u8 304 return vzip1_u8(a, b); 305 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 306 } 307 308 uint8x16_t test_vzip1q_u8(uint8x16_t a, uint8x16_t b) { 309 // CHECK-LABEL: test_vzip1q_u8 310 return vzip1q_u8(a, b); 311 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 312 } 313 314 uint16x4_t test_vzip1_u16(uint16x4_t a, uint16x4_t b) { 315 // CHECK-LABEL: test_vzip1_u16 316 return vzip1_u16(a, b); 317 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 318 } 319 320 uint16x8_t test_vzip1q_u16(uint16x8_t a, uint16x8_t b) { 321 // CHECK-LABEL: test_vzip1q_u16 322 return vzip1q_u16(a, b); 323 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 324 } 325 326 uint32x2_t test_vzip1_u32(uint32x2_t a, uint32x2_t b) { 327 // CHECK-LABEL: test_vzip1_u32 328 return vzip1_u32(a, b); 329 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 330 } 331 332 uint32x4_t test_vzip1q_u32(uint32x4_t a, uint32x4_t b) { 333 // CHECK-LABEL: test_vzip1q_u32 334 return vzip1q_u32(a, b); 335 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 336 } 337 338 uint64x2_t test_vzip1q_u64(uint64x2_t a, uint64x2_t b) { 339 // CHECK-LABEL: test_vzip1q_u64 340 return vzip1q_u64(a, b); 341 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 342 } 343 344 float32x2_t test_vzip1_f32(float32x2_t a, float32x2_t b) { 345 // CHECK-LABEL: test_vzip1_f32 346 return vzip1_f32(a, b); 347 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 348 } 349 350 float32x4_t test_vzip1q_f32(float32x4_t a, float32x4_t b) { 351 // CHECK-LABEL: test_vzip1q_f32 352 return vzip1q_f32(a, b); 353 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 354 } 355 356 float64x2_t test_vzip1q_f64(float64x2_t a, float64x2_t b) { 357 // CHECK-LABEL: test_vzip1q_f64 358 return vzip1q_f64(a, b); 359 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 360 } 361 362 poly8x8_t test_vzip1_p8(poly8x8_t a, poly8x8_t b) { 363 // CHECK-LABEL: test_vzip1_p8 364 return vzip1_p8(a, b); 365 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 366 } 367 368 poly8x16_t test_vzip1q_p8(poly8x16_t a, poly8x16_t b) { 369 // CHECK-LABEL: test_vzip1q_p8 370 return vzip1q_p8(a, b); 371 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 372 } 373 374 poly16x4_t test_vzip1_p16(poly16x4_t a, poly16x4_t b) { 375 // CHECK-LABEL: test_vzip1_p16 376 return vzip1_p16(a, b); 377 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 378 } 379 380 poly16x8_t test_vzip1q_p16(poly16x8_t a, poly16x8_t b) { 381 // CHECK-LABEL: test_vzip1q_p16 382 return vzip1q_p16(a, b); 383 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 384 } 385 386 int8x8_t test_vzip2_s8(int8x8_t a, int8x8_t b) { 387 // CHECK-LABEL: test_vzip2_s8 388 return vzip2_s8(a, b); 389 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 390 } 391 392 int8x16_t test_vzip2q_s8(int8x16_t a, int8x16_t b) { 393 // CHECK-LABEL: test_vzip2q_s8 394 return vzip2q_s8(a, b); 395 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 396 } 397 398 int16x4_t test_vzip2_s16(int16x4_t a, int16x4_t b) { 399 // CHECK-LABEL: test_vzip2_s16 400 return vzip2_s16(a, b); 401 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 402 } 403 404 int16x8_t test_vzip2q_s16(int16x8_t a, int16x8_t b) { 405 // CHECK-LABEL: test_vzip2q_s16 406 return vzip2q_s16(a, b); 407 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 408 } 409 410 int32x2_t test_vzip2_s32(int32x2_t a, int32x2_t b) { 411 // CHECK-LABEL: test_vzip2_s32 412 return vzip2_s32(a, b); 413 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 414 } 415 416 int32x4_t test_vzip2q_s32(int32x4_t a, int32x4_t b) { 417 // CHECK-LABEL: test_vzip2q_s32 418 return vzip2q_s32(a, b); 419 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 420 } 421 422 int64x2_t test_vzip2q_s64(int64x2_t a, int64x2_t b) { 423 // CHECK-LABEL: test_vzip2q_s64 424 return vzip2q_s64(a, b); 425 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 426 } 427 428 uint8x8_t test_vzip2_u8(uint8x8_t a, uint8x8_t b) { 429 // CHECK-LABEL: test_vzip2_u8 430 return vzip2_u8(a, b); 431 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 432 } 433 434 uint8x16_t test_vzip2q_u8(uint8x16_t a, uint8x16_t b) { 435 // CHECK-LABEL: test_vzip2q_u8 436 return vzip2q_u8(a, b); 437 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 438 } 439 440 uint16x4_t test_vzip2_u16(uint16x4_t a, uint16x4_t b) { 441 // CHECK-LABEL: test_vzip2_u16 442 return vzip2_u16(a, b); 443 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 444 } 445 446 uint16x8_t test_vzip2q_u16(uint16x8_t a, uint16x8_t b) { 447 // CHECK-LABEL: test_vzip2q_u16 448 return vzip2q_u16(a, b); 449 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 450 } 451 452 uint32x2_t test_vzip2_u32(uint32x2_t a, uint32x2_t b) { 453 // CHECK-LABEL: test_vzip2_u32 454 return vzip2_u32(a, b); 455 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 456 } 457 458 uint32x4_t test_vzip2q_u32(uint32x4_t a, uint32x4_t b) { 459 // CHECK-LABEL: test_vzip2q_u32 460 return vzip2q_u32(a, b); 461 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 462 } 463 464 uint64x2_t test_vzip2q_u64(uint64x2_t a, uint64x2_t b) { 465 // CHECK-LABEL: test_vzip2q_u64 466 return vzip2q_u64(a, b); 467 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 468 } 469 470 float32x2_t test_vzip2_f32(float32x2_t a, float32x2_t b) { 471 // CHECK-LABEL: test_vzip2_f32 472 return vzip2_f32(a, b); 473 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 474 } 475 476 float32x4_t test_vzip2q_f32(float32x4_t a, float32x4_t b) { 477 // CHECK-LABEL: test_vzip2q_f32 478 return vzip2q_f32(a, b); 479 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 480 } 481 482 float64x2_t test_vzip2q_f64(float64x2_t a, float64x2_t b) { 483 // CHECK-LABEL: test_vzip2q_f64 484 return vzip2q_f64(a, b); 485 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 486 } 487 488 poly8x8_t test_vzip2_p8(poly8x8_t a, poly8x8_t b) { 489 // CHECK-LABEL: test_vzip2_p8 490 return vzip2_p8(a, b); 491 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 492 } 493 494 poly8x16_t test_vzip2q_p8(poly8x16_t a, poly8x16_t b) { 495 // CHECK-LABEL: test_vzip2q_p8 496 return vzip2q_p8(a, b); 497 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 498 } 499 500 poly16x4_t test_vzip2_p16(poly16x4_t a, poly16x4_t b) { 501 // CHECK-LABEL: test_vzip2_p16 502 return vzip2_p16(a, b); 503 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 504 } 505 506 poly16x8_t test_vzip2q_p16(poly16x8_t a, poly16x8_t b) { 507 // CHECK-LABEL: test_vzip2q_p16 508 return vzip2q_p16(a, b); 509 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 510 } 511 512 int8x8_t test_vtrn1_s8(int8x8_t a, int8x8_t b) { 513 // CHECK-LABEL: test_vtrn1_s8 514 return vtrn1_s8(a, b); 515 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 516 } 517 518 int8x16_t test_vtrn1q_s8(int8x16_t a, int8x16_t b) { 519 // CHECK-LABEL: test_vtrn1q_s8 520 return vtrn1q_s8(a, b); 521 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 522 } 523 524 int16x4_t test_vtrn1_s16(int16x4_t a, int16x4_t b) { 525 // CHECK-LABEL: test_vtrn1_s16 526 return vtrn1_s16(a, b); 527 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 528 } 529 530 int16x8_t test_vtrn1q_s16(int16x8_t a, int16x8_t b) { 531 // CHECK-LABEL: test_vtrn1q_s16 532 return vtrn1q_s16(a, b); 533 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 534 } 535 536 int32x2_t test_vtrn1_s32(int32x2_t a, int32x2_t b) { 537 // CHECK-LABEL: test_vtrn1_s32 538 return vtrn1_s32(a, b); 539 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 540 } 541 542 int32x4_t test_vtrn1q_s32(int32x4_t a, int32x4_t b) { 543 // CHECK-LABEL: test_vtrn1q_s32 544 return vtrn1q_s32(a, b); 545 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 546 } 547 548 int64x2_t test_vtrn1q_s64(int64x2_t a, int64x2_t b) { 549 // CHECK-LABEL: test_vtrn1q_s64 550 return vtrn1q_s64(a, b); 551 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 552 } 553 554 uint8x8_t test_vtrn1_u8(uint8x8_t a, uint8x8_t b) { 555 // CHECK-LABEL: test_vtrn1_u8 556 return vtrn1_u8(a, b); 557 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 558 } 559 560 uint8x16_t test_vtrn1q_u8(uint8x16_t a, uint8x16_t b) { 561 // CHECK-LABEL: test_vtrn1q_u8 562 return vtrn1q_u8(a, b); 563 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 564 } 565 566 uint16x4_t test_vtrn1_u16(uint16x4_t a, uint16x4_t b) { 567 // CHECK-LABEL: test_vtrn1_u16 568 return vtrn1_u16(a, b); 569 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 570 } 571 572 uint16x8_t test_vtrn1q_u16(uint16x8_t a, uint16x8_t b) { 573 // CHECK-LABEL: test_vtrn1q_u16 574 return vtrn1q_u16(a, b); 575 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 576 } 577 578 uint32x2_t test_vtrn1_u32(uint32x2_t a, uint32x2_t b) { 579 // CHECK-LABEL: test_vtrn1_u32 580 return vtrn1_u32(a, b); 581 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 582 } 583 584 uint32x4_t test_vtrn1q_u32(uint32x4_t a, uint32x4_t b) { 585 // CHECK-LABEL: test_vtrn1q_u32 586 return vtrn1q_u32(a, b); 587 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 588 } 589 590 uint64x2_t test_vtrn1q_u64(uint64x2_t a, uint64x2_t b) { 591 // CHECK-LABEL: test_vtrn1q_u64 592 return vtrn1q_u64(a, b); 593 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 594 } 595 596 float32x2_t test_vtrn1_f32(float32x2_t a, float32x2_t b) { 597 // CHECK-LABEL: test_vtrn1_f32 598 return vtrn1_f32(a, b); 599 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v0.2s, v0.2s, v1.2s}} 600 } 601 602 float32x4_t test_vtrn1q_f32(float32x4_t a, float32x4_t b) { 603 // CHECK-LABEL: test_vtrn1q_f32 604 return vtrn1q_f32(a, b); 605 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 606 } 607 608 float64x2_t test_vtrn1q_f64(float64x2_t a, float64x2_t b) { 609 // CHECK-LABEL: test_vtrn1q_f64 610 return vtrn1q_f64(a, b); 611 // CHECK: {{ins v[0-9]+.d\[1\], v[0-9]+.d\[0\]|zip1 v0.2d, v0.2d, v1.2d}} 612 } 613 614 poly8x8_t test_vtrn1_p8(poly8x8_t a, poly8x8_t b) { 615 // CHECK-LABEL: test_vtrn1_p8 616 return vtrn1_p8(a, b); 617 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 618 } 619 620 poly8x16_t test_vtrn1q_p8(poly8x16_t a, poly8x16_t b) { 621 // CHECK-LABEL: test_vtrn1q_p8 622 return vtrn1q_p8(a, b); 623 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 624 } 625 626 poly16x4_t test_vtrn1_p16(poly16x4_t a, poly16x4_t b) { 627 // CHECK-LABEL: test_vtrn1_p16 628 return vtrn1_p16(a, b); 629 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 630 } 631 632 poly16x8_t test_vtrn1q_p16(poly16x8_t a, poly16x8_t b) { 633 // CHECK-LABEL: test_vtrn1q_p16 634 return vtrn1q_p16(a, b); 635 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 636 } 637 638 int8x8_t test_vtrn2_s8(int8x8_t a, int8x8_t b) { 639 // CHECK-LABEL: test_vtrn2_s8 640 return vtrn2_s8(a, b); 641 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 642 } 643 644 int8x16_t test_vtrn2q_s8(int8x16_t a, int8x16_t b) { 645 // CHECK-LABEL: test_vtrn2q_s8 646 return vtrn2q_s8(a, b); 647 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 648 } 649 650 int16x4_t test_vtrn2_s16(int16x4_t a, int16x4_t b) { 651 // CHECK-LABEL: test_vtrn2_s16 652 return vtrn2_s16(a, b); 653 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 654 } 655 656 int16x8_t test_vtrn2q_s16(int16x8_t a, int16x8_t b) { 657 // CHECK-LABEL: test_vtrn2q_s16 658 return vtrn2q_s16(a, b); 659 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 660 } 661 662 int32x2_t test_vtrn2_s32(int32x2_t a, int32x2_t b) { 663 // CHECK-LABEL: test_vtrn2_s32 664 return vtrn2_s32(a, b); 665 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 666 } 667 668 int32x4_t test_vtrn2q_s32(int32x4_t a, int32x4_t b) { 669 // CHECK-LABEL: test_vtrn2q_s32 670 return vtrn2q_s32(a, b); 671 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 672 } 673 674 int64x2_t test_vtrn2q_s64(int64x2_t a, int64x2_t b) { 675 // CHECK-LABEL: test_vtrn2q_s64 676 return vtrn2q_s64(a, b); 677 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 678 } 679 680 uint8x8_t test_vtrn2_u8(uint8x8_t a, uint8x8_t b) { 681 // CHECK-LABEL: test_vtrn2_u8 682 return vtrn2_u8(a, b); 683 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 684 } 685 686 uint8x16_t test_vtrn2q_u8(uint8x16_t a, uint8x16_t b) { 687 // CHECK-LABEL: test_vtrn2q_u8 688 return vtrn2q_u8(a, b); 689 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 690 } 691 692 uint16x4_t test_vtrn2_u16(uint16x4_t a, uint16x4_t b) { 693 // CHECK-LABEL: test_vtrn2_u16 694 return vtrn2_u16(a, b); 695 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 696 } 697 698 uint16x8_t test_vtrn2q_u16(uint16x8_t a, uint16x8_t b) { 699 // CHECK-LABEL: test_vtrn2q_u16 700 return vtrn2q_u16(a, b); 701 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 702 } 703 704 uint32x2_t test_vtrn2_u32(uint32x2_t a, uint32x2_t b) { 705 // CHECK-LABEL: test_vtrn2_u32 706 return vtrn2_u32(a, b); 707 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 708 } 709 710 uint32x4_t test_vtrn2q_u32(uint32x4_t a, uint32x4_t b) { 711 // CHECK-LABEL: test_vtrn2q_u32 712 return vtrn2q_u32(a, b); 713 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 714 } 715 716 uint64x2_t test_vtrn2q_u64(uint64x2_t a, uint64x2_t b) { 717 // CHECK-LABEL: test_vtrn2q_u64 718 return vtrn2q_u64(a, b); 719 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 720 } 721 722 float32x2_t test_vtrn2_f32(float32x2_t a, float32x2_t b) { 723 // CHECK-LABEL: test_vtrn2_f32 724 return vtrn2_f32(a, b); 725 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v0.2s, v0.2s, v1.2s}} 726 } 727 728 float32x4_t test_vtrn2q_f32(float32x4_t a, float32x4_t b) { 729 // CHECK-LABEL: test_vtrn2q_f32 730 return vtrn2q_f32(a, b); 731 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 732 } 733 734 float64x2_t test_vtrn2q_f64(float64x2_t a, float64x2_t b) { 735 // CHECK-LABEL: test_vtrn2q_f64 736 return vtrn2q_f64(a, b); 737 // CHECK: {{ins v[0-9]+.d\[0\], v[0-9]+.d\[1\]|zip2 v0.2d, v0.2d, v1.2d}} 738 } 739 740 poly8x8_t test_vtrn2_p8(poly8x8_t a, poly8x8_t b) { 741 // CHECK-LABEL: test_vtrn2_p8 742 return vtrn2_p8(a, b); 743 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 744 } 745 746 poly8x16_t test_vtrn2q_p8(poly8x16_t a, poly8x16_t b) { 747 // CHECK-LABEL: test_vtrn2q_p8 748 return vtrn2q_p8(a, b); 749 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 750 } 751 752 poly16x4_t test_vtrn2_p16(poly16x4_t a, poly16x4_t b) { 753 // CHECK-LABEL: test_vtrn2_p16 754 return vtrn2_p16(a, b); 755 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 756 } 757 758 poly16x8_t test_vtrn2q_p16(poly16x8_t a, poly16x8_t b) { 759 // CHECK-LABEL: test_vtrn2q_p16 760 return vtrn2q_p16(a, b); 761 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 762 } 763 764 int8x8x2_t test_vuzp_s8(int8x8_t a, int8x8_t b) { 765 // CHECK-LABEL: test_vuzp_s8 766 return vuzp_s8(a, b); 767 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 768 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 769 } 770 771 int16x4x2_t test_vuzp_s16(int16x4_t a, int16x4_t b) { 772 // CHECK-LABEL: test_vuzp_s16 773 return vuzp_s16(a, b); 774 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 775 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 776 } 777 int32x2x2_t test_vuzp_s32(int32x2_t a, int32x2_t b) { 778 // CHECK-LABEL: test_vuzp_s32 779 return vuzp_s32(a, b); 780 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 781 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 782 } 783 uint8x8x2_t test_vuzp_u8(uint8x8_t a, uint8x8_t b) { 784 // CHECK-LABEL: test_vuzp_u8 785 return vuzp_u8(a, b); 786 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 787 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 788 } 789 uint16x4x2_t test_vuzp_u16(uint16x4_t a, uint16x4_t b) { 790 // CHECK-LABEL: test_vuzp_u16 791 return vuzp_u16(a, b); 792 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 793 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 794 } 795 uint32x2x2_t test_vuzp_u32(uint32x2_t a, uint32x2_t b) { 796 // CHECK-LABEL: test_vuzp_u32 797 return vuzp_u32(a, b); 798 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 799 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 800 } 801 float32x2x2_t test_vuzp_f32(float32x2_t a, float32x2_t b) { 802 // CHECK-LABEL: test_vuzp_f32 803 return vuzp_f32(a, b); 804 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 805 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 806 } 807 poly8x8x2_t test_vuzp_p8(poly8x8_t a, poly8x8_t b) { 808 // CHECK-LABEL: test_vuzp_p8 809 return vuzp_p8(a, b); 810 // CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 811 // CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 812 } 813 poly16x4x2_t test_vuzp_p16(poly16x4_t a, poly16x4_t b) { 814 // CHECK-LABEL: test_vuzp_p16 815 return vuzp_p16(a, b); 816 // CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 817 // CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 818 } 819 int8x16x2_t test_vuzpq_s8(int8x16_t a, int8x16_t b) { 820 // CHECK-LABEL: test_vuzpq_s8 821 return vuzpq_s8(a, b); 822 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 823 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 824 } 825 int16x8x2_t test_vuzpq_s16(int16x8_t a, int16x8_t b) { 826 // CHECK-LABEL: test_vuzpq_s16 827 return vuzpq_s16(a, b); 828 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 829 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 830 } 831 int32x4x2_t test_vuzpq_s32(int32x4_t a, int32x4_t b) { 832 // CHECK-LABEL: test_vuzpq_s32 833 return vuzpq_s32(a, b); 834 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 835 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 836 } 837 uint8x16x2_t test_vuzpq_u8(uint8x16_t a, uint8x16_t b) { 838 // CHECK-LABEL: test_vuzpq_u8 839 return vuzpq_u8(a, b); 840 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 841 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 842 } 843 uint16x8x2_t test_vuzpq_u16(uint16x8_t a, uint16x8_t b) { 844 // CHECK-LABEL: test_vuzpq_u16 845 return vuzpq_u16(a, b); 846 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 847 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 848 } 849 uint32x4x2_t test_vuzpq_u32(uint32x4_t a, uint32x4_t b) { 850 // CHECK-LABEL: test_vuzpq_u32 851 return vuzpq_u32(a, b); 852 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 853 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 854 } 855 float32x4x2_t test_vuzpq_f32(float32x4_t a, float32x4_t b) { 856 // CHECK-LABEL: test_vuzpq_f32 857 return vuzpq_f32(a, b); 858 // CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 859 // CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 860 } 861 poly8x16x2_t test_vuzpq_p8(poly8x16_t a, poly8x16_t b) { 862 // CHECK-LABEL: test_vuzpq_p8 863 return vuzpq_p8(a, b); 864 // CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 865 // CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 866 } 867 poly16x8x2_t test_vuzpq_p16(poly16x8_t a, poly16x8_t b) { 868 // CHECK-LABEL: test_vuzpq_p16 869 return vuzpq_p16(a, b); 870 // CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 871 // CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 872 } 873 874 int8x8x2_t test_vzip_s8(int8x8_t a, int8x8_t b) { 875 // CHECK-LABEL: test_vzip_s8 876 return vzip_s8(a, b); 877 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 878 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 879 } 880 881 int16x4x2_t test_vzip_s16(int16x4_t a, int16x4_t b) { 882 // CHECK-LABEL: test_vzip_s16 883 return vzip_s16(a, b); 884 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 885 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 886 } 887 int32x2x2_t test_vzip_s32(int32x2_t a, int32x2_t b) { 888 // CHECK-LABEL: test_vzip_s32 889 return vzip_s32(a, b); 890 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 891 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 892 } 893 uint8x8x2_t test_vzip_u8(uint8x8_t a, uint8x8_t b) { 894 // CHECK-LABEL: test_vzip_u8 895 return vzip_u8(a, b); 896 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 897 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 898 } 899 uint16x4x2_t test_vzip_u16(uint16x4_t a, uint16x4_t b) { 900 // CHECK-LABEL: test_vzip_u16 901 return vzip_u16(a, b); 902 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 903 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 904 } 905 uint32x2x2_t test_vzip_u32(uint32x2_t a, uint32x2_t b) { 906 // CHECK-LABEL: test_vzip_u32 907 return vzip_u32(a, b); 908 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 909 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 910 } 911 float32x2x2_t test_vzip_f32(float32x2_t a, float32x2_t b) { 912 // CHECK-LABEL: test_vzip_f32 913 return vzip_f32(a, b); 914 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 915 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 916 } 917 poly8x8x2_t test_vzip_p8(poly8x8_t a, poly8x8_t b) { 918 // CHECK-LABEL: test_vzip_p8 919 return vzip_p8(a, b); 920 // CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 921 // CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 922 } 923 poly16x4x2_t test_vzip_p16(poly16x4_t a, poly16x4_t b) { 924 // CHECK-LABEL: test_vzip_p16 925 return vzip_p16(a, b); 926 // CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 927 // CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 928 } 929 int8x16x2_t test_vzipq_s8(int8x16_t a, int8x16_t b) { 930 // CHECK-LABEL: test_vzipq_s8 931 return vzipq_s8(a, b); 932 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 933 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 934 } 935 int16x8x2_t test_vzipq_s16(int16x8_t a, int16x8_t b) { 936 // CHECK-LABEL: test_vzipq_s16 937 return vzipq_s16(a, b); 938 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 939 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 940 } 941 int32x4x2_t test_vzipq_s32(int32x4_t a, int32x4_t b) { 942 // CHECK-LABEL: test_vzipq_s32 943 return vzipq_s32(a, b); 944 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 945 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 946 } 947 uint8x16x2_t test_vzipq_u8(uint8x16_t a, uint8x16_t b) { 948 // CHECK-LABEL: test_vzipq_u8 949 return vzipq_u8(a, b); 950 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 951 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 952 } 953 uint16x8x2_t test_vzipq_u16(uint16x8_t a, uint16x8_t b) { 954 // CHECK-LABEL: test_vzipq_u16 955 return vzipq_u16(a, b); 956 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 957 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 958 } 959 uint32x4x2_t test_vzipq_u32(uint32x4_t a, uint32x4_t b) { 960 // CHECK-LABEL: test_vzipq_u32 961 return vzipq_u32(a, b); 962 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 963 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 964 } 965 float32x4x2_t test_vzipq_f32(float32x4_t a, float32x4_t b) { 966 // CHECK-LABEL: test_vzipq_f32 967 return vzipq_f32(a, b); 968 // CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 969 // CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 970 } 971 poly8x16x2_t test_vzipq_p8(poly8x16_t a, poly8x16_t b) { 972 // CHECK-LABEL: test_vzipq_p8 973 return vzipq_p8(a, b); 974 // CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 975 // CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 976 } 977 poly16x8x2_t test_vzipq_p16(poly16x8_t a, poly16x8_t b) { 978 // CHECK-LABEL: test_vzipq_p16 979 return vzipq_p16(a, b); 980 // CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 981 // CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 982 } 983 984 int8x8x2_t test_vtrn_s8(int8x8_t a, int8x8_t b) { 985 // CHECK-LABEL: test_vtrn_s8 986 return vtrn_s8(a, b); 987 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 988 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 989 } 990 991 int16x4x2_t test_vtrn_s16(int16x4_t a, int16x4_t b) { 992 // CHECK-LABEL: test_vtrn_s16 993 return vtrn_s16(a, b); 994 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 995 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 996 } 997 int32x2x2_t test_vtrn_s32(int32x2_t a, int32x2_t b) { 998 // CHECK-LABEL: test_vtrn_s32 999 return vtrn_s32(a, b); 1000 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 1001 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 1002 } 1003 uint8x8x2_t test_vtrn_u8(uint8x8_t a, uint8x8_t b) { 1004 // CHECK-LABEL: test_vtrn_u8 1005 return vtrn_u8(a, b); 1006 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1007 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1008 } 1009 uint16x4x2_t test_vtrn_u16(uint16x4_t a, uint16x4_t b) { 1010 // CHECK-LABEL: test_vtrn_u16 1011 return vtrn_u16(a, b); 1012 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1013 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1014 } 1015 uint32x2x2_t test_vtrn_u32(uint32x2_t a, uint32x2_t b) { 1016 // CHECK-LABEL: test_vtrn_u32 1017 return vtrn_u32(a, b); 1018 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 1019 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 1020 } 1021 float32x2x2_t test_vtrn_f32(float32x2_t a, float32x2_t b) { 1022 // CHECK-LABEL: test_vtrn_f32 1023 return vtrn_f32(a, b); 1024 // CHECK: {{ins v[0-9]+.s\[1\], v[0-9]+.s\[0\]|zip1 v2.2s, v0.2s, v1.2s}} 1025 // CHECK: {{ins v[0-9]+.s\[0\], v[0-9]+.s\[1\]|zip2 v1.2s, v0.2s, v1.2s}} 1026 } 1027 poly8x8x2_t test_vtrn_p8(poly8x8_t a, poly8x8_t b) { 1028 // CHECK-LABEL: test_vtrn_p8 1029 return vtrn_p8(a, b); 1030 // CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1031 // CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1032 } 1033 poly16x4x2_t test_vtrn_p16(poly16x4_t a, poly16x4_t b) { 1034 // CHECK-LABEL: test_vtrn_p16 1035 return vtrn_p16(a, b); 1036 // CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1037 // CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1038 } 1039 int8x16x2_t test_vtrnq_s8(int8x16_t a, int8x16_t b) { 1040 // CHECK-LABEL: test_vtrnq_s8 1041 return vtrnq_s8(a, b); 1042 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1043 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1044 } 1045 int16x8x2_t test_vtrnq_s16(int16x8_t a, int16x8_t b) { 1046 // CHECK-LABEL: test_vtrnq_s16 1047 return vtrnq_s16(a, b); 1048 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1049 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1050 } 1051 int32x4x2_t test_vtrnq_s32(int32x4_t a, int32x4_t b) { 1052 // CHECK-LABEL: test_vtrnq_s32 1053 return vtrnq_s32(a, b); 1054 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1055 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1056 } 1057 uint8x16x2_t test_vtrnq_u8(uint8x16_t a, uint8x16_t b) { 1058 // CHECK-LABEL: test_vtrnq_u8 1059 return vtrnq_u8(a, b); 1060 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1061 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1062 } 1063 uint16x8x2_t test_vtrnq_u16(uint16x8_t a, uint16x8_t b) { 1064 // CHECK-LABEL: test_vtrnq_u16 1065 return vtrnq_u16(a, b); 1066 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1067 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1068 } 1069 uint32x4x2_t test_vtrnq_u32(uint32x4_t a, uint32x4_t b) { 1070 // CHECK-LABEL: test_vtrnq_u32 1071 return vtrnq_u32(a, b); 1072 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1073 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1074 } 1075 float32x4x2_t test_vtrnq_f32(float32x4_t a, float32x4_t b) { 1076 // CHECK-LABEL: test_vtrnq_f32 1077 return vtrnq_f32(a, b); 1078 // CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1079 // CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1080 } 1081 poly8x16x2_t test_vtrnq_p8(poly8x16_t a, poly8x16_t b) { 1082 // CHECK-LABEL: test_vtrnq_p8 1083 return vtrnq_p8(a, b); 1084 // CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1085 // CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1086 } 1087 poly16x8x2_t test_vtrnq_p16(poly16x8_t a, poly16x8_t b) { 1088 // CHECK-LABEL: test_vtrnq_p16 1089 return vtrnq_p16(a, b); 1090 // CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1091 // CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1092 } 1093