aarch64-neon-perm.c revision 4967a710c84587c654b56c828382219c3937dacb
16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN:  -emit-llvm -o - %s | opt -S -mem2reg | FileCheck %s
3bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu// Test new aarch64 intrinsics and types
5bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu#include <arm_neon.h>
6bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vuzp1_s8(<8 x i8> %a, <8 x i8> %b) #0 {
84967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
10bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8_t test_vuzp1_s8(int8x8_t a, int8x8_t b) {
11bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_s8(a, b);
12bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
13bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vuzp1q_s8(<16 x i8> %a, <16 x i8> %b) #0 {
154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
17bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16_t test_vuzp1q_s8(int8x16_t a, int8x16_t b) {
18bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_s8(a, b);
19bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
20bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vuzp1_s16(<4 x i16> %a, <4 x i16> %b) #0 {
224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
24bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4_t test_vuzp1_s16(int16x4_t a, int16x4_t b) {
25bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_s16(a, b);
26bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
27bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vuzp1q_s16(<8 x i16> %a, <8 x i16> %b) #0 {
294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
31bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8_t test_vuzp1q_s16(int16x8_t a, int16x8_t b) {
32bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_s16(a, b);
33bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
34bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vuzp1_s32(<2 x i32> %a, <2 x i32> %b) #0 {
364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
38bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2_t test_vuzp1_s32(int32x2_t a, int32x2_t b) {
39bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_s32(a, b);
40bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
41bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vuzp1q_s32(<4 x i32> %a, <4 x i32> %b) #0 {
434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
45bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4_t test_vuzp1q_s32(int32x4_t a, int32x4_t b) {
46bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_s32(a, b);
47bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
48bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vuzp1q_s64(<2 x i64> %a, <2 x i64> %b) #0 {
504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
52bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint64x2_t test_vuzp1q_s64(int64x2_t a, int64x2_t b) {
53bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_s64(a, b);
54bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
55bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vuzp1_u8(<8 x i8> %a, <8 x i8> %b) #0 {
574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
59bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8_t test_vuzp1_u8(uint8x8_t a, uint8x8_t b) {
60bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_u8(a, b);
61bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
62bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vuzp1q_u8(<16 x i8> %a, <16 x i8> %b) #0 {
644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
66bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16_t test_vuzp1q_u8(uint8x16_t a, uint8x16_t b) {
67bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_u8(a, b);
68bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
69bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vuzp1_u16(<4 x i16> %a, <4 x i16> %b) #0 {
714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
73bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4_t test_vuzp1_u16(uint16x4_t a, uint16x4_t b) {
74bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_u16(a, b);
75bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
76bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vuzp1q_u16(<8 x i16> %a, <8 x i16> %b) #0 {
784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
80bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8_t test_vuzp1q_u16(uint16x8_t a, uint16x8_t b) {
81bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_u16(a, b);
82bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
83bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vuzp1_u32(<2 x i32> %a, <2 x i32> %b) #0 {
854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
87bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2_t test_vuzp1_u32(uint32x2_t a, uint32x2_t b) {
88bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_u32(a, b);
89bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
90bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vuzp1q_u32(<4 x i32> %a, <4 x i32> %b) #0 {
924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
94bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4_t test_vuzp1q_u32(uint32x4_t a, uint32x4_t b) {
95bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_u32(a, b);
96bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
97bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vuzp1q_u64(<2 x i64> %a, <2 x i64> %b) #0 {
994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
101bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint64x2_t test_vuzp1q_u64(uint64x2_t a, uint64x2_t b) {
102bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_u64(a, b);
103bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
104bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vuzp1_f32(<2 x float> %a, <2 x float> %b) #0 {
1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SHUFFLE_I]]
108bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2_t test_vuzp1_f32(float32x2_t a, float32x2_t b) {
109bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_f32(a, b);
110bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
111bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vuzp1q_f32(<4 x float> %a, <4 x float> %b) #0 {
1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I]]
115bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4_t test_vuzp1q_f32(float32x4_t a, float32x4_t b) {
116bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_f32(a, b);
117bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
118bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vuzp1q_f64(<2 x double> %a, <2 x double> %b) #0 {
1204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2>
1214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SHUFFLE_I]]
122bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat64x2_t test_vuzp1q_f64(float64x2_t a, float64x2_t b) {
123bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_f64(a, b);
124bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
125bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vuzp1_p8(<8 x i8> %a, <8 x i8> %b) #0 {
1274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
129bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8_t test_vuzp1_p8(poly8x8_t a, poly8x8_t b) {
130bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_p8(a, b);
131bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
132bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vuzp1q_p8(<16 x i8> %a, <16 x i8> %b) #0 {
1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
136bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16_t test_vuzp1q_p8(poly8x16_t a, poly8x16_t b) {
137bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_p8(a, b);
138bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
139bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vuzp1_p16(<4 x i16> %a, <4 x i16> %b) #0 {
1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
1424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
143bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4_t test_vuzp1_p16(poly16x4_t a, poly16x4_t b) {
144bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1_p16(a, b);
145bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
146bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vuzp1q_p16(<8 x i16> %a, <8 x i16> %b) #0 {
1484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
150bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8_t test_vuzp1q_p16(poly16x8_t a, poly16x8_t b) {
151bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp1q_p16(a, b);
152bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
153bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vuzp2_s8(<8 x i8> %a, <8 x i8> %b) #0 {
1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
157bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8_t test_vuzp2_s8(int8x8_t a, int8x8_t b) {
158bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_s8(a, b);
159bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
160bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vuzp2q_s8(<16 x i8> %a, <16 x i8> %b) #0 {
1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
164bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16_t test_vuzp2q_s8(int8x16_t a, int8x16_t b) {
165bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_s8(a, b);
166bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
167bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vuzp2_s16(<4 x i16> %a, <4 x i16> %b) #0 {
1694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
171bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4_t test_vuzp2_s16(int16x4_t a, int16x4_t b) {
172bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_s16(a, b);
173bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
174bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vuzp2q_s16(<8 x i16> %a, <8 x i16> %b) #0 {
1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
178bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8_t test_vuzp2q_s16(int16x8_t a, int16x8_t b) {
179bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_s16(a, b);
180bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
181bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vuzp2_s32(<2 x i32> %a, <2 x i32> %b) #0 {
1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
185bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2_t test_vuzp2_s32(int32x2_t a, int32x2_t b) {
186bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_s32(a, b);
187bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
188bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vuzp2q_s32(<4 x i32> %a, <4 x i32> %b) #0 {
1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
192bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4_t test_vuzp2q_s32(int32x4_t a, int32x4_t b) {
193bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_s32(a, b);
194bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
195bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vuzp2q_s64(<2 x i64> %a, <2 x i64> %b) #0 {
1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
199bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint64x2_t test_vuzp2q_s64(int64x2_t a, int64x2_t b) {
200bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_s64(a, b);
201bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
202bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vuzp2_u8(<8 x i8> %a, <8 x i8> %b) #0 {
2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
2054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
206bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8_t test_vuzp2_u8(uint8x8_t a, uint8x8_t b) {
207bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_u8(a, b);
208bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
209bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vuzp2q_u8(<16 x i8> %a, <16 x i8> %b) #0 {
2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
213bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16_t test_vuzp2q_u8(uint8x16_t a, uint8x16_t b) {
214bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_u8(a, b);
215bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
216bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vuzp2_u16(<4 x i16> %a, <4 x i16> %b) #0 {
2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
220bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4_t test_vuzp2_u16(uint16x4_t a, uint16x4_t b) {
221bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_u16(a, b);
222bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
223bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vuzp2q_u16(<8 x i16> %a, <8 x i16> %b) #0 {
2254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
2264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
227bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8_t test_vuzp2q_u16(uint16x8_t a, uint16x8_t b) {
228bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_u16(a, b);
229bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
230bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vuzp2_u32(<2 x i32> %a, <2 x i32> %b) #0 {
2324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
2334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
234bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2_t test_vuzp2_u32(uint32x2_t a, uint32x2_t b) {
235bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_u32(a, b);
236bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
237bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vuzp2q_u32(<4 x i32> %a, <4 x i32> %b) #0 {
2394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
241bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4_t test_vuzp2q_u32(uint32x4_t a, uint32x4_t b) {
242bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_u32(a, b);
243bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
244bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vuzp2q_u64(<2 x i64> %a, <2 x i64> %b) #0 {
2464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
2474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
248bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint64x2_t test_vuzp2q_u64(uint64x2_t a, uint64x2_t b) {
249bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_u64(a, b);
250bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
251bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vuzp2_f32(<2 x float> %a, <2 x float> %b) #0 {
2534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
2544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SHUFFLE_I]]
255bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2_t test_vuzp2_f32(float32x2_t a, float32x2_t b) {
256bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_f32(a, b);
257bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
258bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vuzp2q_f32(<4 x float> %a, <4 x float> %b) #0 {
2604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I]]
262bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4_t test_vuzp2q_f32(float32x4_t a, float32x4_t b) {
263bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_f32(a, b);
264bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
265bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vuzp2q_f64(<2 x double> %a, <2 x double> %b) #0 {
2674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3>
2684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SHUFFLE_I]]
269bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat64x2_t test_vuzp2q_f64(float64x2_t a, float64x2_t b) {
270bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_f64(a, b);
271bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
272bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vuzp2_p8(<8 x i8> %a, <8 x i8> %b) #0 {
2744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
2754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
276bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8_t test_vuzp2_p8(poly8x8_t a, poly8x8_t b) {
277bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_p8(a, b);
278bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
279bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vuzp2q_p8(<16 x i8> %a, <16 x i8> %b) #0 {
2814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
2824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
283bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16_t test_vuzp2q_p8(poly8x16_t a, poly8x16_t b) {
284bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_p8(a, b);
285bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
286bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vuzp2_p16(<4 x i16> %a, <4 x i16> %b) #0 {
2884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
2894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
290bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4_t test_vuzp2_p16(poly16x4_t a, poly16x4_t b) {
291bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2_p16(a, b);
292bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
293bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
2944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vuzp2q_p16(<8 x i16> %a, <8 x i16> %b) #0 {
2954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
2964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
297bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8_t test_vuzp2q_p16(poly16x8_t a, poly16x8_t b) {
298bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp2q_p16(a, b);
299bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
300bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vzip1_s8(<8 x i8> %a, <8 x i8> %b) #0 {
3024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
3034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
304bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8_t test_vzip1_s8(int8x8_t a, int8x8_t b) {
305bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_s8(a, b);
306bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
307bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vzip1q_s8(<16 x i8> %a, <16 x i8> %b) #0 {
3094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
3104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
311bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16_t test_vzip1q_s8(int8x16_t a, int8x16_t b) {
312bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_s8(a, b);
313bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
314bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vzip1_s16(<4 x i16> %a, <4 x i16> %b) #0 {
3164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
3174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
318bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4_t test_vzip1_s16(int16x4_t a, int16x4_t b) {
319bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_s16(a, b);
320bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
321bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vzip1q_s16(<8 x i16> %a, <8 x i16> %b) #0 {
3234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
3244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
325bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8_t test_vzip1q_s16(int16x8_t a, int16x8_t b) {
326bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_s16(a, b);
327bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
328bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vzip1_s32(<2 x i32> %a, <2 x i32> %b) #0 {
3304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
3314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
332bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2_t test_vzip1_s32(int32x2_t a, int32x2_t b) {
333bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_s32(a, b);
334bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
335bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vzip1q_s32(<4 x i32> %a, <4 x i32> %b) #0 {
3374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
3384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
339bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4_t test_vzip1q_s32(int32x4_t a, int32x4_t b) {
340bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_s32(a, b);
341bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
342bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vzip1q_s64(<2 x i64> %a, <2 x i64> %b) #0 {
3444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
3454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
346bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint64x2_t test_vzip1q_s64(int64x2_t a, int64x2_t b) {
347bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_s64(a, b);
348bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
349bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vzip1_u8(<8 x i8> %a, <8 x i8> %b) #0 {
3514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
3524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
353bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8_t test_vzip1_u8(uint8x8_t a, uint8x8_t b) {
354bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_u8(a, b);
355bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
356bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vzip1q_u8(<16 x i8> %a, <16 x i8> %b) #0 {
3584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
3594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
360bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16_t test_vzip1q_u8(uint8x16_t a, uint8x16_t b) {
361bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_u8(a, b);
362bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
363bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vzip1_u16(<4 x i16> %a, <4 x i16> %b) #0 {
3654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
3664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
367bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4_t test_vzip1_u16(uint16x4_t a, uint16x4_t b) {
368bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_u16(a, b);
369bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
370bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vzip1q_u16(<8 x i16> %a, <8 x i16> %b) #0 {
3724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
3734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
374bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8_t test_vzip1q_u16(uint16x8_t a, uint16x8_t b) {
375bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_u16(a, b);
376bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
377bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vzip1_u32(<2 x i32> %a, <2 x i32> %b) #0 {
3794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
3804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
381bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2_t test_vzip1_u32(uint32x2_t a, uint32x2_t b) {
382bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_u32(a, b);
383bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
384bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vzip1q_u32(<4 x i32> %a, <4 x i32> %b) #0 {
3864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
3874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
388bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4_t test_vzip1q_u32(uint32x4_t a, uint32x4_t b) {
389bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_u32(a, b);
390bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
391bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vzip1q_u64(<2 x i64> %a, <2 x i64> %b) #0 {
3934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
3944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
395bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint64x2_t test_vzip1q_u64(uint64x2_t a, uint64x2_t b) {
396bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_u64(a, b);
397bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
398bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
3994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vzip1_f32(<2 x float> %a, <2 x float> %b) #0 {
4004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
4014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SHUFFLE_I]]
402bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2_t test_vzip1_f32(float32x2_t a, float32x2_t b) {
403bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_f32(a, b);
404bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
405bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vzip1q_f32(<4 x float> %a, <4 x float> %b) #0 {
4074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
4084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I]]
409bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4_t test_vzip1q_f32(float32x4_t a, float32x4_t b) {
410bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_f32(a, b);
411bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
412bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vzip1q_f64(<2 x double> %a, <2 x double> %b) #0 {
4144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2>
4154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SHUFFLE_I]]
416bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat64x2_t test_vzip1q_f64(float64x2_t a, float64x2_t b) {
417bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_f64(a, b);
418bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
419bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vzip1_p8(<8 x i8> %a, <8 x i8> %b) #0 {
4214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
4224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
423bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8_t test_vzip1_p8(poly8x8_t a, poly8x8_t b) {
424bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_p8(a, b);
425bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
426bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vzip1q_p8(<16 x i8> %a, <16 x i8> %b) #0 {
4284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
4294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
430bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16_t test_vzip1q_p8(poly8x16_t a, poly8x16_t b) {
431bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_p8(a, b);
432bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
433bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vzip1_p16(<4 x i16> %a, <4 x i16> %b) #0 {
4354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
4364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
437bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4_t test_vzip1_p16(poly16x4_t a, poly16x4_t b) {
438bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1_p16(a, b);
439bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
440bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vzip1q_p16(<8 x i16> %a, <8 x i16> %b) #0 {
4424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
4434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
444bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8_t test_vzip1q_p16(poly16x8_t a, poly16x8_t b) {
445bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip1q_p16(a, b);
446bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
447bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vzip2_s8(<8 x i8> %a, <8 x i8> %b) #0 {
4494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
4504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
451bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8_t test_vzip2_s8(int8x8_t a, int8x8_t b) {
452bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_s8(a, b);
453bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
454bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vzip2q_s8(<16 x i8> %a, <16 x i8> %b) #0 {
4564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
4574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
458bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16_t test_vzip2q_s8(int8x16_t a, int8x16_t b) {
459bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_s8(a, b);
460bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
461bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vzip2_s16(<4 x i16> %a, <4 x i16> %b) #0 {
4634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
4644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
465bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4_t test_vzip2_s16(int16x4_t a, int16x4_t b) {
466bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_s16(a, b);
467bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
468bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vzip2q_s16(<8 x i16> %a, <8 x i16> %b) #0 {
4704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
4714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
472bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8_t test_vzip2q_s16(int16x8_t a, int16x8_t b) {
473bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_s16(a, b);
474bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
475bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vzip2_s32(<2 x i32> %a, <2 x i32> %b) #0 {
4774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
4784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
479bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2_t test_vzip2_s32(int32x2_t a, int32x2_t b) {
480bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_s32(a, b);
481bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
482bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vzip2q_s32(<4 x i32> %a, <4 x i32> %b) #0 {
4844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
4854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
486bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4_t test_vzip2q_s32(int32x4_t a, int32x4_t b) {
487bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_s32(a, b);
488bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
489bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vzip2q_s64(<2 x i64> %a, <2 x i64> %b) #0 {
4914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
4924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
493bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint64x2_t test_vzip2q_s64(int64x2_t a, int64x2_t b) {
494bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_s64(a, b);
495bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
496bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
4974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vzip2_u8(<8 x i8> %a, <8 x i8> %b) #0 {
4984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
4994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
500bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8_t test_vzip2_u8(uint8x8_t a, uint8x8_t b) {
501bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_u8(a, b);
502bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
503bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vzip2q_u8(<16 x i8> %a, <16 x i8> %b) #0 {
5054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
5064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
507bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16_t test_vzip2q_u8(uint8x16_t a, uint8x16_t b) {
508bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_u8(a, b);
509bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
510bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vzip2_u16(<4 x i16> %a, <4 x i16> %b) #0 {
5124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
5134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
514bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4_t test_vzip2_u16(uint16x4_t a, uint16x4_t b) {
515bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_u16(a, b);
516bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
517bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vzip2q_u16(<8 x i16> %a, <8 x i16> %b) #0 {
5194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
5204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
521bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8_t test_vzip2q_u16(uint16x8_t a, uint16x8_t b) {
522bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_u16(a, b);
523bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
524bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vzip2_u32(<2 x i32> %a, <2 x i32> %b) #0 {
5264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
5274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
528bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2_t test_vzip2_u32(uint32x2_t a, uint32x2_t b) {
529bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_u32(a, b);
530bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
531bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vzip2q_u32(<4 x i32> %a, <4 x i32> %b) #0 {
5334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
5344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
535bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4_t test_vzip2q_u32(uint32x4_t a, uint32x4_t b) {
536bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_u32(a, b);
537bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
538bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vzip2q_u64(<2 x i64> %a, <2 x i64> %b) #0 {
5404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
5414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
542bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint64x2_t test_vzip2q_u64(uint64x2_t a, uint64x2_t b) {
543bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_u64(a, b);
544bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
545bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vzip2_f32(<2 x float> %a, <2 x float> %b) #0 {
5474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
5484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SHUFFLE_I]]
549bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2_t test_vzip2_f32(float32x2_t a, float32x2_t b) {
550bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_f32(a, b);
551bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
552bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vzip2q_f32(<4 x float> %a, <4 x float> %b) #0 {
5544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
5554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I]]
556bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4_t test_vzip2q_f32(float32x4_t a, float32x4_t b) {
557bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_f32(a, b);
558bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
559bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vzip2q_f64(<2 x double> %a, <2 x double> %b) #0 {
5614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3>
5624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SHUFFLE_I]]
563bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat64x2_t test_vzip2q_f64(float64x2_t a, float64x2_t b) {
564bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_f64(a, b);
565bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
566bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vzip2_p8(<8 x i8> %a, <8 x i8> %b) #0 {
5684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
5694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
570bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8_t test_vzip2_p8(poly8x8_t a, poly8x8_t b) {
571bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_p8(a, b);
572bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
573bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vzip2q_p8(<16 x i8> %a, <16 x i8> %b) #0 {
5754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
5764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
577bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16_t test_vzip2q_p8(poly8x16_t a, poly8x16_t b) {
578bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_p8(a, b);
579bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
580bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vzip2_p16(<4 x i16> %a, <4 x i16> %b) #0 {
5824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
5834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
584bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4_t test_vzip2_p16(poly16x4_t a, poly16x4_t b) {
585bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2_p16(a, b);
586bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
587bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vzip2q_p16(<8 x i16> %a, <8 x i16> %b) #0 {
5894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
5904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
591bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8_t test_vzip2q_p16(poly16x8_t a, poly16x8_t b) {
592bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip2q_p16(a, b);
593bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
594bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
5954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtrn1_s8(<8 x i8> %a, <8 x i8> %b) #0 {
5964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
5974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
598bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8_t test_vtrn1_s8(int8x8_t a, int8x8_t b) {
599bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_s8(a, b);
600bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
601bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtrn1q_s8(<16 x i8> %a, <16 x i8> %b) #0 {
6034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
6044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
605bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16_t test_vtrn1q_s8(int8x16_t a, int8x16_t b) {
606bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_s8(a, b);
607bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
608bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtrn1_s16(<4 x i16> %a, <4 x i16> %b) #0 {
6104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
6114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
612bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4_t test_vtrn1_s16(int16x4_t a, int16x4_t b) {
613bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_s16(a, b);
614bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
615bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtrn1q_s16(<8 x i16> %a, <8 x i16> %b) #0 {
6174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
6184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
619bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8_t test_vtrn1q_s16(int16x8_t a, int16x8_t b) {
620bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_s16(a, b);
621bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
622bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vtrn1_s32(<2 x i32> %a, <2 x i32> %b) #0 {
6244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
6254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
626bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2_t test_vtrn1_s32(int32x2_t a, int32x2_t b) {
627bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_s32(a, b);
628bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
629bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vtrn1q_s32(<4 x i32> %a, <4 x i32> %b) #0 {
6314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
6324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
633bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4_t test_vtrn1q_s32(int32x4_t a, int32x4_t b) {
634bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_s32(a, b);
635bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
636bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vtrn1q_s64(<2 x i64> %a, <2 x i64> %b) #0 {
6384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
6394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
640bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint64x2_t test_vtrn1q_s64(int64x2_t a, int64x2_t b) {
641bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_s64(a, b);
642bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
643bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtrn1_u8(<8 x i8> %a, <8 x i8> %b) #0 {
6454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
6464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
647bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8_t test_vtrn1_u8(uint8x8_t a, uint8x8_t b) {
648bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_u8(a, b);
649bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
650bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtrn1q_u8(<16 x i8> %a, <16 x i8> %b) #0 {
6524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
6534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
654bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16_t test_vtrn1q_u8(uint8x16_t a, uint8x16_t b) {
655bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_u8(a, b);
656bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
657bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtrn1_u16(<4 x i16> %a, <4 x i16> %b) #0 {
6594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
6604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
661bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4_t test_vtrn1_u16(uint16x4_t a, uint16x4_t b) {
662bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_u16(a, b);
663bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
664bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtrn1q_u16(<8 x i16> %a, <8 x i16> %b) #0 {
6664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
6674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
668bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8_t test_vtrn1q_u16(uint16x8_t a, uint16x8_t b) {
669bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_u16(a, b);
670bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
671bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vtrn1_u32(<2 x i32> %a, <2 x i32> %b) #0 {
6734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 2>
6744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
675bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2_t test_vtrn1_u32(uint32x2_t a, uint32x2_t b) {
676bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_u32(a, b);
677bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
678bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vtrn1q_u32(<4 x i32> %a, <4 x i32> %b) #0 {
6804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
6814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
682bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4_t test_vtrn1q_u32(uint32x4_t a, uint32x4_t b) {
683bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_u32(a, b);
684bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
685bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vtrn1q_u64(<2 x i64> %a, <2 x i64> %b) #0 {
6874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 0, i32 2>
6884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
689bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint64x2_t test_vtrn1q_u64(uint64x2_t a, uint64x2_t b) {
690bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_u64(a, b);
691bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
692bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
6934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vtrn1_f32(<2 x float> %a, <2 x float> %b) #0 {
6944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 0, i32 2>
6954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SHUFFLE_I]]
696bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2_t test_vtrn1_f32(float32x2_t a, float32x2_t b) {
697bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_f32(a, b);
698bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
699bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vtrn1q_f32(<4 x float> %a, <4 x float> %b) #0 {
7014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I]]
703bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4_t test_vtrn1q_f32(float32x4_t a, float32x4_t b) {
704bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_f32(a, b);
705bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
706bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vtrn1q_f64(<2 x double> %a, <2 x double> %b) #0 {
7084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2>
7094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SHUFFLE_I]]
710bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat64x2_t test_vtrn1q_f64(float64x2_t a, float64x2_t b) {
711bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_f64(a, b);
712bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
713bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtrn1_p8(<8 x i8> %a, <8 x i8> %b) #0 {
7154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
7164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
717bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8_t test_vtrn1_p8(poly8x8_t a, poly8x8_t b) {
718bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_p8(a, b);
719bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
720bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtrn1q_p8(<16 x i8> %a, <16 x i8> %b) #0 {
7224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
7234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
724bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16_t test_vtrn1q_p8(poly8x16_t a, poly8x16_t b) {
725bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_p8(a, b);
726bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
727bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtrn1_p16(<4 x i16> %a, <4 x i16> %b) #0 {
7294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
731bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4_t test_vtrn1_p16(poly16x4_t a, poly16x4_t b) {
732bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1_p16(a, b);
733bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
734bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtrn1q_p16(<8 x i16> %a, <8 x i16> %b) #0 {
7364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
7374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
738bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8_t test_vtrn1q_p16(poly16x8_t a, poly16x8_t b) {
739bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn1q_p16(a, b);
740bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
741bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtrn2_s8(<8 x i8> %a, <8 x i8> %b) #0 {
7434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
7444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
745bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8_t test_vtrn2_s8(int8x8_t a, int8x8_t b) {
746bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_s8(a, b);
747bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
748bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtrn2q_s8(<16 x i8> %a, <16 x i8> %b) #0 {
7504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
7514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
752bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16_t test_vtrn2q_s8(int8x16_t a, int8x16_t b) {
753bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_s8(a, b);
754bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
755bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtrn2_s16(<4 x i16> %a, <4 x i16> %b) #0 {
7574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
759bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4_t test_vtrn2_s16(int16x4_t a, int16x4_t b) {
760bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_s16(a, b);
761bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
762bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtrn2q_s16(<8 x i16> %a, <8 x i16> %b) #0 {
7644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
7654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
766bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8_t test_vtrn2q_s16(int16x8_t a, int16x8_t b) {
767bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_s16(a, b);
768bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
769bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vtrn2_s32(<2 x i32> %a, <2 x i32> %b) #0 {
7714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
7724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
773bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2_t test_vtrn2_s32(int32x2_t a, int32x2_t b) {
774bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_s32(a, b);
775bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
776bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vtrn2q_s32(<4 x i32> %a, <4 x i32> %b) #0 {
7784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
780bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4_t test_vtrn2q_s32(int32x4_t a, int32x4_t b) {
781bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_s32(a, b);
782bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
783bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vtrn2q_s64(<2 x i64> %a, <2 x i64> %b) #0 {
7854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
7864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
787bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint64x2_t test_vtrn2q_s64(int64x2_t a, int64x2_t b) {
788bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_s64(a, b);
789bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
790bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtrn2_u8(<8 x i8> %a, <8 x i8> %b) #0 {
7924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
7934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
794bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8_t test_vtrn2_u8(uint8x8_t a, uint8x8_t b) {
795bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_u8(a, b);
796bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
797bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
7984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtrn2q_u8(<16 x i8> %a, <16 x i8> %b) #0 {
7994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
8004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
801bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16_t test_vtrn2q_u8(uint8x16_t a, uint8x16_t b) {
802bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_u8(a, b);
803bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
804bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtrn2_u16(<4 x i16> %a, <4 x i16> %b) #0 {
8064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
8074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
808bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4_t test_vtrn2_u16(uint16x4_t a, uint16x4_t b) {
809bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_u16(a, b);
810bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
811bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtrn2q_u16(<8 x i16> %a, <8 x i16> %b) #0 {
8134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
8144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
815bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8_t test_vtrn2q_u16(uint16x8_t a, uint16x8_t b) {
816bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_u16(a, b);
817bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
818bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vtrn2_u32(<2 x i32> %a, <2 x i32> %b) #0 {
8204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 1, i32 3>
8214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
822bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2_t test_vtrn2_u32(uint32x2_t a, uint32x2_t b) {
823bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_u32(a, b);
824bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
825bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vtrn2q_u32(<4 x i32> %a, <4 x i32> %b) #0 {
8274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
8284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
829bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4_t test_vtrn2q_u32(uint32x4_t a, uint32x4_t b) {
830bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_u32(a, b);
831bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
832bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vtrn2q_u64(<2 x i64> %a, <2 x i64> %b) #0 {
8344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3>
8354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SHUFFLE_I]]
836bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint64x2_t test_vtrn2q_u64(uint64x2_t a, uint64x2_t b) {
837bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_u64(a, b);
838bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
839bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vtrn2_f32(<2 x float> %a, <2 x float> %b) #0 {
8414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x float> %a, <2 x float> %b, <2 x i32> <i32 1, i32 3>
8424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SHUFFLE_I]]
843bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2_t test_vtrn2_f32(float32x2_t a, float32x2_t b) {
844bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_f32(a, b);
845bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
846bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vtrn2q_f32(<4 x float> %a, <4 x float> %b) #0 {
8484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
8494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I]]
850bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4_t test_vtrn2q_f32(float32x4_t a, float32x4_t b) {
851bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_f32(a, b);
852bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
853bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vtrn2q_f64(<2 x double> %a, <2 x double> %b) #0 {
8554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3>
8564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SHUFFLE_I]]
857bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat64x2_t test_vtrn2q_f64(float64x2_t a, float64x2_t b) {
858bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_f64(a, b);
859bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
860bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtrn2_p8(<8 x i8> %a, <8 x i8> %b) #0 {
8624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
8634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
864bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8_t test_vtrn2_p8(poly8x8_t a, poly8x8_t b) {
865bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_p8(a, b);
866bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
867bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtrn2q_p8(<16 x i8> %a, <16 x i8> %b) #0 {
8694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
8704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
871bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16_t test_vtrn2q_p8(poly8x16_t a, poly8x16_t b) {
872bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_p8(a, b);
873bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
874bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtrn2_p16(<4 x i16> %a, <4 x i16> %b) #0 {
8764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %b, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
8774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
878bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4_t test_vtrn2_p16(poly16x4_t a, poly16x4_t b) {
879bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2_p16(a, b);
880bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
881bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtrn2q_p16(<8 x i16> %a, <8 x i16> %b) #0 {
8834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
8844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
885bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8_t test_vtrn2q_p16(poly16x8_t a, poly16x8_t b) {
886bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn2q_p16(a, b);
887bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
888bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
8894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x2_t @test_vuzp_s8(<8 x i8> %a, <8 x i8> %b) #0 {
8904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int8x8x2_t, align 8
8914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int8x8x2_t, align 8
8924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x2_t, align 8
8934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__RET_I]] to i8*
8944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
8954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
8964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VUZP_I]], <8 x i8>* [[TMP1]]
8974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
8984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
8994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VUZP1_I]], <8 x i8>* [[TMP2]]
9004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x2_t* [[RETVAL_I]] to i8*
9014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x8x2_t* [[__RET_I]] to i8*
9024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
9034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL_I]], align 8
9044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], i32 0, i32 0
9054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.int8x8x2_t [[TMP5]], 0
9064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
9074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], align 8
9084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x2_t [[TMP8]]
909bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8x2_t test_vuzp_s8(int8x8_t a, int8x8_t b) {
910bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_s8(a, b);
911bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
912bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
9134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x2_t @test_vuzp_s16(<4 x i16> %a, <4 x i16> %b) #0 {
9144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int16x4x2_t, align 8
9154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int16x4x2_t, align 8
9164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x2_t, align 8
9174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__RET_I]] to i8*
9184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
9194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
9204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
9214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
9224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
9234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 2, i32 4, i32 6>
9244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VUZP_I]], <4 x i16>* [[TMP3]]
9254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
9264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 1, i32 3, i32 5, i32 7>
9274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VUZP1_I]], <4 x i16>* [[TMP6]]
9284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int16x4x2_t* [[RETVAL_I]] to i8*
9294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int16x4x2_t* [[__RET_I]] to i8*
9304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
9314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL_I]], align 8
9324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], i32 0, i32 0
9334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int16x4x2_t [[TMP9]], 0
9344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
9354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], align 8
9364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x2_t [[TMP12]]
937bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4x2_t test_vuzp_s16(int16x4_t a, int16x4_t b) {
938bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_s16(a, b);
939bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
9404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x2_t @test_vuzp_s32(<2 x i32> %a, <2 x i32> %b) #0 {
9414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int32x2x2_t, align 8
9424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int32x2x2_t, align 8
9434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x2_t, align 8
9444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__RET_I]] to i8*
9454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %a to <8 x i8>
9464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
9474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
9484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
9494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
9504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 0, i32 2>
9514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VUZP_I]], <2 x i32>* [[TMP3]]
9524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x i32>, <2 x i32>* [[TMP3]], i32 1
9534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 1, i32 3>
9544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VUZP1_I]], <2 x i32>* [[TMP6]]
9554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int32x2x2_t* [[RETVAL_I]] to i8*
9564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int32x2x2_t* [[__RET_I]] to i8*
9574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
9584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL_I]], align 8
9594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], i32 0, i32 0
9604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int32x2x2_t [[TMP9]], 0
9614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[TMP11]], [2 x <2 x i32>]* [[TMP10]], align 8
9624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], align 8
9634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x2_t [[TMP12]]
964bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2x2_t test_vuzp_s32(int32x2_t a, int32x2_t b) {
965bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_s32(a, b);
966bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
9674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x2_t @test_vuzp_u8(<8 x i8> %a, <8 x i8> %b) #0 {
9684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint8x8x2_t, align 8
9694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint8x8x2_t, align 8
9704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x2_t, align 8
9714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET_I]] to i8*
9724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
9734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
9744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VUZP_I]], <8 x i8>* [[TMP1]]
9754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
9764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
9774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VUZP1_I]], <8 x i8>* [[TMP2]]
9784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x2_t* [[RETVAL_I]] to i8*
9794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET_I]] to i8*
9804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
9814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL_I]], align 8
9824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], i32 0, i32 0
9834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.uint8x8x2_t [[TMP5]], 0
9844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
9854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], align 8
9864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x2_t [[TMP8]]
987bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8x2_t test_vuzp_u8(uint8x8_t a, uint8x8_t b) {
988bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_u8(a, b);
989bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
9904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x2_t @test_vuzp_u16(<4 x i16> %a, <4 x i16> %b) #0 {
9914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint16x4x2_t, align 8
9924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint16x4x2_t, align 8
9934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x2_t, align 8
9944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET_I]] to i8*
9954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
9964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
9974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
9984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
9994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
10004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 2, i32 4, i32 6>
10014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VUZP_I]], <4 x i16>* [[TMP3]]
10024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
10034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 1, i32 3, i32 5, i32 7>
10044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VUZP1_I]], <4 x i16>* [[TMP6]]
10054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint16x4x2_t* [[RETVAL_I]] to i8*
10064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET_I]] to i8*
10074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
10084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL_I]], align 8
10094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], i32 0, i32 0
10104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint16x4x2_t [[TMP9]], 0
10114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
10124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], align 8
10134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x2_t [[TMP12]]
1014bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4x2_t test_vuzp_u16(uint16x4_t a, uint16x4_t b) {
1015bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_u16(a, b);
1016bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
10174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x2_t @test_vuzp_u32(<2 x i32> %a, <2 x i32> %b) #0 {
10184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint32x2x2_t, align 8
10194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint32x2x2_t, align 8
10204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x2_t, align 8
10214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET_I]] to i8*
10224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %a to <8 x i8>
10234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
10244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
10254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
10264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
10274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 0, i32 2>
10284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VUZP_I]], <2 x i32>* [[TMP3]]
10294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x i32>, <2 x i32>* [[TMP3]], i32 1
10304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 1, i32 3>
10314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VUZP1_I]], <2 x i32>* [[TMP6]]
10324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint32x2x2_t* [[RETVAL_I]] to i8*
10334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET_I]] to i8*
10344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
10354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL_I]], align 8
10364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], i32 0, i32 0
10374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint32x2x2_t [[TMP9]], 0
10384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[TMP11]], [2 x <2 x i32>]* [[TMP10]], align 8
10394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], align 8
10404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x2_t [[TMP12]]
1041bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2x2_t test_vuzp_u32(uint32x2_t a, uint32x2_t b) {
1042bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_u32(a, b);
1043bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
10444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x2_t @test_vuzp_f32(<2 x float> %a, <2 x float> %b) #0 {
10454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.float32x2x2_t, align 8
10464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.float32x2x2_t, align 8
10474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x2_t, align 8
10484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__RET_I]] to i8*
10494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %a to <8 x i8>
10504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x float> %b to <8 x i8>
10514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x float>*
10524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
10534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x float>
10544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x i32> <i32 0, i32 2>
10554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x float> [[VUZP_I]], <2 x float>* [[TMP3]]
10564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x float>, <2 x float>* [[TMP3]], i32 1
10574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x i32> <i32 1, i32 3>
10584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x float> [[VUZP1_I]], <2 x float>* [[TMP6]]
10594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.float32x2x2_t* [[RETVAL_I]] to i8*
10604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.float32x2x2_t* [[__RET_I]] to i8*
10614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
10624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL_I]], align 8
10634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], i32 0, i32 0
10644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.float32x2x2_t [[TMP9]], 0
10654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x float>] [[TMP11]], [2 x <2 x float>]* [[TMP10]], align 8
10664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], align 8
10674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x2_t [[TMP12]]
1068bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2x2_t test_vuzp_f32(float32x2_t a, float32x2_t b) {
1069bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_f32(a, b);
1070bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
10714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x2_t @test_vuzp_p8(<8 x i8> %a, <8 x i8> %b) #0 {
10724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly8x8x2_t, align 8
10734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly8x8x2_t, align 8
10744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x2_t, align 8
10754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET_I]] to i8*
10764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
10774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
10784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VUZP_I]], <8 x i8>* [[TMP1]]
10794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
10804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
10814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VUZP1_I]], <8 x i8>* [[TMP2]]
10824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x2_t* [[RETVAL_I]] to i8*
10834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET_I]] to i8*
10844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
10854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL_I]], align 8
10864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], i32 0, i32 0
10874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.poly8x8x2_t [[TMP5]], 0
10884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
10894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], align 8
10904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x2_t [[TMP8]]
1091bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8x2_t test_vuzp_p8(poly8x8_t a, poly8x8_t b) {
1092bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_p8(a, b);
1093bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
10944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x2_t @test_vuzp_p16(<4 x i16> %a, <4 x i16> %b) #0 {
10954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly16x4x2_t, align 8
10964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly16x4x2_t, align 8
10974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x2_t, align 8
10984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET_I]] to i8*
10994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
11004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
11014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
11024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
11034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
11044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 2, i32 4, i32 6>
11054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VUZP_I]], <4 x i16>* [[TMP3]]
11064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
11074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 1, i32 3, i32 5, i32 7>
11084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VUZP1_I]], <4 x i16>* [[TMP6]]
11094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly16x4x2_t* [[RETVAL_I]] to i8*
11104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET_I]] to i8*
11114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
11124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL_I]], align 8
11134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], i32 0, i32 0
11144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.poly16x4x2_t [[TMP9]], 0
11154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
11164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], align 8
11174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x2_t [[TMP12]]
1118bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4x2_t test_vuzp_p16(poly16x4_t a, poly16x4_t b) {
1119bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzp_p16(a, b);
1120bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
11214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x2_t @test_vuzpq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
11224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int8x16x2_t, align 16
11234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int8x16x2_t, align 16
11244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x2_t, align 16
11254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__RET_I]] to i8*
11264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
11274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
11284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VUZP_I]], <16 x i8>* [[TMP1]]
11294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
11304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
11314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VUZP1_I]], <16 x i8>* [[TMP2]]
11324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x2_t* [[RETVAL_I]] to i8*
11334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x16x2_t* [[__RET_I]] to i8*
11344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
11354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL_I]], align 16
11364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], i32 0, i32 0
11374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.int8x16x2_t [[TMP5]], 0
11384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
11394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], align 16
11404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x2_t [[TMP8]]
1141bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16x2_t test_vuzpq_s8(int8x16_t a, int8x16_t b) {
1142bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_s8(a, b);
1143bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
11444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x2_t @test_vuzpq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
11454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int16x8x2_t, align 16
11464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int16x8x2_t, align 16
11474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x2_t, align 16
11484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__RET_I]] to i8*
11494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
11504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
11514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
11524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
11534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
11544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
11554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VUZP_I]], <8 x i16>* [[TMP3]]
11564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
11574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
11584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VUZP1_I]], <8 x i16>* [[TMP6]]
11594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int16x8x2_t* [[RETVAL_I]] to i8*
11604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int16x8x2_t* [[__RET_I]] to i8*
11614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
11624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL_I]], align 16
11634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], i32 0, i32 0
11644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int16x8x2_t [[TMP9]], 0
11654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
11664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], align 16
11674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x2_t [[TMP12]]
1168bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8x2_t test_vuzpq_s16(int16x8_t a, int16x8_t b) {
1169bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_s16(a, b);
1170bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
11714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x2_t @test_vuzpq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
11724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int32x4x2_t, align 16
11734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int32x4x2_t, align 16
11744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x2_t, align 16
11754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__RET_I]] to i8*
11764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %a to <16 x i8>
11774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %b to <16 x i8>
11784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
11794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
11804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
11814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 0, i32 2, i32 4, i32 6>
11824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VUZP_I]], <4 x i32>* [[TMP3]]
11834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i32>, <4 x i32>* [[TMP3]], i32 1
11844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 1, i32 3, i32 5, i32 7>
11854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VUZP1_I]], <4 x i32>* [[TMP6]]
11864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int32x4x2_t* [[RETVAL_I]] to i8*
11874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int32x4x2_t* [[__RET_I]] to i8*
11884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
11894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL_I]], align 16
11904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], i32 0, i32 0
11914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int32x4x2_t [[TMP9]], 0
11924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[TMP11]], [2 x <4 x i32>]* [[TMP10]], align 16
11934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], align 16
11944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x2_t [[TMP12]]
1195bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4x2_t test_vuzpq_s32(int32x4_t a, int32x4_t b) {
1196bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_s32(a, b);
1197bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
11984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x2_t @test_vuzpq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
11994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint8x16x2_t, align 16
12004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint8x16x2_t, align 16
12014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x2_t, align 16
12024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET_I]] to i8*
12034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
12044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
12054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VUZP_I]], <16 x i8>* [[TMP1]]
12064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
12074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
12084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VUZP1_I]], <16 x i8>* [[TMP2]]
12094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x2_t* [[RETVAL_I]] to i8*
12104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET_I]] to i8*
12114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
12124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL_I]], align 16
12134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], i32 0, i32 0
12144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.uint8x16x2_t [[TMP5]], 0
12154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
12164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], align 16
12174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x2_t [[TMP8]]
1218bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16x2_t test_vuzpq_u8(uint8x16_t a, uint8x16_t b) {
1219bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_u8(a, b);
1220bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
12214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x2_t @test_vuzpq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
12224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint16x8x2_t, align 16
12234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint16x8x2_t, align 16
12244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x2_t, align 16
12254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET_I]] to i8*
12264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
12274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
12284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
12294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
12304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
12314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
12324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VUZP_I]], <8 x i16>* [[TMP3]]
12334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
12344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
12354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VUZP1_I]], <8 x i16>* [[TMP6]]
12364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint16x8x2_t* [[RETVAL_I]] to i8*
12374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET_I]] to i8*
12384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
12394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL_I]], align 16
12404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], i32 0, i32 0
12414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint16x8x2_t [[TMP9]], 0
12424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
12434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], align 16
12444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x2_t [[TMP12]]
1245bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8x2_t test_vuzpq_u16(uint16x8_t a, uint16x8_t b) {
1246bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_u16(a, b);
1247bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
12484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x2_t @test_vuzpq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
12494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint32x4x2_t, align 16
12504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint32x4x2_t, align 16
12514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x2_t, align 16
12524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET_I]] to i8*
12534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %a to <16 x i8>
12544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %b to <16 x i8>
12554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
12564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
12574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
12584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 0, i32 2, i32 4, i32 6>
12594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VUZP_I]], <4 x i32>* [[TMP3]]
12604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i32>, <4 x i32>* [[TMP3]], i32 1
12614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 1, i32 3, i32 5, i32 7>
12624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VUZP1_I]], <4 x i32>* [[TMP6]]
12634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint32x4x2_t* [[RETVAL_I]] to i8*
12644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET_I]] to i8*
12654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
12664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL_I]], align 16
12674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], i32 0, i32 0
12684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint32x4x2_t [[TMP9]], 0
12694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[TMP11]], [2 x <4 x i32>]* [[TMP10]], align 16
12704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], align 16
12714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x2_t [[TMP12]]
1272bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4x2_t test_vuzpq_u32(uint32x4_t a, uint32x4_t b) {
1273bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_u32(a, b);
1274bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
12754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x2_t @test_vuzpq_f32(<4 x float> %a, <4 x float> %b) #0 {
12764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.float32x4x2_t, align 16
12774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.float32x4x2_t, align 16
12784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x2_t, align 16
12794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__RET_I]] to i8*
12804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %a to <16 x i8>
12814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x float> %b to <16 x i8>
12824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x float>*
12834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
12844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x float>
12854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x i32> <i32 0, i32 2, i32 4, i32 6>
12864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x float> [[VUZP_I]], <4 x float>* [[TMP3]]
12874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x float>, <4 x float>* [[TMP3]], i32 1
12884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x i32> <i32 1, i32 3, i32 5, i32 7>
12894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x float> [[VUZP1_I]], <4 x float>* [[TMP6]]
12904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.float32x4x2_t* [[RETVAL_I]] to i8*
12914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.float32x4x2_t* [[__RET_I]] to i8*
12924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
12934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL_I]], align 16
12944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], i32 0, i32 0
12954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.float32x4x2_t [[TMP9]], 0
12964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x float>] [[TMP11]], [2 x <4 x float>]* [[TMP10]], align 16
12974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], align 16
12984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x2_t [[TMP12]]
1299bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4x2_t test_vuzpq_f32(float32x4_t a, float32x4_t b) {
1300bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_f32(a, b);
1301bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
13024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x2_t @test_vuzpq_p8(<16 x i8> %a, <16 x i8> %b) #0 {
13034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly8x16x2_t, align 16
13044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly8x16x2_t, align 16
13054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x2_t, align 16
13064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET_I]] to i8*
13074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
13084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
13094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VUZP_I]], <16 x i8>* [[TMP1]]
13104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
13114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
13124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VUZP1_I]], <16 x i8>* [[TMP2]]
13134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x2_t* [[RETVAL_I]] to i8*
13144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET_I]] to i8*
13154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
13164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL_I]], align 16
13174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], i32 0, i32 0
13184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.poly8x16x2_t [[TMP5]], 0
13194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
13204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], align 16
13214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x2_t [[TMP8]]
1322bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16x2_t test_vuzpq_p8(poly8x16_t a, poly8x16_t b) {
1323bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_p8(a, b);
1324bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
13254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x2_t @test_vuzpq_p16(<8 x i16> %a, <8 x i16> %b) #0 {
13264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly16x8x2_t, align 16
13274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly16x8x2_t, align 16
13284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x2_t, align 16
13294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET_I]] to i8*
13304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
13314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
13324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
13334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
13344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
13354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
13364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VUZP_I]], <8 x i16>* [[TMP3]]
13374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
13384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUZP1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
13394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VUZP1_I]], <8 x i16>* [[TMP6]]
13404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly16x8x2_t* [[RETVAL_I]] to i8*
13414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET_I]] to i8*
13424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
13434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL_I]], align 16
13444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], i32 0, i32 0
13454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.poly16x8x2_t [[TMP9]], 0
13464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
13474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], align 16
13484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x2_t [[TMP12]]
1349bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8x2_t test_vuzpq_p16(poly16x8_t a, poly16x8_t b) {
1350bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vuzpq_p16(a, b);
1351bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
1352bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
13534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x2_t @test_vzip_s8(<8 x i8> %a, <8 x i8> %b) #0 {
13544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int8x8x2_t, align 8
13554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int8x8x2_t, align 8
13564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x2_t, align 8
13574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__RET_I]] to i8*
13584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
13594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
13604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VZIP_I]], <8 x i8>* [[TMP1]]
13614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
13624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
13634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VZIP1_I]], <8 x i8>* [[TMP2]]
13644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x2_t* [[RETVAL_I]] to i8*
13654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x8x2_t* [[__RET_I]] to i8*
13664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
13674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL_I]], align 8
13684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], i32 0, i32 0
13694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.int8x8x2_t [[TMP5]], 0
13704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
13714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], align 8
13724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x2_t [[TMP8]]
1373bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8x2_t test_vzip_s8(int8x8_t a, int8x8_t b) {
1374bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_s8(a, b);
1375bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
1376bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
13774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x2_t @test_vzip_s16(<4 x i16> %a, <4 x i16> %b) #0 {
13784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int16x4x2_t, align 8
13794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int16x4x2_t, align 8
13804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x2_t, align 8
13814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__RET_I]] to i8*
13824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
13834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
13844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
13854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
13864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
13874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 1, i32 5>
13884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VZIP_I]], <4 x i16>* [[TMP3]]
13894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
13904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 2, i32 6, i32 3, i32 7>
13914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VZIP1_I]], <4 x i16>* [[TMP6]]
13924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int16x4x2_t* [[RETVAL_I]] to i8*
13934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int16x4x2_t* [[__RET_I]] to i8*
13944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
13954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL_I]], align 8
13964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], i32 0, i32 0
13974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int16x4x2_t [[TMP9]], 0
13984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
13994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], align 8
14004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x2_t [[TMP12]]
1401bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4x2_t test_vzip_s16(int16x4_t a, int16x4_t b) {
1402bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_s16(a, b);
1403bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
14044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x2_t @test_vzip_s32(<2 x i32> %a, <2 x i32> %b) #0 {
14054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int32x2x2_t, align 8
14064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int32x2x2_t, align 8
14074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x2_t, align 8
14084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__RET_I]] to i8*
14094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %a to <8 x i8>
14104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
14114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
14124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
14134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
14144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 0, i32 2>
14154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VZIP_I]], <2 x i32>* [[TMP3]]
14164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x i32>, <2 x i32>* [[TMP3]], i32 1
14174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 1, i32 3>
14184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VZIP1_I]], <2 x i32>* [[TMP6]]
14194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int32x2x2_t* [[RETVAL_I]] to i8*
14204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int32x2x2_t* [[__RET_I]] to i8*
14214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
14224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL_I]], align 8
14234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], i32 0, i32 0
14244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int32x2x2_t [[TMP9]], 0
14254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[TMP11]], [2 x <2 x i32>]* [[TMP10]], align 8
14264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], align 8
14274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x2_t [[TMP12]]
1428bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2x2_t test_vzip_s32(int32x2_t a, int32x2_t b) {
1429bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_s32(a, b);
1430bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
14314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x2_t @test_vzip_u8(<8 x i8> %a, <8 x i8> %b) #0 {
14324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint8x8x2_t, align 8
14334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint8x8x2_t, align 8
14344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x2_t, align 8
14354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET_I]] to i8*
14364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
14374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
14384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VZIP_I]], <8 x i8>* [[TMP1]]
14394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
14404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
14414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VZIP1_I]], <8 x i8>* [[TMP2]]
14424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x2_t* [[RETVAL_I]] to i8*
14434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET_I]] to i8*
14444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
14454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL_I]], align 8
14464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], i32 0, i32 0
14474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.uint8x8x2_t [[TMP5]], 0
14484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
14494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], align 8
14504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x2_t [[TMP8]]
1451bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8x2_t test_vzip_u8(uint8x8_t a, uint8x8_t b) {
1452bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_u8(a, b);
1453bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
14544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x2_t @test_vzip_u16(<4 x i16> %a, <4 x i16> %b) #0 {
14554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint16x4x2_t, align 8
14564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint16x4x2_t, align 8
14574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x2_t, align 8
14584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET_I]] to i8*
14594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
14604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
14614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
14624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
14634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
14644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 1, i32 5>
14654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VZIP_I]], <4 x i16>* [[TMP3]]
14664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
14674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 2, i32 6, i32 3, i32 7>
14684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VZIP1_I]], <4 x i16>* [[TMP6]]
14694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint16x4x2_t* [[RETVAL_I]] to i8*
14704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET_I]] to i8*
14714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
14724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL_I]], align 8
14734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], i32 0, i32 0
14744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint16x4x2_t [[TMP9]], 0
14754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
14764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], align 8
14774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x2_t [[TMP12]]
1478bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4x2_t test_vzip_u16(uint16x4_t a, uint16x4_t b) {
1479bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_u16(a, b);
1480bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
14814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x2_t @test_vzip_u32(<2 x i32> %a, <2 x i32> %b) #0 {
14824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint32x2x2_t, align 8
14834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint32x2x2_t, align 8
14844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x2_t, align 8
14854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET_I]] to i8*
14864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %a to <8 x i8>
14874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
14884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
14894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
14904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
14914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 0, i32 2>
14924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VZIP_I]], <2 x i32>* [[TMP3]]
14934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x i32>, <2 x i32>* [[TMP3]], i32 1
14944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 1, i32 3>
14954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VZIP1_I]], <2 x i32>* [[TMP6]]
14964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint32x2x2_t* [[RETVAL_I]] to i8*
14974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET_I]] to i8*
14984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
14994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL_I]], align 8
15004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], i32 0, i32 0
15014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint32x2x2_t [[TMP9]], 0
15024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[TMP11]], [2 x <2 x i32>]* [[TMP10]], align 8
15034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], align 8
15044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x2_t [[TMP12]]
1505bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2x2_t test_vzip_u32(uint32x2_t a, uint32x2_t b) {
1506bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_u32(a, b);
1507bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
15084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x2_t @test_vzip_f32(<2 x float> %a, <2 x float> %b) #0 {
15094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.float32x2x2_t, align 8
15104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.float32x2x2_t, align 8
15114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x2_t, align 8
15124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__RET_I]] to i8*
15134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %a to <8 x i8>
15144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x float> %b to <8 x i8>
15154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x float>*
15164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
15174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x float>
15184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x i32> <i32 0, i32 2>
15194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x float> [[VZIP_I]], <2 x float>* [[TMP3]]
15204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x float>, <2 x float>* [[TMP3]], i32 1
15214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x i32> <i32 1, i32 3>
15224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x float> [[VZIP1_I]], <2 x float>* [[TMP6]]
15234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.float32x2x2_t* [[RETVAL_I]] to i8*
15244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.float32x2x2_t* [[__RET_I]] to i8*
15254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
15264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL_I]], align 8
15274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], i32 0, i32 0
15284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.float32x2x2_t [[TMP9]], 0
15294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x float>] [[TMP11]], [2 x <2 x float>]* [[TMP10]], align 8
15304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], align 8
15314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x2_t [[TMP12]]
1532bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2x2_t test_vzip_f32(float32x2_t a, float32x2_t b) {
1533bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_f32(a, b);
1534bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
15354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x2_t @test_vzip_p8(<8 x i8> %a, <8 x i8> %b) #0 {
15364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly8x8x2_t, align 8
15374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly8x8x2_t, align 8
15384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x2_t, align 8
15394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET_I]] to i8*
15404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
15414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
15424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VZIP_I]], <8 x i8>* [[TMP1]]
15434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
15444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
15454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VZIP1_I]], <8 x i8>* [[TMP2]]
15464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x2_t* [[RETVAL_I]] to i8*
15474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET_I]] to i8*
15484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
15494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL_I]], align 8
15504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], i32 0, i32 0
15514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.poly8x8x2_t [[TMP5]], 0
15524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
15534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], align 8
15544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x2_t [[TMP8]]
1555bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8x2_t test_vzip_p8(poly8x8_t a, poly8x8_t b) {
1556bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_p8(a, b);
1557bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
15584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x2_t @test_vzip_p16(<4 x i16> %a, <4 x i16> %b) #0 {
15594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly16x4x2_t, align 8
15604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly16x4x2_t, align 8
15614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x2_t, align 8
15624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET_I]] to i8*
15634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
15644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
15654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
15664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
15674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
15684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 1, i32 5>
15694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VZIP_I]], <4 x i16>* [[TMP3]]
15704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
15714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 2, i32 6, i32 3, i32 7>
15724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VZIP1_I]], <4 x i16>* [[TMP6]]
15734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly16x4x2_t* [[RETVAL_I]] to i8*
15744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET_I]] to i8*
15754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
15764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL_I]], align 8
15774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], i32 0, i32 0
15784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.poly16x4x2_t [[TMP9]], 0
15794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
15804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], align 8
15814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x2_t [[TMP12]]
1582bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4x2_t test_vzip_p16(poly16x4_t a, poly16x4_t b) {
1583bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzip_p16(a, b);
1584bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
15854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x2_t @test_vzipq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
15864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int8x16x2_t, align 16
15874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int8x16x2_t, align 16
15884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x2_t, align 16
15894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__RET_I]] to i8*
15904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
15914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
15924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VZIP_I]], <16 x i8>* [[TMP1]]
15934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
15944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
15954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VZIP1_I]], <16 x i8>* [[TMP2]]
15964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x2_t* [[RETVAL_I]] to i8*
15974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x16x2_t* [[__RET_I]] to i8*
15984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
15994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL_I]], align 16
16004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], i32 0, i32 0
16014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.int8x16x2_t [[TMP5]], 0
16024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
16034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], align 16
16044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x2_t [[TMP8]]
1605bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16x2_t test_vzipq_s8(int8x16_t a, int8x16_t b) {
1606bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_s8(a, b);
1607bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
16084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x2_t @test_vzipq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
16094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int16x8x2_t, align 16
16104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int16x8x2_t, align 16
16114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x2_t, align 16
16124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__RET_I]] to i8*
16134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
16144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
16154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
16164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
16174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
16184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
16194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VZIP_I]], <8 x i16>* [[TMP3]]
16204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
16214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
16224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VZIP1_I]], <8 x i16>* [[TMP6]]
16234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int16x8x2_t* [[RETVAL_I]] to i8*
16244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int16x8x2_t* [[__RET_I]] to i8*
16254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
16264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL_I]], align 16
16274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], i32 0, i32 0
16284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int16x8x2_t [[TMP9]], 0
16294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
16304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], align 16
16314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x2_t [[TMP12]]
1632bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8x2_t test_vzipq_s16(int16x8_t a, int16x8_t b) {
1633bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_s16(a, b);
1634bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
16354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x2_t @test_vzipq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
16364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int32x4x2_t, align 16
16374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int32x4x2_t, align 16
16384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x2_t, align 16
16394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__RET_I]] to i8*
16404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %a to <16 x i8>
16414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %b to <16 x i8>
16424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
16434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
16444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
16454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 1, i32 5>
16464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VZIP_I]], <4 x i32>* [[TMP3]]
16474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i32>, <4 x i32>* [[TMP3]], i32 1
16484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 2, i32 6, i32 3, i32 7>
16494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VZIP1_I]], <4 x i32>* [[TMP6]]
16504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int32x4x2_t* [[RETVAL_I]] to i8*
16514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int32x4x2_t* [[__RET_I]] to i8*
16524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
16534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL_I]], align 16
16544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], i32 0, i32 0
16554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int32x4x2_t [[TMP9]], 0
16564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[TMP11]], [2 x <4 x i32>]* [[TMP10]], align 16
16574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], align 16
16584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x2_t [[TMP12]]
1659bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4x2_t test_vzipq_s32(int32x4_t a, int32x4_t b) {
1660bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_s32(a, b);
1661bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
16624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x2_t @test_vzipq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
16634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint8x16x2_t, align 16
16644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint8x16x2_t, align 16
16654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x2_t, align 16
16664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET_I]] to i8*
16674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
16684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
16694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VZIP_I]], <16 x i8>* [[TMP1]]
16704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
16714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
16724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VZIP1_I]], <16 x i8>* [[TMP2]]
16734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x2_t* [[RETVAL_I]] to i8*
16744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET_I]] to i8*
16754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
16764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL_I]], align 16
16774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], i32 0, i32 0
16784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.uint8x16x2_t [[TMP5]], 0
16794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
16804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], align 16
16814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x2_t [[TMP8]]
1682bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16x2_t test_vzipq_u8(uint8x16_t a, uint8x16_t b) {
1683bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_u8(a, b);
1684bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
16854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x2_t @test_vzipq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
16864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint16x8x2_t, align 16
16874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint16x8x2_t, align 16
16884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x2_t, align 16
16894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET_I]] to i8*
16904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
16914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
16924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
16934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
16944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
16954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
16964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VZIP_I]], <8 x i16>* [[TMP3]]
16974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
16984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
16994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VZIP1_I]], <8 x i16>* [[TMP6]]
17004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint16x8x2_t* [[RETVAL_I]] to i8*
17014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET_I]] to i8*
17024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
17034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL_I]], align 16
17044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], i32 0, i32 0
17054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint16x8x2_t [[TMP9]], 0
17064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
17074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], align 16
17084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x2_t [[TMP12]]
1709bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8x2_t test_vzipq_u16(uint16x8_t a, uint16x8_t b) {
1710bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_u16(a, b);
1711bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
17124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x2_t @test_vzipq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
17134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint32x4x2_t, align 16
17144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint32x4x2_t, align 16
17154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x2_t, align 16
17164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET_I]] to i8*
17174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %a to <16 x i8>
17184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %b to <16 x i8>
17194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
17204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
17214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
17224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 1, i32 5>
17234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VZIP_I]], <4 x i32>* [[TMP3]]
17244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i32>, <4 x i32>* [[TMP3]], i32 1
17254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 2, i32 6, i32 3, i32 7>
17264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VZIP1_I]], <4 x i32>* [[TMP6]]
17274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint32x4x2_t* [[RETVAL_I]] to i8*
17284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET_I]] to i8*
17294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
17304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL_I]], align 16
17314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], i32 0, i32 0
17324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint32x4x2_t [[TMP9]], 0
17334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[TMP11]], [2 x <4 x i32>]* [[TMP10]], align 16
17344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], align 16
17354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x2_t [[TMP12]]
1736bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4x2_t test_vzipq_u32(uint32x4_t a, uint32x4_t b) {
1737bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_u32(a, b);
1738bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
17394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x2_t @test_vzipq_f32(<4 x float> %a, <4 x float> %b) #0 {
17404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.float32x4x2_t, align 16
17414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.float32x4x2_t, align 16
17424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x2_t, align 16
17434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__RET_I]] to i8*
17444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %a to <16 x i8>
17454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x float> %b to <16 x i8>
17464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x float>*
17474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
17484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x float>
17494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 1, i32 5>
17504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x float> [[VZIP_I]], <4 x float>* [[TMP3]]
17514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x float>, <4 x float>* [[TMP3]], i32 1
17524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x i32> <i32 2, i32 6, i32 3, i32 7>
17534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x float> [[VZIP1_I]], <4 x float>* [[TMP6]]
17544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.float32x4x2_t* [[RETVAL_I]] to i8*
17554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.float32x4x2_t* [[__RET_I]] to i8*
17564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
17574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL_I]], align 16
17584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], i32 0, i32 0
17594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.float32x4x2_t [[TMP9]], 0
17604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x float>] [[TMP11]], [2 x <4 x float>]* [[TMP10]], align 16
17614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], align 16
17624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x2_t [[TMP12]]
1763bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4x2_t test_vzipq_f32(float32x4_t a, float32x4_t b) {
1764bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_f32(a, b);
1765bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
17664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x2_t @test_vzipq_p8(<16 x i8> %a, <16 x i8> %b) #0 {
17674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly8x16x2_t, align 16
17684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly8x16x2_t, align 16
17694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x2_t, align 16
17704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET_I]] to i8*
17714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
17724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
17734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VZIP_I]], <16 x i8>* [[TMP1]]
17744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
17754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
17764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VZIP1_I]], <16 x i8>* [[TMP2]]
17774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x2_t* [[RETVAL_I]] to i8*
17784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET_I]] to i8*
17794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
17804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL_I]], align 16
17814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], i32 0, i32 0
17824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.poly8x16x2_t [[TMP5]], 0
17834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
17844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], align 16
17854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x2_t [[TMP8]]
1786bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16x2_t test_vzipq_p8(poly8x16_t a, poly8x16_t b) {
1787bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_p8(a, b);
1788bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
17894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x2_t @test_vzipq_p16(<8 x i16> %a, <8 x i16> %b) #0 {
17904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly16x8x2_t, align 16
17914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly16x8x2_t, align 16
17924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x2_t, align 16
17934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET_I]] to i8*
17944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
17954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
17964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
17974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
17984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
17994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
18004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VZIP_I]], <8 x i16>* [[TMP3]]
18014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
18024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VZIP1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
18034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VZIP1_I]], <8 x i16>* [[TMP6]]
18044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly16x8x2_t* [[RETVAL_I]] to i8*
18054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET_I]] to i8*
18064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
18074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL_I]], align 16
18084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], i32 0, i32 0
18094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.poly16x8x2_t [[TMP9]], 0
18104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
18114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], align 16
18124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x2_t [[TMP12]]
1813bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8x2_t test_vzipq_p16(poly16x8_t a, poly16x8_t b) {
1814bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vzipq_p16(a, b);
1815bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
1816bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
18174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x2_t @test_vtrn_s8(<8 x i8> %a, <8 x i8> %b) #0 {
18184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int8x8x2_t, align 8
18194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int8x8x2_t, align 8
18204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x2_t, align 8
18214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__RET_I]] to i8*
18224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
18234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
18244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VTRN_I]], <8 x i8>* [[TMP1]]
18254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
18264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
18274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VTRN1_I]], <8 x i8>* [[TMP2]]
18284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x2_t* [[RETVAL_I]] to i8*
18294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x8x2_t* [[__RET_I]] to i8*
18304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
18314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL_I]], align 8
18324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], i32 0, i32 0
18334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.int8x8x2_t [[TMP5]], 0
18344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
18354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], align 8
18364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x2_t [[TMP8]]
1837bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x8x2_t test_vtrn_s8(int8x8_t a, int8x8_t b) {
1838bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_s8(a, b);
1839bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
1840bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu
18414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x2_t @test_vtrn_s16(<4 x i16> %a, <4 x i16> %b) #0 {
18424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int16x4x2_t, align 8
18434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int16x4x2_t, align 8
18444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x2_t, align 8
18454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__RET_I]] to i8*
18464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
18474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
18484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
18494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
18504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
18514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 2, i32 6>
18524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VTRN_I]], <4 x i16>* [[TMP3]]
18534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
18544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 1, i32 5, i32 3, i32 7>
18554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VTRN1_I]], <4 x i16>* [[TMP6]]
18564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int16x4x2_t* [[RETVAL_I]] to i8*
18574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int16x4x2_t* [[__RET_I]] to i8*
18584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
18594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL_I]], align 8
18604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], i32 0, i32 0
18614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int16x4x2_t [[TMP9]], 0
18624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
18634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], align 8
18644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x2_t [[TMP12]]
1865bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x4x2_t test_vtrn_s16(int16x4_t a, int16x4_t b) {
1866bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_s16(a, b);
1867bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
18684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x2_t @test_vtrn_s32(<2 x i32> %a, <2 x i32> %b) #0 {
18694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int32x2x2_t, align 8
18704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int32x2x2_t, align 8
18714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x2_t, align 8
18724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__RET_I]] to i8*
18734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %a to <8 x i8>
18744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
18754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
18764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
18774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
18784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 0, i32 2>
18794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VTRN_I]], <2 x i32>* [[TMP3]]
18804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x i32>, <2 x i32>* [[TMP3]], i32 1
18814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 1, i32 3>
18824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VTRN1_I]], <2 x i32>* [[TMP6]]
18834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int32x2x2_t* [[RETVAL_I]] to i8*
18844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int32x2x2_t* [[__RET_I]] to i8*
18854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
18864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL_I]], align 8
18874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], i32 0, i32 0
18884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int32x2x2_t [[TMP9]], 0
18894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[TMP11]], [2 x <2 x i32>]* [[TMP10]], align 8
18904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], align 8
18914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x2_t [[TMP12]]
1892bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x2x2_t test_vtrn_s32(int32x2_t a, int32x2_t b) {
1893bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_s32(a, b);
1894bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
18954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x2_t @test_vtrn_u8(<8 x i8> %a, <8 x i8> %b) #0 {
18964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint8x8x2_t, align 8
18974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint8x8x2_t, align 8
18984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x2_t, align 8
18994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET_I]] to i8*
19004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
19014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
19024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VTRN_I]], <8 x i8>* [[TMP1]]
19034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
19044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
19054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VTRN1_I]], <8 x i8>* [[TMP2]]
19064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x2_t* [[RETVAL_I]] to i8*
19074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET_I]] to i8*
19084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
19094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL_I]], align 8
19104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], i32 0, i32 0
19114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.uint8x8x2_t [[TMP5]], 0
19124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
19134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], align 8
19144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x2_t [[TMP8]]
1915bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x8x2_t test_vtrn_u8(uint8x8_t a, uint8x8_t b) {
1916bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_u8(a, b);
1917bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
19184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x2_t @test_vtrn_u16(<4 x i16> %a, <4 x i16> %b) #0 {
19194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint16x4x2_t, align 8
19204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint16x4x2_t, align 8
19214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x2_t, align 8
19224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET_I]] to i8*
19234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
19244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
19254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
19264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
19274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
19284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 2, i32 6>
19294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VTRN_I]], <4 x i16>* [[TMP3]]
19304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
19314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 1, i32 5, i32 3, i32 7>
19324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VTRN1_I]], <4 x i16>* [[TMP6]]
19334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint16x4x2_t* [[RETVAL_I]] to i8*
19344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET_I]] to i8*
19354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
19364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL_I]], align 8
19374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], i32 0, i32 0
19384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint16x4x2_t [[TMP9]], 0
19394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
19404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], align 8
19414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x2_t [[TMP12]]
1942bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x4x2_t test_vtrn_u16(uint16x4_t a, uint16x4_t b) {
1943bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_u16(a, b);
1944bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
19454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x2_t @test_vtrn_u32(<2 x i32> %a, <2 x i32> %b) #0 {
19464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint32x2x2_t, align 8
19474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint32x2x2_t, align 8
19484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x2_t, align 8
19494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET_I]] to i8*
19504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %a to <8 x i8>
19514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
19524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
19534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
19544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
19554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 0, i32 2>
19564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VTRN_I]], <2 x i32>* [[TMP3]]
19574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x i32>, <2 x i32>* [[TMP3]], i32 1
19584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <2 x i32> [[TMP4]], <2 x i32> [[TMP5]], <2 x i32> <i32 1, i32 3>
19594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[VTRN1_I]], <2 x i32>* [[TMP6]]
19604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint32x2x2_t* [[RETVAL_I]] to i8*
19614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET_I]] to i8*
19624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
19634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL_I]], align 8
19644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], i32 0, i32 0
19654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint32x2x2_t [[TMP9]], 0
19664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[TMP11]], [2 x <2 x i32>]* [[TMP10]], align 8
19674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], align 8
19684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x2_t [[TMP12]]
1969bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x2x2_t test_vtrn_u32(uint32x2_t a, uint32x2_t b) {
1970bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_u32(a, b);
1971bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
19724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x2_t @test_vtrn_f32(<2 x float> %a, <2 x float> %b) #0 {
19734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.float32x2x2_t, align 8
19744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.float32x2x2_t, align 8
19754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x2_t, align 8
19764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__RET_I]] to i8*
19774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %a to <8 x i8>
19784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x float> %b to <8 x i8>
19794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <2 x float>*
19804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
19814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x float>
19824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x i32> <i32 0, i32 2>
19834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x float> [[VTRN_I]], <2 x float>* [[TMP3]]
19844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <2 x float>, <2 x float>* [[TMP3]], i32 1
19854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x i32> <i32 1, i32 3>
19864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x float> [[VTRN1_I]], <2 x float>* [[TMP6]]
19874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.float32x2x2_t* [[RETVAL_I]] to i8*
19884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.float32x2x2_t* [[__RET_I]] to i8*
19894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
19904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL_I]], align 8
19914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], i32 0, i32 0
19924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.float32x2x2_t [[TMP9]], 0
19934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x float>] [[TMP11]], [2 x <2 x float>]* [[TMP10]], align 8
19944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], align 8
19954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x2_t [[TMP12]]
1996bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x2x2_t test_vtrn_f32(float32x2_t a, float32x2_t b) {
1997bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_f32(a, b);
1998bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
19994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x2_t @test_vtrn_p8(<8 x i8> %a, <8 x i8> %b) #0 {
20004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly8x8x2_t, align 8
20014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly8x8x2_t, align 8
20024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x2_t, align 8
20034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET_I]] to i8*
20044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i8>*
20054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
20064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VTRN_I]], <8 x i8>* [[TMP1]]
20074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <8 x i8>, <8 x i8>* [[TMP1]], i32 1
20084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
20094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> [[VTRN1_I]], <8 x i8>* [[TMP2]]
20104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x2_t* [[RETVAL_I]] to i8*
20114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET_I]] to i8*
20124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false) #2
20134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL_I]], align 8
20144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], i32 0, i32 0
20154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.poly8x8x2_t [[TMP5]], 0
20164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[TMP7]], [2 x <8 x i8>]* [[TMP6]], align 8
20174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], align 8
20184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x2_t [[TMP8]]
2019bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x8x2_t test_vtrn_p8(poly8x8_t a, poly8x8_t b) {
2020bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_p8(a, b);
2021bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
20224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x2_t @test_vtrn_p16(<4 x i16> %a, <4 x i16> %b) #0 {
20234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly16x4x2_t, align 8
20244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly16x4x2_t, align 8
20254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x2_t, align 8
20264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET_I]] to i8*
20274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %a to <8 x i8>
20284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
20294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
20304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
20314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
20324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 2, i32 6>
20334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VTRN_I]], <4 x i16>* [[TMP3]]
20344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i16>, <4 x i16>* [[TMP3]], i32 1
20354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <4 x i16> [[TMP4]], <4 x i16> [[TMP5]], <4 x i32> <i32 1, i32 5, i32 3, i32 7>
20364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[VTRN1_I]], <4 x i16>* [[TMP6]]
20374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly16x4x2_t* [[RETVAL_I]] to i8*
20384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET_I]] to i8*
20394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 16, i32 8, i1 false) #2
20404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL_I]], align 8
20414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], i32 0, i32 0
20424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.poly16x4x2_t [[TMP9]], 0
20434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[TMP11]], [2 x <4 x i16>]* [[TMP10]], align 8
20444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], align 8
20454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x2_t [[TMP12]]
2046bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x4x2_t test_vtrn_p16(poly16x4_t a, poly16x4_t b) {
2047bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrn_p16(a, b);
2048bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
20494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x2_t @test_vtrnq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
20504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int8x16x2_t, align 16
20514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int8x16x2_t, align 16
20524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x2_t, align 16
20534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__RET_I]] to i8*
20544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
20554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
20564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VTRN_I]], <16 x i8>* [[TMP1]]
20574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
20584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
20594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VTRN1_I]], <16 x i8>* [[TMP2]]
20604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x2_t* [[RETVAL_I]] to i8*
20614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x16x2_t* [[__RET_I]] to i8*
20624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
20634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL_I]], align 16
20644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], i32 0, i32 0
20654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.int8x16x2_t [[TMP5]], 0
20664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
20674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], align 16
20684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x2_t [[TMP8]]
2069bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint8x16x2_t test_vtrnq_s8(int8x16_t a, int8x16_t b) {
2070bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_s8(a, b);
2071bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
20724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x2_t @test_vtrnq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
20734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int16x8x2_t, align 16
20744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int16x8x2_t, align 16
20754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x2_t, align 16
20764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__RET_I]] to i8*
20774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
20784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
20794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
20804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
20814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
20824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
20834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VTRN_I]], <8 x i16>* [[TMP3]]
20844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
20854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
20864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VTRN1_I]], <8 x i16>* [[TMP6]]
20874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int16x8x2_t* [[RETVAL_I]] to i8*
20884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int16x8x2_t* [[__RET_I]] to i8*
20894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
20904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL_I]], align 16
20914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], i32 0, i32 0
20924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int16x8x2_t [[TMP9]], 0
20934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
20944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], align 16
20954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x2_t [[TMP12]]
2096bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint16x8x2_t test_vtrnq_s16(int16x8_t a, int16x8_t b) {
2097bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_s16(a, b);
2098bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
20994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x2_t @test_vtrnq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
21004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.int32x4x2_t, align 16
21014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.int32x4x2_t, align 16
21024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x2_t, align 16
21034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__RET_I]] to i8*
21044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %a to <16 x i8>
21054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %b to <16 x i8>
21064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
21074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
21084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
21094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 2, i32 6>
21104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VTRN_I]], <4 x i32>* [[TMP3]]
21114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i32>, <4 x i32>* [[TMP3]], i32 1
21124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 1, i32 5, i32 3, i32 7>
21134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VTRN1_I]], <4 x i32>* [[TMP6]]
21144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.int32x4x2_t* [[RETVAL_I]] to i8*
21154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.int32x4x2_t* [[__RET_I]] to i8*
21164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
21174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL_I]], align 16
21184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], i32 0, i32 0
21194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.int32x4x2_t [[TMP9]], 0
21204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[TMP11]], [2 x <4 x i32>]* [[TMP10]], align 16
21214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], align 16
21224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x2_t [[TMP12]]
2123bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuint32x4x2_t test_vtrnq_s32(int32x4_t a, int32x4_t b) {
2124bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_s32(a, b);
2125bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
21264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x2_t @test_vtrnq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
21274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint8x16x2_t, align 16
21284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint8x16x2_t, align 16
21294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x2_t, align 16
21304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET_I]] to i8*
21314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
21324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
21334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VTRN_I]], <16 x i8>* [[TMP1]]
21344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
21354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
21364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VTRN1_I]], <16 x i8>* [[TMP2]]
21374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x2_t* [[RETVAL_I]] to i8*
21384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET_I]] to i8*
21394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
21404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL_I]], align 16
21414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], i32 0, i32 0
21424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.uint8x16x2_t [[TMP5]], 0
21434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
21444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], align 16
21454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x2_t [[TMP8]]
2146bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint8x16x2_t test_vtrnq_u8(uint8x16_t a, uint8x16_t b) {
2147bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_u8(a, b);
2148bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
21494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x2_t @test_vtrnq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
21504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint16x8x2_t, align 16
21514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint16x8x2_t, align 16
21524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x2_t, align 16
21534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET_I]] to i8*
21544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
21554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
21564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
21574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
21584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
21594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
21604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VTRN_I]], <8 x i16>* [[TMP3]]
21614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
21624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
21634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VTRN1_I]], <8 x i16>* [[TMP6]]
21644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint16x8x2_t* [[RETVAL_I]] to i8*
21654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET_I]] to i8*
21664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
21674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL_I]], align 16
21684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], i32 0, i32 0
21694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint16x8x2_t [[TMP9]], 0
21704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
21714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], align 16
21724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x2_t [[TMP12]]
2173bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint16x8x2_t test_vtrnq_u16(uint16x8_t a, uint16x8_t b) {
2174bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_u16(a, b);
2175bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
21764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x2_t @test_vtrnq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
21774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.uint32x4x2_t, align 16
21784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.uint32x4x2_t, align 16
21794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x2_t, align 16
21804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET_I]] to i8*
21814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %a to <16 x i8>
21824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %b to <16 x i8>
21834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
21844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
21854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
21864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 2, i32 6>
21874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VTRN_I]], <4 x i32>* [[TMP3]]
21884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x i32>, <4 x i32>* [[TMP3]], i32 1
21894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <4 x i32> [[TMP4]], <4 x i32> [[TMP5]], <4 x i32> <i32 1, i32 5, i32 3, i32 7>
21904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[VTRN1_I]], <4 x i32>* [[TMP6]]
21914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint32x4x2_t* [[RETVAL_I]] to i8*
21924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET_I]] to i8*
21934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
21944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL_I]], align 16
21954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], i32 0, i32 0
21964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.uint32x4x2_t [[TMP9]], 0
21974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[TMP11]], [2 x <4 x i32>]* [[TMP10]], align 16
21984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], align 16
21994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x2_t [[TMP12]]
2200bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liuuint32x4x2_t test_vtrnq_u32(uint32x4_t a, uint32x4_t b) {
2201bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_u32(a, b);
2202bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
22034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x2_t @test_vtrnq_f32(<4 x float> %a, <4 x float> %b) #0 {
22044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.float32x4x2_t, align 16
22054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.float32x4x2_t, align 16
22064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x2_t, align 16
22074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__RET_I]] to i8*
22084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %a to <16 x i8>
22094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x float> %b to <16 x i8>
22104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <4 x float>*
22114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
22124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x float>
22134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x i32> <i32 0, i32 4, i32 2, i32 6>
22144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x float> [[VTRN_I]], <4 x float>* [[TMP3]]
22154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <4 x float>, <4 x float>* [[TMP3]], i32 1
22164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x i32> <i32 1, i32 5, i32 3, i32 7>
22174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x float> [[VTRN1_I]], <4 x float>* [[TMP6]]
22184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.float32x4x2_t* [[RETVAL_I]] to i8*
22194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.float32x4x2_t* [[__RET_I]] to i8*
22204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
22214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL_I]], align 16
22224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], i32 0, i32 0
22234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.float32x4x2_t [[TMP9]], 0
22244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x float>] [[TMP11]], [2 x <4 x float>]* [[TMP10]], align 16
22254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], align 16
22264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x2_t [[TMP12]]
2227bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liufloat32x4x2_t test_vtrnq_f32(float32x4_t a, float32x4_t b) {
2228bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_f32(a, b);
2229bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
22304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x2_t @test_vtrnq_p8(<16 x i8> %a, <16 x i8> %b) #0 {
22314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly8x16x2_t, align 16
22324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly8x16x2_t, align 16
22334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x2_t, align 16
22344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET_I]] to i8*
22354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <16 x i8>*
22364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
22374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VTRN_I]], <16 x i8>* [[TMP1]]
22384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = getelementptr inbounds <16 x i8>, <16 x i8>* [[TMP1]], i32 1
22394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[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>
22404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> [[VTRN1_I]], <16 x i8>* [[TMP2]]
22414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x2_t* [[RETVAL_I]] to i8*
22424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET_I]] to i8*
22434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false) #2
22444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL_I]], align 16
22454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], i32 0, i32 0
22464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = extractvalue %struct.poly8x16x2_t [[TMP5]], 0
22474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[TMP7]], [2 x <16 x i8>]* [[TMP6]], align 16
22484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], align 16
22494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x2_t [[TMP8]]
2250bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly8x16x2_t test_vtrnq_p8(poly8x16_t a, poly8x16_t b) {
2251bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_p8(a, b);
2252bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
22534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x2_t @test_vtrnq_p16(<8 x i16> %a, <8 x i16> %b) #0 {
22544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL_I:%.*]] = alloca %struct.poly16x8x2_t, align 16
22554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET_I:%.*]] = alloca %struct.poly16x8x2_t, align 16
22564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x2_t, align 16
22574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET_I]] to i8*
22584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %a to <16 x i8>
22594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %b to <16 x i8>
22604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
22614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
22624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
22634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
22644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VTRN_I]], <8 x i16>* [[TMP3]]
22654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = getelementptr inbounds <8 x i16>, <8 x i16>* [[TMP3]], i32 1
22664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTRN1_I:%.*]] = shufflevector <8 x i16> [[TMP4]], <8 x i16> [[TMP5]], <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
22674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[VTRN1_I]], <8 x i16>* [[TMP6]]
22684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly16x8x2_t* [[RETVAL_I]] to i8*
22694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET_I]] to i8*
22704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP7]], i8* [[TMP8]], i64 32, i32 16, i1 false) #2
22714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL_I]], align 16
22724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], i32 0, i32 0
22734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = extractvalue %struct.poly16x8x2_t [[TMP9]], 0
22744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[TMP11]], [2 x <8 x i16>]* [[TMP10]], align 16
22754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], align 16
22764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x2_t [[TMP12]]
2277bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liupoly16x8x2_t test_vtrnq_p16(poly16x8_t a, poly16x8_t b) {
2278bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu  return vtrnq_p16(a, b);
2279bf3bc5d37eff88b578d5990f507a87db33f30a6eJiangning Liu}
2280