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 8int8x8_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 14int8x16_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 20int16x4_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 26int16x8_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 32int32x2_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 38int32x4_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 44int64x2_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 50uint8x8_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 56uint8x16_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 62uint16x4_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 68uint16x8_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 74uint32x2_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 80uint32x4_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 86uint64x2_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 92float32x2_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 98float32x4_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 104float64x2_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 110poly8x8_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 116poly8x16_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 122poly16x4_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 128poly16x8_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 134int8x8_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 140int8x16_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 146int16x4_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 152int16x8_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 158int32x2_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 164int32x4_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 170int64x2_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 176uint8x8_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 182uint8x16_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 188uint16x4_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 194uint16x8_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 200uint32x2_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 206uint32x4_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 212uint64x2_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 218float32x2_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 224float32x4_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 230float64x2_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 236poly8x8_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 242poly8x16_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 248poly16x4_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 254poly16x8_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 260int8x8_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 266int8x16_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 272int16x4_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 278int16x8_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 284int32x2_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 290int32x4_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 296int64x2_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 302uint8x8_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 308uint8x16_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 314uint16x4_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 320uint16x8_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 326uint32x2_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 332uint32x4_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 338uint64x2_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 344float32x2_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 350float32x4_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 356float64x2_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 362poly8x8_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 368poly8x16_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 374poly16x4_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 380poly16x8_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 386int8x8_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 392int8x16_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 398int16x4_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 404int16x8_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 410int32x2_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 416int32x4_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 422int64x2_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 428uint8x8_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 434uint8x16_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 440uint16x4_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 446uint16x8_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 452uint32x2_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 458uint32x4_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 464uint64x2_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 470float32x2_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 476float32x4_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 482float64x2_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 488poly8x8_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 494poly8x16_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 500poly16x4_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 506poly16x8_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 512int8x8_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 518int8x16_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 524int16x4_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 530int16x8_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 536int32x2_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 542int32x4_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 548int64x2_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 554uint8x8_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 560uint8x16_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 566uint16x4_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 572uint16x8_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 578uint32x2_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 584uint32x4_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 590uint64x2_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 596float32x2_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 602float32x4_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 608float64x2_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 614poly8x8_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 620poly8x16_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 626poly16x4_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 632poly16x8_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 638int8x8_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 644int8x16_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 650int16x4_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 656int16x8_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 662int32x2_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 668int32x4_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 674int64x2_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 680uint8x8_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 686uint8x16_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 692uint16x4_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 698uint16x8_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 704uint32x2_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 710uint32x4_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 716uint64x2_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 722float32x2_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 728float32x4_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 734float64x2_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 740poly8x8_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 746poly8x16_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 752poly16x4_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 758poly16x8_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 764int8x8x2_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 771int16x4x2_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} 777int32x2x2_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} 783uint8x8x2_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} 789uint16x4x2_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} 795uint32x2x2_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} 801float32x2x2_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} 807poly8x8x2_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} 813poly16x4x2_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} 819int8x16x2_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} 825int16x8x2_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} 831int32x4x2_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} 837uint8x16x2_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} 843uint16x8x2_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} 849uint32x4x2_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} 855float32x4x2_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} 861poly8x16x2_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} 867poly16x8x2_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 874int8x8x2_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 881int16x4x2_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} 887int32x2x2_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} 893uint8x8x2_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} 899uint16x4x2_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} 905uint32x2x2_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} 911float32x2x2_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} 917poly8x8x2_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} 923poly16x4x2_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} 929int8x16x2_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} 935int16x8x2_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} 941int32x4x2_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} 947uint8x16x2_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} 953uint16x8x2_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} 959uint32x4x2_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} 965float32x4x2_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} 971poly8x16x2_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} 977poly16x8x2_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 984int8x8x2_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 991int16x4x2_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} 997int32x2x2_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} 1003uint8x8x2_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} 1009uint16x4x2_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} 1015uint32x2x2_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} 1021float32x2x2_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} 1027poly8x8x2_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} 1033poly16x4x2_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} 1039int8x16x2_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} 1045int16x8x2_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} 1051int32x4x2_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} 1057uint8x16x2_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} 1063uint16x8x2_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} 1069uint32x4x2_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} 1075float32x4x2_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} 1081poly8x16x2_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} 1087poly16x8x2_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