1; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s --check-prefix=CHECK 2 3%struct.int8x8x2_t = type { [2 x <8 x i8>] } 4%struct.int16x4x2_t = type { [2 x <4 x i16>] } 5%struct.int32x2x2_t = type { [2 x <2 x i32>] } 6%struct.uint8x8x2_t = type { [2 x <8 x i8>] } 7%struct.uint16x4x2_t = type { [2 x <4 x i16>] } 8%struct.uint32x2x2_t = type { [2 x <2 x i32>] } 9%struct.float32x2x2_t = type { [2 x <2 x float>] } 10%struct.poly8x8x2_t = type { [2 x <8 x i8>] } 11%struct.poly16x4x2_t = type { [2 x <4 x i16>] } 12%struct.int8x16x2_t = type { [2 x <16 x i8>] } 13%struct.int16x8x2_t = type { [2 x <8 x i16>] } 14%struct.int32x4x2_t = type { [2 x <4 x i32>] } 15%struct.uint8x16x2_t = type { [2 x <16 x i8>] } 16%struct.uint16x8x2_t = type { [2 x <8 x i16>] } 17%struct.uint32x4x2_t = type { [2 x <4 x i32>] } 18%struct.float32x4x2_t = type { [2 x <4 x float>] } 19%struct.poly8x16x2_t = type { [2 x <16 x i8>] } 20%struct.poly16x8x2_t = type { [2 x <8 x i16>] } 21 22define <8 x i8> @test_vuzp1_s8(<8 x i8> %a, <8 x i8> %b) { 23; CHECK-LABEL: test_vuzp1_s8: 24; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 25entry: 26 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 27 ret <8 x i8> %shuffle.i 28} 29 30define <16 x i8> @test_vuzp1q_s8(<16 x i8> %a, <16 x i8> %b) { 31; CHECK-LABEL: test_vuzp1q_s8: 32; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 33entry: 34 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 35 ret <16 x i8> %shuffle.i 36} 37 38define <4 x i16> @test_vuzp1_s16(<4 x i16> %a, <4 x i16> %b) { 39; CHECK-LABEL: test_vuzp1_s16: 40; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 41entry: 42 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 43 ret <4 x i16> %shuffle.i 44} 45 46define <8 x i16> @test_vuzp1q_s16(<8 x i16> %a, <8 x i16> %b) { 47; CHECK-LABEL: test_vuzp1q_s16: 48; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 49entry: 50 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 51 ret <8 x i16> %shuffle.i 52} 53 54define <2 x i32> @test_vuzp1_s32(<2 x i32> %a, <2 x i32> %b) { 55; CHECK-LABEL: test_vuzp1_s32: 56; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 57entry: 58 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 59 ret <2 x i32> %shuffle.i 60} 61 62define <4 x i32> @test_vuzp1q_s32(<4 x i32> %a, <4 x i32> %b) { 63; CHECK-LABEL: test_vuzp1q_s32: 64; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 65entry: 66 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 67 ret <4 x i32> %shuffle.i 68} 69 70define <2 x i64> @test_vuzp1q_s64(<2 x i64> %a, <2 x i64> %b) { 71; CHECK-LABEL: test_vuzp1q_s64: 72; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 73entry: 74 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2> 75 ret <2 x i64> %shuffle.i 76} 77 78define <8 x i8> @test_vuzp1_u8(<8 x i8> %a, <8 x i8> %b) { 79; CHECK-LABEL: test_vuzp1_u8: 80; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 81entry: 82 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 83 ret <8 x i8> %shuffle.i 84} 85 86define <16 x i8> @test_vuzp1q_u8(<16 x i8> %a, <16 x i8> %b) { 87; CHECK-LABEL: test_vuzp1q_u8: 88; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 89entry: 90 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 91 ret <16 x i8> %shuffle.i 92} 93 94define <4 x i16> @test_vuzp1_u16(<4 x i16> %a, <4 x i16> %b) { 95; CHECK-LABEL: test_vuzp1_u16: 96; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 97entry: 98 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 99 ret <4 x i16> %shuffle.i 100} 101 102define <8 x i16> @test_vuzp1q_u16(<8 x i16> %a, <8 x i16> %b) { 103; CHECK-LABEL: test_vuzp1q_u16: 104; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 105entry: 106 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 107 ret <8 x i16> %shuffle.i 108} 109 110define <2 x i32> @test_vuzp1_u32(<2 x i32> %a, <2 x i32> %b) { 111; CHECK-LABEL: test_vuzp1_u32: 112; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 113entry: 114 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 115 ret <2 x i32> %shuffle.i 116} 117 118define <4 x i32> @test_vuzp1q_u32(<4 x i32> %a, <4 x i32> %b) { 119; CHECK-LABEL: test_vuzp1q_u32: 120; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 121entry: 122 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 123 ret <4 x i32> %shuffle.i 124} 125 126define <2 x i64> @test_vuzp1q_u64(<2 x i64> %a, <2 x i64> %b) { 127; CHECK-LABEL: test_vuzp1q_u64: 128; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 129entry: 130 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2> 131 ret <2 x i64> %shuffle.i 132} 133 134define <2 x float> @test_vuzp1_f32(<2 x float> %a, <2 x float> %b) { 135; CHECK-LABEL: test_vuzp1_f32: 136; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 137entry: 138 %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2> 139 ret <2 x float> %shuffle.i 140} 141 142define <4 x float> @test_vuzp1q_f32(<4 x float> %a, <4 x float> %b) { 143; CHECK-LABEL: test_vuzp1q_f32: 144; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 145entry: 146 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 147 ret <4 x float> %shuffle.i 148} 149 150define <2 x double> @test_vuzp1q_f64(<2 x double> %a, <2 x double> %b) { 151; CHECK-LABEL: test_vuzp1q_f64: 152; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 153entry: 154 %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2> 155 ret <2 x double> %shuffle.i 156} 157 158define <8 x i8> @test_vuzp1_p8(<8 x i8> %a, <8 x i8> %b) { 159; CHECK-LABEL: test_vuzp1_p8: 160; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 161entry: 162 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 163 ret <8 x i8> %shuffle.i 164} 165 166define <16 x i8> @test_vuzp1q_p8(<16 x i8> %a, <16 x i8> %b) { 167; CHECK-LABEL: test_vuzp1q_p8: 168; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 169entry: 170 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 171 ret <16 x i8> %shuffle.i 172} 173 174define <4 x i16> @test_vuzp1_p16(<4 x i16> %a, <4 x i16> %b) { 175; CHECK-LABEL: test_vuzp1_p16: 176; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 177entry: 178 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 179 ret <4 x i16> %shuffle.i 180} 181 182define <8 x i16> @test_vuzp1q_p16(<8 x i16> %a, <8 x i16> %b) { 183; CHECK-LABEL: test_vuzp1q_p16: 184; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 185entry: 186 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 187 ret <8 x i16> %shuffle.i 188} 189 190define <8 x i8> @test_vuzp2_s8(<8 x i8> %a, <8 x i8> %b) { 191; CHECK-LABEL: test_vuzp2_s8: 192; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 193entry: 194 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 195 ret <8 x i8> %shuffle.i 196} 197 198define <16 x i8> @test_vuzp2q_s8(<16 x i8> %a, <16 x i8> %b) { 199; CHECK-LABEL: test_vuzp2q_s8: 200; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 201entry: 202 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 203 ret <16 x i8> %shuffle.i 204} 205 206define <4 x i16> @test_vuzp2_s16(<4 x i16> %a, <4 x i16> %b) { 207; CHECK-LABEL: test_vuzp2_s16: 208; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 209entry: 210 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 211 ret <4 x i16> %shuffle.i 212} 213 214define <8 x i16> @test_vuzp2q_s16(<8 x i16> %a, <8 x i16> %b) { 215; CHECK-LABEL: test_vuzp2q_s16: 216; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 217entry: 218 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 219 ret <8 x i16> %shuffle.i 220} 221 222define <2 x i32> @test_vuzp2_s32(<2 x i32> %a, <2 x i32> %b) { 223; CHECK-LABEL: test_vuzp2_s32: 224; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 225entry: 226 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 227 ret <2 x i32> %shuffle.i 228} 229 230define <4 x i32> @test_vuzp2q_s32(<4 x i32> %a, <4 x i32> %b) { 231; CHECK-LABEL: test_vuzp2q_s32: 232; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 233entry: 234 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 235 ret <4 x i32> %shuffle.i 236} 237 238define <2 x i64> @test_vuzp2q_s64(<2 x i64> %a, <2 x i64> %b) { 239; CHECK-LABEL: test_vuzp2q_s64: 240; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 241entry: 242 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3> 243 ret <2 x i64> %shuffle.i 244} 245 246define <8 x i8> @test_vuzp2_u8(<8 x i8> %a, <8 x i8> %b) { 247; CHECK-LABEL: test_vuzp2_u8: 248; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 249entry: 250 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 251 ret <8 x i8> %shuffle.i 252} 253 254define <16 x i8> @test_vuzp2q_u8(<16 x i8> %a, <16 x i8> %b) { 255; CHECK-LABEL: test_vuzp2q_u8: 256; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 257entry: 258 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 259 ret <16 x i8> %shuffle.i 260} 261 262define <4 x i16> @test_vuzp2_u16(<4 x i16> %a, <4 x i16> %b) { 263; CHECK-LABEL: test_vuzp2_u16: 264; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 265entry: 266 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 267 ret <4 x i16> %shuffle.i 268} 269 270define <8 x i16> @test_vuzp2q_u16(<8 x i16> %a, <8 x i16> %b) { 271; CHECK-LABEL: test_vuzp2q_u16: 272; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 273entry: 274 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 275 ret <8 x i16> %shuffle.i 276} 277 278define <2 x i32> @test_vuzp2_u32(<2 x i32> %a, <2 x i32> %b) { 279; CHECK-LABEL: test_vuzp2_u32: 280; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 281entry: 282 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 283 ret <2 x i32> %shuffle.i 284} 285 286define <4 x i32> @test_vuzp2q_u32(<4 x i32> %a, <4 x i32> %b) { 287; CHECK-LABEL: test_vuzp2q_u32: 288; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 289entry: 290 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 291 ret <4 x i32> %shuffle.i 292} 293 294define <2 x i64> @test_vuzp2q_u64(<2 x i64> %a, <2 x i64> %b) { 295; CHECK-LABEL: test_vuzp2q_u64: 296; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 297entry: 298 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3> 299 ret <2 x i64> %shuffle.i 300} 301 302define <2 x float> @test_vuzp2_f32(<2 x float> %a, <2 x float> %b) { 303; CHECK-LABEL: test_vuzp2_f32: 304; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 305entry: 306 %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3> 307 ret <2 x float> %shuffle.i 308} 309 310define <4 x float> @test_vuzp2q_f32(<4 x float> %a, <4 x float> %b) { 311; CHECK-LABEL: test_vuzp2q_f32: 312; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 313entry: 314 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 315 ret <4 x float> %shuffle.i 316} 317 318define <2 x double> @test_vuzp2q_f64(<2 x double> %a, <2 x double> %b) { 319; CHECK-LABEL: test_vuzp2q_f64: 320; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 321entry: 322 %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3> 323 ret <2 x double> %shuffle.i 324} 325 326define <8 x i8> @test_vuzp2_p8(<8 x i8> %a, <8 x i8> %b) { 327; CHECK-LABEL: test_vuzp2_p8: 328; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 329entry: 330 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 331 ret <8 x i8> %shuffle.i 332} 333 334define <16 x i8> @test_vuzp2q_p8(<16 x i8> %a, <16 x i8> %b) { 335; CHECK-LABEL: test_vuzp2q_p8: 336; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 337entry: 338 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 339 ret <16 x i8> %shuffle.i 340} 341 342define <4 x i16> @test_vuzp2_p16(<4 x i16> %a, <4 x i16> %b) { 343; CHECK-LABEL: test_vuzp2_p16: 344; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 345entry: 346 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 347 ret <4 x i16> %shuffle.i 348} 349 350define <8 x i16> @test_vuzp2q_p16(<8 x i16> %a, <8 x i16> %b) { 351; CHECK-LABEL: test_vuzp2q_p16: 352; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 353entry: 354 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 355 ret <8 x i16> %shuffle.i 356} 357 358define <8 x i8> @test_vzip1_s8(<8 x i8> %a, <8 x i8> %b) { 359; CHECK-LABEL: test_vzip1_s8: 360; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 361entry: 362 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 363 ret <8 x i8> %shuffle.i 364} 365 366define <16 x i8> @test_vzip1q_s8(<16 x i8> %a, <16 x i8> %b) { 367; CHECK-LABEL: test_vzip1q_s8: 368; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 369entry: 370 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 371 ret <16 x i8> %shuffle.i 372} 373 374define <4 x i16> @test_vzip1_s16(<4 x i16> %a, <4 x i16> %b) { 375; CHECK-LABEL: test_vzip1_s16: 376; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 377entry: 378 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 379 ret <4 x i16> %shuffle.i 380} 381 382define <8 x i16> @test_vzip1q_s16(<8 x i16> %a, <8 x i16> %b) { 383; CHECK-LABEL: test_vzip1q_s16: 384; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 385entry: 386 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 387 ret <8 x i16> %shuffle.i 388} 389 390define <2 x i32> @test_vzip1_s32(<2 x i32> %a, <2 x i32> %b) { 391; CHECK-LABEL: test_vzip1_s32: 392; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 393entry: 394 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 395 ret <2 x i32> %shuffle.i 396} 397 398define <4 x i32> @test_vzip1q_s32(<4 x i32> %a, <4 x i32> %b) { 399; CHECK-LABEL: test_vzip1q_s32: 400; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 401entry: 402 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 403 ret <4 x i32> %shuffle.i 404} 405 406define <2 x i64> @test_vzip1q_s64(<2 x i64> %a, <2 x i64> %b) { 407; CHECK-LABEL: test_vzip1q_s64: 408; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 409entry: 410 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2> 411 ret <2 x i64> %shuffle.i 412} 413 414define <8 x i8> @test_vzip1_u8(<8 x i8> %a, <8 x i8> %b) { 415; CHECK-LABEL: test_vzip1_u8: 416; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 417entry: 418 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 419 ret <8 x i8> %shuffle.i 420} 421 422define <16 x i8> @test_vzip1q_u8(<16 x i8> %a, <16 x i8> %b) { 423; CHECK-LABEL: test_vzip1q_u8: 424; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 425entry: 426 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 427 ret <16 x i8> %shuffle.i 428} 429 430define <4 x i16> @test_vzip1_u16(<4 x i16> %a, <4 x i16> %b) { 431; CHECK-LABEL: test_vzip1_u16: 432; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 433entry: 434 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 435 ret <4 x i16> %shuffle.i 436} 437 438define <8 x i16> @test_vzip1q_u16(<8 x i16> %a, <8 x i16> %b) { 439; CHECK-LABEL: test_vzip1q_u16: 440; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 441entry: 442 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 443 ret <8 x i16> %shuffle.i 444} 445 446define <2 x i32> @test_vzip1_u32(<2 x i32> %a, <2 x i32> %b) { 447; CHECK-LABEL: test_vzip1_u32: 448; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 449entry: 450 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 451 ret <2 x i32> %shuffle.i 452} 453 454define <4 x i32> @test_vzip1q_u32(<4 x i32> %a, <4 x i32> %b) { 455; CHECK-LABEL: test_vzip1q_u32: 456; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 457entry: 458 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 459 ret <4 x i32> %shuffle.i 460} 461 462define <2 x i64> @test_vzip1q_u64(<2 x i64> %a, <2 x i64> %b) { 463; CHECK-LABEL: test_vzip1q_u64: 464; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 465entry: 466 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2> 467 ret <2 x i64> %shuffle.i 468} 469 470define <2 x float> @test_vzip1_f32(<2 x float> %a, <2 x float> %b) { 471; CHECK-LABEL: test_vzip1_f32: 472; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 473entry: 474 %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2> 475 ret <2 x float> %shuffle.i 476} 477 478define <4 x float> @test_vzip1q_f32(<4 x float> %a, <4 x float> %b) { 479; CHECK-LABEL: test_vzip1q_f32: 480; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 481entry: 482 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 483 ret <4 x float> %shuffle.i 484} 485 486define <2 x double> @test_vzip1q_f64(<2 x double> %a, <2 x double> %b) { 487; CHECK-LABEL: test_vzip1q_f64: 488; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 489entry: 490 %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2> 491 ret <2 x double> %shuffle.i 492} 493 494define <8 x i8> @test_vzip1_p8(<8 x i8> %a, <8 x i8> %b) { 495; CHECK-LABEL: test_vzip1_p8: 496; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 497entry: 498 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 499 ret <8 x i8> %shuffle.i 500} 501 502define <16 x i8> @test_vzip1q_p8(<16 x i8> %a, <16 x i8> %b) { 503; CHECK-LABEL: test_vzip1q_p8: 504; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 505entry: 506 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 507 ret <16 x i8> %shuffle.i 508} 509 510define <4 x i16> @test_vzip1_p16(<4 x i16> %a, <4 x i16> %b) { 511; CHECK-LABEL: test_vzip1_p16: 512; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 513entry: 514 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 515 ret <4 x i16> %shuffle.i 516} 517 518define <8 x i16> @test_vzip1q_p16(<8 x i16> %a, <8 x i16> %b) { 519; CHECK-LABEL: test_vzip1q_p16: 520; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 521entry: 522 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 523 ret <8 x i16> %shuffle.i 524} 525 526define <8 x i8> @test_vzip2_s8(<8 x i8> %a, <8 x i8> %b) { 527; CHECK-LABEL: test_vzip2_s8: 528; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 529entry: 530 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 531 ret <8 x i8> %shuffle.i 532} 533 534define <16 x i8> @test_vzip2q_s8(<16 x i8> %a, <16 x i8> %b) { 535; CHECK-LABEL: test_vzip2q_s8: 536; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 537entry: 538 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 539 ret <16 x i8> %shuffle.i 540} 541 542define <4 x i16> @test_vzip2_s16(<4 x i16> %a, <4 x i16> %b) { 543; CHECK-LABEL: test_vzip2_s16: 544; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 545entry: 546 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 547 ret <4 x i16> %shuffle.i 548} 549 550define <8 x i16> @test_vzip2q_s16(<8 x i16> %a, <8 x i16> %b) { 551; CHECK-LABEL: test_vzip2q_s16: 552; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 553entry: 554 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 555 ret <8 x i16> %shuffle.i 556} 557 558define <2 x i32> @test_vzip2_s32(<2 x i32> %a, <2 x i32> %b) { 559; CHECK-LABEL: test_vzip2_s32: 560; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 561entry: 562 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 563 ret <2 x i32> %shuffle.i 564} 565 566define <4 x i32> @test_vzip2q_s32(<4 x i32> %a, <4 x i32> %b) { 567; CHECK-LABEL: test_vzip2q_s32: 568; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 569entry: 570 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 571 ret <4 x i32> %shuffle.i 572} 573 574define <2 x i64> @test_vzip2q_s64(<2 x i64> %a, <2 x i64> %b) { 575; CHECK-LABEL: test_vzip2q_s64: 576; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 577entry: 578 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3> 579 ret <2 x i64> %shuffle.i 580} 581 582define <8 x i8> @test_vzip2_u8(<8 x i8> %a, <8 x i8> %b) { 583; CHECK-LABEL: test_vzip2_u8: 584; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 585entry: 586 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 587 ret <8 x i8> %shuffle.i 588} 589 590define <16 x i8> @test_vzip2q_u8(<16 x i8> %a, <16 x i8> %b) { 591; CHECK-LABEL: test_vzip2q_u8: 592; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 593entry: 594 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 595 ret <16 x i8> %shuffle.i 596} 597 598define <4 x i16> @test_vzip2_u16(<4 x i16> %a, <4 x i16> %b) { 599; CHECK-LABEL: test_vzip2_u16: 600; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 601entry: 602 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 603 ret <4 x i16> %shuffle.i 604} 605 606define <8 x i16> @test_vzip2q_u16(<8 x i16> %a, <8 x i16> %b) { 607; CHECK-LABEL: test_vzip2q_u16: 608; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 609entry: 610 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 611 ret <8 x i16> %shuffle.i 612} 613 614define <2 x i32> @test_vzip2_u32(<2 x i32> %a, <2 x i32> %b) { 615; CHECK-LABEL: test_vzip2_u32: 616; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 617entry: 618 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 619 ret <2 x i32> %shuffle.i 620} 621 622define <4 x i32> @test_vzip2q_u32(<4 x i32> %a, <4 x i32> %b) { 623; CHECK-LABEL: test_vzip2q_u32: 624; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 625entry: 626 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 627 ret <4 x i32> %shuffle.i 628} 629 630define <2 x i64> @test_vzip2q_u64(<2 x i64> %a, <2 x i64> %b) { 631; CHECK-LABEL: test_vzip2q_u64: 632; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 633entry: 634 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3> 635 ret <2 x i64> %shuffle.i 636} 637 638define <2 x float> @test_vzip2_f32(<2 x float> %a, <2 x float> %b) { 639; CHECK-LABEL: test_vzip2_f32: 640; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 641entry: 642 %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3> 643 ret <2 x float> %shuffle.i 644} 645 646define <4 x float> @test_vzip2q_f32(<4 x float> %a, <4 x float> %b) { 647; CHECK-LABEL: test_vzip2q_f32: 648; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 649entry: 650 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 651 ret <4 x float> %shuffle.i 652} 653 654define <2 x double> @test_vzip2q_f64(<2 x double> %a, <2 x double> %b) { 655; CHECK-LABEL: test_vzip2q_f64: 656; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 657entry: 658 %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3> 659 ret <2 x double> %shuffle.i 660} 661 662define <8 x i8> @test_vzip2_p8(<8 x i8> %a, <8 x i8> %b) { 663; CHECK-LABEL: test_vzip2_p8: 664; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 665entry: 666 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 667 ret <8 x i8> %shuffle.i 668} 669 670define <16 x i8> @test_vzip2q_p8(<16 x i8> %a, <16 x i8> %b) { 671; CHECK-LABEL: test_vzip2q_p8: 672; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 673entry: 674 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 675 ret <16 x i8> %shuffle.i 676} 677 678define <4 x i16> @test_vzip2_p16(<4 x i16> %a, <4 x i16> %b) { 679; CHECK-LABEL: test_vzip2_p16: 680; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 681entry: 682 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 683 ret <4 x i16> %shuffle.i 684} 685 686define <8 x i16> @test_vzip2q_p16(<8 x i16> %a, <8 x i16> %b) { 687; CHECK-LABEL: test_vzip2q_p16: 688; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 689entry: 690 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 691 ret <8 x i16> %shuffle.i 692} 693 694define <8 x i8> @test_vtrn1_s8(<8 x i8> %a, <8 x i8> %b) { 695; CHECK-LABEL: test_vtrn1_s8: 696; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 697entry: 698 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 699 ret <8 x i8> %shuffle.i 700} 701 702define <16 x i8> @test_vtrn1q_s8(<16 x i8> %a, <16 x i8> %b) { 703; CHECK-LABEL: test_vtrn1q_s8: 704; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 705entry: 706 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 707 ret <16 x i8> %shuffle.i 708} 709 710define <4 x i16> @test_vtrn1_s16(<4 x i16> %a, <4 x i16> %b) { 711; CHECK-LABEL: test_vtrn1_s16: 712; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 713entry: 714 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 715 ret <4 x i16> %shuffle.i 716} 717 718define <8 x i16> @test_vtrn1q_s16(<8 x i16> %a, <8 x i16> %b) { 719; CHECK-LABEL: test_vtrn1q_s16: 720; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 721entry: 722 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 723 ret <8 x i16> %shuffle.i 724} 725 726define <2 x i32> @test_vtrn1_s32(<2 x i32> %a, <2 x i32> %b) { 727; CHECK-LABEL: test_vtrn1_s32: 728; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 729entry: 730 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 731 ret <2 x i32> %shuffle.i 732} 733 734define <4 x i32> @test_vtrn1q_s32(<4 x i32> %a, <4 x i32> %b) { 735; CHECK-LABEL: test_vtrn1q_s32: 736; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 737entry: 738 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 739 ret <4 x i32> %shuffle.i 740} 741 742define <2 x i64> @test_vtrn1q_s64(<2 x i64> %a, <2 x i64> %b) { 743; CHECK-LABEL: test_vtrn1q_s64: 744; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 745entry: 746 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2> 747 ret <2 x i64> %shuffle.i 748} 749 750define <8 x i8> @test_vtrn1_u8(<8 x i8> %a, <8 x i8> %b) { 751; CHECK-LABEL: test_vtrn1_u8: 752; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 753entry: 754 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 755 ret <8 x i8> %shuffle.i 756} 757 758define <16 x i8> @test_vtrn1q_u8(<16 x i8> %a, <16 x i8> %b) { 759; CHECK-LABEL: test_vtrn1q_u8: 760; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 761entry: 762 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 763 ret <16 x i8> %shuffle.i 764} 765 766define <4 x i16> @test_vtrn1_u16(<4 x i16> %a, <4 x i16> %b) { 767; CHECK-LABEL: test_vtrn1_u16: 768; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 769entry: 770 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 771 ret <4 x i16> %shuffle.i 772} 773 774define <8 x i16> @test_vtrn1q_u16(<8 x i16> %a, <8 x i16> %b) { 775; CHECK-LABEL: test_vtrn1q_u16: 776; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 777entry: 778 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 779 ret <8 x i16> %shuffle.i 780} 781 782define <2 x i32> @test_vtrn1_u32(<2 x i32> %a, <2 x i32> %b) { 783; CHECK-LABEL: test_vtrn1_u32: 784; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 785entry: 786 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 787 ret <2 x i32> %shuffle.i 788} 789 790define <4 x i32> @test_vtrn1q_u32(<4 x i32> %a, <4 x i32> %b) { 791; CHECK-LABEL: test_vtrn1q_u32: 792; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 793entry: 794 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 795 ret <4 x i32> %shuffle.i 796} 797 798define <2 x i64> @test_vtrn1q_u64(<2 x i64> %a, <2 x i64> %b) { 799; CHECK-LABEL: test_vtrn1q_u64: 800; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 801entry: 802 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2> 803 ret <2 x i64> %shuffle.i 804} 805 806define <2 x float> @test_vtrn1_f32(<2 x float> %a, <2 x float> %b) { 807; CHECK-LABEL: test_vtrn1_f32: 808; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 809entry: 810 %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2> 811 ret <2 x float> %shuffle.i 812} 813 814define <4 x float> @test_vtrn1q_f32(<4 x float> %a, <4 x float> %b) { 815; CHECK-LABEL: test_vtrn1q_f32: 816; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 817entry: 818 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 819 ret <4 x float> %shuffle.i 820} 821 822define <2 x double> @test_vtrn1q_f64(<2 x double> %a, <2 x double> %b) { 823; CHECK-LABEL: test_vtrn1q_f64: 824; CHECK: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 825entry: 826 %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2> 827 ret <2 x double> %shuffle.i 828} 829 830define <8 x i8> @test_vtrn1_p8(<8 x i8> %a, <8 x i8> %b) { 831; CHECK-LABEL: test_vtrn1_p8: 832; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 833entry: 834 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 835 ret <8 x i8> %shuffle.i 836} 837 838define <16 x i8> @test_vtrn1q_p8(<16 x i8> %a, <16 x i8> %b) { 839; CHECK-LABEL: test_vtrn1q_p8: 840; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 841entry: 842 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 843 ret <16 x i8> %shuffle.i 844} 845 846define <4 x i16> @test_vtrn1_p16(<4 x i16> %a, <4 x i16> %b) { 847; CHECK-LABEL: test_vtrn1_p16: 848; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 849entry: 850 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 851 ret <4 x i16> %shuffle.i 852} 853 854define <8 x i16> @test_vtrn1q_p16(<8 x i16> %a, <8 x i16> %b) { 855; CHECK-LABEL: test_vtrn1q_p16: 856; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 857entry: 858 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 859 ret <8 x i16> %shuffle.i 860} 861 862define <8 x i8> @test_vtrn2_s8(<8 x i8> %a, <8 x i8> %b) { 863; CHECK-LABEL: test_vtrn2_s8: 864; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 865entry: 866 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 867 ret <8 x i8> %shuffle.i 868} 869 870define <16 x i8> @test_vtrn2q_s8(<16 x i8> %a, <16 x i8> %b) { 871; CHECK-LABEL: test_vtrn2q_s8: 872; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 873entry: 874 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 875 ret <16 x i8> %shuffle.i 876} 877 878define <4 x i16> @test_vtrn2_s16(<4 x i16> %a, <4 x i16> %b) { 879; CHECK-LABEL: test_vtrn2_s16: 880; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 881entry: 882 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 883 ret <4 x i16> %shuffle.i 884} 885 886define <8 x i16> @test_vtrn2q_s16(<8 x i16> %a, <8 x i16> %b) { 887; CHECK-LABEL: test_vtrn2q_s16: 888; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 889entry: 890 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 891 ret <8 x i16> %shuffle.i 892} 893 894define <2 x i32> @test_vtrn2_s32(<2 x i32> %a, <2 x i32> %b) { 895; CHECK-LABEL: test_vtrn2_s32: 896; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 897entry: 898 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 899 ret <2 x i32> %shuffle.i 900} 901 902define <4 x i32> @test_vtrn2q_s32(<4 x i32> %a, <4 x i32> %b) { 903; CHECK-LABEL: test_vtrn2q_s32: 904; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 905entry: 906 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 907 ret <4 x i32> %shuffle.i 908} 909 910define <2 x i64> @test_vtrn2q_s64(<2 x i64> %a, <2 x i64> %b) { 911; CHECK-LABEL: test_vtrn2q_s64: 912; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 913entry: 914 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3> 915 ret <2 x i64> %shuffle.i 916} 917 918define <8 x i8> @test_vtrn2_u8(<8 x i8> %a, <8 x i8> %b) { 919; CHECK-LABEL: test_vtrn2_u8: 920; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 921entry: 922 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 923 ret <8 x i8> %shuffle.i 924} 925 926define <16 x i8> @test_vtrn2q_u8(<16 x i8> %a, <16 x i8> %b) { 927; CHECK-LABEL: test_vtrn2q_u8: 928; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 929entry: 930 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 931 ret <16 x i8> %shuffle.i 932} 933 934define <4 x i16> @test_vtrn2_u16(<4 x i16> %a, <4 x i16> %b) { 935; CHECK-LABEL: test_vtrn2_u16: 936; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 937entry: 938 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 939 ret <4 x i16> %shuffle.i 940} 941 942define <8 x i16> @test_vtrn2q_u16(<8 x i16> %a, <8 x i16> %b) { 943; CHECK-LABEL: test_vtrn2q_u16: 944; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 945entry: 946 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 947 ret <8 x i16> %shuffle.i 948} 949 950define <2 x i32> @test_vtrn2_u32(<2 x i32> %a, <2 x i32> %b) { 951; CHECK-LABEL: test_vtrn2_u32: 952; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 953entry: 954 %shuffle.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 955 ret <2 x i32> %shuffle.i 956} 957 958define <4 x i32> @test_vtrn2q_u32(<4 x i32> %a, <4 x i32> %b) { 959; CHECK-LABEL: test_vtrn2q_u32: 960; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 961entry: 962 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 963 ret <4 x i32> %shuffle.i 964} 965 966define <2 x i64> @test_vtrn2q_u64(<2 x i64> %a, <2 x i64> %b) { 967; CHECK-LABEL: test_vtrn2q_u64: 968; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 969entry: 970 %shuffle.i = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3> 971 ret <2 x i64> %shuffle.i 972} 973 974define <2 x float> @test_vtrn2_f32(<2 x float> %a, <2 x float> %b) { 975; CHECK-LABEL: test_vtrn2_f32: 976; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 977entry: 978 %shuffle.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3> 979 ret <2 x float> %shuffle.i 980} 981 982define <4 x float> @test_vtrn2q_f32(<4 x float> %a, <4 x float> %b) { 983; CHECK-LABEL: test_vtrn2q_f32: 984; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 985entry: 986 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 987 ret <4 x float> %shuffle.i 988} 989 990define <2 x double> @test_vtrn2q_f64(<2 x double> %a, <2 x double> %b) { 991; CHECK-LABEL: test_vtrn2q_f64: 992; CHECK: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d 993entry: 994 %shuffle.i = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3> 995 ret <2 x double> %shuffle.i 996} 997 998define <8 x i8> @test_vtrn2_p8(<8 x i8> %a, <8 x i8> %b) { 999; CHECK-LABEL: test_vtrn2_p8: 1000; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1001entry: 1002 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1003 ret <8 x i8> %shuffle.i 1004} 1005 1006define <16 x i8> @test_vtrn2q_p8(<16 x i8> %a, <16 x i8> %b) { 1007; CHECK-LABEL: test_vtrn2q_p8: 1008; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1009entry: 1010 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 1011 ret <16 x i8> %shuffle.i 1012} 1013 1014define <4 x i16> @test_vtrn2_p16(<4 x i16> %a, <4 x i16> %b) { 1015; CHECK-LABEL: test_vtrn2_p16: 1016; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1017entry: 1018 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 1019 ret <4 x i16> %shuffle.i 1020} 1021 1022define <8 x i16> @test_vtrn2q_p16(<8 x i16> %a, <8 x i16> %b) { 1023; CHECK-LABEL: test_vtrn2q_p16: 1024; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1025entry: 1026 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1027 ret <8 x i16> %shuffle.i 1028} 1029 1030define <8 x i8> @test_same_vuzp1_s8(<8 x i8> %a) { 1031; CHECK-LABEL: test_same_vuzp1_s8: 1032; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1033entry: 1034 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1035 ret <8 x i8> %shuffle.i 1036} 1037 1038define <16 x i8> @test_same_vuzp1q_s8(<16 x i8> %a) { 1039; CHECK-LABEL: test_same_vuzp1q_s8: 1040; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1041entry: 1042 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 1043 ret <16 x i8> %shuffle.i 1044} 1045 1046define <4 x i16> @test_same_vuzp1_s16(<4 x i16> %a) { 1047; CHECK-LABEL: test_same_vuzp1_s16: 1048; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1049entry: 1050 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1051 ret <4 x i16> %shuffle.i 1052} 1053 1054define <8 x i16> @test_same_vuzp1q_s16(<8 x i16> %a) { 1055; CHECK-LABEL: test_same_vuzp1q_s16: 1056; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1057entry: 1058 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1059 ret <8 x i16> %shuffle.i 1060} 1061 1062define <4 x i32> @test_same_vuzp1q_s32(<4 x i32> %a) { 1063; CHECK-LABEL: test_same_vuzp1q_s32: 1064; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1065entry: 1066 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1067 ret <4 x i32> %shuffle.i 1068} 1069 1070define <8 x i8> @test_same_vuzp1_u8(<8 x i8> %a) { 1071; CHECK-LABEL: test_same_vuzp1_u8: 1072; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1073entry: 1074 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1075 ret <8 x i8> %shuffle.i 1076} 1077 1078define <16 x i8> @test_same_vuzp1q_u8(<16 x i8> %a) { 1079; CHECK-LABEL: test_same_vuzp1q_u8: 1080; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1081entry: 1082 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 1083 ret <16 x i8> %shuffle.i 1084} 1085 1086define <4 x i16> @test_same_vuzp1_u16(<4 x i16> %a) { 1087; CHECK-LABEL: test_same_vuzp1_u16: 1088; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1089entry: 1090 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1091 ret <4 x i16> %shuffle.i 1092} 1093 1094define <8 x i16> @test_same_vuzp1q_u16(<8 x i16> %a) { 1095; CHECK-LABEL: test_same_vuzp1q_u16: 1096; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1097entry: 1098 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1099 ret <8 x i16> %shuffle.i 1100} 1101 1102define <4 x i32> @test_same_vuzp1q_u32(<4 x i32> %a) { 1103; CHECK-LABEL: test_same_vuzp1q_u32: 1104; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1105entry: 1106 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1107 ret <4 x i32> %shuffle.i 1108} 1109 1110define <4 x float> @test_same_vuzp1q_f32(<4 x float> %a) { 1111; CHECK-LABEL: test_same_vuzp1q_f32: 1112; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1113entry: 1114 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1115 ret <4 x float> %shuffle.i 1116} 1117 1118define <8 x i8> @test_same_vuzp1_p8(<8 x i8> %a) { 1119; CHECK-LABEL: test_same_vuzp1_p8: 1120; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1121entry: 1122 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1123 ret <8 x i8> %shuffle.i 1124} 1125 1126define <16 x i8> @test_same_vuzp1q_p8(<16 x i8> %a) { 1127; CHECK-LABEL: test_same_vuzp1q_p8: 1128; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1129entry: 1130 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 1131 ret <16 x i8> %shuffle.i 1132} 1133 1134define <4 x i16> @test_same_vuzp1_p16(<4 x i16> %a) { 1135; CHECK-LABEL: test_same_vuzp1_p16: 1136; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1137entry: 1138 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1139 ret <4 x i16> %shuffle.i 1140} 1141 1142define <8 x i16> @test_same_vuzp1q_p16(<8 x i16> %a) { 1143; CHECK-LABEL: test_same_vuzp1q_p16: 1144; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1145entry: 1146 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1147 ret <8 x i16> %shuffle.i 1148} 1149 1150define <8 x i8> @test_same_vuzp2_s8(<8 x i8> %a) { 1151; CHECK-LABEL: test_same_vuzp2_s8: 1152; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1153entry: 1154 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1155 ret <8 x i8> %shuffle.i 1156} 1157 1158define <16 x i8> @test_same_vuzp2q_s8(<16 x i8> %a) { 1159; CHECK-LABEL: test_same_vuzp2q_s8: 1160; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1161entry: 1162 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 1163 ret <16 x i8> %shuffle.i 1164} 1165 1166define <4 x i16> @test_same_vuzp2_s16(<4 x i16> %a) { 1167; CHECK-LABEL: test_same_vuzp2_s16: 1168; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1169entry: 1170 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1171 ret <4 x i16> %shuffle.i 1172} 1173 1174define <8 x i16> @test_same_vuzp2q_s16(<8 x i16> %a) { 1175; CHECK-LABEL: test_same_vuzp2q_s16: 1176; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1177entry: 1178 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1179 ret <8 x i16> %shuffle.i 1180} 1181 1182define <4 x i32> @test_same_vuzp2q_s32(<4 x i32> %a) { 1183; CHECK-LABEL: test_same_vuzp2q_s32: 1184; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1185entry: 1186 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1187 ret <4 x i32> %shuffle.i 1188} 1189 1190define <8 x i8> @test_same_vuzp2_u8(<8 x i8> %a) { 1191; CHECK-LABEL: test_same_vuzp2_u8: 1192; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1193entry: 1194 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1195 ret <8 x i8> %shuffle.i 1196} 1197 1198define <16 x i8> @test_same_vuzp2q_u8(<16 x i8> %a) { 1199; CHECK-LABEL: test_same_vuzp2q_u8: 1200; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1201entry: 1202 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 1203 ret <16 x i8> %shuffle.i 1204} 1205 1206define <4 x i16> @test_same_vuzp2_u16(<4 x i16> %a) { 1207; CHECK-LABEL: test_same_vuzp2_u16: 1208; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1209entry: 1210 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1211 ret <4 x i16> %shuffle.i 1212} 1213 1214define <8 x i16> @test_same_vuzp2q_u16(<8 x i16> %a) { 1215; CHECK-LABEL: test_same_vuzp2q_u16: 1216; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1217entry: 1218 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1219 ret <8 x i16> %shuffle.i 1220} 1221 1222define <4 x i32> @test_same_vuzp2q_u32(<4 x i32> %a) { 1223; CHECK-LABEL: test_same_vuzp2q_u32: 1224; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1225entry: 1226 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1227 ret <4 x i32> %shuffle.i 1228} 1229 1230define <4 x float> @test_same_vuzp2q_f32(<4 x float> %a) { 1231; CHECK-LABEL: test_same_vuzp2q_f32: 1232; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1233entry: 1234 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1235 ret <4 x float> %shuffle.i 1236} 1237 1238define <8 x i8> @test_same_vuzp2_p8(<8 x i8> %a) { 1239; CHECK-LABEL: test_same_vuzp2_p8: 1240; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1241entry: 1242 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1243 ret <8 x i8> %shuffle.i 1244} 1245 1246define <16 x i8> @test_same_vuzp2q_p8(<16 x i8> %a) { 1247; CHECK-LABEL: test_same_vuzp2q_p8: 1248; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1249entry: 1250 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 1251 ret <16 x i8> %shuffle.i 1252} 1253 1254define <4 x i16> @test_same_vuzp2_p16(<4 x i16> %a) { 1255; CHECK-LABEL: test_same_vuzp2_p16: 1256; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1257entry: 1258 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1259 ret <4 x i16> %shuffle.i 1260} 1261 1262define <8 x i16> @test_same_vuzp2q_p16(<8 x i16> %a) { 1263; CHECK-LABEL: test_same_vuzp2q_p16: 1264; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1265entry: 1266 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1267 ret <8 x i16> %shuffle.i 1268} 1269 1270define <8 x i8> @test_same_vzip1_s8(<8 x i8> %a) { 1271; CHECK-LABEL: test_same_vzip1_s8: 1272; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1273entry: 1274 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 1275 ret <8 x i8> %shuffle.i 1276} 1277 1278define <16 x i8> @test_same_vzip1q_s8(<16 x i8> %a) { 1279; CHECK-LABEL: test_same_vzip1q_s8: 1280; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1281entry: 1282 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 1283 ret <16 x i8> %shuffle.i 1284} 1285 1286define <4 x i16> @test_same_vzip1_s16(<4 x i16> %a) { 1287; CHECK-LABEL: test_same_vzip1_s16: 1288; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1289entry: 1290 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 1291 ret <4 x i16> %shuffle.i 1292} 1293 1294define <8 x i16> @test_same_vzip1q_s16(<8 x i16> %a) { 1295; CHECK-LABEL: test_same_vzip1q_s16: 1296; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1297entry: 1298 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 1299 ret <8 x i16> %shuffle.i 1300} 1301 1302define <4 x i32> @test_same_vzip1q_s32(<4 x i32> %a) { 1303; CHECK-LABEL: test_same_vzip1q_s32: 1304; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1305entry: 1306 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 1307 ret <4 x i32> %shuffle.i 1308} 1309 1310define <8 x i8> @test_same_vzip1_u8(<8 x i8> %a) { 1311; CHECK-LABEL: test_same_vzip1_u8: 1312; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1313entry: 1314 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 1315 ret <8 x i8> %shuffle.i 1316} 1317 1318define <16 x i8> @test_same_vzip1q_u8(<16 x i8> %a) { 1319; CHECK-LABEL: test_same_vzip1q_u8: 1320; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1321entry: 1322 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 1323 ret <16 x i8> %shuffle.i 1324} 1325 1326define <4 x i16> @test_same_vzip1_u16(<4 x i16> %a) { 1327; CHECK-LABEL: test_same_vzip1_u16: 1328; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1329entry: 1330 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 1331 ret <4 x i16> %shuffle.i 1332} 1333 1334define <8 x i16> @test_same_vzip1q_u16(<8 x i16> %a) { 1335; CHECK-LABEL: test_same_vzip1q_u16: 1336; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1337entry: 1338 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 1339 ret <8 x i16> %shuffle.i 1340} 1341 1342define <4 x i32> @test_same_vzip1q_u32(<4 x i32> %a) { 1343; CHECK-LABEL: test_same_vzip1q_u32: 1344; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1345entry: 1346 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 1347 ret <4 x i32> %shuffle.i 1348} 1349 1350define <4 x float> @test_same_vzip1q_f32(<4 x float> %a) { 1351; CHECK-LABEL: test_same_vzip1q_f32: 1352; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1353entry: 1354 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 1355 ret <4 x float> %shuffle.i 1356} 1357 1358define <8 x i8> @test_same_vzip1_p8(<8 x i8> %a) { 1359; CHECK-LABEL: test_same_vzip1_p8: 1360; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1361entry: 1362 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 1363 ret <8 x i8> %shuffle.i 1364} 1365 1366define <16 x i8> @test_same_vzip1q_p8(<16 x i8> %a) { 1367; CHECK-LABEL: test_same_vzip1q_p8: 1368; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1369entry: 1370 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 1371 ret <16 x i8> %shuffle.i 1372} 1373 1374define <4 x i16> @test_same_vzip1_p16(<4 x i16> %a) { 1375; CHECK-LABEL: test_same_vzip1_p16: 1376; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1377entry: 1378 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 1379 ret <4 x i16> %shuffle.i 1380} 1381 1382define <8 x i16> @test_same_vzip1q_p16(<8 x i16> %a) { 1383; CHECK-LABEL: test_same_vzip1q_p16: 1384; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1385entry: 1386 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 1387 ret <8 x i16> %shuffle.i 1388} 1389 1390define <8 x i8> @test_same_vzip2_s8(<8 x i8> %a) { 1391; CHECK-LABEL: test_same_vzip2_s8: 1392; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1393entry: 1394 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 1395 ret <8 x i8> %shuffle.i 1396} 1397 1398define <16 x i8> @test_same_vzip2q_s8(<16 x i8> %a) { 1399; CHECK-LABEL: test_same_vzip2q_s8: 1400; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1401entry: 1402 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 1403 ret <16 x i8> %shuffle.i 1404} 1405 1406define <4 x i16> @test_same_vzip2_s16(<4 x i16> %a) { 1407; CHECK-LABEL: test_same_vzip2_s16: 1408; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1409entry: 1410 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 1411 ret <4 x i16> %shuffle.i 1412} 1413 1414define <8 x i16> @test_same_vzip2q_s16(<8 x i16> %a) { 1415; CHECK-LABEL: test_same_vzip2q_s16: 1416; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1417entry: 1418 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 1419 ret <8 x i16> %shuffle.i 1420} 1421 1422define <4 x i32> @test_same_vzip2q_s32(<4 x i32> %a) { 1423; CHECK-LABEL: test_same_vzip2q_s32: 1424; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1425entry: 1426 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 1427 ret <4 x i32> %shuffle.i 1428} 1429 1430define <8 x i8> @test_same_vzip2_u8(<8 x i8> %a) { 1431; CHECK-LABEL: test_same_vzip2_u8: 1432; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1433entry: 1434 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 1435 ret <8 x i8> %shuffle.i 1436} 1437 1438define <16 x i8> @test_same_vzip2q_u8(<16 x i8> %a) { 1439; CHECK-LABEL: test_same_vzip2q_u8: 1440; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1441entry: 1442 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 1443 ret <16 x i8> %shuffle.i 1444} 1445 1446define <4 x i16> @test_same_vzip2_u16(<4 x i16> %a) { 1447; CHECK-LABEL: test_same_vzip2_u16: 1448; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1449entry: 1450 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 1451 ret <4 x i16> %shuffle.i 1452} 1453 1454define <8 x i16> @test_same_vzip2q_u16(<8 x i16> %a) { 1455; CHECK-LABEL: test_same_vzip2q_u16: 1456; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1457entry: 1458 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 1459 ret <8 x i16> %shuffle.i 1460} 1461 1462define <4 x i32> @test_same_vzip2q_u32(<4 x i32> %a) { 1463; CHECK-LABEL: test_same_vzip2q_u32: 1464; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1465entry: 1466 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 1467 ret <4 x i32> %shuffle.i 1468} 1469 1470define <4 x float> @test_same_vzip2q_f32(<4 x float> %a) { 1471; CHECK-LABEL: test_same_vzip2q_f32: 1472; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1473entry: 1474 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 1475 ret <4 x float> %shuffle.i 1476} 1477 1478define <8 x i8> @test_same_vzip2_p8(<8 x i8> %a) { 1479; CHECK-LABEL: test_same_vzip2_p8: 1480; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1481entry: 1482 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 1483 ret <8 x i8> %shuffle.i 1484} 1485 1486define <16 x i8> @test_same_vzip2q_p8(<16 x i8> %a) { 1487; CHECK-LABEL: test_same_vzip2q_p8: 1488; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1489entry: 1490 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 1491 ret <16 x i8> %shuffle.i 1492} 1493 1494define <4 x i16> @test_same_vzip2_p16(<4 x i16> %a) { 1495; CHECK-LABEL: test_same_vzip2_p16: 1496; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1497entry: 1498 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 1499 ret <4 x i16> %shuffle.i 1500} 1501 1502define <8 x i16> @test_same_vzip2q_p16(<8 x i16> %a) { 1503; CHECK-LABEL: test_same_vzip2q_p16: 1504; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1505entry: 1506 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 1507 ret <8 x i16> %shuffle.i 1508} 1509 1510define <8 x i8> @test_same_vtrn1_s8(<8 x i8> %a) { 1511; CHECK-LABEL: test_same_vtrn1_s8: 1512; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1513entry: 1514 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1515 ret <8 x i8> %shuffle.i 1516} 1517 1518define <16 x i8> @test_same_vtrn1q_s8(<16 x i8> %a) { 1519; CHECK-LABEL: test_same_vtrn1q_s8: 1520; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1521entry: 1522 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 1523 ret <16 x i8> %shuffle.i 1524} 1525 1526define <4 x i16> @test_same_vtrn1_s16(<4 x i16> %a) { 1527; CHECK-LABEL: test_same_vtrn1_s16: 1528; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1529entry: 1530 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 1531 ret <4 x i16> %shuffle.i 1532} 1533 1534define <8 x i16> @test_same_vtrn1q_s16(<8 x i16> %a) { 1535; CHECK-LABEL: test_same_vtrn1q_s16: 1536; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1537entry: 1538 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1539 ret <8 x i16> %shuffle.i 1540} 1541 1542define <4 x i32> @test_same_vtrn1q_s32(<4 x i32> %a) { 1543; CHECK-LABEL: test_same_vtrn1q_s32: 1544; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1545entry: 1546 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 1547 ret <4 x i32> %shuffle.i 1548} 1549 1550define <8 x i8> @test_same_vtrn1_u8(<8 x i8> %a) { 1551; CHECK-LABEL: test_same_vtrn1_u8: 1552; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1553entry: 1554 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1555 ret <8 x i8> %shuffle.i 1556} 1557 1558define <16 x i8> @test_same_vtrn1q_u8(<16 x i8> %a) { 1559; CHECK-LABEL: test_same_vtrn1q_u8: 1560; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1561entry: 1562 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 1563 ret <16 x i8> %shuffle.i 1564} 1565 1566define <4 x i16> @test_same_vtrn1_u16(<4 x i16> %a) { 1567; CHECK-LABEL: test_same_vtrn1_u16: 1568; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1569entry: 1570 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 1571 ret <4 x i16> %shuffle.i 1572} 1573 1574define <8 x i16> @test_same_vtrn1q_u16(<8 x i16> %a) { 1575; CHECK-LABEL: test_same_vtrn1q_u16: 1576; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1577entry: 1578 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1579 ret <8 x i16> %shuffle.i 1580} 1581 1582define <4 x i32> @test_same_vtrn1q_u32(<4 x i32> %a) { 1583; CHECK-LABEL: test_same_vtrn1q_u32: 1584; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1585entry: 1586 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 1587 ret <4 x i32> %shuffle.i 1588} 1589 1590define <4 x float> @test_same_vtrn1q_f32(<4 x float> %a) { 1591; CHECK-LABEL: test_same_vtrn1q_f32: 1592; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1593entry: 1594 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 1595 ret <4 x float> %shuffle.i 1596} 1597 1598define <8 x i8> @test_same_vtrn1_p8(<8 x i8> %a) { 1599; CHECK-LABEL: test_same_vtrn1_p8: 1600; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1601entry: 1602 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1603 ret <8 x i8> %shuffle.i 1604} 1605 1606define <16 x i8> @test_same_vtrn1q_p8(<16 x i8> %a) { 1607; CHECK-LABEL: test_same_vtrn1q_p8: 1608; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1609entry: 1610 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 1611 ret <16 x i8> %shuffle.i 1612} 1613 1614define <4 x i16> @test_same_vtrn1_p16(<4 x i16> %a) { 1615; CHECK-LABEL: test_same_vtrn1_p16: 1616; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1617entry: 1618 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 1619 ret <4 x i16> %shuffle.i 1620} 1621 1622define <8 x i16> @test_same_vtrn1q_p16(<8 x i16> %a) { 1623; CHECK-LABEL: test_same_vtrn1q_p16: 1624; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1625entry: 1626 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 1627 ret <8 x i16> %shuffle.i 1628} 1629 1630define <8 x i8> @test_same_vtrn2_s8(<8 x i8> %a) { 1631; CHECK-LABEL: test_same_vtrn2_s8: 1632; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1633entry: 1634 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1635 ret <8 x i8> %shuffle.i 1636} 1637 1638define <16 x i8> @test_same_vtrn2q_s8(<16 x i8> %a) { 1639; CHECK-LABEL: test_same_vtrn2q_s8: 1640; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1641entry: 1642 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 1643 ret <16 x i8> %shuffle.i 1644} 1645 1646define <4 x i16> @test_same_vtrn2_s16(<4 x i16> %a) { 1647; CHECK-LABEL: test_same_vtrn2_s16: 1648; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1649entry: 1650 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 1651 ret <4 x i16> %shuffle.i 1652} 1653 1654define <8 x i16> @test_same_vtrn2q_s16(<8 x i16> %a) { 1655; CHECK-LABEL: test_same_vtrn2q_s16: 1656; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1657entry: 1658 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1659 ret <8 x i16> %shuffle.i 1660} 1661 1662define <4 x i32> @test_same_vtrn2q_s32(<4 x i32> %a) { 1663; CHECK-LABEL: test_same_vtrn2q_s32: 1664; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1665entry: 1666 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 1667 ret <4 x i32> %shuffle.i 1668} 1669 1670define <8 x i8> @test_same_vtrn2_u8(<8 x i8> %a) { 1671; CHECK-LABEL: test_same_vtrn2_u8: 1672; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1673entry: 1674 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1675 ret <8 x i8> %shuffle.i 1676} 1677 1678define <16 x i8> @test_same_vtrn2q_u8(<16 x i8> %a) { 1679; CHECK-LABEL: test_same_vtrn2q_u8: 1680; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1681entry: 1682 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 1683 ret <16 x i8> %shuffle.i 1684} 1685 1686define <4 x i16> @test_same_vtrn2_u16(<4 x i16> %a) { 1687; CHECK-LABEL: test_same_vtrn2_u16: 1688; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1689entry: 1690 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 1691 ret <4 x i16> %shuffle.i 1692} 1693 1694define <8 x i16> @test_same_vtrn2q_u16(<8 x i16> %a) { 1695; CHECK-LABEL: test_same_vtrn2q_u16: 1696; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1697entry: 1698 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1699 ret <8 x i16> %shuffle.i 1700} 1701 1702define <4 x i32> @test_same_vtrn2q_u32(<4 x i32> %a) { 1703; CHECK-LABEL: test_same_vtrn2q_u32: 1704; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1705entry: 1706 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 1707 ret <4 x i32> %shuffle.i 1708} 1709 1710define <4 x float> @test_same_vtrn2q_f32(<4 x float> %a) { 1711; CHECK-LABEL: test_same_vtrn2q_f32: 1712; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1713entry: 1714 %shuffle.i = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 1715 ret <4 x float> %shuffle.i 1716} 1717 1718define <8 x i8> @test_same_vtrn2_p8(<8 x i8> %a) { 1719; CHECK-LABEL: test_same_vtrn2_p8: 1720; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1721entry: 1722 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1723 ret <8 x i8> %shuffle.i 1724} 1725 1726define <16 x i8> @test_same_vtrn2q_p8(<16 x i8> %a) { 1727; CHECK-LABEL: test_same_vtrn2q_p8: 1728; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1729entry: 1730 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 1731 ret <16 x i8> %shuffle.i 1732} 1733 1734define <4 x i16> @test_same_vtrn2_p16(<4 x i16> %a) { 1735; CHECK-LABEL: test_same_vtrn2_p16: 1736; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1737entry: 1738 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 1739 ret <4 x i16> %shuffle.i 1740} 1741 1742define <8 x i16> @test_same_vtrn2q_p16(<8 x i16> %a) { 1743; CHECK-LABEL: test_same_vtrn2q_p16: 1744; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1745entry: 1746 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 1747 ret <8 x i16> %shuffle.i 1748} 1749 1750 1751define <8 x i8> @test_undef_vuzp1_s8(<8 x i8> %a) { 1752; CHECK-LABEL: test_undef_vuzp1_s8: 1753; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1754entry: 1755 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1756 ret <8 x i8> %shuffle.i 1757} 1758 1759define <16 x i8> @test_undef_vuzp1q_s8(<16 x i8> %a) { 1760; CHECK-LABEL: test_undef_vuzp1q_s8: 1761; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1762entry: 1763 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 1764 ret <16 x i8> %shuffle.i 1765} 1766 1767define <4 x i16> @test_undef_vuzp1_s16(<4 x i16> %a) { 1768; CHECK-LABEL: test_undef_vuzp1_s16: 1769; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1770entry: 1771 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1772 ret <4 x i16> %shuffle.i 1773} 1774 1775define <8 x i16> @test_undef_vuzp1q_s16(<8 x i16> %a) { 1776; CHECK-LABEL: test_undef_vuzp1q_s16: 1777; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1778entry: 1779 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1780 ret <8 x i16> %shuffle.i 1781} 1782 1783define <4 x i32> @test_undef_vuzp1q_s32(<4 x i32> %a) { 1784; CHECK-LABEL: test_undef_vuzp1q_s32: 1785; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1786entry: 1787 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1788 ret <4 x i32> %shuffle.i 1789} 1790 1791define <8 x i8> @test_undef_vuzp1_u8(<8 x i8> %a) { 1792; CHECK-LABEL: test_undef_vuzp1_u8: 1793; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1794entry: 1795 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1796 ret <8 x i8> %shuffle.i 1797} 1798 1799define <16 x i8> @test_undef_vuzp1q_u8(<16 x i8> %a) { 1800; CHECK-LABEL: test_undef_vuzp1q_u8: 1801; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1802entry: 1803 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 1804 ret <16 x i8> %shuffle.i 1805} 1806 1807define <4 x i16> @test_undef_vuzp1_u16(<4 x i16> %a) { 1808; CHECK-LABEL: test_undef_vuzp1_u16: 1809; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1810entry: 1811 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1812 ret <4 x i16> %shuffle.i 1813} 1814 1815define <8 x i16> @test_undef_vuzp1q_u16(<8 x i16> %a) { 1816; CHECK-LABEL: test_undef_vuzp1q_u16: 1817; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1818entry: 1819 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1820 ret <8 x i16> %shuffle.i 1821} 1822 1823define <4 x i32> @test_undef_vuzp1q_u32(<4 x i32> %a) { 1824; CHECK-LABEL: test_undef_vuzp1q_u32: 1825; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1826entry: 1827 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1828 ret <4 x i32> %shuffle.i 1829} 1830 1831define <4 x float> @test_undef_vuzp1q_f32(<4 x float> %a) { 1832; CHECK-LABEL: test_undef_vuzp1q_f32: 1833; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1834entry: 1835 %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1836 ret <4 x float> %shuffle.i 1837} 1838 1839define <8 x i8> @test_undef_vuzp1_p8(<8 x i8> %a) { 1840; CHECK-LABEL: test_undef_vuzp1_p8: 1841; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1842entry: 1843 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1844 ret <8 x i8> %shuffle.i 1845} 1846 1847define <16 x i8> @test_undef_vuzp1q_p8(<16 x i8> %a) { 1848; CHECK-LABEL: test_undef_vuzp1q_p8: 1849; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1850entry: 1851 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 1852 ret <16 x i8> %shuffle.i 1853} 1854 1855define <4 x i16> @test_undef_vuzp1_p16(<4 x i16> %a) { 1856; CHECK-LABEL: test_undef_vuzp1_p16: 1857; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1858entry: 1859 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 1860 ret <4 x i16> %shuffle.i 1861} 1862 1863define <8 x i16> @test_undef_vuzp1q_p16(<8 x i16> %a) { 1864; CHECK-LABEL: test_undef_vuzp1q_p16: 1865; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1866entry: 1867 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 1868 ret <8 x i16> %shuffle.i 1869} 1870 1871define <8 x i8> @test_undef_vuzp2_s8(<8 x i8> %a) { 1872; CHECK-LABEL: test_undef_vuzp2_s8: 1873; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1874entry: 1875 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1876 ret <8 x i8> %shuffle.i 1877} 1878 1879define <16 x i8> @test_undef_vuzp2q_s8(<16 x i8> %a) { 1880; CHECK-LABEL: test_undef_vuzp2q_s8: 1881; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1882entry: 1883 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 1884 ret <16 x i8> %shuffle.i 1885} 1886 1887define <4 x i16> @test_undef_vuzp2_s16(<4 x i16> %a) { 1888; CHECK-LABEL: test_undef_vuzp2_s16: 1889; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1890entry: 1891 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1892 ret <4 x i16> %shuffle.i 1893} 1894 1895define <8 x i16> @test_undef_vuzp2q_s16(<8 x i16> %a) { 1896; CHECK-LABEL: test_undef_vuzp2q_s16: 1897; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1898entry: 1899 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1900 ret <8 x i16> %shuffle.i 1901} 1902 1903define <4 x i32> @test_undef_vuzp2q_s32(<4 x i32> %a) { 1904; CHECK-LABEL: test_undef_vuzp2q_s32: 1905; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1906entry: 1907 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1908 ret <4 x i32> %shuffle.i 1909} 1910 1911define <8 x i8> @test_undef_vuzp2_u8(<8 x i8> %a) { 1912; CHECK-LABEL: test_undef_vuzp2_u8: 1913; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1914entry: 1915 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1916 ret <8 x i8> %shuffle.i 1917} 1918 1919define <16 x i8> @test_undef_vuzp2q_u8(<16 x i8> %a) { 1920; CHECK-LABEL: test_undef_vuzp2q_u8: 1921; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1922entry: 1923 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 1924 ret <16 x i8> %shuffle.i 1925} 1926 1927define <4 x i16> @test_undef_vuzp2_u16(<4 x i16> %a) { 1928; CHECK-LABEL: test_undef_vuzp2_u16: 1929; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1930entry: 1931 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1932 ret <4 x i16> %shuffle.i 1933} 1934 1935define <8 x i16> @test_undef_vuzp2q_u16(<8 x i16> %a) { 1936; CHECK-LABEL: test_undef_vuzp2q_u16: 1937; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1938entry: 1939 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1940 ret <8 x i16> %shuffle.i 1941} 1942 1943define <4 x i32> @test_undef_vuzp2q_u32(<4 x i32> %a) { 1944; CHECK-LABEL: test_undef_vuzp2q_u32: 1945; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1946entry: 1947 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1948 ret <4 x i32> %shuffle.i 1949} 1950 1951define <4 x float> @test_undef_vuzp2q_f32(<4 x float> %a) { 1952; CHECK-LABEL: test_undef_vuzp2q_f32: 1953; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 1954entry: 1955 %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1956 ret <4 x float> %shuffle.i 1957} 1958 1959define <8 x i8> @test_undef_vuzp2_p8(<8 x i8> %a) { 1960; CHECK-LABEL: test_undef_vuzp2_p8: 1961; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1962entry: 1963 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1964 ret <8 x i8> %shuffle.i 1965} 1966 1967define <16 x i8> @test_undef_vuzp2q_p8(<16 x i8> %a) { 1968; CHECK-LABEL: test_undef_vuzp2q_p8: 1969; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 1970entry: 1971 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 1972 ret <16 x i8> %shuffle.i 1973} 1974 1975define <4 x i16> @test_undef_vuzp2_p16(<4 x i16> %a) { 1976; CHECK-LABEL: test_undef_vuzp2_p16: 1977; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 1978entry: 1979 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 1980 ret <4 x i16> %shuffle.i 1981} 1982 1983define <8 x i16> @test_undef_vuzp2q_p16(<8 x i16> %a) { 1984; CHECK-LABEL: test_undef_vuzp2q_p16: 1985; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 1986entry: 1987 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 1988 ret <8 x i16> %shuffle.i 1989} 1990 1991define <8 x i8> @test_undef_vzip1_s8(<8 x i8> %a) { 1992; CHECK-LABEL: test_undef_vzip1_s8: 1993; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 1994entry: 1995 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 1996 ret <8 x i8> %shuffle.i 1997} 1998 1999define <16 x i8> @test_undef_vzip1q_s8(<16 x i8> %a) { 2000; CHECK-LABEL: test_undef_vzip1q_s8: 2001; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2002entry: 2003 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 2004 ret <16 x i8> %shuffle.i 2005} 2006 2007define <4 x i16> @test_undef_vzip1_s16(<4 x i16> %a) { 2008; CHECK-LABEL: test_undef_vzip1_s16: 2009; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2010entry: 2011 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2012 ret <4 x i16> %shuffle.i 2013} 2014 2015define <8 x i16> @test_undef_vzip1q_s16(<8 x i16> %a) { 2016; CHECK-LABEL: test_undef_vzip1q_s16: 2017; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2018entry: 2019 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2020 ret <8 x i16> %shuffle.i 2021} 2022 2023define <4 x i32> @test_undef_vzip1q_s32(<4 x i32> %a) { 2024; CHECK-LABEL: test_undef_vzip1q_s32: 2025; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2026entry: 2027 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2028 ret <4 x i32> %shuffle.i 2029} 2030 2031define <8 x i8> @test_undef_vzip1_u8(<8 x i8> %a) { 2032; CHECK-LABEL: test_undef_vzip1_u8: 2033; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2034entry: 2035 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2036 ret <8 x i8> %shuffle.i 2037} 2038 2039define <16 x i8> @test_undef_vzip1q_u8(<16 x i8> %a) { 2040; CHECK-LABEL: test_undef_vzip1q_u8: 2041; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2042entry: 2043 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 2044 ret <16 x i8> %shuffle.i 2045} 2046 2047define <4 x i16> @test_undef_vzip1_u16(<4 x i16> %a) { 2048; CHECK-LABEL: test_undef_vzip1_u16: 2049; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2050entry: 2051 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2052 ret <4 x i16> %shuffle.i 2053} 2054 2055define <8 x i16> @test_undef_vzip1q_u16(<8 x i16> %a) { 2056; CHECK-LABEL: test_undef_vzip1q_u16: 2057; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2058entry: 2059 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2060 ret <8 x i16> %shuffle.i 2061} 2062 2063define <4 x i32> @test_undef_vzip1q_u32(<4 x i32> %a) { 2064; CHECK-LABEL: test_undef_vzip1q_u32: 2065; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2066entry: 2067 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2068 ret <4 x i32> %shuffle.i 2069} 2070 2071define <4 x float> @test_undef_vzip1q_f32(<4 x float> %a) { 2072; CHECK-LABEL: test_undef_vzip1q_f32: 2073; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2074entry: 2075 %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2076 ret <4 x float> %shuffle.i 2077} 2078 2079define <8 x i8> @test_undef_vzip1_p8(<8 x i8> %a) { 2080; CHECK-LABEL: test_undef_vzip1_p8: 2081; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2082entry: 2083 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2084 ret <8 x i8> %shuffle.i 2085} 2086 2087define <16 x i8> @test_undef_vzip1q_p8(<16 x i8> %a) { 2088; CHECK-LABEL: test_undef_vzip1q_p8: 2089; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2090entry: 2091 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 2092 ret <16 x i8> %shuffle.i 2093} 2094 2095define <4 x i16> @test_undef_vzip1_p16(<4 x i16> %a) { 2096; CHECK-LABEL: test_undef_vzip1_p16: 2097; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2098entry: 2099 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2100 ret <4 x i16> %shuffle.i 2101} 2102 2103define <8 x i16> @test_undef_vzip1q_p16(<8 x i16> %a) { 2104; CHECK-LABEL: test_undef_vzip1q_p16: 2105; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2106entry: 2107 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2108 ret <8 x i16> %shuffle.i 2109} 2110 2111define <8 x i8> @test_undef_vzip2_s8(<8 x i8> %a) { 2112; CHECK-LABEL: test_undef_vzip2_s8: 2113; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2114entry: 2115 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2116 ret <8 x i8> %shuffle.i 2117} 2118 2119define <16 x i8> @test_undef_vzip2q_s8(<16 x i8> %a) { 2120; CHECK-LABEL: test_undef_vzip2q_s8: 2121; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2122entry: 2123 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 2124 ret <16 x i8> %shuffle.i 2125} 2126 2127define <4 x i16> @test_undef_vzip2_s16(<4 x i16> %a) { 2128; CHECK-LABEL: test_undef_vzip2_s16: 2129; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2130entry: 2131 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2132 ret <4 x i16> %shuffle.i 2133} 2134 2135define <8 x i16> @test_undef_vzip2q_s16(<8 x i16> %a) { 2136; CHECK-LABEL: test_undef_vzip2q_s16: 2137; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2138entry: 2139 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2140 ret <8 x i16> %shuffle.i 2141} 2142 2143define <4 x i32> @test_undef_vzip2q_s32(<4 x i32> %a) { 2144; CHECK-LABEL: test_undef_vzip2q_s32: 2145; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2146entry: 2147 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2148 ret <4 x i32> %shuffle.i 2149} 2150 2151define <8 x i8> @test_undef_vzip2_u8(<8 x i8> %a) { 2152; CHECK-LABEL: test_undef_vzip2_u8: 2153; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2154entry: 2155 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2156 ret <8 x i8> %shuffle.i 2157} 2158 2159define <16 x i8> @test_undef_vzip2q_u8(<16 x i8> %a) { 2160; CHECK-LABEL: test_undef_vzip2q_u8: 2161; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2162entry: 2163 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 2164 ret <16 x i8> %shuffle.i 2165} 2166 2167define <4 x i16> @test_undef_vzip2_u16(<4 x i16> %a) { 2168; CHECK-LABEL: test_undef_vzip2_u16: 2169; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2170entry: 2171 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2172 ret <4 x i16> %shuffle.i 2173} 2174 2175define <8 x i16> @test_undef_vzip2q_u16(<8 x i16> %a) { 2176; CHECK-LABEL: test_undef_vzip2q_u16: 2177; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2178entry: 2179 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2180 ret <8 x i16> %shuffle.i 2181} 2182 2183define <4 x i32> @test_undef_vzip2q_u32(<4 x i32> %a) { 2184; CHECK-LABEL: test_undef_vzip2q_u32: 2185; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2186entry: 2187 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2188 ret <4 x i32> %shuffle.i 2189} 2190 2191define <4 x float> @test_undef_vzip2q_f32(<4 x float> %a) { 2192; CHECK-LABEL: test_undef_vzip2q_f32: 2193; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2194entry: 2195 %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2196 ret <4 x float> %shuffle.i 2197} 2198 2199define <8 x i8> @test_undef_vzip2_p8(<8 x i8> %a) { 2200; CHECK-LABEL: test_undef_vzip2_p8: 2201; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2202entry: 2203 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2204 ret <8 x i8> %shuffle.i 2205} 2206 2207define <16 x i8> @test_undef_vzip2q_p8(<16 x i8> %a) { 2208; CHECK-LABEL: test_undef_vzip2q_p8: 2209; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2210entry: 2211 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 2212 ret <16 x i8> %shuffle.i 2213} 2214 2215define <4 x i16> @test_undef_vzip2_p16(<4 x i16> %a) { 2216; CHECK-LABEL: test_undef_vzip2_p16: 2217; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2218entry: 2219 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2220 ret <4 x i16> %shuffle.i 2221} 2222 2223define <8 x i16> @test_undef_vzip2q_p16(<8 x i16> %a) { 2224; CHECK-LABEL: test_undef_vzip2q_p16: 2225; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2226entry: 2227 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2228 ret <8 x i16> %shuffle.i 2229} 2230 2231define <8 x i8> @test_undef_vtrn1_s8(<8 x i8> %a) { 2232; CHECK-LABEL: test_undef_vtrn1_s8: 2233; CHECK: ret 2234entry: 2235 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2236 ret <8 x i8> %shuffle.i 2237} 2238 2239define <16 x i8> @test_undef_vtrn1q_s8(<16 x i8> %a) { 2240; CHECK-LABEL: test_undef_vtrn1q_s8: 2241; CHECK: ret 2242entry: 2243 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 2244 ret <16 x i8> %shuffle.i 2245} 2246 2247define <4 x i16> @test_undef_vtrn1_s16(<4 x i16> %a) { 2248; CHECK-LABEL: test_undef_vtrn1_s16: 2249; CHECK: ret 2250entry: 2251 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2252 ret <4 x i16> %shuffle.i 2253} 2254 2255define <8 x i16> @test_undef_vtrn1q_s16(<8 x i16> %a) { 2256; CHECK-LABEL: test_undef_vtrn1q_s16: 2257; CHECK: ret 2258entry: 2259 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2260 ret <8 x i16> %shuffle.i 2261} 2262 2263define <4 x i32> @test_undef_vtrn1q_s32(<4 x i32> %a) { 2264; CHECK-LABEL: test_undef_vtrn1q_s32: 2265; CHECK: ret 2266entry: 2267 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2268 ret <4 x i32> %shuffle.i 2269} 2270 2271define <8 x i8> @test_undef_vtrn1_u8(<8 x i8> %a) { 2272; CHECK-LABEL: test_undef_vtrn1_u8: 2273; CHECK: ret 2274entry: 2275 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2276 ret <8 x i8> %shuffle.i 2277} 2278 2279define <16 x i8> @test_undef_vtrn1q_u8(<16 x i8> %a) { 2280; CHECK-LABEL: test_undef_vtrn1q_u8: 2281; CHECK: ret 2282entry: 2283 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 2284 ret <16 x i8> %shuffle.i 2285} 2286 2287define <4 x i16> @test_undef_vtrn1_u16(<4 x i16> %a) { 2288; CHECK-LABEL: test_undef_vtrn1_u16: 2289; CHECK: ret 2290entry: 2291 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2292 ret <4 x i16> %shuffle.i 2293} 2294 2295define <8 x i16> @test_undef_vtrn1q_u16(<8 x i16> %a) { 2296; CHECK-LABEL: test_undef_vtrn1q_u16: 2297; CHECK: ret 2298entry: 2299 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2300 ret <8 x i16> %shuffle.i 2301} 2302 2303define <4 x i32> @test_undef_vtrn1q_u32(<4 x i32> %a) { 2304; CHECK-LABEL: test_undef_vtrn1q_u32: 2305; CHECK: ret 2306entry: 2307 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2308 ret <4 x i32> %shuffle.i 2309} 2310 2311define <4 x float> @test_undef_vtrn1q_f32(<4 x float> %a) { 2312; CHECK-LABEL: test_undef_vtrn1q_f32: 2313; CHECK: ret 2314entry: 2315 %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2316 ret <4 x float> %shuffle.i 2317} 2318 2319define <8 x i8> @test_undef_vtrn1_p8(<8 x i8> %a) { 2320; CHECK-LABEL: test_undef_vtrn1_p8: 2321; CHECK: ret 2322entry: 2323 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2324 ret <8 x i8> %shuffle.i 2325} 2326 2327define <16 x i8> @test_undef_vtrn1q_p8(<16 x i8> %a) { 2328; CHECK-LABEL: test_undef_vtrn1q_p8: 2329; CHECK: ret 2330entry: 2331 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 2332 ret <16 x i8> %shuffle.i 2333} 2334 2335define <4 x i16> @test_undef_vtrn1_p16(<4 x i16> %a) { 2336; CHECK-LABEL: test_undef_vtrn1_p16: 2337; CHECK: ret 2338entry: 2339 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2340 ret <4 x i16> %shuffle.i 2341} 2342 2343define <8 x i16> @test_undef_vtrn1q_p16(<8 x i16> %a) { 2344; CHECK-LABEL: test_undef_vtrn1q_p16: 2345; CHECK: ret 2346entry: 2347 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2348 ret <8 x i16> %shuffle.i 2349} 2350 2351define <8 x i8> @test_undef_vtrn2_s8(<8 x i8> %a) { 2352; CHECK-LABEL: test_undef_vtrn2_s8: 2353; CHECK: rev16 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2354entry: 2355 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2356 ret <8 x i8> %shuffle.i 2357} 2358 2359define <16 x i8> @test_undef_vtrn2q_s8(<16 x i8> %a) { 2360; CHECK-LABEL: test_undef_vtrn2q_s8: 2361; CHECK: rev16 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2362entry: 2363 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 2364 ret <16 x i8> %shuffle.i 2365} 2366 2367define <4 x i16> @test_undef_vtrn2_s16(<4 x i16> %a) { 2368; CHECK-LABEL: test_undef_vtrn2_s16: 2369; CHECK: rev32 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2370entry: 2371 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2372 ret <4 x i16> %shuffle.i 2373} 2374 2375define <8 x i16> @test_undef_vtrn2q_s16(<8 x i16> %a) { 2376; CHECK-LABEL: test_undef_vtrn2q_s16: 2377; CHECK: rev32 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2378entry: 2379 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2380 ret <8 x i16> %shuffle.i 2381} 2382 2383define <4 x i32> @test_undef_vtrn2q_s32(<4 x i32> %a) { 2384; CHECK-LABEL: test_undef_vtrn2q_s32: 2385; CHECK: rev64 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2386entry: 2387 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2388 ret <4 x i32> %shuffle.i 2389} 2390 2391define <8 x i8> @test_undef_vtrn2_u8(<8 x i8> %a) { 2392; CHECK-LABEL: test_undef_vtrn2_u8: 2393; CHECK: rev16 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2394entry: 2395 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2396 ret <8 x i8> %shuffle.i 2397} 2398 2399define <16 x i8> @test_undef_vtrn2q_u8(<16 x i8> %a) { 2400; CHECK-LABEL: test_undef_vtrn2q_u8: 2401; CHECK: rev16 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2402entry: 2403 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 2404 ret <16 x i8> %shuffle.i 2405} 2406 2407define <4 x i16> @test_undef_vtrn2_u16(<4 x i16> %a) { 2408; CHECK-LABEL: test_undef_vtrn2_u16: 2409; CHECK: rev32 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2410entry: 2411 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2412 ret <4 x i16> %shuffle.i 2413} 2414 2415define <8 x i16> @test_undef_vtrn2q_u16(<8 x i16> %a) { 2416; CHECK-LABEL: test_undef_vtrn2q_u16: 2417; CHECK: rev32 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2418entry: 2419 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2420 ret <8 x i16> %shuffle.i 2421} 2422 2423define <4 x i32> @test_undef_vtrn2q_u32(<4 x i32> %a) { 2424; CHECK-LABEL: test_undef_vtrn2q_u32: 2425; CHECK: rev64 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2426entry: 2427 %shuffle.i = shufflevector <4 x i32> %a, <4 x i32> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2428 ret <4 x i32> %shuffle.i 2429} 2430 2431define <4 x float> @test_undef_vtrn2q_f32(<4 x float> %a) { 2432; CHECK-LABEL: test_undef_vtrn2q_f32: 2433; CHECK: rev64 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2434entry: 2435 %shuffle.i = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2436 ret <4 x float> %shuffle.i 2437} 2438 2439define <8 x i8> @test_undef_vtrn2_p8(<8 x i8> %a) { 2440; CHECK-LABEL: test_undef_vtrn2_p8: 2441; CHECK: rev16 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2442entry: 2443 %shuffle.i = shufflevector <8 x i8> %a, <8 x i8> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2444 ret <8 x i8> %shuffle.i 2445} 2446 2447define <16 x i8> @test_undef_vtrn2q_p8(<16 x i8> %a) { 2448; CHECK-LABEL: test_undef_vtrn2q_p8: 2449; CHECK: rev16 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2450entry: 2451 %shuffle.i = shufflevector <16 x i8> %a, <16 x i8> undef, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 2452 ret <16 x i8> %shuffle.i 2453} 2454 2455define <4 x i16> @test_undef_vtrn2_p16(<4 x i16> %a) { 2456; CHECK-LABEL: test_undef_vtrn2_p16: 2457; CHECK: rev32 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2458entry: 2459 %shuffle.i = shufflevector <4 x i16> %a, <4 x i16> undef, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2460 ret <4 x i16> %shuffle.i 2461} 2462 2463define <8 x i16> @test_undef_vtrn2q_p16(<8 x i16> %a) { 2464; CHECK-LABEL: test_undef_vtrn2q_p16: 2465; CHECK: rev32 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2466entry: 2467 %shuffle.i = shufflevector <8 x i16> %a, <8 x i16> undef, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2468 ret <8 x i16> %shuffle.i 2469} 2470 2471define %struct.int8x8x2_t @test_vuzp_s8(<8 x i8> %a, <8 x i8> %b) { 2472; CHECK-LABEL: test_vuzp_s8: 2473; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2474; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2475entry: 2476 %vuzp.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 2477 %vuzp1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 2478 %.fca.0.0.insert = insertvalue %struct.int8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0 2479 %.fca.0.1.insert = insertvalue %struct.int8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1 2480 ret %struct.int8x8x2_t %.fca.0.1.insert 2481} 2482 2483define %struct.int16x4x2_t @test_vuzp_s16(<4 x i16> %a, <4 x i16> %b) { 2484; CHECK-LABEL: test_vuzp_s16: 2485; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2486; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2487entry: 2488 %vuzp.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 2489 %vuzp1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 2490 %.fca.0.0.insert = insertvalue %struct.int16x4x2_t undef, <4 x i16> %vuzp.i, 0, 0 2491 %.fca.0.1.insert = insertvalue %struct.int16x4x2_t %.fca.0.0.insert, <4 x i16> %vuzp1.i, 0, 1 2492 ret %struct.int16x4x2_t %.fca.0.1.insert 2493} 2494 2495define %struct.int32x2x2_t @test_vuzp_s32(<2 x i32> %a, <2 x i32> %b) { 2496; CHECK-LABEL: test_vuzp_s32: 2497; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2498; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2499entry: 2500 %vuzp.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 2501 %vuzp1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 2502 %.fca.0.0.insert = insertvalue %struct.int32x2x2_t undef, <2 x i32> %vuzp.i, 0, 0 2503 %.fca.0.1.insert = insertvalue %struct.int32x2x2_t %.fca.0.0.insert, <2 x i32> %vuzp1.i, 0, 1 2504 ret %struct.int32x2x2_t %.fca.0.1.insert 2505} 2506 2507define %struct.uint8x8x2_t @test_vuzp_u8(<8 x i8> %a, <8 x i8> %b) { 2508; CHECK-LABEL: test_vuzp_u8: 2509; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2510; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2511entry: 2512 %vuzp.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 2513 %vuzp1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 2514 %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0 2515 %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1 2516 ret %struct.uint8x8x2_t %.fca.0.1.insert 2517} 2518 2519define %struct.uint16x4x2_t @test_vuzp_u16(<4 x i16> %a, <4 x i16> %b) { 2520; CHECK-LABEL: test_vuzp_u16: 2521; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2522; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2523entry: 2524 %vuzp.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 2525 %vuzp1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 2526 %.fca.0.0.insert = insertvalue %struct.uint16x4x2_t undef, <4 x i16> %vuzp.i, 0, 0 2527 %.fca.0.1.insert = insertvalue %struct.uint16x4x2_t %.fca.0.0.insert, <4 x i16> %vuzp1.i, 0, 1 2528 ret %struct.uint16x4x2_t %.fca.0.1.insert 2529} 2530 2531define %struct.uint32x2x2_t @test_vuzp_u32(<2 x i32> %a, <2 x i32> %b) { 2532; CHECK-LABEL: test_vuzp_u32: 2533; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2534; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2535entry: 2536 %vuzp.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 2537 %vuzp1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 2538 %.fca.0.0.insert = insertvalue %struct.uint32x2x2_t undef, <2 x i32> %vuzp.i, 0, 0 2539 %.fca.0.1.insert = insertvalue %struct.uint32x2x2_t %.fca.0.0.insert, <2 x i32> %vuzp1.i, 0, 1 2540 ret %struct.uint32x2x2_t %.fca.0.1.insert 2541} 2542 2543define %struct.float32x2x2_t @test_vuzp_f32(<2 x float> %a, <2 x float> %b) { 2544; CHECK-LABEL: test_vuzp_f32: 2545; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2546; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2547entry: 2548 %vuzp.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2> 2549 %vuzp1.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3> 2550 %.fca.0.0.insert = insertvalue %struct.float32x2x2_t undef, <2 x float> %vuzp.i, 0, 0 2551 %.fca.0.1.insert = insertvalue %struct.float32x2x2_t %.fca.0.0.insert, <2 x float> %vuzp1.i, 0, 1 2552 ret %struct.float32x2x2_t %.fca.0.1.insert 2553} 2554 2555define %struct.poly8x8x2_t @test_vuzp_p8(<8 x i8> %a, <8 x i8> %b) { 2556; CHECK-LABEL: test_vuzp_p8: 2557; CHECK: uzp1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2558; CHECK: uzp2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2559entry: 2560 %vuzp.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 2561 %vuzp1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 2562 %.fca.0.0.insert = insertvalue %struct.poly8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0 2563 %.fca.0.1.insert = insertvalue %struct.poly8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1 2564 ret %struct.poly8x8x2_t %.fca.0.1.insert 2565} 2566 2567define %struct.poly16x4x2_t @test_vuzp_p16(<4 x i16> %a, <4 x i16> %b) { 2568; CHECK-LABEL: test_vuzp_p16: 2569; CHECK: uzp1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2570; CHECK: uzp2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2571entry: 2572 %vuzp.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 2573 %vuzp1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 2574 %.fca.0.0.insert = insertvalue %struct.poly16x4x2_t undef, <4 x i16> %vuzp.i, 0, 0 2575 %.fca.0.1.insert = insertvalue %struct.poly16x4x2_t %.fca.0.0.insert, <4 x i16> %vuzp1.i, 0, 1 2576 ret %struct.poly16x4x2_t %.fca.0.1.insert 2577} 2578 2579define %struct.int8x16x2_t @test_vuzpq_s8(<16 x i8> %a, <16 x i8> %b) { 2580; CHECK-LABEL: test_vuzpq_s8: 2581; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2582; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2583entry: 2584 %vuzp.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 2585 %vuzp1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 2586 %.fca.0.0.insert = insertvalue %struct.int8x16x2_t undef, <16 x i8> %vuzp.i, 0, 0 2587 %.fca.0.1.insert = insertvalue %struct.int8x16x2_t %.fca.0.0.insert, <16 x i8> %vuzp1.i, 0, 1 2588 ret %struct.int8x16x2_t %.fca.0.1.insert 2589} 2590 2591define %struct.int16x8x2_t @test_vuzpq_s16(<8 x i16> %a, <8 x i16> %b) { 2592; CHECK-LABEL: test_vuzpq_s16: 2593; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2594; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2595entry: 2596 %vuzp.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 2597 %vuzp1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 2598 %.fca.0.0.insert = insertvalue %struct.int16x8x2_t undef, <8 x i16> %vuzp.i, 0, 0 2599 %.fca.0.1.insert = insertvalue %struct.int16x8x2_t %.fca.0.0.insert, <8 x i16> %vuzp1.i, 0, 1 2600 ret %struct.int16x8x2_t %.fca.0.1.insert 2601} 2602 2603define %struct.int32x4x2_t @test_vuzpq_s32(<4 x i32> %a, <4 x i32> %b) { 2604; CHECK-LABEL: test_vuzpq_s32: 2605; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2606; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2607entry: 2608 %vuzp.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 2609 %vuzp1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 2610 %.fca.0.0.insert = insertvalue %struct.int32x4x2_t undef, <4 x i32> %vuzp.i, 0, 0 2611 %.fca.0.1.insert = insertvalue %struct.int32x4x2_t %.fca.0.0.insert, <4 x i32> %vuzp1.i, 0, 1 2612 ret %struct.int32x4x2_t %.fca.0.1.insert 2613} 2614 2615define %struct.uint8x16x2_t @test_vuzpq_u8(<16 x i8> %a, <16 x i8> %b) { 2616; CHECK-LABEL: test_vuzpq_u8: 2617; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2618; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2619entry: 2620 %vuzp.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 2621 %vuzp1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 2622 %.fca.0.0.insert = insertvalue %struct.uint8x16x2_t undef, <16 x i8> %vuzp.i, 0, 0 2623 %.fca.0.1.insert = insertvalue %struct.uint8x16x2_t %.fca.0.0.insert, <16 x i8> %vuzp1.i, 0, 1 2624 ret %struct.uint8x16x2_t %.fca.0.1.insert 2625} 2626 2627define %struct.uint16x8x2_t @test_vuzpq_u16(<8 x i16> %a, <8 x i16> %b) { 2628; CHECK-LABEL: test_vuzpq_u16: 2629; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2630; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2631entry: 2632 %vuzp.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 2633 %vuzp1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 2634 %.fca.0.0.insert = insertvalue %struct.uint16x8x2_t undef, <8 x i16> %vuzp.i, 0, 0 2635 %.fca.0.1.insert = insertvalue %struct.uint16x8x2_t %.fca.0.0.insert, <8 x i16> %vuzp1.i, 0, 1 2636 ret %struct.uint16x8x2_t %.fca.0.1.insert 2637} 2638 2639define %struct.uint32x4x2_t @test_vuzpq_u32(<4 x i32> %a, <4 x i32> %b) { 2640; CHECK-LABEL: test_vuzpq_u32: 2641; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2642; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2643entry: 2644 %vuzp.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 2645 %vuzp1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 2646 %.fca.0.0.insert = insertvalue %struct.uint32x4x2_t undef, <4 x i32> %vuzp.i, 0, 0 2647 %.fca.0.1.insert = insertvalue %struct.uint32x4x2_t %.fca.0.0.insert, <4 x i32> %vuzp1.i, 0, 1 2648 ret %struct.uint32x4x2_t %.fca.0.1.insert 2649} 2650 2651define %struct.float32x4x2_t @test_vuzpq_f32(<4 x float> %a, <4 x float> %b) { 2652; CHECK-LABEL: test_vuzpq_f32: 2653; CHECK: uzp1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2654; CHECK: uzp2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2655entry: 2656 %vuzp.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6> 2657 %vuzp1.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7> 2658 %.fca.0.0.insert = insertvalue %struct.float32x4x2_t undef, <4 x float> %vuzp.i, 0, 0 2659 %.fca.0.1.insert = insertvalue %struct.float32x4x2_t %.fca.0.0.insert, <4 x float> %vuzp1.i, 0, 1 2660 ret %struct.float32x4x2_t %.fca.0.1.insert 2661} 2662 2663define %struct.poly8x16x2_t @test_vuzpq_p8(<16 x i8> %a, <16 x i8> %b) { 2664; CHECK-LABEL: test_vuzpq_p8: 2665; CHECK: uzp1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2666; CHECK: uzp2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2667entry: 2668 %vuzp.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30> 2669 %vuzp1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31> 2670 %.fca.0.0.insert = insertvalue %struct.poly8x16x2_t undef, <16 x i8> %vuzp.i, 0, 0 2671 %.fca.0.1.insert = insertvalue %struct.poly8x16x2_t %.fca.0.0.insert, <16 x i8> %vuzp1.i, 0, 1 2672 ret %struct.poly8x16x2_t %.fca.0.1.insert 2673} 2674 2675define %struct.poly16x8x2_t @test_vuzpq_p16(<8 x i16> %a, <8 x i16> %b) { 2676; CHECK-LABEL: test_vuzpq_p16: 2677; CHECK: uzp1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2678; CHECK: uzp2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2679entry: 2680 %vuzp.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 2681 %vuzp1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 2682 %.fca.0.0.insert = insertvalue %struct.poly16x8x2_t undef, <8 x i16> %vuzp.i, 0, 0 2683 %.fca.0.1.insert = insertvalue %struct.poly16x8x2_t %.fca.0.0.insert, <8 x i16> %vuzp1.i, 0, 1 2684 ret %struct.poly16x8x2_t %.fca.0.1.insert 2685} 2686 2687define %struct.int8x8x2_t @test_vzip_s8(<8 x i8> %a, <8 x i8> %b) { 2688; CHECK-LABEL: test_vzip_s8: 2689; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2690; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2691entry: 2692 %vzip.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2693 %vzip1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2694 %.fca.0.0.insert = insertvalue %struct.int8x8x2_t undef, <8 x i8> %vzip.i, 0, 0 2695 %.fca.0.1.insert = insertvalue %struct.int8x8x2_t %.fca.0.0.insert, <8 x i8> %vzip1.i, 0, 1 2696 ret %struct.int8x8x2_t %.fca.0.1.insert 2697} 2698 2699define %struct.int16x4x2_t @test_vzip_s16(<4 x i16> %a, <4 x i16> %b) { 2700; CHECK-LABEL: test_vzip_s16: 2701; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2702; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2703entry: 2704 %vzip.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2705 %vzip1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2706 %.fca.0.0.insert = insertvalue %struct.int16x4x2_t undef, <4 x i16> %vzip.i, 0, 0 2707 %.fca.0.1.insert = insertvalue %struct.int16x4x2_t %.fca.0.0.insert, <4 x i16> %vzip1.i, 0, 1 2708 ret %struct.int16x4x2_t %.fca.0.1.insert 2709} 2710 2711define %struct.int32x2x2_t @test_vzip_s32(<2 x i32> %a, <2 x i32> %b) { 2712; CHECK-LABEL: test_vzip_s32: 2713; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2714; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2715entry: 2716 %vzip.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 2717 %vzip1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 2718 %.fca.0.0.insert = insertvalue %struct.int32x2x2_t undef, <2 x i32> %vzip.i, 0, 0 2719 %.fca.0.1.insert = insertvalue %struct.int32x2x2_t %.fca.0.0.insert, <2 x i32> %vzip1.i, 0, 1 2720 ret %struct.int32x2x2_t %.fca.0.1.insert 2721} 2722 2723define %struct.uint8x8x2_t @test_vzip_u8(<8 x i8> %a, <8 x i8> %b) { 2724; CHECK-LABEL: test_vzip_u8: 2725; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2726; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2727entry: 2728 %vzip.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2729 %vzip1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2730 %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vzip.i, 0, 0 2731 %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vzip1.i, 0, 1 2732 ret %struct.uint8x8x2_t %.fca.0.1.insert 2733} 2734 2735define %struct.uint16x4x2_t @test_vzip_u16(<4 x i16> %a, <4 x i16> %b) { 2736; CHECK-LABEL: test_vzip_u16: 2737; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2738; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2739entry: 2740 %vzip.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2741 %vzip1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2742 %.fca.0.0.insert = insertvalue %struct.uint16x4x2_t undef, <4 x i16> %vzip.i, 0, 0 2743 %.fca.0.1.insert = insertvalue %struct.uint16x4x2_t %.fca.0.0.insert, <4 x i16> %vzip1.i, 0, 1 2744 ret %struct.uint16x4x2_t %.fca.0.1.insert 2745} 2746 2747define %struct.uint32x2x2_t @test_vzip_u32(<2 x i32> %a, <2 x i32> %b) { 2748; CHECK-LABEL: test_vzip_u32: 2749; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2750; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2751entry: 2752 %vzip.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 2753 %vzip1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 2754 %.fca.0.0.insert = insertvalue %struct.uint32x2x2_t undef, <2 x i32> %vzip.i, 0, 0 2755 %.fca.0.1.insert = insertvalue %struct.uint32x2x2_t %.fca.0.0.insert, <2 x i32> %vzip1.i, 0, 1 2756 ret %struct.uint32x2x2_t %.fca.0.1.insert 2757} 2758 2759define %struct.float32x2x2_t @test_vzip_f32(<2 x float> %a, <2 x float> %b) { 2760; CHECK-LABEL: test_vzip_f32: 2761; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2762; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2763entry: 2764 %vzip.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2> 2765 %vzip1.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3> 2766 %.fca.0.0.insert = insertvalue %struct.float32x2x2_t undef, <2 x float> %vzip.i, 0, 0 2767 %.fca.0.1.insert = insertvalue %struct.float32x2x2_t %.fca.0.0.insert, <2 x float> %vzip1.i, 0, 1 2768 ret %struct.float32x2x2_t %.fca.0.1.insert 2769} 2770 2771define %struct.poly8x8x2_t @test_vzip_p8(<8 x i8> %a, <8 x i8> %b) { 2772; CHECK-LABEL: test_vzip_p8: 2773; CHECK: zip1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2774; CHECK: zip2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2775entry: 2776 %vzip.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2777 %vzip1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2778 %.fca.0.0.insert = insertvalue %struct.poly8x8x2_t undef, <8 x i8> %vzip.i, 0, 0 2779 %.fca.0.1.insert = insertvalue %struct.poly8x8x2_t %.fca.0.0.insert, <8 x i8> %vzip1.i, 0, 1 2780 ret %struct.poly8x8x2_t %.fca.0.1.insert 2781} 2782 2783define %struct.poly16x4x2_t @test_vzip_p16(<4 x i16> %a, <4 x i16> %b) { 2784; CHECK-LABEL: test_vzip_p16: 2785; CHECK: zip1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2786; CHECK: zip2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2787entry: 2788 %vzip.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2789 %vzip1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2790 %.fca.0.0.insert = insertvalue %struct.poly16x4x2_t undef, <4 x i16> %vzip.i, 0, 0 2791 %.fca.0.1.insert = insertvalue %struct.poly16x4x2_t %.fca.0.0.insert, <4 x i16> %vzip1.i, 0, 1 2792 ret %struct.poly16x4x2_t %.fca.0.1.insert 2793} 2794 2795define %struct.int8x16x2_t @test_vzipq_s8(<16 x i8> %a, <16 x i8> %b) { 2796; CHECK-LABEL: test_vzipq_s8: 2797; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2798; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2799entry: 2800 %vzip.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 2801 %vzip1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 2802 %.fca.0.0.insert = insertvalue %struct.int8x16x2_t undef, <16 x i8> %vzip.i, 0, 0 2803 %.fca.0.1.insert = insertvalue %struct.int8x16x2_t %.fca.0.0.insert, <16 x i8> %vzip1.i, 0, 1 2804 ret %struct.int8x16x2_t %.fca.0.1.insert 2805} 2806 2807define %struct.int16x8x2_t @test_vzipq_s16(<8 x i16> %a, <8 x i16> %b) { 2808; CHECK-LABEL: test_vzipq_s16: 2809; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2810; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2811entry: 2812 %vzip.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2813 %vzip1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2814 %.fca.0.0.insert = insertvalue %struct.int16x8x2_t undef, <8 x i16> %vzip.i, 0, 0 2815 %.fca.0.1.insert = insertvalue %struct.int16x8x2_t %.fca.0.0.insert, <8 x i16> %vzip1.i, 0, 1 2816 ret %struct.int16x8x2_t %.fca.0.1.insert 2817} 2818 2819define %struct.int32x4x2_t @test_vzipq_s32(<4 x i32> %a, <4 x i32> %b) { 2820; CHECK-LABEL: test_vzipq_s32: 2821; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2822; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2823entry: 2824 %vzip.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2825 %vzip1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2826 %.fca.0.0.insert = insertvalue %struct.int32x4x2_t undef, <4 x i32> %vzip.i, 0, 0 2827 %.fca.0.1.insert = insertvalue %struct.int32x4x2_t %.fca.0.0.insert, <4 x i32> %vzip1.i, 0, 1 2828 ret %struct.int32x4x2_t %.fca.0.1.insert 2829} 2830 2831define %struct.uint8x16x2_t @test_vzipq_u8(<16 x i8> %a, <16 x i8> %b) { 2832; CHECK-LABEL: test_vzipq_u8: 2833; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2834; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2835entry: 2836 %vzip.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 2837 %vzip1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 2838 %.fca.0.0.insert = insertvalue %struct.uint8x16x2_t undef, <16 x i8> %vzip.i, 0, 0 2839 %.fca.0.1.insert = insertvalue %struct.uint8x16x2_t %.fca.0.0.insert, <16 x i8> %vzip1.i, 0, 1 2840 ret %struct.uint8x16x2_t %.fca.0.1.insert 2841} 2842 2843define %struct.uint16x8x2_t @test_vzipq_u16(<8 x i16> %a, <8 x i16> %b) { 2844; CHECK-LABEL: test_vzipq_u16: 2845; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2846; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2847entry: 2848 %vzip.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2849 %vzip1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2850 %.fca.0.0.insert = insertvalue %struct.uint16x8x2_t undef, <8 x i16> %vzip.i, 0, 0 2851 %.fca.0.1.insert = insertvalue %struct.uint16x8x2_t %.fca.0.0.insert, <8 x i16> %vzip1.i, 0, 1 2852 ret %struct.uint16x8x2_t %.fca.0.1.insert 2853} 2854 2855define %struct.uint32x4x2_t @test_vzipq_u32(<4 x i32> %a, <4 x i32> %b) { 2856; CHECK-LABEL: test_vzipq_u32: 2857; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2858; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2859entry: 2860 %vzip.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2861 %vzip1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2862 %.fca.0.0.insert = insertvalue %struct.uint32x4x2_t undef, <4 x i32> %vzip.i, 0, 0 2863 %.fca.0.1.insert = insertvalue %struct.uint32x4x2_t %.fca.0.0.insert, <4 x i32> %vzip1.i, 0, 1 2864 ret %struct.uint32x4x2_t %.fca.0.1.insert 2865} 2866 2867define %struct.float32x4x2_t @test_vzipq_f32(<4 x float> %a, <4 x float> %b) { 2868; CHECK-LABEL: test_vzipq_f32: 2869; CHECK: zip1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2870; CHECK: zip2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 2871entry: 2872 %vzip.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5> 2873 %vzip1.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7> 2874 %.fca.0.0.insert = insertvalue %struct.float32x4x2_t undef, <4 x float> %vzip.i, 0, 0 2875 %.fca.0.1.insert = insertvalue %struct.float32x4x2_t %.fca.0.0.insert, <4 x float> %vzip1.i, 0, 1 2876 ret %struct.float32x4x2_t %.fca.0.1.insert 2877} 2878 2879define %struct.poly8x16x2_t @test_vzipq_p8(<16 x i8> %a, <16 x i8> %b) { 2880; CHECK-LABEL: test_vzipq_p8: 2881; CHECK: zip1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2882; CHECK: zip2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 2883entry: 2884 %vzip.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23> 2885 %vzip1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31> 2886 %.fca.0.0.insert = insertvalue %struct.poly8x16x2_t undef, <16 x i8> %vzip.i, 0, 0 2887 %.fca.0.1.insert = insertvalue %struct.poly8x16x2_t %.fca.0.0.insert, <16 x i8> %vzip1.i, 0, 1 2888 ret %struct.poly8x16x2_t %.fca.0.1.insert 2889} 2890 2891define %struct.poly16x8x2_t @test_vzipq_p16(<8 x i16> %a, <8 x i16> %b) { 2892; CHECK-LABEL: test_vzipq_p16: 2893; CHECK: zip1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2894; CHECK: zip2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 2895entry: 2896 %vzip.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11> 2897 %vzip1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15> 2898 %.fca.0.0.insert = insertvalue %struct.poly16x8x2_t undef, <8 x i16> %vzip.i, 0, 0 2899 %.fca.0.1.insert = insertvalue %struct.poly16x8x2_t %.fca.0.0.insert, <8 x i16> %vzip1.i, 0, 1 2900 ret %struct.poly16x8x2_t %.fca.0.1.insert 2901} 2902 2903define %struct.int8x8x2_t @test_vtrn_s8(<8 x i8> %a, <8 x i8> %b) { 2904; CHECK-LABEL: test_vtrn_s8: 2905; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2906; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2907entry: 2908 %vtrn.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2909 %vtrn1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2910 %.fca.0.0.insert = insertvalue %struct.int8x8x2_t undef, <8 x i8> %vtrn.i, 0, 0 2911 %.fca.0.1.insert = insertvalue %struct.int8x8x2_t %.fca.0.0.insert, <8 x i8> %vtrn1.i, 0, 1 2912 ret %struct.int8x8x2_t %.fca.0.1.insert 2913} 2914 2915define %struct.int16x4x2_t @test_vtrn_s16(<4 x i16> %a, <4 x i16> %b) { 2916; CHECK-LABEL: test_vtrn_s16: 2917; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2918; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2919entry: 2920 %vtrn.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2921 %vtrn1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2922 %.fca.0.0.insert = insertvalue %struct.int16x4x2_t undef, <4 x i16> %vtrn.i, 0, 0 2923 %.fca.0.1.insert = insertvalue %struct.int16x4x2_t %.fca.0.0.insert, <4 x i16> %vtrn1.i, 0, 1 2924 ret %struct.int16x4x2_t %.fca.0.1.insert 2925} 2926 2927define %struct.int32x2x2_t @test_vtrn_s32(<2 x i32> %a, <2 x i32> %b) { 2928; CHECK-LABEL: test_vtrn_s32: 2929; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2930; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2931entry: 2932 %vtrn.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 2933 %vtrn1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 2934 %.fca.0.0.insert = insertvalue %struct.int32x2x2_t undef, <2 x i32> %vtrn.i, 0, 0 2935 %.fca.0.1.insert = insertvalue %struct.int32x2x2_t %.fca.0.0.insert, <2 x i32> %vtrn1.i, 0, 1 2936 ret %struct.int32x2x2_t %.fca.0.1.insert 2937} 2938 2939define %struct.uint8x8x2_t @test_vtrn_u8(<8 x i8> %a, <8 x i8> %b) { 2940; CHECK-LABEL: test_vtrn_u8: 2941; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2942; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2943entry: 2944 %vtrn.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2945 %vtrn1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2946 %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vtrn.i, 0, 0 2947 %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vtrn1.i, 0, 1 2948 ret %struct.uint8x8x2_t %.fca.0.1.insert 2949} 2950 2951define %struct.uint16x4x2_t @test_vtrn_u16(<4 x i16> %a, <4 x i16> %b) { 2952; CHECK-LABEL: test_vtrn_u16: 2953; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2954; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 2955entry: 2956 %vtrn.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 2957 %vtrn1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 2958 %.fca.0.0.insert = insertvalue %struct.uint16x4x2_t undef, <4 x i16> %vtrn.i, 0, 0 2959 %.fca.0.1.insert = insertvalue %struct.uint16x4x2_t %.fca.0.0.insert, <4 x i16> %vtrn1.i, 0, 1 2960 ret %struct.uint16x4x2_t %.fca.0.1.insert 2961} 2962 2963define %struct.uint32x2x2_t @test_vtrn_u32(<2 x i32> %a, <2 x i32> %b) { 2964; CHECK-LABEL: test_vtrn_u32: 2965; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2966; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2967entry: 2968 %vtrn.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2> 2969 %vtrn1.i = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3> 2970 %.fca.0.0.insert = insertvalue %struct.uint32x2x2_t undef, <2 x i32> %vtrn.i, 0, 0 2971 %.fca.0.1.insert = insertvalue %struct.uint32x2x2_t %.fca.0.0.insert, <2 x i32> %vtrn1.i, 0, 1 2972 ret %struct.uint32x2x2_t %.fca.0.1.insert 2973} 2974 2975define %struct.float32x2x2_t @test_vtrn_f32(<2 x float> %a, <2 x float> %b) { 2976; CHECK-LABEL: test_vtrn_f32: 2977; CHECK: zip1 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2978; CHECK: zip2 {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s 2979entry: 2980 %vtrn.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2> 2981 %vtrn1.i = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3> 2982 %.fca.0.0.insert = insertvalue %struct.float32x2x2_t undef, <2 x float> %vtrn.i, 0, 0 2983 %.fca.0.1.insert = insertvalue %struct.float32x2x2_t %.fca.0.0.insert, <2 x float> %vtrn1.i, 0, 1 2984 ret %struct.float32x2x2_t %.fca.0.1.insert 2985} 2986 2987define %struct.poly8x8x2_t @test_vtrn_p8(<8 x i8> %a, <8 x i8> %b) { 2988; CHECK-LABEL: test_vtrn_p8: 2989; CHECK: trn1 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2990; CHECK: trn2 {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b 2991entry: 2992 %vtrn.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2993 %vtrn1.i = shufflevector <8 x i8> %a, <8 x i8> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2994 %.fca.0.0.insert = insertvalue %struct.poly8x8x2_t undef, <8 x i8> %vtrn.i, 0, 0 2995 %.fca.0.1.insert = insertvalue %struct.poly8x8x2_t %.fca.0.0.insert, <8 x i8> %vtrn1.i, 0, 1 2996 ret %struct.poly8x8x2_t %.fca.0.1.insert 2997} 2998 2999define %struct.poly16x4x2_t @test_vtrn_p16(<4 x i16> %a, <4 x i16> %b) { 3000; CHECK-LABEL: test_vtrn_p16: 3001; CHECK: trn1 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 3002; CHECK: trn2 {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h 3003entry: 3004 %vtrn.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 3005 %vtrn1.i = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 3006 %.fca.0.0.insert = insertvalue %struct.poly16x4x2_t undef, <4 x i16> %vtrn.i, 0, 0 3007 %.fca.0.1.insert = insertvalue %struct.poly16x4x2_t %.fca.0.0.insert, <4 x i16> %vtrn1.i, 0, 1 3008 ret %struct.poly16x4x2_t %.fca.0.1.insert 3009} 3010 3011define %struct.int8x16x2_t @test_vtrnq_s8(<16 x i8> %a, <16 x i8> %b) { 3012; CHECK-LABEL: test_vtrnq_s8: 3013; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 3014; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 3015entry: 3016 %vtrn.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 3017 %vtrn1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 3018 %.fca.0.0.insert = insertvalue %struct.int8x16x2_t undef, <16 x i8> %vtrn.i, 0, 0 3019 %.fca.0.1.insert = insertvalue %struct.int8x16x2_t %.fca.0.0.insert, <16 x i8> %vtrn1.i, 0, 1 3020 ret %struct.int8x16x2_t %.fca.0.1.insert 3021} 3022 3023define %struct.int16x8x2_t @test_vtrnq_s16(<8 x i16> %a, <8 x i16> %b) { 3024; CHECK-LABEL: test_vtrnq_s16: 3025; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 3026; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 3027entry: 3028 %vtrn.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 3029 %vtrn1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 3030 %.fca.0.0.insert = insertvalue %struct.int16x8x2_t undef, <8 x i16> %vtrn.i, 0, 0 3031 %.fca.0.1.insert = insertvalue %struct.int16x8x2_t %.fca.0.0.insert, <8 x i16> %vtrn1.i, 0, 1 3032 ret %struct.int16x8x2_t %.fca.0.1.insert 3033} 3034 3035define %struct.int32x4x2_t @test_vtrnq_s32(<4 x i32> %a, <4 x i32> %b) { 3036; CHECK-LABEL: test_vtrnq_s32: 3037; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 3038; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 3039entry: 3040 %vtrn.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 3041 %vtrn1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 3042 %.fca.0.0.insert = insertvalue %struct.int32x4x2_t undef, <4 x i32> %vtrn.i, 0, 0 3043 %.fca.0.1.insert = insertvalue %struct.int32x4x2_t %.fca.0.0.insert, <4 x i32> %vtrn1.i, 0, 1 3044 ret %struct.int32x4x2_t %.fca.0.1.insert 3045} 3046 3047define %struct.uint8x16x2_t @test_vtrnq_u8(<16 x i8> %a, <16 x i8> %b) { 3048; CHECK-LABEL: test_vtrnq_u8: 3049; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 3050; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 3051entry: 3052 %vtrn.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 3053 %vtrn1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 3054 %.fca.0.0.insert = insertvalue %struct.uint8x16x2_t undef, <16 x i8> %vtrn.i, 0, 0 3055 %.fca.0.1.insert = insertvalue %struct.uint8x16x2_t %.fca.0.0.insert, <16 x i8> %vtrn1.i, 0, 1 3056 ret %struct.uint8x16x2_t %.fca.0.1.insert 3057} 3058 3059define %struct.uint16x8x2_t @test_vtrnq_u16(<8 x i16> %a, <8 x i16> %b) { 3060; CHECK-LABEL: test_vtrnq_u16: 3061; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 3062; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 3063entry: 3064 %vtrn.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 3065 %vtrn1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 3066 %.fca.0.0.insert = insertvalue %struct.uint16x8x2_t undef, <8 x i16> %vtrn.i, 0, 0 3067 %.fca.0.1.insert = insertvalue %struct.uint16x8x2_t %.fca.0.0.insert, <8 x i16> %vtrn1.i, 0, 1 3068 ret %struct.uint16x8x2_t %.fca.0.1.insert 3069} 3070 3071define %struct.uint32x4x2_t @test_vtrnq_u32(<4 x i32> %a, <4 x i32> %b) { 3072; CHECK-LABEL: test_vtrnq_u32: 3073; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 3074; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 3075entry: 3076 %vtrn.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 3077 %vtrn1.i = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 3078 %.fca.0.0.insert = insertvalue %struct.uint32x4x2_t undef, <4 x i32> %vtrn.i, 0, 0 3079 %.fca.0.1.insert = insertvalue %struct.uint32x4x2_t %.fca.0.0.insert, <4 x i32> %vtrn1.i, 0, 1 3080 ret %struct.uint32x4x2_t %.fca.0.1.insert 3081} 3082 3083define %struct.float32x4x2_t @test_vtrnq_f32(<4 x float> %a, <4 x float> %b) { 3084; CHECK-LABEL: test_vtrnq_f32: 3085; CHECK: trn1 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 3086; CHECK: trn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s 3087entry: 3088 %vtrn.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6> 3089 %vtrn1.i = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7> 3090 %.fca.0.0.insert = insertvalue %struct.float32x4x2_t undef, <4 x float> %vtrn.i, 0, 0 3091 %.fca.0.1.insert = insertvalue %struct.float32x4x2_t %.fca.0.0.insert, <4 x float> %vtrn1.i, 0, 1 3092 ret %struct.float32x4x2_t %.fca.0.1.insert 3093} 3094 3095define %struct.poly8x16x2_t @test_vtrnq_p8(<16 x i8> %a, <16 x i8> %b) { 3096; CHECK-LABEL: test_vtrnq_p8: 3097; CHECK: trn1 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 3098; CHECK: trn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b 3099entry: 3100 %vtrn.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 0, i32 16, i32 2, i32 18, i32 4, i32 20, i32 6, i32 22, i32 8, i32 24, i32 10, i32 26, i32 12, i32 28, i32 14, i32 30> 3101 %vtrn1.i = shufflevector <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 1, i32 17, i32 3, i32 19, i32 5, i32 21, i32 7, i32 23, i32 9, i32 25, i32 11, i32 27, i32 13, i32 29, i32 15, i32 31> 3102 %.fca.0.0.insert = insertvalue %struct.poly8x16x2_t undef, <16 x i8> %vtrn.i, 0, 0 3103 %.fca.0.1.insert = insertvalue %struct.poly8x16x2_t %.fca.0.0.insert, <16 x i8> %vtrn1.i, 0, 1 3104 ret %struct.poly8x16x2_t %.fca.0.1.insert 3105} 3106 3107define %struct.poly16x8x2_t @test_vtrnq_p16(<8 x i16> %a, <8 x i16> %b) { 3108; CHECK-LABEL: test_vtrnq_p16: 3109; CHECK: trn1 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 3110; CHECK: trn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h 3111entry: 3112 %vtrn.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 3113 %vtrn1.i = shufflevector <8 x i16> %a, <8 x i16> %b, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 3114 %.fca.0.0.insert = insertvalue %struct.poly16x8x2_t undef, <8 x i16> %vtrn.i, 0, 0 3115 %.fca.0.1.insert = insertvalue %struct.poly16x8x2_t %.fca.0.0.insert, <8 x i16> %vtrn1.i, 0, 1 3116 ret %struct.poly16x8x2_t %.fca.0.1.insert 3117} 3118 3119define %struct.uint8x8x2_t @test_uzp(<16 x i8> %y) { 3120; CHECK-LABEL: test_uzp: 3121 3122 %vuzp.i = shufflevector <16 x i8> %y, <16 x i8> undef, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14> 3123 %vuzp1.i = shufflevector <16 x i8> %y, <16 x i8> undef, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15> 3124 %.fca.0.0.insert = insertvalue %struct.uint8x8x2_t undef, <8 x i8> %vuzp.i, 0, 0 3125 %.fca.0.1.insert = insertvalue %struct.uint8x8x2_t %.fca.0.0.insert, <8 x i8> %vuzp1.i, 0, 1 3126 ret %struct.uint8x8x2_t %.fca.0.1.insert 3127 3128} 3129