16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN:     -fallow-half-arguments-and-returns -ffp-contract=fast -S -emit-llvm -o - %s \
34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: | opt -S -mem2reg \
44967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: | FileCheck %s
5b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover// Test new aarch64 intrinsics and types
7b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover#include <arm_neon.h>
9b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vadd_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i8> %v1, %v2
124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[ADD_I]]
13b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vadd_s8(int8x8_t v1, int8x8_t v2) {
14b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_s8(v1, v2);
15b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
16b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vadd_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i16> %v1, %v2
194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[ADD_I]]
20b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vadd_s16(int16x4_t v1, int16x4_t v2) {
21b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_s16(v1, v2);
22b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
23b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vadd_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i32> %v1, %v2
264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[ADD_I]]
27b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vadd_s32(int32x2_t v1, int32x2_t v2) {
28b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_s32(v1, v2);
29b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
30b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vadd_s64(<1 x i64> %v1, <1 x i64> %v2) #0 {
324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <1 x i64> %v1, %v2
334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[ADD_I]]
34b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vadd_s64(int64x1_t v1, int64x1_t v2) {
35b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_s64(v1, v2);
36b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
37b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vadd_f32(<2 x float> %v1, <2 x float> %v2) #0 {
394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <2 x float> %v1, %v2
404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[ADD_I]]
41b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vadd_f32(float32x2_t v1, float32x2_t v2) {
42b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_f32(v1, v2);
43b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
44b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vadd_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i8> %v1, %v2
474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[ADD_I]]
48b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vadd_u8(uint8x8_t v1, uint8x8_t v2) {
49b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_u8(v1, v2);
50b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
51b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vadd_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i16> %v1, %v2
544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[ADD_I]]
55b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vadd_u16(uint16x4_t v1, uint16x4_t v2) {
56b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_u16(v1, v2);
57b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
58b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vadd_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i32> %v1, %v2
614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[ADD_I]]
62b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vadd_u32(uint32x2_t v1, uint32x2_t v2) {
63b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_u32(v1, v2);
64b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
65b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vadd_u64(<1 x i64> %v1, <1 x i64> %v2) #0 {
674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <1 x i64> %v1, %v2
684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[ADD_I]]
69b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vadd_u64(uint64x1_t v1, uint64x1_t v2) {
70b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vadd_u64(v1, v2);
71b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
72b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vaddq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <16 x i8> %v1, %v2
754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[ADD_I]]
76b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vaddq_s8(int8x16_t v1, int8x16_t v2) {
77b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_s8(v1, v2);
78b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
79b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %v1, %v2
824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
83b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vaddq_s16(int16x8_t v1, int16x8_t v2) {
84b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_s16(v1, v2);
85b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
86b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %v1, %v2
894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
90b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vaddq_s32(int32x4_t v1,int32x4_t  v2) {
91b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_s32(v1, v2);
92b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
93b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %v1, %v2
964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
97b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vaddq_s64(int64x2_t v1, int64x2_t v2) {
98b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_s64(v1, v2);
99b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
100b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vaddq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
1024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <4 x float> %v1, %v2
1034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[ADD_I]]
104b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vaddq_f32(float32x4_t v1, float32x4_t v2) {
105b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_f32(v1, v2);
106b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
107b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vaddq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
1094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <2 x double> %v1, %v2
1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[ADD_I]]
111b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vaddq_f64(float64x2_t v1, float64x2_t v2) {
112b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_f64(v1, v2);
113b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
114b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vaddq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <16 x i8> %v1, %v2
1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[ADD_I]]
118b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vaddq_u8(uint8x16_t v1, uint8x16_t v2) {
119b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_u8(v1, v2);
120b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
121b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
1234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %v1, %v2
1244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
125b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vaddq_u16(uint16x8_t v1, uint16x8_t v2) {
126b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_u16(v1, v2);
127b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
128b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
1304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %v1, %v2
1314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
132b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vaddq_u32(uint32x4_t v1, uint32x4_t v2) {
133b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_u32(v1, v2);
134b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
135b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
1374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %v1, %v2
1384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
139b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vaddq_u64(uint64x2_t v1, uint64x2_t v2) {
140b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaddq_u64(v1, v2);
141b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
142b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsub_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i8> %v1, %v2
1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SUB_I]]
146b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vsub_s8(int8x8_t v1, int8x8_t v2) {
147b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_s8(v1, v2);
148b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsub_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
1504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i16> %v1, %v2
1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SUB_I]]
152b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vsub_s16(int16x4_t v1, int16x4_t v2) {
153b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_s16(v1, v2);
154b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsub_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i32> %v1, %v2
1574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SUB_I]]
158b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vsub_s32(int32x2_t v1, int32x2_t v2) {
159b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_s32(v1, v2);
160b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
161b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsub_s64(<1 x i64> %v1, <1 x i64> %v2) #0 {
1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <1 x i64> %v1, %v2
1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SUB_I]]
165b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vsub_s64(int64x1_t v1, int64x1_t v2) {
166b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_s64(v1, v2);
167b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
168b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vsub_f32(<2 x float> %v1, <2 x float> %v2) #0 {
1704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x float> %v1, %v2
1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SUB_I]]
172b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vsub_f32(float32x2_t v1, float32x2_t v2) {
173b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_f32(v1, v2);
174b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
175b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsub_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i8> %v1, %v2
1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SUB_I]]
179b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vsub_u8(uint8x8_t v1, uint8x8_t v2) {
180b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_u8(v1, v2);
181b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
182b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsub_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i16> %v1, %v2
1854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SUB_I]]
186b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vsub_u16(uint16x4_t v1, uint16x4_t v2) {
187b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_u16(v1, v2);
188b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
189b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsub_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i32> %v1, %v2
1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SUB_I]]
193b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vsub_u32(uint32x2_t v1, uint32x2_t v2) {
194b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_u32(v1, v2);
195b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
196b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsub_u64(<1 x i64> %v1, <1 x i64> %v2) #0 {
1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <1 x i64> %v1, %v2
1994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SUB_I]]
200b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vsub_u64(uint64x1_t v1, uint64x1_t v2) {
201b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsub_u64(v1, v2);
202b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
203b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsubq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
2054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <16 x i8> %v1, %v2
2064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SUB_I]]
207b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vsubq_s8(int8x16_t v1, int8x16_t v2) {
208b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_s8(v1, v2);
209b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
210b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %v1, %v2
2134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
214b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vsubq_s16(int16x8_t v1, int16x8_t v2) {
215b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_s16(v1, v2);
216b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
217b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %v1, %v2
2204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
221b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vsubq_s32(int32x4_t v1,int32x4_t  v2) {
222b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_s32(v1, v2);
223b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
224b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
2264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %v1, %v2
2274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
228b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vsubq_s64(int64x2_t v1, int64x2_t v2) {
229b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_s64(v1, v2);
230b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
231b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vsubq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
2334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <4 x float> %v1, %v2
2344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SUB_I]]
235b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vsubq_f32(float32x4_t v1, float32x4_t v2) {
236b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_f32(v1, v2);
237b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
238b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vsubq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
2404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x double> %v1, %v2
2414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SUB_I]]
242b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vsubq_f64(float64x2_t v1, float64x2_t v2) {
243b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_f64(v1, v2);
244b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
245b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsubq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
2474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <16 x i8> %v1, %v2
2484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SUB_I]]
249b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vsubq_u8(uint8x16_t v1, uint8x16_t v2) {
250b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_u8(v1, v2);
251b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
252b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
2544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %v1, %v2
2554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
256b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vsubq_u16(uint16x8_t v1, uint16x8_t v2) {
257b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_u16(v1, v2);
258b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
259b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
2614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %v1, %v2
2624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
263b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vsubq_u32(uint32x4_t v1, uint32x4_t v2) {
264b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_u32(v1, v2);
265b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
266b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
2684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %v1, %v2
2694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
270b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vsubq_u64(uint64x2_t v1, uint64x2_t v2) {
271b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vsubq_u64(v1, v2);
272b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
273b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmul_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
2754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i8> %v1, %v2
2764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[MUL_I]]
277b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vmul_s8(int8x8_t v1, int8x8_t v2) {
278b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_s8(v1, v2);
279b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
280b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmul_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
2824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i16> %v1, %v2
2834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[MUL_I]]
284b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vmul_s16(int16x4_t v1, int16x4_t v2) {
285b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_s16(v1, v2);
286b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
287b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmul_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
2894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <2 x i32> %v1, %v2
2904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[MUL_I]]
291b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vmul_s32(int32x2_t v1, int32x2_t v2) {
292b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_s32(v1, v2);
293b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
294b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vmul_f32(<2 x float> %v1, <2 x float> %v2) #0 {
2964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <2 x float> %v1, %v2
2974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[MUL_I]]
298b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vmul_f32(float32x2_t v1, float32x2_t v2) {
299b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_f32(v1, v2);
300b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
301b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
302b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmul_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
3044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i8> %v1, %v2
3054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[MUL_I]]
306b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vmul_u8(uint8x8_t v1, uint8x8_t v2) {
307b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_u8(v1, v2);
308b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
309b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmul_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
3114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i16> %v1, %v2
3124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[MUL_I]]
313b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vmul_u16(uint16x4_t v1, uint16x4_t v2) {
314b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_u16(v1, v2);
315b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
316b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmul_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
3184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <2 x i32> %v1, %v2
3194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[MUL_I]]
320b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vmul_u32(uint32x2_t v1, uint32x2_t v2) {
321b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_u32(v1, v2);
322b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
323b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmulq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
3254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <16 x i8> %v1, %v2
3264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[MUL_I]]
327b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vmulq_s8(int8x16_t v1, int8x16_t v2) {
328b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_s8(v1, v2);
329b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
330b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmulq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
3324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i16> %v1, %v2
3334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[MUL_I]]
334b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vmulq_s16(int16x8_t v1, int16x8_t v2) {
335b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_s16(v1, v2);
336b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
337b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmulq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
3394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i32> %v1, %v2
3404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[MUL_I]]
341b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vmulq_s32(int32x4_t v1, int32x4_t v2) {
342b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_s32(v1, v2);
343b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
344b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmulq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
3464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <16 x i8> %v1, %v2
3474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[MUL_I]]
348b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vmulq_u8(uint8x16_t v1, uint8x16_t v2) {
349b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_u8(v1, v2);
350b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
351b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmulq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
3534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i16> %v1, %v2
3544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[MUL_I]]
355b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vmulq_u16(uint16x8_t v1, uint16x8_t v2) {
356b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_u16(v1, v2);
357b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
358b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmulq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
3604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i32> %v1, %v2
3614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[MUL_I]]
362b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vmulq_u32(uint32x4_t v1, uint32x4_t v2) {
363b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_u32(v1, v2);
364b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
365b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vmulq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
3674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <4 x float> %v1, %v2
3684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[MUL_I]]
369b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vmulq_f32(float32x4_t v1, float32x4_t v2) {
370b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_f32(v1, v2);
371b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
372b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vmulq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
3744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <2 x double> %v1, %v2
3754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[MUL_I]]
376b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vmulq_f64(float64x2_t v1, float64x2_t v2) {
377b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_f64(v1, v2);
378b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
379b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmul_p8(<8 x i8> %v1, <8 x i8> %v2) #0 {
3814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMUL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.pmul.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
3824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VMUL_V_I]]
383b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverpoly8x8_t test_vmul_p8(poly8x8_t v1, poly8x8_t v2) {
384b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  //  test_vmul_p8
385b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmul_p8(v1, v2);
386b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  //  pmul {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
387b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
388b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmulq_p8(<16 x i8> %v1, <16 x i8> %v2) #0 {
3904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.pmul.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
3914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VMULQ_V_I]]
392b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverpoly8x16_t test_vmulq_p8(poly8x16_t v1, poly8x16_t v2) {
393b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  // test_vmulq_p8
394b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulq_p8(v1, v2);
395b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  // pmul {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
396b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
397b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
398b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmla_s8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
4004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i8> %v2, %v3
4014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i8> %v1, [[MUL_I]]
4024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[ADD_I]]
403b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vmla_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
404b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmla_s8(v1, v2, v3);
405b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
406b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmla_s16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
4084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i16> %v2, %v3
4094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i16> %v1, [[MUL_I]]
4104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[ADD_I]] to <8 x i8>
4114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
412b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vmla_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
413b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmla_s16(v1, v2, v3);
414b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
415b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmla_s32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
4174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <2 x i32> %v2, %v3
4184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i32> %v1, [[MUL_I]]
4194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[ADD_I]]
420b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vmla_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
421b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmla_s32(v1, v2, v3);
422b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
423b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vmla_f32(<2 x float> %v1, <2 x float> %v2, <2 x float> %v3) #0 {
4254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <2 x float> %v2, %v3
4264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <2 x float> %v1, [[MUL_I]]
4274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[ADD_I]]
428b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vmla_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
429b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmla_f32(v1, v2, v3);
430b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
431b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmla_u8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
4334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i8> %v2, %v3
4344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i8> %v1, [[MUL_I]]
4354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[ADD_I]]
436b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vmla_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
437b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmla_u8(v1, v2, v3);
438b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
439b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmla_u16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
4414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i16> %v2, %v3
4424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i16> %v1, [[MUL_I]]
4434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[ADD_I]]
444b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vmla_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
445b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmla_u16(v1, v2, v3);
446b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
447b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmla_u32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
4494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <2 x i32> %v2, %v3
4504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i32> %v1, [[MUL_I]]
4514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[ADD_I]]
452b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vmla_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
453b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmla_u32(v1, v2, v3);
454b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
455b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmlaq_s8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
4574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <16 x i8> %v2, %v3
4584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <16 x i8> %v1, [[MUL_I]]
4594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[ADD_I]]
460b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vmlaq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
461b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_s8(v1, v2, v3);
462b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
463b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlaq_s16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
4654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i16> %v2, %v3
4664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %v1, [[MUL_I]]
4674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
468b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vmlaq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
469b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_s16(v1, v2, v3);
470b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
471b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlaq_s32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
4734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i32> %v2, %v3
4744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %v1, [[MUL_I]]
4754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
476b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vmlaq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
477b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_s32(v1, v2, v3);
478b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
479b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vmlaq_f32(<4 x float> %v1, <4 x float> %v2, <4 x float> %v3) #0 {
4814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <4 x float> %v2, %v3
4824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <4 x float> %v1, [[MUL_I]]
4834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[ADD_I]]
484b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vmlaq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
485b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_f32(v1, v2, v3);
486b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
487b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmlaq_u8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
4894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <16 x i8> %v2, %v3
4904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <16 x i8> %v1, [[MUL_I]]
4914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[ADD_I]]
492b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vmlaq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
493b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_u8(v1, v2, v3);
494b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
495b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlaq_u16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
4974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i16> %v2, %v3
4984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %v1, [[MUL_I]]
4994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
500b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vmlaq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
501b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_u16(v1, v2, v3);
502b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
503b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlaq_u32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
5054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i32> %v2, %v3
5064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %v1, [[MUL_I]]
5074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
508b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vmlaq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
509b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_u32(v1, v2, v3);
510b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
511b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vmlaq_f64(<2 x double> %v1, <2 x double> %v2, <2 x double> %v3) #0 {
5134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <2 x double> %v2, %v3
5144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <2 x double> %v1, [[MUL_I]]
5154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[ADD_I]]
516b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vmlaq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
517b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlaq_f64(v1, v2, v3);
518b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
519b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmls_s8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
5214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i8> %v2, %v3
5224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i8> %v1, [[MUL_I]]
5234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SUB_I]]
524b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vmls_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
525b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmls_s8(v1, v2, v3);
526b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
527b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmls_s16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
5294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i16> %v2, %v3
5304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i16> %v1, [[MUL_I]]
5314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SUB_I]] to <8 x i8>
5324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
533b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vmls_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
534b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmls_s16(v1, v2, v3);
535b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
536b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmls_s32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
5384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <2 x i32> %v2, %v3
5394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i32> %v1, [[MUL_I]]
5404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SUB_I]]
541b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vmls_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
542b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmls_s32(v1, v2, v3);
543b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
544b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vmls_f32(<2 x float> %v1, <2 x float> %v2, <2 x float> %v3) #0 {
5464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <2 x float> %v2, %v3
5474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x float> %v1, [[MUL_I]]
5484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SUB_I]]
549b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vmls_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
550b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmls_f32(v1, v2, v3);
551b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
552b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmls_u8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
5544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i8> %v2, %v3
5554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i8> %v1, [[MUL_I]]
5564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SUB_I]]
557b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vmls_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
558b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmls_u8(v1, v2, v3);
559b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
560b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmls_u16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
5624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i16> %v2, %v3
5634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i16> %v1, [[MUL_I]]
5644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SUB_I]]
565b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vmls_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
566b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmls_u16(v1, v2, v3);
567b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
568b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmls_u32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
5704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <2 x i32> %v2, %v3
5714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i32> %v1, [[MUL_I]]
5724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SUB_I]]
573b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vmls_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
574b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmls_u32(v1, v2, v3);
575b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmlsq_s8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
5774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <16 x i8> %v2, %v3
5784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <16 x i8> %v1, [[MUL_I]]
5794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SUB_I]]
580b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vmlsq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
581b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_s8(v1, v2, v3);
582b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
583b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlsq_s16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
5854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i16> %v2, %v3
5864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %v1, [[MUL_I]]
5874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
588b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vmlsq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
589b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_s16(v1, v2, v3);
590b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
591b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
5924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlsq_s32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
5934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i32> %v2, %v3
5944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %v1, [[MUL_I]]
5954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
596b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vmlsq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
597b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_s32(v1, v2, v3);
598b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
599b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vmlsq_f32(<4 x float> %v1, <4 x float> %v2, <4 x float> %v3) #0 {
6014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <4 x float> %v2, %v3
6024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <4 x float> %v1, [[MUL_I]]
6034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SUB_I]]
604b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vmlsq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
605b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_f32(v1, v2, v3);
606b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
6074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmlsq_u8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
6084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <16 x i8> %v2, %v3
6094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <16 x i8> %v1, [[MUL_I]]
6104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SUB_I]]
611b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vmlsq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
612b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_u8(v1, v2, v3);
613b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
614b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlsq_u16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
6164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <8 x i16> %v2, %v3
6174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %v1, [[MUL_I]]
6184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
619b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vmlsq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
620b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_u16(v1, v2, v3);
621b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
622b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlsq_u32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
6244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = mul <4 x i32> %v2, %v3
6254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %v1, [[MUL_I]]
6264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
627b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vmlsq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
628b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_u32(v1, v2, v3);
629b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
630b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vmlsq_f64(<2 x double> %v1, <2 x double> %v2, <2 x double> %v3) #0 {
6324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <2 x double> %v2, %v3
6334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x double> %v1, [[MUL_I]]
6344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SUB_I]]
635b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vmlsq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
636b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmlsq_f64(v1, v2, v3);
637b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
6384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vfma_f32(<2 x float> %v1, <2 x float> %v2, <2 x float> %v3) #0 {
6394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
6404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
6414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x float> %v3 to <8 x i8>
6424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
6434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
6444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x float>
6454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <2 x float> @llvm.fma.v2f32(<2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x float> [[TMP3]]) #4
6464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP6]]
647b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vfma_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
648b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vfma_f32(v1, v2, v3);
649b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
650b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vfmaq_f32(<4 x float> %v1, <4 x float> %v2, <4 x float> %v3) #0 {
6524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
6534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
6544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x float> %v3 to <16 x i8>
6554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
6564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
6574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x float>
6584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <4 x float> @llvm.fma.v4f32(<4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x float> [[TMP3]]) #4
6594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP6]]
660b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vfmaq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
661b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vfmaq_f32(v1, v2, v3);
662b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
663b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vfmaq_f64(<2 x double> %v1, <2 x double> %v2, <2 x double> %v3) #0 {
6654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
6664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
6674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x double> %v3 to <16 x i8>
6684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
6694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
6704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x double>
6714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <2 x double> @llvm.fma.v2f64(<2 x double> [[TMP4]], <2 x double> [[TMP5]], <2 x double> [[TMP3]]) #4
6724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP6]]
673b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vfmaq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
674b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vfmaq_f64(v1, v2, v3);
675b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
6764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vfms_f32(<2 x float> %v1, <2 x float> %v2, <2 x float> %v3) #0 {
6774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x float> <float -0.000000e+00, float -0.000000e+00>, %v2
6784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
6794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> [[SUB_I]] to <8 x i8>
6804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x float> %v3 to <8 x i8>
6814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
6824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
6834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x float>
6844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <2 x float> @llvm.fma.v2f32(<2 x float> [[TMP4]], <2 x float> [[TMP5]], <2 x float> [[TMP3]]) #4
6854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP6]]
686b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vfms_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
687b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vfms_f32(v1, v2, v3);
688b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
689b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
6904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vfmsq_f32(<4 x float> %v1, <4 x float> %v2, <4 x float> %v3) #0 {
6914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %v2
6924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
6934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> [[SUB_I]] to <16 x i8>
6944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x float> %v3 to <16 x i8>
6954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
6964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
6974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x float>
6984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <4 x float> @llvm.fma.v4f32(<4 x float> [[TMP4]], <4 x float> [[TMP5]], <4 x float> [[TMP3]]) #4
6994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP6]]
700b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vfmsq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
701b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vfmsq_f32(v1, v2, v3);
702b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
703b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vfmsq_f64(<2 x double> %v1, <2 x double> %v2, <2 x double> %v3) #0 {
7054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %v2
7064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
7074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> [[SUB_I]] to <16 x i8>
7084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x double> %v3 to <16 x i8>
7094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
7104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
7114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x double>
7124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <2 x double> @llvm.fma.v2f64(<2 x double> [[TMP4]], <2 x double> [[TMP5]], <2 x double> [[TMP3]]) #4
7134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP6]]
714b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vfmsq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
715b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vfmsq_f64(v1, v2, v3);
716b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
717b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vdivq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
7194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[DIV_I:%.*]] = fdiv <2 x double> %v1, %v2
7204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[DIV_I]]
721b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vdivq_f64(float64x2_t v1, float64x2_t v2) {
722b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vdivq_f64(v1, v2);
723b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
724b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vdivq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
7264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[DIV_I:%.*]] = fdiv <4 x float> %v1, %v2
7274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[DIV_I]]
728b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vdivq_f32(float32x4_t v1, float32x4_t v2) {
729b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vdivq_f32(v1, v2);
730b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
731b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vdiv_f32(<2 x float> %v1, <2 x float> %v2) #0 {
7334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[DIV_I:%.*]] = fdiv <2 x float> %v1, %v2
7344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[DIV_I]]
735b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vdiv_f32(float32x2_t v1, float32x2_t v2) {
736b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vdiv_f32(v1, v2);
737b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
738b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vaba_s8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
7404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sabd.v8i8(<8 x i8> %v2, <8 x i8> %v3) #4
7414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i8> %v1, [[VABD_I_I]]
7424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[ADD_I]]
743b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vaba_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
744b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaba_s8(v1, v2, v3);
745b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
746b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vaba_s16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
7484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
7494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v3 to <8 x i8>
7504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
7514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
7524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sabd.v4i16(<4 x i16> [[VABD_I_I]], <4 x i16> [[VABD1_I_I]]) #4
7534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i16> %v1, [[VABD2_I_I]]
7544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[ADD_I]]
755b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vaba_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
756b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaba_s16(v1, v2, v3);
757b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
758b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vaba_s32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
7604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
7614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v3 to <8 x i8>
7624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
7634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
7644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sabd.v2i32(<2 x i32> [[VABD_I_I]], <2 x i32> [[VABD1_I_I]]) #4
7654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i32> %v1, [[VABD2_I_I]]
7664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[ADD_I]]
767b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vaba_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
768b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaba_s32(v1, v2, v3);
769b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
770b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vaba_u8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
7724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8> %v2, <8 x i8> %v3) #4
7734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i8> %v1, [[VABD_I_I]]
7744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[ADD_I]]
775b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vaba_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
776b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaba_u8(v1, v2, v3);
777b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
778b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vaba_u16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
7804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
7814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v3 to <8 x i8>
7824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
7834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
7844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uabd.v4i16(<4 x i16> [[VABD_I_I]], <4 x i16> [[VABD1_I_I]]) #4
7854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i16> %v1, [[VABD2_I_I]]
7864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[ADD_I]]
787b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vaba_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
788b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaba_u16(v1, v2, v3);
789b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
790b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
7914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vaba_u32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
7924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
7934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v3 to <8 x i8>
7944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
7954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
7964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uabd.v2i32(<2 x i32> [[VABD_I_I]], <2 x i32> [[VABD1_I_I]]) #4
7974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i32> %v1, [[VABD2_I_I]]
7984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[ADD_I]]
799b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vaba_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
800b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vaba_u32(v1, v2, v3);
801b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
802b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vabaq_s8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
8044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sabd.v16i8(<16 x i8> %v2, <16 x i8> %v3) #4
8054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <16 x i8> %v1, [[VABD_I_I]]
8064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[ADD_I]]
807b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vabaq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
808b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabaq_s8(v1, v2, v3);
809b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
810b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabaq_s16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
8124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
8134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v3 to <16 x i8>
8144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
8154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
8164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sabd.v8i16(<8 x i16> [[VABD_I_I]], <8 x i16> [[VABD1_I_I]]) #4
8174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %v1, [[VABD2_I_I]]
8184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
819b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vabaq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
820b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabaq_s16(v1, v2, v3);
821b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
822b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabaq_s32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
8244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
8254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v3 to <16 x i8>
8264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
8274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
8284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sabd.v4i32(<4 x i32> [[VABD_I_I]], <4 x i32> [[VABD1_I_I]]) #4
8294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %v1, [[VABD2_I_I]]
8304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
831b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vabaq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
832b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabaq_s32(v1, v2, v3);
833b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
834b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vabaq_u8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
8364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uabd.v16i8(<16 x i8> %v2, <16 x i8> %v3) #4
8374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <16 x i8> %v1, [[VABD_I_I]]
8384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[ADD_I]]
839b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vabaq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
840b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabaq_u8(v1, v2, v3);
841b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
842b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabaq_u16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
8444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
8454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v3 to <16 x i8>
8464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
8474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
8484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uabd.v8i16(<8 x i16> [[VABD_I_I]], <8 x i16> [[VABD1_I_I]]) #4
8494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %v1, [[VABD2_I_I]]
8504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
851b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vabaq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
852b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabaq_u16(v1, v2, v3);
853b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
854b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabaq_u32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
8564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
8574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v3 to <16 x i8>
8584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
8594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
8604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uabd.v4i32(<4 x i32> [[VABD_I_I]], <4 x i32> [[VABD1_I_I]]) #4
8614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %v1, [[VABD2_I_I]]
8624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
863b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vabaq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
864b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabaq_u32(v1, v2, v3);
865b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
866b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vabd_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
8684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sabd.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
8694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VABD_I]]
870b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vabd_s8(int8x8_t v1, int8x8_t v2) {
871b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabd_s8(v1, v2);
872b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
873b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vabd_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
8754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
8764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
8774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
8784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
8794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sabd.v4i16(<4 x i16> [[VABD_I]], <4 x i16> [[VABD1_I]]) #4
8804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VABD2_I]]
881b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vabd_s16(int16x4_t v1, int16x4_t v2) {
882b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabd_s16(v1, v2);
883b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
884b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vabd_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
8864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
8874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
8884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
8894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
8904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sabd.v2i32(<2 x i32> [[VABD_I]], <2 x i32> [[VABD1_I]]) #4
8914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VABD2_I]]
892b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vabd_s32(int32x2_t v1, int32x2_t v2) {
893b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabd_s32(v1, v2);
894b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
895b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
8964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vabd_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
8974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
8984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VABD_I]]
899b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vabd_u8(uint8x8_t v1, uint8x8_t v2) {
900b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabd_u8(v1, v2);
901b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
902b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vabd_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
9044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
9054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
9064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
9074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
9084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uabd.v4i16(<4 x i16> [[VABD_I]], <4 x i16> [[VABD1_I]]) #4
9094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VABD2_I]]
910b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vabd_u16(uint16x4_t v1, uint16x4_t v2) {
911b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabd_u16(v1, v2);
912b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
913b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vabd_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
9154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
9164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
9174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
9184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
9194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uabd.v2i32(<2 x i32> [[VABD_I]], <2 x i32> [[VABD1_I]]) #4
9204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VABD2_I]]
921b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vabd_u32(uint32x2_t v1, uint32x2_t v2) {
922b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabd_u32(v1, v2);
923b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
924b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vabd_f32(<2 x float> %v1, <2 x float> %v2) #0 {
9264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
9274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
9284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
9294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
9304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fabd.v2f32(<2 x float> [[VABD_I]], <2 x float> [[VABD1_I]]) #4
9314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VABD2_I]]
932b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vabd_f32(float32x2_t v1, float32x2_t v2) {
933b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabd_f32(v1, v2);
934b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
935b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vabdq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
9374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sabd.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
9384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VABD_I]]
939b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vabdq_s8(int8x16_t v1, int8x16_t v2) {
940b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_s8(v1, v2);
941b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
942b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabdq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
9444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
9454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
9464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
9474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
9484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sabd.v8i16(<8 x i16> [[VABD_I]], <8 x i16> [[VABD1_I]]) #4
9494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VABD2_I]]
950b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vabdq_s16(int16x8_t v1, int16x8_t v2) {
951b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_s16(v1, v2);
952b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
953b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabdq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
9554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
9564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
9574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
9584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
9594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sabd.v4i32(<4 x i32> [[VABD_I]], <4 x i32> [[VABD1_I]]) #4
9604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VABD2_I]]
961b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vabdq_s32(int32x4_t v1, int32x4_t v2) {
962b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_s32(v1, v2);
963b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
964b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vabdq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
9664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uabd.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
9674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VABD_I]]
968b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vabdq_u8(uint8x16_t v1, uint8x16_t v2) {
969b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_u8(v1, v2);
970b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
971b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabdq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
9734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
9744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
9754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
9764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
9774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uabd.v8i16(<8 x i16> [[VABD_I]], <8 x i16> [[VABD1_I]]) #4
9784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VABD2_I]]
979b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vabdq_u16(uint16x8_t v1, uint16x8_t v2) {
980b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_u16(v1, v2);
981b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
982b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabdq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
9844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
9854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
9864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
9874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
9884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uabd.v4i32(<4 x i32> [[VABD_I]], <4 x i32> [[VABD1_I]]) #4
9894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VABD2_I]]
990b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vabdq_u32(uint32x4_t v1, uint32x4_t v2) {
991b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_u32(v1, v2);
992b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
993b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
9944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vabdq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
9954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
9964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
9974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
9984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
9994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fabd.v4f32(<4 x float> [[VABD_I]], <4 x float> [[VABD1_I]]) #4
10004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VABD2_I]]
1001b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vabdq_f32(float32x4_t v1, float32x4_t v2) {
1002b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_f32(v1, v2);
1003b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1004b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
10054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vabdq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
10064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
10074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
10084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
10094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
10104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fabd.v2f64(<2 x double> [[VABD_I]], <2 x double> [[VABD1_I]]) #4
10114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VABD2_I]]
1012b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vabdq_f64(float64x2_t v1, float64x2_t v2) {
1013b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vabdq_f64(v1, v2);
1014b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1015b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
1016b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
10174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vbsl_s8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
10184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = and <8 x i8> %v1, %v2
10194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = xor <8 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
10204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = and <8 x i8> [[TMP0]], %v3
10214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = or <8 x i8> [[VBSL_I]], [[VBSL1_I]]
10224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VBSL2_I]]
1023b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vbsl_s8(uint8x8_t v1, int8x8_t v2, int8x8_t v3) {
1024b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_s8(v1, v2, v3);
1025b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1026b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
10274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vbsl_s16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
10284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
10294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
10304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %v3 to <8 x i8>
10314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
10324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
10334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
10344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <4 x i16> [[VBSL_I]], [[VBSL1_I]]
10354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <4 x i16> [[VBSL_I]], <i16 -1, i16 -1, i16 -1, i16 -1>
10364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <4 x i16> [[TMP3]], [[VBSL2_I]]
10374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <4 x i16> [[VBSL3_I]], [[VBSL4_I]]
10384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[VBSL5_I]] to <8 x i8>
10394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP4]]
1040b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vbsl_s16(uint16x4_t v1, int16x4_t v2, int16x4_t v3) {
1041b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_s16(v1, v2, v3);
1042b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1043b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
10444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vbsl_s32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
10454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
10464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
10474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %v3 to <8 x i8>
10484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
10494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
10504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
10514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <2 x i32> [[VBSL_I]], [[VBSL1_I]]
10524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <2 x i32> [[VBSL_I]], <i32 -1, i32 -1>
10534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <2 x i32> [[TMP3]], [[VBSL2_I]]
10544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <2 x i32> [[VBSL3_I]], [[VBSL4_I]]
10554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VBSL5_I]]
1056b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vbsl_s32(uint32x2_t v1, int32x2_t v2, int32x2_t v3) {
1057b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_s32(v1, v2, v3);
1058b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1059b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
10604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vbsl_s64(<1 x i64> %v1, <1 x i64> %v2, <1 x i64> %v3) #0 {
10614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %v1 to <8 x i8>
10624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %v2 to <8 x i8>
10634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <1 x i64> %v3 to <8 x i8>
10644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
10654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
10664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x i64>
10674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <1 x i64> [[VBSL_I]], [[VBSL1_I]]
10684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <1 x i64> [[VBSL_I]], <i64 -1>
10694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <1 x i64> [[TMP3]], [[VBSL2_I]]
10704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <1 x i64> [[VBSL3_I]], [[VBSL4_I]]
10714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VBSL5_I]]
1072b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vbsl_s64(uint64x1_t v1, uint64x1_t v2, uint64x1_t v3) {
1073b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_s64(v1, v2, v3);
1074b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1075b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
10764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vbsl_u8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
10774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = and <8 x i8> %v1, %v2
10784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = xor <8 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
10794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = and <8 x i8> [[TMP0]], %v3
10804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = or <8 x i8> [[VBSL_I]], [[VBSL1_I]]
10814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VBSL2_I]]
1082b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vbsl_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
1083b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_u8(v1, v2, v3);
1084b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1085b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
10864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vbsl_u16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
10874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
10884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
10894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %v3 to <8 x i8>
10904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
10914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
10924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
10934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <4 x i16> [[VBSL_I]], [[VBSL1_I]]
10944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <4 x i16> [[VBSL_I]], <i16 -1, i16 -1, i16 -1, i16 -1>
10954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <4 x i16> [[TMP3]], [[VBSL2_I]]
10964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <4 x i16> [[VBSL3_I]], [[VBSL4_I]]
10974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VBSL5_I]]
1098b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vbsl_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
1099b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_u16(v1, v2, v3);
1100b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1101b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
11024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vbsl_u32(<2 x i32> %v1, <2 x i32> %v2, <2 x i32> %v3) #0 {
11034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
11044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
11054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %v3 to <8 x i8>
11064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
11074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
11084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
11094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <2 x i32> [[VBSL_I]], [[VBSL1_I]]
11104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <2 x i32> [[VBSL_I]], <i32 -1, i32 -1>
11114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <2 x i32> [[TMP3]], [[VBSL2_I]]
11124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <2 x i32> [[VBSL3_I]], [[VBSL4_I]]
11134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VBSL5_I]]
1114b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vbsl_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
1115b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_u32(v1, v2, v3);
1116b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1117b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
11184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vbsl_u64(<1 x i64> %v1, <1 x i64> %v2, <1 x i64> %v3) #0 {
11194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %v1 to <8 x i8>
11204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %v2 to <8 x i8>
11214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <1 x i64> %v3 to <8 x i8>
11224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
11234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
11244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x i64>
11254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <1 x i64> [[VBSL_I]], [[VBSL1_I]]
11264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <1 x i64> [[VBSL_I]], <i64 -1>
11274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <1 x i64> [[TMP3]], [[VBSL2_I]]
11284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <1 x i64> [[VBSL3_I]], [[VBSL4_I]]
11294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VBSL5_I]]
1130b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vbsl_u64(uint64x1_t v1, uint64x1_t v2, uint64x1_t v3) {
1131b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_u64(v1, v2, v3);
1132b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1133b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
11344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vbsl_f32(<2 x float> %v1, <2 x float> %v2, <2 x float> %v3) #0 {
11354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <2 x i32>
11364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[TMP0]] to <8 x i8>
11374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
11384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <2 x float> %v3 to <8 x i8>
11394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
11404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
11414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP3]] to <2 x i32>
11424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <2 x i32> [[VBSL_I]], [[VBSL1_I]]
11434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = xor <2 x i32> [[VBSL_I]], <i32 -1, i32 -1>
11444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <2 x i32> [[TMP4]], [[VBSL2_I]]
11454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <2 x i32> [[VBSL3_I]], [[VBSL4_I]]
11464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <2 x i32> [[VBSL5_I]] to <2 x float>
11474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP5]]
1148b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vbsl_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
1149b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_f32(v1, v2, v3);
1150b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1151b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
11524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vbsl_f64(<1 x i64> %v1, <1 x double> %v2, <1 x double> %v3) #0 {
11534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %v1 to <8 x i8>
11544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %v2 to <8 x i8>
11554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <1 x double> %v3 to <8 x i8>
11564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
11574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
11584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x i64>
11594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <1 x i64> [[VBSL_I]], [[VBSL1_I]]
11604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <1 x i64> [[VBSL_I]], <i64 -1>
11614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <1 x i64> [[TMP3]], [[VBSL2_I]]
11624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <1 x i64> [[VBSL3_I]], [[VBSL4_I]]
11634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[VBSL5_I]] to <1 x double>
11644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP4]]
11654bb8fe374570cc453f10935bdc81b4083f09d2ffBill Wendlingfloat64x1_t test_vbsl_f64(uint64x1_t v1, float64x1_t v2, float64x1_t v3) {
11664bb8fe374570cc453f10935bdc81b4083f09d2ffBill Wendling  return vbsl_f64(v1, v2, v3);
11674bb8fe374570cc453f10935bdc81b4083f09d2ffBill Wendling}
11684bb8fe374570cc453f10935bdc81b4083f09d2ffBill Wendling
11694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vbsl_p8(<8 x i8> %v1, <8 x i8> %v2, <8 x i8> %v3) #0 {
11704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = and <8 x i8> %v1, %v2
11714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = xor <8 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
11724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = and <8 x i8> [[TMP0]], %v3
11734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = or <8 x i8> [[VBSL_I]], [[VBSL1_I]]
11744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VBSL2_I]]
1175b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverpoly8x8_t test_vbsl_p8(uint8x8_t v1, poly8x8_t v2, poly8x8_t v3) {
1176b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_p8(v1, v2, v3);
1177b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1178b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
11794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vbsl_p16(<4 x i16> %v1, <4 x i16> %v2, <4 x i16> %v3) #0 {
11804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
11814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
11824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %v3 to <8 x i8>
11834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
11844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
11854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
11864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <4 x i16> [[VBSL_I]], [[VBSL1_I]]
11874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <4 x i16> [[VBSL_I]], <i16 -1, i16 -1, i16 -1, i16 -1>
11884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <4 x i16> [[TMP3]], [[VBSL2_I]]
11894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <4 x i16> [[VBSL3_I]], [[VBSL4_I]]
11904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VBSL5_I]]
1191b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverpoly16x4_t test_vbsl_p16(uint16x4_t v1, poly16x4_t v2, poly16x4_t v3) {
1192b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbsl_p16(v1, v2, v3);
1193b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1194b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
11954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vbslq_s8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
11964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = and <16 x i8> %v1, %v2
11974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = xor <16 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
11984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = and <16 x i8> [[TMP0]], %v3
11994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = or <16 x i8> [[VBSL_I]], [[VBSL1_I]]
12004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VBSL2_I]]
1201b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vbslq_s8(uint8x16_t v1, int8x16_t v2, int8x16_t v3) {
1202b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_s8(v1, v2, v3);
1203b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1204b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
12054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vbslq_s16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
12064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
12074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
12084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %v3 to <16 x i8>
12094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
12104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
12114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
12124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <8 x i16> [[VBSL_I]], [[VBSL1_I]]
12134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <8 x i16> [[VBSL_I]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
12144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <8 x i16> [[TMP3]], [[VBSL2_I]]
12154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <8 x i16> [[VBSL3_I]], [[VBSL4_I]]
12164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VBSL5_I]]
1217b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vbslq_s16(uint16x8_t v1, int16x8_t v2, int16x8_t v3) {
1218b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_s16(v1, v2, v3);
1219b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1220b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
12214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vbslq_s32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
12224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
12234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
12244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %v3 to <16 x i8>
12254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
12264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
12274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
12284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <4 x i32> [[VBSL_I]], [[VBSL1_I]]
12294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <4 x i32> [[VBSL_I]], <i32 -1, i32 -1, i32 -1, i32 -1>
12304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <4 x i32> [[TMP3]], [[VBSL2_I]]
12314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <4 x i32> [[VBSL3_I]], [[VBSL4_I]]
12324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VBSL5_I]]
1233b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vbslq_s32(uint32x4_t v1, int32x4_t v2, int32x4_t v3) {
1234b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_s32(v1, v2, v3);
1235b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1236b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
12374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vbslq_s64(<2 x i64> %v1, <2 x i64> %v2, <2 x i64> %v3) #0 {
12384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %v1 to <16 x i8>
12394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %v2 to <16 x i8>
12404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i64> %v3 to <16 x i8>
12414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
12424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
12434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x i64>
12444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <2 x i64> [[VBSL_I]], [[VBSL1_I]]
12454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <2 x i64> [[VBSL_I]], <i64 -1, i64 -1>
12464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <2 x i64> [[TMP3]], [[VBSL2_I]]
12474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <2 x i64> [[VBSL3_I]], [[VBSL4_I]]
12484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VBSL5_I]]
1249b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vbslq_s64(uint64x2_t v1, int64x2_t v2, int64x2_t v3) {
1250b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_s64(v1, v2, v3);
1251b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1252b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
12534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vbslq_u8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
12544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = and <16 x i8> %v1, %v2
12554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = xor <16 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
12564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = and <16 x i8> [[TMP0]], %v3
12574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = or <16 x i8> [[VBSL_I]], [[VBSL1_I]]
12584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VBSL2_I]]
1259b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vbslq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
1260b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_u8(v1, v2, v3);
1261b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1262b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
12634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vbslq_u16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
12644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
12654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
12664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %v3 to <16 x i8>
12674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
12684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
12694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
12704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <8 x i16> [[VBSL_I]], [[VBSL1_I]]
12714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <8 x i16> [[VBSL_I]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
12724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <8 x i16> [[TMP3]], [[VBSL2_I]]
12734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <8 x i16> [[VBSL3_I]], [[VBSL4_I]]
12744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VBSL5_I]]
1275b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vbslq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
1276b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_u16(v1, v2, v3);
1277b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1278b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
12794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vbslq_u32(<4 x i32> %v1, <4 x i32> %v2, <4 x i32> %v3) #0 {
12804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
12814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
12824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i32> %v3 to <16 x i8>
12834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
12844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
12854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
12864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <4 x i32> [[VBSL_I]], [[VBSL1_I]]
12874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <4 x i32> [[VBSL_I]], <i32 -1, i32 -1, i32 -1, i32 -1>
12884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <4 x i32> [[TMP3]], [[VBSL2_I]]
12894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <4 x i32> [[VBSL3_I]], [[VBSL4_I]]
12904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VBSL5_I]]
1291b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vbslq_u32(uint32x4_t v1, int32x4_t v2, int32x4_t v3) {
1292b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_s32(v1, v2, v3);
1293b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1294b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
12954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vbslq_u64(<2 x i64> %v1, <2 x i64> %v2, <2 x i64> %v3) #0 {
12964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %v1 to <16 x i8>
12974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %v2 to <16 x i8>
12984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i64> %v3 to <16 x i8>
12994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
13004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
13014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x i64>
13024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <2 x i64> [[VBSL_I]], [[VBSL1_I]]
13034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <2 x i64> [[VBSL_I]], <i64 -1, i64 -1>
13044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <2 x i64> [[TMP3]], [[VBSL2_I]]
13054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <2 x i64> [[VBSL3_I]], [[VBSL4_I]]
13064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VBSL5_I]]
1307b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vbslq_u64(uint64x2_t v1, uint64x2_t v2, uint64x2_t v3) {
1308b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_u64(v1, v2, v3);
1309b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1310b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
13114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vbslq_f32(<4 x i32> %v1, <4 x float> %v2, <4 x float> %v3) #0 {
13124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
13134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
13144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x float> %v3 to <16 x i8>
13154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
13164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
13174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <4 x i32>
13184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <4 x i32> [[VBSL_I]], [[VBSL1_I]]
13194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <4 x i32> [[VBSL_I]], <i32 -1, i32 -1, i32 -1, i32 -1>
13204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <4 x i32> [[TMP3]], [[VBSL2_I]]
13214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <4 x i32> [[VBSL3_I]], [[VBSL4_I]]
13224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[VBSL5_I]] to <4 x float>
13234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP4]]
1324b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vbslq_f32(uint32x4_t v1, float32x4_t v2, float32x4_t v3) {
1325b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_f32(v1, v2, v3);
1326b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1327b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
13284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vbslq_p8(<16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) #0 {
13294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = and <16 x i8> %v1, %v2
13304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = xor <16 x i8> %v1, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
13314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = and <16 x i8> [[TMP0]], %v3
13324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = or <16 x i8> [[VBSL_I]], [[VBSL1_I]]
13334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VBSL2_I]]
1334b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverpoly8x16_t test_vbslq_p8(uint8x16_t v1, poly8x16_t v2, poly8x16_t v3) {
1335b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_p8(v1, v2, v3);
1336b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1337b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
13384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vbslq_p16(<8 x i16> %v1, <8 x i16> %v2, <8 x i16> %v3) #0 {
13394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
13404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
13414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i16> %v3 to <16 x i8>
13424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
13434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
13444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <8 x i16>
13454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <8 x i16> [[VBSL_I]], [[VBSL1_I]]
13464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <8 x i16> [[VBSL_I]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
13474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <8 x i16> [[TMP3]], [[VBSL2_I]]
13484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <8 x i16> [[VBSL3_I]], [[VBSL4_I]]
13494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VBSL5_I]]
1350b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverpoly16x8_t test_vbslq_p16(uint16x8_t v1, poly16x8_t v2, poly16x8_t v3) {
1351b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_p16(v1, v2, v3);
1352b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1353b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
13544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vbslq_f64(<2 x i64> %v1, <2 x double> %v2, <2 x double> %v3) #0 {
13554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %v1 to <16 x i8>
13564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
13574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x double> %v3 to <16 x i8>
13584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
13594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
13604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL2_I:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x i64>
13614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL3_I:%.*]] = and <2 x i64> [[VBSL_I]], [[VBSL1_I]]
13624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = xor <2 x i64> [[VBSL_I]], <i64 -1, i64 -1>
13634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL4_I:%.*]] = and <2 x i64> [[TMP3]], [[VBSL2_I]]
13644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VBSL5_I:%.*]] = or <2 x i64> [[VBSL3_I]], [[VBSL4_I]]
13654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[VBSL5_I]] to <2 x double>
13664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP4]]
1367b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vbslq_f64(uint64x2_t v1, float64x2_t v2, float64x2_t v3) {
1368b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vbslq_f64(v1, v2, v3);
1369b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1370b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
13714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrecps_f32(<2 x float> %v1, <2 x float> %v2) #0 {
13724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
13734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
13744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
13754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
13764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.frecps.v2f32(<2 x float> [[VRECPS_V_I]], <2 x float> [[VRECPS_V1_I]]) #4
13774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V3_I:%.*]] = bitcast <2 x float> [[VRECPS_V2_I]] to <8 x i8>
13784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRECPS_V3_I]] to <2 x float>
13794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP2]]
1380b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vrecps_f32(float32x2_t v1, float32x2_t v2) {
1381b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover   return vrecps_f32(v1, v2);
1382b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1383b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
13844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrecpsq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
13854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
13864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
13874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
13884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
13894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.frecps.v4f32(<4 x float> [[VRECPSQ_V_I]], <4 x float> [[VRECPSQ_V1_I]]) #4
13904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V3_I:%.*]] = bitcast <4 x float> [[VRECPSQ_V2_I]] to <16 x i8>
13914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRECPSQ_V3_I]] to <4 x float>
13924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP2]]
1393b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vrecpsq_f32(float32x4_t v1, float32x4_t v2) {
1394b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover   return vrecpsq_f32(v1, v2);
1395b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1396b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
13974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrecpsq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
13984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
13994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
14004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
14014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
14024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.frecps.v2f64(<2 x double> [[VRECPSQ_V_I]], <2 x double> [[VRECPSQ_V1_I]]) #4
14034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPSQ_V3_I:%.*]] = bitcast <2 x double> [[VRECPSQ_V2_I]] to <16 x i8>
14044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRECPSQ_V3_I]] to <2 x double>
14054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP2]]
1406b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vrecpsq_f64(float64x2_t v1, float64x2_t v2) {
1407b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrecpsq_f64(v1, v2);
1408b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1409b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
14104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrsqrts_f32(<2 x float> %v1, <2 x float> %v2) #0 {
14114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
14124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
14134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
14144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
14154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.frsqrts.v2f32(<2 x float> [[VRSQRTS_V_I]], <2 x float> [[VRSQRTS_V1_I]]) #4
14164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V3_I:%.*]] = bitcast <2 x float> [[VRSQRTS_V2_I]] to <8 x i8>
14174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSQRTS_V3_I]] to <2 x float>
14184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP2]]
1419b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vrsqrts_f32(float32x2_t v1, float32x2_t v2) {
1420b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrsqrts_f32(v1, v2);
1421b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1422b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
14234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrsqrtsq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
14244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
14254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
14264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
14274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
14284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.frsqrts.v4f32(<4 x float> [[VRSQRTSQ_V_I]], <4 x float> [[VRSQRTSQ_V1_I]]) #4
14294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V3_I:%.*]] = bitcast <4 x float> [[VRSQRTSQ_V2_I]] to <16 x i8>
14304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSQRTSQ_V3_I]] to <4 x float>
14314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP2]]
1432b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vrsqrtsq_f32(float32x4_t v1, float32x4_t v2) {
1433b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrsqrtsq_f32(v1, v2);
1434b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1435b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
14364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrsqrtsq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
14374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
14384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
14394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
14404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
14414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.frsqrts.v2f64(<2 x double> [[VRSQRTSQ_V_I]], <2 x double> [[VRSQRTSQ_V1_I]]) #4
14424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSQ_V3_I:%.*]] = bitcast <2 x double> [[VRSQRTSQ_V2_I]] to <16 x i8>
14434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSQRTSQ_V3_I]] to <2 x double>
14444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP2]]
1445b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vrsqrtsq_f64(float64x2_t v1, float64x2_t v2) {
1446b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrsqrtsq_f64(v1, v2);
1447b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1448b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
14494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcage_f32(<2 x float> %v1, <2 x float> %v2) #0 {
14504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
14514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
14524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
14534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGE_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
14544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGE_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.facge.v2i32.v2f32(<2 x float> [[VCAGE_V_I]], <2 x float> [[VCAGE_V1_I]]) #4
14554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCAGE_V2_I]]
1456b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcage_f32(float32x2_t v1, float32x2_t v2) {
1457b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcage_f32(v1, v2);
1458b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1459b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
14604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcage_f64(<1 x double> %a, <1 x double> %b) #0 {
14614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
14624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
14634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
14644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGE_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
14654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGE_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.facge.v1i64.v1f64(<1 x double> [[VCAGE_V_I]], <1 x double> [[VCAGE_V1_I]]) #4
14664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCAGE_V2_I]]
1467612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcage_f64(float64x1_t a, float64x1_t b) {
1468612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcage_f64(a, b);
1469612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
1470612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
14714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcageq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
14724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
14734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
14744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
14754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGEQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
14764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGEQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.facge.v4i32.v4f32(<4 x float> [[VCAGEQ_V_I]], <4 x float> [[VCAGEQ_V1_I]]) #4
14774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCAGEQ_V2_I]]
1478b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcageq_f32(float32x4_t v1, float32x4_t v2) {
1479b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcageq_f32(v1, v2);
1480b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1481b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
14824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcageq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
14834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
14844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
14854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
14864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGEQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
14874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGEQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.facge.v2i64.v2f64(<2 x double> [[VCAGEQ_V_I]], <2 x double> [[VCAGEQ_V1_I]]) #4
14884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCAGEQ_V2_I]]
1489b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcageq_f64(float64x2_t v1, float64x2_t v2) {
1490b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcageq_f64(v1, v2);
1491b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1492b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
14934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcagt_f32(<2 x float> %v1, <2 x float> %v2) #0 {
14944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
14954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
14964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGT_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
14974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGT_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
14984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGT_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.facgt.v2i32.v2f32(<2 x float> [[VCAGT_V_I]], <2 x float> [[VCAGT_V1_I]]) #4
14994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCAGT_V2_I]]
1500b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcagt_f32(float32x2_t v1, float32x2_t v2) {
1501b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcagt_f32(v1, v2);
1502b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1503b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
15044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcagt_f64(<1 x double> %a, <1 x double> %b) #0 {
15054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
15064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
15074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGT_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
15084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGT_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
15094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGT_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.facgt.v1i64.v1f64(<1 x double> [[VCAGT_V_I]], <1 x double> [[VCAGT_V1_I]]) #4
15104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCAGT_V2_I]]
1511612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcagt_f64(float64x1_t a, float64x1_t b) {
1512612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcagt_f64(a, b);
1513612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
1514612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
15154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcagtq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
15164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
15174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
15184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
15194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
15204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.facgt.v4i32.v4f32(<4 x float> [[VCAGTQ_V_I]], <4 x float> [[VCAGTQ_V1_I]]) #4
15214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCAGTQ_V2_I]]
1522b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcagtq_f32(float32x4_t v1, float32x4_t v2) {
1523b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcagtq_f32(v1, v2);
1524b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1525b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
15264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcagtq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
15274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
15284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
15294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
15304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
15314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.facgt.v2i64.v2f64(<2 x double> [[VCAGTQ_V_I]], <2 x double> [[VCAGTQ_V1_I]]) #4
15324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCAGTQ_V2_I]]
1533b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcagtq_f64(float64x2_t v1, float64x2_t v2) {
1534b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcagtq_f64(v1, v2);
1535b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1536b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
15374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcale_f32(<2 x float> %v1, <2 x float> %v2) #0 {
15384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
15394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
15404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALE_V_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
15414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALE_V1_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
15424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALE_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.facge.v2i32.v2f32(<2 x float> [[VCALE_V_I]], <2 x float> [[VCALE_V1_I]]) #4
15434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCALE_V2_I]]
1544b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcale_f32(float32x2_t v1, float32x2_t v2) {
1545b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcale_f32(v1, v2);
1546612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  // Using registers other than v0, v1 are possible, but would be odd.
1547b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1548b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
15494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcale_f64(<1 x double> %a, <1 x double> %b) #0 {
15504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
15514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
15524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALE_V_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
15534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALE_V1_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
15544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALE_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.facge.v1i64.v1f64(<1 x double> [[VCALE_V_I]], <1 x double> [[VCALE_V1_I]]) #4
15554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCALE_V2_I]]
1556612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcale_f64(float64x1_t a, float64x1_t b) {
1557612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcale_f64(a, b);
1558612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
1559612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
15604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcaleq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
15614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
15624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
15634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
15644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALEQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
15654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALEQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.facge.v4i32.v4f32(<4 x float> [[VCALEQ_V_I]], <4 x float> [[VCALEQ_V1_I]]) #4
15664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCALEQ_V2_I]]
1567b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcaleq_f32(float32x4_t v1, float32x4_t v2) {
1568b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcaleq_f32(v1, v2);
1569b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  // Using registers other than v0, v1 are possible, but would be odd.
1570b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1571b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
15724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcaleq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
15734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
15744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
15754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
15764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALEQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
15774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALEQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.facge.v2i64.v2f64(<2 x double> [[VCALEQ_V_I]], <2 x double> [[VCALEQ_V1_I]]) #4
15784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCALEQ_V2_I]]
1579b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcaleq_f64(float64x2_t v1, float64x2_t v2) {
1580b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcaleq_f64(v1, v2);
1581b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  // Using registers other than v0, v1 are possible, but would be odd.
1582b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1583b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
15844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcalt_f32(<2 x float> %v1, <2 x float> %v2) #0 {
15854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %v1 to <8 x i8>
15864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %v2 to <8 x i8>
15874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALT_V_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
15884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALT_V1_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
15894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALT_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.facgt.v2i32.v2f32(<2 x float> [[VCALT_V_I]], <2 x float> [[VCALT_V1_I]]) #4
15904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCALT_V2_I]]
1591b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcalt_f32(float32x2_t v1, float32x2_t v2) {
1592b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcalt_f32(v1, v2);
1593b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  // Using registers other than v0, v1 are possible, but would be odd.
1594b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1595b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
15964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcalt_f64(<1 x double> %a, <1 x double> %b) #0 {
15974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
15984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
15994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALT_V_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
16004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALT_V1_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
16014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALT_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.facgt.v1i64.v1f64(<1 x double> [[VCALT_V_I]], <1 x double> [[VCALT_V1_I]]) #4
16024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCALT_V2_I]]
1603612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcalt_f64(float64x1_t a, float64x1_t b) {
1604612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcalt_f64(a, b);
1605612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
1606612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
16074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcaltq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
16084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %v1 to <16 x i8>
16094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %v2 to <16 x i8>
16104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTQ_V_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
16114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
16124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.facgt.v4i32.v4f32(<4 x float> [[VCALTQ_V_I]], <4 x float> [[VCALTQ_V1_I]]) #4
16134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCALTQ_V2_I]]
1614b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcaltq_f32(float32x4_t v1, float32x4_t v2) {
1615b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcaltq_f32(v1, v2);
1616b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  // Using registers other than v0, v1 are possible, but would be odd.
1617b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1618b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
16194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcaltq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
16204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %v1 to <16 x i8>
16214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %v2 to <16 x i8>
16224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTQ_V_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
16234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
16244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.facgt.v2i64.v2f64(<2 x double> [[VCALTQ_V_I]], <2 x double> [[VCALTQ_V1_I]]) #4
16254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCALTQ_V2_I]]
1626b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcaltq_f64(float64x2_t v1, float64x2_t v2) {
1627b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcaltq_f64(v1, v2);
1628b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  // Using registers other than v0, v1 are possible, but would be odd.
1629b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1630b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
16314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtst_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
16324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and <8 x i8> %v1, %v2
16334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne <8 x i8> [[TMP0]], zeroinitializer
16344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <8 x i1> [[TMP1]] to <8 x i8>
16354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VTST_I]]
1636b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vtst_s8(int8x8_t v1, int8x8_t v2) {
1637b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtst_s8(v1, v2);
1638b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1639b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
16404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtst_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
16414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
16424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
16434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
16444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
16454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <4 x i16> [[TMP2]], [[TMP3]]
16464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <4 x i16> [[TMP4]], zeroinitializer
16474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <4 x i1> [[TMP5]] to <4 x i16>
16484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VTST_I]]
1649b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vtst_s16(int16x4_t v1, int16x4_t v2) {
1650b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtst_s16(v1, v2);
1651b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1652b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
16534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vtst_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
16544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
16554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
16564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
16574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
16584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <2 x i32> [[TMP2]], [[TMP3]]
16594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <2 x i32> [[TMP4]], zeroinitializer
16604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <2 x i1> [[TMP5]] to <2 x i32>
16614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VTST_I]]
1662b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vtst_s32(int32x2_t v1, int32x2_t v2) {
1663b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtst_s32(v1, v2);
1664b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1665b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
16664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtst_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
16674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and <8 x i8> %v1, %v2
16684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne <8 x i8> [[TMP0]], zeroinitializer
16694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <8 x i1> [[TMP1]] to <8 x i8>
16704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VTST_I]]
1671b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vtst_u8(uint8x8_t v1, uint8x8_t v2) {
1672b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtst_u8(v1, v2);
1673b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1674b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
16754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtst_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
16764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
16774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
16784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
16794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
16804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <4 x i16> [[TMP2]], [[TMP3]]
16814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <4 x i16> [[TMP4]], zeroinitializer
16824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <4 x i1> [[TMP5]] to <4 x i16>
16834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VTST_I]]
1684b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vtst_u16(uint16x4_t v1, uint16x4_t v2) {
1685b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtst_u16(v1, v2);
1686b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1687b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
16884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vtst_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
16894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
16904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
16914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
16924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
16934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <2 x i32> [[TMP2]], [[TMP3]]
16944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <2 x i32> [[TMP4]], zeroinitializer
16954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <2 x i1> [[TMP5]] to <2 x i32>
16964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VTST_I]]
1697b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vtst_u32(uint32x2_t v1, uint32x2_t v2) {
1698b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtst_u32(v1, v2);
1699b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1700b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtstq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
17024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and <16 x i8> %v1, %v2
17034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne <16 x i8> [[TMP0]], zeroinitializer
17044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <16 x i1> [[TMP1]] to <16 x i8>
17054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VTST_I]]
1706b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vtstq_s8(int8x16_t v1, int8x16_t v2) {
1707b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_s8(v1, v2);
1708b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1709b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtstq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
17114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
17124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
17134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
17144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
17154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <8 x i16> [[TMP2]], [[TMP3]]
17164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <8 x i16> [[TMP4]], zeroinitializer
17174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <8 x i1> [[TMP5]] to <8 x i16>
17184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VTST_I]]
1719b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vtstq_s16(int16x8_t v1, int16x8_t v2) {
1720b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_s16(v1, v2);
1721b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1722b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vtstq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
17244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
17254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
17264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
17274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
17284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <4 x i32> [[TMP2]], [[TMP3]]
17294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <4 x i32> [[TMP4]], zeroinitializer
17304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <4 x i1> [[TMP5]] to <4 x i32>
17314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VTST_I]]
1732b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vtstq_s32(int32x4_t v1, int32x4_t v2) {
1733b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_s32(v1, v2);
1734b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1735b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtstq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
17374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and <16 x i8> %v1, %v2
17384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne <16 x i8> [[TMP0]], zeroinitializer
17394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <16 x i1> [[TMP1]] to <16 x i8>
17404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VTST_I]]
1741b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vtstq_u8(uint8x16_t v1, uint8x16_t v2) {
1742b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_u8(v1, v2);
1743b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1744b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtstq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
17464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
17474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
17484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
17494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
17504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <8 x i16> [[TMP2]], [[TMP3]]
17514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <8 x i16> [[TMP4]], zeroinitializer
17524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <8 x i1> [[TMP5]] to <8 x i16>
17534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VTST_I]]
1754b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vtstq_u16(uint16x8_t v1, uint16x8_t v2) {
1755b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_u16(v1, v2);
1756b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1757b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vtstq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
17594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
17604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
17614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
17624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
17634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <4 x i32> [[TMP2]], [[TMP3]]
17644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <4 x i32> [[TMP4]], zeroinitializer
17654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <4 x i1> [[TMP5]] to <4 x i32>
17664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VTST_I]]
1767b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vtstq_u32(uint32x4_t v1, uint32x4_t v2) {
1768b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_u32(v1, v2);
1769b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1770b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vtstq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
17724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %v1 to <16 x i8>
17734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %v2 to <16 x i8>
17744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
17754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
17764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <2 x i64> [[TMP2]], [[TMP3]]
17774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <2 x i64> [[TMP4]], zeroinitializer
17784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <2 x i1> [[TMP5]] to <2 x i64>
17794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VTST_I]]
1780b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vtstq_s64(int64x2_t v1, int64x2_t v2) {
1781b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_s64(v1, v2);
1782b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1783b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vtstq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
17854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %v1 to <16 x i8>
17864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %v2 to <16 x i8>
17874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
17884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
17894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <2 x i64> [[TMP2]], [[TMP3]]
17904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <2 x i64> [[TMP4]], zeroinitializer
17914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <2 x i1> [[TMP5]] to <2 x i64>
17924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VTST_I]]
1793b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vtstq_u64(uint64x2_t v1, uint64x2_t v2) {
1794b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_u64(v1, v2);
1795b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1796b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
17974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vtst_p8(<8 x i8> %v1, <8 x i8> %v2) #0 {
17984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and <8 x i8> %v1, %v2
17994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne <8 x i8> [[TMP0]], zeroinitializer
18004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <8 x i1> [[TMP1]] to <8 x i8>
18014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VTST_I]]
1802b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vtst_p8(poly8x8_t v1, poly8x8_t v2) {
1803b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtst_p8(v1, v2);
1804b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1805b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
18064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vtst_p16(<4 x i16> %v1, <4 x i16> %v2) #0 {
18074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
18084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
18094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
18104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
18114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <4 x i16> [[TMP2]], [[TMP3]]
18124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <4 x i16> [[TMP4]], zeroinitializer
18134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <4 x i1> [[TMP5]] to <4 x i16>
18144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VTST_I]]
181543a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuvilleuint16x4_t test_vtst_p16(poly16x4_t v1, poly16x4_t v2) {
181643a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuville  return vtst_p16(v1, v2);
181743a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuville}
181843a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuville
18194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vtstq_p8(<16 x i8> %v1, <16 x i8> %v2) #0 {
18204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and <16 x i8> %v1, %v2
18214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne <16 x i8> [[TMP0]], zeroinitializer
18224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <16 x i1> [[TMP1]] to <16 x i8>
18234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VTST_I]]
1824b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vtstq_p8(poly8x16_t v1, poly8x16_t v2) {
1825b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vtstq_p8(v1, v2);
1826b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1827b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
18284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vtstq_p16(<8 x i16> %v1, <8 x i16> %v2) #0 {
18294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
18304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
18314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
18324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
18334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <8 x i16> [[TMP2]], [[TMP3]]
18344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <8 x i16> [[TMP4]], zeroinitializer
18354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <8 x i1> [[TMP5]] to <8 x i16>
18364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VTST_I]]
183743a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuvilleuint16x8_t test_vtstq_p16(poly16x8_t v1, poly16x8_t v2) {
183843a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuville  return vtstq_p16(v1, v2);
183943a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuville}
184043a8d85c2b25a8e21f99767680559316966cb57bAmaury de la Vieuville
18414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vtst_s64(<1 x i64> %a, <1 x i64> %b) #0 {
18424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
18434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
18444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
18454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
18464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <1 x i64> [[TMP2]], [[TMP3]]
18474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <1 x i64> [[TMP4]], zeroinitializer
18484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <1 x i1> [[TMP5]] to <1 x i64>
18494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VTST_I]]
1850651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vtst_s64(int64x1_t a, int64x1_t b) {
1851651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vtst_s64(a, b);
1852651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
1853651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
18544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vtst_u64(<1 x i64> %a, <1 x i64> %b) #0 {
18554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
18564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
18574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
18584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
18594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = and <1 x i64> [[TMP2]], [[TMP3]]
18604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = icmp ne <1 x i64> [[TMP4]], zeroinitializer
18614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTST_I:%.*]] = sext <1 x i1> [[TMP5]] to <1 x i64>
18624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VTST_I]]
1863651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vtst_u64(uint64x1_t a, uint64x1_t b) {
1864651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vtst_u64(a, b);
1865651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
1866b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
18674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vceq_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
18684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <8 x i8> %v1, %v2
18694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
18704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
1871b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vceq_s8(int8x8_t v1, int8x8_t v2) {
1872b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_s8(v1, v2);
1873b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1874b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
18754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vceq_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
18764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <4 x i16> %v1, %v2
18774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
18784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
1879b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vceq_s16(int16x4_t v1, int16x4_t v2) {
1880b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_s16(v1, v2);
1881b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1882b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
18834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vceq_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
18844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <2 x i32> %v1, %v2
18854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
18864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
1887b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vceq_s32(int32x2_t v1, int32x2_t v2) {
1888b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_s32(v1, v2);
1889b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1890b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
18914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vceq_s64(<1 x i64> %a, <1 x i64> %b) #0 {
18924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <1 x i64> %a, %b
18934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
18944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
1895612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vceq_s64(int64x1_t a, int64x1_t b) {
1896612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vceq_s64(a, b);
1897612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
1898612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
18994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vceq_u64(<1 x i64> %a, <1 x i64> %b) #0 {
19004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <1 x i64> %a, %b
19014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
19024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
1903612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vceq_u64(uint64x1_t a, uint64x1_t b) {
1904612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vceq_u64(a, b);
1905612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
1906612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
19074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vceq_f32(<2 x float> %v1, <2 x float> %v2) #0 {
19084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oeq <2 x float> %v1, %v2
19094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
19104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
1911b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vceq_f32(float32x2_t v1, float32x2_t v2) {
1912b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_f32(v1, v2);
1913b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1914b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vceq_f64(<1 x double> %a, <1 x double> %b) #0 {
19164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oeq <1 x double> %a, %b
19174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
19184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
1919612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vceq_f64(float64x1_t a, float64x1_t b) {
1920612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vceq_f64(a, b);
1921612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
1922612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
19234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vceq_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
19244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <8 x i8> %v1, %v2
19254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
19264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
1927b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vceq_u8(uint8x8_t v1, uint8x8_t v2) {
1928b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_u8(v1, v2);
1929b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1930b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vceq_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
19324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <4 x i16> %v1, %v2
19334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
19344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
1935b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vceq_u16(uint16x4_t v1, uint16x4_t v2) {
1936b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_u16(v1, v2);
1937b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1938b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vceq_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
19404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <2 x i32> %v1, %v2
19414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
19424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
1943b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vceq_u32(uint32x2_t v1, uint32x2_t v2) {
1944b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_u32(v1, v2);
1945b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1946b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vceq_p8(<8 x i8> %v1, <8 x i8> %v2) #0 {
19484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <8 x i8> %v1, %v2
19494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
19504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
1951b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vceq_p8(poly8x8_t v1, poly8x8_t v2) {
1952b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceq_p8(v1, v2);
1953b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1954b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vceqq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
19564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <16 x i8> %v1, %v2
19574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
19584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
1959b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vceqq_s8(int8x16_t v1, int8x16_t v2) {
1960b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_s8(v1, v2);
1961b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1962b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vceqq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
19644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <8 x i16> %v1, %v2
19654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
19664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
1967b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vceqq_s16(int16x8_t v1, int16x8_t v2) {
1968b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_s16(v1, v2);
1969b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1970b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vceqq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
19724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <4 x i32> %v1, %v2
19734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
19744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
1975b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vceqq_s32(int32x4_t v1, int32x4_t v2) {
1976b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_s32(v1, v2);
1977b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1978b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vceqq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
19804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oeq <4 x float> %v1, %v2
19814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
19824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
1983b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vceqq_f32(float32x4_t v1, float32x4_t v2) {
1984b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_f32(v1, v2);
1985b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1986b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vceqq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
19884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <16 x i8> %v1, %v2
19894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
19904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
1991b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vceqq_u8(uint8x16_t v1, uint8x16_t v2) {
1992b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_u8(v1, v2);
1993b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
1994b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
19954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vceqq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
19964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <8 x i16> %v1, %v2
19974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
19984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
1999b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vceqq_u16(uint16x8_t v1, uint16x8_t v2) {
2000b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_u16(v1, v2);
2001b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2002b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vceqq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
20044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <4 x i32> %v1, %v2
20054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
20064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2007b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vceqq_u32(uint32x4_t v1, uint32x4_t v2) {
2008b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_u32(v1, v2);
2009b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2010b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vceqq_p8(<16 x i8> %v1, <16 x i8> %v2) #0 {
20124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <16 x i8> %v1, %v2
20134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
20144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2015b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vceqq_p8(poly8x16_t v1, poly8x16_t v2) {
2016b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_p8(v1, v2);
2017b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2018b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2019b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vceqq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
20214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <2 x i64> %v1, %v2
20224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
20234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2024b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vceqq_s64(int64x2_t v1, int64x2_t v2) {
2025b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_s64(v1, v2);
2026b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2027b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vceqq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
20294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp eq <2 x i64> %v1, %v2
20304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
20314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2032b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vceqq_u64(uint64x2_t v1, uint64x2_t v2) {
2033b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_u64(v1, v2);
2034b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2035b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vceqq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
20374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oeq <2 x double> %v1, %v2
20384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
20394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2040b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vceqq_f64(float64x2_t v1, float64x2_t v2) {
2041b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vceqq_f64(v1, v2);
2042b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
20434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcge_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
20444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <8 x i8> %v1, %v2
20454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
20464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2047b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vcge_s8(int8x8_t v1, int8x8_t v2) {
2048b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcge_s8(v1, v2);
2049b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2050b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcge_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
20524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <4 x i16> %v1, %v2
20534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
20544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2055b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vcge_s16(int16x4_t v1, int16x4_t v2) {
2056b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcge_s16(v1, v2);
2057b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2058b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcge_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
20604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <2 x i32> %v1, %v2
20614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
20624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2063b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcge_s32(int32x2_t v1, int32x2_t v2) {
2064b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcge_s32(v1, v2);
2065b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2066b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcge_s64(<1 x i64> %a, <1 x i64> %b) #0 {
20684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <1 x i64> %a, %b
20694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
20704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2071612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcge_s64(int64x1_t a, int64x1_t b) {
2072612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcge_s64(a, b);
2073612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2074612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
20754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcge_u64(<1 x i64> %a, <1 x i64> %b) #0 {
20764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <1 x i64> %a, %b
20774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
20784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2079612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcge_u64(uint64x1_t a, uint64x1_t b) {
2080612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcge_u64(a, b);
2081612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2082612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
20834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcge_f32(<2 x float> %v1, <2 x float> %v2) #0 {
20844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oge <2 x float> %v1, %v2
20854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
20864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2087b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcge_f32(float32x2_t v1, float32x2_t v2) {
2088b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcge_f32(v1, v2);
2089b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2090b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
20914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcge_f64(<1 x double> %a, <1 x double> %b) #0 {
20924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oge <1 x double> %a, %b
20934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
20944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2095612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcge_f64(float64x1_t a, float64x1_t b) {
2096612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcge_f64(a, b);
2097612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2098612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
20994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcge_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
21004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <8 x i8> %v1, %v2
21014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
21024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2103b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vcge_u8(uint8x8_t v1, uint8x8_t v2) {
2104b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcge_u8(v1, v2);
2105b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2106b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcge_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
21084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <4 x i16> %v1, %v2
21094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
21104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2111b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vcge_u16(uint16x4_t v1, uint16x4_t v2) {
2112b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcge_u16(v1, v2);
2113b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2114b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcge_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
21164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <2 x i32> %v1, %v2
21174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
21184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2119b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcge_u32(uint32x2_t v1, uint32x2_t v2) {
2120b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcge_u32(v1, v2);
2121b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2122b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcgeq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
21244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <16 x i8> %v1, %v2
21254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
21264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2127b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcgeq_s8(int8x16_t v1, int8x16_t v2) {
2128b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_s8(v1, v2);
2129b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2130b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcgeq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
21324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <8 x i16> %v1, %v2
21334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
21344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2135b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcgeq_s16(int16x8_t v1, int16x8_t v2) {
2136b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_s16(v1, v2);
2137b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2138b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgeq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
21404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <4 x i32> %v1, %v2
21414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
21424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2143b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcgeq_s32(int32x4_t v1, int32x4_t v2) {
2144b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_s32(v1, v2);
2145b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2146b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgeq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
21484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oge <4 x float> %v1, %v2
21494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
21504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2151b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcgeq_f32(float32x4_t v1, float32x4_t v2) {
2152b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_f32(v1, v2);
2153b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2154b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcgeq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
21564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <16 x i8> %v1, %v2
21574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
21584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2159b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcgeq_u8(uint8x16_t v1, uint8x16_t v2) {
2160b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_u8(v1, v2);
2161b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2162b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcgeq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
21644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <8 x i16> %v1, %v2
21654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
21664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2167b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcgeq_u16(uint16x8_t v1, uint16x8_t v2) {
2168b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_u16(v1, v2);
2169b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2170b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgeq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
21724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <4 x i32> %v1, %v2
21734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
21744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2175b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcgeq_u32(uint32x4_t v1, uint32x4_t v2) {
2176b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_u32(v1, v2);
2177b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2178b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgeq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
21804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sge <2 x i64> %v1, %v2
21814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
21824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2183b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcgeq_s64(int64x2_t v1, int64x2_t v2) {
2184b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_s64(v1, v2);
2185b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2186b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgeq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
21884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp uge <2 x i64> %v1, %v2
21894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
21904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2191b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcgeq_u64(uint64x2_t v1, uint64x2_t v2) {
2192b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_u64(v1, v2);
2193b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2194b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
21954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgeq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
21964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp oge <2 x double> %v1, %v2
21974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
21984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2199b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcgeq_f64(float64x2_t v1, float64x2_t v2) {
2200b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgeq_f64(v1, v2);
2201b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2202b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2203b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover// Notes about vcle:
2204b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover// LE condition predicate implemented as GE, so check reversed operands.
2205b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover// Using registers other than v0, v1 are possible, but would be odd.
22064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcle_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
22074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <8 x i8> %v1, %v2
22084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
22094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2210b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vcle_s8(int8x8_t v1, int8x8_t v2) {
2211b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcle_s8(v1, v2);
2212b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2213b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcle_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
22154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <4 x i16> %v1, %v2
22164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
22174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2218b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vcle_s16(int16x4_t v1, int16x4_t v2) {
2219b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcle_s16(v1, v2);
2220b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2221b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcle_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
22234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <2 x i32> %v1, %v2
22244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
22254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2226b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcle_s32(int32x2_t v1, int32x2_t v2) {
2227b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcle_s32(v1, v2);
2228b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2229b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcle_s64(<1 x i64> %a, <1 x i64> %b) #0 {
22314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <1 x i64> %a, %b
22324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
22334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2234612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcle_s64(int64x1_t a, int64x1_t b) {
2235612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcle_s64(a, b);
2236612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2237612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
22384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcle_u64(<1 x i64> %a, <1 x i64> %b) #0 {
22394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <1 x i64> %a, %b
22404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
22414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2242612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcle_u64(uint64x1_t a, uint64x1_t b) {
2243612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcle_u64(a, b);
2244612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2245612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
22464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcle_f32(<2 x float> %v1, <2 x float> %v2) #0 {
22474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ole <2 x float> %v1, %v2
22484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
22494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2250b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcle_f32(float32x2_t v1, float32x2_t v2) {
2251b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcle_f32(v1, v2);
2252b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2253b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcle_f64(<1 x double> %a, <1 x double> %b) #0 {
22554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ole <1 x double> %a, %b
22564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
22574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2258612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcle_f64(float64x1_t a, float64x1_t b) {
2259612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcle_f64(a, b);
2260612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2261612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
22624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcle_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
22634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <8 x i8> %v1, %v2
22644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
22654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2266b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vcle_u8(uint8x8_t v1, uint8x8_t v2) {
2267b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcle_u8(v1, v2);
2268b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2269b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcle_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
22714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <4 x i16> %v1, %v2
22724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
22734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2274b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vcle_u16(uint16x4_t v1, uint16x4_t v2) {
2275b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcle_u16(v1, v2);
2276b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2277b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcle_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
22794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <2 x i32> %v1, %v2
22804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
22814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2282b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcle_u32(uint32x2_t v1, uint32x2_t v2) {
2283b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcle_u32(v1, v2);
2284b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2285b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcleq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
22874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <16 x i8> %v1, %v2
22884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
22894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2290b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcleq_s8(int8x16_t v1, int8x16_t v2) {
2291b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_s8(v1, v2);
2292b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2293b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
22944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcleq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
22954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <8 x i16> %v1, %v2
22964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
22974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2298b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcleq_s16(int16x8_t v1, int16x8_t v2) {
2299b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_s16(v1, v2);
2300b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2301b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcleq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
23034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <4 x i32> %v1, %v2
23044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
23054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2306b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcleq_s32(int32x4_t v1, int32x4_t v2) {
2307b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_s32(v1, v2);
2308b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2309b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcleq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
23114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ole <4 x float> %v1, %v2
23124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
23134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2314b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcleq_f32(float32x4_t v1, float32x4_t v2) {
2315b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_f32(v1, v2);
2316b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2317b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcleq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
23194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <16 x i8> %v1, %v2
23204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
23214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2322b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcleq_u8(uint8x16_t v1, uint8x16_t v2) {
2323b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_u8(v1, v2);
2324b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2325b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcleq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
23274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <8 x i16> %v1, %v2
23284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
23294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2330b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcleq_u16(uint16x8_t v1, uint16x8_t v2) {
2331b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_u16(v1, v2);
2332b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2333b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcleq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
23354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <4 x i32> %v1, %v2
23364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
23374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2338b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcleq_u32(uint32x4_t v1, uint32x4_t v2) {
2339b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_u32(v1, v2);
2340b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2341b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcleq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
23434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sle <2 x i64> %v1, %v2
23444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
23454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2346b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcleq_s64(int64x2_t v1, int64x2_t v2) {
2347b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_s64(v1, v2);
2348b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2349b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcleq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
23514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ule <2 x i64> %v1, %v2
23524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
23534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2354b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcleq_u64(uint64x2_t v1, uint64x2_t v2) {
2355b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_u64(v1, v2);
2356b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2357b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcleq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
23594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ole <2 x double> %v1, %v2
23604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
23614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2362b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcleq_f64(float64x2_t v1, float64x2_t v2) {
2363b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcleq_f64(v1, v2);
2364b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2365b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2366b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcgt_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
23684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <8 x i8> %v1, %v2
23694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
23704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2371b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vcgt_s8(int8x8_t v1, int8x8_t v2) {
2372b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgt_s8(v1, v2);
2373b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2374b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcgt_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
23764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <4 x i16> %v1, %v2
23774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
23784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2379b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vcgt_s16(int16x4_t v1, int16x4_t v2) {
2380b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgt_s16(v1, v2);
2381b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2382b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcgt_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
23844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <2 x i32> %v1, %v2
23854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
23864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2387b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcgt_s32(int32x2_t v1, int32x2_t v2) {
2388b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgt_s32(v1, v2);
2389b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2390b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
23914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcgt_s64(<1 x i64> %a, <1 x i64> %b) #0 {
23924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <1 x i64> %a, %b
23934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
23944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2395612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcgt_s64(int64x1_t a, int64x1_t b) {
2396612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcgt_s64(a, b);
2397612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2398612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
23994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcgt_u64(<1 x i64> %a, <1 x i64> %b) #0 {
24004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <1 x i64> %a, %b
24014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
24024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2403612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcgt_u64(uint64x1_t a, uint64x1_t b) {
2404612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcgt_u64(a, b);
2405612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2406612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
24074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcgt_f32(<2 x float> %v1, <2 x float> %v2) #0 {
24084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ogt <2 x float> %v1, %v2
24094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
24104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2411b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcgt_f32(float32x2_t v1, float32x2_t v2) {
2412b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgt_f32(v1, v2);
2413b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2414b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcgt_f64(<1 x double> %a, <1 x double> %b) #0 {
24164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ogt <1 x double> %a, %b
24174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
24184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2419612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcgt_f64(float64x1_t a, float64x1_t b) {
2420612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcgt_f64(a, b);
2421612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2422612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
24234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcgt_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
24244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <8 x i8> %v1, %v2
24254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
24264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2427b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vcgt_u8(uint8x8_t v1, uint8x8_t v2) {
2428b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgt_u8(v1, v2);
2429b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2430b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcgt_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
24324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <4 x i16> %v1, %v2
24334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
24344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2435b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vcgt_u16(uint16x4_t v1, uint16x4_t v2) {
2436b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgt_u16(v1, v2);
2437b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2438b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcgt_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
24404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <2 x i32> %v1, %v2
24414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
24424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2443b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vcgt_u32(uint32x2_t v1, uint32x2_t v2) {
2444b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgt_u32(v1, v2);
2445b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2446b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcgtq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
24484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <16 x i8> %v1, %v2
24494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
24504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2451b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcgtq_s8(int8x16_t v1, int8x16_t v2) {
2452b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_s8(v1, v2);
2453b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2454b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcgtq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
24564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <8 x i16> %v1, %v2
24574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
24584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2459b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcgtq_s16(int16x8_t v1, int16x8_t v2) {
2460b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_s16(v1, v2);
2461b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2462b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgtq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
24644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <4 x i32> %v1, %v2
24654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
24664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2467b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcgtq_s32(int32x4_t v1, int32x4_t v2) {
2468b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_s32(v1, v2);
2469b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2470b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgtq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
24724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ogt <4 x float> %v1, %v2
24734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
24744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2475b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcgtq_f32(float32x4_t v1, float32x4_t v2) {
2476b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_f32(v1, v2);
2477b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2478b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcgtq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
24804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <16 x i8> %v1, %v2
24814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
24824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2483b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcgtq_u8(uint8x16_t v1, uint8x16_t v2) {
2484b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_u8(v1, v2);
2485b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2486b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcgtq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
24884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <8 x i16> %v1, %v2
24894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
24904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2491b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcgtq_u16(uint16x8_t v1, uint16x8_t v2) {
2492b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_u16(v1, v2);
2493b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2494b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
24954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgtq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
24964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <4 x i32> %v1, %v2
24974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
24984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2499b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcgtq_u32(uint32x4_t v1, uint32x4_t v2) {
2500b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_u32(v1, v2);
2501b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2502b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgtq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
25044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp sgt <2 x i64> %v1, %v2
25054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
25064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2507b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcgtq_s64(int64x2_t v1, int64x2_t v2) {
2508b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_s64(v1, v2);
2509b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2510b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgtq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
25124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ugt <2 x i64> %v1, %v2
25134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
25144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2515b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcgtq_u64(uint64x2_t v1, uint64x2_t v2) {
2516b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_u64(v1, v2);
2517b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2518b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgtq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
25204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp ogt <2 x double> %v1, %v2
25214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
25224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2523b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcgtq_f64(float64x2_t v1, float64x2_t v2) {
2524b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcgtq_f64(v1, v2);
2525b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2526b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2527b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2528b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover// Notes about vclt:
2529b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover// LT condition predicate implemented as GT, so check reversed operands.
2530b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover// Using registers other than v0, v1 are possible, but would be odd.
2531b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vclt_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
25334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <8 x i8> %v1, %v2
25344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
25354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2536b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vclt_s8(int8x8_t v1, int8x8_t v2) {
2537b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vclt_s8(v1, v2);
2538b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2539b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vclt_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
25414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <4 x i16> %v1, %v2
25424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
25434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2544b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vclt_s16(int16x4_t v1, int16x4_t v2) {
2545b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vclt_s16(v1, v2);
2546b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2547b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vclt_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
25494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <2 x i32> %v1, %v2
25504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
25514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2552b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vclt_s32(int32x2_t v1, int32x2_t v2) {
2553b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vclt_s32(v1, v2);
2554b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2555b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vclt_s64(<1 x i64> %a, <1 x i64> %b) #0 {
25574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <1 x i64> %a, %b
25584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
25594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2560612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vclt_s64(int64x1_t a, int64x1_t b) {
2561612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vclt_s64(a, b);
2562612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2563612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
25644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vclt_u64(<1 x i64> %a, <1 x i64> %b) #0 {
25654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <1 x i64> %a, %b
25664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
25674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2568612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vclt_u64(uint64x1_t a, uint64x1_t b) {
2569612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vclt_u64(a, b);
2570612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2571612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
25724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vclt_f32(<2 x float> %v1, <2 x float> %v2) #0 {
25734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp olt <2 x float> %v1, %v2
25744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
25754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2576b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vclt_f32(float32x2_t v1, float32x2_t v2) {
2577b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vclt_f32(v1, v2);
2578b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2579b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vclt_f64(<1 x double> %a, <1 x double> %b) #0 {
25814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp olt <1 x double> %a, %b
25824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <1 x i1> [[CMP_I]] to <1 x i64>
25834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SEXT_I]]
2584612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vclt_f64(float64x1_t a, float64x1_t b) {
2585612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vclt_f64(a, b);
2586612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
2587612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
25884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vclt_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
25894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <8 x i8> %v1, %v2
25904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i8>
25914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SEXT_I]]
2592b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vclt_u8(uint8x8_t v1, uint8x8_t v2) {
2593b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vclt_u8(v1, v2);
2594b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2595b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
25964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vclt_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
25974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <4 x i16> %v1, %v2
25984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i16>
25994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SEXT_I]]
2600b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vclt_u16(uint16x4_t v1, uint16x4_t v2) {
2601b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vclt_u16(v1, v2);
2602b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2603b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vclt_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
26054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <2 x i32> %v1, %v2
26064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i32>
26074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SEXT_I]]
2608b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vclt_u32(uint32x2_t v1, uint32x2_t v2) {
2609b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vclt_u32(v1, v2);
2610b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2611b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcltq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
26134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <16 x i8> %v1, %v2
26144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
26154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2616b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcltq_s8(int8x16_t v1, int8x16_t v2) {
2617b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_s8(v1, v2);
2618b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2619b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcltq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
26214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <8 x i16> %v1, %v2
26224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
26234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2624b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcltq_s16(int16x8_t v1, int16x8_t v2) {
2625b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_s16(v1, v2);
2626b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2627b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcltq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
26294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <4 x i32> %v1, %v2
26304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
26314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2632b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcltq_s32(int32x4_t v1, int32x4_t v2) {
2633b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_s32(v1, v2);
2634b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2635b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcltq_f32(<4 x float> %v1, <4 x float> %v2) #0 {
26374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp olt <4 x float> %v1, %v2
26384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
26394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2640b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcltq_f32(float32x4_t v1, float32x4_t v2) {
2641b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_f32(v1, v2);
2642b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2643b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcltq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
26454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <16 x i8> %v1, %v2
26464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <16 x i1> [[CMP_I]] to <16 x i8>
26474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SEXT_I]]
2648b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vcltq_u8(uint8x16_t v1, uint8x16_t v2) {
2649b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_u8(v1, v2);
2650b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2651b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcltq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
26534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <8 x i16> %v1, %v2
26544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <8 x i1> [[CMP_I]] to <8 x i16>
26554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SEXT_I]]
2656b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vcltq_u16(uint16x8_t v1, uint16x8_t v2) {
2657b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_u16(v1, v2);
2658b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2659b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcltq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
26614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <4 x i32> %v1, %v2
26624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <4 x i1> [[CMP_I]] to <4 x i32>
26634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SEXT_I]]
2664b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vcltq_u32(uint32x4_t v1, uint32x4_t v2) {
2665b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_u32(v1, v2);
2666b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2667b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcltq_s64(<2 x i64> %v1, <2 x i64> %v2) #0 {
26694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp slt <2 x i64> %v1, %v2
26704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
26714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2672b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcltq_s64(int64x2_t v1, int64x2_t v2) {
2673b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_s64(v1, v2);
2674b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2675b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcltq_u64(<2 x i64> %v1, <2 x i64> %v2) #0 {
26774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = icmp ult <2 x i64> %v1, %v2
26784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
26794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2680b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcltq_u64(uint64x2_t v1, uint64x2_t v2) {
2681b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_u64(v1, v2);
2682b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2683b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcltq_f64(<2 x double> %v1, <2 x double> %v2) #0 {
26854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[CMP_I:%.*]] = fcmp olt <2 x double> %v1, %v2
26864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SEXT_I:%.*]] = sext <2 x i1> [[CMP_I]] to <2 x i64>
26874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SEXT_I]]
2688b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vcltq_f64(float64x2_t v1, float64x2_t v2) {
2689b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vcltq_f64(v1, v2);
2690b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2691b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2692b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
26934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vhadd_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
26944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.shadd.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
26954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VHADD_V_I]]
2696b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vhadd_s8(int8x8_t v1, int8x8_t v2) {
2697b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhadd_s8(v1, v2);
2698b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2699b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vhadd_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
27014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
27024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
27034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
27044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
27054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.shadd.v4i16(<4 x i16> [[VHADD_V_I]], <4 x i16> [[VHADD_V1_I]]) #4
27064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V3_I:%.*]] = bitcast <4 x i16> [[VHADD_V2_I]] to <8 x i8>
27074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHADD_V3_I]] to <4 x i16>
27084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
2709b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vhadd_s16(int16x4_t v1, int16x4_t v2) {
2710b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhadd_s16(v1, v2);
2711b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2712b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vhadd_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
27144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
27154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
27164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
27174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
27184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.shadd.v2i32(<2 x i32> [[VHADD_V_I]], <2 x i32> [[VHADD_V1_I]]) #4
27194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V3_I:%.*]] = bitcast <2 x i32> [[VHADD_V2_I]] to <8 x i8>
27204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHADD_V3_I]] to <2 x i32>
27214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
2722b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vhadd_s32(int32x2_t v1, int32x2_t v2) {
2723b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhadd_s32(v1, v2);
2724b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2725b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vhadd_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
27274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uhadd.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
27284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VHADD_V_I]]
2729b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vhadd_u8(uint8x8_t v1, uint8x8_t v2) {
2730b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhadd_u8(v1, v2);
2731b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2732b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vhadd_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
27344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
27354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
27364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
27374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
27384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uhadd.v4i16(<4 x i16> [[VHADD_V_I]], <4 x i16> [[VHADD_V1_I]]) #4
27394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V3_I:%.*]] = bitcast <4 x i16> [[VHADD_V2_I]] to <8 x i8>
27404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHADD_V3_I]] to <4 x i16>
27414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
2742b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vhadd_u16(uint16x4_t v1, uint16x4_t v2) {
2743b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhadd_u16(v1, v2);
2744b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2745b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vhadd_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
27474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
27484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
27494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
27504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
27514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uhadd.v2i32(<2 x i32> [[VHADD_V_I]], <2 x i32> [[VHADD_V1_I]]) #4
27524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADD_V3_I:%.*]] = bitcast <2 x i32> [[VHADD_V2_I]] to <8 x i8>
27534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHADD_V3_I]] to <2 x i32>
27544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
2755b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vhadd_u32(uint32x2_t v1, uint32x2_t v2) {
2756b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhadd_u32(v1, v2);
2757b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2758b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vhaddq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
27604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.shadd.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
27614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VHADDQ_V_I]]
2762b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vhaddq_s8(int8x16_t v1, int8x16_t v2) {
2763b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhaddq_s8(v1, v2);
2764b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2765b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vhaddq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
27674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
27684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
27694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
27704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
27714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.shadd.v8i16(<8 x i16> [[VHADDQ_V_I]], <8 x i16> [[VHADDQ_V1_I]]) #4
27724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VHADDQ_V2_I]] to <16 x i8>
27734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHADDQ_V3_I]] to <8 x i16>
27744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
2775b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vhaddq_s16(int16x8_t v1, int16x8_t v2) {
2776b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhaddq_s16(v1, v2);
2777b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2778b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vhaddq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
27804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
27814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
27824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
27834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
27844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.shadd.v4i32(<4 x i32> [[VHADDQ_V_I]], <4 x i32> [[VHADDQ_V1_I]]) #4
27854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VHADDQ_V2_I]] to <16 x i8>
27864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHADDQ_V3_I]] to <4 x i32>
27874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
2788b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vhaddq_s32(int32x4_t v1, int32x4_t v2) {
2789b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhaddq_s32(v1, v2);
2790b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2791b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vhaddq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
27934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uhadd.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
27944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VHADDQ_V_I]]
2795b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vhaddq_u8(uint8x16_t v1, uint8x16_t v2) {
2796b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhaddq_u8(v1, v2);
2797b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2798b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
27994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vhaddq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
28004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
28014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
28024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
28034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
28044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uhadd.v8i16(<8 x i16> [[VHADDQ_V_I]], <8 x i16> [[VHADDQ_V1_I]]) #4
28054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VHADDQ_V2_I]] to <16 x i8>
28064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHADDQ_V3_I]] to <8 x i16>
28074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
2808b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vhaddq_u16(uint16x8_t v1, uint16x8_t v2) {
2809b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhaddq_u16(v1, v2);
2810b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2811b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vhaddq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
28134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
28144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
28154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
28164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
28174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uhadd.v4i32(<4 x i32> [[VHADDQ_V_I]], <4 x i32> [[VHADDQ_V1_I]]) #4
28184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VHADDQ_V2_I]] to <16 x i8>
28194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHADDQ_V3_I]] to <4 x i32>
28204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
2821b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vhaddq_u32(uint32x4_t v1, uint32x4_t v2) {
2822b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhaddq_u32(v1, v2);
2823b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2824b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2825b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vhsub_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
28274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.shsub.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
28284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VHSUB_V_I]]
2829b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vhsub_s8(int8x8_t v1, int8x8_t v2) {
2830b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsub_s8(v1, v2);
2831b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2832b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vhsub_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
28344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
28354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
28364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
28374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
28384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.shsub.v4i16(<4 x i16> [[VHSUB_V_I]], <4 x i16> [[VHSUB_V1_I]]) #4
28394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V3_I:%.*]] = bitcast <4 x i16> [[VHSUB_V2_I]] to <8 x i8>
28404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHSUB_V3_I]] to <4 x i16>
28414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
2842b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vhsub_s16(int16x4_t v1, int16x4_t v2) {
2843b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsub_s16(v1, v2);
2844b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2845b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vhsub_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
28474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
28484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
28494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
28504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
28514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.shsub.v2i32(<2 x i32> [[VHSUB_V_I]], <2 x i32> [[VHSUB_V1_I]]) #4
28524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V3_I:%.*]] = bitcast <2 x i32> [[VHSUB_V2_I]] to <8 x i8>
28534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHSUB_V3_I]] to <2 x i32>
28544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
2855b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vhsub_s32(int32x2_t v1, int32x2_t v2) {
2856b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsub_s32(v1, v2);
2857b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2858b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vhsub_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
28604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uhsub.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
28614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VHSUB_V_I]]
2862b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vhsub_u8(uint8x8_t v1, uint8x8_t v2) {
2863b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsub_u8(v1, v2);
2864b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2865b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vhsub_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
28674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
28684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
28694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
28704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
28714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uhsub.v4i16(<4 x i16> [[VHSUB_V_I]], <4 x i16> [[VHSUB_V1_I]]) #4
28724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V3_I:%.*]] = bitcast <4 x i16> [[VHSUB_V2_I]] to <8 x i8>
28734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHSUB_V3_I]] to <4 x i16>
28744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
2875b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vhsub_u16(uint16x4_t v1, uint16x4_t v2) {
2876b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsub_u16(v1, v2);
2877b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2878b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vhsub_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
28804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
28814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
28824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
28834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
28844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uhsub.v2i32(<2 x i32> [[VHSUB_V_I]], <2 x i32> [[VHSUB_V1_I]]) #4
28854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUB_V3_I:%.*]] = bitcast <2 x i32> [[VHSUB_V2_I]] to <8 x i8>
28864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VHSUB_V3_I]] to <2 x i32>
28874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
2888b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vhsub_u32(uint32x2_t v1, uint32x2_t v2) {
2889b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsub_u32(v1, v2);
2890b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2891b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vhsubq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
28934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.shsub.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
28944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VHSUBQ_V_I]]
2895b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vhsubq_s8(int8x16_t v1, int8x16_t v2) {
2896b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsubq_s8(v1, v2);
2897b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2898b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
28994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vhsubq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
29004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
29014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
29024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
29034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
29044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.shsub.v8i16(<8 x i16> [[VHSUBQ_V_I]], <8 x i16> [[VHSUBQ_V1_I]]) #4
29054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V3_I:%.*]] = bitcast <8 x i16> [[VHSUBQ_V2_I]] to <16 x i8>
29064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHSUBQ_V3_I]] to <8 x i16>
29074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
2908b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vhsubq_s16(int16x8_t v1, int16x8_t v2) {
2909b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsubq_s16(v1, v2);
2910b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2911b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vhsubq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
29134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
29144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
29154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
29164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
29174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.shsub.v4i32(<4 x i32> [[VHSUBQ_V_I]], <4 x i32> [[VHSUBQ_V1_I]]) #4
29184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V3_I:%.*]] = bitcast <4 x i32> [[VHSUBQ_V2_I]] to <16 x i8>
29194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHSUBQ_V3_I]] to <4 x i32>
29204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
2921b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vhsubq_s32(int32x4_t v1, int32x4_t v2) {
2922b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsubq_s32(v1, v2);
2923b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2924b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vhsubq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
29264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uhsub.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
29274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VHSUBQ_V_I]]
2928b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vhsubq_u8(uint8x16_t v1, uint8x16_t v2) {
2929b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsubq_u8(v1, v2);
2930b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2931b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vhsubq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
29334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
29344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
29354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
29364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
29374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uhsub.v8i16(<8 x i16> [[VHSUBQ_V_I]], <8 x i16> [[VHSUBQ_V1_I]]) #4
29384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V3_I:%.*]] = bitcast <8 x i16> [[VHSUBQ_V2_I]] to <16 x i8>
29394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHSUBQ_V3_I]] to <8 x i16>
29404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
2941b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vhsubq_u16(uint16x8_t v1, uint16x8_t v2) {
2942b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsubq_u16(v1, v2);
2943b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2944b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vhsubq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
29464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
29474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
29484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
29494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
29504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uhsub.v4i32(<4 x i32> [[VHSUBQ_V_I]], <4 x i32> [[VHSUBQ_V1_I]]) #4
29514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VHSUBQ_V3_I:%.*]] = bitcast <4 x i32> [[VHSUBQ_V2_I]] to <16 x i8>
29524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VHSUBQ_V3_I]] to <4 x i32>
29534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
2954b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vhsubq_u32(uint32x4_t v1, uint32x4_t v2) {
2955b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vhsubq_u32(v1, v2);
2956b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2957b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
2958b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrhadd_s8(<8 x i8> %v1, <8 x i8> %v2) #0 {
29604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.srhadd.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
29614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRHADD_V_I]]
2962b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vrhadd_s8(int8x8_t v1, int8x8_t v2) {
2963b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhadd_s8(v1, v2);
2964b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2965b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrhadd_s16(<4 x i16> %v1, <4 x i16> %v2) #0 {
29674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
29684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
29694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
29704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
29714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.srhadd.v4i16(<4 x i16> [[VRHADD_V_I]], <4 x i16> [[VRHADD_V1_I]]) #4
29724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V3_I:%.*]] = bitcast <4 x i16> [[VRHADD_V2_I]] to <8 x i8>
29734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRHADD_V3_I]] to <4 x i16>
29744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
2975b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vrhadd_s16(int16x4_t v1, int16x4_t v2) {
2976b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhadd_s16(v1, v2);
2977b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2978b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrhadd_s32(<2 x i32> %v1, <2 x i32> %v2) #0 {
29804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
29814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
29824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
29834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
29844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.srhadd.v2i32(<2 x i32> [[VRHADD_V_I]], <2 x i32> [[VRHADD_V1_I]]) #4
29854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V3_I:%.*]] = bitcast <2 x i32> [[VRHADD_V2_I]] to <8 x i8>
29864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRHADD_V3_I]] to <2 x i32>
29874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
2988b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vrhadd_s32(int32x2_t v1, int32x2_t v2) {
2989b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhadd_s32(v1, v2);
2990b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2991b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrhadd_u8(<8 x i8> %v1, <8 x i8> %v2) #0 {
29934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.urhadd.v8i8(<8 x i8> %v1, <8 x i8> %v2) #4
29944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRHADD_V_I]]
2995b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vrhadd_u8(uint8x8_t v1, uint8x8_t v2) {
2996b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhadd_u8(v1, v2);
2997b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
2998b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
29994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrhadd_u16(<4 x i16> %v1, <4 x i16> %v2) #0 {
30004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %v1 to <8 x i8>
30014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %v2 to <8 x i8>
30024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
30034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
30044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.urhadd.v4i16(<4 x i16> [[VRHADD_V_I]], <4 x i16> [[VRHADD_V1_I]]) #4
30054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V3_I:%.*]] = bitcast <4 x i16> [[VRHADD_V2_I]] to <8 x i8>
30064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRHADD_V3_I]] to <4 x i16>
30074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3008b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vrhadd_u16(uint16x4_t v1, uint16x4_t v2) {
3009b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhadd_u16(v1, v2);
3010b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3011b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrhadd_u32(<2 x i32> %v1, <2 x i32> %v2) #0 {
30134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %v1 to <8 x i8>
30144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %v2 to <8 x i8>
30154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
30164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
30174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.urhadd.v2i32(<2 x i32> [[VRHADD_V_I]], <2 x i32> [[VRHADD_V1_I]]) #4
30184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADD_V3_I:%.*]] = bitcast <2 x i32> [[VRHADD_V2_I]] to <8 x i8>
30194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRHADD_V3_I]] to <2 x i32>
30204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3021b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vrhadd_u32(uint32x2_t v1, uint32x2_t v2) {
3022b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhadd_u32(v1, v2);
3023b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3024b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrhaddq_s8(<16 x i8> %v1, <16 x i8> %v2) #0 {
30264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.srhadd.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
30274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRHADDQ_V_I]]
3028b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vrhaddq_s8(int8x16_t v1, int8x16_t v2) {
3029b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhaddq_s8(v1, v2);
3030b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3031b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrhaddq_s16(<8 x i16> %v1, <8 x i16> %v2) #0 {
30334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
30344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
30354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
30364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
30374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.srhadd.v8i16(<8 x i16> [[VRHADDQ_V_I]], <8 x i16> [[VRHADDQ_V1_I]]) #4
30384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VRHADDQ_V2_I]] to <16 x i8>
30394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRHADDQ_V3_I]] to <8 x i16>
30404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3041b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vrhaddq_s16(int16x8_t v1, int16x8_t v2) {
3042b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhaddq_s16(v1, v2);
3043b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3044b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrhaddq_s32(<4 x i32> %v1, <4 x i32> %v2) #0 {
30464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
30474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
30484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
30494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
30504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.srhadd.v4i32(<4 x i32> [[VRHADDQ_V_I]], <4 x i32> [[VRHADDQ_V1_I]]) #4
30514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VRHADDQ_V2_I]] to <16 x i8>
30524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRHADDQ_V3_I]] to <4 x i32>
30534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3054b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vrhaddq_s32(int32x4_t v1, int32x4_t v2) {
3055b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhaddq_s32(v1, v2);
3056b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3057b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrhaddq_u8(<16 x i8> %v1, <16 x i8> %v2) #0 {
30594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.urhadd.v16i8(<16 x i8> %v1, <16 x i8> %v2) #4
30604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRHADDQ_V_I]]
3061b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vrhaddq_u8(uint8x16_t v1, uint8x16_t v2) {
3062b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhaddq_u8(v1, v2);
3063b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3064b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrhaddq_u16(<8 x i16> %v1, <8 x i16> %v2) #0 {
30664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %v1 to <16 x i8>
30674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %v2 to <16 x i8>
30684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
30694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
30704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.urhadd.v8i16(<8 x i16> [[VRHADDQ_V_I]], <8 x i16> [[VRHADDQ_V1_I]]) #4
30714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VRHADDQ_V2_I]] to <16 x i8>
30724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRHADDQ_V3_I]] to <8 x i16>
30734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3074b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vrhaddq_u16(uint16x8_t v1, uint16x8_t v2) {
3075b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhaddq_u16(v1, v2);
3076b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3077b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrhaddq_u32(<4 x i32> %v1, <4 x i32> %v2) #0 {
30794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %v1 to <16 x i8>
30804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %v2 to <16 x i8>
30814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
30824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
30834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.urhadd.v4i32(<4 x i32> [[VRHADDQ_V_I]], <4 x i32> [[VRHADDQ_V1_I]]) #4
30844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRHADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VRHADDQ_V2_I]] to <16 x i8>
30854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRHADDQ_V3_I]] to <4 x i32>
30864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3087b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vrhaddq_u32(uint32x4_t v1, uint32x4_t v2) {
3088b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrhaddq_u32(v1, v2);
3089b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
30904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqadd_s8(<8 x i8> %a, <8 x i8> %b) #0 {
30914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqadd.v8i8(<8 x i8> %a, <8 x i8> %b) #4
30924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQADD_V_I]]
3093b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vqadd_s8(int8x8_t a, int8x8_t b) {
3094b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_s8(a, b);
3095b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3096b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
30974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqadd_s16(<4 x i16> %a, <4 x i16> %b) #0 {
30984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
30994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
31004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
31014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
31024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqadd.v4i16(<4 x i16> [[VQADD_V_I]], <4 x i16> [[VQADD_V1_I]]) #4
31034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V3_I:%.*]] = bitcast <4 x i16> [[VQADD_V2_I]] to <8 x i8>
31044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQADD_V3_I]] to <4 x i16>
31054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3106b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vqadd_s16(int16x4_t a, int16x4_t b) {
3107b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_s16(a, b);
3108b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3109b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqadd_s32(<2 x i32> %a, <2 x i32> %b) #0 {
31114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
31124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
31134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
31144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
31154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqadd.v2i32(<2 x i32> [[VQADD_V_I]], <2 x i32> [[VQADD_V1_I]]) #4
31164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V3_I:%.*]] = bitcast <2 x i32> [[VQADD_V2_I]] to <8 x i8>
31174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQADD_V3_I]] to <2 x i32>
31184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3119b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vqadd_s32(int32x2_t a, int32x2_t b) {
3120b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_s32(a, b);
3121b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3122b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqadd_s64(<1 x i64> %a, <1 x i64> %b) #0 {
31244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
31254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
31264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
31274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
31284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqadd.v1i64(<1 x i64> [[VQADD_V_I]], <1 x i64> [[VQADD_V1_I]]) #4
31294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V3_I:%.*]] = bitcast <1 x i64> [[VQADD_V2_I]] to <8 x i8>
31304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQADD_V3_I]] to <1 x i64>
31314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3132b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vqadd_s64(int64x1_t a, int64x1_t b) {
3133b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_s64(a, b);
3134b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3135b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqadd_u8(<8 x i8> %a, <8 x i8> %b) #0 {
31374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqadd.v8i8(<8 x i8> %a, <8 x i8> %b) #4
31384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQADD_V_I]]
3139b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vqadd_u8(uint8x8_t a, uint8x8_t b) {
3140b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_u8(a, b);
3141b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3142b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqadd_u16(<4 x i16> %a, <4 x i16> %b) #0 {
31444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
31454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
31464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
31474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
31484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqadd.v4i16(<4 x i16> [[VQADD_V_I]], <4 x i16> [[VQADD_V1_I]]) #4
31494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V3_I:%.*]] = bitcast <4 x i16> [[VQADD_V2_I]] to <8 x i8>
31504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQADD_V3_I]] to <4 x i16>
31514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3152b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vqadd_u16(uint16x4_t a, uint16x4_t b) {
3153b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_u16(a, b);
3154b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3155b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqadd_u32(<2 x i32> %a, <2 x i32> %b) #0 {
31574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
31584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
31594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
31604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
31614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqadd.v2i32(<2 x i32> [[VQADD_V_I]], <2 x i32> [[VQADD_V1_I]]) #4
31624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V3_I:%.*]] = bitcast <2 x i32> [[VQADD_V2_I]] to <8 x i8>
31634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQADD_V3_I]] to <2 x i32>
31644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3165b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vqadd_u32(uint32x2_t a, uint32x2_t b) {
3166b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_u32(a, b);
3167b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3168b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqadd_u64(<1 x i64> %a, <1 x i64> %b) #0 {
31704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
31714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
31724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
31734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
31744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.uqadd.v1i64(<1 x i64> [[VQADD_V_I]], <1 x i64> [[VQADD_V1_I]]) #4
31754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADD_V3_I:%.*]] = bitcast <1 x i64> [[VQADD_V2_I]] to <8 x i8>
31764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQADD_V3_I]] to <1 x i64>
31774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3178b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vqadd_u64(uint64x1_t a, uint64x1_t b) {
3179b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqadd_u64(a, b);
3180b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3181b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqaddq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
31834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqadd.v16i8(<16 x i8> %a, <16 x i8> %b) #4
31844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQADDQ_V_I]]
3185b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vqaddq_s8(int8x16_t a, int8x16_t b) {
3186b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_s8(a, b);
3187b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3188b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
31894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqaddq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
31904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
31914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
31924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
31934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
31944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqadd.v8i16(<8 x i16> [[VQADDQ_V_I]], <8 x i16> [[VQADDQ_V1_I]]) #4
31954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VQADDQ_V2_I]] to <16 x i8>
31964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQADDQ_V3_I]] to <8 x i16>
31974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3198b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vqaddq_s16(int16x8_t a, int16x8_t b) {
3199b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_s16(a, b);
3200b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3201b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqaddq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
32034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
32044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
32054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
32064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
32074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqadd.v4i32(<4 x i32> [[VQADDQ_V_I]], <4 x i32> [[VQADDQ_V1_I]]) #4
32084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VQADDQ_V2_I]] to <16 x i8>
32094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQADDQ_V3_I]] to <4 x i32>
32104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3211b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vqaddq_s32(int32x4_t a, int32x4_t b) {
3212b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_s32(a, b);
3213b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3214b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqaddq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
32164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
32174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
32184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
32194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
32204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqadd.v2i64(<2 x i64> [[VQADDQ_V_I]], <2 x i64> [[VQADDQ_V1_I]]) #4
32214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V3_I:%.*]] = bitcast <2 x i64> [[VQADDQ_V2_I]] to <16 x i8>
32224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQADDQ_V3_I]] to <2 x i64>
32234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3224b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vqaddq_s64(int64x2_t a, int64x2_t b) {
3225b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_s64(a, b);
3226b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3227b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqaddq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
32294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uqadd.v16i8(<16 x i8> %a, <16 x i8> %b) #4
32304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQADDQ_V_I]]
3231b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vqaddq_u8(uint8x16_t a, uint8x16_t b) {
3232b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_u8(a, b);
3233b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3234b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqaddq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
32364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
32374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
32384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
32394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
32404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uqadd.v8i16(<8 x i16> [[VQADDQ_V_I]], <8 x i16> [[VQADDQ_V1_I]]) #4
32414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VQADDQ_V2_I]] to <16 x i8>
32424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQADDQ_V3_I]] to <8 x i16>
32434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3244b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vqaddq_u16(uint16x8_t a, uint16x8_t b) {
3245b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_u16(a, b);
3246b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3247b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqaddq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
32494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
32504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
32514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
32524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
32534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uqadd.v4i32(<4 x i32> [[VQADDQ_V_I]], <4 x i32> [[VQADDQ_V1_I]]) #4
32544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VQADDQ_V2_I]] to <16 x i8>
32554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQADDQ_V3_I]] to <4 x i32>
32564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3257b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vqaddq_u32(uint32x4_t a, uint32x4_t b) {
3258b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_u32(a, b);
3259b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3260b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqaddq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
32624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
32634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
32644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
32654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
32664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.uqadd.v2i64(<2 x i64> [[VQADDQ_V_I]], <2 x i64> [[VQADDQ_V1_I]]) #4
32674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDQ_V3_I:%.*]] = bitcast <2 x i64> [[VQADDQ_V2_I]] to <16 x i8>
32684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQADDQ_V3_I]] to <2 x i64>
32694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3270b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vqaddq_u64(uint64x2_t a, uint64x2_t b) {
3271b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqaddq_u64(a, b);
3272b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3273b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3274b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqsub_s8(<8 x i8> %a, <8 x i8> %b) #0 {
32764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqsub.v8i8(<8 x i8> %a, <8 x i8> %b) #4
32774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSUB_V_I]]
3278b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vqsub_s8(int8x8_t a, int8x8_t b) {
3279b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_s8(a, b);
3280b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3281b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqsub_s16(<4 x i16> %a, <4 x i16> %b) #0 {
32834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
32844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
32854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
32864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
32874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqsub.v4i16(<4 x i16> [[VQSUB_V_I]], <4 x i16> [[VQSUB_V1_I]]) #4
32884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V3_I:%.*]] = bitcast <4 x i16> [[VQSUB_V2_I]] to <8 x i8>
32894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSUB_V3_I]] to <4 x i16>
32904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3291b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vqsub_s16(int16x4_t a, int16x4_t b) {
3292b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_s16(a, b);
3293b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3294b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
32954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqsub_s32(<2 x i32> %a, <2 x i32> %b) #0 {
32964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
32974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
32984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
32994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
33004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqsub.v2i32(<2 x i32> [[VQSUB_V_I]], <2 x i32> [[VQSUB_V1_I]]) #4
33014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V3_I:%.*]] = bitcast <2 x i32> [[VQSUB_V2_I]] to <8 x i8>
33024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSUB_V3_I]] to <2 x i32>
33034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3304b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vqsub_s32(int32x2_t a, int32x2_t b) {
3305b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_s32(a, b);
3306b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3307b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqsub_s64(<1 x i64> %a, <1 x i64> %b) #0 {
33094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
33104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
33114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
33124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
33134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqsub.v1i64(<1 x i64> [[VQSUB_V_I]], <1 x i64> [[VQSUB_V1_I]]) #4
33144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V3_I:%.*]] = bitcast <1 x i64> [[VQSUB_V2_I]] to <8 x i8>
33154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSUB_V3_I]] to <1 x i64>
33164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3317b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vqsub_s64(int64x1_t a, int64x1_t b) {
3318b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_s64(a, b);
3319b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3320b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqsub_u8(<8 x i8> %a, <8 x i8> %b) #0 {
33224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqsub.v8i8(<8 x i8> %a, <8 x i8> %b) #4
33234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSUB_V_I]]
3324b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vqsub_u8(uint8x8_t a, uint8x8_t b) {
3325b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_u8(a, b);
3326b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3327b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqsub_u16(<4 x i16> %a, <4 x i16> %b) #0 {
33294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
33304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
33314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
33324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
33334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqsub.v4i16(<4 x i16> [[VQSUB_V_I]], <4 x i16> [[VQSUB_V1_I]]) #4
33344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V3_I:%.*]] = bitcast <4 x i16> [[VQSUB_V2_I]] to <8 x i8>
33354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSUB_V3_I]] to <4 x i16>
33364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3337b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vqsub_u16(uint16x4_t a, uint16x4_t b) {
3338b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_u16(a, b);
3339b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3340b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqsub_u32(<2 x i32> %a, <2 x i32> %b) #0 {
33424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
33434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
33444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
33454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
33464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqsub.v2i32(<2 x i32> [[VQSUB_V_I]], <2 x i32> [[VQSUB_V1_I]]) #4
33474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V3_I:%.*]] = bitcast <2 x i32> [[VQSUB_V2_I]] to <8 x i8>
33484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSUB_V3_I]] to <2 x i32>
33494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3350b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vqsub_u32(uint32x2_t a, uint32x2_t b) {
3351b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_u32(a, b);
3352b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3353b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqsub_u64(<1 x i64> %a, <1 x i64> %b) #0 {
33554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
33564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
33574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
33584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
33594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.uqsub.v1i64(<1 x i64> [[VQSUB_V_I]], <1 x i64> [[VQSUB_V1_I]]) #4
33604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUB_V3_I:%.*]] = bitcast <1 x i64> [[VQSUB_V2_I]] to <8 x i8>
33614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSUB_V3_I]] to <1 x i64>
33624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3363b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vqsub_u64(uint64x1_t a, uint64x1_t b) {
3364b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsub_u64(a, b);
3365b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3366b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqsubq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
33684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqsub.v16i8(<16 x i8> %a, <16 x i8> %b) #4
33694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQSUBQ_V_I]]
3370b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vqsubq_s8(int8x16_t a, int8x16_t b) {
3371b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_s8(a, b);
3372b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3373b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqsubq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
33754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
33764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
33774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
33784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
33794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqsub.v8i16(<8 x i16> [[VQSUBQ_V_I]], <8 x i16> [[VQSUBQ_V1_I]]) #4
33804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V3_I:%.*]] = bitcast <8 x i16> [[VQSUBQ_V2_I]] to <16 x i8>
33814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSUBQ_V3_I]] to <8 x i16>
33824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3383b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vqsubq_s16(int16x8_t a, int16x8_t b) {
3384b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_s16(a, b);
3385b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3386b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
33874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqsubq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
33884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
33894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
33904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
33914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
33924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqsub.v4i32(<4 x i32> [[VQSUBQ_V_I]], <4 x i32> [[VQSUBQ_V1_I]]) #4
33934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V3_I:%.*]] = bitcast <4 x i32> [[VQSUBQ_V2_I]] to <16 x i8>
33944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSUBQ_V3_I]] to <4 x i32>
33954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3396b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vqsubq_s32(int32x4_t a, int32x4_t b) {
3397b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_s32(a, b);
3398b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3399b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqsubq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
34014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
34024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
34034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
34044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
34054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqsub.v2i64(<2 x i64> [[VQSUBQ_V_I]], <2 x i64> [[VQSUBQ_V1_I]]) #4
34064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V3_I:%.*]] = bitcast <2 x i64> [[VQSUBQ_V2_I]] to <16 x i8>
34074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSUBQ_V3_I]] to <2 x i64>
34084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3409b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vqsubq_s64(int64x2_t a, int64x2_t b) {
3410b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_s64(a, b);
3411b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3412b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqsubq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
34144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uqsub.v16i8(<16 x i8> %a, <16 x i8> %b) #4
34154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQSUBQ_V_I]]
3416b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vqsubq_u8(uint8x16_t a, uint8x16_t b) {
3417b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_u8(a, b);
3418b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3419b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqsubq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
34214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
34224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
34234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
34244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
34254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uqsub.v8i16(<8 x i16> [[VQSUBQ_V_I]], <8 x i16> [[VQSUBQ_V1_I]]) #4
34264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V3_I:%.*]] = bitcast <8 x i16> [[VQSUBQ_V2_I]] to <16 x i8>
34274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSUBQ_V3_I]] to <8 x i16>
34284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3429b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vqsubq_u16(uint16x8_t a, uint16x8_t b) {
3430b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_u16(a, b);
3431b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3432b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqsubq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
34344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
34354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
34364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
34374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
34384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uqsub.v4i32(<4 x i32> [[VQSUBQ_V_I]], <4 x i32> [[VQSUBQ_V1_I]]) #4
34394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V3_I:%.*]] = bitcast <4 x i32> [[VQSUBQ_V2_I]] to <16 x i8>
34404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSUBQ_V3_I]] to <4 x i32>
34414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3442b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vqsubq_u32(uint32x4_t a, uint32x4_t b) {
3443b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_u32(a, b);
3444b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3445b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqsubq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
34474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
34484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
34494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
34504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
34514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.uqsub.v2i64(<2 x i64> [[VQSUBQ_V_I]], <2 x i64> [[VQSUBQ_V1_I]]) #4
34524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBQ_V3_I:%.*]] = bitcast <2 x i64> [[VQSUBQ_V2_I]] to <16 x i8>
34534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSUBQ_V3_I]] to <2 x i64>
34544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3455b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vqsubq_u64(uint64x2_t a, uint64x2_t b) {
3456b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqsubq_u64(a, b);
3457b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3458b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3459b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshl_s8(<8 x i8> %a, <8 x i8> %b) #0 {
34614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sshl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
34624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHL_V_I]]
3463b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vshl_s8(int8x8_t a, int8x8_t b) {
3464b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_s8(a, b);
3465b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3466b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshl_s16(<4 x i16> %a, <4 x i16> %b) #0 {
34684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
34694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
34704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
34714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
34724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sshl.v4i16(<4 x i16> [[VSHL_V_I]], <4 x i16> [[VSHL_V1_I]]) #4
34734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V3_I:%.*]] = bitcast <4 x i16> [[VSHL_V2_I]] to <8 x i8>
34744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VSHL_V3_I]] to <4 x i16>
34754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3476b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vshl_s16(int16x4_t a, int16x4_t b) {
3477b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_s16(a, b);
3478b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3479b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshl_s32(<2 x i32> %a, <2 x i32> %b) #0 {
34814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
34824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
34834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
34844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
34854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sshl.v2i32(<2 x i32> [[VSHL_V_I]], <2 x i32> [[VSHL_V1_I]]) #4
34864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V3_I:%.*]] = bitcast <2 x i32> [[VSHL_V2_I]] to <8 x i8>
34874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VSHL_V3_I]] to <2 x i32>
34884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3489b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vshl_s32(int32x2_t a, int32x2_t b) {
3490b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_s32(a, b);
3491b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3492b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
34934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vshl_s64(<1 x i64> %a, <1 x i64> %b) #0 {
34944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
34954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
34964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
34974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
34984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.sshl.v1i64(<1 x i64> [[VSHL_V_I]], <1 x i64> [[VSHL_V1_I]]) #4
34994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V3_I:%.*]] = bitcast <1 x i64> [[VSHL_V2_I]] to <8 x i8>
35004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VSHL_V3_I]] to <1 x i64>
35014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3502b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vshl_s64(int64x1_t a, int64x1_t b) {
3503b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_s64(a, b);
3504b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3505b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshl_u8(<8 x i8> %a, <8 x i8> %b) #0 {
35074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.ushl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
35084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHL_V_I]]
3509b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vshl_u8(uint8x8_t a, int8x8_t b) {
3510b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_u8(a, b);
3511b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3512b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshl_u16(<4 x i16> %a, <4 x i16> %b) #0 {
35144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
35154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
35164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
35174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
35184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.ushl.v4i16(<4 x i16> [[VSHL_V_I]], <4 x i16> [[VSHL_V1_I]]) #4
35194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V3_I:%.*]] = bitcast <4 x i16> [[VSHL_V2_I]] to <8 x i8>
35204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VSHL_V3_I]] to <4 x i16>
35214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3522b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vshl_u16(uint16x4_t a, int16x4_t b) {
3523b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_u16(a, b);
3524b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3525b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshl_u32(<2 x i32> %a, <2 x i32> %b) #0 {
35274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
35284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
35294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
35304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
35314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.ushl.v2i32(<2 x i32> [[VSHL_V_I]], <2 x i32> [[VSHL_V1_I]]) #4
35324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V3_I:%.*]] = bitcast <2 x i32> [[VSHL_V2_I]] to <8 x i8>
35334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VSHL_V3_I]] to <2 x i32>
35344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3535b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vshl_u32(uint32x2_t a, int32x2_t b) {
3536b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_u32(a, b);
3537b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3538b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vshl_u64(<1 x i64> %a, <1 x i64> %b) #0 {
35404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
35414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
35424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
35434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
35444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.ushl.v1i64(<1 x i64> [[VSHL_V_I]], <1 x i64> [[VSHL_V1_I]]) #4
35454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_V3_I:%.*]] = bitcast <1 x i64> [[VSHL_V2_I]] to <8 x i8>
35464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VSHL_V3_I]] to <1 x i64>
35474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3548b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vshl_u64(uint64x1_t a, int64x1_t b) {
3549b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshl_u64(a, b);
3550b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3551b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshlq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
35534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sshl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
35544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSHLQ_V_I]]
3555b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vshlq_s8(int8x16_t a, int8x16_t b) {
3556b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_s8(a, b);
3557b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3558b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshlq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
35604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
35614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
35624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
35634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
35644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sshl.v8i16(<8 x i16> [[VSHLQ_V_I]], <8 x i16> [[VSHLQ_V1_I]]) #4
35654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VSHLQ_V2_I]] to <16 x i8>
35664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VSHLQ_V3_I]] to <8 x i16>
35674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3568b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vshlq_s16(int16x8_t a, int16x8_t b) {
3569b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_s16(a, b);
3570b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3571b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshlq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
35734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
35744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
35754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
35764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
35774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sshl.v4i32(<4 x i32> [[VSHLQ_V_I]], <4 x i32> [[VSHLQ_V1_I]]) #4
35784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VSHLQ_V2_I]] to <16 x i8>
35794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VSHLQ_V3_I]] to <4 x i32>
35804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3581b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vshlq_s32(int32x4_t a, int32x4_t b) {
3582b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_s32(a, b);
3583b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3584b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshlq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
35864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
35874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
35884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
35894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
35904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sshl.v2i64(<2 x i64> [[VSHLQ_V_I]], <2 x i64> [[VSHLQ_V1_I]]) #4
35914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VSHLQ_V2_I]] to <16 x i8>
35924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VSHLQ_V3_I]] to <2 x i64>
35934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3594b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vshlq_s64(int64x2_t a, int64x2_t b) {
3595b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_s64(a, b);
3596b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3597b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
35984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshlq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
35994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.ushl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
36004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSHLQ_V_I]]
3601b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vshlq_u8(uint8x16_t a, int8x16_t b) {
3602b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_u8(a, b);
3603b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3604b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshlq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
36064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
36074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
36084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
36094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
36104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.ushl.v8i16(<8 x i16> [[VSHLQ_V_I]], <8 x i16> [[VSHLQ_V1_I]]) #4
36114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VSHLQ_V2_I]] to <16 x i8>
36124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VSHLQ_V3_I]] to <8 x i16>
36134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3614b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vshlq_u16(uint16x8_t a, int16x8_t b) {
3615b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_u16(a, b);
3616b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3617b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshlq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
36194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
36204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
36214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
36224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
36234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.ushl.v4i32(<4 x i32> [[VSHLQ_V_I]], <4 x i32> [[VSHLQ_V1_I]]) #4
36244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VSHLQ_V2_I]] to <16 x i8>
36254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VSHLQ_V3_I]] to <4 x i32>
36264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3627b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vshlq_u32(uint32x4_t a, int32x4_t b) {
3628b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_u32(a, b);
3629b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3630b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshlq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
36324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
36334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
36344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
36354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
36364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.ushl.v2i64(<2 x i64> [[VSHLQ_V_I]], <2 x i64> [[VSHLQ_V1_I]]) #4
36374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VSHLQ_V2_I]] to <16 x i8>
36384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VSHLQ_V3_I]] to <2 x i64>
36394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3640b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vshlq_u64(uint64x2_t a, int64x2_t b) {
3641b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vshlq_u64(a, b);
3642b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3643b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
3644b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshl_s8(<8 x i8> %a, <8 x i8> %b) #0 {
36464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
36474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHL_V_I]]
3648b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vqshl_s8(int8x8_t a, int8x8_t b) {
3649b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_s8(a, b);
3650b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3651b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshl_s16(<4 x i16> %a, <4 x i16> %b) #0 {
36534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
36544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
36554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
36564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
36574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> [[VQSHL_V_I]], <4 x i16> [[VQSHL_V1_I]]) #4
36584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V3_I:%.*]] = bitcast <4 x i16> [[VQSHL_V2_I]] to <8 x i8>
36594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSHL_V3_I]] to <4 x i16>
36604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3661b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vqshl_s16(int16x4_t a, int16x4_t b) {
3662b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_s16(a, b);
3663b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3664b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshl_s32(<2 x i32> %a, <2 x i32> %b) #0 {
36664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
36674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
36684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
36694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
36704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32> [[VQSHL_V_I]], <2 x i32> [[VQSHL_V1_I]]) #4
36714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V3_I:%.*]] = bitcast <2 x i32> [[VQSHL_V2_I]] to <8 x i8>
36724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSHL_V3_I]] to <2 x i32>
36734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3674b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vqshl_s32(int32x2_t a, int32x2_t b) {
3675b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_s32(a, b);
3676b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3677b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqshl_s64(<1 x i64> %a, <1 x i64> %b) #0 {
36794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
36804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
36814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
36824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
36834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqshl.v1i64(<1 x i64> [[VQSHL_V_I]], <1 x i64> [[VQSHL_V1_I]]) #4
36844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V3_I:%.*]] = bitcast <1 x i64> [[VQSHL_V2_I]] to <8 x i8>
36854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSHL_V3_I]] to <1 x i64>
36864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3687b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vqshl_s64(int64x1_t a, int64x1_t b) {
3688b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_s64(a, b);
3689b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3690b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshl_u8(<8 x i8> %a, <8 x i8> %b) #0 {
36924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
36934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHL_V_I]]
3694b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vqshl_u8(uint8x8_t a, int8x8_t b) {
3695b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_u8(a, b);
3696b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3697b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
36984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshl_u16(<4 x i16> %a, <4 x i16> %b) #0 {
36994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
37004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
37014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
37024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
37034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> [[VQSHL_V_I]], <4 x i16> [[VQSHL_V1_I]]) #4
37044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V3_I:%.*]] = bitcast <4 x i16> [[VQSHL_V2_I]] to <8 x i8>
37054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSHL_V3_I]] to <4 x i16>
37064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3707b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vqshl_u16(uint16x4_t a, int16x4_t b) {
3708b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_u16(a, b);
3709b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3710b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshl_u32(<2 x i32> %a, <2 x i32> %b) #0 {
37124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
37134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
37144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
37154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
37164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32> [[VQSHL_V_I]], <2 x i32> [[VQSHL_V1_I]]) #4
37174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V3_I:%.*]] = bitcast <2 x i32> [[VQSHL_V2_I]] to <8 x i8>
37184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSHL_V3_I]] to <2 x i32>
37194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3720b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vqshl_u32(uint32x2_t a, int32x2_t b) {
3721b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_u32(a, b);
3722b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3723b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqshl_u64(<1 x i64> %a, <1 x i64> %b) #0 {
37254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
37264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
37274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
37284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
37294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.uqshl.v1i64(<1 x i64> [[VQSHL_V_I]], <1 x i64> [[VQSHL_V1_I]]) #4
37304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_V3_I:%.*]] = bitcast <1 x i64> [[VQSHL_V2_I]] to <8 x i8>
37314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQSHL_V3_I]] to <1 x i64>
37324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3733b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vqshl_u64(uint64x1_t a, int64x1_t b) {
3734b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshl_u64(a, b);
3735b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3736b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshlq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
37384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
37394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQSHLQ_V_I]]
3740b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vqshlq_s8(int8x16_t a, int8x16_t b) {
3741b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_s8(a, b);
3742b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3743b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshlq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
37454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
37464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
37474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
37484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
37494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16> [[VQSHLQ_V_I]], <8 x i16> [[VQSHLQ_V1_I]]) #4
37504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VQSHLQ_V2_I]] to <16 x i8>
37514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSHLQ_V3_I]] to <8 x i16>
37524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3753b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vqshlq_s16(int16x8_t a, int16x8_t b) {
3754b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_s16(a, b);
3755b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3756b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshlq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
37584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
37594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
37604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
37614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
37624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32> [[VQSHLQ_V_I]], <4 x i32> [[VQSHLQ_V1_I]]) #4
37634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VQSHLQ_V2_I]] to <16 x i8>
37644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSHLQ_V3_I]] to <4 x i32>
37654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3766b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vqshlq_s32(int32x4_t a, int32x4_t b) {
3767b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_s32(a, b);
3768b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3769b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqshlq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
37714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
37724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
37734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
37744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
37754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64> [[VQSHLQ_V_I]], <2 x i64> [[VQSHLQ_V1_I]]) #4
37764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VQSHLQ_V2_I]] to <16 x i8>
37774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSHLQ_V3_I]] to <2 x i64>
37784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3779b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vqshlq_s64(int64x2_t a, int64x2_t b) {
3780b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_s64(a, b);
3781b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3782b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshlq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
37844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
37854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQSHLQ_V_I]]
3786b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vqshlq_u8(uint8x16_t a, int8x16_t b) {
3787b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_u8(a, b);
3788b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3789b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
37904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshlq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
37914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
37924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
37934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
37944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
37954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16> [[VQSHLQ_V_I]], <8 x i16> [[VQSHLQ_V1_I]]) #4
37964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VQSHLQ_V2_I]] to <16 x i8>
37974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSHLQ_V3_I]] to <8 x i16>
37984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3799b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vqshlq_u16(uint16x8_t a, int16x8_t b) {
3800b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_u16(a, b);
3801b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3802b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshlq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
38044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
38054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
38064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
38074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
38084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32> [[VQSHLQ_V_I]], <4 x i32> [[VQSHLQ_V1_I]]) #4
38094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VQSHLQ_V2_I]] to <16 x i8>
38104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSHLQ_V3_I]] to <4 x i32>
38114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3812b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vqshlq_u32(uint32x4_t a, int32x4_t b) {
3813b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_u32(a, b);
3814b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3815b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqshlq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
38174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
38184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
38194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
38204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
38214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64> [[VQSHLQ_V_I]], <2 x i64> [[VQSHLQ_V1_I]]) #4
38224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VQSHLQ_V2_I]] to <16 x i8>
38234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQSHLQ_V3_I]] to <2 x i64>
38244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3825b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vqshlq_u64(uint64x2_t a, int64x2_t b) {
3826b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqshlq_u64(a, b);
3827b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3828b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrshl_s8(<8 x i8> %a, <8 x i8> %b) #0 {
38304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
38314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSHL_V_I]]
3832b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vrshl_s8(int8x8_t a, int8x8_t b) {
3833b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_s8(a, b);
3834b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3835b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrshl_s16(<4 x i16> %a, <4 x i16> %b) #0 {
38374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
38384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
38394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
38404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
38414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> [[VRSHL_V_I]], <4 x i16> [[VRSHL_V1_I]]) #4
38424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V3_I:%.*]] = bitcast <4 x i16> [[VRSHL_V2_I]] to <8 x i8>
38434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSHL_V3_I]] to <4 x i16>
38444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3845b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vrshl_s16(int16x4_t a, int16x4_t b) {
3846b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_s16(a, b);
3847b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3848b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrshl_s32(<2 x i32> %a, <2 x i32> %b) #0 {
38504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
38514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
38524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
38534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
38544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> [[VRSHL_V_I]], <2 x i32> [[VRSHL_V1_I]]) #4
38554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V3_I:%.*]] = bitcast <2 x i32> [[VRSHL_V2_I]] to <8 x i8>
38564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSHL_V3_I]] to <2 x i32>
38574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3858b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vrshl_s32(int32x2_t a, int32x2_t b) {
3859b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_s32(a, b);
3860b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3861b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vrshl_s64(<1 x i64> %a, <1 x i64> %b) #0 {
38634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
38644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
38654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
38664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
38674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.srshl.v1i64(<1 x i64> [[VRSHL_V_I]], <1 x i64> [[VRSHL_V1_I]]) #4
38684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V3_I:%.*]] = bitcast <1 x i64> [[VRSHL_V2_I]] to <8 x i8>
38694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSHL_V3_I]] to <1 x i64>
38704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3871b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) {
3872b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_s64(a, b);
3873b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3874b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrshl_u8(<8 x i8> %a, <8 x i8> %b) #0 {
38764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
38774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSHL_V_I]]
3878b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vrshl_u8(uint8x8_t a, int8x8_t b) {
3879b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_u8(a, b);
3880b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3881b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrshl_u16(<4 x i16> %a, <4 x i16> %b) #0 {
38834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
38844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
38854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
38864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
38874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> [[VRSHL_V_I]], <4 x i16> [[VRSHL_V1_I]]) #4
38884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V3_I:%.*]] = bitcast <4 x i16> [[VRSHL_V2_I]] to <8 x i8>
38894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSHL_V3_I]] to <4 x i16>
38904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
3891b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vrshl_u16(uint16x4_t a, int16x4_t b) {
3892b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_u16(a, b);
3893b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3894b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
38954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrshl_u32(<2 x i32> %a, <2 x i32> %b) #0 {
38964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
38974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
38984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
38994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
39004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> [[VRSHL_V_I]], <2 x i32> [[VRSHL_V1_I]]) #4
39014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V3_I:%.*]] = bitcast <2 x i32> [[VRSHL_V2_I]] to <8 x i8>
39024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSHL_V3_I]] to <2 x i32>
39034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
3904b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vrshl_u32(uint32x2_t a, int32x2_t b) {
3905b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_u32(a, b);
3906b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3907b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vrshl_u64(<1 x i64> %a, <1 x i64> %b) #0 {
39094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
39104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
39114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
39124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
39134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.urshl.v1i64(<1 x i64> [[VRSHL_V_I]], <1 x i64> [[VRSHL_V1_I]]) #4
39144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHL_V3_I:%.*]] = bitcast <1 x i64> [[VRSHL_V2_I]] to <8 x i8>
39154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSHL_V3_I]] to <1 x i64>
39164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
3917b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) {
3918b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshl_u64(a, b);
3919b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3920b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrshlq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
39224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
39234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRSHLQ_V_I]]
3924b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vrshlq_s8(int8x16_t a, int8x16_t b) {
3925b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_s8(a, b);
3926b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3927b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrshlq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
39294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
39304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
39314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
39324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
39334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> [[VRSHLQ_V_I]], <8 x i16> [[VRSHLQ_V1_I]]) #4
39344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VRSHLQ_V2_I]] to <16 x i8>
39354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSHLQ_V3_I]] to <8 x i16>
39364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3937b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vrshlq_s16(int16x8_t a, int16x8_t b) {
3938b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_s16(a, b);
3939b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3940b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrshlq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
39424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
39434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
39444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
39454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
39464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> [[VRSHLQ_V_I]], <4 x i32> [[VRSHLQ_V1_I]]) #4
39474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VRSHLQ_V2_I]] to <16 x i8>
39484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSHLQ_V3_I]] to <4 x i32>
39494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3950b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vrshlq_s32(int32x4_t a, int32x4_t b) {
3951b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_s32(a, b);
3952b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3953b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vrshlq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
39554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
39564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
39574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
39584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
39594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> [[VRSHLQ_V_I]], <2 x i64> [[VRSHLQ_V1_I]]) #4
39604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VRSHLQ_V2_I]] to <16 x i8>
39614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSHLQ_V3_I]] to <2 x i64>
39624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
3963b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vrshlq_s64(int64x2_t a, int64x2_t b) {
3964b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_s64(a, b);
3965b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3966b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrshlq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
39684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
39694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRSHLQ_V_I]]
3970b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vrshlq_u8(uint8x16_t a, int8x16_t b) {
3971b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_u8(a, b);
3972b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3973b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrshlq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
39754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
39764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
39774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
39784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
39794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> [[VRSHLQ_V_I]], <8 x i16> [[VRSHLQ_V1_I]]) #4
39804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VRSHLQ_V2_I]] to <16 x i8>
39814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSHLQ_V3_I]] to <8 x i16>
39824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
3983b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vrshlq_u16(uint16x8_t a, int16x8_t b) {
3984b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_u16(a, b);
3985b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3986b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
39874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrshlq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
39884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
39894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
39904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
39914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
39924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> [[VRSHLQ_V_I]], <4 x i32> [[VRSHLQ_V1_I]]) #4
39934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VRSHLQ_V2_I]] to <16 x i8>
39944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSHLQ_V3_I]] to <4 x i32>
39954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
3996b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vrshlq_u32(uint32x4_t a, int32x4_t b) {
3997b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_u32(a, b);
3998b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
3999b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vrshlq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
40014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
40024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
40034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
40044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
40054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> [[VRSHLQ_V_I]], <2 x i64> [[VRSHLQ_V1_I]]) #4
40064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VRSHLQ_V2_I]] to <16 x i8>
40074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VRSHLQ_V3_I]] to <2 x i64>
40084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
4009b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vrshlq_u64(uint64x2_t a, int64x2_t b) {
4010b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vrshlq_u64(a, b);
4011b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4012b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4013b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqrshl_s8(<8 x i8> %a, <8 x i8> %b) #0 {
40154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
40164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQRSHL_V_I]]
4017b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vqrshl_s8(int8x8_t a, int8x8_t b) {
4018b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_s8(a, b);
4019b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4020b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqrshl_s16(<4 x i16> %a, <4 x i16> %b) #0 {
40224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
40234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
40244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
40254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
40264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshl.v4i16(<4 x i16> [[VQRSHL_V_I]], <4 x i16> [[VQRSHL_V1_I]]) #4
40274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V3_I:%.*]] = bitcast <4 x i16> [[VQRSHL_V2_I]] to <8 x i8>
40284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRSHL_V3_I]] to <4 x i16>
40294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
4030b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vqrshl_s16(int16x4_t a, int16x4_t b) {
4031b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_s16(a, b);
4032b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4033b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqrshl_s32(<2 x i32> %a, <2 x i32> %b) #0 {
40354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
40364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
40374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
40384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
40394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqrshl.v2i32(<2 x i32> [[VQRSHL_V_I]], <2 x i32> [[VQRSHL_V1_I]]) #4
40404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V3_I:%.*]] = bitcast <2 x i32> [[VQRSHL_V2_I]] to <8 x i8>
40414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRSHL_V3_I]] to <2 x i32>
40424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
4043b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vqrshl_s32(int32x2_t a, int32x2_t b) {
4044b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_s32(a, b);
4045b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4046b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqrshl_s64(<1 x i64> %a, <1 x i64> %b) #0 {
40484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
40494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
40504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
40514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
40524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqrshl.v1i64(<1 x i64> [[VQRSHL_V_I]], <1 x i64> [[VQRSHL_V1_I]]) #4
40534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V3_I:%.*]] = bitcast <1 x i64> [[VQRSHL_V2_I]] to <8 x i8>
40544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRSHL_V3_I]] to <1 x i64>
40554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
4056b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x1_t test_vqrshl_s64(int64x1_t a, int64x1_t b) {
4057b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_s64(a, b);
4058b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4059b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqrshl_u8(<8 x i8> %a, <8 x i8> %b) #0 {
40614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqrshl.v8i8(<8 x i8> %a, <8 x i8> %b) #4
40624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQRSHL_V_I]]
4063b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vqrshl_u8(uint8x8_t a, int8x8_t b) {
4064b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_u8(a, b);
4065b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4066b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqrshl_u16(<4 x i16> %a, <4 x i16> %b) #0 {
40684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
40694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
40704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
40714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
40724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqrshl.v4i16(<4 x i16> [[VQRSHL_V_I]], <4 x i16> [[VQRSHL_V1_I]]) #4
40734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V3_I:%.*]] = bitcast <4 x i16> [[VQRSHL_V2_I]] to <8 x i8>
40744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRSHL_V3_I]] to <4 x i16>
40754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
4076b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vqrshl_u16(uint16x4_t a, int16x4_t b) {
4077b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_u16(a, b);
4078b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4079b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqrshl_u32(<2 x i32> %a, <2 x i32> %b) #0 {
40814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
40824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
40834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
40844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
40854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqrshl.v2i32(<2 x i32> [[VQRSHL_V_I]], <2 x i32> [[VQRSHL_V1_I]]) #4
40864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V3_I:%.*]] = bitcast <2 x i32> [[VQRSHL_V2_I]] to <8 x i8>
40874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRSHL_V3_I]] to <2 x i32>
40884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
4089b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vqrshl_u32(uint32x2_t a, int32x2_t b) {
4090b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_u32(a, b);
4091b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4092b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
40934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqrshl_u64(<1 x i64> %a, <1 x i64> %b) #0 {
40944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
40954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
40964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
40974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
40984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.uqrshl.v1i64(<1 x i64> [[VQRSHL_V_I]], <1 x i64> [[VQRSHL_V1_I]]) #4
40994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHL_V3_I:%.*]] = bitcast <1 x i64> [[VQRSHL_V2_I]] to <8 x i8>
41004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRSHL_V3_I]] to <1 x i64>
41014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
4102b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x1_t test_vqrshl_u64(uint64x1_t a, int64x1_t b) {
4103b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshl_u64(a, b);
4104b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4105b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqrshlq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
41074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqrshl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
41084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQRSHLQ_V_I]]
4109b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vqrshlq_s8(int8x16_t a, int8x16_t b) {
4110b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_s8(a, b);
4111b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4112b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqrshlq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
41144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
41154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
41164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
41174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
41184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqrshl.v8i16(<8 x i16> [[VQRSHLQ_V_I]], <8 x i16> [[VQRSHLQ_V1_I]]) #4
41194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VQRSHLQ_V2_I]] to <16 x i8>
41204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRSHLQ_V3_I]] to <8 x i16>
41214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
4122b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vqrshlq_s16(int16x8_t a, int16x8_t b) {
4123b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_s16(a, b);
4124b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4125b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqrshlq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
41274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
41284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
41294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
41304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
41314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqrshl.v4i32(<4 x i32> [[VQRSHLQ_V_I]], <4 x i32> [[VQRSHLQ_V1_I]]) #4
41324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VQRSHLQ_V2_I]] to <16 x i8>
41334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRSHLQ_V3_I]] to <4 x i32>
41344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
4135b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vqrshlq_s32(int32x4_t a, int32x4_t b) {
4136b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_s32(a, b);
4137b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4138b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqrshlq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
41404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
41414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
41424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
41434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
41444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqrshl.v2i64(<2 x i64> [[VQRSHLQ_V_I]], <2 x i64> [[VQRSHLQ_V1_I]]) #4
41454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VQRSHLQ_V2_I]] to <16 x i8>
41464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRSHLQ_V3_I]] to <2 x i64>
41474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
4148b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint64x2_t test_vqrshlq_s64(int64x2_t a, int64x2_t b) {
4149b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_s64(a, b);
4150b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4151b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqrshlq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
41534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uqrshl.v16i8(<16 x i8> %a, <16 x i8> %b) #4
41544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQRSHLQ_V_I]]
4155b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vqrshlq_u8(uint8x16_t a, int8x16_t b) {
4156b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_u8(a, b);
4157b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4158b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqrshlq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
41604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
41614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
41624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
41634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
41644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uqrshl.v8i16(<8 x i16> [[VQRSHLQ_V_I]], <8 x i16> [[VQRSHLQ_V1_I]]) #4
41654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V3_I:%.*]] = bitcast <8 x i16> [[VQRSHLQ_V2_I]] to <16 x i8>
41664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRSHLQ_V3_I]] to <8 x i16>
41674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
4168b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vqrshlq_u16(uint16x8_t a, int16x8_t b) {
4169b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_u16(a, b);
4170b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4171b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqrshlq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
41734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
41744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
41754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
41764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
41774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uqrshl.v4i32(<4 x i32> [[VQRSHLQ_V_I]], <4 x i32> [[VQRSHLQ_V1_I]]) #4
41784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V3_I:%.*]] = bitcast <4 x i32> [[VQRSHLQ_V2_I]] to <16 x i8>
41794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRSHLQ_V3_I]] to <4 x i32>
41804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
4181b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vqrshlq_u32(uint32x4_t a, int32x4_t b) {
4182b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_u32(a, b);
4183b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4184b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqrshlq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
41864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
41874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
41884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
41894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
41904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.uqrshl.v2i64(<2 x i64> [[VQRSHLQ_V_I]], <2 x i64> [[VQRSHLQ_V1_I]]) #4
41914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLQ_V3_I:%.*]] = bitcast <2 x i64> [[VQRSHLQ_V2_I]] to <16 x i8>
41924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRSHLQ_V3_I]] to <2 x i64>
41934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
4194b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint64x2_t test_vqrshlq_u64(uint64x2_t a, int64x2_t b) {
4195b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrshlq_u64(a, b);
4196b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4197b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
41984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsli_n_p64(<1 x i64> %a, <1 x i64> %b) #0 {
41994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
42004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
42014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
42024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
42034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64> [[VSLI_N]], <1 x i64> [[VSLI_N1]], i32 0)
42044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSLI_N2]]
4205651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinespoly64x1_t test_vsli_n_p64(poly64x1_t a, poly64x1_t b) {
4206651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsli_n_p64(a, b, 0);
4207651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
4208651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
42094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsliq_n_p64(<2 x i64> %a, <2 x i64> %b) #0 {
42104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
42114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
42124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
42134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
42144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <2 x i64> @llvm.aarch64.neon.vsli.v2i64(<2 x i64> [[VSLI_N]], <2 x i64> [[VSLI_N1]], i32 0)
42154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSLI_N2]]
4216651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinespoly64x2_t test_vsliq_n_p64(poly64x2_t a, poly64x2_t b) {
4217651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsliq_n_p64(a, b, 0);
4218651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
4219651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
42204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmax_s8(<8 x i8> %a, <8 x i8> %b) #0 {
42214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.smax.v8i8(<8 x i8> %a, <8 x i8> %b) #4
42224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VMAX_I]]
4223b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vmax_s8(int8x8_t a, int8x8_t b) {
4224b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmax_s8(a, b);
4225b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4226b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmax_s16(<4 x i16> %a, <4 x i16> %b) #0 {
42284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
42294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
42304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
42314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
42324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.smax.v4i16(<4 x i16> [[VMAX_I]], <4 x i16> [[VMAX1_I]]) #4
42334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VMAX2_I]]
4234b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vmax_s16(int16x4_t a, int16x4_t b) {
4235b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmax_s16(a, b);
4236b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4237b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmax_s32(<2 x i32> %a, <2 x i32> %b) #0 {
42394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
42404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
42414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
42424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
42434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.smax.v2i32(<2 x i32> [[VMAX_I]], <2 x i32> [[VMAX1_I]]) #4
42444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VMAX2_I]]
4245b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vmax_s32(int32x2_t a, int32x2_t b) {
4246b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmax_s32(a, b);
4247b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4248b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmax_u8(<8 x i8> %a, <8 x i8> %b) #0 {
42504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.umax.v8i8(<8 x i8> %a, <8 x i8> %b) #4
42514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VMAX_I]]
4252b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vmax_u8(uint8x8_t a, uint8x8_t b) {
4253b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmax_u8(a, b);
4254b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4255b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmax_u16(<4 x i16> %a, <4 x i16> %b) #0 {
42574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
42584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
42594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
42604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
42614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.umax.v4i16(<4 x i16> [[VMAX_I]], <4 x i16> [[VMAX1_I]]) #4
42624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VMAX2_I]]
4263b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vmax_u16(uint16x4_t a, uint16x4_t b) {
4264b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmax_u16(a, b);
4265b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4266b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmax_u32(<2 x i32> %a, <2 x i32> %b) #0 {
42684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
42694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
42704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
42714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
42724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.umax.v2i32(<2 x i32> [[VMAX_I]], <2 x i32> [[VMAX1_I]]) #4
42734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VMAX2_I]]
4274b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vmax_u32(uint32x2_t a, uint32x2_t b) {
4275b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmax_u32(a, b);
4276b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4277b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vmax_f32(<2 x float> %a, <2 x float> %b) #0 {
42794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
42804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
42814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
42824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
42834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fmax.v2f32(<2 x float> [[VMAX_I]], <2 x float> [[VMAX1_I]]) #4
42844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VMAX2_I]]
4285b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vmax_f32(float32x2_t a, float32x2_t b) {
4286b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmax_f32(a, b);
4287b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4288b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmaxq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
42904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.smax.v16i8(<16 x i8> %a, <16 x i8> %b) #4
42914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VMAX_I]]
4292b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vmaxq_s8(int8x16_t a, int8x16_t b) {
4293b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_s8(a, b);
4294b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4295b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
42964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmaxq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
42974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
42984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
42994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
43004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
43014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smax.v8i16(<8 x i16> [[VMAX_I]], <8 x i16> [[VMAX1_I]]) #4
43024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMAX2_I]]
4303b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vmaxq_s16(int16x8_t a, int16x8_t b) {
4304b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_s16(a, b);
4305b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4306b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmaxq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
43084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
43094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
43104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
43114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
43124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smax.v4i32(<4 x i32> [[VMAX_I]], <4 x i32> [[VMAX1_I]]) #4
43134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMAX2_I]]
4314b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vmaxq_s32(int32x4_t a, int32x4_t b) {
4315b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_s32(a, b);
4316b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4317b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmaxq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
43194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.umax.v16i8(<16 x i8> %a, <16 x i8> %b) #4
43204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VMAX_I]]
4321b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vmaxq_u8(uint8x16_t a, uint8x16_t b) {
4322b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_u8(a, b);
4323b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4324b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmaxq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
43264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
43274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
43284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
43294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
43304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umax.v8i16(<8 x i16> [[VMAX_I]], <8 x i16> [[VMAX1_I]]) #4
43314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMAX2_I]]
4332b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vmaxq_u16(uint16x8_t a, uint16x8_t b) {
4333b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_u16(a, b);
4334b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4335b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmaxq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
43374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
43384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
43394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
43404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
43414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umax.v4i32(<4 x i32> [[VMAX_I]], <4 x i32> [[VMAX1_I]]) #4
43424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMAX2_I]]
4343b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vmaxq_u32(uint32x4_t a, uint32x4_t b) {
4344b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_u32(a, b);
4345b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4346b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vmaxq_f32(<4 x float> %a, <4 x float> %b) #0 {
43484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
43494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
43504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
43514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
43524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fmax.v4f32(<4 x float> [[VMAX_I]], <4 x float> [[VMAX1_I]]) #4
43534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VMAX2_I]]
4354b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vmaxq_f32(float32x4_t a, float32x4_t b) {
4355b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_f32(a, b);
4356b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4357b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vmaxq_f64(<2 x double> %a, <2 x double> %b) #0 {
43594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
43604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
43614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
43624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
43634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fmax.v2f64(<2 x double> [[VMAX_I]], <2 x double> [[VMAX1_I]]) #4
43644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VMAX2_I]]
4365b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vmaxq_f64(float64x2_t a, float64x2_t b) {
4366b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxq_f64(a, b);
4367b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4368b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
4369b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmin_s8(<8 x i8> %a, <8 x i8> %b) #0 {
43714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.smin.v8i8(<8 x i8> %a, <8 x i8> %b) #4
43724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VMIN_I]]
4373b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vmin_s8(int8x8_t a, int8x8_t b) {
4374b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmin_s8(a, b);
4375b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4376b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmin_s16(<4 x i16> %a, <4 x i16> %b) #0 {
43784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
43794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
43804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
43814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
43824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.smin.v4i16(<4 x i16> [[VMIN_I]], <4 x i16> [[VMIN1_I]]) #4
43834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VMIN2_I]]
4384b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vmin_s16(int16x4_t a, int16x4_t b) {
4385b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmin_s16(a, b);
4386b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4387b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmin_s32(<2 x i32> %a, <2 x i32> %b) #0 {
43894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
43904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
43914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
43924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
43934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.smin.v2i32(<2 x i32> [[VMIN_I]], <2 x i32> [[VMIN1_I]]) #4
43944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VMIN2_I]]
4395b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vmin_s32(int32x2_t a, int32x2_t b) {
4396b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmin_s32(a, b);
4397b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4398b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
43994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmin_u8(<8 x i8> %a, <8 x i8> %b) #0 {
44004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.umin.v8i8(<8 x i8> %a, <8 x i8> %b) #4
44014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VMIN_I]]
4402b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vmin_u8(uint8x8_t a, uint8x8_t b) {
4403b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmin_u8(a, b);
4404b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4405b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmin_u16(<4 x i16> %a, <4 x i16> %b) #0 {
44074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
44084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
44094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
44104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
44114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.umin.v4i16(<4 x i16> [[VMIN_I]], <4 x i16> [[VMIN1_I]]) #4
44124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VMIN2_I]]
4413b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vmin_u16(uint16x4_t a, uint16x4_t b) {
4414b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmin_u16(a, b);
4415b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4416b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmin_u32(<2 x i32> %a, <2 x i32> %b) #0 {
44184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
44194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
44204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
44214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
44224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.umin.v2i32(<2 x i32> [[VMIN_I]], <2 x i32> [[VMIN1_I]]) #4
44234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VMIN2_I]]
4424b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vmin_u32(uint32x2_t a, uint32x2_t b) {
4425b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmin_u32(a, b);
4426b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4427b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vmin_f32(<2 x float> %a, <2 x float> %b) #0 {
44294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
44304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
44314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
44324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
44334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fmin.v2f32(<2 x float> [[VMIN_I]], <2 x float> [[VMIN1_I]]) #4
44344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VMIN2_I]]
4435b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vmin_f32(float32x2_t a, float32x2_t b) {
4436b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmin_f32(a, b);
4437b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4438b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vminq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
44404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.smin.v16i8(<16 x i8> %a, <16 x i8> %b) #4
44414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VMIN_I]]
4442b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vminq_s8(int8x16_t a, int8x16_t b) {
4443b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_s8(a, b);
4444b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4445b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vminq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
44474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
44484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
44494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
44504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
44514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smin.v8i16(<8 x i16> [[VMIN_I]], <8 x i16> [[VMIN1_I]]) #4
44524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMIN2_I]]
4453b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vminq_s16(int16x8_t a, int16x8_t b) {
4454b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_s16(a, b);
4455b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4456b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vminq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
44584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
44594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
44604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
44614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
44624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smin.v4i32(<4 x i32> [[VMIN_I]], <4 x i32> [[VMIN1_I]]) #4
44634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMIN2_I]]
4464b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vminq_s32(int32x4_t a, int32x4_t b) {
4465b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_s32(a, b);
4466b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4467b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vminq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
44694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.umin.v16i8(<16 x i8> %a, <16 x i8> %b) #4
44704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VMIN_I]]
4471b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vminq_u8(uint8x16_t a, uint8x16_t b) {
4472b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_u8(a, b);
4473b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4474b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vminq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
44764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
44774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
44784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
44794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
44804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umin.v8i16(<8 x i16> [[VMIN_I]], <8 x i16> [[VMIN1_I]]) #4
44814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMIN2_I]]
4482b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vminq_u16(uint16x8_t a, uint16x8_t b) {
4483b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_u16(a, b);
4484b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4485b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vminq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
44874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
44884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
44894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
44904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
44914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umin.v4i32(<4 x i32> [[VMIN_I]], <4 x i32> [[VMIN1_I]]) #4
44924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMIN2_I]]
4493b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vminq_u32(uint32x4_t a, uint32x4_t b) {
4494b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_u32(a, b);
4495b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4496b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
44974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vminq_f32(<4 x float> %a, <4 x float> %b) #0 {
44984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
44994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
45004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
45014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
45024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fmin.v4f32(<4 x float> [[VMIN_I]], <4 x float> [[VMIN1_I]]) #4
45034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VMIN2_I]]
4504b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vminq_f32(float32x4_t a, float32x4_t b) {
4505b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_f32(a, b);
4506b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4507b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vminq_f64(<2 x double> %a, <2 x double> %b) #0 {
45094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
45104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
45114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
45124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
45134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fmin.v2f64(<2 x double> [[VMIN_I]], <2 x double> [[VMIN1_I]]) #4
45144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VMIN2_I]]
4515b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vminq_f64(float64x2_t a, float64x2_t b) {
4516b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminq_f64(a, b);
4517b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4518b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vmaxnm_f32(<2 x float> %a, <2 x float> %b) #0 {
45204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
45214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
45224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
45234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
45244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fmaxnm.v2f32(<2 x float> [[VMAXNM_I]], <2 x float> [[VMAXNM1_I]]) #4
45254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VMAXNM2_I]]
4526b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vmaxnm_f32(float32x2_t a, float32x2_t b) {
4527b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxnm_f32(a, b);
4528b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4529b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vmaxnmq_f32(<4 x float> %a, <4 x float> %b) #0 {
45314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
45324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
45334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
45344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
45354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fmaxnm.v4f32(<4 x float> [[VMAXNM_I]], <4 x float> [[VMAXNM1_I]]) #4
45364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VMAXNM2_I]]
4537b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vmaxnmq_f32(float32x4_t a, float32x4_t b) {
4538b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxnmq_f32(a, b);
4539b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4540b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vmaxnmq_f64(<2 x double> %a, <2 x double> %b) #0 {
45424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
45434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
45444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
45454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
45464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fmaxnm.v2f64(<2 x double> [[VMAXNM_I]], <2 x double> [[VMAXNM1_I]]) #4
45474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VMAXNM2_I]]
4548b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vmaxnmq_f64(float64x2_t a, float64x2_t b) {
4549b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmaxnmq_f64(a, b);
4550b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4551b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vminnm_f32(<2 x float> %a, <2 x float> %b) #0 {
45534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
45544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
45554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
45564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
45574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fminnm.v2f32(<2 x float> [[VMINNM_I]], <2 x float> [[VMINNM1_I]]) #4
45584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VMINNM2_I]]
4559b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vminnm_f32(float32x2_t a, float32x2_t b) {
4560b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminnm_f32(a, b);
4561b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4562b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vminnmq_f32(<4 x float> %a, <4 x float> %b) #0 {
45644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
45654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
45664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
45674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
45684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fminnm.v4f32(<4 x float> [[VMINNM_I]], <4 x float> [[VMINNM1_I]]) #4
45694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VMINNM2_I]]
4570b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vminnmq_f32(float32x4_t a, float32x4_t b) {
4571b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminnmq_f32(a, b);
4572b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4573b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vminnmq_f64(<2 x double> %a, <2 x double> %b) #0 {
45754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
45764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
45774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
45784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
45794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fminnm.v2f64(<2 x double> [[VMINNM_I]], <2 x double> [[VMINNM1_I]]) #4
45804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VMINNM2_I]]
4581b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vminnmq_f64(float64x2_t a, float64x2_t b) {
4582b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vminnmq_f64(a, b);
4583b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4584b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vpmax_s8(<8 x i8> %a, <8 x i8> %b) #0 {
45864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.smaxp.v8i8(<8 x i8> %a, <8 x i8> %b) #4
45874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VPMAX_I]]
4588b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vpmax_s8(int8x8_t a, int8x8_t b) {
4589b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmax_s8(a, b);
4590b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4591b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
45924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpmax_s16(<4 x i16> %a, <4 x i16> %b) #0 {
45934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
45944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
45954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
45964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
45974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.smaxp.v4i16(<4 x i16> [[VPMAX_I]], <4 x i16> [[VPMAX1_I]]) #4
45984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VPMAX2_I]]
4599b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vpmax_s16(int16x4_t a, int16x4_t b) {
4600b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmax_s16(a, b);
4601b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4602b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpmax_s32(<2 x i32> %a, <2 x i32> %b) #0 {
46044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
46054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
46064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
46074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
46084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.smaxp.v2i32(<2 x i32> [[VPMAX_I]], <2 x i32> [[VPMAX1_I]]) #4
46094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VPMAX2_I]]
4610b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vpmax_s32(int32x2_t a, int32x2_t b) {
4611b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmax_s32(a, b);
4612b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4613b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vpmax_u8(<8 x i8> %a, <8 x i8> %b) #0 {
46154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.umaxp.v8i8(<8 x i8> %a, <8 x i8> %b) #4
46164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VPMAX_I]]
4617b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vpmax_u8(uint8x8_t a, uint8x8_t b) {
4618b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmax_u8(a, b);
4619b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4620b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpmax_u16(<4 x i16> %a, <4 x i16> %b) #0 {
46224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
46234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
46244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
46254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
46264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.umaxp.v4i16(<4 x i16> [[VPMAX_I]], <4 x i16> [[VPMAX1_I]]) #4
46274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VPMAX2_I]]
4628b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vpmax_u16(uint16x4_t a, uint16x4_t b) {
4629b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmax_u16(a, b);
4630b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4631b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpmax_u32(<2 x i32> %a, <2 x i32> %b) #0 {
46334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
46344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
46354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
46364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
46374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.umaxp.v2i32(<2 x i32> [[VPMAX_I]], <2 x i32> [[VPMAX1_I]]) #4
46384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VPMAX2_I]]
4639b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vpmax_u32(uint32x2_t a, uint32x2_t b) {
4640b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmax_u32(a, b);
4641b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4642b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vpmax_f32(<2 x float> %a, <2 x float> %b) #0 {
46444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
46454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
46464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
46474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
46484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fmaxp.v2f32(<2 x float> [[VPMAX_I]], <2 x float> [[VPMAX1_I]]) #4
46494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VPMAX2_I]]
4650b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vpmax_f32(float32x2_t a, float32x2_t b) {
4651b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmax_f32(a, b);
4652b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4653b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpmaxq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
46554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.smaxp.v16i8(<16 x i8> %a, <16 x i8> %b) #4
46564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VPMAX_I]]
4657b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vpmaxq_s8(int8x16_t a, int8x16_t b) {
4658b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_s8(a, b);
4659b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4660b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpmaxq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
46624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
46634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
46644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
46654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
46664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smaxp.v8i16(<8 x i16> [[VPMAX_I]], <8 x i16> [[VPMAX1_I]]) #4
46674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VPMAX2_I]]
4668b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vpmaxq_s16(int16x8_t a, int16x8_t b) {
4669b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_s16(a, b);
4670b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4671b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpmaxq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
46734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
46744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
46754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
46764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
46774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smaxp.v4i32(<4 x i32> [[VPMAX_I]], <4 x i32> [[VPMAX1_I]]) #4
46784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VPMAX2_I]]
4679b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vpmaxq_s32(int32x4_t a, int32x4_t b) {
4680b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_s32(a, b);
4681b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4682b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpmaxq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
46844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.umaxp.v16i8(<16 x i8> %a, <16 x i8> %b) #4
46854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VPMAX_I]]
4686b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vpmaxq_u8(uint8x16_t a, uint8x16_t b) {
4687b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_u8(a, b);
4688b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4689b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
46904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpmaxq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
46914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
46924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
46934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
46944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
46954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umaxp.v8i16(<8 x i16> [[VPMAX_I]], <8 x i16> [[VPMAX1_I]]) #4
46964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VPMAX2_I]]
4697b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vpmaxq_u16(uint16x8_t a, uint16x8_t b) {
4698b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_u16(a, b);
4699b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4700b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpmaxq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
47024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
47034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
47044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
47054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
47064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umaxp.v4i32(<4 x i32> [[VPMAX_I]], <4 x i32> [[VPMAX1_I]]) #4
47074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VPMAX2_I]]
4708b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vpmaxq_u32(uint32x4_t a, uint32x4_t b) {
4709b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_u32(a, b);
4710b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4711b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vpmaxq_f32(<4 x float> %a, <4 x float> %b) #0 {
47134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
47144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
47154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
47164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
47174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fmaxp.v4f32(<4 x float> [[VPMAX_I]], <4 x float> [[VPMAX1_I]]) #4
47184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VPMAX2_I]]
4719b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vpmaxq_f32(float32x4_t a, float32x4_t b) {
4720b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_f32(a, b);
4721b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4722b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vpmaxq_f64(<2 x double> %a, <2 x double> %b) #0 {
47244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
47254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
47264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
47274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
47284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAX2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fmaxp.v2f64(<2 x double> [[VPMAX_I]], <2 x double> [[VPMAX1_I]]) #4
47294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VPMAX2_I]]
4730b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vpmaxq_f64(float64x2_t a, float64x2_t b) {
4731b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxq_f64(a, b);
4732b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4733b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vpmin_s8(<8 x i8> %a, <8 x i8> %b) #0 {
47354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sminp.v8i8(<8 x i8> %a, <8 x i8> %b) #4
47364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VPMIN_I]]
4737b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vpmin_s8(int8x8_t a, int8x8_t b) {
4738b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmin_s8(a, b);
4739b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4740b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpmin_s16(<4 x i16> %a, <4 x i16> %b) #0 {
47424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
47434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
47444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
47454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
47464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sminp.v4i16(<4 x i16> [[VPMIN_I]], <4 x i16> [[VPMIN1_I]]) #4
47474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VPMIN2_I]]
4748b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vpmin_s16(int16x4_t a, int16x4_t b) {
4749b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmin_s16(a, b);
4750b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4751b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpmin_s32(<2 x i32> %a, <2 x i32> %b) #0 {
47534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
47544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
47554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
47564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
47574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sminp.v2i32(<2 x i32> [[VPMIN_I]], <2 x i32> [[VPMIN1_I]]) #4
47584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VPMIN2_I]]
4759b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vpmin_s32(int32x2_t a, int32x2_t b) {
4760b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmin_s32(a, b);
4761b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4762b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vpmin_u8(<8 x i8> %a, <8 x i8> %b) #0 {
47644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uminp.v8i8(<8 x i8> %a, <8 x i8> %b) #4
47654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VPMIN_I]]
4766b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vpmin_u8(uint8x8_t a, uint8x8_t b) {
4767b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmin_u8(a, b);
4768b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4769b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpmin_u16(<4 x i16> %a, <4 x i16> %b) #0 {
47714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
47724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
47734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
47744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
47754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uminp.v4i16(<4 x i16> [[VPMIN_I]], <4 x i16> [[VPMIN1_I]]) #4
47764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VPMIN2_I]]
4777b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vpmin_u16(uint16x4_t a, uint16x4_t b) {
4778b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmin_u16(a, b);
4779b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4780b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpmin_u32(<2 x i32> %a, <2 x i32> %b) #0 {
47824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
47834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
47844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
47854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
47864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uminp.v2i32(<2 x i32> [[VPMIN_I]], <2 x i32> [[VPMIN1_I]]) #4
47874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VPMIN2_I]]
4788b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vpmin_u32(uint32x2_t a, uint32x2_t b) {
4789b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmin_u32(a, b);
4790b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4791b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
47924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vpmin_f32(<2 x float> %a, <2 x float> %b) #0 {
47934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
47944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
47954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
47964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
47974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fminp.v2f32(<2 x float> [[VPMIN_I]], <2 x float> [[VPMIN1_I]]) #4
47984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VPMIN2_I]]
4799b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vpmin_f32(float32x2_t a, float32x2_t b) {
4800b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmin_f32(a, b);
4801b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4802b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpminq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
48044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sminp.v16i8(<16 x i8> %a, <16 x i8> %b) #4
48054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VPMIN_I]]
4806b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vpminq_s8(int8x16_t a, int8x16_t b) {
4807b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_s8(a, b);
4808b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4809b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpminq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
48114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
48124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
48134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
48144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
48154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sminp.v8i16(<8 x i16> [[VPMIN_I]], <8 x i16> [[VPMIN1_I]]) #4
48164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VPMIN2_I]]
4817b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vpminq_s16(int16x8_t a, int16x8_t b) {
4818b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_s16(a, b);
4819b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4820b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpminq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
48224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
48234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
48244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
48254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
48264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sminp.v4i32(<4 x i32> [[VPMIN_I]], <4 x i32> [[VPMIN1_I]]) #4
48274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VPMIN2_I]]
4828b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vpminq_s32(int32x4_t a, int32x4_t b) {
4829b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_s32(a, b);
4830b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4831b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpminq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
48334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.uminp.v16i8(<16 x i8> %a, <16 x i8> %b) #4
48344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VPMIN_I]]
4835b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vpminq_u8(uint8x16_t a, uint8x16_t b) {
4836b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_u8(a, b);
4837b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4838b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpminq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
48404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
48414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
48424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
48434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
48444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uminp.v8i16(<8 x i16> [[VPMIN_I]], <8 x i16> [[VPMIN1_I]]) #4
48454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VPMIN2_I]]
4846b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vpminq_u16(uint16x8_t a, uint16x8_t b) {
4847b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_u16(a, b);
4848b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4849b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpminq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
48514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
48524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
48534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
48544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
48554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uminp.v4i32(<4 x i32> [[VPMIN_I]], <4 x i32> [[VPMIN1_I]]) #4
48564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VPMIN2_I]]
4857b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vpminq_u32(uint32x4_t a, uint32x4_t b) {
4858b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_u32(a, b);
4859b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4860b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vpminq_f32(<4 x float> %a, <4 x float> %b) #0 {
48624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
48634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
48644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
48654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
48664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fminp.v4f32(<4 x float> [[VPMIN_I]], <4 x float> [[VPMIN1_I]]) #4
48674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VPMIN2_I]]
4868b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vpminq_f32(float32x4_t a, float32x4_t b) {
4869b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_f32(a, b);
4870b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4871b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vpminq_f64(<2 x double> %a, <2 x double> %b) #0 {
48734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
48744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
48754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
48764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
48774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMIN2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fminp.v2f64(<2 x double> [[VPMIN_I]], <2 x double> [[VPMIN1_I]]) #4
48784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VPMIN2_I]]
4879b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vpminq_f64(float64x2_t a, float64x2_t b) {
4880b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminq_f64(a, b);
4881b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4882b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vpmaxnm_f32(<2 x float> %a, <2 x float> %b) #0 {
48844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
48854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
48864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
48874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
48884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fmaxnmp.v2f32(<2 x float> [[VPMAXNM_I]], <2 x float> [[VPMAXNM1_I]]) #4
48894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VPMAXNM2_I]]
4890b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vpmaxnm_f32(float32x2_t a, float32x2_t b) {
4891b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxnm_f32(a, b);
4892b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4893b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
48944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vpmaxnmq_f32(<4 x float> %a, <4 x float> %b) #0 {
48954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
48964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
48974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
48984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
48994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fmaxnmp.v4f32(<4 x float> [[VPMAXNM_I]], <4 x float> [[VPMAXNM1_I]]) #4
49004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VPMAXNM2_I]]
4901b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vpmaxnmq_f32(float32x4_t a, float32x4_t b) {
4902b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxnmq_f32(a, b);
4903b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4904b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vpmaxnmq_f64(<2 x double> %a, <2 x double> %b) #0 {
49064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
49074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
49084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
49094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
49104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNM2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fmaxnmp.v2f64(<2 x double> [[VPMAXNM_I]], <2 x double> [[VPMAXNM1_I]]) #4
49114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VPMAXNM2_I]]
4912b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vpmaxnmq_f64(float64x2_t a, float64x2_t b) {
4913b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpmaxnmq_f64(a, b);
4914b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4915b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vpminnm_f32(<2 x float> %a, <2 x float> %b) #0 {
49174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
49184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
49194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
49204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
49214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fminnmp.v2f32(<2 x float> [[VPMINNM_I]], <2 x float> [[VPMINNM1_I]]) #4
49224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VPMINNM2_I]]
4923b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vpminnm_f32(float32x2_t a, float32x2_t b) {
4924b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminnm_f32(a, b);
4925b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4926b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vpminnmq_f32(<4 x float> %a, <4 x float> %b) #0 {
49284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
49294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
49304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
49314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
49324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fminnmp.v4f32(<4 x float> [[VPMINNM_I]], <4 x float> [[VPMINNM1_I]]) #4
49334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VPMINNM2_I]]
4934b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vpminnmq_f32(float32x4_t a, float32x4_t b) {
4935b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminnmq_f32(a, b);
4936b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4937b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vpminnmq_f64(<2 x double> %a, <2 x double> %b) #0 {
49394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
49404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
49414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
49424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
49434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNM2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fminnmp.v2f64(<2 x double> [[VPMINNM_I]], <2 x double> [[VPMINNM1_I]]) #4
49444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VPMINNM2_I]]
4945b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vpminnmq_f64(float64x2_t a, float64x2_t b) {
4946b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpminnmq_f64(a, b);
4947b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4948b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vpadd_s8(<8 x i8> %a, <8 x i8> %b) #0 {
49504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.addp.v8i8(<8 x i8> %a, <8 x i8> %b) #4
49514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VPADD_V_I]]
4952b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x8_t test_vpadd_s8(int8x8_t a, int8x8_t b) {
4953b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpadd_s8(a, b);
4954b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4955b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpadd_s16(<4 x i16> %a, <4 x i16> %b) #0 {
49574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
49584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
49594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
49604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
49614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.addp.v4i16(<4 x i16> [[VPADD_V_I]], <4 x i16> [[VPADD_V1_I]]) #4
49624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V3_I:%.*]] = bitcast <4 x i16> [[VPADD_V2_I]] to <8 x i8>
49634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VPADD_V3_I]] to <4 x i16>
49644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
4965b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vpadd_s16(int16x4_t a, int16x4_t b) {
4966b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpadd_s16(a, b);
4967b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4968b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpadd_s32(<2 x i32> %a, <2 x i32> %b) #0 {
49704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
49714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
49724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
49734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
49744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.addp.v2i32(<2 x i32> [[VPADD_V_I]], <2 x i32> [[VPADD_V1_I]]) #4
49754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V3_I:%.*]] = bitcast <2 x i32> [[VPADD_V2_I]] to <8 x i8>
49764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VPADD_V3_I]] to <2 x i32>
49774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
4978b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vpadd_s32(int32x2_t a, int32x2_t b) {
4979b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpadd_s32(a, b);
4980b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4981b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vpadd_u8(<8 x i8> %a, <8 x i8> %b) #0 {
49834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.addp.v8i8(<8 x i8> %a, <8 x i8> %b) #4
49844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VPADD_V_I]]
4985b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x8_t test_vpadd_u8(uint8x8_t a, uint8x8_t b) {
4986b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpadd_u8(a, b);
4987b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
4988b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
49894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpadd_u16(<4 x i16> %a, <4 x i16> %b) #0 {
49904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
49914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
49924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
49934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
49944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.addp.v4i16(<4 x i16> [[VPADD_V_I]], <4 x i16> [[VPADD_V1_I]]) #4
49954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V3_I:%.*]] = bitcast <4 x i16> [[VPADD_V2_I]] to <8 x i8>
49964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VPADD_V3_I]] to <4 x i16>
49974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
4998b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x4_t test_vpadd_u16(uint16x4_t a, uint16x4_t b) {
4999b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpadd_u16(a, b);
5000b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5001b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpadd_u32(<2 x i32> %a, <2 x i32> %b) #0 {
50034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
50044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
50054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
50064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
50074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.addp.v2i32(<2 x i32> [[VPADD_V_I]], <2 x i32> [[VPADD_V1_I]]) #4
50084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V3_I:%.*]] = bitcast <2 x i32> [[VPADD_V2_I]] to <8 x i8>
50094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VPADD_V3_I]] to <2 x i32>
50104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
5011b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x2_t test_vpadd_u32(uint32x2_t a, uint32x2_t b) {
5012b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpadd_u32(a, b);
5013b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5014b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vpadd_f32(<2 x float> %a, <2 x float> %b) #0 {
50164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
50174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
50184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
50194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
50204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.addp.v2f32(<2 x float> [[VPADD_V_I]], <2 x float> [[VPADD_V1_I]]) #4
50214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADD_V3_I:%.*]] = bitcast <2 x float> [[VPADD_V2_I]] to <8 x i8>
50224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VPADD_V3_I]] to <2 x float>
50234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP2]]
5024b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vpadd_f32(float32x2_t a, float32x2_t b) {
5025b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpadd_f32(a, b);
5026b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5027b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpaddq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
50294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.addp.v16i8(<16 x i8> %a, <16 x i8> %b) #4
50304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VPADDQ_V_I]]
5031b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint8x16_t test_vpaddq_s8(int8x16_t a, int8x16_t b) {
5032b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_s8(a, b);
5033b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5034b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpaddq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
50364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
50374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
50384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
50394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
50404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.addp.v8i16(<8 x i16> [[VPADDQ_V_I]], <8 x i16> [[VPADDQ_V1_I]]) #4
50414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VPADDQ_V2_I]] to <16 x i8>
50424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <8 x i16>
50434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
5044b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vpaddq_s16(int16x8_t a, int16x8_t b) {
5045b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_s16(a, b);
5046b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5047b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpaddq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
50494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
50504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
50514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
50524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
50534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.addp.v4i32(<4 x i32> [[VPADDQ_V_I]], <4 x i32> [[VPADDQ_V1_I]]) #4
50544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VPADDQ_V2_I]] to <16 x i8>
50554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <4 x i32>
50564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
5057b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vpaddq_s32(int32x4_t a, int32x4_t b) {
5058b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_s32(a, b);
5059b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5060b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vpaddq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
50624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.addp.v16i8(<16 x i8> %a, <16 x i8> %b) #4
50634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VPADDQ_V_I]]
5064b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint8x16_t test_vpaddq_u8(uint8x16_t a, uint8x16_t b) {
5065b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_u8(a, b);
5066b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5067b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpaddq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
50694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
50704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
50714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
50724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
50734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.addp.v8i16(<8 x i16> [[VPADDQ_V_I]], <8 x i16> [[VPADDQ_V1_I]]) #4
50744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <8 x i16> [[VPADDQ_V2_I]] to <16 x i8>
50754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <8 x i16>
50764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
5077b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint16x8_t test_vpaddq_u16(uint16x8_t a, uint16x8_t b) {
5078b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_u16(a, b);
5079b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5080b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpaddq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
50824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
50834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
50844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
50854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
50864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.addp.v4i32(<4 x i32> [[VPADDQ_V_I]], <4 x i32> [[VPADDQ_V1_I]]) #4
50874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <4 x i32> [[VPADDQ_V2_I]] to <16 x i8>
50884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <4 x i32>
50894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
5090b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoveruint32x4_t test_vpaddq_u32(uint32x4_t a, uint32x4_t b) {
5091b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_u32(a, b);
5092b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5093b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
50944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vpaddq_f32(<4 x float> %a, <4 x float> %b) #0 {
50954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
50964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
50974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
50984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
50994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.addp.v4f32(<4 x float> [[VPADDQ_V_I]], <4 x float> [[VPADDQ_V1_I]]) #4
51004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <4 x float> [[VPADDQ_V2_I]] to <16 x i8>
51014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <4 x float>
51024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP2]]
5103b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vpaddq_f32(float32x4_t a, float32x4_t b) {
5104b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_f32(a, b);
5105b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5106b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vpaddq_f64(<2 x double> %a, <2 x double> %b) #0 {
51084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
51094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
51104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
51114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
51124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.addp.v2f64(<2 x double> [[VPADDQ_V_I]], <2 x double> [[VPADDQ_V1_I]]) #4
51134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <2 x double> [[VPADDQ_V2_I]] to <16 x i8>
51144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <2 x double>
51154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP2]]
5116b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vpaddq_f64(float64x2_t a, float64x2_t b) {
5117b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vpaddq_f64(a, b);
5118b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5119b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqdmulh_s16(<4 x i16> %a, <4 x i16> %b) #0 {
51214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
51224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
51234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
51244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
51254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqdmulh.v4i16(<4 x i16> [[VQDMULH_V_I]], <4 x i16> [[VQDMULH_V1_I]]) #4
51264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V3_I:%.*]] = bitcast <4 x i16> [[VQDMULH_V2_I]] to <8 x i8>
51274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQDMULH_V3_I]] to <4 x i16>
51284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
5129b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vqdmulh_s16(int16x4_t a, int16x4_t b) {
5130b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqdmulh_s16(a, b);
5131b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5132b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqdmulh_s32(<2 x i32> %a, <2 x i32> %b) #0 {
51344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
51354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
51364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
51374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
51384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqdmulh.v2i32(<2 x i32> [[VQDMULH_V_I]], <2 x i32> [[VQDMULH_V1_I]]) #4
51394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULH_V3_I:%.*]] = bitcast <2 x i32> [[VQDMULH_V2_I]] to <8 x i8>
51404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQDMULH_V3_I]] to <2 x i32>
51414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
5142b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vqdmulh_s32(int32x2_t a, int32x2_t b) {
5143b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqdmulh_s32(a, b);
5144b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5145b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqdmulhq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
51474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
51484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
51494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
51504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
51514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqdmulh.v8i16(<8 x i16> [[VQDMULHQ_V_I]], <8 x i16> [[VQDMULHQ_V1_I]]) #4
51524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V3_I:%.*]] = bitcast <8 x i16> [[VQDMULHQ_V2_I]] to <16 x i8>
51534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQDMULHQ_V3_I]] to <8 x i16>
51544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
5155b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vqdmulhq_s16(int16x8_t a, int16x8_t b) {
5156b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqdmulhq_s16(a, b);
5157b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5158b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqdmulhq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
51604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
51614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
51624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
51634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
51644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmulh.v4i32(<4 x i32> [[VQDMULHQ_V_I]], <4 x i32> [[VQDMULHQ_V1_I]]) #4
51654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHQ_V3_I:%.*]] = bitcast <4 x i32> [[VQDMULHQ_V2_I]] to <16 x i8>
51664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQDMULHQ_V3_I]] to <4 x i32>
51674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
5168b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vqdmulhq_s32(int32x4_t a, int32x4_t b) {
5169b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqdmulhq_s32(a, b);
5170b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5171b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqrdmulh_s16(<4 x i16> %a, <4 x i16> %b) #0 {
51734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
51744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
51754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
51764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
51774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrdmulh.v4i16(<4 x i16> [[VQRDMULH_V_I]], <4 x i16> [[VQRDMULH_V1_I]]) #4
51784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V3_I:%.*]] = bitcast <4 x i16> [[VQRDMULH_V2_I]] to <8 x i8>
51794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRDMULH_V3_I]] to <4 x i16>
51804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
5181b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x4_t test_vqrdmulh_s16(int16x4_t a, int16x4_t b) {
5182b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrdmulh_s16(a, b);
5183b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5184b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqrdmulh_s32(<2 x i32> %a, <2 x i32> %b) #0 {
51864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
51874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
51884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
51894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
51904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqrdmulh.v2i32(<2 x i32> [[VQRDMULH_V_I]], <2 x i32> [[VQRDMULH_V1_I]]) #4
51914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULH_V3_I:%.*]] = bitcast <2 x i32> [[VQRDMULH_V2_I]] to <8 x i8>
51924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VQRDMULH_V3_I]] to <2 x i32>
51934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
5194b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x2_t test_vqrdmulh_s32(int32x2_t a, int32x2_t b) {
5195b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrdmulh_s32(a, b);
5196b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5197b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
51984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqrdmulhq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
51994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
52004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
52014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
52024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
52034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqrdmulh.v8i16(<8 x i16> [[VQRDMULHQ_V_I]], <8 x i16> [[VQRDMULHQ_V1_I]]) #4
52044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V3_I:%.*]] = bitcast <8 x i16> [[VQRDMULHQ_V2_I]] to <16 x i8>
52054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRDMULHQ_V3_I]] to <8 x i16>
52064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
5207b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint16x8_t test_vqrdmulhq_s16(int16x8_t a, int16x8_t b) {
5208b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrdmulhq_s16(a, b);
5209b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5210b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
52114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqrdmulhq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
52124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
52134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
52144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
52154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
52164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqrdmulh.v4i32(<4 x i32> [[VQRDMULHQ_V_I]], <4 x i32> [[VQRDMULHQ_V1_I]]) #4
52174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHQ_V3_I:%.*]] = bitcast <4 x i32> [[VQRDMULHQ_V2_I]] to <16 x i8>
52184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQRDMULHQ_V3_I]] to <4 x i32>
52194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
5220b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverint32x4_t test_vqrdmulhq_s32(int32x4_t a, int32x4_t b) {
5221b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vqrdmulhq_s32(a, b);
5222b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5223b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
52244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vmulx_f32(<2 x float> %a, <2 x float> %b) #0 {
52254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
52264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
52274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
52284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
52294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fmulx.v2f32(<2 x float> [[VMULX_I]], <2 x float> [[VMULX1_I]]) #4
52304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VMULX2_I]]
5231b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x2_t test_vmulx_f32(float32x2_t a, float32x2_t b) {
5232b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulx_f32(a, b);
5233b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5234b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
52354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vmulxq_f32(<4 x float> %a, <4 x float> %b) #0 {
52364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
52374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
52384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
52394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
52404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fmulx.v4f32(<4 x float> [[VMULX_I]], <4 x float> [[VMULX1_I]]) #4
52414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VMULX2_I]]
5242b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat32x4_t test_vmulxq_f32(float32x4_t a, float32x4_t b) {
5243b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulxq_f32(a, b);
5244b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5245b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
52464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vmulxq_f64(<2 x double> %a, <2 x double> %b) #0 {
52474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
52484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
52494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
52504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
52514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fmulx.v2f64(<2 x double> [[VMULX_I]], <2 x double> [[VMULX1_I]]) #4
52524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VMULX2_I]]
5253b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northoverfloat64x2_t test_vmulxq_f64(float64x2_t a, float64x2_t b) {
5254b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover  return vmulxq_f64(a, b);
5255b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover}
5256b793f0d3448a15277cd6b6cc4ba558ded39a8084Tim Northover
52574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshl_n_s8(<8 x i8> %a) #0 {
52584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <8 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
52594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHL_N]]
526012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint8x8_t test_vshl_n_s8(int8x8_t a) {
526112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshl_n_s8(a, 3);
526212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
526312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
52644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshl_n_s16(<4 x i16> %a) #0 {
52654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
52664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
52674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <4 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3>
52684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSHL_N]]
526912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x4_t test_vshl_n_s16(int16x4_t a) {
527012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshl_n_s16(a, 3);
527112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
527212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
52734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshl_n_s32(<2 x i32> %a) #0 {
52744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
52754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
52764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <2 x i32> [[TMP1]], <i32 3, i32 3>
52774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSHL_N]]
527812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x2_t test_vshl_n_s32(int32x2_t a) {
527912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshl_n_s32(a, 3);
528012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
528112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
52824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshlq_n_s8(<16 x i8> %a) #0 {
52834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <16 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
52844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSHL_N]]
528512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint8x16_t test_vshlq_n_s8(int8x16_t a) {
528612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_s8(a, 3);
528712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
528812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
52894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshlq_n_s16(<8 x i16> %a) #0 {
52904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
52914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
52924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
52934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHL_N]]
529412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x8_t test_vshlq_n_s16(int16x8_t a) {
529512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_s16(a, 3);
529612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
529712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
52984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshlq_n_s32(<4 x i32> %a) #0 {
52994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
53004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
53014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <4 x i32> [[TMP1]], <i32 3, i32 3, i32 3, i32 3>
53024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHL_N]]
530312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x4_t test_vshlq_n_s32(int32x4_t a) {
530412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_s32(a, 3);
530512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
530612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshlq_n_s64(<2 x i64> %a) #0 {
53084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
53094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
53104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <2 x i64> [[TMP1]], <i64 3, i64 3>
53114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHL_N]]
531212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint64x2_t test_vshlq_n_s64(int64x2_t a) {
531312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_s64(a, 3);
531412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
531512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshl_n_u8(<8 x i8> %a) #0 {
53174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <8 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
53184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHL_N]]
531912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint8x8_t test_vshl_n_u8(int8x8_t a) {
532012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshl_n_u8(a, 3);
532112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
532212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshl_n_u16(<4 x i16> %a) #0 {
53244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
53254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
53264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <4 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3>
53274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSHL_N]]
532812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x4_t test_vshl_n_u16(int16x4_t a) {
532912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshl_n_u16(a, 3);
533012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
533112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshl_n_u32(<2 x i32> %a) #0 {
53334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
53344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
53354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <2 x i32> [[TMP1]], <i32 3, i32 3>
53364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSHL_N]]
533712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x2_t test_vshl_n_u32(int32x2_t a) {
533812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshl_n_u32(a, 3);
533912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
534012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshlq_n_u8(<16 x i8> %a) #0 {
53424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <16 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
53434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSHL_N]]
534412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint8x16_t test_vshlq_n_u8(int8x16_t a) {
534512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_u8(a, 3);
534612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
534712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshlq_n_u16(<8 x i16> %a) #0 {
53494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
53504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
53514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
53524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHL_N]]
535312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x8_t test_vshlq_n_u16(int16x8_t a) {
535412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_u16(a, 3);
535512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
535612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshlq_n_u32(<4 x i32> %a) #0 {
53584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
53594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
53604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <4 x i32> [[TMP1]], <i32 3, i32 3, i32 3, i32 3>
53614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHL_N]]
536212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x4_t test_vshlq_n_u32(int32x4_t a) {
536312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_u32(a, 3);
536412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
536512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshlq_n_u64(<2 x i64> %a) #0 {
53674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
53684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
53694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <2 x i64> [[TMP1]], <i64 3, i64 3>
53704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHL_N]]
537112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint64x2_t test_vshlq_n_u64(int64x2_t a) {
537212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshlq_n_u64(a, 3);
537312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
537412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
53754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshr_n_s8(<8 x i8> %a) #0 {
53764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <8 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
53774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHR_N]]
5378912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vshr_n_s8(int8x8_t a) {
5379912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshr_n_s8(a, 3);
5380912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5381912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
53824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshr_n_s16(<4 x i16> %a) #0 {
53834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
53844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
53854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <4 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3>
53864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSHR_N]]
5387912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vshr_n_s16(int16x4_t a) {
5388912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshr_n_s16(a, 3);
5389912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5390912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
53914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshr_n_s32(<2 x i32> %a) #0 {
53924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
53934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
53944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <2 x i32> [[TMP1]], <i32 3, i32 3>
53954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSHR_N]]
5396912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vshr_n_s32(int32x2_t a) {
5397912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshr_n_s32(a, 3);
5398912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5399912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshrq_n_s8(<16 x i8> %a) #0 {
54014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <16 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
54024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSHR_N]]
5403912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vshrq_n_s8(int8x16_t a) {
5404912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_s8(a, 3);
5405912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5406912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshrq_n_s16(<8 x i16> %a) #0 {
54084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
54094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
54104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
54114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHR_N]]
5412912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vshrq_n_s16(int16x8_t a) {
5413912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_s16(a, 3);
5414912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5415912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshrq_n_s32(<4 x i32> %a) #0 {
54174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
54184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
54194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <4 x i32> [[TMP1]], <i32 3, i32 3, i32 3, i32 3>
54204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHR_N]]
5421912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vshrq_n_s32(int32x4_t a) {
5422912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_s32(a, 3);
5423912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5424912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshrq_n_s64(<2 x i64> %a) #0 {
54264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
54274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
54284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <2 x i64> [[TMP1]], <i64 3, i64 3>
54294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHR_N]]
5430912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vshrq_n_s64(int64x2_t a) {
5431912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_s64(a, 3);
5432912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5433912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshr_n_u8(<8 x i8> %a) #0 {
54354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <8 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
54364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHR_N]]
5437912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vshr_n_u8(int8x8_t a) {
5438912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshr_n_u8(a, 3);
5439912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5440912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshr_n_u16(<4 x i16> %a) #0 {
54424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
54434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
54444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <4 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3>
54454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSHR_N]]
5446912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vshr_n_u16(int16x4_t a) {
5447912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshr_n_u16(a, 3);
5448912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5449912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshr_n_u32(<2 x i32> %a) #0 {
54514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
54524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
54534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <2 x i32> [[TMP1]], <i32 3, i32 3>
54544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSHR_N]]
5455912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vshr_n_u32(int32x2_t a) {
5456912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshr_n_u32(a, 3);
5457912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5458912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshrq_n_u8(<16 x i8> %a) #0 {
54604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <16 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
54614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSHR_N]]
5462912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vshrq_n_u8(int8x16_t a) {
5463912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_u8(a, 3);
5464912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5465912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshrq_n_u16(<8 x i16> %a) #0 {
54674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
54684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
54694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
54704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHR_N]]
5471912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vshrq_n_u16(int16x8_t a) {
5472912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_u16(a, 3);
5473912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5474912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshrq_n_u32(<4 x i32> %a) #0 {
54764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
54774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
54784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <4 x i32> [[TMP1]], <i32 3, i32 3, i32 3, i32 3>
54794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHR_N]]
5480912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vshrq_n_u32(int32x4_t a) {
5481912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_u32(a, 3);
5482912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5483912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshrq_n_u64(<2 x i64> %a) #0 {
54854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
54864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
54874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <2 x i64> [[TMP1]], <i64 3, i64 3>
54884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHR_N]]
5489912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vshrq_n_u64(int64x2_t a) {
5490912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrq_n_u64(a, 3);
5491912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5492912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
54934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsra_n_s8(<8 x i8> %a, <8 x i8> %b) #0 {
54944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <8 x i8> %b, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
54954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <8 x i8> %a, [[VSRA_N]]
54964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
5497912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vsra_n_s8(int8x8_t a, int8x8_t b) {
5498912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsra_n_s8(a, b, 3);
5499912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5500912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsra_n_s16(<4 x i16> %a, <4 x i16> %b) #0 {
55024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
55034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
55044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
55054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
55064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <4 x i16> [[TMP3]], <i16 3, i16 3, i16 3, i16 3>
55074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <4 x i16> [[TMP2]], [[VSRA_N]]
55084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP4]]
5509912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vsra_n_s16(int16x4_t a, int16x4_t b) {
5510912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsra_n_s16(a, b, 3);
5511912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5512912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsra_n_s32(<2 x i32> %a, <2 x i32> %b) #0 {
55144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
55154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
55164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
55174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
55184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <2 x i32> [[TMP3]], <i32 3, i32 3>
55194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <2 x i32> [[TMP2]], [[VSRA_N]]
55204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP4]]
5521912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vsra_n_s32(int32x2_t a, int32x2_t b) {
5522912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsra_n_s32(a, b, 3);
5523912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5524912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsraq_n_s8(<16 x i8> %a, <16 x i8> %b) #0 {
55264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <16 x i8> %b, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
55274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <16 x i8> %a, [[VSRA_N]]
55284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
5529912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vsraq_n_s8(int8x16_t a, int8x16_t b) {
5530912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_s8(a, b, 3);
5531912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5532912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsraq_n_s16(<8 x i16> %a, <8 x i16> %b) #0 {
55344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
55354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
55364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
55374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
55384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <8 x i16> [[TMP3]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
55394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <8 x i16> [[TMP2]], [[VSRA_N]]
55404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP4]]
5541912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vsraq_n_s16(int16x8_t a, int16x8_t b) {
5542912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_s16(a, b, 3);
5543912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5544912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsraq_n_s32(<4 x i32> %a, <4 x i32> %b) #0 {
55464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
55474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
55484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
55494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
55504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <4 x i32> [[TMP3]], <i32 3, i32 3, i32 3, i32 3>
55514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <4 x i32> [[TMP2]], [[VSRA_N]]
55524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP4]]
5553912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vsraq_n_s32(int32x4_t a, int32x4_t b) {
5554912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_s32(a, b, 3);
5555912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5556912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsraq_n_s64(<2 x i64> %a, <2 x i64> %b) #0 {
55584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
55594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
55604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
55614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
55624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <2 x i64> [[TMP3]], <i64 3, i64 3>
55634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <2 x i64> [[TMP2]], [[VSRA_N]]
55644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP4]]
5565912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vsraq_n_s64(int64x2_t a, int64x2_t b) {
5566912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_s64(a, b, 3);
5567912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5568912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsra_n_u8(<8 x i8> %a, <8 x i8> %b) #0 {
55704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <8 x i8> %b, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
55714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <8 x i8> %a, [[VSRA_N]]
55724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
5573912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vsra_n_u8(int8x8_t a, int8x8_t b) {
5574912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsra_n_u8(a, b, 3);
5575912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5576912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsra_n_u16(<4 x i16> %a, <4 x i16> %b) #0 {
55784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
55794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
55804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
55814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
55824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <4 x i16> [[TMP3]], <i16 3, i16 3, i16 3, i16 3>
55834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <4 x i16> [[TMP2]], [[VSRA_N]]
55844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP4]]
5585912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vsra_n_u16(int16x4_t a, int16x4_t b) {
5586912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsra_n_u16(a, b, 3);
5587912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5588912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
55894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsra_n_u32(<2 x i32> %a, <2 x i32> %b) #0 {
55904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
55914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
55924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
55934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
55944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <2 x i32> [[TMP3]], <i32 3, i32 3>
55954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <2 x i32> [[TMP2]], [[VSRA_N]]
55964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP4]]
5597912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vsra_n_u32(int32x2_t a, int32x2_t b) {
5598912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsra_n_u32(a, b, 3);
5599912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5600912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsraq_n_u8(<16 x i8> %a, <16 x i8> %b) #0 {
56024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <16 x i8> %b, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
56034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <16 x i8> %a, [[VSRA_N]]
56044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
5605912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vsraq_n_u8(int8x16_t a, int8x16_t b) {
5606912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_u8(a, b, 3);
5607912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5608912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsraq_n_u16(<8 x i16> %a, <8 x i16> %b) #0 {
56104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
56114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
56124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
56134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
56144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <8 x i16> [[TMP3]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
56154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <8 x i16> [[TMP2]], [[VSRA_N]]
56164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP4]]
5617912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vsraq_n_u16(int16x8_t a, int16x8_t b) {
5618912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_u16(a, b, 3);
5619912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5620912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsraq_n_u32(<4 x i32> %a, <4 x i32> %b) #0 {
56224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
56234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
56244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
56254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
56264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <4 x i32> [[TMP3]], <i32 3, i32 3, i32 3, i32 3>
56274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <4 x i32> [[TMP2]], [[VSRA_N]]
56284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP4]]
5629912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vsraq_n_u32(int32x4_t a, int32x4_t b) {
5630912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_u32(a, b, 3);
5631912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5632912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsraq_n_u64(<2 x i64> %a, <2 x i64> %b) #0 {
56344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
56354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
56364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
56374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
56384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <2 x i64> [[TMP3]], <i64 3, i64 3>
56394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <2 x i64> [[TMP2]], [[VSRA_N]]
56404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP4]]
5641912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vsraq_n_u64(int64x2_t a, int64x2_t b) {
5642912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsraq_n_u64(a, b, 3);
5643912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5644912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrshr_n_s8(<8 x i8> %a) #0 {
56464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %a, <8 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
56474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSHR_N]]
5648912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vrshr_n_s8(int8x8_t a) {
5649912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshr_n_s8(a, 3);
5650912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5651912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrshr_n_s16(<4 x i16> %a) #0 {
56534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
56544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
56554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> [[VRSHR_N]], <4 x i16> <i16 -3, i16 -3, i16 -3, i16 -3>)
56564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VRSHR_N1]]
5657912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vrshr_n_s16(int16x4_t a) {
5658912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshr_n_s16(a, 3);
5659912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5660912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrshr_n_s32(<2 x i32> %a) #0 {
56624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
56634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
56644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> [[VRSHR_N]], <2 x i32> <i32 -3, i32 -3>)
56654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VRSHR_N1]]
5666912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vrshr_n_s32(int32x2_t a) {
5667912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshr_n_s32(a, 3);
5668912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5669912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrshrq_n_s8(<16 x i8> %a) #0 {
56714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %a, <16 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
56724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRSHR_N]]
5673912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vrshrq_n_s8(int8x16_t a) {
5674912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_s8(a, 3);
5675912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5676912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrshrq_n_s16(<8 x i16> %a) #0 {
56784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
56794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
56804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> [[VRSHR_N]], <8 x i16> <i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3>)
56814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VRSHR_N1]]
5682912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vrshrq_n_s16(int16x8_t a) {
5683912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_s16(a, 3);
5684912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5685912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrshrq_n_s32(<4 x i32> %a) #0 {
56874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
56884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
56894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> [[VRSHR_N]], <4 x i32> <i32 -3, i32 -3, i32 -3, i32 -3>)
56904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VRSHR_N1]]
5691912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vrshrq_n_s32(int32x4_t a) {
5692912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_s32(a, 3);
5693912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5694912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
56954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vrshrq_n_s64(<2 x i64> %a) #0 {
56964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
56974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
56984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> [[VRSHR_N]], <2 x i64> <i64 -3, i64 -3>)
56994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VRSHR_N1]]
5700912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vrshrq_n_s64(int64x2_t a) {
5701912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_s64(a, 3);
5702912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5703912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrshr_n_u8(<8 x i8> %a) #0 {
57054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %a, <8 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
57064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSHR_N]]
5707912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vrshr_n_u8(int8x8_t a) {
5708912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshr_n_u8(a, 3);
5709912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5710912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrshr_n_u16(<4 x i16> %a) #0 {
57124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
57134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
57144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> [[VRSHR_N]], <4 x i16> <i16 -3, i16 -3, i16 -3, i16 -3>)
57154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VRSHR_N1]]
5716912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vrshr_n_u16(int16x4_t a) {
5717912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshr_n_u16(a, 3);
5718912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5719912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrshr_n_u32(<2 x i32> %a) #0 {
57214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
57224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
57234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> [[VRSHR_N]], <2 x i32> <i32 -3, i32 -3>)
57244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VRSHR_N1]]
5725912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vrshr_n_u32(int32x2_t a) {
5726912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshr_n_u32(a, 3);
5727912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5728912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrshrq_n_u8(<16 x i8> %a) #0 {
57304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %a, <16 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
57314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRSHR_N]]
5732912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vrshrq_n_u8(int8x16_t a) {
5733912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_u8(a, 3);
5734912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5735912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrshrq_n_u16(<8 x i16> %a) #0 {
57374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
57384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
57394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> [[VRSHR_N]], <8 x i16> <i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3>)
57404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VRSHR_N1]]
5741912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vrshrq_n_u16(int16x8_t a) {
5742912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_u16(a, 3);
5743912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5744912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrshrq_n_u32(<4 x i32> %a) #0 {
57464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
57474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
57484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> [[VRSHR_N]], <4 x i32> <i32 -3, i32 -3, i32 -3, i32 -3>)
57494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VRSHR_N1]]
5750912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vrshrq_n_u32(int32x4_t a) {
5751912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_u32(a, 3);
5752912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5753912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vrshrq_n_u64(<2 x i64> %a) #0 {
57554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
57564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
57574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> [[VRSHR_N]], <2 x i64> <i64 -3, i64 -3>)
57584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VRSHR_N1]]
5759912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vrshrq_n_u64(int64x2_t a) {
5760912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrq_n_u64(a, 3);
5761912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5762912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrsra_n_s8(<8 x i8> %a, <8 x i8> %b) #0 {
57644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %b, <8 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
57654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <8 x i8> %a, [[VRSHR_N]]
57664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
5767912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vrsra_n_s8(int8x8_t a, int8x8_t b) {
5768912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsra_n_s8(a, b, 3);
5769912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5770912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrsra_n_s16(<4 x i16> %a, <4 x i16> %b) #0 {
57724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
57734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
57744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
57754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> [[VRSHR_N]], <4 x i16> <i16 -3, i16 -3, i16 -3, i16 -3>)
57764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
57774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <4 x i16> [[TMP2]], [[VRSHR_N1]]
57784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP3]]
5779912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vrsra_n_s16(int16x4_t a, int16x4_t b) {
5780912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsra_n_s16(a, b, 3);
5781912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5782912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrsra_n_s32(<2 x i32> %a, <2 x i32> %b) #0 {
57844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
57854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
57864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
57874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> [[VRSHR_N]], <2 x i32> <i32 -3, i32 -3>)
57884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
57894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i32> [[TMP2]], [[VRSHR_N1]]
57904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP3]]
5791912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vrsra_n_s32(int32x2_t a, int32x2_t b) {
5792912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsra_n_s32(a, b, 3);
5793912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5794912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
57954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrsraq_n_s8(<16 x i8> %a, <16 x i8> %b) #0 {
57964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %b, <16 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
57974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <16 x i8> %a, [[VRSHR_N]]
57984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
5799912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vrsraq_n_s8(int8x16_t a, int8x16_t b) {
5800912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_s8(a, b, 3);
5801912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5802912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrsraq_n_s16(<8 x i16> %a, <8 x i16> %b) #0 {
58044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
58054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
58064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
58074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> [[VRSHR_N]], <8 x i16> <i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3>)
58084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
58094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <8 x i16> [[TMP2]], [[VRSHR_N1]]
58104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP3]]
5811912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vrsraq_n_s16(int16x8_t a, int16x8_t b) {
5812912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_s16(a, b, 3);
5813912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5814912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrsraq_n_s32(<4 x i32> %a, <4 x i32> %b) #0 {
58164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
58174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
58184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
58194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> [[VRSHR_N]], <4 x i32> <i32 -3, i32 -3, i32 -3, i32 -3>)
58204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
58214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <4 x i32> [[TMP2]], [[VRSHR_N1]]
58224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP3]]
5823912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vrsraq_n_s32(int32x4_t a, int32x4_t b) {
5824912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_s32(a, b, 3);
5825912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5826912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vrsraq_n_s64(<2 x i64> %a, <2 x i64> %b) #0 {
58284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
58294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
58304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
58314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> [[VRSHR_N]], <2 x i64> <i64 -3, i64 -3>)
58324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
58334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i64> [[TMP2]], [[VRSHR_N1]]
58344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP3]]
5835912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vrsraq_n_s64(int64x2_t a, int64x2_t b) {
5836912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_s64(a, b, 3);
5837912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5838912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrsra_n_u8(<8 x i8> %a, <8 x i8> %b) #0 {
58404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %b, <8 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
58414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <8 x i8> %a, [[VRSHR_N]]
58424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
5843912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vrsra_n_u8(int8x8_t a, int8x8_t b) {
5844912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsra_n_u8(a, b, 3);
5845912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5846912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrsra_n_u16(<4 x i16> %a, <4 x i16> %b) #0 {
58484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
58494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
58504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
58514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> [[VRSHR_N]], <4 x i16> <i16 -3, i16 -3, i16 -3, i16 -3>)
58524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
58534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <4 x i16> [[TMP2]], [[VRSHR_N1]]
58544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP3]]
5855912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vrsra_n_u16(int16x4_t a, int16x4_t b) {
5856912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsra_n_u16(a, b, 3);
5857912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5858912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrsra_n_u32(<2 x i32> %a, <2 x i32> %b) #0 {
58604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
58614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
58624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
58634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> [[VRSHR_N]], <2 x i32> <i32 -3, i32 -3>)
58644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
58654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i32> [[TMP2]], [[VRSHR_N1]]
58664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP3]]
5867912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vrsra_n_u32(int32x2_t a, int32x2_t b) {
5868912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsra_n_u32(a, b, 3);
5869912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5870912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrsraq_n_u8(<16 x i8> %a, <16 x i8> %b) #0 {
58724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %b, <16 x i8> <i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3, i8 -3>)
58734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add <16 x i8> %a, [[VRSHR_N]]
58744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
5875912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vrsraq_n_u8(int8x16_t a, int8x16_t b) {
5876912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_u8(a, b, 3);
5877912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5878912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrsraq_n_u16(<8 x i16> %a, <8 x i16> %b) #0 {
58804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
58814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
58824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
58834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> [[VRSHR_N]], <8 x i16> <i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3, i16 -3>)
58844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
58854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <8 x i16> [[TMP2]], [[VRSHR_N1]]
58864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP3]]
5887912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vrsraq_n_u16(int16x8_t a, int16x8_t b) {
5888912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_u16(a, b, 3);
5889912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5890912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
58914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrsraq_n_u32(<4 x i32> %a, <4 x i32> %b) #0 {
58924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
58934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
58944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
58954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> [[VRSHR_N]], <4 x i32> <i32 -3, i32 -3, i32 -3, i32 -3>)
58964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
58974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <4 x i32> [[TMP2]], [[VRSHR_N1]]
58984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP3]]
5899912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vrsraq_n_u32(int32x4_t a, int32x4_t b) {
5900912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_u32(a, b, 3);
5901912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5902912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vrsraq_n_u64(<2 x i64> %a, <2 x i64> %b) #0 {
59044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
59054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
59064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
59074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> [[VRSHR_N]], <2 x i64> <i64 -3, i64 -3>)
59084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
59094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i64> [[TMP2]], [[VRSHR_N1]]
59104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP3]]
5911912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vrsraq_n_u64(int64x2_t a, int64x2_t b) {
5912912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrsraq_n_u64(a, b, 3);
5913912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5914912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsri_n_s8(<8 x i8> %a, <8 x i8> %b) #0 {
59164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.vsri.v8i8(<8 x i8> %a, <8 x i8> %b, i32 3)
59174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSRI_N]]
5918912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vsri_n_s8(int8x8_t a, int8x8_t b) {
5919912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_s8(a, b, 3);
5920912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5921912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsri_n_s16(<4 x i16> %a, <4 x i16> %b) #0 {
59234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
59244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
59254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
59264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
59274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <4 x i16> @llvm.aarch64.neon.vsri.v4i16(<4 x i16> [[VSRI_N]], <4 x i16> [[VSRI_N1]], i32 3)
59284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSRI_N2]]
5929912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vsri_n_s16(int16x4_t a, int16x4_t b) {
5930912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_s16(a, b, 3);
5931912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5932912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsri_n_s32(<2 x i32> %a, <2 x i32> %b) #0 {
59344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
59354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
59364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
59374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
59384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <2 x i32> @llvm.aarch64.neon.vsri.v2i32(<2 x i32> [[VSRI_N]], <2 x i32> [[VSRI_N1]], i32 3)
59394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSRI_N2]]
5940912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vsri_n_s32(int32x2_t a, int32x2_t b) {
5941912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_s32(a, b, 3);
5942912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5943912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsriq_n_s8(<16 x i8> %a, <16 x i8> %b) #0 {
59454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.vsri.v16i8(<16 x i8> %a, <16 x i8> %b, i32 3)
59464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSRI_N]]
5947912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vsriq_n_s8(int8x16_t a, int8x16_t b) {
5948912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_s8(a, b, 3);
5949912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5950912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsriq_n_s16(<8 x i16> %a, <8 x i16> %b) #0 {
59524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
59534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
59544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
59554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
59564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <8 x i16> @llvm.aarch64.neon.vsri.v8i16(<8 x i16> [[VSRI_N]], <8 x i16> [[VSRI_N1]], i32 3)
59574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSRI_N2]]
5958912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vsriq_n_s16(int16x8_t a, int16x8_t b) {
5959912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_s16(a, b, 3);
5960912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5961912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsriq_n_s32(<4 x i32> %a, <4 x i32> %b) #0 {
59634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
59644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
59654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
59664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
59674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <4 x i32> @llvm.aarch64.neon.vsri.v4i32(<4 x i32> [[VSRI_N]], <4 x i32> [[VSRI_N1]], i32 3)
59684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSRI_N2]]
5969912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vsriq_n_s32(int32x4_t a, int32x4_t b) {
5970912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_s32(a, b, 3);
5971912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5972912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsriq_n_s64(<2 x i64> %a, <2 x i64> %b) #0 {
59744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
59754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
59764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
59774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
59784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <2 x i64> @llvm.aarch64.neon.vsri.v2i64(<2 x i64> [[VSRI_N]], <2 x i64> [[VSRI_N1]], i32 3)
59794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSRI_N2]]
5980912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vsriq_n_s64(int64x2_t a, int64x2_t b) {
5981912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_s64(a, b, 3);
5982912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5983912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsri_n_u8(<8 x i8> %a, <8 x i8> %b) #0 {
59854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.vsri.v8i8(<8 x i8> %a, <8 x i8> %b, i32 3)
59864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSRI_N]]
5987912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vsri_n_u8(int8x8_t a, int8x8_t b) {
5988912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_u8(a, b, 3);
5989912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
5990912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
59914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsri_n_u16(<4 x i16> %a, <4 x i16> %b) #0 {
59924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
59934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
59944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
59954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
59964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <4 x i16> @llvm.aarch64.neon.vsri.v4i16(<4 x i16> [[VSRI_N]], <4 x i16> [[VSRI_N1]], i32 3)
59974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSRI_N2]]
5998912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vsri_n_u16(int16x4_t a, int16x4_t b) {
5999912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_u16(a, b, 3);
6000912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6001912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsri_n_u32(<2 x i32> %a, <2 x i32> %b) #0 {
60034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
60044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
60054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
60064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
60074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <2 x i32> @llvm.aarch64.neon.vsri.v2i32(<2 x i32> [[VSRI_N]], <2 x i32> [[VSRI_N1]], i32 3)
60084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSRI_N2]]
6009912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vsri_n_u32(int32x2_t a, int32x2_t b) {
6010912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_u32(a, b, 3);
6011912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6012912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsriq_n_u8(<16 x i8> %a, <16 x i8> %b) #0 {
60144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.vsri.v16i8(<16 x i8> %a, <16 x i8> %b, i32 3)
60154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSRI_N]]
6016912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vsriq_n_u8(int8x16_t a, int8x16_t b) {
6017912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_u8(a, b, 3);
6018912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6019912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsriq_n_u16(<8 x i16> %a, <8 x i16> %b) #0 {
60214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
60224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
60234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
60244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
60254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <8 x i16> @llvm.aarch64.neon.vsri.v8i16(<8 x i16> [[VSRI_N]], <8 x i16> [[VSRI_N1]], i32 3)
60264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSRI_N2]]
6027912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vsriq_n_u16(int16x8_t a, int16x8_t b) {
6028912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_u16(a, b, 3);
6029912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6030912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsriq_n_u32(<4 x i32> %a, <4 x i32> %b) #0 {
60324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
60334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
60344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
60354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
60364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <4 x i32> @llvm.aarch64.neon.vsri.v4i32(<4 x i32> [[VSRI_N]], <4 x i32> [[VSRI_N1]], i32 3)
60374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSRI_N2]]
6038912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vsriq_n_u32(int32x4_t a, int32x4_t b) {
6039912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_u32(a, b, 3);
6040912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6041912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsriq_n_u64(<2 x i64> %a, <2 x i64> %b) #0 {
60434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
60444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
60454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
60464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
60474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <2 x i64> @llvm.aarch64.neon.vsri.v2i64(<2 x i64> [[VSRI_N]], <2 x i64> [[VSRI_N1]], i32 3)
60484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSRI_N2]]
6049912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vsriq_n_u64(int64x2_t a, int64x2_t b) {
6050912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_u64(a, b, 3);
6051912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6052912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsri_n_p8(<8 x i8> %a, <8 x i8> %b) #0 {
60544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.vsri.v8i8(<8 x i8> %a, <8 x i8> %b, i32 3)
60554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSRI_N]]
6056912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly8x8_t test_vsri_n_p8(poly8x8_t a, poly8x8_t b) {
6057912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_p8(a, b, 3);
6058912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6059912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsri_n_p16(<4 x i16> %a, <4 x i16> %b) #0 {
60614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
60624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
60634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
60644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
60654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <4 x i16> @llvm.aarch64.neon.vsri.v4i16(<4 x i16> [[VSRI_N]], <4 x i16> [[VSRI_N1]], i32 15)
60664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSRI_N2]]
6067912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly16x4_t test_vsri_n_p16(poly16x4_t a, poly16x4_t b) {
6068912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsri_n_p16(a, b, 15);
6069912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6070912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsriq_n_p8(<16 x i8> %a, <16 x i8> %b) #0 {
60724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.vsri.v16i8(<16 x i8> %a, <16 x i8> %b, i32 3)
60734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSRI_N]]
6074912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly8x16_t test_vsriq_n_p8(poly8x16_t a, poly8x16_t b) {
6075912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_p8(a, b, 3);
6076912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6077912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsriq_n_p16(<8 x i16> %a, <8 x i16> %b) #0 {
60794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
60804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
60814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
60824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
60834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <8 x i16> @llvm.aarch64.neon.vsri.v8i16(<8 x i16> [[VSRI_N]], <8 x i16> [[VSRI_N1]], i32 15)
60844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSRI_N2]]
6085912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly16x8_t test_vsriq_n_p16(poly16x8_t a, poly16x8_t b) {
6086912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsriq_n_p16(a, b, 15);
6087912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6088912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsli_n_s8(<8 x i8> %a, <8 x i8> %b) #0 {
60904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.vsli.v8i8(<8 x i8> %a, <8 x i8> %b, i32 3)
60914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSLI_N]]
6092912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vsli_n_s8(int8x8_t a, int8x8_t b) {
6093912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_s8(a, b, 3);
6094912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6095912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
60964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsli_n_s16(<4 x i16> %a, <4 x i16> %b) #0 {
60974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
60984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
60994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
61004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
61014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <4 x i16> @llvm.aarch64.neon.vsli.v4i16(<4 x i16> [[VSLI_N]], <4 x i16> [[VSLI_N1]], i32 3)
61024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSLI_N2]]
6103912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vsli_n_s16(int16x4_t a, int16x4_t b) {
6104912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_s16(a, b, 3);
6105912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6106912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsli_n_s32(<2 x i32> %a, <2 x i32> %b) #0 {
61084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
61094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
61104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
61114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
61124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <2 x i32> @llvm.aarch64.neon.vsli.v2i32(<2 x i32> [[VSLI_N]], <2 x i32> [[VSLI_N1]], i32 3)
61134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSLI_N2]]
6114912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vsli_n_s32(int32x2_t a, int32x2_t b) {
6115912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_s32(a, b, 3);
6116912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6117912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsliq_n_s8(<16 x i8> %a, <16 x i8> %b) #0 {
61194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.vsli.v16i8(<16 x i8> %a, <16 x i8> %b, i32 3)
61204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSLI_N]]
6121912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vsliq_n_s8(int8x16_t a, int8x16_t b) {
6122912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_s8(a, b, 3);
6123912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6124912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsliq_n_s16(<8 x i16> %a, <8 x i16> %b) #0 {
61264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
61274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
61284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
61294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
61304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <8 x i16> @llvm.aarch64.neon.vsli.v8i16(<8 x i16> [[VSLI_N]], <8 x i16> [[VSLI_N1]], i32 3)
61314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSLI_N2]]
6132912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vsliq_n_s16(int16x8_t a, int16x8_t b) {
6133912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_s16(a, b, 3);
6134912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6135912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsliq_n_s32(<4 x i32> %a, <4 x i32> %b) #0 {
61374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
61384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
61394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
61404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
61414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <4 x i32> @llvm.aarch64.neon.vsli.v4i32(<4 x i32> [[VSLI_N]], <4 x i32> [[VSLI_N1]], i32 3)
61424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSLI_N2]]
6143912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vsliq_n_s32(int32x4_t a, int32x4_t b) {
6144912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_s32(a, b, 3);
6145912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6146912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsliq_n_s64(<2 x i64> %a, <2 x i64> %b) #0 {
61484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
61494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
61504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
61514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
61524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <2 x i64> @llvm.aarch64.neon.vsli.v2i64(<2 x i64> [[VSLI_N]], <2 x i64> [[VSLI_N1]], i32 3)
61534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSLI_N2]]
6154912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vsliq_n_s64(int64x2_t a, int64x2_t b) {
6155912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_s64(a, b, 3);
6156912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6157912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsli_n_u8(<8 x i8> %a, <8 x i8> %b) #0 {
61594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.vsli.v8i8(<8 x i8> %a, <8 x i8> %b, i32 3)
61604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSLI_N]]
6161912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x8_t test_vsli_n_u8(uint8x8_t a, uint8x8_t b) {
6162912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_u8(a, b, 3);
6163912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6164912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsli_n_u16(<4 x i16> %a, <4 x i16> %b) #0 {
61664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
61674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
61684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
61694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
61704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <4 x i16> @llvm.aarch64.neon.vsli.v4i16(<4 x i16> [[VSLI_N]], <4 x i16> [[VSLI_N1]], i32 3)
61714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSLI_N2]]
6172912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x4_t test_vsli_n_u16(uint16x4_t a, uint16x4_t b) {
6173912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_u16(a, b, 3);
6174912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6175912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsli_n_u32(<2 x i32> %a, <2 x i32> %b) #0 {
61774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
61784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
61794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
61804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
61814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <2 x i32> @llvm.aarch64.neon.vsli.v2i32(<2 x i32> [[VSLI_N]], <2 x i32> [[VSLI_N1]], i32 3)
61824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSLI_N2]]
6183912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x2_t test_vsli_n_u32(uint32x2_t a, uint32x2_t b) {
6184912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_u32(a, b, 3);
6185912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6186912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsliq_n_u8(<16 x i8> %a, <16 x i8> %b) #0 {
61884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.vsli.v16i8(<16 x i8> %a, <16 x i8> %b, i32 3)
61894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSLI_N]]
6190912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x16_t test_vsliq_n_u8(uint8x16_t a, uint8x16_t b) {
6191912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_u8(a, b, 3);
6192912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6193912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
61944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsliq_n_u16(<8 x i16> %a, <8 x i16> %b) #0 {
61954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
61964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
61974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
61984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
61994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <8 x i16> @llvm.aarch64.neon.vsli.v8i16(<8 x i16> [[VSLI_N]], <8 x i16> [[VSLI_N1]], i32 3)
62004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSLI_N2]]
6201912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x8_t test_vsliq_n_u16(uint16x8_t a, uint16x8_t b) {
6202912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_u16(a, b, 3);
6203912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6204912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsliq_n_u32(<4 x i32> %a, <4 x i32> %b) #0 {
62064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
62074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
62084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
62094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
62104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <4 x i32> @llvm.aarch64.neon.vsli.v4i32(<4 x i32> [[VSLI_N]], <4 x i32> [[VSLI_N1]], i32 3)
62114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSLI_N2]]
6212912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x4_t test_vsliq_n_u32(uint32x4_t a, uint32x4_t b) {
6213912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_u32(a, b, 3);
6214912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6215912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsliq_n_u64(<2 x i64> %a, <2 x i64> %b) #0 {
62174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
62184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
62194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
62204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
62214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <2 x i64> @llvm.aarch64.neon.vsli.v2i64(<2 x i64> [[VSLI_N]], <2 x i64> [[VSLI_N1]], i32 3)
62224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSLI_N2]]
6223912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint64x2_t test_vsliq_n_u64(uint64x2_t a, uint64x2_t b) {
6224912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_u64(a, b, 3);
6225912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6226912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsli_n_p8(<8 x i8> %a, <8 x i8> %b) #0 {
62284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.vsli.v8i8(<8 x i8> %a, <8 x i8> %b, i32 3)
62294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSLI_N]]
6230912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly8x8_t test_vsli_n_p8(poly8x8_t a, poly8x8_t b) {
6231912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_p8(a, b, 3);
6232912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6233912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsli_n_p16(<4 x i16> %a, <4 x i16> %b) #0 {
62354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
62364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
62374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
62384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
62394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <4 x i16> @llvm.aarch64.neon.vsli.v4i16(<4 x i16> [[VSLI_N]], <4 x i16> [[VSLI_N1]], i32 15)
62404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSLI_N2]]
6241912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly16x4_t test_vsli_n_p16(poly16x4_t a, poly16x4_t b) {
6242912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsli_n_p16(a, b, 15);
6243912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6244912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsliq_n_p8(<16 x i8> %a, <16 x i8> %b) #0 {
62464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.vsli.v16i8(<16 x i8> %a, <16 x i8> %b, i32 3)
62474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSLI_N]]
6248912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly8x16_t test_vsliq_n_p8(poly8x16_t a, poly8x16_t b) {
6249912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_p8(a, b, 3);
6250912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6251912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsliq_n_p16(<8 x i16> %a, <8 x i16> %b) #0 {
62534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
62544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
62554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
62564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
62574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <8 x i16> @llvm.aarch64.neon.vsli.v8i16(<8 x i16> [[VSLI_N]], <8 x i16> [[VSLI_N1]], i32 15)
62584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSLI_N2]]
6259912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liupoly16x8_t test_vsliq_n_p16(poly16x8_t a, poly16x8_t b) {
6260912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vsliq_n_p16(a, b, 15);
6261912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6262912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshlu_n_s8(<8 x i8> %a) #0 {
62644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshlu.v8i8(<8 x i8> %a, <8 x i8> <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>)
62654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHLU_N]]
6266912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vqshlu_n_s8(int8x8_t a) {
6267912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshlu_n_s8(a, 3);
6268912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6269912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshlu_n_s16(<4 x i16> %a) #0 {
62714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
62724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
62734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshlu.v4i16(<4 x i16> [[VQSHLU_N]], <4 x i16> <i16 3, i16 3, i16 3, i16 3>)
62744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQSHLU_N1]]
6275912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vqshlu_n_s16(int16x4_t a) {
6276912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshlu_n_s16(a, 3);
6277912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6278912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshlu_n_s32(<2 x i32> %a) #0 {
62804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
62814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
62824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqshlu.v2i32(<2 x i32> [[VQSHLU_N]], <2 x i32> <i32 3, i32 3>)
62834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQSHLU_N1]]
6284912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vqshlu_n_s32(int32x2_t a) {
6285912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshlu_n_s32(a, 3);
6286912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6287912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshluq_n_s8(<16 x i8> %a) #0 {
62894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqshlu.v16i8(<16 x i8> %a, <16 x i8> <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>)
62904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQSHLU_N]]
6291912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vqshluq_n_s8(int8x16_t a) {
6292912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshluq_n_s8(a, 3);
6293912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6294912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
62954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshluq_n_s16(<8 x i16> %a) #0 {
62964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
62974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
62984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N1:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqshlu.v8i16(<8 x i16> [[VQSHLU_N]], <8 x i16> <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>)
62994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VQSHLU_N1]]
6300912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vqshluq_n_s16(int16x8_t a) {
6301912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshluq_n_s16(a, 3);
6302912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6303912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshluq_n_s32(<4 x i32> %a) #0 {
63054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
63064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
63074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqshlu.v4i32(<4 x i32> [[VQSHLU_N]], <4 x i32> <i32 3, i32 3, i32 3, i32 3>)
63084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VQSHLU_N1]]
6309912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vqshluq_n_s32(int32x4_t a) {
6310912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshluq_n_s32(a, 3);
6311912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6312912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqshluq_n_s64(<2 x i64> %a) #0 {
63144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
63154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
63164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqshlu.v2i64(<2 x i64> [[VQSHLU_N]], <2 x i64> <i64 3, i64 3>)
63174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VQSHLU_N1]]
6318912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vqshluq_n_s64(int64x2_t a) {
6319912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshluq_n_s64(a, 3);
6320912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6321912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshrn_n_s16(<8 x i16> %a) #0 {
63234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
63244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
63254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = ashr <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
63264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <8 x i16> [[TMP2]] to <8 x i8>
63274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHRN_N]]
6328912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vshrn_n_s16(int16x8_t a) {
6329912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_n_s16(a, 3);
6330912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6331912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshrn_n_s32(<4 x i32> %a) #0 {
63334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
63344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
63354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = ashr <4 x i32> [[TMP1]], <i32 9, i32 9, i32 9, i32 9>
63364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <4 x i32> [[TMP2]] to <4 x i16>
63374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSHRN_N]]
6338912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vshrn_n_s32(int32x4_t a) {
6339912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_n_s32(a, 9);
6340912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6341912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshrn_n_s64(<2 x i64> %a) #0 {
63434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
63444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
63454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = ashr <2 x i64> [[TMP1]], <i64 19, i64 19>
63464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <2 x i64> [[TMP2]] to <2 x i32>
63474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSHRN_N]]
6348912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vshrn_n_s64(int64x2_t a) {
6349912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_n_s64(a, 19);
6350912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6351912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vshrn_n_u16(<8 x i16> %a) #0 {
63534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
63544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
63554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = lshr <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
63564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <8 x i16> [[TMP2]] to <8 x i8>
63574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSHRN_N]]
6358912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x8_t test_vshrn_n_u16(uint16x8_t a) {
6359912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_n_u16(a, 3);
6360912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6361912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vshrn_n_u32(<4 x i32> %a) #0 {
63634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
63644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
63654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = lshr <4 x i32> [[TMP1]], <i32 9, i32 9, i32 9, i32 9>
63664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <4 x i32> [[TMP2]] to <4 x i16>
63674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSHRN_N]]
6368912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x4_t test_vshrn_n_u32(uint32x4_t a) {
6369912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_n_u32(a, 9);
6370912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6371912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vshrn_n_u64(<2 x i64> %a) #0 {
63734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
63744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
63754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = lshr <2 x i64> [[TMP1]], <i64 19, i64 19>
63764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <2 x i64> [[TMP2]] to <2 x i32>
63774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSHRN_N]]
6378912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x2_t test_vshrn_n_u64(uint64x2_t a) {
6379912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_n_u64(a, 19);
6380912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6381912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshrn_high_n_s16(<8 x i8> %a, <8 x i16> %b) #0 {
63834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
63844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
63854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = ashr <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
63864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <8 x i16> [[TMP2]] to <8 x i8>
63874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VSHRN_N]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
63884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6389912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vshrn_high_n_s16(int8x8_t a, int16x8_t b) {
6390912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_high_n_s16(a, b, 3);
6391912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6392912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
63934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshrn_high_n_s32(<4 x i16> %a, <4 x i32> %b) #0 {
63944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
63954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
63964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = ashr <4 x i32> [[TMP1]], <i32 9, i32 9, i32 9, i32 9>
63974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <4 x i32> [[TMP2]] to <4 x i16>
63984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VSHRN_N]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
63994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6400912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vshrn_high_n_s32(int16x4_t a, int32x4_t b) {
6401912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_high_n_s32(a, b, 9);
6402912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6403912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshrn_high_n_s64(<2 x i32> %a, <2 x i64> %b) #0 {
64054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
64064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
64074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = ashr <2 x i64> [[TMP1]], <i64 19, i64 19>
64084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <2 x i64> [[TMP2]] to <2 x i32>
64094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VSHRN_N]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
64104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6411912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vshrn_high_n_s64(int32x2_t a, int64x2_t b) {
6412912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_high_n_s64(a, b, 19);
6413912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6414912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vshrn_high_n_u16(<8 x i8> %a, <8 x i16> %b) #0 {
64164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
64174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
64184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = lshr <8 x i16> [[TMP1]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
64194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <8 x i16> [[TMP2]] to <8 x i8>
64204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VSHRN_N]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
64214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6422912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x16_t test_vshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
6423912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_high_n_u16(a, b, 3);
6424912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6425912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshrn_high_n_u32(<4 x i16> %a, <4 x i32> %b) #0 {
64274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
64284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
64294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = lshr <4 x i32> [[TMP1]], <i32 9, i32 9, i32 9, i32 9>
64304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <4 x i32> [[TMP2]] to <4 x i16>
64314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VSHRN_N]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
64324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6433912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x8_t test_vshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
6434912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_high_n_u32(a, b, 9);
6435912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6436912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshrn_high_n_u64(<2 x i32> %a, <2 x i64> %b) #0 {
64384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
64394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
64404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = lshr <2 x i64> [[TMP1]], <i64 19, i64 19>
64414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHRN_N:%.*]] = trunc <2 x i64> [[TMP2]] to <2 x i32>
64424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VSHRN_N]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
64434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6444912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x4_t test_vshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
6445912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vshrn_high_n_u64(a, b, 19);
6446912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6447912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshrun_n_s16(<8 x i16> %a) #0 {
64494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
64504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
64514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16> [[VQSHRUN_N]], i32 3)
64524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHRUN_N1]]
6453912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vqshrun_n_s16(int16x8_t a) {
6454912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrun_n_s16(a, 3);
6455912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6456912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshrun_n_s32(<4 x i32> %a) #0 {
64584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
64594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
64604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32> [[VQSHRUN_N]], i32 9)
64614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQSHRUN_N1]]
6462912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vqshrun_n_s32(int32x4_t a) {
6463912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrun_n_s32(a, 9);
6464912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6465912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshrun_n_s64(<2 x i64> %a) #0 {
64674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
64684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
64694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64> [[VQSHRUN_N]], i32 19)
64704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQSHRUN_N1]]
6471912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vqshrun_n_s64(int64x2_t a) {
6472912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrun_n_s64(a, 19);
6473912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6474912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshrun_high_n_s16(<8 x i8> %a, <8 x i16> %b) #0 {
64764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
64774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
64784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16> [[VQSHRUN_N]], i32 3)
64794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQSHRUN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
64804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6481912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vqshrun_high_n_s16(int8x8_t a, int16x8_t b) {
6482912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrun_high_n_s16(a, b, 3);
6483912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6484912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshrun_high_n_s32(<4 x i16> %a, <4 x i32> %b) #0 {
64864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
64874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
64884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32> [[VQSHRUN_N]], i32 9)
64894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VQSHRUN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
64904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6491912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vqshrun_high_n_s32(int16x4_t a, int32x4_t b) {
6492912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrun_high_n_s32(a, b, 9);
6493912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6494912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
64954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshrun_high_n_s64(<2 x i32> %a, <2 x i64> %b) #0 {
64964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
64974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
64984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64> [[VQSHRUN_N]], i32 19)
64994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VQSHRUN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
65004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6501912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vqshrun_high_n_s64(int32x2_t a, int64x2_t b) {
6502912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrun_high_n_s64(a, b, 19);
6503912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6504912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrshrn_n_s16(<8 x i16> %a) #0 {
65064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
65074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
65084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> [[VRSHRN_N]], i32 3)
65094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSHRN_N1]]
6510912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vrshrn_n_s16(int16x8_t a) {
6511912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_n_s16(a, 3);
6512912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6513912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrshrn_n_s32(<4 x i32> %a) #0 {
65154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
65164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
65174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> [[VRSHRN_N]], i32 9)
65184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VRSHRN_N1]]
6519912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vrshrn_n_s32(int32x4_t a) {
6520912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_n_s32(a, 9);
6521912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6522912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrshrn_n_s64(<2 x i64> %a) #0 {
65244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
65254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
65264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> [[VRSHRN_N]], i32 19)
65274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VRSHRN_N1]]
6528912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vrshrn_n_s64(int64x2_t a) {
6529912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_n_s64(a, 19);
6530912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6531912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrshrn_n_u16(<8 x i16> %a) #0 {
65334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
65344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
65354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> [[VRSHRN_N]], i32 3)
65364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSHRN_N1]]
6537912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x8_t test_vrshrn_n_u16(uint16x8_t a) {
6538912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_n_u16(a, 3);
6539912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6540912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrshrn_n_u32(<4 x i32> %a) #0 {
65424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
65434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
65444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> [[VRSHRN_N]], i32 9)
65454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VRSHRN_N1]]
6546912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x4_t test_vrshrn_n_u32(uint32x4_t a) {
6547912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_n_u32(a, 9);
6548912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6549912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrshrn_n_u64(<2 x i64> %a) #0 {
65514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
65524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
65534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> [[VRSHRN_N]], i32 19)
65544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VRSHRN_N1]]
6555912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x2_t test_vrshrn_n_u64(uint64x2_t a) {
6556912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_n_u64(a, 19);
6557912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6558912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrshrn_high_n_s16(<8 x i8> %a, <8 x i16> %b) #0 {
65604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
65614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
65624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> [[VRSHRN_N]], i32 3)
65634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VRSHRN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
65644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6565912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vrshrn_high_n_s16(int8x8_t a, int16x8_t b) {
6566912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_high_n_s16(a, b, 3);
6567912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6568912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrshrn_high_n_s32(<4 x i16> %a, <4 x i32> %b) #0 {
65704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
65714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
65724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> [[VRSHRN_N]], i32 9)
65734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VRSHRN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
65744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6575912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vrshrn_high_n_s32(int16x4_t a, int32x4_t b) {
6576912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_high_n_s32(a, b, 9);
6577912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6578912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrshrn_high_n_s64(<2 x i32> %a, <2 x i64> %b) #0 {
65804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
65814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
65824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> [[VRSHRN_N]], i32 19)
65834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VRSHRN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
65844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6585912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vrshrn_high_n_s64(int32x2_t a, int64x2_t b) {
6586912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_high_n_s64(a, b, 19);
6587912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6588912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrshrn_high_n_u16(<8 x i8> %a, <8 x i16> %b) #0 {
65904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
65914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
65924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> [[VRSHRN_N]], i32 3)
65934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VRSHRN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
65944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6595912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x16_t test_vrshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
6596912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_high_n_u16(a, b, 3);
6597912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6598912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
65994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrshrn_high_n_u32(<4 x i16> %a, <4 x i32> %b) #0 {
66004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
66014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
66024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> [[VRSHRN_N]], i32 9)
66034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VRSHRN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
66044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6605912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x8_t test_vrshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
6606912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_high_n_u32(a, b, 9);
6607912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6608912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrshrn_high_n_u64(<2 x i32> %a, <2 x i64> %b) #0 {
66104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
66114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
66124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> [[VRSHRN_N]], i32 19)
66134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VRSHRN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
66144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6615912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x4_t test_vrshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
6616912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vrshrn_high_n_u64(a, b, 19);
6617912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6618912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqrshrun_n_s16(<8 x i16> %a) #0 {
66204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
66214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
66224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16> [[VQRSHRUN_N]], i32 3)
66234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQRSHRUN_N1]]
6624912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vqrshrun_n_s16(int16x8_t a) {
6625912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrun_n_s16(a, 3);
6626912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6627912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqrshrun_n_s32(<4 x i32> %a) #0 {
66294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
66304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
66314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32> [[VQRSHRUN_N]], i32 9)
66324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQRSHRUN_N1]]
6633912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vqrshrun_n_s32(int32x4_t a) {
6634912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrun_n_s32(a, 9);
6635912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6636912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqrshrun_n_s64(<2 x i64> %a) #0 {
66384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
66394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
66404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64> [[VQRSHRUN_N]], i32 19)
66414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQRSHRUN_N1]]
6642912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vqrshrun_n_s64(int64x2_t a) {
6643912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrun_n_s64(a, 19);
6644912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6645912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqrshrun_high_n_s16(<8 x i8> %a, <8 x i16> %b) #0 {
66474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
66484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
66494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16> [[VQRSHRUN_N]], i32 3)
66504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQRSHRUN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
66514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6652912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vqrshrun_high_n_s16(int8x8_t a, int16x8_t b) {
6653912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrun_high_n_s16(a, b, 3);
6654912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6655912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqrshrun_high_n_s32(<4 x i16> %a, <4 x i32> %b) #0 {
66574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
66584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
66594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32> [[VQRSHRUN_N]], i32 9)
66604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VQRSHRUN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
66614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6662912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vqrshrun_high_n_s32(int16x4_t a, int32x4_t b) {
6663912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrun_high_n_s32(a, b, 9);
6664912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6665912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqrshrun_high_n_s64(<2 x i32> %a, <2 x i64> %b) #0 {
66674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
66684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
66694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64> [[VQRSHRUN_N]], i32 19)
66704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VQRSHRUN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
66714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6672912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vqrshrun_high_n_s64(int32x2_t a, int64x2_t b) {
6673912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrun_high_n_s64(a, b, 19);
6674912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6675912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshrn_n_s16(<8 x i16> %a) #0 {
66774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
66784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
66794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16> [[VQSHRN_N]], i32 3)
66804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHRN_N1]]
6681912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vqshrn_n_s16(int16x8_t a) {
6682912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_n_s16(a, 3);
6683912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6684912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshrn_n_s32(<4 x i32> %a) #0 {
66864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
66874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
66884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32> [[VQSHRN_N]], i32 9)
66894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQSHRN_N1]]
6690912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vqshrn_n_s32(int32x4_t a) {
6691912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_n_s32(a, 9);
6692912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6693912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
66944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshrn_n_s64(<2 x i64> %a) #0 {
66954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
66964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
66974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64> [[VQSHRN_N]], i32 19)
66984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQSHRN_N1]]
6699912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vqshrn_n_s64(int64x2_t a) {
6700912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_n_s64(a, 19);
6701912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6702912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshrn_n_u16(<8 x i16> %a) #0 {
67044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
67054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
67064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16> [[VQSHRN_N]], i32 3)
67074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHRN_N1]]
6708912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x8_t test_vqshrn_n_u16(uint16x8_t a) {
6709912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_n_u16(a, 3);
6710912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6711912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshrn_n_u32(<4 x i32> %a) #0 {
67134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
67144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
67154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32> [[VQSHRN_N]], i32 9)
67164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQSHRN_N1]]
6717912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x4_t test_vqshrn_n_u32(uint32x4_t a) {
6718912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_n_u32(a, 9);
6719912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6720912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshrn_n_u64(<2 x i64> %a) #0 {
67224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
67234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
67244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64> [[VQSHRN_N]], i32 19)
67254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQSHRN_N1]]
6726912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x2_t test_vqshrn_n_u64(uint64x2_t a) {
6727912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_n_u64(a, 19);
6728912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6729912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshrn_high_n_s16(<8 x i8> %a, <8 x i16> %b) #0 {
67314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
67324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
67334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16> [[VQSHRN_N]], i32 3)
67344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQSHRN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
67354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6736912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vqshrn_high_n_s16(int8x8_t a, int16x8_t b) {
6737912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_high_n_s16(a, b, 3);
6738912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6739912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshrn_high_n_s32(<4 x i16> %a, <4 x i32> %b) #0 {
67414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
67424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
67434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32> [[VQSHRN_N]], i32 9)
67444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VQSHRN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
67454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6746912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vqshrn_high_n_s32(int16x4_t a, int32x4_t b) {
6747912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_high_n_s32(a, b, 9);
6748912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6749912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshrn_high_n_s64(<2 x i32> %a, <2 x i64> %b) #0 {
67514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
67524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
67534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64> [[VQSHRN_N]], i32 19)
67544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VQSHRN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
67554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6756912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vqshrn_high_n_s64(int32x2_t a, int64x2_t b) {
6757912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_high_n_s64(a, b, 19);
6758912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6759912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshrn_high_n_u16(<8 x i8> %a, <8 x i16> %b) #0 {
67614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
67624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
67634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16> [[VQSHRN_N]], i32 3)
67644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQSHRN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
67654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6766912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x16_t test_vqshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
6767912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_high_n_u16(a, b, 3);
6768912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6769912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshrn_high_n_u32(<4 x i16> %a, <4 x i32> %b) #0 {
67714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
67724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
67734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32> [[VQSHRN_N]], i32 9)
67744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VQSHRN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
67754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6776912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x8_t test_vqshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
6777912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_high_n_u32(a, b, 9);
6778912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6779912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshrn_high_n_u64(<2 x i32> %a, <2 x i64> %b) #0 {
67814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
67824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
67834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64> [[VQSHRN_N]], i32 19)
67844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VQSHRN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
67854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6786912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x4_t test_vqshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
6787912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqshrn_high_n_u64(a, b, 19);
6788912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6789912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqrshrn_n_s16(<8 x i16> %a) #0 {
67914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
67924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
67934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16> [[VQRSHRN_N]], i32 3)
67944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQRSHRN_N1]]
6795912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x8_t test_vqrshrn_n_s16(int16x8_t a) {
6796912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_n_s16(a, 3);
6797912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6798912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
67994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqrshrn_n_s32(<4 x i32> %a) #0 {
68004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
68014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
68024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32> [[VQRSHRN_N]], i32 9)
68034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQRSHRN_N1]]
6804912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x4_t test_vqrshrn_n_s32(int32x4_t a) {
6805912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_n_s32(a, 9);
6806912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6807912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqrshrn_n_s64(<2 x i64> %a) #0 {
68094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
68104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
68114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64> [[VQRSHRN_N]], i32 19)
68124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQRSHRN_N1]]
6813912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vqrshrn_n_s64(int64x2_t a) {
6814912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_n_s64(a, 19);
6815912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6816912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqrshrn_n_u16(<8 x i16> %a) #0 {
68184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
68194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
68204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16> [[VQRSHRN_N]], i32 3)
68214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQRSHRN_N1]]
6822912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x8_t test_vqrshrn_n_u16(uint16x8_t a) {
6823912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_n_u16(a, 3);
6824912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6825912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqrshrn_n_u32(<4 x i32> %a) #0 {
68274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
68284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
68294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32> [[VQRSHRN_N]], i32 9)
68304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQRSHRN_N1]]
6831912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x4_t test_vqrshrn_n_u32(uint32x4_t a) {
6832912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_n_u32(a, 9);
6833912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6834912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqrshrn_n_u64(<2 x i64> %a) #0 {
68364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
68374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
68384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64> [[VQRSHRN_N]], i32 19)
68394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQRSHRN_N1]]
6840912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x2_t test_vqrshrn_n_u64(uint64x2_t a) {
6841912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_n_u64(a, 19);
6842912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6843912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqrshrn_high_n_s16(<8 x i8> %a, <8 x i16> %b) #0 {
68454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
68464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
68474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16> [[VQRSHRN_N]], i32 3)
68484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQRSHRN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
68494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6850912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint8x16_t test_vqrshrn_high_n_s16(int8x8_t a, int16x8_t b) {
6851912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_high_n_s16(a, b, 3);
6852912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6853912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqrshrn_high_n_s32(<4 x i16> %a, <4 x i32> %b) #0 {
68554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
68564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
68574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32> [[VQRSHRN_N]], i32 9)
68584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VQRSHRN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
68594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6860912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint16x8_t test_vqrshrn_high_n_s32(int16x4_t a, int32x4_t b) {
6861912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_high_n_s32(a, b, 9);
6862912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6863912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqrshrn_high_n_s64(<2 x i32> %a, <2 x i64> %b) #0 {
68654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
68664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
68674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64> [[VQRSHRN_N]], i32 19)
68684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VQRSHRN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
68694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6870912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vqrshrn_high_n_s64(int32x2_t a, int64x2_t b) {
6871912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_high_n_s64(a, b, 19);
6872912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6873912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqrshrn_high_n_u16(<8 x i8> %a, <8 x i16> %b) #0 {
68754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
68764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
68774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16> [[VQRSHRN_N]], i32 3)
68784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQRSHRN_N1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
68794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
6880912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint8x16_t test_vqrshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
6881912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_high_n_u16(a, b, 3);
6882912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6883912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqrshrn_high_n_u32(<4 x i16> %a, <4 x i32> %b) #0 {
68854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
68864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
68874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32> [[VQRSHRN_N]], i32 9)
68884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VQRSHRN_N1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
68894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
6890912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint16x8_t test_vqrshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
6891912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_high_n_u32(a, b, 9);
6892912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6893912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
68944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqrshrn_high_n_u64(<2 x i32> %a, <2 x i64> %b) #0 {
68954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
68964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
68974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRN_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64> [[VQRSHRN_N]], i32 19)
68984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VQRSHRN_N1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
68994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
6900912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x4_t test_vqrshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
6901912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vqrshrn_high_n_u64(a, b, 19);
6902912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
6903912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
69044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_n_s8(<8 x i8> %a) #0 {
69054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> %a to <8 x i16>
69064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
69074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
690812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x8_t test_vshll_n_s8(int8x8_t a) {
690912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_n_s8(a, 3);
691012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
691112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_n_s16(<4 x i16> %a) #0 {
69134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
69144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
69154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
69164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 9, i32 9, i32 9, i32 9>
69174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
691812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x4_t test_vshll_n_s16(int16x4_t a) {
691912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_n_s16(a, 9);
692012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
692112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_n_s32(<2 x i32> %a) #0 {
69234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
69244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
69254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
69264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 19, i64 19>
69274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
692812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint64x2_t test_vshll_n_s32(int32x2_t a) {
692912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_n_s32(a, 19);
693012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
693112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_n_u8(<8 x i8> %a) #0 {
69334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> %a to <8 x i16>
69344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
69354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
693612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint16x8_t test_vshll_n_u8(uint8x8_t a) {
693712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_n_u8(a, 3);
693812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
693912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_n_u16(<4 x i16> %a) #0 {
69414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
69424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
69434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
69444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 9, i32 9, i32 9, i32 9>
69454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
694612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint32x4_t test_vshll_n_u16(uint16x4_t a) {
694712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_n_u16(a, 9);
694812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
694912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_n_u32(<2 x i32> %a) #0 {
69514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
69524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
69534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
69544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 19, i64 19>
69554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
695612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint64x2_t test_vshll_n_u32(uint32x2_t a) {
695712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_n_u32(a, 19);
695812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
695912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_high_n_s8(<16 x i8> %a) #0 {
69614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
69624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> [[SHUFFLE_I]] to <8 x i16>
69634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
69644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
696512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x8_t test_vshll_high_n_s8(int8x16_t a) {
696612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_high_n_s8(a, 3);
696712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
696812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_high_n_s16(<8 x i16> %a) #0 {
69704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
69714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I]] to <8 x i8>
69724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
69734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
69744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 9, i32 9, i32 9, i32 9>
69754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
697612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x4_t test_vshll_high_n_s16(int16x8_t a) {
697712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_high_n_s16(a, 9);
697812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
697912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_high_n_s32(<4 x i32> %a) #0 {
69814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
69824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I]] to <8 x i8>
69834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
69844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
69854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 19, i64 19>
69864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
698712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint64x2_t test_vshll_high_n_s32(int32x4_t a) {
698812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_high_n_s32(a, 19);
698912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
699012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
69914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_high_n_u8(<16 x i8> %a) #0 {
69924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
69934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> [[SHUFFLE_I]] to <8 x i16>
69944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
69954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
699612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint16x8_t test_vshll_high_n_u8(uint8x16_t a) {
699712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_high_n_u8(a, 3);
699812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
699912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_high_n_u16(<8 x i16> %a) #0 {
70014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
70024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I]] to <8 x i8>
70034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
70044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
70054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 9, i32 9, i32 9, i32 9>
70064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
700712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint32x4_t test_vshll_high_n_u16(uint16x8_t a) {
700812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_high_n_u16(a, 9);
700912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
701012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_high_n_u32(<4 x i32> %a) #0 {
70124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
70134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I]] to <8 x i8>
70144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
70154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
70164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 19, i64 19>
70174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
701812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint64x2_t test_vshll_high_n_u32(uint32x4_t a) {
701912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vshll_high_n_u32(a, 19);
702012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
702112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmovl_s8(<8 x i8> %a) #0 {
70234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I:%.*]] = sext <8 x i8> %a to <8 x i16>
70244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMOVL_I]]
702512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x8_t test_vmovl_s8(int8x8_t a) {
702612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_s8(a);
702712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
702812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmovl_s16(<4 x i16> %a) #0 {
70304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
70314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
70324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
70334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMOVL_I]]
703412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x4_t test_vmovl_s16(int16x4_t a) {
703512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_s16(a);
703612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
703712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmovl_s32(<2 x i32> %a) #0 {
70394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
70404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
70414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
70424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMOVL_I]]
704312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint64x2_t test_vmovl_s32(int32x2_t a) {
704412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_s32(a);
704512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
704612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmovl_u8(<8 x i8> %a) #0 {
70484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I:%.*]] = zext <8 x i8> %a to <8 x i16>
70494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMOVL_I]]
705012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint16x8_t test_vmovl_u8(uint8x8_t a) {
705112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_u8(a);
705212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
705312cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmovl_u16(<4 x i16> %a) #0 {
70554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
70564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
70574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
70584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMOVL_I]]
705912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint32x4_t test_vmovl_u16(uint16x4_t a) {
706012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_u16(a);
706112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
706212cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmovl_u32(<2 x i32> %a) #0 {
70644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
70654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
70664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
70674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMOVL_I]]
706812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint64x2_t test_vmovl_u32(uint32x2_t a) {
706912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_u32(a);
707012cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
707112cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmovl_high_s8(<16 x i8> %a) #0 {
70734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
70744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> [[SHUFFLE_I_I]] to <8 x i16>
70754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
707612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint16x8_t test_vmovl_high_s8(int8x16_t a) {
707712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_high_s8(a);
707812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
707912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmovl_high_s16(<8 x i16> %a) #0 {
70814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
70824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
70834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
70844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
70854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
708612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint32x4_t test_vmovl_high_s16(int16x8_t a) {
708712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_high_s16(a);
708812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
708912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
70904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmovl_high_s32(<4 x i32> %a) #0 {
70914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
70924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
70934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
70944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
70954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
709612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuint64x2_t test_vmovl_high_s32(int32x4_t a) {
709712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_high_s32(a);
709812cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
709912cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
71004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmovl_high_u8(<16 x i8> %a) #0 {
71014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
71024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> [[SHUFFLE_I_I]] to <8 x i16>
71034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
710412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint16x8_t test_vmovl_high_u8(uint8x16_t a) {
710512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_high_u8(a);
710612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
710712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
71084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmovl_high_u16(<8 x i16> %a) #0 {
71094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
71104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
71114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
71124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
71134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
711412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint32x4_t test_vmovl_high_u16(uint16x8_t a) {
711512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_high_u16(a);
711612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
711712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
71184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmovl_high_u32(<4 x i32> %a) #0 {
71194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
71204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
71214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
71224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
71234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
712412cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liuuint64x2_t test_vmovl_high_u32(uint32x4_t a) {
712512cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu  return vmovl_high_u32(a);
712612cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu}
712712cd6a83f280bcab0e80230e8c7b1f989f3b4889Hao Liu
71284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vcvt_n_f32_s32(<2 x i32> %a) #0 {
71294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
71304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
71314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x float> @llvm.aarch64.neon.vcvtfxs2fp.v2f32.v2i32(<2 x i32> [[VCVT_N]], i32 31)
71324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VCVT_N1]]
7133912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liufloat32x2_t test_vcvt_n_f32_s32(int32x2_t a) {
7134912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvt_n_f32_s32(a, 31);
7135912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7136912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
71374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvtq_n_f32_s32(<4 x i32> %a) #0 {
71384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
71394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
71404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <4 x float> @llvm.aarch64.neon.vcvtfxs2fp.v4f32.v4i32(<4 x i32> [[VCVT_N]], i32 31)
71414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VCVT_N1]]
7142912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liufloat32x4_t test_vcvtq_n_f32_s32(int32x4_t a) {
7143912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_f32_s32(a, 31);
7144912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7145912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
71464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vcvtq_n_f64_s64(<2 x i64> %a) #0 {
71474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
71484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
71494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x double> @llvm.aarch64.neon.vcvtfxs2fp.v2f64.v2i64(<2 x i64> [[VCVT_N]], i32 50)
71504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VCVT_N1]]
7151912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liufloat64x2_t test_vcvtq_n_f64_s64(int64x2_t a) {
7152912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_f64_s64(a, 50);
7153912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7154912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
71554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vcvt_n_f32_u32(<2 x i32> %a) #0 {
71564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
71574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
71584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x float> @llvm.aarch64.neon.vcvtfxu2fp.v2f32.v2i32(<2 x i32> [[VCVT_N]], i32 31)
71594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VCVT_N1]]
7160912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liufloat32x2_t test_vcvt_n_f32_u32(uint32x2_t a) {
7161912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvt_n_f32_u32(a, 31);
7162912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7163912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
71644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvtq_n_f32_u32(<4 x i32> %a) #0 {
71654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
71664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
71674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <4 x float> @llvm.aarch64.neon.vcvtfxu2fp.v4f32.v4i32(<4 x i32> [[VCVT_N]], i32 31)
71684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VCVT_N1]]
7169912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liufloat32x4_t test_vcvtq_n_f32_u32(uint32x4_t a) {
7170912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_f32_u32(a, 31);
7171912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7172912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
71734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vcvtq_n_f64_u64(<2 x i64> %a) #0 {
71744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
71754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
71764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x double> @llvm.aarch64.neon.vcvtfxu2fp.v2f64.v2i64(<2 x i64> [[VCVT_N]], i32 50)
71774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VCVT_N1]]
7178912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liufloat64x2_t test_vcvtq_n_f64_u64(uint64x2_t a) {
7179912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_f64_u64(a, 50);
7180912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7181912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
71824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvt_n_s32_f32(<2 x float> %a) #0 {
71834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
71844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
71854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.vcvtfp2fxs.v2i32.v2f32(<2 x float> [[VCVT_N]], i32 31)
71864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVT_N1]]
7187912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x2_t test_vcvt_n_s32_f32(float32x2_t a) {
7188912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvt_n_s32_f32(a, 31);
7189912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7190912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
71914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtq_n_s32_f32(<4 x float> %a) #0 {
71924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
71934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
71944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.vcvtfp2fxs.v4i32.v4f32(<4 x float> [[VCVT_N]], i32 31)
71954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVT_N1]]
7196912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint32x4_t test_vcvtq_n_s32_f32(float32x4_t a) {
7197912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_s32_f32(a, 31);
7198912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7199912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
72004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtq_n_s64_f64(<2 x double> %a) #0 {
72014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
72024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
72034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.vcvtfp2fxs.v2i64.v2f64(<2 x double> [[VCVT_N]], i32 50)
72044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVT_N1]]
7205912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuint64x2_t test_vcvtq_n_s64_f64(float64x2_t a) {
7206912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_s64_f64(a, 50);
7207912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7208912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
72094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvt_n_u32_f32(<2 x float> %a) #0 {
72104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
72114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
72124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.vcvtfp2fxu.v2i32.v2f32(<2 x float> [[VCVT_N]], i32 31)
72134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVT_N1]]
7214912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x2_t test_vcvt_n_u32_f32(float32x2_t a) {
7215912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvt_n_u32_f32(a, 31);
7216912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7217912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
72184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtq_n_u32_f32(<4 x float> %a) #0 {
72194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
72204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
72214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.vcvtfp2fxu.v4i32.v4f32(<4 x float> [[VCVT_N]], i32 31)
72224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVT_N1]]
7223912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint32x4_t test_vcvtq_n_u32_f32(float32x4_t a) {
7224912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_u32_f32(a, 31);
7225912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7226912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu
72274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtq_n_u64_f64(<2 x double> %a) #0 {
72284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
72294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
72304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.vcvtfp2fxu.v2i64.v2f64(<2 x double> [[VCVT_N]], i32 50)
72314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVT_N1]]
7232912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liuuint64x2_t test_vcvtq_n_u64_f64(float64x2_t a) {
7233912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu  return vcvtq_n_u64_f64(a, 50);
7234912502b4996b14db31b498cb1eef2b17d7d66d57Hao Liu}
7235097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
72364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddl_s8(<8 x i8> %a, <8 x i8> %b) #0 {
72374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <8 x i8> %a to <8 x i16>
72384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = sext <8 x i8> %b to <8 x i16>
72394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> [[VMOVL_I_I]], [[VMOVL_I4_I]]
72404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7241097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vaddl_s8(int8x8_t a, int8x8_t b) {
7242097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_s8(a, b);
7243097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7244097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
72454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddl_s16(<4 x i16> %a, <4 x i16> %b) #0 {
72464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
72474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
72484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
72494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
72504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
72514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = sext <4 x i16> [[TMP3]] to <4 x i32>
72524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> [[VMOVL_I_I]], [[VMOVL_I4_I]]
72534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7254097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vaddl_s16(int16x4_t a, int16x4_t b) {
7255097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_s16(a, b);
7256097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7257097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
72584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddl_s32(<2 x i32> %a, <2 x i32> %b) #0 {
72594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
72604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
72614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
72624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
72634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
72644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = sext <2 x i32> [[TMP3]] to <2 x i64>
72654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> [[VMOVL_I_I]], [[VMOVL_I4_I]]
72664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7267097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vaddl_s32(int32x2_t a, int32x2_t b) {
7268097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_s32(a, b);
7269097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7270097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
72714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddl_u8(<8 x i8> %a, <8 x i8> %b) #0 {
72724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <8 x i8> %a to <8 x i16>
72734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = zext <8 x i8> %b to <8 x i16>
72744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> [[VMOVL_I_I]], [[VMOVL_I4_I]]
72754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7276097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vaddl_u8(uint8x8_t a, uint8x8_t b) {
7277097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_u8(a, b);
7278097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7279097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
72804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddl_u16(<4 x i16> %a, <4 x i16> %b) #0 {
72814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
72824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
72834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
72844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
72854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
72864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
72874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> [[VMOVL_I_I]], [[VMOVL_I4_I]]
72884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7289097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vaddl_u16(uint16x4_t a, uint16x4_t b) {
7290097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_u16(a, b);
7291097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7292097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
72934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddl_u32(<2 x i32> %a, <2 x i32> %b) #0 {
72944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
72954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
72964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
72974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
72984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
72994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
73004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> [[VMOVL_I_I]], [[VMOVL_I4_I]]
73014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7302097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vaddl_u32(uint32x2_t a, uint32x2_t b) {
7303097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_u32(a, b);
7304097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7305097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddl_high_s8(<16 x i8> %a, <16 x i8> %b) #0 {
73074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
73084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
73094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
73104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = sext <8 x i8> [[SHUFFLE_I_I10_I]] to <8 x i16>
73114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> [[TMP0]], [[TMP1]]
73124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7313097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vaddl_high_s8(int8x16_t a, int8x16_t b) {
7314097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_high_s8(a, b);
7315097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7316097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddl_high_s16(<8 x i16> %a, <8 x i16> %b) #0 {
73184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
73194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
73204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
73214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
73224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
73234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I10_I]] to <8 x i8>
73244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <4 x i16>
73254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = sext <4 x i16> [[TMP4]] to <4 x i32>
73264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> [[TMP2]], [[TMP5]]
73274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7328097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vaddl_high_s16(int16x8_t a, int16x8_t b) {
7329097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_high_s16(a, b);
7330097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7331097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddl_high_s32(<4 x i32> %a, <4 x i32> %b) #0 {
73334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
73344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
73354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
73364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
73374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
73384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I10_I]] to <8 x i8>
73394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <2 x i32>
73404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = sext <2 x i32> [[TMP4]] to <2 x i64>
73414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> [[TMP2]], [[TMP5]]
73424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7343097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vaddl_high_s32(int32x4_t a, int32x4_t b) {
7344097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_high_s32(a, b);
7345097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7346097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddl_high_u8(<16 x i8> %a, <16 x i8> %b) #0 {
73484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
73494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
73504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
73514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = zext <8 x i8> [[SHUFFLE_I_I10_I]] to <8 x i16>
73524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> [[TMP0]], [[TMP1]]
73534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7354097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vaddl_high_u8(uint8x16_t a, uint8x16_t b) {
7355097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_high_u8(a, b);
7356097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7357097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddl_high_u16(<8 x i16> %a, <8 x i16> %b) #0 {
73594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
73604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
73614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
73624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
73634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
73644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I10_I]] to <8 x i8>
73654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <4 x i16>
73664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = zext <4 x i16> [[TMP4]] to <4 x i32>
73674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> [[TMP2]], [[TMP5]]
73684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7369097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vaddl_high_u16(uint16x8_t a, uint16x8_t b) {
7370097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_high_u16(a, b);
7371097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7372097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddl_high_u32(<4 x i32> %a, <4 x i32> %b) #0 {
73744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
73754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
73764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
73774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
73784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
73794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I10_I]] to <8 x i8>
73804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <2 x i32>
73814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = zext <2 x i32> [[TMP4]] to <2 x i64>
73824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> [[TMP2]], [[TMP5]]
73834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7384097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vaddl_high_u32(uint32x4_t a, uint32x4_t b) {
7385097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddl_high_u32(a, b);
7386097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7387097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddw_s8(<8 x i16> %a, <8 x i8> %b) #0 {
73894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <8 x i8> %b to <8 x i16>
73904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[VMOVL_I_I]]
73914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7392097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vaddw_s8(int16x8_t a, int8x8_t b) {
7393097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_s8(a, b);
7394097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7395097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
73964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddw_s16(<4 x i32> %a, <4 x i16> %b) #0 {
73974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
73984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
73994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
74004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[VMOVL_I_I]]
74014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7402097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vaddw_s16(int32x4_t a, int16x4_t b) {
7403097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_s16(a, b);
7404097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7405097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddw_s32(<2 x i64> %a, <2 x i32> %b) #0 {
74074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
74084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
74094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
74104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[VMOVL_I_I]]
74114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7412097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vaddw_s32(int64x2_t a, int32x2_t b) {
7413097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_s32(a, b);
7414097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7415097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddw_u8(<8 x i16> %a, <8 x i8> %b) #0 {
74174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <8 x i8> %b to <8 x i16>
74184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[VMOVL_I_I]]
74194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7420097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vaddw_u8(uint16x8_t a, uint8x8_t b) {
7421097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_u8(a, b);
7422097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7423097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddw_u16(<4 x i32> %a, <4 x i16> %b) #0 {
74254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
74264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
74274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
74284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[VMOVL_I_I]]
74294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7430097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vaddw_u16(uint32x4_t a, uint16x4_t b) {
7431097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_u16(a, b);
7432097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7433097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddw_u32(<2 x i64> %a, <2 x i32> %b) #0 {
74354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
74364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
74374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
74384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[VMOVL_I_I]]
74394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7440097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vaddw_u32(uint64x2_t a, uint32x2_t b) {
7441097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_u32(a, b);
7442097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7443097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddw_high_s8(<8 x i16> %a, <16 x i8> %b) #0 {
74454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
74464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
74474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[TMP0]]
74484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7449097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vaddw_high_s8(int16x8_t a, int8x16_t b) {
7450097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_high_s8(a, b);
7451097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7452097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddw_high_s16(<4 x i32> %a, <8 x i16> %b) #0 {
74544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
74554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
74564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
74574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
74584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[TMP2]]
74594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7460097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vaddw_high_s16(int32x4_t a, int16x8_t b) {
7461097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_high_s16(a, b);
7462097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7463097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddw_high_s32(<2 x i64> %a, <4 x i32> %b) #0 {
74654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
74664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
74674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
74684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
74694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[TMP2]]
74704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7471097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vaddw_high_s32(int64x2_t a, int32x4_t b) {
7472097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_high_s32(a, b);
7473097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7474097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddw_high_u8(<8 x i16> %a, <16 x i8> %b) #0 {
74764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
74774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
74784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[TMP0]]
74794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
7480097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vaddw_high_u8(uint16x8_t a, uint8x16_t b) {
7481097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_high_u8(a, b);
7482097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7483097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddw_high_u16(<4 x i32> %a, <8 x i16> %b) #0 {
74854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
74864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
74874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
74884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
74894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[TMP2]]
74904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
7491097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vaddw_high_u16(uint32x4_t a, uint16x8_t b) {
7492097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_high_u16(a, b);
7493097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7494097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
74954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vaddw_high_u32(<2 x i64> %a, <4 x i32> %b) #0 {
74964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
74974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
74984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
74994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
75004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[TMP2]]
75014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
7502097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vaddw_high_u32(uint64x2_t a, uint32x4_t b) {
7503097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddw_high_u32(a, b);
7504097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7505097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubl_s8(<8 x i8> %a, <8 x i8> %b) #0 {
75074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <8 x i8> %a to <8 x i16>
75084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = sext <8 x i8> %b to <8 x i16>
75094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> [[VMOVL_I_I]], [[VMOVL_I4_I]]
75104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7511097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vsubl_s8(int8x8_t a, int8x8_t b) {
7512097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_s8(a, b);
7513097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7514097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubl_s16(<4 x i16> %a, <4 x i16> %b) #0 {
75164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
75174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
75184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
75194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
75204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
75214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = sext <4 x i16> [[TMP3]] to <4 x i32>
75224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> [[VMOVL_I_I]], [[VMOVL_I4_I]]
75234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7524097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vsubl_s16(int16x4_t a, int16x4_t b) {
7525097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_s16(a, b);
7526097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7527097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubl_s32(<2 x i32> %a, <2 x i32> %b) #0 {
75294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
75304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
75314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
75324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
75334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
75344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = sext <2 x i32> [[TMP3]] to <2 x i64>
75354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> [[VMOVL_I_I]], [[VMOVL_I4_I]]
75364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7537097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vsubl_s32(int32x2_t a, int32x2_t b) {
7538097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_s32(a, b);
7539097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7540097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubl_u8(<8 x i8> %a, <8 x i8> %b) #0 {
75424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <8 x i8> %a to <8 x i16>
75434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = zext <8 x i8> %b to <8 x i16>
75444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> [[VMOVL_I_I]], [[VMOVL_I4_I]]
75454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7546097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vsubl_u8(uint8x8_t a, uint8x8_t b) {
7547097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_u8(a, b);
7548097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7549097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubl_u16(<4 x i16> %a, <4 x i16> %b) #0 {
75514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
75524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
75534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
75544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %b to <8 x i8>
75554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
75564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
75574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> [[VMOVL_I_I]], [[VMOVL_I4_I]]
75584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7559097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vsubl_u16(uint16x4_t a, uint16x4_t b) {
7560097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_u16(a, b);
7561097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7562097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubl_u32(<2 x i32> %a, <2 x i32> %b) #0 {
75644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
75654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
75664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
75674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %b to <8 x i8>
75684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
75694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I4_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
75704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> [[VMOVL_I_I]], [[VMOVL_I4_I]]
75714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7572097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vsubl_u32(uint32x2_t a, uint32x2_t b) {
7573097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_u32(a, b);
7574097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7575097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubl_high_s8(<16 x i8> %a, <16 x i8> %b) #0 {
75774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
75784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
75794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
75804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = sext <8 x i8> [[SHUFFLE_I_I10_I]] to <8 x i16>
75814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> [[TMP0]], [[TMP1]]
75824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7583097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vsubl_high_s8(int8x16_t a, int8x16_t b) {
7584097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_high_s8(a, b);
7585097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7586097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
75874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubl_high_s16(<8 x i16> %a, <8 x i16> %b) #0 {
75884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
75894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
75904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
75914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
75924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
75934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I10_I]] to <8 x i8>
75944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <4 x i16>
75954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = sext <4 x i16> [[TMP4]] to <4 x i32>
75964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> [[TMP2]], [[TMP5]]
75974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7598097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vsubl_high_s16(int16x8_t a, int16x8_t b) {
7599097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_high_s16(a, b);
7600097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7601097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubl_high_s32(<4 x i32> %a, <4 x i32> %b) #0 {
76034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
76044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
76054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
76064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
76074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
76084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I10_I]] to <8 x i8>
76094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <2 x i32>
76104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = sext <2 x i32> [[TMP4]] to <2 x i64>
76114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> [[TMP2]], [[TMP5]]
76124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7613097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vsubl_high_s32(int32x4_t a, int32x4_t b) {
7614097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_high_s32(a, b);
7615097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7616097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubl_high_u8(<16 x i8> %a, <16 x i8> %b) #0 {
76184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
76194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
76204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
76214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = zext <8 x i8> [[SHUFFLE_I_I10_I]] to <8 x i16>
76224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> [[TMP0]], [[TMP1]]
76234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7624097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vsubl_high_u8(uint8x16_t a, uint8x16_t b) {
7625097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_high_u8(a, b);
7626097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7627097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubl_high_u16(<8 x i16> %a, <8 x i16> %b) #0 {
76294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
76304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
76314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
76324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
76334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
76344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I10_I]] to <8 x i8>
76354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <4 x i16>
76364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = zext <4 x i16> [[TMP4]] to <4 x i32>
76374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> [[TMP2]], [[TMP5]]
76384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7639097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vsubl_high_u16(uint16x8_t a, uint16x8_t b) {
7640097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_high_u16(a, b);
7641097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7642097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubl_high_u32(<4 x i32> %a, <4 x i32> %b) #0 {
76444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
76454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
76464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
76474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
76484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I10_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
76494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I10_I]] to <8 x i8>
76504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP3]] to <2 x i32>
76514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = zext <2 x i32> [[TMP4]] to <2 x i64>
76524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> [[TMP2]], [[TMP5]]
76534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7654097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vsubl_high_u32(uint32x4_t a, uint32x4_t b) {
7655097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubl_high_u32(a, b);
7656097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7657097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubw_s8(<8 x i16> %a, <8 x i8> %b) #0 {
76594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <8 x i8> %b to <8 x i16>
76604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %a, [[VMOVL_I_I]]
76614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7662097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vsubw_s8(int16x8_t a, int8x8_t b) {
7663097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_s8(a, b);
7664097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7665097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubw_s16(<4 x i32> %a, <4 x i16> %b) #0 {
76674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
76684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
76694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
76704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %a, [[VMOVL_I_I]]
76714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7672097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vsubw_s16(int32x4_t a, int16x4_t b) {
7673097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_s16(a, b);
7674097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7675097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubw_s32(<2 x i64> %a, <2 x i32> %b) #0 {
76774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
76784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
76794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
76804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %a, [[VMOVL_I_I]]
76814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7682097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vsubw_s32(int64x2_t a, int32x2_t b) {
7683097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_s32(a, b);
7684097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7685097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubw_u8(<8 x i16> %a, <8 x i8> %b) #0 {
76874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <8 x i8> %b to <8 x i16>
76884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %a, [[VMOVL_I_I]]
76894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7690097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vsubw_u8(uint16x8_t a, uint8x8_t b) {
7691097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_u8(a, b);
7692097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7693097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
76944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubw_u16(<4 x i32> %a, <4 x i16> %b) #0 {
76954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
76964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
76974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
76984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %a, [[VMOVL_I_I]]
76994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7700097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vsubw_u16(uint32x4_t a, uint16x4_t b) {
7701097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_u16(a, b);
7702097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7703097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubw_u32(<2 x i64> %a, <2 x i32> %b) #0 {
77054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
77064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
77074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
77084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %a, [[VMOVL_I_I]]
77094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7710097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vsubw_u32(uint64x2_t a, uint32x2_t b) {
7711097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_u32(a, b);
7712097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7713097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubw_high_s8(<8 x i16> %a, <16 x i8> %b) #0 {
77154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
77164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
77174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %a, [[TMP0]]
77184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7719097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vsubw_high_s8(int16x8_t a, int8x16_t b) {
7720097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_high_s8(a, b);
7721097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7722097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubw_high_s16(<4 x i32> %a, <8 x i16> %b) #0 {
77244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
77254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
77264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
77274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
77284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %a, [[TMP2]]
77294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7730097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vsubw_high_s16(int32x4_t a, int16x8_t b) {
7731097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_high_s16(a, b);
7732097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7733097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubw_high_s32(<2 x i64> %a, <4 x i32> %b) #0 {
77354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
77364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
77374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
77384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
77394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %a, [[TMP2]]
77404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7741097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vsubw_high_s32(int64x2_t a, int32x4_t b) {
7742097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_high_s32(a, b);
7743097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7744097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubw_high_u8(<8 x i16> %a, <16 x i8> %b) #0 {
77464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
77474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> [[SHUFFLE_I_I_I]] to <8 x i16>
77484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %a, [[TMP0]]
77494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
7750097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vsubw_high_u8(uint16x8_t a, uint8x16_t b) {
7751097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_high_u8(a, b);
7752097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7753097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubw_high_u16(<4 x i32> %a, <8 x i16> %b) #0 {
77554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
77564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I_I]] to <8 x i8>
77574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
77584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
77594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %a, [[TMP2]]
77604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
7761097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vsubw_high_u16(uint32x4_t a, uint16x8_t b) {
7762097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_high_u16(a, b);
7763097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7764097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsubw_high_u32(<2 x i64> %a, <4 x i32> %b) #0 {
77664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
77674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I_I]] to <8 x i8>
77684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
77694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
77704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %a, [[TMP2]]
77714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
7772097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vsubw_high_u32(uint64x2_t a, uint32x4_t b) {
7773097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubw_high_u32(a, b);
7774097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7775097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vaddhn_s16(<8 x i16> %a, <8 x i16> %b) #0 {
77774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
77784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
77794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
77804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
77814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I:%.*]] = add <8 x i16> [[TMP2]], [[TMP3]]
77824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I:%.*]] = lshr <8 x i16> [[VADDHN_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
77834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I:%.*]] = trunc <8 x i16> [[VADDHN1_I]] to <8 x i8>
77844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VADDHN2_I]]
7785097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x8_t test_vaddhn_s16(int16x8_t a, int16x8_t b) {
7786097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_s16(a, b);
7787097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7788097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
77894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vaddhn_s32(<4 x i32> %a, <4 x i32> %b) #0 {
77904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
77914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
77924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
77934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
77944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I:%.*]] = add <4 x i32> [[TMP2]], [[TMP3]]
77954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I:%.*]] = lshr <4 x i32> [[VADDHN_I]], <i32 16, i32 16, i32 16, i32 16>
77964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I:%.*]] = trunc <4 x i32> [[VADDHN1_I]] to <4 x i16>
77974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VADDHN2_I]]
7798097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x4_t test_vaddhn_s32(int32x4_t a, int32x4_t b) {
7799097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_s32(a, b);
7800097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7801097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vaddhn_s64(<2 x i64> %a, <2 x i64> %b) #0 {
78034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
78044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
78054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
78064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
78074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I:%.*]] = add <2 x i64> [[TMP2]], [[TMP3]]
78084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I:%.*]] = lshr <2 x i64> [[VADDHN_I]], <i64 32, i64 32>
78094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I:%.*]] = trunc <2 x i64> [[VADDHN1_I]] to <2 x i32>
78104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VADDHN2_I]]
7811097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x2_t test_vaddhn_s64(int64x2_t a, int64x2_t b) {
7812097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_s64(a, b);
7813097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7814097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vaddhn_u16(<8 x i16> %a, <8 x i16> %b) #0 {
78164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
78174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
78184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
78194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
78204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I:%.*]] = add <8 x i16> [[TMP2]], [[TMP3]]
78214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I:%.*]] = lshr <8 x i16> [[VADDHN_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
78224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I:%.*]] = trunc <8 x i16> [[VADDHN1_I]] to <8 x i8>
78234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VADDHN2_I]]
7824097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x8_t test_vaddhn_u16(uint16x8_t a, uint16x8_t b) {
7825097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_u16(a, b);
7826097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7827097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vaddhn_u32(<4 x i32> %a, <4 x i32> %b) #0 {
78294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
78304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
78314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
78324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
78334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I:%.*]] = add <4 x i32> [[TMP2]], [[TMP3]]
78344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I:%.*]] = lshr <4 x i32> [[VADDHN_I]], <i32 16, i32 16, i32 16, i32 16>
78354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I:%.*]] = trunc <4 x i32> [[VADDHN1_I]] to <4 x i16>
78364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VADDHN2_I]]
7837097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x4_t test_vaddhn_u32(uint32x4_t a, uint32x4_t b) {
7838097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_u32(a, b);
7839097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7840097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vaddhn_u64(<2 x i64> %a, <2 x i64> %b) #0 {
78424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
78434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
78444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
78454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
78464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I:%.*]] = add <2 x i64> [[TMP2]], [[TMP3]]
78474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I:%.*]] = lshr <2 x i64> [[VADDHN_I]], <i64 32, i64 32>
78484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I:%.*]] = trunc <2 x i64> [[VADDHN1_I]] to <2 x i32>
78494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VADDHN2_I]]
7850097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x2_t test_vaddhn_u64(uint64x2_t a, uint64x2_t b) {
7851097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_u64(a, b);
7852097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7853097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vaddhn_high_s16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
78554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
78564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
78574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
78584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
78594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I_I:%.*]] = add <8 x i16> [[TMP2]], [[TMP3]]
78604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I_I:%.*]] = lshr <8 x i16> [[VADDHN_I_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
78614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I_I:%.*]] = trunc <8 x i16> [[VADDHN1_I_I]] to <8 x i8>
78624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VADDHN2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
78634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
7864097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x16_t test_vaddhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
7865097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_high_s16(r, a, b);
7866097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7867097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddhn_high_s32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
78694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
78704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
78714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
78724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
78734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I_I:%.*]] = add <4 x i32> [[TMP2]], [[TMP3]]
78744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I_I:%.*]] = lshr <4 x i32> [[VADDHN_I_I]], <i32 16, i32 16, i32 16, i32 16>
78754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I_I:%.*]] = trunc <4 x i32> [[VADDHN1_I_I]] to <4 x i16>
78764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[VADDHN2_I_I]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
78774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
7878097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vaddhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
7879097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_high_s32(r, a, b);
7880097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7881097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddhn_high_s64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
78834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
78844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
78854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
78864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
78874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I_I:%.*]] = add <2 x i64> [[TMP2]], [[TMP3]]
78884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I_I:%.*]] = lshr <2 x i64> [[VADDHN_I_I]], <i64 32, i64 32>
78894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I_I:%.*]] = trunc <2 x i64> [[VADDHN1_I_I]] to <2 x i32>
78904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[VADDHN2_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
78914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
7892097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vaddhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
7893097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_high_s64(r, a, b);
7894097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7895097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
78964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vaddhn_high_u16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
78974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
78984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
78994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
79004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
79014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I_I:%.*]] = add <8 x i16> [[TMP2]], [[TMP3]]
79024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I_I:%.*]] = lshr <8 x i16> [[VADDHN_I_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
79034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I_I:%.*]] = trunc <8 x i16> [[VADDHN1_I_I]] to <8 x i8>
79044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VADDHN2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
79054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
7906097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x16_t test_vaddhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
7907097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_high_u16(r, a, b);
7908097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7909097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vaddhn_high_u32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
79114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
79124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
79134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
79144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
79154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I_I:%.*]] = add <4 x i32> [[TMP2]], [[TMP3]]
79164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I_I:%.*]] = lshr <4 x i32> [[VADDHN_I_I]], <i32 16, i32 16, i32 16, i32 16>
79174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I_I:%.*]] = trunc <4 x i32> [[VADDHN1_I_I]] to <4 x i16>
79184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[VADDHN2_I_I]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
79194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
7920097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vaddhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
7921097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_high_u32(r, a, b);
7922097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7923097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vaddhn_high_u64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
79254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
79264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
79274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
79284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
79294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN_I_I:%.*]] = add <2 x i64> [[TMP2]], [[TMP3]]
79304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN1_I_I:%.*]] = lshr <2 x i64> [[VADDHN_I_I]], <i64 32, i64 32>
79314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDHN2_I_I:%.*]] = trunc <2 x i64> [[VADDHN1_I_I]] to <2 x i32>
79324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[VADDHN2_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
79334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
7934097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vaddhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
7935097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vaddhn_high_u64(r, a, b);
7936097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7937097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vraddhn_s16(<8 x i16> %a, <8 x i16> %b) #0 {
79394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
79404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
79414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
79424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
79434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.raddhn.v8i8(<8 x i16> [[VRADDHN_V_I]], <8 x i16> [[VRADDHN_V1_I]]) #4
79444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRADDHN_V2_I]]
7945097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x8_t test_vraddhn_s16(int16x8_t a, int16x8_t b) {
7946097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_s16(a, b);
7947097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7948097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vraddhn_s32(<4 x i32> %a, <4 x i32> %b) #0 {
79504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
79514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
79524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
79534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
79544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.raddhn.v4i16(<4 x i32> [[VRADDHN_V_I]], <4 x i32> [[VRADDHN_V1_I]]) #4
79554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I:%.*]] = bitcast <4 x i16> [[VRADDHN_V2_I]] to <8 x i8>
79564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I]] to <4 x i16>
79574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
7958097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x4_t test_vraddhn_s32(int32x4_t a, int32x4_t b) {
7959097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_s32(a, b);
7960097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7961097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vraddhn_s64(<2 x i64> %a, <2 x i64> %b) #0 {
79634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
79644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
79654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
79664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
79674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.raddhn.v2i32(<2 x i64> [[VRADDHN_V_I]], <2 x i64> [[VRADDHN_V1_I]]) #4
79684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I:%.*]] = bitcast <2 x i32> [[VRADDHN_V2_I]] to <8 x i8>
79694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I]] to <2 x i32>
79704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
7971097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x2_t test_vraddhn_s64(int64x2_t a, int64x2_t b) {
7972097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_s64(a, b);
7973097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7974097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vraddhn_u16(<8 x i16> %a, <8 x i16> %b) #0 {
79764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
79774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
79784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
79794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
79804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.raddhn.v8i8(<8 x i16> [[VRADDHN_V_I]], <8 x i16> [[VRADDHN_V1_I]]) #4
79814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRADDHN_V2_I]]
7982097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x8_t test_vraddhn_u16(uint16x8_t a, uint16x8_t b) {
7983097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_u16(a, b);
7984097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7985097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vraddhn_u32(<4 x i32> %a, <4 x i32> %b) #0 {
79874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
79884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
79894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
79904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
79914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.raddhn.v4i16(<4 x i32> [[VRADDHN_V_I]], <4 x i32> [[VRADDHN_V1_I]]) #4
79924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I:%.*]] = bitcast <4 x i16> [[VRADDHN_V2_I]] to <8 x i8>
79934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I]] to <4 x i16>
79944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
7995097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x4_t test_vraddhn_u32(uint32x4_t a, uint32x4_t b) {
7996097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_u32(a, b);
7997097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
7998097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
79994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vraddhn_u64(<2 x i64> %a, <2 x i64> %b) #0 {
80004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
80014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
80024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
80034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
80044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.raddhn.v2i32(<2 x i64> [[VRADDHN_V_I]], <2 x i64> [[VRADDHN_V1_I]]) #4
80054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I:%.*]] = bitcast <2 x i32> [[VRADDHN_V2_I]] to <8 x i8>
80064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I]] to <2 x i32>
80074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
8008097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x2_t test_vraddhn_u64(uint64x2_t a, uint64x2_t b) {
8009097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_u64(a, b);
8010097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8011097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
80124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vraddhn_high_s16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
80134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
80144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
80154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
80164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
80174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.raddhn.v8i8(<8 x i16> [[VRADDHN_V_I_I]], <8 x i16> [[VRADDHN_V1_I_I]]) #4
80184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VRADDHN_V2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
80194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
8020097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x16_t test_vraddhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
8021097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_high_s16(r, a, b);
8022097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8023097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
80244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vraddhn_high_s32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
80254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
80264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
80274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
80284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
80294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.raddhn.v4i16(<4 x i32> [[VRADDHN_V_I_I]], <4 x i32> [[VRADDHN_V1_I_I]]) #4
80304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I_I:%.*]] = bitcast <4 x i16> [[VRADDHN_V2_I_I]] to <8 x i8>
80314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I_I]] to <4 x i16>
80324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
80334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
8034097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vraddhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
8035097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_high_s32(r, a, b);
8036097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8037097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
80384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vraddhn_high_s64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
80394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
80404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
80414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
80424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
80434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.raddhn.v2i32(<2 x i64> [[VRADDHN_V_I_I]], <2 x i64> [[VRADDHN_V1_I_I]]) #4
80444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I_I:%.*]] = bitcast <2 x i32> [[VRADDHN_V2_I_I]] to <8 x i8>
80454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I_I]] to <2 x i32>
80464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[TMP2]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
80474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
8048097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vraddhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
8049097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_high_s64(r, a, b);
8050097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8051097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
80524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vraddhn_high_u16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
80534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
80544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
80554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
80564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
80574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.raddhn.v8i8(<8 x i16> [[VRADDHN_V_I_I]], <8 x i16> [[VRADDHN_V1_I_I]]) #4
80584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VRADDHN_V2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
80594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
8060097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x16_t test_vraddhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
8061097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_high_u16(r, a, b);
8062097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8063097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
80644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vraddhn_high_u32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
80654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
80664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
80674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
80684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
80694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.raddhn.v4i16(<4 x i32> [[VRADDHN_V_I_I]], <4 x i32> [[VRADDHN_V1_I_I]]) #4
80704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I_I:%.*]] = bitcast <4 x i16> [[VRADDHN_V2_I_I]] to <8 x i8>
80714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I_I]] to <4 x i16>
80724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
80734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
8074097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vraddhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
8075097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_high_u32(r, a, b);
8076097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8077097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
80784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vraddhn_high_u64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
80794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
80804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
80814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
80824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
80834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.raddhn.v2i32(<2 x i64> [[VRADDHN_V_I_I]], <2 x i64> [[VRADDHN_V1_I_I]]) #4
80844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRADDHN_V3_I_I:%.*]] = bitcast <2 x i32> [[VRADDHN_V2_I_I]] to <8 x i8>
80854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRADDHN_V3_I_I]] to <2 x i32>
80864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[TMP2]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
80874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
8088097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vraddhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
8089097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vraddhn_high_u64(r, a, b);
8090097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8091097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
80924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsubhn_s16(<8 x i16> %a, <8 x i16> %b) #0 {
80934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
80944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
80954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
80964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
80974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I:%.*]] = sub <8 x i16> [[TMP2]], [[TMP3]]
80984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I:%.*]] = lshr <8 x i16> [[VSUBHN_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
80994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I:%.*]] = trunc <8 x i16> [[VSUBHN1_I]] to <8 x i8>
81004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSUBHN2_I]]
8101097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x8_t test_vsubhn_s16(int16x8_t a, int16x8_t b) {
8102097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_s16(a, b);
8103097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8104097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsubhn_s32(<4 x i32> %a, <4 x i32> %b) #0 {
81064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
81074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
81084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
81094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
81104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I:%.*]] = sub <4 x i32> [[TMP2]], [[TMP3]]
81114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I:%.*]] = lshr <4 x i32> [[VSUBHN_I]], <i32 16, i32 16, i32 16, i32 16>
81124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I:%.*]] = trunc <4 x i32> [[VSUBHN1_I]] to <4 x i16>
81134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSUBHN2_I]]
8114097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x4_t test_vsubhn_s32(int32x4_t a, int32x4_t b) {
8115097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_s32(a, b);
8116097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8117097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsubhn_s64(<2 x i64> %a, <2 x i64> %b) #0 {
81194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
81204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
81214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
81224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
81234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I:%.*]] = sub <2 x i64> [[TMP2]], [[TMP3]]
81244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I:%.*]] = lshr <2 x i64> [[VSUBHN_I]], <i64 32, i64 32>
81254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I:%.*]] = trunc <2 x i64> [[VSUBHN1_I]] to <2 x i32>
81264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSUBHN2_I]]
8127097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x2_t test_vsubhn_s64(int64x2_t a, int64x2_t b) {
8128097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_s64(a, b);
8129097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8130097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsubhn_u16(<8 x i16> %a, <8 x i16> %b) #0 {
81324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
81334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
81344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
81354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
81364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I:%.*]] = sub <8 x i16> [[TMP2]], [[TMP3]]
81374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I:%.*]] = lshr <8 x i16> [[VSUBHN_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
81384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I:%.*]] = trunc <8 x i16> [[VSUBHN1_I]] to <8 x i8>
81394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSUBHN2_I]]
8140097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x8_t test_vsubhn_u16(uint16x8_t a, uint16x8_t b) {
8141097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_u16(a, b);
8142097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8143097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsubhn_u32(<4 x i32> %a, <4 x i32> %b) #0 {
81454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
81464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
81474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
81484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
81494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I:%.*]] = sub <4 x i32> [[TMP2]], [[TMP3]]
81504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I:%.*]] = lshr <4 x i32> [[VSUBHN_I]], <i32 16, i32 16, i32 16, i32 16>
81514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I:%.*]] = trunc <4 x i32> [[VSUBHN1_I]] to <4 x i16>
81524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSUBHN2_I]]
8153097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x4_t test_vsubhn_u32(uint32x4_t a, uint32x4_t b) {
8154097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_u32(a, b);
8155097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8156097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsubhn_u64(<2 x i64> %a, <2 x i64> %b) #0 {
81584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
81594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
81604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
81614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
81624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I:%.*]] = sub <2 x i64> [[TMP2]], [[TMP3]]
81634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I:%.*]] = lshr <2 x i64> [[VSUBHN_I]], <i64 32, i64 32>
81644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I:%.*]] = trunc <2 x i64> [[VSUBHN1_I]] to <2 x i32>
81654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSUBHN2_I]]
8166097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x2_t test_vsubhn_u64(uint64x2_t a, uint64x2_t b) {
8167097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_u64(a, b);
8168097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8169097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsubhn_high_s16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
81714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
81724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
81734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
81744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
81754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I_I:%.*]] = sub <8 x i16> [[TMP2]], [[TMP3]]
81764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I_I:%.*]] = lshr <8 x i16> [[VSUBHN_I_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
81774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I_I:%.*]] = trunc <8 x i16> [[VSUBHN1_I_I]] to <8 x i8>
81784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VSUBHN2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
81794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
8180097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x16_t test_vsubhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
8181097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_high_s16(r, a, b);
8182097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8183097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubhn_high_s32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
81854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
81864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
81874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
81884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
81894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I_I:%.*]] = sub <4 x i32> [[TMP2]], [[TMP3]]
81904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I_I:%.*]] = lshr <4 x i32> [[VSUBHN_I_I]], <i32 16, i32 16, i32 16, i32 16>
81914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I_I:%.*]] = trunc <4 x i32> [[VSUBHN1_I_I]] to <4 x i16>
81924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[VSUBHN2_I_I]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
81934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
8194097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vsubhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
8195097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_high_s32(r, a, b);
8196097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8197097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
81984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubhn_high_s64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
81994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
82004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
82014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
82024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
82034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I_I:%.*]] = sub <2 x i64> [[TMP2]], [[TMP3]]
82044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I_I:%.*]] = lshr <2 x i64> [[VSUBHN_I_I]], <i64 32, i64 32>
82054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I_I:%.*]] = trunc <2 x i64> [[VSUBHN1_I_I]] to <2 x i32>
82064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[VSUBHN2_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
82074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
8208097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vsubhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
8209097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_high_s64(r, a, b);
8210097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8211097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
82124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsubhn_high_u16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
82134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
82144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
82154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
82164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
82174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I_I:%.*]] = sub <8 x i16> [[TMP2]], [[TMP3]]
82184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I_I:%.*]] = lshr <8 x i16> [[VSUBHN_I_I]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
82194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I_I:%.*]] = trunc <8 x i16> [[VSUBHN1_I_I]] to <8 x i8>
82204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VSUBHN2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
82214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
8222097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x16_t test_vsubhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
8223097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_high_u16(r, a, b);
8224097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8225097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
82264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsubhn_high_u32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
82274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
82284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
82294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
82304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
82314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I_I:%.*]] = sub <4 x i32> [[TMP2]], [[TMP3]]
82324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I_I:%.*]] = lshr <4 x i32> [[VSUBHN_I_I]], <i32 16, i32 16, i32 16, i32 16>
82334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I_I:%.*]] = trunc <4 x i32> [[VSUBHN1_I_I]] to <4 x i16>
82344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[VSUBHN2_I_I]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
82354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
8236097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vsubhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
8237097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_high_u32(r, a, b);
8238097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8239097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
82404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsubhn_high_u64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
82414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
82424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
82434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
82444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
82454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN_I_I:%.*]] = sub <2 x i64> [[TMP2]], [[TMP3]]
82464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN1_I_I:%.*]] = lshr <2 x i64> [[VSUBHN_I_I]], <i64 32, i64 32>
82474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBHN2_I_I:%.*]] = trunc <2 x i64> [[VSUBHN1_I_I]] to <2 x i32>
82484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[VSUBHN2_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
82494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
8250097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vsubhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
8251097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vsubhn_high_u64(r, a, b);
8252097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8253097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
82544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrsubhn_s16(<8 x i16> %a, <8 x i16> %b) #0 {
82554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
82564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
82574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
82584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
82594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.rsubhn.v8i8(<8 x i16> [[VRSUBHN_V_I]], <8 x i16> [[VRSUBHN_V1_I]]) #4
82604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSUBHN_V2_I]]
8261097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x8_t test_vrsubhn_s16(int16x8_t a, int16x8_t b) {
8262097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_s16(a, b);
8263097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8264097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
82654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrsubhn_s32(<4 x i32> %a, <4 x i32> %b) #0 {
82664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
82674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
82684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
82694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
82704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.rsubhn.v4i16(<4 x i32> [[VRSUBHN_V_I]], <4 x i32> [[VRSUBHN_V1_I]]) #4
82714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I:%.*]] = bitcast <4 x i16> [[VRSUBHN_V2_I]] to <8 x i8>
82724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I]] to <4 x i16>
82734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
8274097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x4_t test_vrsubhn_s32(int32x4_t a, int32x4_t b) {
8275097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_s32(a, b);
8276097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8277097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
82784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrsubhn_s64(<2 x i64> %a, <2 x i64> %b) #0 {
82794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
82804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
82814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
82824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
82834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.rsubhn.v2i32(<2 x i64> [[VRSUBHN_V_I]], <2 x i64> [[VRSUBHN_V1_I]]) #4
82844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I:%.*]] = bitcast <2 x i32> [[VRSUBHN_V2_I]] to <8 x i8>
82854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I]] to <2 x i32>
82864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
8287097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x2_t test_vrsubhn_s64(int64x2_t a, int64x2_t b) {
8288097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_s64(a, b);
8289097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8290097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
82914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrsubhn_u16(<8 x i16> %a, <8 x i16> %b) #0 {
82924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
82934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
82944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
82954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
82964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.rsubhn.v8i8(<8 x i16> [[VRSUBHN_V_I]], <8 x i16> [[VRSUBHN_V1_I]]) #4
82974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRSUBHN_V2_I]]
8298097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x8_t test_vrsubhn_u16(uint16x8_t a, uint16x8_t b) {
8299097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_u16(a, b);
8300097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8301097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrsubhn_u32(<4 x i32> %a, <4 x i32> %b) #0 {
83034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
83044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
83054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
83064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
83074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.rsubhn.v4i16(<4 x i32> [[VRSUBHN_V_I]], <4 x i32> [[VRSUBHN_V1_I]]) #4
83084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I:%.*]] = bitcast <4 x i16> [[VRSUBHN_V2_I]] to <8 x i8>
83094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I]] to <4 x i16>
83104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
8311097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x4_t test_vrsubhn_u32(uint32x4_t a, uint32x4_t b) {
8312097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_u32(a, b);
8313097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8314097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrsubhn_u64(<2 x i64> %a, <2 x i64> %b) #0 {
83164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
83174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
83184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
83194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
83204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.rsubhn.v2i32(<2 x i64> [[VRSUBHN_V_I]], <2 x i64> [[VRSUBHN_V1_I]]) #4
83214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I:%.*]] = bitcast <2 x i32> [[VRSUBHN_V2_I]] to <8 x i8>
83224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I]] to <2 x i32>
83234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
8324097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x2_t test_vrsubhn_u64(uint64x2_t a, uint64x2_t b) {
8325097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_u64(a, b);
8326097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8327097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrsubhn_high_s16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
83294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
83304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
83314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
83324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
83334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.rsubhn.v8i8(<8 x i16> [[VRSUBHN_V_I_I]], <8 x i16> [[VRSUBHN_V1_I_I]]) #4
83344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VRSUBHN_V2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
83354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
8336097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint8x16_t test_vrsubhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
8337097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_high_s16(r, a, b);
8338097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8339097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrsubhn_high_s32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
83414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
83424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
83434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
83444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
83454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.rsubhn.v4i16(<4 x i32> [[VRSUBHN_V_I_I]], <4 x i32> [[VRSUBHN_V1_I_I]]) #4
83464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I_I:%.*]] = bitcast <4 x i16> [[VRSUBHN_V2_I_I]] to <8 x i8>
83474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I_I]] to <4 x i16>
83484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
83494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
8350097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vrsubhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
8351097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_high_s32(r, a, b);
8352097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8353097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrsubhn_high_s64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
83554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
83564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
83574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
83584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
83594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.rsubhn.v2i32(<2 x i64> [[VRSUBHN_V_I_I]], <2 x i64> [[VRSUBHN_V1_I_I]]) #4
83604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I_I:%.*]] = bitcast <2 x i32> [[VRSUBHN_V2_I_I]] to <8 x i8>
83614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I_I]] to <2 x i32>
83624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[TMP2]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
83634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
8364097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vrsubhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
8365097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_high_s64(r, a, b);
8366097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8367097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrsubhn_high_u16(<8 x i8> %r, <8 x i16> %a, <8 x i16> %b) #0 {
83694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
83704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
83714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
83724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
83734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.rsubhn.v8i8(<8 x i16> [[VRSUBHN_V_I_I]], <8 x i16> [[VRSUBHN_V1_I_I]]) #4
83744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %r, <8 x i8> [[VRSUBHN_V2_I_I]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
83754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
8376097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint8x16_t test_vrsubhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
8377097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_high_u16(r, a, b);
8378097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8379097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrsubhn_high_u32(<4 x i16> %r, <4 x i32> %a, <4 x i32> %b) #0 {
83814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
83824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
83834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
83844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
83854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.rsubhn.v4i16(<4 x i32> [[VRSUBHN_V_I_I]], <4 x i32> [[VRSUBHN_V1_I_I]]) #4
83864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I_I:%.*]] = bitcast <4 x i16> [[VRSUBHN_V2_I_I]] to <8 x i8>
83874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I_I]] to <4 x i16>
83884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %r, <4 x i16> [[TMP2]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
83894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
8390097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vrsubhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
8391097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_high_u32(r, a, b);
8392097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8393097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
83944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrsubhn_high_u64(<2 x i32> %r, <2 x i64> %a, <2 x i64> %b) #0 {
83954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
83964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
83974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
83984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V1_I_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
83994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.rsubhn.v2i32(<2 x i64> [[VRSUBHN_V_I_I]], <2 x i64> [[VRSUBHN_V1_I_I]]) #4
84004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSUBHN_V3_I_I:%.*]] = bitcast <2 x i32> [[VRSUBHN_V2_I_I]] to <8 x i8>
84014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSUBHN_V3_I_I]] to <2 x i32>
84024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %r, <2 x i32> [[TMP2]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
84034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
8404097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vrsubhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
8405097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vrsubhn_high_u64(r, a, b);
8406097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8407097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
84084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabdl_s8(<8 x i8> %a, <8 x i8> %b) #0 {
84094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sabd.v8i8(<8 x i8> %a, <8 x i8> %b) #4
84104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <8 x i8> [[VABD_I_I]] to <8 x i16>
84114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMOVL_I_I]]
8412097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vabdl_s8(int8x8_t a, int8x8_t b) {
8413097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_s8(a, b);
8414097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
84154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabdl_s16(<4 x i16> %a, <4 x i16> %b) #0 {
84164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
84174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
84184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
84194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
84204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sabd.v4i16(<4 x i16> [[VABD_I_I]], <4 x i16> [[VABD1_I_I]]) #4
84214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I]] to <8 x i8>
84224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
84234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
84244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMOVL_I_I]]
8425097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vabdl_s16(int16x4_t a, int16x4_t b) {
8426097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_s16(a, b);
8427097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
84284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabdl_s32(<2 x i32> %a, <2 x i32> %b) #0 {
84294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
84304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
84314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
84324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
84334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sabd.v2i32(<2 x i32> [[VABD_I_I]], <2 x i32> [[VABD1_I_I]]) #4
84344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I]] to <8 x i8>
84354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
84364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
84374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMOVL_I_I]]
8438097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vabdl_s32(int32x2_t a, int32x2_t b) {
8439097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_s32(a, b);
8440097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
84414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabdl_u8(<8 x i8> %a, <8 x i8> %b) #0 {
84424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8> %a, <8 x i8> %b) #4
84434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <8 x i8> [[VABD_I_I]] to <8 x i16>
84444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMOVL_I_I]]
8445097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vabdl_u8(uint8x8_t a, uint8x8_t b) {
8446097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_u8(a, b);
8447097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
84484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabdl_u16(<4 x i16> %a, <4 x i16> %b) #0 {
84494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
84504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
84514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
84524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
84534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uabd.v4i16(<4 x i16> [[VABD_I_I]], <4 x i16> [[VABD1_I_I]]) #4
84544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I]] to <8 x i8>
84554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
84564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
84574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMOVL_I_I]]
8458097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vabdl_u16(uint16x4_t a, uint16x4_t b) {
8459097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_u16(a, b);
8460097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
84614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabdl_u32(<2 x i32> %a, <2 x i32> %b) #0 {
84624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
84634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
84644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
84654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
84664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uabd.v2i32(<2 x i32> [[VABD_I_I]], <2 x i32> [[VABD1_I_I]]) #4
84674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I]] to <8 x i8>
84684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
84694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
84704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMOVL_I_I]]
8471097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vabdl_u32(uint32x2_t a, uint32x2_t b) {
8472097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_u32(a, b);
8473097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8474097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
84754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabal_s8(<8 x i16> %a, <8 x i8> %b, <8 x i8> %c) #0 {
84764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sabd.v8i8(<8 x i8> %b, <8 x i8> %c) #4
84774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <8 x i8> [[VABD_I_I_I]] to <8 x i16>
84784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[VMOVL_I_I_I]]
84794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
8480097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vabal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
8481097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_s8(a, b, c);
8482097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
84834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabal_s16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
84844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
84854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %c to <8 x i8>
84864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
84874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
84884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sabd.v4i16(<4 x i16> [[VABD_I_I_I]], <4 x i16> [[VABD1_I_I_I]]) #4
84894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I_I]] to <8 x i8>
84904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
84914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
84924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[VMOVL_I_I_I]]
84934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
8494097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vabal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
8495097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_s16(a, b, c);
8496097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
84974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabal_s32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
84984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
84994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %c to <8 x i8>
85004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
85014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
85024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sabd.v2i32(<2 x i32> [[VABD_I_I_I]], <2 x i32> [[VABD1_I_I_I]]) #4
85034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I_I]] to <8 x i8>
85044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
85054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
85064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[VMOVL_I_I_I]]
85074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
8508097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vabal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
8509097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_s32(a, b, c);
8510097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
85114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabal_u8(<8 x i16> %a, <8 x i8> %b, <8 x i8> %c) #0 {
85124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8> %b, <8 x i8> %c) #4
85134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <8 x i8> [[VABD_I_I_I]] to <8 x i16>
85144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[VMOVL_I_I_I]]
85154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
8516097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vabal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
8517097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_u8(a, b, c);
8518097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
85194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabal_u16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
85204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
85214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %c to <8 x i8>
85224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
85234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
85244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uabd.v4i16(<4 x i16> [[VABD_I_I_I]], <4 x i16> [[VABD1_I_I_I]]) #4
85254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I_I]] to <8 x i8>
85264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
85274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
85284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[VMOVL_I_I_I]]
85294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
8530097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vabal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
8531097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_u16(a, b, c);
8532097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
85334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabal_u32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
85344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
85354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %c to <8 x i8>
85364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
85374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
85384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uabd.v2i32(<2 x i32> [[VABD_I_I_I]], <2 x i32> [[VABD1_I_I_I]]) #4
85394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I_I]] to <8 x i8>
85404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
85414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
85424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[VMOVL_I_I_I]]
85434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
8544097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vabal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
8545097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_u32(a, b, c);
8546097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8547097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
85484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabdl_high_s8(<16 x i8> %a, <16 x i8> %b) #0 {
85494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
85504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
85514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sabd.v8i8(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
85524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <8 x i8> [[VABD_I_I_I]] to <8 x i16>
85534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMOVL_I_I_I]]
8554097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vabdl_high_s8(int8x16_t a, int8x16_t b) {
8555097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_high_s8(a, b);
8556097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
85574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabdl_high_s16(<8 x i16> %a, <8 x i16> %b) #0 {
85584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
85594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
85604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
85614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
85624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
85634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
85644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sabd.v4i16(<4 x i16> [[VABD_I_I_I]], <4 x i16> [[VABD1_I_I_I]]) #4
85654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I_I]] to <8 x i8>
85664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
85674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
85684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMOVL_I_I_I]]
8569097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vabdl_high_s16(int16x8_t a, int16x8_t b) {
8570097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_high_s16(a, b);
8571097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
85724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabdl_high_s32(<4 x i32> %a, <4 x i32> %b) #0 {
85734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
85744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
85754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
85764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
85774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
85784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
85794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sabd.v2i32(<2 x i32> [[VABD_I_I_I]], <2 x i32> [[VABD1_I_I_I]]) #4
85804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I_I]] to <8 x i8>
85814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
85824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
85834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMOVL_I_I_I]]
8584097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vabdl_high_s32(int32x4_t a, int32x4_t b) {
8585097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_high_s32(a, b);
8586097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
85874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabdl_high_u8(<16 x i8> %a, <16 x i8> %b) #0 {
85884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
85894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
85904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
85914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <8 x i8> [[VABD_I_I_I]] to <8 x i16>
85924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMOVL_I_I_I]]
8593097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vabdl_high_u8(uint8x16_t a, uint8x16_t b) {
8594097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_high_u8(a, b);
8595097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
85964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabdl_high_u16(<8 x i16> %a, <8 x i16> %b) #0 {
85974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
85984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
85994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
86004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
86014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
86024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
86034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uabd.v4i16(<4 x i16> [[VABD_I_I_I]], <4 x i16> [[VABD1_I_I_I]]) #4
86044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I_I]] to <8 x i8>
86054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
86064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
86074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMOVL_I_I_I]]
8608097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vabdl_high_u16(uint16x8_t a, uint16x8_t b) {
8609097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_high_u16(a, b);
8610097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
86114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabdl_high_u32(<4 x i32> %a, <4 x i32> %b) #0 {
86124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
86134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
86144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
86154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
86164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
86174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
86184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uabd.v2i32(<2 x i32> [[VABD_I_I_I]], <2 x i32> [[VABD1_I_I_I]]) #4
86194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I_I]] to <8 x i8>
86204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
86214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
86224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMOVL_I_I_I]]
8623097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vabdl_high_u32(uint32x4_t a, uint32x4_t b) {
8624097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabdl_high_u32(a, b);
8625097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8626097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
86274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabal_high_s8(<8 x i16> %a, <16 x i8> %b, <16 x i8> %c) #0 {
86284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
86294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %c, <16 x i8> %c, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
86304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sabd.v8i8(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
86314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I_I:%.*]] = zext <8 x i8> [[VABD_I_I_I_I]] to <8 x i16>
86324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <8 x i16> %a, [[VMOVL_I_I_I_I]]
86334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I_I]]
8634097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vabal_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
8635097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_high_s8(a, b, c);
8636097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
86374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabal_high_s16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
86384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
86394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
86404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
86414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
86424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
86434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
86444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sabd.v4i16(<4 x i16> [[VABD_I_I_I_I]], <4 x i16> [[VABD1_I_I_I_I]]) #4
86454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I_I_I]] to <8 x i8>
86464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
86474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
86484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <4 x i32> %a, [[VMOVL_I_I_I_I]]
86494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I_I]]
8650097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vabal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
8651097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_high_s16(a, b, c);
8652097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
86534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabal_high_s32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
86544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
86554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
86564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
86574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
86584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
86594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
86604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sabd.v2i32(<2 x i32> [[VABD_I_I_I_I]], <2 x i32> [[VABD1_I_I_I_I]]) #4
86614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I_I_I]] to <8 x i8>
86624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
86634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
86644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <2 x i64> %a, [[VMOVL_I_I_I_I]]
86654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I_I]]
8666097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vabal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
8667097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_high_s32(a, b, c);
8668097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
86694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabal_high_u8(<8 x i16> %a, <16 x i8> %b, <16 x i8> %c) #0 {
86704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
86714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %c, <16 x i8> %c, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
86724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uabd.v8i8(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
86734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I_I:%.*]] = zext <8 x i8> [[VABD_I_I_I_I]] to <8 x i16>
86744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <8 x i16> %a, [[VMOVL_I_I_I_I]]
86754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I_I]]
8676097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vabal_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
8677097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_high_u8(a, b, c);
8678097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
86794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabal_high_u16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
86804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
86814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
86824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
86834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
86844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
86854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
86864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uabd.v4i16(<4 x i16> [[VABD_I_I_I_I]], <4 x i16> [[VABD1_I_I_I_I]]) #4
86874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[VABD2_I_I_I_I]] to <8 x i8>
86884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
86894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I_I:%.*]] = zext <4 x i16> [[TMP3]] to <4 x i32>
86904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <4 x i32> %a, [[VMOVL_I_I_I_I]]
86914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I_I]]
8692097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vabal_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
8693097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_high_u16(a, b, c);
8694097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
86954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabal_high_u32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
86964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
86974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
86984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
86994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
87004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
87014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
87024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I_I_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uabd.v2i32(<2 x i32> [[VABD_I_I_I_I]], <2 x i32> [[VABD1_I_I_I_I]]) #4
87034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[VABD2_I_I_I_I]] to <8 x i8>
87044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
87054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVL_I_I_I_I:%.*]] = zext <2 x i32> [[TMP3]] to <2 x i64>
87064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <2 x i64> %a, [[VMOVL_I_I_I_I]]
87074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I_I]]
8708097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vabal_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
8709097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vabal_high_u32(a, b, c);
8710097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8711097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
87124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmull_s8(<8 x i8> %a, <8 x i8> %b) #0 {
87134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smull.v8i16(<8 x i8> %a, <8 x i8> %b) #4
87144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMULL_I]]
8715097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vmull_s8(int8x8_t a, int8x8_t b) {
8716097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_s8(a, b);
8717097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmull_s16(<4 x i16> %a, <4 x i16> %b) #0 {
87194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
87204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
87214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
87224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
87234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smull.v4i32(<4 x i16> [[VMULL_I]], <4 x i16> [[VMULL1_I]]) #4
87244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMULL2_I]]
8725097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vmull_s16(int16x4_t a, int16x4_t b) {
8726097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_s16(a, b);
8727097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmull_s32(<2 x i32> %a, <2 x i32> %b) #0 {
87294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
87304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
87314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
87324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
87334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.smull.v2i64(<2 x i32> [[VMULL_I]], <2 x i32> [[VMULL1_I]]) #4
87344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMULL2_I]]
8735097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vmull_s32(int32x2_t a, int32x2_t b) {
8736097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_s32(a, b);
8737097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmull_u8(<8 x i8> %a, <8 x i8> %b) #0 {
87394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umull.v8i16(<8 x i8> %a, <8 x i8> %b) #4
87404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMULL_I]]
8741097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vmull_u8(uint8x8_t a, uint8x8_t b) {
8742097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_u8(a, b);
8743097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmull_u16(<4 x i16> %a, <4 x i16> %b) #0 {
87454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
87464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
87474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
87484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
87494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umull.v4i32(<4 x i16> [[VMULL_I]], <4 x i16> [[VMULL1_I]]) #4
87504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMULL2_I]]
8751097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vmull_u16(uint16x4_t a, uint16x4_t b) {
8752097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_u16(a, b);
8753097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmull_u32(<2 x i32> %a, <2 x i32> %b) #0 {
87554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
87564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
87574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
87584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
87594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.umull.v2i64(<2 x i32> [[VMULL_I]], <2 x i32> [[VMULL1_I]]) #4
87604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMULL2_I]]
8761097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vmull_u32(uint32x2_t a, uint32x2_t b) {
8762097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_u32(a, b);
8763097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8764097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
87654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmull_high_s8(<16 x i8> %a, <16 x i8> %b) #0 {
87664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
87674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
87684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smull.v8i16(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
87694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMULL_I_I]]
8770097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vmull_high_s8(int8x16_t a, int8x16_t b) {
8771097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_high_s8(a, b);
8772097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmull_high_s16(<8 x i16> %a, <8 x i16> %b) #0 {
87744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
87754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
87764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
87774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
87784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
87794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
87804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smull.v4i32(<4 x i16> [[VMULL_I_I]], <4 x i16> [[VMULL1_I_I]]) #4
87814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMULL2_I_I]]
8782097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vmull_high_s16(int16x8_t a, int16x8_t b) {
8783097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_high_s16(a, b);
8784097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmull_high_s32(<4 x i32> %a, <4 x i32> %b) #0 {
87864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
87874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
87884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
87894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
87904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
87914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
87924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.smull.v2i64(<2 x i32> [[VMULL_I_I]], <2 x i32> [[VMULL1_I_I]]) #4
87934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMULL2_I_I]]
8794097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vmull_high_s32(int32x4_t a, int32x4_t b) {
8795097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_high_s32(a, b);
8796097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
87974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmull_high_u8(<16 x i8> %a, <16 x i8> %b) #0 {
87984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
87994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
88004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umull.v8i16(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
88014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMULL_I_I]]
8802097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vmull_high_u8(uint8x16_t a, uint8x16_t b) {
8803097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_high_u8(a, b);
8804097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmull_high_u16(<8 x i16> %a, <8 x i16> %b) #0 {
88064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
88074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
88084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
88094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
88104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
88114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
88124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umull.v4i32(<4 x i16> [[VMULL_I_I]], <4 x i16> [[VMULL1_I_I]]) #4
88134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VMULL2_I_I]]
8814097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vmull_high_u16(uint16x8_t a, uint16x8_t b) {
8815097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_high_u16(a, b);
8816097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmull_high_u32(<4 x i32> %a, <4 x i32> %b) #0 {
88184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
88194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
88204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
88214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
88224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
88234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
88244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.umull.v2i64(<2 x i32> [[VMULL_I_I]], <2 x i32> [[VMULL1_I_I]]) #4
88254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VMULL2_I_I]]
8826097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vmull_high_u32(uint32x4_t a, uint32x4_t b) {
8827097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_high_u32(a, b);
8828097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8829097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
88304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlal_s8(<8 x i16> %a, <8 x i8> %b, <8 x i8> %c) #0 {
88314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smull.v8i16(<8 x i8> %b, <8 x i8> %c) #4
88324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[VMULL_I_I]]
88334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
8834097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vmlal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
8835097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_s8(a, b, c);
8836097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlal_s16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
88384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
88394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %c to <8 x i8>
88404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
88414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
88424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smull.v4i32(<4 x i16> [[VMULL_I_I]], <4 x i16> [[VMULL1_I_I]]) #4
88434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[VMULL2_I_I]]
88444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
8845097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
8846097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_s16(a, b, c);
8847097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlal_s32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
88494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
88504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %c to <8 x i8>
88514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
88524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
88534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.smull.v2i64(<2 x i32> [[VMULL_I_I]], <2 x i32> [[VMULL1_I_I]]) #4
88544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[VMULL2_I_I]]
88554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
8856097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
8857097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_s32(a, b, c);
8858097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlal_u8(<8 x i16> %a, <8 x i8> %b, <8 x i8> %c) #0 {
88604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umull.v8i16(<8 x i8> %b, <8 x i8> %c) #4
88614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <8 x i16> %a, [[VMULL_I_I]]
88624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I]]
8863097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vmlal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
8864097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_u8(a, b, c);
8865097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlal_u16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
88674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
88684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %c to <8 x i8>
88694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
88704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
88714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umull.v4i32(<4 x i16> [[VMULL_I_I]], <4 x i16> [[VMULL1_I_I]]) #4
88724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <4 x i32> %a, [[VMULL2_I_I]]
88734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I]]
8874097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vmlal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
8875097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_u16(a, b, c);
8876097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlal_u32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
88784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
88794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %c to <8 x i8>
88804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
88814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
88824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.umull.v2i64(<2 x i32> [[VMULL_I_I]], <2 x i32> [[VMULL1_I_I]]) #4
88834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = add <2 x i64> %a, [[VMULL2_I_I]]
88844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I]]
8885097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vmlal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
8886097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_u32(a, b, c);
8887097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8888097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
88894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlal_high_s8(<8 x i16> %a, <16 x i8> %b, <16 x i8> %c) #0 {
88904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
88914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %c, <16 x i8> %c, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
88924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smull.v8i16(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
88934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <8 x i16> %a, [[VMULL_I_I_I]]
88944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I_I]]
8895097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vmlal_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
8896097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_high_s8(a, b, c);
8897097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
88984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlal_high_s16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
88994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
89004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
89014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
89024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
89034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
89044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
89054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smull.v4i32(<4 x i16> [[VMULL_I_I_I]], <4 x i16> [[VMULL1_I_I_I]]) #4
89064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <4 x i32> %a, [[VMULL2_I_I_I]]
89074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I_I]]
8908097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vmlal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
8909097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_high_s16(a, b, c);
8910097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlal_high_s32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
89124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
89134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
89144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
89154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
89164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
89174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
89184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.smull.v2i64(<2 x i32> [[VMULL_I_I_I]], <2 x i32> [[VMULL1_I_I_I]]) #4
89194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <2 x i64> %a, [[VMULL2_I_I_I]]
89204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I_I]]
8921097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vmlal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
8922097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_high_s32(a, b, c);
8923097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlal_high_u8(<8 x i16> %a, <16 x i8> %b, <16 x i8> %c) #0 {
89254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
89264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %c, <16 x i8> %c, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
89274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umull.v8i16(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
89284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <8 x i16> %a, [[VMULL_I_I_I]]
89294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[ADD_I_I]]
8930097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vmlal_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
8931097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_high_u8(a, b, c);
8932097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlal_high_u16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
89344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
89354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
89364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
89374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
89384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
89394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
89404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umull.v4i32(<4 x i16> [[VMULL_I_I_I]], <4 x i16> [[VMULL1_I_I_I]]) #4
89414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <4 x i32> %a, [[VMULL2_I_I_I]]
89424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[ADD_I_I]]
8943097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vmlal_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
8944097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_high_u16(a, b, c);
8945097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlal_high_u32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
89474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
89484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
89494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
89504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
89514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
89524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
89534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.umull.v2i64(<2 x i32> [[VMULL_I_I_I]], <2 x i32> [[VMULL1_I_I_I]]) #4
89544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I_I:%.*]] = add <2 x i64> %a, [[VMULL2_I_I_I]]
89554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[ADD_I_I]]
8956097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vmlal_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
8957097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlal_high_u32(a, b, c);
8958097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
8959097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
89604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlsl_s8(<8 x i16> %a, <8 x i8> %b, <8 x i8> %c) #0 {
89614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smull.v8i16(<8 x i8> %b, <8 x i8> %c) #4
89624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %a, [[VMULL_I_I]]
89634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
8964097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vmlsl_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
8965097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_s8(a, b, c);
8966097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlsl_s16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
89684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
89694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %c to <8 x i8>
89704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
89714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
89724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smull.v4i32(<4 x i16> [[VMULL_I_I]], <4 x i16> [[VMULL1_I_I]]) #4
89734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %a, [[VMULL2_I_I]]
89744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
8975097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
8976097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_s16(a, b, c);
8977097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlsl_s32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
89794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
89804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %c to <8 x i8>
89814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
89824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
89834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.smull.v2i64(<2 x i32> [[VMULL_I_I]], <2 x i32> [[VMULL1_I_I]]) #4
89844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %a, [[VMULL2_I_I]]
89854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
8986097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
8987097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_s32(a, b, c);
8988097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlsl_u8(<8 x i16> %a, <8 x i8> %b, <8 x i8> %c) #0 {
89904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umull.v8i16(<8 x i8> %b, <8 x i8> %c) #4
89914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> %a, [[VMULL_I_I]]
89924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
8993097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vmlsl_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
8994097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_u8(a, b, c);
8995097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
89964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlsl_u16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
89974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %b to <8 x i8>
89984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %c to <8 x i8>
89994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
90004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
90014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umull.v4i32(<4 x i16> [[VMULL_I_I]], <4 x i16> [[VMULL1_I_I]]) #4
90024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> %a, [[VMULL2_I_I]]
90034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
9004097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vmlsl_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
9005097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_u16(a, b, c);
9006097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
90074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlsl_u32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
90084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %b to <8 x i8>
90094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %c to <8 x i8>
90104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
90114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
90124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.umull.v2i64(<2 x i32> [[VMULL_I_I]], <2 x i32> [[VMULL1_I_I]]) #4
90134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> %a, [[VMULL2_I_I]]
90144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
9015097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vmlsl_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
9016097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_u32(a, b, c);
9017097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9018097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
90194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlsl_high_s8(<8 x i16> %a, <16 x i8> %b, <16 x i8> %c) #0 {
90204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
90214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %c, <16 x i8> %c, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
90224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smull.v8i16(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
90234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I_I:%.*]] = sub <8 x i16> %a, [[VMULL_I_I_I]]
90244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I_I]]
9025097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint16x8_t test_vmlsl_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
9026097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_high_s8(a, b, c);
9027097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
90284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlsl_high_s16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
90294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
90304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
90314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
90324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
90334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
90344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
90354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smull.v4i32(<4 x i16> [[VMULL_I_I_I]], <4 x i16> [[VMULL1_I_I_I]]) #4
90364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I_I:%.*]] = sub <4 x i32> %a, [[VMULL2_I_I_I]]
90374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I_I]]
9038097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vmlsl_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
9039097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_high_s16(a, b, c);
9040097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
90414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlsl_high_s32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
90424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
90434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
90444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
90454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
90464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
90474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
90484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.smull.v2i64(<2 x i32> [[VMULL_I_I_I]], <2 x i32> [[VMULL1_I_I_I]]) #4
90494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I_I:%.*]] = sub <2 x i64> %a, [[VMULL2_I_I_I]]
90504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I_I]]
9051097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vmlsl_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
9052097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_high_s32(a, b, c);
9053097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
90544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmlsl_high_u8(<8 x i16> %a, <16 x i8> %b, <16 x i8> %c) #0 {
90554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
90564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %c, <16 x i8> %c, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
90574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umull.v8i16(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
90584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I_I:%.*]] = sub <8 x i16> %a, [[VMULL_I_I_I]]
90594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I_I]]
9060097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint16x8_t test_vmlsl_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
9061097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_high_u8(a, b, c);
9062097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
90634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmlsl_high_u16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
90644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
90654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
90664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
90674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
90684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
90694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
90704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umull.v4i32(<4 x i16> [[VMULL_I_I_I]], <4 x i16> [[VMULL1_I_I_I]]) #4
90714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I_I:%.*]] = sub <4 x i32> %a, [[VMULL2_I_I_I]]
90724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I_I]]
9073097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint32x4_t test_vmlsl_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
9074097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_high_u16(a, b, c);
9075097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
90764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vmlsl_high_u32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
90774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
90784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
90794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
90804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
90814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
90824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL1_I_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
90834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL2_I_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.umull.v2i64(<2 x i32> [[VMULL_I_I_I]], <2 x i32> [[VMULL1_I_I_I]]) #4
90844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I_I:%.*]] = sub <2 x i64> %a, [[VMULL2_I_I_I]]
90854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I_I]]
9086097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuuint64x2_t test_vmlsl_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
9087097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmlsl_high_u32(a, b, c);
9088097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9089097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
90904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqdmull_s16(<4 x i16> %a, <4 x i16> %b) #0 {
90914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
90924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
90934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
90944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
90954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[VQDMULL_V_I]], <4 x i16> [[VQDMULL_V1_I]]) #4
90964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V3_I:%.*]] = bitcast <4 x i32> [[VQDMULL_V2_I]] to <16 x i8>
90974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQDMULL_V3_I]] to <4 x i32>
90984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
9099097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vqdmull_s16(int16x4_t a, int16x4_t b) {
9100097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmull_s16(a, b);
9101097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
91024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqdmull_s32(<2 x i32> %a, <2 x i32> %b) #0 {
91034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
91044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
91054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
91064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
91074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqdmull.v2i64(<2 x i32> [[VQDMULL_V_I]], <2 x i32> [[VQDMULL_V1_I]]) #4
91084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V3_I:%.*]] = bitcast <2 x i64> [[VQDMULL_V2_I]] to <16 x i8>
91094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQDMULL_V3_I]] to <2 x i64>
91104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
9111097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vqdmull_s32(int32x2_t a, int32x2_t b) {
9112097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmull_s32(a, b);
9113097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9114097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
91154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqdmlal_s16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
91164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
91174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
91184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %c to <8 x i8>
91194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
91204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
91214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[VQDMLAL_I]], <4 x i16> [[VQDMLAL1_I]]) #4
91224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
91234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V3_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqadd.v4i32(<4 x i32> [[VQDMLAL_V_I]], <4 x i32> [[VQDMLAL2_I]]) #4
91244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VQDMLAL_V3_I]]
9125097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vqdmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
9126097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlal_s16(a, b, c);
9127097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9128097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
91294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqdmlal_s32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
91304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
91314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
91324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %c to <8 x i8>
91334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
91344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
91354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqdmull.v2i64(<2 x i32> [[VQDMLAL_I]], <2 x i32> [[VQDMLAL1_I]]) #4
91364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
91374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V3_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqadd.v2i64(<2 x i64> [[VQDMLAL_V_I]], <2 x i64> [[VQDMLAL2_I]]) #4
91384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VQDMLAL_V3_I]]
9139097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vqdmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
9140097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlal_s32(a, b, c);
9141097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9142097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
91434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqdmlsl_s16(<4 x i32> %a, <4 x i16> %b, <4 x i16> %c) #0 {
91444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
91454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
91464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> %c to <8 x i8>
91474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
91484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
91494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[VQDMLAL_I]], <4 x i16> [[VQDMLAL1_I]]) #4
91504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
91514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V3_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqsub.v4i32(<4 x i32> [[VQDMLSL_V_I]], <4 x i32> [[VQDMLAL2_I]]) #4
91524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VQDMLSL_V3_I]]
9153097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vqdmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
9154097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlsl_s16(a, b, c);
9155097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9156097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
91574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqdmlsl_s32(<2 x i64> %a, <2 x i32> %b, <2 x i32> %c) #0 {
91584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
91594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
91604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> %c to <8 x i8>
91614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
91624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
91634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqdmull.v2i64(<2 x i32> [[VQDMLAL_I]], <2 x i32> [[VQDMLAL1_I]]) #4
91644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
91654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V3_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqsub.v2i64(<2 x i64> [[VQDMLSL_V_I]], <2 x i64> [[VQDMLAL2_I]]) #4
91664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VQDMLSL_V3_I]]
9167097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vqdmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
9168097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlsl_s32(a, b, c);
9169097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9170097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
91714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqdmull_high_s16(<8 x i16> %a, <8 x i16> %b) #0 {
91724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
91734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
91744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
91754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
91764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
91774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
91784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[VQDMULL_V_I_I]], <4 x i16> [[VQDMULL_V1_I_I]]) #4
91794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V3_I_I:%.*]] = bitcast <4 x i32> [[VQDMULL_V2_I_I]] to <16 x i8>
91804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQDMULL_V3_I_I]] to <4 x i32>
91814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
9182097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vqdmull_high_s16(int16x8_t a, int16x8_t b) {
9183097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmull_high_s16(a, b);
9184097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
91854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqdmull_high_s32(<4 x i32> %a, <4 x i32> %b) #0 {
91864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
91874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
91884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
91894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
91904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
91914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V1_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
91924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqdmull.v2i64(<2 x i32> [[VQDMULL_V_I_I]], <2 x i32> [[VQDMULL_V1_I_I]]) #4
91934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULL_V3_I_I:%.*]] = bitcast <2 x i64> [[VQDMULL_V2_I_I]] to <16 x i8>
91944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VQDMULL_V3_I_I]] to <2 x i64>
91954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
9196097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vqdmull_high_s32(int32x4_t a, int32x4_t b) {
9197097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmull_high_s32(a, b);
9198097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9199097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
92004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqdmlal_high_s16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
92014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
92024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
92034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
92044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
92054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
92064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
92074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
92084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[VQDMLAL_I_I]], <4 x i16> [[VQDMLAL1_I_I]]) #4
92094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
92104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V3_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqadd.v4i32(<4 x i32> [[VQDMLAL_V_I_I]], <4 x i32> [[VQDMLAL2_I_I]]) #4
92114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VQDMLAL_V3_I_I]]
9212097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vqdmlal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
9213097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlal_high_s16(a, b, c);
9214097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9215097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
92164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqdmlal_high_s32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
92174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
92184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
92194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
92204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
92214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
92224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
92234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
92244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqdmull.v2i64(<2 x i32> [[VQDMLAL_I_I]], <2 x i32> [[VQDMLAL1_I_I]]) #4
92254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
92264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_V3_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqadd.v2i64(<2 x i64> [[VQDMLAL_V_I_I]], <2 x i64> [[VQDMLAL2_I_I]]) #4
92274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VQDMLAL_V3_I_I]]
9228097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vqdmlal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
9229097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlal_high_s32(a, b, c);
9230097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9231097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
92324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqdmlsl_high_s16(<4 x i32> %a, <8 x i16> %b, <8 x i16> %c) #0 {
92334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i16> %b, <8 x i16> %b, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
92344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <8 x i16> %c, <8 x i16> %c, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
92354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
92364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> [[SHUFFLE_I_I]] to <8 x i8>
92374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <4 x i16> [[SHUFFLE_I7_I]] to <8 x i8>
92384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
92394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <4 x i16>
92404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[VQDMLAL_I_I]], <4 x i16> [[VQDMLAL1_I_I]]) #4
92414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
92424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V3_I_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqsub.v4i32(<4 x i32> [[VQDMLSL_V_I_I]], <4 x i32> [[VQDMLAL2_I_I]]) #4
92434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VQDMLSL_V3_I_I]]
9244097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint32x4_t test_vqdmlsl_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
9245097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlsl_high_s16(a, b, c);
9246097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9247097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
92484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqdmlsl_high_s32(<2 x i64> %a, <4 x i32> %b, <4 x i32> %c) #0 {
92494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i32> %b, <4 x i32> %b, <2 x i32> <i32 2, i32 3>
92504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <4 x i32> %c, <4 x i32> %c, <2 x i32> <i32 2, i32 3>
92514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
92524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> [[SHUFFLE_I_I]] to <8 x i8>
92534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <2 x i32> [[SHUFFLE_I7_I]] to <8 x i8>
92544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL_I_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
92554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL1_I_I:%.*]] = bitcast <8 x i8> [[TMP2]] to <2 x i32>
92564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLAL2_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqdmull.v2i64(<2 x i32> [[VQDMLAL_I_I]], <2 x i32> [[VQDMLAL1_I_I]]) #4
92574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
92584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLSL_V3_I_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqsub.v2i64(<2 x i64> [[VQDMLSL_V_I_I]], <2 x i64> [[VQDMLAL2_I_I]]) #4
92594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VQDMLSL_V3_I_I]]
9260097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liuint64x2_t test_vqdmlsl_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
9261097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vqdmlsl_high_s32(a, b, c);
9262097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9263097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
92644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmull_p8(<8 x i8> %a, <8 x i8> %b) #0 {
92654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.pmull.v8i16(<8 x i8> %a, <8 x i8> %b) #4
92664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMULL_I]]
9267097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liupoly16x8_t test_vmull_p8(poly8x8_t a, poly8x8_t b) {
9268097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_p8(a, b);
9269097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9270097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu
92714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmull_high_p8(<16 x i8> %a, <16 x i8> %b) #0 {
92724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
92734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <16 x i8> %b, <16 x i8> %b, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
92744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULL_I_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.pmull.v8i16(<8 x i8> [[SHUFFLE_I_I]], <8 x i8> [[SHUFFLE_I7_I]]) #4
92754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VMULL_I_I]]
9276097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liupoly16x8_t test_vmull_high_p8(poly8x16_t a, poly8x16_t b) {
9277097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu  return vmull_high_p8(a, b);
9278097a4b487897ca29f0f371c81b6a8b6c1ca599e4Jiangning Liu}
9279aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
92804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vaddd_s64(i64 %a, i64 %b) #0 {
92814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDD_I:%.*]] = add i64 %a, %b
92824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VADDD_I]]
9283aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vaddd_s64(int64_t a, int64_t b) {
9284aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vaddd_s64(a, b);
9285aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9286aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
92874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vaddd_u64(i64 %a, i64 %b) #0 {
92884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDD_I:%.*]] = add i64 %a, %b
92894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VADDD_I]]
9290aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vaddd_u64(uint64_t a, uint64_t b) {
9291aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vaddd_u64(a, b);
9292aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9293aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
92944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsubd_s64(i64 %a, i64 %b) #0 {
92954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBD_I:%.*]] = sub i64 %a, %b
92964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSUBD_I]]
9297aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vsubd_s64(int64_t a, int64_t b) {
9298aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vsubd_s64(a, b);
9299aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9300aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsubd_u64(i64 %a, i64 %b) #0 {
93024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSUBD_I:%.*]] = sub i64 %a, %b
93034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSUBD_I]]
9304aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vsubd_u64(uint64_t a, uint64_t b) {
9305aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vsubd_u64(a, b);
9306aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9307aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqaddb_s8(i8 %a, i8 %b) #0 {
93094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
93104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
93114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDB_S8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqadd.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
93124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQADDB_S8_I]], i64 0
93134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9314aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint8_t test_vqaddb_s8(int8_t a, int8_t b) {
9315aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqaddb_s8(a, b);
9316aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9317aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqaddh_s16(i16 %a, i16 %b) #0 {
93194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
93204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
93214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqadd.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
93224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQADDH_S16_I]], i64 0
93234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9324aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint16_t test_vqaddh_s16(int16_t a, int16_t b) {
9325aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqaddh_s16(a, b);
9326aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9327aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqadds_s32(i32 %a, i32 %b) #0 {
93294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqadd.i32(i32 %a, i32 %b) #4
93304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQADDS_S32_I]]
9331aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint32_t test_vqadds_s32(int32_t a, int32_t b) {
9332aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqadds_s32(a, b);
9333aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9334aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqaddd_s64(i64 %a, i64 %b) #0 {
93364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.sqadd.i64(i64 %a, i64 %b) #4
93374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQADDD_S64_I]]
9338aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vqaddd_s64(int64_t a, int64_t b) {
9339aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqaddd_s64(a, b);
9340aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9341aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqaddb_u8(i8 %a, i8 %b) #0 {
93434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
93444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
93454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDB_U8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqadd.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
93464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQADDB_U8_I]], i64 0
93474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9348aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint8_t test_vqaddb_u8(uint8_t a, uint8_t b) {
9349aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqaddb_u8(a, b);
9350aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9351aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqaddh_u16(i16 %a, i16 %b) #0 {
93534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
93544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
93554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDH_U16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqadd.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
93564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQADDH_U16_I]], i64 0
93574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9358aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint16_t test_vqaddh_u16(uint16_t a, uint16_t b) {
9359aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqaddh_u16(a, b);
9360aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9361aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqadds_u32(i32 %a, i32 %b) #0 {
93634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDS_U32_I:%.*]] = call i32 @llvm.aarch64.neon.uqadd.i32(i32 %a, i32 %b) #4
93644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQADDS_U32_I]]
9365aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint32_t test_vqadds_u32(uint32_t a, uint32_t b) {
9366aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqadds_u32(a, b);
9367aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9368aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqaddd_u64(i64 %a, i64 %b) #0 {
93704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQADDD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.uqadd.i64(i64 %a, i64 %b) #4
93714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQADDD_U64_I]]
9372aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vqaddd_u64(uint64_t a, uint64_t b) {
9373aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqaddd_u64(a, b);
9374aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9375aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqsubb_s8(i8 %a, i8 %b) #0 {
93774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
93784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
93794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBB_S8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqsub.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
93804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQSUBB_S8_I]], i64 0
93814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9382aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint8_t test_vqsubb_s8(int8_t a, int8_t b) {
9383aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubb_s8(a, b);
9384aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9385aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqsubh_s16(i16 %a, i16 %b) #0 {
93874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
93884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
93894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqsub.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
93904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQSUBH_S16_I]], i64 0
93914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9392aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint16_t test_vqsubh_s16(int16_t a, int16_t b) {
9393aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubh_s16(a, b);
9394aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9395aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
93964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqsubs_s32(i32 %a, i32 %b) #0 {
93974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqsub.i32(i32 %a, i32 %b) #4
93984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSUBS_S32_I]]
9399aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint32_t test_vqsubs_s32(int32_t a, int32_t b) {
9400aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubs_s32(a, b);
9401aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9402aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqsubd_s64(i64 %a, i64 %b) #0 {
94044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.sqsub.i64(i64 %a, i64 %b) #4
94054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQSUBD_S64_I]]
9406aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vqsubd_s64(int64_t a, int64_t b) {
9407aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubd_s64(a, b);
9408aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9409aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqsubb_u8(i8 %a, i8 %b) #0 {
94114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
94124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
94134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBB_U8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqsub.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
94144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQSUBB_U8_I]], i64 0
94154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9416aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint8_t test_vqsubb_u8(uint8_t a, uint8_t b) {
9417aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubb_u8(a, b);
9418aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9419aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqsubh_u16(i16 %a, i16 %b) #0 {
94214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
94224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
94234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBH_U16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqsub.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
94244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQSUBH_U16_I]], i64 0
94254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9426aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint16_t test_vqsubh_u16(uint16_t a, uint16_t b) {
9427aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubh_u16(a, b);
9428aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9429aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqsubs_u32(i32 %a, i32 %b) #0 {
94314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBS_U32_I:%.*]] = call i32 @llvm.aarch64.neon.uqsub.i32(i32 %a, i32 %b) #4
94324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSUBS_U32_I]]
9433aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint32_t test_vqsubs_u32(uint32_t a, uint32_t b) {
9434aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubs_u32(a, b);
9435aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9436aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqsubd_u64(i64 %a, i64 %b) #0 {
94384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSUBD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.uqsub.i64(i64 %a, i64 %b) #4
94394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQSUBD_U64_I]]
9440aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vqsubd_u64(uint64_t a, uint64_t b) {
9441aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqsubd_u64(a, b);
9442aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9443aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vshld_s64(i64 %a, i64 %b) #0 {
94454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.sshl.i64(i64 %a, i64 %b) #4
94464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSHLD_S64_I]]
9447aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vshld_s64(int64_t a, int64_t b) {
9448aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vshld_s64(a, b);
9449aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9450aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vshld_u64(i64 %a, i64 %b) #0 {
94524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.ushl.i64(i64 %a, i64 %b) #4
94534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSHLD_U64_I]]
9454aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vshld_u64(uint64_t a, uint64_t b) {
9455aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vshld_u64(a, b);
9456aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9457aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshlb_s8(i8 %a, i8 %b) #0 {
94594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
94604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
94614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLB_S8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
94624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQSHLB_S8_I]], i64 0
94634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9464aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint8_t test_vqshlb_s8(int8_t a, int8_t b) {
9465aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshlb_s8(a, b);
9466aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9467aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshlh_s16(i16 %a, i16 %b) #0 {
94694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
94704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
94714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
94724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQSHLH_S16_I]], i64 0
94734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9474aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint16_t test_vqshlh_s16(int16_t a, int16_t b) {
9475aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshlh_s16(a, b);
9476aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9477aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshls_s32(i32 %a, i32 %b) #0 {
94794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqshl.i32(i32 %a, i32 %b) #4
94804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHLS_S32_I]]
9481aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint32_t test_vqshls_s32(int32_t a, int32_t b) {
9482aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshls_s32(a, b);
9483aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9484aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqshld_s64(i64 %a, i64 %b) #0 {
94864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.sqshl.i64(i64 %a, i64 %b) #4
94874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQSHLD_S64_I]]
9488aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vqshld_s64(int64_t a, int64_t b) {
9489aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshld_s64(a, b);
9490aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9491aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
94924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshlb_u8(i8 %a, i8 %b) #0 {
94934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
94944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
94954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLB_U8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
94964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQSHLB_U8_I]], i64 0
94974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9498aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint8_t test_vqshlb_u8(uint8_t a, uint8_t b) {
9499aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshlb_u8(a, b);
9500aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9501aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshlh_u16(i16 %a, i16 %b) #0 {
95034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
95044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
95054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLH_U16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
95064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQSHLH_U16_I]], i64 0
95074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9508aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint16_t test_vqshlh_u16(uint16_t a, uint16_t b) {
9509aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshlh_u16(a, b);
9510aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9511aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshls_u32(i32 %a, i32 %b) #0 {
95134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLS_U32_I:%.*]] = call i32 @llvm.aarch64.neon.uqshl.i32(i32 %a, i32 %b) #4
95144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHLS_U32_I]]
9515aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint32_t test_vqshls_u32(uint32_t a, uint32_t b) {
9516aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshls_u32(a, b);
9517aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9518aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqshld_u64(i64 %a, i64 %b) #0 {
95204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.uqshl.i64(i64 %a, i64 %b) #4
95214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQSHLD_U64_I]]
9522aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vqshld_u64(uint64_t a, uint64_t b) {
9523aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqshld_u64(a, b);
9524aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9525aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vrshld_s64(i64 %a, i64 %b) #0 {
95274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.srshl.i64(i64 %a, i64 %b) #4
95284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VRSHLD_S64_I]]
9529aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vrshld_s64(int64_t a, int64_t b) {
9530aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vrshld_s64(a, b);
9531aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9532aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
9533aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vrshld_u64(i64 %a, i64 %b) #0 {
95354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHLD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.urshl.i64(i64 %a, i64 %b) #4
95364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VRSHLD_U64_I]]
9537aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vrshld_u64(uint64_t a, uint64_t b) {
9538aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vrshld_u64(a, b);
9539aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9540aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqrshlb_s8(i8 %a, i8 %b) #0 {
95424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
95434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
95444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLB_S8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshl.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
95454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQRSHLB_S8_I]], i64 0
95464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9547aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint8_t test_vqrshlb_s8(int8_t a, int8_t b) {
9548aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshlb_s8(a, b);
9549aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9550aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqrshlh_s16(i16 %a, i16 %b) #0 {
95524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
95534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
95544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshl.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
95554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQRSHLH_S16_I]], i64 0
95564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9557aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint16_t test_vqrshlh_s16(int16_t a, int16_t b) {
9558aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshlh_s16(a, b);
9559aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9560aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqrshls_s32(i32 %a, i32 %b) #0 {
95624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqrshl.i32(i32 %a, i32 %b) #4
95634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQRSHLS_S32_I]]
9564aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint32_t test_vqrshls_s32(int32_t a, int32_t b) {
9565aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshls_s32(a, b);
9566aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9567aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqrshld_s64(i64 %a, i64 %b) #0 {
95694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.sqrshl.i64(i64 %a, i64 %b) #4
95704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQRSHLD_S64_I]]
9571aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vqrshld_s64(int64_t a, int64_t b) {
9572aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshld_s64(a, b);
9573aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9574aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqrshlb_u8(i8 %a, i8 %b) #0 {
95764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
95774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
95784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLB_U8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqrshl.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
95794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VQRSHLB_U8_I]], i64 0
95804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
9581aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint8_t test_vqrshlb_u8(uint8_t a, uint8_t b) {
9582aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshlb_u8(a, b);
9583aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9584aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqrshlh_u16(i16 %a, i16 %b) #0 {
95864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
95874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
95884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLH_U16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqrshl.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
95894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQRSHLH_U16_I]], i64 0
95904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
9591aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint16_t test_vqrshlh_u16(uint16_t a, uint16_t b) {
9592aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshlh_u16(a, b);
9593aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9594aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
95954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqrshls_u32(i32 %a, i32 %b) #0 {
95964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLS_U32_I:%.*]] = call i32 @llvm.aarch64.neon.uqrshl.i32(i32 %a, i32 %b) #4
95974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQRSHLS_U32_I]]
9598aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint32_t test_vqrshls_u32(uint32_t a, uint32_t b) {
9599aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshls_u32(a, b);
9600aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9601aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqrshld_u64(i64 %a, i64 %b) #0 {
96034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHLD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.uqrshl.i64(i64 %a, i64 %b) #4
96044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQRSHLD_U64_I]]
9605aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuuint64_t test_vqrshld_u64(uint64_t a, uint64_t b) {
9606aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vqrshld_u64(a, b);
9607aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9608aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vpaddd_s64(<2 x i64> %a) #0 {
96104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
96114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
96124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.uaddv.i64.v2i64(<2 x i64> [[TMP1]]) #4
96134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VPADDD_S64_I]]
9614aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liuint64_t test_vpaddd_s64(int64x2_t a) {
9615aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpaddd_s64(a);
9616aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9617aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vpadds_f32(<2 x float> %a) #0 {
96194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
96204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
96214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[LANE0_I:%.*]] = extractelement <2 x float> [[TMP1]], i64 0
96224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[LANE1_I:%.*]] = extractelement <2 x float> [[TMP1]], i64 1
96234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDD_I:%.*]] = fadd float [[LANE0_I]], [[LANE1_I]]
96244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VPADDD_I]]
9625aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat32_t test_vpadds_f32(float32x2_t a) {
9626aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpadds_f32(a);
9627aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9628aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vpaddd_f64(<2 x double> %a) #0 {
96304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
96314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
96324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[LANE0_I:%.*]] = extractelement <2 x double> [[TMP1]], i64 0
96334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[LANE1_I:%.*]] = extractelement <2 x double> [[TMP1]], i64 1
96344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDD_I:%.*]] = fadd double [[LANE0_I]], [[LANE1_I]]
96354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VPADDD_I]]
9636aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat64_t test_vpaddd_f64(float64x2_t a) {
9637aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpaddd_f64(a);
9638aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9639aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vpmaxnms_f32(<2 x float> %a) #0 {
96414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
96424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
96434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNMS_F32_I:%.*]] = call float @llvm.aarch64.neon.fmaxnmv.f32.v2f32(<2 x float> [[TMP1]]) #4
96444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VPMAXNMS_F32_I]]
9645aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat32_t test_vpmaxnms_f32(float32x2_t a) {
9646aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpmaxnms_f32(a);
9647aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9648aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vpmaxnmqd_f64(<2 x double> %a) #0 {
96504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
96514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
96524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXNMQD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmaxnmv.f64.v2f64(<2 x double> [[TMP1]]) #4
96534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VPMAXNMQD_F64_I]]
9654aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat64_t test_vpmaxnmqd_f64(float64x2_t a) {
9655aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpmaxnmqd_f64(a);
9656aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9657aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vpmaxs_f32(<2 x float> %a) #0 {
96594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
96604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
96614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXS_F32_I:%.*]] = call float @llvm.aarch64.neon.fmaxv.f32.v2f32(<2 x float> [[TMP1]]) #4
96624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VPMAXS_F32_I]]
9663aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat32_t test_vpmaxs_f32(float32x2_t a) {
9664aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpmaxs_f32(a);
9665aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9666aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vpmaxqd_f64(<2 x double> %a) #0 {
96684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
96694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
96704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMAXQD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double> [[TMP1]]) #4
96714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VPMAXQD_F64_I]]
9672aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat64_t test_vpmaxqd_f64(float64x2_t a) {
9673aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpmaxqd_f64(a);
9674aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9675aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vpminnms_f32(<2 x float> %a) #0 {
96774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
96784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
96794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNMS_F32_I:%.*]] = call float @llvm.aarch64.neon.fminnmv.f32.v2f32(<2 x float> [[TMP1]]) #4
96804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VPMINNMS_F32_I]]
9681aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat32_t test_vpminnms_f32(float32x2_t a) {
9682aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpminnms_f32(a);
9683aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9684aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vpminnmqd_f64(<2 x double> %a) #0 {
96864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
96874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
96884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINNMQD_F64_I:%.*]] = call double @llvm.aarch64.neon.fminnmv.f64.v2f64(<2 x double> [[TMP1]]) #4
96894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VPMINNMQD_F64_I]]
9690aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat64_t test_vpminnmqd_f64(float64x2_t a) {
9691aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpminnmqd_f64(a);
9692aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9693aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
96944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vpmins_f32(<2 x float> %a) #0 {
96954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
96964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
96974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINS_F32_I:%.*]] = call float @llvm.aarch64.neon.fminv.f32.v2f32(<2 x float> [[TMP1]]) #4
96984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VPMINS_F32_I]]
9699aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat32_t test_vpmins_f32(float32x2_t a) {
9700aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpmins_f32(a);
9701aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9702aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
97034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vpminqd_f64(<2 x double> %a) #0 {
97044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
97054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
97064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPMINQD_F64_I:%.*]] = call double @llvm.aarch64.neon.fminv.f64.v2f64(<2 x double> [[TMP1]]) #4
97074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VPMINQD_F64_I]]
9708aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liufloat64_t test_vpminqd_f64(float64x2_t a) {
9709aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu  return vpminqd_f64(a);
9710aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu}
9711aee8e168112a3cbb6282ab4c6b5ae63933053ebfJiangning Liu
97124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqdmulhh_s16(i16 %a, i16 %b) #0 {
97134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
97144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
97154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqdmulh.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
97164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQDMULHH_S16_I]], i64 0
97174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
971848f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierint16_t test_vqdmulhh_s16(int16_t a, int16_t b) {
971948f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vqdmulhh_s16(a, b);
972048f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
972148f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqdmulhs_s32(i32 %a, i32 %b) #0 {
97234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqdmulh.i32(i32 %a, i32 %b) #4
97244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQDMULHS_S32_I]]
972548f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierint32_t test_vqdmulhs_s32(int32_t a, int32_t b) {
972648f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vqdmulhs_s32(a, b);
972748f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
972848f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqrdmulhh_s16(i16 %a, i16 %b) #0 {
97304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
97314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
97324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrdmulh.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
97334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VQRDMULHH_S16_I]], i64 0
97344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
973548f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierint16_t test_vqrdmulhh_s16(int16_t a, int16_t b) {
973648f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vqrdmulhh_s16(a, b);
973748f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
973848f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqrdmulhs_s32(i32 %a, i32 %b) #0 {
97404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqrdmulh.i32(i32 %a, i32 %b) #4
97414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQRDMULHS_S32_I]]
974248f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierint32_t test_vqrdmulhs_s32(int32_t a, int32_t b) {
974348f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vqrdmulhs_s32(a, b);
974448f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
974548f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vmulxs_f32(float %a, float %b) #0 {
97474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULXS_F32_I:%.*]] = call float @llvm.aarch64.neon.fmulx.f32(float %a, float %b) #4
97484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VMULXS_F32_I]]
974948f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierfloat32_t test_vmulxs_f32(float32_t a, float32_t b) {
975048f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vmulxs_f32(a, b);
975148f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
975248f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vmulxd_f64(double %a, double %b) #0 {
97544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double %a, double %b) #4
97554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VMULXD_F64_I]]
975648f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierfloat64_t test_vmulxd_f64(float64_t a, float64_t b) {
975748f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vmulxd_f64(a, b);
975848f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
975948f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vmulx_f64(<1 x double> %a, <1 x double> %b) #0 {
97614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
97624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
97634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
97644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
97654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMULX2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.fmulx.v1f64(<1 x double> [[VMULX_I]], <1 x double> [[VMULX1_I]]) #4
97664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VMULX2_I]]
9767651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64x1_t test_vmulx_f64(float64x1_t a, float64x1_t b) {
9768651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vmulx_f64(a, b);
9769651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
9770651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
97714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vrecpss_f32(float %a, float %b) #0 {
97724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_I:%.*]] = call float @llvm.aarch64.neon.frecps.f32(float %a, float %b) #4
97734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VRECPS_I]]
977448f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierfloat32_t test_vrecpss_f32(float32_t a, float32_t b) {
977548f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vrecpss_f32(a, b);
977648f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
977748f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vrecpsd_f64(double %a, double %b) #0 {
97794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_I:%.*]] = call double @llvm.aarch64.neon.frecps.f64(double %a, double %b) #4
97804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VRECPS_I]]
978148f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierfloat64_t test_vrecpsd_f64(float64_t a, float64_t b) {
978248f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vrecpsd_f64(a, b);
978348f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
978448f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vrsqrtss_f32(float %a, float %b) #0 {
97864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSS_F32_I:%.*]] = call float @llvm.aarch64.neon.frsqrts.f32(float %a, float %b) #4
97874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VRSQRTSS_F32_I]]
978848f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierfloat32_t test_vrsqrtss_f32(float32_t a, float32_t b) {
978948f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vrsqrtss_f32(a, b);
979048f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
979148f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier
97924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vrsqrtsd_f64(double %a, double %b) #0 {
97934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTSD_F64_I:%.*]] = call double @llvm.aarch64.neon.frsqrts.f64(double %a, double %b) #4
97944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VRSQRTSD_F64_I]]
979548f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosierfloat64_t test_vrsqrtsd_f64(float64_t a, float64_t b) {
979648f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier  return vrsqrtsd_f64(a, b);
979748f98fe7c1374bf416403bf82b29d4fc11011057Chad Rosier}
97986d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier
97994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vcvts_f32_s32(i32 %a) #0 {
98004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sitofp i32 %a to float
98014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[TMP0]]
98026d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosierfloat32_t test_vcvts_f32_s32(int32_t a) {
980338e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvts_f32_s32(a);
98046d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier}
98056d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier
98064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vcvtd_f64_s64(i64 %a) #0 {
98074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sitofp i64 %a to double
98084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[TMP0]]
98096d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosierfloat64_t test_vcvtd_f64_s64(int64_t a) {
981038e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvtd_f64_s64(a);
98116d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier}
98126d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier
98134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vcvts_f32_u32(i32 %a) #0 {
98144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = uitofp i32 %a to float
98154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[TMP0]]
98166d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosierfloat32_t test_vcvts_f32_u32(uint32_t a) {
981738e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvts_f32_u32(a);
98186d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier}
98196d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier
98204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vcvtd_f64_u64(i64 %a) #0 {
98214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = uitofp i64 %a to double
98224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[TMP0]]
98236d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosierfloat64_t test_vcvtd_f64_u64(uint64_t a) {
982438e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvtd_f64_u64(a);
98256d048e1a9768b594513e2ec7a6d3579787eb2505Chad Rosier}
98263cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier
98274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vrecpes_f32(float %a) #0 {
98284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPES_F32_I:%.*]] = call float @llvm.aarch64.neon.frecpe.f32(float %a) #4
98294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VRECPES_F32_I]]
98303cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosierfloat32_t test_vrecpes_f32(float32_t a) {
98313cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier  return vrecpes_f32(a);
98323cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier}
98333cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier
98344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vrecped_f64(double %a) #0 {
98354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPED_F64_I:%.*]] = call double @llvm.aarch64.neon.frecpe.f64(double %a) #4
98364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VRECPED_F64_I]]
98373cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosierfloat64_t test_vrecped_f64(float64_t a) {
98383cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier  return vrecped_f64(a);
98393cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier}
98403cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier
98414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vrecpxs_f32(float %a) #0 {
98424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPXS_F32_I:%.*]] = call float @llvm.aarch64.neon.frecpx.f32(float %a) #4
98434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VRECPXS_F32_I]]
98443cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosierfloat32_t test_vrecpxs_f32(float32_t a) {
98453cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier  return vrecpxs_f32(a);
98463cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier }
98473cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier
98484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vrecpxd_f64(double %a) #0 {
98494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPXD_F64_I:%.*]] = call double @llvm.aarch64.neon.frecpx.f64(double %a) #4
98504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VRECPXD_F64_I]]
98513cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosierfloat64_t test_vrecpxd_f64(float64_t a) {
98523cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier  return vrecpxd_f64(a);
98533cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier}
98543cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier
98554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrsqrte_u32(<2 x i32> %a) #0 {
98564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
98574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
98584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTE_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.ursqrte.v2i32(<2 x i32> [[VRSQRTE_V_I]]) #4
98594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VRSQRTE_V1_I]]
9860651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vrsqrte_u32(uint32x2_t a) {
9861651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrsqrte_u32(a);
9862651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
9863651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
98644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrsqrteq_u32(<4 x i32> %a) #0 {
98654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
98664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
98674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTEQ_V1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.ursqrte.v4i32(<4 x i32> [[VRSQRTEQ_V_I]]) #4
98684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VRSQRTEQ_V1_I]]
9869651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vrsqrteq_u32(uint32x4_t a) {
9870651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vrsqrteq_u32(a);
9871651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
9872651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
98734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vrsqrtes_f32(float %a) #0 {
98744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTES_F32_I:%.*]] = call float @llvm.aarch64.neon.frsqrte.f32(float %a) #4
98754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VRSQRTES_F32_I]]
98763cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosierfloat32_t test_vrsqrtes_f32(float32_t a) {
98773cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier  return vrsqrtes_f32(a);
98783cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier}
98793cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier
98804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vrsqrted_f64(double %a) #0 {
98814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTED_F64_I:%.*]] = call double @llvm.aarch64.neon.frsqrte.f64(double %a) #4
98824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VRSQRTED_F64_I]]
98833cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosierfloat64_t test_vrsqrted_f64(float64_t a) {
98843cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier  return vrsqrted_f64(a);
98853cb333070d35c9a6843e4211c9a74322f6c126ecChad Rosier}
98865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
98874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vld1q_u8(i8* %a) #0 {
98884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <16 x i8>*
98894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = load <16 x i8>, <16 x i8>* [[TMP0]]
98904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP1]]
98915610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x16_t test_vld1q_u8(uint8_t const *a) {
98925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_u8(a);
98935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
98945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
98954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vld1q_u16(i16* %a) #0 {
98964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
98974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
98984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i16>, <8 x i16>* [[TMP1]]
98994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
99005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x8_t test_vld1q_u16(uint16_t const *a) {
99015610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_u16(a);
99025610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99035610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vld1q_u32(i32* %a) #0 {
99054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
99064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
99074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <4 x i32>, <4 x i32>* [[TMP1]]
99084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
99095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x4_t test_vld1q_u32(uint32_t const *a) {
99105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_u32(a);
99115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vld1q_u64(i64* %a) #0 {
99144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
99154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <2 x i64>*
99164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <2 x i64>, <2 x i64>* [[TMP1]]
99174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
99185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x2_t test_vld1q_u64(uint64_t const *a) {
99195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_u64(a);
99205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vld1q_s8(i8* %a) #0 {
99234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <16 x i8>*
99244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = load <16 x i8>, <16 x i8>* [[TMP0]]
99254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP1]]
99265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x16_t test_vld1q_s8(int8_t const *a) {
99275610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_s8(a);
99285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99295610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vld1q_s16(i16* %a) #0 {
99314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
99324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
99334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i16>, <8 x i16>* [[TMP1]]
99344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
99355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x8_t test_vld1q_s16(int16_t const *a) {
99365610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_s16(a);
99375610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99385610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vld1q_s32(i32* %a) #0 {
99404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
99414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
99424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <4 x i32>, <4 x i32>* [[TMP1]]
99434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
99445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x4_t test_vld1q_s32(int32_t const *a) {
99455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_s32(a);
99465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99475610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vld1q_s64(i64* %a) #0 {
99494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
99504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <2 x i64>*
99514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <2 x i64>, <2 x i64>* [[TMP1]]
99524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
99535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x2_t test_vld1q_s64(int64_t const *a) {
99545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_s64(a);
99555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vld1q_f16(half* %a) #0 {
99584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
99594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
99604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i16>, <8 x i16>* [[TMP1]]
99614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i16> [[TMP2]] to <8 x half>
99624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP3]]
99635610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x8_t test_vld1q_f16(float16_t const *a) {
99645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_f16(a);
99655610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99665610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vld1q_f32(float* %a) #0 {
99684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
99694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <4 x float>*
99704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <4 x float>, <4 x float>* [[TMP1]]
99714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP2]]
99725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x4_t test_vld1q_f32(float32_t const *a) {
99735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_f32(a);
99745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vld1q_f64(double* %a) #0 {
99774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
99784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <2 x double>*
99794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <2 x double>, <2 x double>* [[TMP1]]
99804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP2]]
99815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x2_t test_vld1q_f64(float64_t const *a) {
99825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_f64(a);
99835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vld1q_p8(i8* %a) #0 {
99864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <16 x i8>*
99874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = load <16 x i8>, <16 x i8>* [[TMP0]]
99884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP1]]
99895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x16_t test_vld1q_p8(poly8_t const *a) {
99905610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_p8(a);
99915610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
99925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
99934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vld1q_p16(i16* %a) #0 {
99944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
99954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
99964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i16>, <8 x i16>* [[TMP1]]
99974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
99985610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x8_t test_vld1q_p16(poly16_t const *a) {
99995610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1q_p16(a);
100005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100015610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vld1_u8(i8* %a) #0 {
100034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <8 x i8>*
100044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = load <8 x i8>, <8 x i8>* [[TMP0]]
100054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP1]]
100065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x8_t test_vld1_u8(uint8_t const *a) {
100075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_u8(a);
100085610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vld1_u16(i16* %a) #0 {
100114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
100124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
100134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <4 x i16>, <4 x i16>* [[TMP1]]
100144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
100155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x4_t test_vld1_u16(uint16_t const *a) {
100165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_u16(a);
100175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vld1_u32(i32* %a) #0 {
100204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
100214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
100224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <2 x i32>, <2 x i32>* [[TMP1]]
100234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
100245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x2_t test_vld1_u32(uint32_t const *a) {
100255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_u32(a);
100265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100275610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vld1_u64(i64* %a) #0 {
100294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
100304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <1 x i64>*
100314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <1 x i64>, <1 x i64>* [[TMP1]]
100324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
100335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x1_t test_vld1_u64(uint64_t const *a) {
100345610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_u64(a);
100355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100365610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vld1_s8(i8* %a) #0 {
100384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <8 x i8>*
100394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = load <8 x i8>, <8 x i8>* [[TMP0]]
100404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP1]]
100415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x8_t test_vld1_s8(int8_t const *a) {
100425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_s8(a);
100435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vld1_s16(i16* %a) #0 {
100464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
100474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
100484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <4 x i16>, <4 x i16>* [[TMP1]]
100494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
100505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x4_t test_vld1_s16(int16_t const *a) {
100515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_s16(a);
100525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vld1_s32(i32* %a) #0 {
100554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
100564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
100574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <2 x i32>, <2 x i32>* [[TMP1]]
100584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
100595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x2_t test_vld1_s32(int32_t const *a) {
100605610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_s32(a);
100615610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100625610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vld1_s64(i64* %a) #0 {
100644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
100654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <1 x i64>*
100664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <1 x i64>, <1 x i64>* [[TMP1]]
100674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
100685610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x1_t test_vld1_s64(int64_t const *a) {
100695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_s64(a);
100705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100715610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vld1_f16(half* %a) #0 {
100734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
100744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
100754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <4 x i16>, <4 x i16>* [[TMP1]]
100764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <4 x i16> [[TMP2]] to <4 x half>
100774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP3]]
100785610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x4_t test_vld1_f16(float16_t const *a) {
100795610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_f16(a);
100805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vld1_f32(float* %a) #0 {
100834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
100844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <2 x float>*
100854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <2 x float>, <2 x float>* [[TMP1]]
100864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP2]]
100875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x2_t test_vld1_f32(float32_t const *a) {
100885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_f32(a);
100895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100905610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
100914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vld1_f64(double* %a) #0 {
100924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
100934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <1 x double>*
100944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <1 x double>, <1 x double>* [[TMP1]]
100954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP2]]
100965610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x1_t test_vld1_f64(float64_t const *a) {
100975610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_f64(a);
100985610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
100995610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
101004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vld1_p8(i8* %a) #0 {
101014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <8 x i8>*
101024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = load <8 x i8>, <8 x i8>* [[TMP0]]
101034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP1]]
101045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x8_t test_vld1_p8(poly8_t const *a) {
101055610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_p8(a);
101065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
101075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
101084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vld1_p16(i16* %a) #0 {
101094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
101104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
101114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <4 x i16>, <4 x i16>* [[TMP1]]
101124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
101135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x4_t test_vld1_p16(poly16_t const *a) {
101145610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld1_p16(a);
101155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
101165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
101174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x2_t @test_vld2q_u8(i8* %a) #0 {
101184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x2_t, align 16
101194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x2_t, align 16
101204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
101214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
101224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
101234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8> }*
101244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD2]], { <16 x i8>, <16 x i8> }* [[TMP2]]
101254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x2_t* [[RETVAL]] to i8*
101264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
101274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false)
101284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], align 16
101294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x2_t [[TMP5]]
101305610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x16x2_t test_vld2q_u8(uint8_t const *a) {
101315610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_u8(a);
101325610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
101335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
101344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x2_t @test_vld2q_u16(i16* %a) #0 {
101354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x2_t, align 16
101364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x2_t, align 16
101374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
101384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
101394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
101404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
101414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
101424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD2]], { <8 x i16>, <8 x i16> }* [[TMP3]]
101434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x8x2_t* [[RETVAL]] to i8*
101444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
101454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
101464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], align 16
101474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x2_t [[TMP6]]
101485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x8x2_t test_vld2q_u16(uint16_t const *a) {
101495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_u16(a);
101505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
101515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
101524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x2_t @test_vld2q_u32(i32* %a) #0 {
101534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x2_t, align 16
101544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x2_t, align 16
101554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
101564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
101574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i32>*
101584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0v4i32(<4 x i32>* [[TMP2]])
101594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32> }*
101604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32> } [[VLD2]], { <4 x i32>, <4 x i32> }* [[TMP3]]
101614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x4x2_t* [[RETVAL]] to i8*
101624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
101634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
101644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], align 16
101654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x2_t [[TMP6]]
101665610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x4x2_t test_vld2q_u32(uint32_t const *a) {
101675610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_u32(a);
101685610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
101695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
101704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x2x2_t @test_vld2q_u64(i64* %a) #0 {
101714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x2_t, align 16
101724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x2_t, align 16
101734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
101744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
101754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i64>*
101764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2.v2i64.p0v2i64(<2 x i64>* [[TMP2]])
101774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
101784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]]
101794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x2_t* [[RETVAL]] to i8*
101804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
101814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
101824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[RETVAL]], align 16
101834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x2x2_t [[TMP6]]
101845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x2x2_t test_vld2q_u64(uint64_t const *a) {
101855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_u64(a);
101865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
101875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
101884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x2_t @test_vld2q_s8(i8* %a) #0 {
101894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x2_t, align 16
101904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x2_t, align 16
101914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
101924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
101934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
101944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8> }*
101954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD2]], { <16 x i8>, <16 x i8> }* [[TMP2]]
101964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x2_t* [[RETVAL]] to i8*
101974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
101984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false)
101994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], align 16
102004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x2_t [[TMP5]]
102015610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x16x2_t test_vld2q_s8(int8_t const *a) {
102025610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_s8(a);
102035610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
102045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
102054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x2_t @test_vld2q_s16(i16* %a) #0 {
102064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x2_t, align 16
102074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x2_t, align 16
102084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
102094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
102104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
102114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
102124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
102134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD2]], { <8 x i16>, <8 x i16> }* [[TMP3]]
102144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x8x2_t* [[RETVAL]] to i8*
102154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
102164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
102174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], align 16
102184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x2_t [[TMP6]]
102195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x8x2_t test_vld2q_s16(int16_t const *a) {
102205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_s16(a);
102215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
102225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
102234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x2_t @test_vld2q_s32(i32* %a) #0 {
102244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x2_t, align 16
102254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x2_t, align 16
102264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
102274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
102284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i32>*
102294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0v4i32(<4 x i32>* [[TMP2]])
102304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32> }*
102314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32> } [[VLD2]], { <4 x i32>, <4 x i32> }* [[TMP3]]
102324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x4x2_t* [[RETVAL]] to i8*
102334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
102344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
102354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], align 16
102364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x2_t [[TMP6]]
102375610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x4x2_t test_vld2q_s32(int32_t const *a) {
102385610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_s32(a);
102395610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
102405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
102414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x2x2_t @test_vld2q_s64(i64* %a) #0 {
102424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x2_t, align 16
102434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x2_t, align 16
102444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
102454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
102464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i64>*
102474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2.v2i64.p0v2i64(<2 x i64>* [[TMP2]])
102484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
102494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]]
102504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x2_t* [[RETVAL]] to i8*
102514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
102524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
102534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x2_t, %struct.int64x2x2_t* [[RETVAL]], align 16
102544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x2x2_t [[TMP6]]
102555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x2x2_t test_vld2q_s64(int64_t const *a) {
102565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_s64(a);
102575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
102585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
102594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x8x2_t @test_vld2q_f16(half* %a) #0 {
102604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x2_t, align 16
102614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x2_t, align 16
102624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
102634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
102644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
102654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
102664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
102674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD2]], { <8 x i16>, <8 x i16> }* [[TMP3]]
102684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x8x2_t* [[RETVAL]] to i8*
102694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
102704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
102714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x8x2_t, %struct.float16x8x2_t* [[RETVAL]], align 16
102724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x8x2_t [[TMP6]]
102735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x8x2_t test_vld2q_f16(float16_t const *a) {
102745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_f16(a);
102755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
102765610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
102774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x2_t @test_vld2q_f32(float* %a) #0 {
102784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x2_t, align 16
102794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x2_t, align 16
102804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
102814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
102824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x float>*
102834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2.v4f32.p0v4f32(<4 x float>* [[TMP2]])
102844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x float>, <4 x float> }*
102854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x float>, <4 x float> } [[VLD2]], { <4 x float>, <4 x float> }* [[TMP3]]
102864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x4x2_t* [[RETVAL]] to i8*
102874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
102884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
102894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], align 16
102904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x2_t [[TMP6]]
102915610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x4x2_t test_vld2q_f32(float32_t const *a) {
102925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_f32(a);
102935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
102945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
102954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x2x2_t @test_vld2q_f64(double* %a) #0 {
102964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x2_t, align 16
102974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x2_t, align 16
102984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
102994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
103004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x double>*
103014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2.v2f64.p0v2f64(<2 x double>* [[TMP2]])
103024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double> }*
103034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x double>, <2 x double> } [[VLD2]], { <2 x double>, <2 x double> }* [[TMP3]]
103044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x2_t* [[RETVAL]] to i8*
103054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
103064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
103074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x2_t, %struct.float64x2x2_t* [[RETVAL]], align 16
103084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x2x2_t [[TMP6]]
103095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x2x2_t test_vld2q_f64(float64_t const *a) {
103105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_f64(a);
103115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
103125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
103134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x2_t @test_vld2q_p8(i8* %a) #0 {
103144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x2_t, align 16
103154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x2_t, align 16
103164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
103174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
103184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
103194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8> }*
103204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD2]], { <16 x i8>, <16 x i8> }* [[TMP2]]
103214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x2_t* [[RETVAL]] to i8*
103224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
103234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 16, i1 false)
103244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], align 16
103254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x2_t [[TMP5]]
103265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x16x2_t test_vld2q_p8(poly8_t const *a) {
103275610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_p8(a);
103285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
103295610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
103304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x2_t @test_vld2q_p16(i16* %a) #0 {
103314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x2_t, align 16
103324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x2_t, align 16
103334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
103344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
103354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
103364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
103374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
103384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD2]], { <8 x i16>, <8 x i16> }* [[TMP3]]
103394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x8x2_t* [[RETVAL]] to i8*
103404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
103414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
103424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], align 16
103434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x2_t [[TMP6]]
103445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x8x2_t test_vld2q_p16(poly16_t const *a) {
103455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2q_p16(a);
103465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
103475610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
103484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x2_t @test_vld2_u8(i8* %a) #0 {
103494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x2_t, align 8
103504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x2_t, align 8
103514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
103524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
103534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
103544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8> }*
103554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD2]], { <8 x i8>, <8 x i8> }* [[TMP2]]
103564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x2_t* [[RETVAL]] to i8*
103574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
103584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false)
103594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], align 8
103604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x2_t [[TMP5]]
103615610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x8x2_t test_vld2_u8(uint8_t const *a) {
103625610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_u8(a);
103635610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
103645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
103654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x2_t @test_vld2_u16(i16* %a) #0 {
103664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x2_t, align 8
103674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x2_t, align 8
103684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
103694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
103704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
103714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
103724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
103734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD2]], { <4 x i16>, <4 x i16> }* [[TMP3]]
103744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x4x2_t* [[RETVAL]] to i8*
103754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
103764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
103774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], align 8
103784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x2_t [[TMP6]]
103795610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x4x2_t test_vld2_u16(uint16_t const *a) {
103805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_u16(a);
103815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
103825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
103834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x2_t @test_vld2_u32(i32* %a) #0 {
103844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x2_t, align 8
103854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x2_t, align 8
103864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
103874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
103884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i32>*
103894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2.v2i32.p0v2i32(<2 x i32>* [[TMP2]])
103904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32> }*
103914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32> } [[VLD2]], { <2 x i32>, <2 x i32> }* [[TMP3]]
103924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x2x2_t* [[RETVAL]] to i8*
103934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
103944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
103954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], align 8
103964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x2_t [[TMP6]]
103975610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x2x2_t test_vld2_u32(uint32_t const *a) {
103985610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_u32(a);
103995610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
104005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
104014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x1x2_t @test_vld2_u64(i64* %a) #0 {
104024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x2_t, align 8
104034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x2_t, align 8
104044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
104054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
104064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x i64>*
104074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2.v1i64.p0v1i64(<1 x i64>* [[TMP2]])
104084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64> }*
104094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD2]], { <1 x i64>, <1 x i64> }* [[TMP3]]
104104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x1x2_t* [[RETVAL]] to i8*
104114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
104124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
104134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[RETVAL]], align 8
104144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x1x2_t [[TMP6]]
104155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x1x2_t test_vld2_u64(uint64_t const *a) {
104165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_u64(a);
104175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
104185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
104194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x2_t @test_vld2_s8(i8* %a) #0 {
104204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x2_t, align 8
104214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x2_t, align 8
104224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
104234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
104244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
104254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8> }*
104264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD2]], { <8 x i8>, <8 x i8> }* [[TMP2]]
104274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x2_t* [[RETVAL]] to i8*
104284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
104294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false)
104304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], align 8
104314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x2_t [[TMP5]]
104325610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x8x2_t test_vld2_s8(int8_t const *a) {
104335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_s8(a);
104345610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
104355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
104364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x2_t @test_vld2_s16(i16* %a) #0 {
104374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x2_t, align 8
104384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x2_t, align 8
104394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
104404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
104414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
104424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
104434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
104444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD2]], { <4 x i16>, <4 x i16> }* [[TMP3]]
104454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x4x2_t* [[RETVAL]] to i8*
104464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
104474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
104484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], align 8
104494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x2_t [[TMP6]]
104505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x4x2_t test_vld2_s16(int16_t const *a) {
104515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_s16(a);
104525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
104535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
104544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x2_t @test_vld2_s32(i32* %a) #0 {
104554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x2_t, align 8
104564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x2_t, align 8
104574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
104584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
104594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i32>*
104604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2.v2i32.p0v2i32(<2 x i32>* [[TMP2]])
104614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32> }*
104624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32> } [[VLD2]], { <2 x i32>, <2 x i32> }* [[TMP3]]
104634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x2x2_t* [[RETVAL]] to i8*
104644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
104654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
104664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], align 8
104674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x2_t [[TMP6]]
104685610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x2x2_t test_vld2_s32(int32_t const *a) {
104695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_s32(a);
104705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
104715610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
104724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x1x2_t @test_vld2_s64(i64* %a) #0 {
104734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x2_t, align 8
104744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x2_t, align 8
104754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
104764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
104774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x i64>*
104784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2.v1i64.p0v1i64(<1 x i64>* [[TMP2]])
104794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64> }*
104804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD2]], { <1 x i64>, <1 x i64> }* [[TMP3]]
104814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x1x2_t* [[RETVAL]] to i8*
104824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
104834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
104844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x1x2_t, %struct.int64x1x2_t* [[RETVAL]], align 8
104854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x1x2_t [[TMP6]]
104865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x1x2_t test_vld2_s64(int64_t const *a) {
104875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_s64(a);
104885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
104895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
104904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x4x2_t @test_vld2_f16(half* %a) #0 {
104914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x2_t, align 8
104924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x2_t, align 8
104934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
104944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
104954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
104964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
104974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
104984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD2]], { <4 x i16>, <4 x i16> }* [[TMP3]]
104994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x4x2_t* [[RETVAL]] to i8*
105004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
105014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
105024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x4x2_t, %struct.float16x4x2_t* [[RETVAL]], align 8
105034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x4x2_t [[TMP6]]
105045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x4x2_t test_vld2_f16(float16_t const *a) {
105055610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_f16(a);
105065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
105075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
105084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x2_t @test_vld2_f32(float* %a) #0 {
105094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x2_t, align 8
105104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x2_t, align 8
105114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
105124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
105134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x float>*
105144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2.v2f32.p0v2f32(<2 x float>* [[TMP2]])
105154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x float>, <2 x float> }*
105164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x float>, <2 x float> } [[VLD2]], { <2 x float>, <2 x float> }* [[TMP3]]
105174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x2x2_t* [[RETVAL]] to i8*
105184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
105194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
105204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], align 8
105214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x2_t [[TMP6]]
105225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x2x2_t test_vld2_f32(float32_t const *a) {
105235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_f32(a);
105245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
105255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
105264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x1x2_t @test_vld2_f64(double* %a) #0 {
105274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x2_t, align 8
105284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x2_t, align 8
105294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
105304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
105314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x double>*
105324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2.v1f64.p0v1f64(<1 x double>* [[TMP2]])
105334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double> }*
105344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x double>, <1 x double> } [[VLD2]], { <1 x double>, <1 x double> }* [[TMP3]]
105354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x2_t* [[RETVAL]] to i8*
105364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
105374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
105384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x2_t, %struct.float64x1x2_t* [[RETVAL]], align 8
105394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x1x2_t [[TMP6]]
105405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x1x2_t test_vld2_f64(float64_t const *a) {
105415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_f64(a);
105425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
105435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
105444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x2_t @test_vld2_p8(i8* %a) #0 {
105454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x2_t, align 8
105464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x2_t, align 8
105474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
105484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
105494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
105504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8> }*
105514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD2]], { <8 x i8>, <8 x i8> }* [[TMP2]]
105524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x2_t* [[RETVAL]] to i8*
105534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
105544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 16, i32 8, i1 false)
105554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], align 8
105564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x2_t [[TMP5]]
105575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x8x2_t test_vld2_p8(poly8_t const *a) {
105585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_p8(a);
105595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
105605610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
105614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x2_t @test_vld2_p16(i16* %a) #0 {
105624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x2_t, align 8
105634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x2_t, align 8
105644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
105654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
105664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
105674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD2:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
105684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
105694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD2]], { <4 x i16>, <4 x i16> }* [[TMP3]]
105704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x4x2_t* [[RETVAL]] to i8*
105714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
105724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
105734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], align 8
105744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x2_t [[TMP6]]
105755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x4x2_t test_vld2_p16(poly16_t const *a) {
105765610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld2_p16(a);
105775610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
105785610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
105794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x3_t @test_vld3q_u8(i8* %a) #0 {
105804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x3_t, align 16
105814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x3_t, align 16
105824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
105834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
105844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
105854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
105864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP2]]
105874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x3_t* [[RETVAL]] to i8*
105884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
105894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 48, i32 16, i1 false)
105904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[RETVAL]], align 16
105914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x3_t [[TMP5]]
105925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x16x3_t test_vld3q_u8(uint8_t const *a) {
105935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_u8(a);
105945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
105955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
105964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x3_t @test_vld3q_u16(i16* %a) #0 {
105974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x3_t, align 16
105984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x3_t, align 16
105994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
106004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
106014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
106024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
106034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
106044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
106054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x8x3_t* [[RETVAL]] to i8*
106064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
106074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
106084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[RETVAL]], align 16
106094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x3_t [[TMP6]]
106105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x8x3_t test_vld3q_u16(uint16_t const *a) {
106115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_u16(a);
106125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
106135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
106144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x3_t @test_vld3q_u32(i32* %a) #0 {
106154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x3_t, align 16
106164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x3_t, align 16
106174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
106184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
106194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i32>*
106204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0v4i32(<4 x i32>* [[TMP2]])
106214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
106224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD3]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
106234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x4x3_t* [[RETVAL]] to i8*
106244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
106254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
106264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[RETVAL]], align 16
106274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x3_t [[TMP6]]
106285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x4x3_t test_vld3q_u32(uint32_t const *a) {
106295610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_u32(a);
106305610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
106315610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
106324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x2x3_t @test_vld3q_u64(i64* %a) #0 {
106334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x3_t, align 16
106344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x3_t, align 16
106354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
106364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
106374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i64>*
106384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3.v2i64.p0v2i64(<2 x i64>* [[TMP2]])
106394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
106404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
106414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x3_t* [[RETVAL]] to i8*
106424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
106434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
106444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[RETVAL]], align 16
106454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x2x3_t [[TMP6]]
106465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x2x3_t test_vld3q_u64(uint64_t const *a) {
106475610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_u64(a);
106485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
106495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
106504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x3_t @test_vld3q_s8(i8* %a) #0 {
106514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x3_t, align 16
106524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x3_t, align 16
106534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
106544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
106554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
106564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
106574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP2]]
106584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x3_t* [[RETVAL]] to i8*
106594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
106604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 48, i32 16, i1 false)
106614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x16x3_t, %struct.int8x16x3_t* [[RETVAL]], align 16
106624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x3_t [[TMP5]]
106635610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x16x3_t test_vld3q_s8(int8_t const *a) {
106645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_s8(a);
106655610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
106665610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
106674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x3_t @test_vld3q_s16(i16* %a) #0 {
106684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x3_t, align 16
106694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x3_t, align 16
106704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
106714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
106724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
106734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
106744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
106754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
106764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x8x3_t* [[RETVAL]] to i8*
106774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
106784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
106794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x8x3_t, %struct.int16x8x3_t* [[RETVAL]], align 16
106804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x3_t [[TMP6]]
106815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x8x3_t test_vld3q_s16(int16_t const *a) {
106825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_s16(a);
106835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
106845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
106854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x3_t @test_vld3q_s32(i32* %a) #0 {
106864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x3_t, align 16
106874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x3_t, align 16
106884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
106894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
106904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i32>*
106914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0v4i32(<4 x i32>* [[TMP2]])
106924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
106934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD3]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
106944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x4x3_t* [[RETVAL]] to i8*
106954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
106964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
106974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x4x3_t, %struct.int32x4x3_t* [[RETVAL]], align 16
106984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x3_t [[TMP6]]
106995610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x4x3_t test_vld3q_s32(int32_t const *a) {
107005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_s32(a);
107015610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
107025610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
107034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x2x3_t @test_vld3q_s64(i64* %a) #0 {
107044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x3_t, align 16
107054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x3_t, align 16
107064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
107074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
107084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i64>*
107094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3.v2i64.p0v2i64(<2 x i64>* [[TMP2]])
107104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
107114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
107124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x3_t* [[RETVAL]] to i8*
107134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
107144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
107154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x3_t, %struct.int64x2x3_t* [[RETVAL]], align 16
107164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x2x3_t [[TMP6]]
107175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x2x3_t test_vld3q_s64(int64_t const *a) {
107185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_s64(a);
107195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
107205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
107214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x8x3_t @test_vld3q_f16(half* %a) #0 {
107224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x3_t, align 16
107234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x3_t, align 16
107244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
107254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
107264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
107274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
107284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
107294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
107304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x8x3_t* [[RETVAL]] to i8*
107314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
107324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
107334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x8x3_t, %struct.float16x8x3_t* [[RETVAL]], align 16
107344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x8x3_t [[TMP6]]
107355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x8x3_t test_vld3q_f16(float16_t const *a) {
107365610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_f16(a);
107375610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
107385610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
107394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x3_t @test_vld3q_f32(float* %a) #0 {
107404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x3_t, align 16
107414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x3_t, align 16
107424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
107434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
107444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x float>*
107454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3.v4f32.p0v4f32(<4 x float>* [[TMP2]])
107464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x float>, <4 x float>, <4 x float> }*
107474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x float>, <4 x float>, <4 x float> } [[VLD3]], { <4 x float>, <4 x float>, <4 x float> }* [[TMP3]]
107484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x4x3_t* [[RETVAL]] to i8*
107494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
107504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
107514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x4x3_t, %struct.float32x4x3_t* [[RETVAL]], align 16
107524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x3_t [[TMP6]]
107535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x4x3_t test_vld3q_f32(float32_t const *a) {
107545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_f32(a);
107555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
107565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
107574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x2x3_t @test_vld3q_f64(double* %a) #0 {
107584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x3_t, align 16
107594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x3_t, align 16
107604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
107614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
107624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x double>*
107634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3.v2f64.p0v2f64(<2 x double>* [[TMP2]])
107644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double> }*
107654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x double>, <2 x double>, <2 x double> } [[VLD3]], { <2 x double>, <2 x double>, <2 x double> }* [[TMP3]]
107664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x3_t* [[RETVAL]] to i8*
107674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
107684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
107694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x3_t, %struct.float64x2x3_t* [[RETVAL]], align 16
107704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x2x3_t [[TMP6]]
107715610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x2x3_t test_vld3q_f64(float64_t const *a) {
107725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_f64(a);
107735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
107745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
107754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x3_t @test_vld3q_p8(i8* %a) #0 {
107764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x3_t, align 16
107774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x3_t, align 16
107784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
107794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
107804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
107814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
107824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP2]]
107834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x3_t* [[RETVAL]] to i8*
107844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
107854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 48, i32 16, i1 false)
107864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[RETVAL]], align 16
107874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x3_t [[TMP5]]
107885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x16x3_t test_vld3q_p8(poly8_t const *a) {
107895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_p8(a);
107905610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
107915610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
107924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x3_t @test_vld3q_p16(i16* %a) #0 {
107934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x3_t, align 16
107944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x3_t, align 16
107954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
107964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
107974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
107984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
107994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
108004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
108014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x8x3_t* [[RETVAL]] to i8*
108024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
108034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
108044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[RETVAL]], align 16
108054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x3_t [[TMP6]]
108065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x8x3_t test_vld3q_p16(poly16_t const *a) {
108075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3q_p16(a);
108085610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
108095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
108104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x3_t @test_vld3_u8(i8* %a) #0 {
108114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x3_t, align 8
108124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x3_t, align 8
108134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
108144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
108154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
108164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
108174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP2]]
108184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x3_t* [[RETVAL]] to i8*
108194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
108204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 24, i32 8, i1 false)
108214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[RETVAL]], align 8
108224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x3_t [[TMP5]]
108235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x8x3_t test_vld3_u8(uint8_t const *a) {
108245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_u8(a);
108255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
108265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
108274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x3_t @test_vld3_u16(i16* %a) #0 {
108284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x3_t, align 8
108294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x3_t, align 8
108304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
108314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
108324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
108334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
108344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
108354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
108364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x4x3_t* [[RETVAL]] to i8*
108374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
108384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
108394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[RETVAL]], align 8
108404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x3_t [[TMP6]]
108415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x4x3_t test_vld3_u16(uint16_t const *a) {
108425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_u16(a);
108435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
108445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
108454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x3_t @test_vld3_u32(i32* %a) #0 {
108464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x3_t, align 8
108474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x3_t, align 8
108484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
108494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
108504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i32>*
108514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3.v2i32.p0v2i32(<2 x i32>* [[TMP2]])
108524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
108534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD3]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
108544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x2x3_t* [[RETVAL]] to i8*
108554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
108564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
108574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[RETVAL]], align 8
108584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x3_t [[TMP6]]
108595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x2x3_t test_vld3_u32(uint32_t const *a) {
108605610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_u32(a);
108615610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
108625610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
108634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x1x3_t @test_vld3_u64(i64* %a) #0 {
108644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x3_t, align 8
108654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x3_t, align 8
108664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
108674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
108684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x i64>*
108694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3.v1i64.p0v1i64(<1 x i64>* [[TMP2]])
108704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
108714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
108724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x1x3_t* [[RETVAL]] to i8*
108734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
108744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
108754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[RETVAL]], align 8
108764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x1x3_t [[TMP6]]
108775610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x1x3_t test_vld3_u64(uint64_t const *a) {
108785610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_u64(a);
108795610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
108805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
108814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x3_t @test_vld3_s8(i8* %a) #0 {
108824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x3_t, align 8
108834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x3_t, align 8
108844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
108854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
108864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
108874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
108884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP2]]
108894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x3_t* [[RETVAL]] to i8*
108904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
108914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 24, i32 8, i1 false)
108924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x8x3_t, %struct.int8x8x3_t* [[RETVAL]], align 8
108934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x3_t [[TMP5]]
108945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x8x3_t test_vld3_s8(int8_t const *a) {
108955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_s8(a);
108965610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
108975610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
108984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x3_t @test_vld3_s16(i16* %a) #0 {
108994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x3_t, align 8
109004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x3_t, align 8
109014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
109024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
109034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
109044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
109054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
109064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
109074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x4x3_t* [[RETVAL]] to i8*
109084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
109094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
109104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x4x3_t, %struct.int16x4x3_t* [[RETVAL]], align 8
109114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x3_t [[TMP6]]
109125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x4x3_t test_vld3_s16(int16_t const *a) {
109135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_s16(a);
109145610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
109155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
109164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x3_t @test_vld3_s32(i32* %a) #0 {
109174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x3_t, align 8
109184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x3_t, align 8
109194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
109204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
109214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i32>*
109224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3.v2i32.p0v2i32(<2 x i32>* [[TMP2]])
109234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
109244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD3]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
109254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x2x3_t* [[RETVAL]] to i8*
109264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
109274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
109284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x2x3_t, %struct.int32x2x3_t* [[RETVAL]], align 8
109294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x3_t [[TMP6]]
109305610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x2x3_t test_vld3_s32(int32_t const *a) {
109315610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_s32(a);
109325610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
109335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
109344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x1x3_t @test_vld3_s64(i64* %a) #0 {
109354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x3_t, align 8
109364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x3_t, align 8
109374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
109384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
109394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x i64>*
109404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3.v1i64.p0v1i64(<1 x i64>* [[TMP2]])
109414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
109424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
109434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x1x3_t* [[RETVAL]] to i8*
109444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
109454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
109464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x1x3_t, %struct.int64x1x3_t* [[RETVAL]], align 8
109474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x1x3_t [[TMP6]]
109485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x1x3_t test_vld3_s64(int64_t const *a) {
109495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_s64(a);
109505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
109515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
109524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x4x3_t @test_vld3_f16(half* %a) #0 {
109534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x3_t, align 8
109544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x3_t, align 8
109554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
109564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
109574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
109584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
109594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
109604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
109614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x4x3_t* [[RETVAL]] to i8*
109624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
109634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
109644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x4x3_t, %struct.float16x4x3_t* [[RETVAL]], align 8
109654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x4x3_t [[TMP6]]
109665610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x4x3_t test_vld3_f16(float16_t const *a) {
109675610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_f16(a);
109685610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
109695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
109704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x3_t @test_vld3_f32(float* %a) #0 {
109714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x3_t, align 8
109724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x3_t, align 8
109734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
109744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
109754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x float>*
109764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3.v2f32.p0v2f32(<2 x float>* [[TMP2]])
109774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x float>, <2 x float>, <2 x float> }*
109784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x float>, <2 x float>, <2 x float> } [[VLD3]], { <2 x float>, <2 x float>, <2 x float> }* [[TMP3]]
109794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x2x3_t* [[RETVAL]] to i8*
109804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
109814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
109824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x2x3_t, %struct.float32x2x3_t* [[RETVAL]], align 8
109834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x3_t [[TMP6]]
109845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x2x3_t test_vld3_f32(float32_t const *a) {
109855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_f32(a);
109865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
109875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
109884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x1x3_t @test_vld3_f64(double* %a) #0 {
109894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x3_t, align 8
109904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x3_t, align 8
109914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
109924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
109934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x double>*
109944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3.v1f64.p0v1f64(<1 x double>* [[TMP2]])
109954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double> }*
109964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x double>, <1 x double>, <1 x double> } [[VLD3]], { <1 x double>, <1 x double>, <1 x double> }* [[TMP3]]
109974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x3_t* [[RETVAL]] to i8*
109984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
109994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
110004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x3_t, %struct.float64x1x3_t* [[RETVAL]], align 8
110014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x1x3_t [[TMP6]]
110025610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x1x3_t test_vld3_f64(float64_t const *a) {
110035610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_f64(a);
110045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
110055610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
110064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x3_t @test_vld3_p8(i8* %a) #0 {
110074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x3_t, align 8
110084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x3_t, align 8
110094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
110104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
110114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
110124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
110134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP2]]
110144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x3_t* [[RETVAL]] to i8*
110154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
110164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 24, i32 8, i1 false)
110174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[RETVAL]], align 8
110184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x3_t [[TMP5]]
110195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x8x3_t test_vld3_p8(poly8_t const *a) {
110205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_p8(a);
110215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
110225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
110234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x3_t @test_vld3_p16(i16* %a) #0 {
110244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x3_t, align 8
110254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x3_t, align 8
110264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
110274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
110284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
110294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD3:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
110304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
110314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
110324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x4x3_t* [[RETVAL]] to i8*
110334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
110344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
110354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[RETVAL]], align 8
110364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x3_t [[TMP6]]
110375610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x4x3_t test_vld3_p16(poly16_t const *a) {
110385610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld3_p16(a);
110395610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
110405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
110414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x4_t @test_vld4q_u8(i8* %a) #0 {
110424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x4_t, align 16
110434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x4_t, align 16
110444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
110454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
110464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
110474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
110484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP2]]
110494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x4_t* [[RETVAL]] to i8*
110504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
110514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 64, i32 16, i1 false)
110524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[RETVAL]], align 16
110534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x4_t [[TMP5]]
110545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x16x4_t test_vld4q_u8(uint8_t const *a) {
110555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_u8(a);
110565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
110575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
110584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x4_t @test_vld4q_u16(i16* %a) #0 {
110594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x4_t, align 16
110604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x4_t, align 16
110614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
110624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
110634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
110644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
110654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
110664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
110674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x8x4_t* [[RETVAL]] to i8*
110684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
110694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
110704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[RETVAL]], align 16
110714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x4_t [[TMP6]]
110725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x8x4_t test_vld4q_u16(uint16_t const *a) {
110735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_u16(a);
110745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
110755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
110764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x4_t @test_vld4q_u32(i32* %a) #0 {
110774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x4_t, align 16
110784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x4_t, align 16
110794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
110804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
110814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i32>*
110824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4.v4i32.p0v4i32(<4 x i32>* [[TMP2]])
110834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
110844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD4]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
110854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x4x4_t* [[RETVAL]] to i8*
110864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
110874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
110884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[RETVAL]], align 16
110894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x4_t [[TMP6]]
110905610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x4x4_t test_vld4q_u32(uint32_t const *a) {
110915610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_u32(a);
110925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
110935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
110944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x2x4_t @test_vld4q_u64(i64* %a) #0 {
110954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x4_t, align 16
110964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x4_t, align 16
110974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
110984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
110994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i64>*
111004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4.v2i64.p0v2i64(<2 x i64>* [[TMP2]])
111014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
111024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
111034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x4_t* [[RETVAL]] to i8*
111044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
111054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
111064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[RETVAL]], align 16
111074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x2x4_t [[TMP6]]
111085610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x2x4_t test_vld4q_u64(uint64_t const *a) {
111095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_u64(a);
111105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
111115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
111124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x4_t @test_vld4q_s8(i8* %a) #0 {
111134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x4_t, align 16
111144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x4_t, align 16
111154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
111164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
111174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
111184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
111194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP2]]
111204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x4_t* [[RETVAL]] to i8*
111214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
111224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 64, i32 16, i1 false)
111234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x16x4_t, %struct.int8x16x4_t* [[RETVAL]], align 16
111244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x4_t [[TMP5]]
111255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x16x4_t test_vld4q_s8(int8_t const *a) {
111265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_s8(a);
111275610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
111285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
111294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x4_t @test_vld4q_s16(i16* %a) #0 {
111304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x4_t, align 16
111314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x4_t, align 16
111324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
111334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
111344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
111354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
111364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
111374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
111384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x8x4_t* [[RETVAL]] to i8*
111394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
111404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
111414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x8x4_t, %struct.int16x8x4_t* [[RETVAL]], align 16
111424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x4_t [[TMP6]]
111435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x8x4_t test_vld4q_s16(int16_t const *a) {
111445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_s16(a);
111455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
111465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
111474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x4_t @test_vld4q_s32(i32* %a) #0 {
111484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x4_t, align 16
111494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x4_t, align 16
111504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
111514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
111524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i32>*
111534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4.v4i32.p0v4i32(<4 x i32>* [[TMP2]])
111544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
111554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD4]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
111564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x4x4_t* [[RETVAL]] to i8*
111574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
111584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
111594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x4x4_t, %struct.int32x4x4_t* [[RETVAL]], align 16
111604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x4_t [[TMP6]]
111615610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x4x4_t test_vld4q_s32(int32_t const *a) {
111625610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_s32(a);
111635610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
111645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
111654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x2x4_t @test_vld4q_s64(i64* %a) #0 {
111664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x4_t, align 16
111674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x4_t, align 16
111684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
111694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
111704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i64>*
111714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4.v2i64.p0v2i64(<2 x i64>* [[TMP2]])
111724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
111734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
111744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x4_t* [[RETVAL]] to i8*
111754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
111764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
111774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x4_t, %struct.int64x2x4_t* [[RETVAL]], align 16
111784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x2x4_t [[TMP6]]
111795610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x2x4_t test_vld4q_s64(int64_t const *a) {
111805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_s64(a);
111815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
111825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
111834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x8x4_t @test_vld4q_f16(half* %a) #0 {
111844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x4_t, align 16
111854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x4_t, align 16
111864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
111874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
111884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
111894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
111904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
111914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
111924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x8x4_t* [[RETVAL]] to i8*
111934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
111944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
111954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x8x4_t, %struct.float16x8x4_t* [[RETVAL]], align 16
111964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x8x4_t [[TMP6]]
111975610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x8x4_t test_vld4q_f16(float16_t const *a) {
111985610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_f16(a);
111995610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
112005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
112014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x4_t @test_vld4q_f32(float* %a) #0 {
112024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x4_t, align 16
112034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x4_t, align 16
112044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
112054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
112064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x float>*
112074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4.v4f32.p0v4f32(<4 x float>* [[TMP2]])
112084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x float>, <4 x float>, <4 x float>, <4 x float> }*
112094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x float>, <4 x float>, <4 x float>, <4 x float> } [[VLD4]], { <4 x float>, <4 x float>, <4 x float>, <4 x float> }* [[TMP3]]
112104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x4x4_t* [[RETVAL]] to i8*
112114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
112124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
112134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x4x4_t, %struct.float32x4x4_t* [[RETVAL]], align 16
112144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x4_t [[TMP6]]
112155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x4x4_t test_vld4q_f32(float32_t const *a) {
112165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_f32(a);
112175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
112185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
112194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x2x4_t @test_vld4q_f64(double* %a) #0 {
112204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x4_t, align 16
112214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x4_t, align 16
112224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
112234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
112244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x double>*
112254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4.v2f64.p0v2f64(<2 x double>* [[TMP2]])
112264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double>, <2 x double> }*
112274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x double>, <2 x double>, <2 x double>, <2 x double> } [[VLD4]], { <2 x double>, <2 x double>, <2 x double>, <2 x double> }* [[TMP3]]
112284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x4_t* [[RETVAL]] to i8*
112294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
112304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
112314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x4_t, %struct.float64x2x4_t* [[RETVAL]], align 16
112324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x2x4_t [[TMP6]]
112335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x2x4_t test_vld4q_f64(float64_t const *a) {
112345610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_f64(a);
112355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
112365610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
112374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x4_t @test_vld4q_p8(i8* %a) #0 {
112384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x4_t, align 16
112394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x4_t, align 16
112404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
112414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <16 x i8>*
112424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4.v16i8.p0v16i8(<16 x i8>* [[TMP1]])
112434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
112444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP2]]
112454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x4_t* [[RETVAL]] to i8*
112464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
112474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 64, i32 16, i1 false)
112484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[RETVAL]], align 16
112494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x4_t [[TMP5]]
112505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x16x4_t test_vld4q_p8(poly8_t const *a) {
112515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_p8(a);
112525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
112535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
112544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x4_t @test_vld4q_p16(i16* %a) #0 {
112554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x4_t, align 16
112564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x4_t, align 16
112574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
112584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
112594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <8 x i16>*
112604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4.v8i16.p0v8i16(<8 x i16>* [[TMP2]])
112614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
112624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
112634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x8x4_t* [[RETVAL]] to i8*
112644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
112654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
112664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[RETVAL]], align 16
112674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x4_t [[TMP6]]
112685610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x8x4_t test_vld4q_p16(poly16_t const *a) {
112695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4q_p16(a);
112705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
112715610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
112724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x4_t @test_vld4_u8(i8* %a) #0 {
112734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x4_t, align 8
112744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x4_t, align 8
112754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
112764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
112774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
112784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
112794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP2]]
112804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x4_t* [[RETVAL]] to i8*
112814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
112824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 8, i1 false)
112834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[RETVAL]], align 8
112844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x4_t [[TMP5]]
112855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint8x8x4_t test_vld4_u8(uint8_t const *a) {
112865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_u8(a);
112875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
112885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
112894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x4_t @test_vld4_u16(i16* %a) #0 {
112904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x4_t, align 8
112914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x4_t, align 8
112924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
112934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
112944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
112954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
112964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
112974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
112984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x4x4_t* [[RETVAL]] to i8*
112994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
113004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
113014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[RETVAL]], align 8
113024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x4_t [[TMP6]]
113035610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint16x4x4_t test_vld4_u16(uint16_t const *a) {
113045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_u16(a);
113055610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
113065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
113074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x4_t @test_vld4_u32(i32* %a) #0 {
113084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x4_t, align 8
113094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x4_t, align 8
113104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
113114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
113124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i32>*
113134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4.v2i32.p0v2i32(<2 x i32>* [[TMP2]])
113144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
113154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD4]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
113164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x2x4_t* [[RETVAL]] to i8*
113174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
113184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
113194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[RETVAL]], align 8
113204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x4_t [[TMP6]]
113215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint32x2x4_t test_vld4_u32(uint32_t const *a) {
113225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_u32(a);
113235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
113245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
113254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x1x4_t @test_vld4_u64(i64* %a) #0 {
113264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x4_t, align 8
113274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x4_t, align 8
113284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
113294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
113304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x i64>*
113314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4.v1i64.p0v1i64(<1 x i64>* [[TMP2]])
113324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
113334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
113344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x1x4_t* [[RETVAL]] to i8*
113354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
113364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
113374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[RETVAL]], align 8
113384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x1x4_t [[TMP6]]
113395610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuuint64x1x4_t test_vld4_u64(uint64_t const *a) {
113405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_u64(a);
113415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
113425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
113434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x4_t @test_vld4_s8(i8* %a) #0 {
113444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x4_t, align 8
113454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x4_t, align 8
113464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
113474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
113484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
113494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
113504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP2]]
113514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x4_t* [[RETVAL]] to i8*
113524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
113534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 8, i1 false)
113544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.int8x8x4_t, %struct.int8x8x4_t* [[RETVAL]], align 8
113554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x4_t [[TMP5]]
113565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint8x8x4_t test_vld4_s8(int8_t const *a) {
113575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_s8(a);
113585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
113595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
113604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x4_t @test_vld4_s16(i16* %a) #0 {
113614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x4_t, align 8
113624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x4_t, align 8
113634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
113644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
113654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
113664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
113674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
113684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
113694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x4x4_t* [[RETVAL]] to i8*
113704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
113714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
113724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x4x4_t, %struct.int16x4x4_t* [[RETVAL]], align 8
113734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x4_t [[TMP6]]
113745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint16x4x4_t test_vld4_s16(int16_t const *a) {
113755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_s16(a);
113765610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
113775610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
113784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x4_t @test_vld4_s32(i32* %a) #0 {
113794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x4_t, align 8
113804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x4_t, align 8
113814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
113824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
113834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x i32>*
113844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4.v2i32.p0v2i32(<2 x i32>* [[TMP2]])
113854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
113864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD4]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
113874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x2x4_t* [[RETVAL]] to i8*
113884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
113894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
113904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x2x4_t, %struct.int32x2x4_t* [[RETVAL]], align 8
113914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x4_t [[TMP6]]
113925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint32x2x4_t test_vld4_s32(int32_t const *a) {
113935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_s32(a);
113945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
113955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
113964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x1x4_t @test_vld4_s64(i64* %a) #0 {
113974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x4_t, align 8
113984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x4_t, align 8
113994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
114004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
114014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x i64>*
114024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4.v1i64.p0v1i64(<1 x i64>* [[TMP2]])
114034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
114044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
114054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x1x4_t* [[RETVAL]] to i8*
114064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
114074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
114084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x1x4_t, %struct.int64x1x4_t* [[RETVAL]], align 8
114094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x1x4_t [[TMP6]]
114105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuint64x1x4_t test_vld4_s64(int64_t const *a) {
114115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_s64(a);
114125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
114135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
114144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x4x4_t @test_vld4_f16(half* %a) #0 {
114154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x4_t, align 8
114164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x4_t, align 8
114174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
114184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
114194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
114204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
114214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
114224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
114234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x4x4_t* [[RETVAL]] to i8*
114244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
114254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
114264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x4x4_t, %struct.float16x4x4_t* [[RETVAL]], align 8
114274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x4x4_t [[TMP6]]
114285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat16x4x4_t test_vld4_f16(float16_t const *a) {
114295610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_f16(a);
114305610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
114315610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
114324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x4_t @test_vld4_f32(float* %a) #0 {
114334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x4_t, align 8
114344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x4_t, align 8
114354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
114364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
114374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <2 x float>*
114384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4.v2f32.p0v2f32(<2 x float>* [[TMP2]])
114394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x float>, <2 x float>, <2 x float>, <2 x float> }*
114404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x float>, <2 x float>, <2 x float>, <2 x float> } [[VLD4]], { <2 x float>, <2 x float>, <2 x float>, <2 x float> }* [[TMP3]]
114414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x2x4_t* [[RETVAL]] to i8*
114424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
114434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
114444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x2x4_t, %struct.float32x2x4_t* [[RETVAL]], align 8
114454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x4_t [[TMP6]]
114465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat32x2x4_t test_vld4_f32(float32_t const *a) {
114475610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_f32(a);
114485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
114495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
114504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x1x4_t @test_vld4_f64(double* %a) #0 {
114514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x4_t, align 8
114524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x4_t, align 8
114534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
114544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
114554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <1 x double>*
114564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4.v1f64.p0v1f64(<1 x double>* [[TMP2]])
114574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double>, <1 x double> }*
114584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x double>, <1 x double>, <1 x double>, <1 x double> } [[VLD4]], { <1 x double>, <1 x double>, <1 x double>, <1 x double> }* [[TMP3]]
114594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x4_t* [[RETVAL]] to i8*
114604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
114614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
114624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x4_t, %struct.float64x1x4_t* [[RETVAL]], align 8
114634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x1x4_t [[TMP6]]
114645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liufloat64x1x4_t test_vld4_f64(float64_t const *a) {
114655610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_f64(a);
114665610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
114675610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
114684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x4_t @test_vld4_p8(i8* %a) #0 {
114694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x4_t, align 8
114704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x4_t, align 8
114714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
114724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* %a to <8 x i8>*
114734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0v8i8(<8 x i8>* [[TMP1]])
114744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
114754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP2]]
114764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x4_t* [[RETVAL]] to i8*
114774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
114784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP3]], i8* [[TMP4]], i64 32, i32 8, i1 false)
114794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[RETVAL]], align 8
114804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x4_t [[TMP5]]
114815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly8x8x4_t test_vld4_p8(poly8_t const *a) {
114825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_p8(a);
114835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
114845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
114854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x4_t @test_vld4_p16(i16* %a) #0 {
114864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x4_t, align 8
114874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x4_t, align 8
114884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
114894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
114904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to <4 x i16>*
114914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD4:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4.v4i16.p0v4i16(<4 x i16>* [[TMP2]])
114924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
114934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
114944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x4x4_t* [[RETVAL]] to i8*
114954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
114964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
114974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[RETVAL]], align 8
114984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x4_t [[TMP6]]
114995610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liupoly16x4x4_t test_vld4_p16(poly16_t const *a) {
115005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  return vld4_p16(a);
115015610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115025610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u8(i8* %a, <16 x i8> %b) #0 {
115044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <16 x i8>*
115054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> %b, <16 x i8>* [[TMP0]]
115064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_u8(uint8_t *a, uint8x16_t b) {
115085610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_u8(a, b);
115095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u16(i16* %a, <8 x i16> %b) #0 {
115124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
115134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
115144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
115154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
115164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[TMP3]], <8 x i16>* [[TMP2]]
115174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_u16(uint16_t *a, uint16x8_t b) {
115195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_u16(a, b);
115205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u32(i32* %a, <4 x i32> %b) #0 {
115234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
115244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
115254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
115264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
115274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[TMP3]], <4 x i32>* [[TMP2]]
115284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115295610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_u32(uint32_t *a, uint32x4_t b) {
115305610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_u32(a, b);
115315610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115325610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u64(i64* %a, <2 x i64> %b) #0 {
115344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
115354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
115364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <2 x i64>*
115374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
115384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i64> [[TMP3]], <2 x i64>* [[TMP2]]
115394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_u64(uint64_t *a, uint64x2_t b) {
115415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_u64(a, b);
115425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s8(i8* %a, <16 x i8> %b) #0 {
115454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <16 x i8>*
115464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> %b, <16 x i8>* [[TMP0]]
115474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_s8(int8_t *a, int8x16_t b) {
115495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_s8(a, b);
115505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s16(i16* %a, <8 x i16> %b) #0 {
115534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
115544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
115554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
115564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
115574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[TMP3]], <8 x i16>* [[TMP2]]
115584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_s16(int16_t *a, int16x8_t b) {
115605610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_s16(a, b);
115615610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115625610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s32(i32* %a, <4 x i32> %b) #0 {
115644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
115654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
115664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <4 x i32>*
115674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
115684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i32> [[TMP3]], <4 x i32>* [[TMP2]]
115694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_s32(int32_t *a, int32x4_t b) {
115715610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_s32(a, b);
115725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s64(i64* %a, <2 x i64> %b) #0 {
115754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
115764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
115774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <2 x i64>*
115784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
115794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i64> [[TMP3]], <2 x i64>* [[TMP2]]
115804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_s64(int64_t *a, int64x2_t b) {
115825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_s64(a, b);
115835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f16(half* %a, <8 x half> %b) #0 {
115864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
115874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x half> %b to <16 x i8>
115884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
115894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
115904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[TMP3]], <8 x i16>* [[TMP2]]
115914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
115925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_f16(float16_t *a, float16x8_t b) {
115935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_f16(a, b);
115945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
115955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
115964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f32(float* %a, <4 x float> %b) #0 {
115974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
115984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
115994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <4 x float>*
116004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
116014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x float> [[TMP3]], <4 x float>* [[TMP2]]
116024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116035610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_f32(float32_t *a, float32x4_t b) {
116045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_f32(a, b);
116055610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f64(double* %a, <2 x double> %b) #0 {
116084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
116094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
116104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <2 x double>*
116114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
116124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x double> [[TMP3]], <2 x double>* [[TMP2]]
116134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116145610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_f64(float64_t *a, float64x2_t b) {
116155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_f64(a, b);
116165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p8(i8* %a, <16 x i8> %b) #0 {
116194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <16 x i8>*
116204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <16 x i8> %b, <16 x i8>* [[TMP0]]
116214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_p8(poly8_t *a, poly8x16_t b) {
116235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_p8(a, b);
116245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p16(i16* %a, <8 x i16> %b) #0 {
116274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
116284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
116294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <8 x i16>*
116304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
116314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i16> [[TMP3]], <8 x i16>* [[TMP2]]
116324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1q_p16(poly16_t *a, poly16x8_t b) {
116345610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1q_p16(a, b);
116355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116365610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u8(i8* %a, <8 x i8> %b) #0 {
116384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <8 x i8>*
116394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> %b, <8 x i8>* [[TMP0]]
116404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_u8(uint8_t *a, uint8x8_t b) {
116425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_u8(a, b);
116435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u16(i16* %a, <4 x i16> %b) #0 {
116464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
116474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
116484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
116494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
116504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[TMP3]], <4 x i16>* [[TMP2]]
116514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_u16(uint16_t *a, uint16x4_t b) {
116535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_u16(a, b);
116545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u32(i32* %a, <2 x i32> %b) #0 {
116574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
116584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
116594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
116604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
116614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[TMP3]], <2 x i32>* [[TMP2]]
116624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116635610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_u32(uint32_t *a, uint32x2_t b) {
116645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_u32(a, b);
116655610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116665610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u64(i64* %a, <1 x i64> %b) #0 {
116684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
116694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
116704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <1 x i64>*
116714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
116724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <1 x i64> [[TMP3]], <1 x i64>* [[TMP2]]
116734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_u64(uint64_t *a, uint64x1_t b) {
116755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_u64(a, b);
116765610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116775610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s8(i8* %a, <8 x i8> %b) #0 {
116794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <8 x i8>*
116804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> %b, <8 x i8>* [[TMP0]]
116814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_s8(int8_t *a, int8x8_t b) {
116835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_s8(a, b);
116845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s16(i16* %a, <4 x i16> %b) #0 {
116874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
116884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
116894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
116904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
116914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[TMP3]], <4 x i16>* [[TMP2]]
116924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
116935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_s16(int16_t *a, int16x4_t b) {
116945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_s16(a, b);
116955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
116965610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
116974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s32(i32* %a, <2 x i32> %b) #0 {
116984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
116994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
117004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <2 x i32>*
117014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
117024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x i32> [[TMP3]], <2 x i32>* [[TMP2]]
117034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_s32(int32_t *a, int32x2_t b) {
117055610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_s32(a, b);
117065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s64(i64* %a, <1 x i64> %b) #0 {
117094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
117104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
117114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <1 x i64>*
117124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
117134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <1 x i64> [[TMP3]], <1 x i64>* [[TMP2]]
117144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_s64(int64_t *a, int64x1_t b) {
117165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_s64(a, b);
117175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f16(half* %a, <4 x half> %b) #0 {
117204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
117214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x half> %b to <8 x i8>
117224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
117234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
117244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[TMP3]], <4 x i16>* [[TMP2]]
117254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_f16(float16_t *a, float16x4_t b) {
117275610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_f16(a, b);
117285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117295610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f32(float* %a, <2 x float> %b) #0 {
117314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
117324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
117334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <2 x float>*
117344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
117354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <2 x float> [[TMP3]], <2 x float>* [[TMP2]]
117364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117375610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_f32(float32_t *a, float32x2_t b) {
117385610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_f32(a, b);
117395610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f64(double* %a, <1 x double> %b) #0 {
117424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
117434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
117444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <1 x double>*
117454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
117464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <1 x double> [[TMP3]], <1 x double>* [[TMP2]]
117474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_f64(float64_t *a, float64x1_t b) {
117495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_f64(a, b);
117505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p8(i8* %a, <8 x i8> %b) #0 {
117534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i8* %a to <8 x i8>*
117544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <8 x i8> %b, <8 x i8>* [[TMP0]]
117554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_p8(poly8_t *a, poly8x8_t b) {
117575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_p8(a, b);
117585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p16(i16* %a, <4 x i16> %b) #0 {
117614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
117624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
117634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP0]] to <4 x i16>*
117644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
117654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store <4 x i16> [[TMP3]], <4 x i16>* [[TMP2]]
117664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117675610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst1_p16(poly16_t *a, poly16x4_t b) {
117685610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst1_p16(a, b);
117695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_u8(i8* %a, [2 x <16 x i8>] %b.coerce) #0 {
117724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x2_t, align 16
117734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x2_t, align 16
117744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[B]], i32 0, i32 0
117754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
117764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__S1]] to i8*
117774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x2_t* [[B]] to i8*
117784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
117794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
117804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
117814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
117824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
117834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
117844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
117854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i8* %a)
117864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
117875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_u8(uint8_t *a, uint8x16x2_t b) {
117885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_u8(a, b);
117895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
117905610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
117914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_u16(i16* %a, [2 x <8 x i16>] %b.coerce) #0 {
117924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x2_t, align 16
117934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x2_t, align 16
117944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[B]], i32 0, i32 0
117954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
117964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__S1]] to i8*
117974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x2_t* [[B]] to i8*
117984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
117994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
118004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
118014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
118024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
118034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
118044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
118054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
118064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
118074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
118084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
118094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
118104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i8* [[TMP2]])
118114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
118125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_u16(uint16_t *a, uint16x8x2_t b) {
118135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_u16(a, b);
118145610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
118155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
118164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_u32(i32* %a, [2 x <4 x i32>] %b.coerce) #0 {
118174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x2_t, align 16
118184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x2_t, align 16
118194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[B]], i32 0, i32 0
118204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
118214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__S1]] to i8*
118224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x2_t* [[B]] to i8*
118234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
118244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
118254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
118264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
118274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
118284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
118294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
118304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
118314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
118324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
118334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
118344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
118354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v4i32.p0i8(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i8* [[TMP2]])
118364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
118375610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_u32(uint32_t *a, uint32x4x2_t b) {
118385610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_u32(a, b);
118395610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
118405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
118414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_u64(i64* %a, [2 x <2 x i64>] %b.coerce) #0 {
118424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x2_t, align 16
118434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x2_t, align 16
118444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[B]], i32 0, i32 0
118454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
118464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__S1]] to i8*
118474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x2_t* [[B]] to i8*
118484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
118494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
118504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
118514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
118524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
118534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
118544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
118554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
118564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
118574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
118584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
118594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
118604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i8* [[TMP2]])
118614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
118625610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_u64(uint64_t *a, uint64x2x2_t b) {
118635610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_u64(a, b);
118645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
118655610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
118664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_s8(i8* %a, [2 x <16 x i8>] %b.coerce) #0 {
118674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x16x2_t, align 16
118684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x2_t, align 16
118694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[B]], i32 0, i32 0
118704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
118714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__S1]] to i8*
118724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x2_t* [[B]] to i8*
118734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
118744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
118754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
118764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
118774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
118784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
118794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
118804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i8* %a)
118814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
118825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_s8(int8_t *a, int8x16x2_t b) {
118835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_s8(a, b);
118845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
118855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
118864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_s16(i16* %a, [2 x <8 x i16>] %b.coerce) #0 {
118874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x8x2_t, align 16
118884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x2_t, align 16
118894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[B]], i32 0, i32 0
118904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
118914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__S1]] to i8*
118924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x2_t* [[B]] to i8*
118934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
118944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
118954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
118964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
118974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
118984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
118994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
119004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
119014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
119024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
119034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
119044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
119054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i8* [[TMP2]])
119064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
119075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_s16(int16_t *a, int16x8x2_t b) {
119085610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_s16(a, b);
119095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
119105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
119114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_s32(i32* %a, [2 x <4 x i32>] %b.coerce) #0 {
119124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x4x2_t, align 16
119134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x2_t, align 16
119144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[B]], i32 0, i32 0
119154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
119164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__S1]] to i8*
119174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x2_t* [[B]] to i8*
119184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
119194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
119204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
119214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
119224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
119234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
119244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
119254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
119264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
119274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
119284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
119294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
119304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v4i32.p0i8(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i8* [[TMP2]])
119314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
119325610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_s32(int32_t *a, int32x4x2_t b) {
119335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_s32(a, b);
119345610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
119355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
119364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_s64(i64* %a, [2 x <2 x i64>] %b.coerce) #0 {
119374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x2x2_t, align 16
119384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x2_t, align 16
119394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[B]], i32 0, i32 0
119404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
119414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__S1]] to i8*
119424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x2_t* [[B]] to i8*
119434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
119444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
119454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
119464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
119474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
119484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
119494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
119504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
119514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
119524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
119534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
119544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
119554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i8* [[TMP2]])
119564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
119575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_s64(int64_t *a, int64x2x2_t b) {
119585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_s64(a, b);
119595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
119605610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
119614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_f16(half* %a, [2 x <8 x half>] %b.coerce) #0 {
119624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x8x2_t, align 16
119634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x2_t, align 16
119644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[B]], i32 0, i32 0
119654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x half>] [[B]].coerce, [2 x <8 x half>]* [[COERCE_DIVE]], align 16
119664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__S1]] to i8*
119674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x2_t* [[B]] to i8*
119684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
119694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
119704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
119714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL]], i64 0, i64 0
119724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
119734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
119744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
119754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL1]], i64 0, i64 1
119764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
119774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
119784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
119794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
119804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i8* [[TMP2]])
119814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
119825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_f16(float16_t *a, float16x8x2_t b) {
119835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_f16(a, b);
119845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
119855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
119864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_f32(float* %a, [2 x <4 x float>] %b.coerce) #0 {
119874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x4x2_t, align 16
119884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x2_t, align 16
119894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[B]], i32 0, i32 0
119904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x float>] [[B]].coerce, [2 x <4 x float>]* [[COERCE_DIVE]], align 16
119914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__S1]] to i8*
119924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x2_t* [[B]] to i8*
119934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
119944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
119954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
119964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL]], i64 0, i64 0
119974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
119984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
119994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
120004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL1]], i64 0, i64 1
120014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
120024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
120034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
120044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
120054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v4f32.p0i8(<4 x float> [[TMP7]], <4 x float> [[TMP8]], i8* [[TMP2]])
120064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
120075610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_f32(float32_t *a, float32x4x2_t b) {
120085610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_f32(a, b);
120095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
120105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
120114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_f64(double* %a, [2 x <2 x double>] %b.coerce) #0 {
120124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x2x2_t, align 16
120134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x2_t, align 16
120144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[B]], i32 0, i32 0
120154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x double>] [[B]].coerce, [2 x <2 x double>]* [[COERCE_DIVE]], align 16
120164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__S1]] to i8*
120174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x2_t* [[B]] to i8*
120184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
120194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
120204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
120214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL]], i64 0, i64 0
120224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
120234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
120244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
120254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL1]], i64 0, i64 1
120264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
120274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
120284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
120294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
120304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v2f64.p0i8(<2 x double> [[TMP7]], <2 x double> [[TMP8]], i8* [[TMP2]])
120314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
120325610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_f64(float64_t *a, float64x2x2_t b) {
120335610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_f64(a, b);
120345610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
120355610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
120364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_p8(i8* %a, [2 x <16 x i8>] %b.coerce) #0 {
120374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x2_t, align 16
120384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x2_t, align 16
120394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[B]], i32 0, i32 0
120404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
120414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__S1]] to i8*
120424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x2_t* [[B]] to i8*
120434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
120444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
120454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
120464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
120474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
120484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
120494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
120504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i8* %a)
120514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
120525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_p8(poly8_t *a, poly8x16x2_t b) {
120535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_p8(a, b);
120545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
120555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
120564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2q_p16(i16* %a, [2 x <8 x i16>] %b.coerce) #0 {
120574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x2_t, align 16
120584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x2_t, align 16
120594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[B]], i32 0, i32 0
120604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
120614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__S1]] to i8*
120624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x2_t* [[B]] to i8*
120634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
120644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
120654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
120664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
120674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
120684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
120694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
120704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
120714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
120724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
120734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
120744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
120754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i8* [[TMP2]])
120764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
120775610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2q_p16(poly16_t *a, poly16x8x2_t b) {
120785610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2q_p16(a, b);
120795610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
120805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
120814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_u8(i8* %a, [2 x <8 x i8>] %b.coerce) #0 {
120824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x2_t, align 8
120834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x2_t, align 8
120844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[B]], i32 0, i32 0
120854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
120864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__S1]] to i8*
120874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x2_t* [[B]] to i8*
120884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
120894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
120904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
120914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
120924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
120934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
120944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
120954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i8* %a)
120964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
120975610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_u8(uint8_t *a, uint8x8x2_t b) {
120985610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_u8(a, b);
120995610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
121005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
121014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_u16(i16* %a, [2 x <4 x i16>] %b.coerce) #0 {
121024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x2_t, align 8
121034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x2_t, align 8
121044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[B]], i32 0, i32 0
121054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
121064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__S1]] to i8*
121074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x2_t* [[B]] to i8*
121084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
121094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
121104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
121114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
121124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
121134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
121144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
121154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
121164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
121174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
121184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
121194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
121204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i8* [[TMP2]])
121214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
121225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_u16(uint16_t *a, uint16x4x2_t b) {
121235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_u16(a, b);
121245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
121255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
121264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_u32(i32* %a, [2 x <2 x i32>] %b.coerce) #0 {
121274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x2_t, align 8
121284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x2_t, align 8
121294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[B]], i32 0, i32 0
121304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
121314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__S1]] to i8*
121324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x2_t* [[B]] to i8*
121334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
121344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
121354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
121364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
121374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
121384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
121394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
121404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
121414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
121424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
121434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
121444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
121454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v2i32.p0i8(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i8* [[TMP2]])
121464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
121475610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_u32(uint32_t *a, uint32x2x2_t b) {
121485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_u32(a, b);
121495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
121505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
121514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_u64(i64* %a, [2 x <1 x i64>] %b.coerce) #0 {
121524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x2_t, align 8
121534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x2_t, align 8
121544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[B]], i32 0, i32 0
121554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
121564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__S1]] to i8*
121574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x2_t* [[B]] to i8*
121584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
121594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
121604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
121614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
121624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
121634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
121644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
121654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
121664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
121674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
121684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
121694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
121704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i8* [[TMP2]])
121714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
121725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_u64(uint64_t *a, uint64x1x2_t b) {
121735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_u64(a, b);
121745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
121755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
121764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_s8(i8* %a, [2 x <8 x i8>] %b.coerce) #0 {
121774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x8x2_t, align 8
121784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x2_t, align 8
121794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[B]], i32 0, i32 0
121804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
121814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__S1]] to i8*
121824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x2_t* [[B]] to i8*
121834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
121844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
121854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
121864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
121874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
121884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
121894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
121904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i8* %a)
121914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
121925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_s8(int8_t *a, int8x8x2_t b) {
121935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_s8(a, b);
121945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
121955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
121964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_s16(i16* %a, [2 x <4 x i16>] %b.coerce) #0 {
121974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x4x2_t, align 8
121984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x2_t, align 8
121994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[B]], i32 0, i32 0
122004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
122014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__S1]] to i8*
122024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x2_t* [[B]] to i8*
122034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
122044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
122054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
122064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
122074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
122084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
122094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
122104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
122114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
122124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
122134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
122144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
122154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i8* [[TMP2]])
122164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
122175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_s16(int16_t *a, int16x4x2_t b) {
122185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_s16(a, b);
122195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
122205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
122214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_s32(i32* %a, [2 x <2 x i32>] %b.coerce) #0 {
122224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x2x2_t, align 8
122234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x2_t, align 8
122244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[B]], i32 0, i32 0
122254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
122264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__S1]] to i8*
122274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x2_t* [[B]] to i8*
122284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
122294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
122304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
122314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
122324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
122334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
122344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
122354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
122364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
122374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
122384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
122394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
122404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v2i32.p0i8(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i8* [[TMP2]])
122414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
122425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_s32(int32_t *a, int32x2x2_t b) {
122435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_s32(a, b);
122445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
122455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
122464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_s64(i64* %a, [2 x <1 x i64>] %b.coerce) #0 {
122474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x1x2_t, align 8
122484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x2_t, align 8
122494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[B]], i32 0, i32 0
122504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
122514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__S1]] to i8*
122524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x2_t* [[B]] to i8*
122534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
122544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
122554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
122564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
122574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
122584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
122594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
122604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
122614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
122624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
122634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
122644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
122654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i8* [[TMP2]])
122664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
122675610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_s64(int64_t *a, int64x1x2_t b) {
122685610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_s64(a, b);
122695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
122705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
122714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_f16(half* %a, [2 x <4 x half>] %b.coerce) #0 {
122724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x4x2_t, align 8
122734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x2_t, align 8
122744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[B]], i32 0, i32 0
122754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x half>] [[B]].coerce, [2 x <4 x half>]* [[COERCE_DIVE]], align 8
122764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__S1]] to i8*
122774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x2_t* [[B]] to i8*
122784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
122794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
122804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
122814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL]], i64 0, i64 0
122824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
122834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
122844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
122854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL1]], i64 0, i64 1
122864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
122874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
122884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
122894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
122904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i8* [[TMP2]])
122914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
122925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_f16(float16_t *a, float16x4x2_t b) {
122935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_f16(a, b);
122945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
122955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
122964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_f32(float* %a, [2 x <2 x float>] %b.coerce) #0 {
122974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x2x2_t, align 8
122984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x2_t, align 8
122994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[B]], i32 0, i32 0
123004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x float>] [[B]].coerce, [2 x <2 x float>]* [[COERCE_DIVE]], align 8
123014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__S1]] to i8*
123024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x2_t* [[B]] to i8*
123034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
123044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
123054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
123064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL]], i64 0, i64 0
123074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
123084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
123094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
123104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL1]], i64 0, i64 1
123114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
123124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
123134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
123144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
123154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v2f32.p0i8(<2 x float> [[TMP7]], <2 x float> [[TMP8]], i8* [[TMP2]])
123164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
123175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_f32(float32_t *a, float32x2x2_t b) {
123185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_f32(a, b);
123195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
123205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
123214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_f64(double* %a, [2 x <1 x double>] %b.coerce) #0 {
123224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x1x2_t, align 8
123234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x2_t, align 8
123244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[B]], i32 0, i32 0
123254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <1 x double>] [[B]].coerce, [2 x <1 x double>]* [[COERCE_DIVE]], align 8
123264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__S1]] to i8*
123274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x2_t* [[B]] to i8*
123284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
123294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
123304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
123314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL]], i64 0, i64 0
123324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
123334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
123344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
123354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL1]], i64 0, i64 1
123364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
123374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
123384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
123394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
123404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v1f64.p0i8(<1 x double> [[TMP7]], <1 x double> [[TMP8]], i8* [[TMP2]])
123414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
123425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_f64(float64_t *a, float64x1x2_t b) {
123435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_f64(a, b);
123445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
123455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
123464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_p8(i8* %a, [2 x <8 x i8>] %b.coerce) #0 {
123474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x2_t, align 8
123484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x2_t, align 8
123494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[B]], i32 0, i32 0
123504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
123514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__S1]] to i8*
123524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x2_t* [[B]] to i8*
123534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
123544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
123554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
123564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
123574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
123584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
123594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
123604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i8* %a)
123614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
123625610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_p8(poly8_t *a, poly8x8x2_t b) {
123635610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_p8(a, b);
123645610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
123655610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
123664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst2_p16(i16* %a, [2 x <4 x i16>] %b.coerce) #0 {
123674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x2_t, align 8
123684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x2_t, align 8
123694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[B]], i32 0, i32 0
123704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
123714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__S1]] to i8*
123724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x2_t* [[B]] to i8*
123734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
123744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
123754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
123764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
123774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
123784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
123794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
123804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
123814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
123824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
123834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
123844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
123854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st2.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i8* [[TMP2]])
123864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
123875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst2_p16(poly16_t *a, poly16x4x2_t b) {
123885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst2_p16(a, b);
123895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
123905610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
123914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_u8(i8* %a, [3 x <16 x i8>] %b.coerce) #0 {
123924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x3_t, align 16
123934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x3_t, align 16
123944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[B]], i32 0, i32 0
123954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
123964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__S1]] to i8*
123974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x3_t* [[B]] to i8*
123984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
123994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
124004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
124014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
124024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
124034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
124044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
124054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
124064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
124074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
124084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i8* %a)
124094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
124105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_u8(uint8_t *a, uint8x16x3_t b) {
124115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_u8(a, b);
124125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
124135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
124144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_u16(i16* %a, [3 x <8 x i16>] %b.coerce) #0 {
124154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x3_t, align 16
124164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x3_t, align 16
124174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[B]], i32 0, i32 0
124184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
124194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__S1]] to i8*
124204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x3_t* [[B]] to i8*
124214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
124224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
124234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
124244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
124254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
124264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
124274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
124284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
124294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
124304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
124314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
124324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
124334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
124344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
124354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
124364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
124374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
124384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i8* [[TMP2]])
124394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
124405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_u16(uint16_t *a, uint16x8x3_t b) {
124415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_u16(a, b);
124425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
124435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
124444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_u32(i32* %a, [3 x <4 x i32>] %b.coerce) #0 {
124454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x3_t, align 16
124464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x3_t, align 16
124474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[B]], i32 0, i32 0
124484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
124494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__S1]] to i8*
124504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x3_t* [[B]] to i8*
124514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
124524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
124534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
124544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
124554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
124564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
124574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
124584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
124594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
124604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
124614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
124624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
124634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
124644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
124654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
124664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
124674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
124684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v4i32.p0i8(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i8* [[TMP2]])
124694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
124705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_u32(uint32_t *a, uint32x4x3_t b) {
124715610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_u32(a, b);
124725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
124735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
124744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_u64(i64* %a, [3 x <2 x i64>] %b.coerce) #0 {
124754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x3_t, align 16
124764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x3_t, align 16
124774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[B]], i32 0, i32 0
124784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
124794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__S1]] to i8*
124804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x3_t* [[B]] to i8*
124814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
124824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
124834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
124844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
124854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
124864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
124874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
124884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
124894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
124904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
124914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
124924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
124934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
124944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
124954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
124964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
124974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
124984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i8* [[TMP2]])
124994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
125005610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_u64(uint64_t *a, uint64x2x3_t b) {
125015610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_u64(a, b);
125025610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
125035610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
125044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_s8(i8* %a, [3 x <16 x i8>] %b.coerce) #0 {
125054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x16x3_t, align 16
125064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x3_t, align 16
125074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[B]], i32 0, i32 0
125084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
125094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__S1]] to i8*
125104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x3_t* [[B]] to i8*
125114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
125124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
125134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
125144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
125154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
125164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
125174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
125184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
125194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
125204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
125214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i8* %a)
125224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
125235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_s8(int8_t *a, int8x16x3_t b) {
125245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_s8(a, b);
125255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
125265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
125274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_s16(i16* %a, [3 x <8 x i16>] %b.coerce) #0 {
125284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x8x3_t, align 16
125294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x3_t, align 16
125304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[B]], i32 0, i32 0
125314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
125324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__S1]] to i8*
125334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x3_t* [[B]] to i8*
125344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
125354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
125364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
125374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
125384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
125394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
125404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
125414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
125424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
125434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
125444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
125454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
125464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
125474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
125484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
125494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
125504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
125514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i8* [[TMP2]])
125524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
125535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_s16(int16_t *a, int16x8x3_t b) {
125545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_s16(a, b);
125555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
125565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
125574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_s32(i32* %a, [3 x <4 x i32>] %b.coerce) #0 {
125584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x4x3_t, align 16
125594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x3_t, align 16
125604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[B]], i32 0, i32 0
125614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
125624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__S1]] to i8*
125634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x3_t* [[B]] to i8*
125644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
125654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
125664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
125674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
125684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
125694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
125704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
125714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
125724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
125734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
125744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
125754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
125764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
125774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
125784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
125794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
125804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
125814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v4i32.p0i8(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i8* [[TMP2]])
125824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
125835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_s32(int32_t *a, int32x4x3_t b) {
125845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_s32(a, b);
125855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
125865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
125874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_s64(i64* %a, [3 x <2 x i64>] %b.coerce) #0 {
125884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x2x3_t, align 16
125894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x3_t, align 16
125904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[B]], i32 0, i32 0
125914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
125924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__S1]] to i8*
125934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x3_t* [[B]] to i8*
125944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
125954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
125964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
125974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
125984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
125994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
126004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
126014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
126024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
126034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
126044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
126054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
126064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
126074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
126084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
126094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
126104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
126114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i8* [[TMP2]])
126124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
126135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_s64(int64_t *a, int64x2x3_t b) {
126145610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_s64(a, b);
126155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
126165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
126174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_f16(half* %a, [3 x <8 x half>] %b.coerce) #0 {
126184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x8x3_t, align 16
126194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x3_t, align 16
126204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[B]], i32 0, i32 0
126214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x half>] [[B]].coerce, [3 x <8 x half>]* [[COERCE_DIVE]], align 16
126224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__S1]] to i8*
126234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x3_t* [[B]] to i8*
126244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
126254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
126264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
126274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL]], i64 0, i64 0
126284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
126294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
126304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
126314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL1]], i64 0, i64 1
126324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
126334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
126344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
126354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL3]], i64 0, i64 2
126364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
126374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
126384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
126394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
126404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
126414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i8* [[TMP2]])
126424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
126435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_f16(float16_t *a, float16x8x3_t b) {
126445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_f16(a, b);
126455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
126465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
126474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_f32(float* %a, [3 x <4 x float>] %b.coerce) #0 {
126484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x4x3_t, align 16
126494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x3_t, align 16
126504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[B]], i32 0, i32 0
126514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x float>] [[B]].coerce, [3 x <4 x float>]* [[COERCE_DIVE]], align 16
126524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__S1]] to i8*
126534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x3_t* [[B]] to i8*
126544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
126554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
126564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
126574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL]], i64 0, i64 0
126584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
126594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
126604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
126614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL1]], i64 0, i64 1
126624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
126634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
126644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
126654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL3]], i64 0, i64 2
126664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
126674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
126684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
126694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
126704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
126714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v4f32.p0i8(<4 x float> [[TMP9]], <4 x float> [[TMP10]], <4 x float> [[TMP11]], i8* [[TMP2]])
126724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
126735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_f32(float32_t *a, float32x4x3_t b) {
126745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_f32(a, b);
126755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
126765610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
126774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_f64(double* %a, [3 x <2 x double>] %b.coerce) #0 {
126784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x2x3_t, align 16
126794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x3_t, align 16
126804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[B]], i32 0, i32 0
126814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x double>] [[B]].coerce, [3 x <2 x double>]* [[COERCE_DIVE]], align 16
126824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__S1]] to i8*
126834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x3_t* [[B]] to i8*
126844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
126854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
126864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
126874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL]], i64 0, i64 0
126884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
126894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
126904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
126914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL1]], i64 0, i64 1
126924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
126934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
126944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
126954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL3]], i64 0, i64 2
126964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
126974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
126984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
126994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
127004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
127014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v2f64.p0i8(<2 x double> [[TMP9]], <2 x double> [[TMP10]], <2 x double> [[TMP11]], i8* [[TMP2]])
127024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
127035610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_f64(float64_t *a, float64x2x3_t b) {
127045610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_f64(a, b);
127055610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
127065610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
127074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_p8(i8* %a, [3 x <16 x i8>] %b.coerce) #0 {
127084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x3_t, align 16
127094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x3_t, align 16
127104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[B]], i32 0, i32 0
127114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
127124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__S1]] to i8*
127134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x3_t* [[B]] to i8*
127144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
127154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
127164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
127174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
127184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
127194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
127204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
127214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
127224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
127234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
127244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i8* %a)
127254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
127265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_p8(poly8_t *a, poly8x16x3_t b) {
127275610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_p8(a, b);
127285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
127295610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
127304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3q_p16(i16* %a, [3 x <8 x i16>] %b.coerce) #0 {
127314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x3_t, align 16
127324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x3_t, align 16
127334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[B]], i32 0, i32 0
127344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
127354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__S1]] to i8*
127364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x3_t* [[B]] to i8*
127374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
127384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
127394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
127404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
127414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
127424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
127434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
127444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
127454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
127464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
127474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
127484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
127494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
127504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
127514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
127524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
127534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
127544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i8* [[TMP2]])
127554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
127565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3q_p16(poly16_t *a, poly16x8x3_t b) {
127575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3q_p16(a, b);
127585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
127595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
127604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_u8(i8* %a, [3 x <8 x i8>] %b.coerce) #0 {
127614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x3_t, align 8
127624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x3_t, align 8
127634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[B]], i32 0, i32 0
127644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
127654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__S1]] to i8*
127664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x3_t* [[B]] to i8*
127674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
127684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
127694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
127704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
127714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
127724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
127734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
127744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
127754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
127764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
127774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i8* %a)
127784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
127795610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_u8(uint8_t *a, uint8x8x3_t b) {
127805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_u8(a, b);
127815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
127825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
127834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_u16(i16* %a, [3 x <4 x i16>] %b.coerce) #0 {
127844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x3_t, align 8
127854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x3_t, align 8
127864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[B]], i32 0, i32 0
127874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
127884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__S1]] to i8*
127894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x3_t* [[B]] to i8*
127904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
127914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
127924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
127934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
127944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
127954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
127964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
127974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
127984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
127994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
128004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
128014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
128024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
128034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
128044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
128054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
128064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
128074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i8* [[TMP2]])
128084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
128095610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_u16(uint16_t *a, uint16x4x3_t b) {
128105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_u16(a, b);
128115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
128125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
128134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_u32(i32* %a, [3 x <2 x i32>] %b.coerce) #0 {
128144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x3_t, align 8
128154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x3_t, align 8
128164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[B]], i32 0, i32 0
128174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
128184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__S1]] to i8*
128194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x3_t* [[B]] to i8*
128204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
128214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
128224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
128234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
128244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
128254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
128264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
128274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
128284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
128294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
128304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
128314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
128324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
128334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
128344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
128354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
128364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
128374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v2i32.p0i8(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i8* [[TMP2]])
128384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
128395610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_u32(uint32_t *a, uint32x2x3_t b) {
128405610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_u32(a, b);
128415610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
128425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
128434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_u64(i64* %a, [3 x <1 x i64>] %b.coerce) #0 {
128444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x3_t, align 8
128454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x3_t, align 8
128464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[B]], i32 0, i32 0
128474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
128484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__S1]] to i8*
128494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x3_t* [[B]] to i8*
128504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
128514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
128524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
128534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
128544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
128554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
128564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
128574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
128584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
128594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
128604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
128614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
128624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
128634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
128644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
128654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
128664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
128674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i8* [[TMP2]])
128684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
128695610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_u64(uint64_t *a, uint64x1x3_t b) {
128705610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_u64(a, b);
128715610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
128725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
128734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_s8(i8* %a, [3 x <8 x i8>] %b.coerce) #0 {
128744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x8x3_t, align 8
128754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x3_t, align 8
128764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[B]], i32 0, i32 0
128774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
128784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__S1]] to i8*
128794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x3_t* [[B]] to i8*
128804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
128814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
128824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
128834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
128844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
128854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
128864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
128874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
128884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
128894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
128904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i8* %a)
128914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
128925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_s8(int8_t *a, int8x8x3_t b) {
128935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_s8(a, b);
128945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
128955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
128964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_s16(i16* %a, [3 x <4 x i16>] %b.coerce) #0 {
128974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x4x3_t, align 8
128984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x3_t, align 8
128994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[B]], i32 0, i32 0
129004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
129014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__S1]] to i8*
129024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x3_t* [[B]] to i8*
129034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
129044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
129054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
129064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
129074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
129084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
129094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
129104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
129114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
129124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
129134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
129144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
129154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
129164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
129174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
129184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
129194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
129204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i8* [[TMP2]])
129214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
129225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_s16(int16_t *a, int16x4x3_t b) {
129235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_s16(a, b);
129245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
129255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
129264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_s32(i32* %a, [3 x <2 x i32>] %b.coerce) #0 {
129274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x2x3_t, align 8
129284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x3_t, align 8
129294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[B]], i32 0, i32 0
129304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
129314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__S1]] to i8*
129324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x3_t* [[B]] to i8*
129334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
129344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
129354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
129364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
129374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
129384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
129394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
129404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
129414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
129424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
129434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
129444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
129454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
129464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
129474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
129484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
129494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
129504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v2i32.p0i8(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i8* [[TMP2]])
129514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
129525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_s32(int32_t *a, int32x2x3_t b) {
129535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_s32(a, b);
129545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
129555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
129564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_s64(i64* %a, [3 x <1 x i64>] %b.coerce) #0 {
129574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x1x3_t, align 8
129584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x3_t, align 8
129594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[B]], i32 0, i32 0
129604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
129614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__S1]] to i8*
129624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x3_t* [[B]] to i8*
129634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
129644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
129654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
129664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
129674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
129684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
129694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
129704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
129714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
129724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
129734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
129744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
129754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
129764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
129774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
129784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
129794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
129804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i8* [[TMP2]])
129814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
129825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_s64(int64_t *a, int64x1x3_t b) {
129835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_s64(a, b);
129845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
129855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
129864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_f16(half* %a, [3 x <4 x half>] %b.coerce) #0 {
129874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x4x3_t, align 8
129884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x3_t, align 8
129894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[B]], i32 0, i32 0
129904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x half>] [[B]].coerce, [3 x <4 x half>]* [[COERCE_DIVE]], align 8
129914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__S1]] to i8*
129924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x3_t* [[B]] to i8*
129934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
129944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
129954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
129964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL]], i64 0, i64 0
129974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
129984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
129994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
130004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL1]], i64 0, i64 1
130014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
130024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
130034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
130044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL3]], i64 0, i64 2
130054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
130064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
130074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
130084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
130094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
130104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i8* [[TMP2]])
130114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
130125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_f16(float16_t *a, float16x4x3_t b) {
130135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_f16(a, b);
130145610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
130155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
130164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_f32(float* %a, [3 x <2 x float>] %b.coerce) #0 {
130174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x2x3_t, align 8
130184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x3_t, align 8
130194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[B]], i32 0, i32 0
130204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x float>] [[B]].coerce, [3 x <2 x float>]* [[COERCE_DIVE]], align 8
130214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__S1]] to i8*
130224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x3_t* [[B]] to i8*
130234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
130244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
130254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
130264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL]], i64 0, i64 0
130274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
130284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
130294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
130304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL1]], i64 0, i64 1
130314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
130324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
130334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
130344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL3]], i64 0, i64 2
130354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
130364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
130374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
130384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
130394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
130404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v2f32.p0i8(<2 x float> [[TMP9]], <2 x float> [[TMP10]], <2 x float> [[TMP11]], i8* [[TMP2]])
130414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
130425610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_f32(float32_t *a, float32x2x3_t b) {
130435610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_f32(a, b);
130445610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
130455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
130464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_f64(double* %a, [3 x <1 x double>] %b.coerce) #0 {
130474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x1x3_t, align 8
130484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x3_t, align 8
130494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[B]], i32 0, i32 0
130504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <1 x double>] [[B]].coerce, [3 x <1 x double>]* [[COERCE_DIVE]], align 8
130514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__S1]] to i8*
130524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x3_t* [[B]] to i8*
130534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
130544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
130554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
130564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL]], i64 0, i64 0
130574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
130584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
130594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
130604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL1]], i64 0, i64 1
130614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
130624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
130634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
130644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL3]], i64 0, i64 2
130654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
130664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
130674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
130684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
130694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
130704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v1f64.p0i8(<1 x double> [[TMP9]], <1 x double> [[TMP10]], <1 x double> [[TMP11]], i8* [[TMP2]])
130714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
130725610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_f64(float64_t *a, float64x1x3_t b) {
130735610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_f64(a, b);
130745610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
130755610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
130764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_p8(i8* %a, [3 x <8 x i8>] %b.coerce) #0 {
130774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x3_t, align 8
130784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x3_t, align 8
130794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[B]], i32 0, i32 0
130804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
130814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__S1]] to i8*
130824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x3_t* [[B]] to i8*
130834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
130844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
130854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
130864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
130874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
130884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
130894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
130904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
130914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
130924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
130934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i8* %a)
130944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
130955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_p8(poly8_t *a, poly8x8x3_t b) {
130965610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_p8(a, b);
130975610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
130985610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
130994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst3_p16(i16* %a, [3 x <4 x i16>] %b.coerce) #0 {
131004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x3_t, align 8
131014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x3_t, align 8
131024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[B]], i32 0, i32 0
131034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
131044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__S1]] to i8*
131054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x3_t* [[B]] to i8*
131064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
131074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
131084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
131094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
131104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
131114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
131124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
131134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
131144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
131154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
131164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
131174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
131184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
131194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
131204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
131214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
131224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
131234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st3.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i8* [[TMP2]])
131244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
131255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst3_p16(poly16_t *a, poly16x4x3_t b) {
131265610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst3_p16(a, b);
131275610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
131285610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
131294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_u8(i8* %a, [4 x <16 x i8>] %b.coerce) #0 {
131304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x4_t, align 16
131314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x4_t, align 16
131324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[B]], i32 0, i32 0
131334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
131344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__S1]] to i8*
131354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x4_t* [[B]] to i8*
131364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
131374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
131384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
131394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
131404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
131414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
131424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
131434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
131444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
131454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
131464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
131474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
131484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
131494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i8* %a)
131504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
131515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_u8(uint8_t *a, uint8x16x4_t b) {
131525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_u8(a, b);
131535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
131545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
131554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_u16(i16* %a, [4 x <8 x i16>] %b.coerce) #0 {
131564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x4_t, align 16
131574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x4_t, align 16
131584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[B]], i32 0, i32 0
131594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
131604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__S1]] to i8*
131614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x4_t* [[B]] to i8*
131624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
131634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
131644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
131654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
131664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
131674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
131684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
131694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
131704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
131714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
131724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
131734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
131744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
131754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
131764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
131774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
131784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
131794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
131804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
131814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
131824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
131834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
131844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i8* [[TMP2]])
131854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
131865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_u16(uint16_t *a, uint16x8x4_t b) {
131875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_u16(a, b);
131885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
131895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
131904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_u32(i32* %a, [4 x <4 x i32>] %b.coerce) #0 {
131914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x4_t, align 16
131924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x4_t, align 16
131934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[B]], i32 0, i32 0
131944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
131954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__S1]] to i8*
131964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x4_t* [[B]] to i8*
131974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
131984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
131994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
132004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
132014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
132024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
132034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
132044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
132054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
132064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
132074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
132084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
132094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
132104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
132114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
132124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
132134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
132144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
132154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
132164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
132174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
132184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
132194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v4i32.p0i8(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i8* [[TMP2]])
132204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
132215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_u32(uint32_t *a, uint32x4x4_t b) {
132225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_u32(a, b);
132235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
132245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
132254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_u64(i64* %a, [4 x <2 x i64>] %b.coerce) #0 {
132264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x4_t, align 16
132274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x4_t, align 16
132284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[B]], i32 0, i32 0
132294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
132304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__S1]] to i8*
132314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x4_t* [[B]] to i8*
132324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
132334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
132344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
132354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
132364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
132374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
132384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
132394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
132404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
132414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
132424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
132434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
132444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
132454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
132464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
132474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
132484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
132494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
132504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
132514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
132524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
132534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
132544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i8* [[TMP2]])
132554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
132565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_u64(uint64_t *a, uint64x2x4_t b) {
132575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_u64(a, b);
132585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
132595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
132604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_s8(i8* %a, [4 x <16 x i8>] %b.coerce) #0 {
132614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x16x4_t, align 16
132624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x4_t, align 16
132634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[B]], i32 0, i32 0
132644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
132654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__S1]] to i8*
132664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x4_t* [[B]] to i8*
132674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
132684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
132694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
132704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
132714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
132724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
132734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
132744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
132754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
132764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
132774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
132784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
132794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
132804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i8* %a)
132814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
132825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_s8(int8_t *a, int8x16x4_t b) {
132835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_s8(a, b);
132845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
132855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
132864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_s16(i16* %a, [4 x <8 x i16>] %b.coerce) #0 {
132874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x8x4_t, align 16
132884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x4_t, align 16
132894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[B]], i32 0, i32 0
132904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
132914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__S1]] to i8*
132924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x4_t* [[B]] to i8*
132934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
132944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
132954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
132964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
132974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
132984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
132994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
133004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
133014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
133024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
133034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
133044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
133054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
133064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
133074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
133084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
133094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
133104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
133114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
133124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
133134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
133144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
133154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i8* [[TMP2]])
133164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
133175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_s16(int16_t *a, int16x8x4_t b) {
133185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_s16(a, b);
133195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
133205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
133214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_s32(i32* %a, [4 x <4 x i32>] %b.coerce) #0 {
133224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x4x4_t, align 16
133234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x4_t, align 16
133244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[B]], i32 0, i32 0
133254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
133264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__S1]] to i8*
133274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x4_t* [[B]] to i8*
133284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
133294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
133304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
133314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
133324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
133334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
133344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
133354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
133364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
133374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
133384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
133394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
133404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
133414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
133424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
133434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
133444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
133454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
133464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
133474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
133484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
133494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
133504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v4i32.p0i8(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i8* [[TMP2]])
133514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
133525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_s32(int32_t *a, int32x4x4_t b) {
133535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_s32(a, b);
133545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
133555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
133564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_s64(i64* %a, [4 x <2 x i64>] %b.coerce) #0 {
133574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x2x4_t, align 16
133584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x4_t, align 16
133594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[B]], i32 0, i32 0
133604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
133614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__S1]] to i8*
133624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x4_t* [[B]] to i8*
133634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
133644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
133654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
133664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
133674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
133684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
133694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
133704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
133714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
133724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
133734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
133744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
133754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
133764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
133774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
133784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
133794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
133804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
133814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
133824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
133834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
133844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
133854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i8* [[TMP2]])
133864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
133875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_s64(int64_t *a, int64x2x4_t b) {
133885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_s64(a, b);
133895610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
133905610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
133914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_f16(half* %a, [4 x <8 x half>] %b.coerce) #0 {
133924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x8x4_t, align 16
133934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x4_t, align 16
133944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[B]], i32 0, i32 0
133954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x half>] [[B]].coerce, [4 x <8 x half>]* [[COERCE_DIVE]], align 16
133964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__S1]] to i8*
133974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x4_t* [[B]] to i8*
133984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
133994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
134004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
134014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL]], i64 0, i64 0
134024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
134034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
134044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
134054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL1]], i64 0, i64 1
134064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
134074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
134084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
134094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL3]], i64 0, i64 2
134104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
134114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
134124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
134134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL5]], i64 0, i64 3
134144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX6]], align 16
134154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x half> [[TMP9]] to <16 x i8>
134164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
134174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
134184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
134194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
134204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i8* [[TMP2]])
134214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
134225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_f16(float16_t *a, float16x8x4_t b) {
134235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_f16(a, b);
134245610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
134255610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
134264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_f32(float* %a, [4 x <4 x float>] %b.coerce) #0 {
134274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x4x4_t, align 16
134284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x4_t, align 16
134294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[B]], i32 0, i32 0
134304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x float>] [[B]].coerce, [4 x <4 x float>]* [[COERCE_DIVE]], align 16
134314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__S1]] to i8*
134324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x4_t* [[B]] to i8*
134334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
134344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
134354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
134364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL]], i64 0, i64 0
134374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
134384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
134394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
134404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL1]], i64 0, i64 1
134414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
134424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
134434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
134444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL3]], i64 0, i64 2
134454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
134464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
134474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
134484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL5]], i64 0, i64 3
134494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX6]], align 16
134504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x float> [[TMP9]] to <16 x i8>
134514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
134524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
134534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
134544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x float>
134554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v4f32.p0i8(<4 x float> [[TMP11]], <4 x float> [[TMP12]], <4 x float> [[TMP13]], <4 x float> [[TMP14]], i8* [[TMP2]])
134564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
134575610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_f32(float32_t *a, float32x4x4_t b) {
134585610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_f32(a, b);
134595610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
134605610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
134614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_f64(double* %a, [4 x <2 x double>] %b.coerce) #0 {
134624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x2x4_t, align 16
134634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x4_t, align 16
134644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[B]], i32 0, i32 0
134654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x double>] [[B]].coerce, [4 x <2 x double>]* [[COERCE_DIVE]], align 16
134664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__S1]] to i8*
134674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x4_t* [[B]] to i8*
134684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
134694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
134704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
134714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL]], i64 0, i64 0
134724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
134734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
134744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
134754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL1]], i64 0, i64 1
134764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
134774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
134784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
134794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL3]], i64 0, i64 2
134804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
134814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
134824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
134834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL5]], i64 0, i64 3
134844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX6]], align 16
134854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x double> [[TMP9]] to <16 x i8>
134864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
134874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
134884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
134894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x double>
134904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v2f64.p0i8(<2 x double> [[TMP11]], <2 x double> [[TMP12]], <2 x double> [[TMP13]], <2 x double> [[TMP14]], i8* [[TMP2]])
134914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
134925610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_f64(float64_t *a, float64x2x4_t b) {
134935610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_f64(a, b);
134945610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
134955610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
134964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_p8(i8* %a, [4 x <16 x i8>] %b.coerce) #0 {
134974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x4_t, align 16
134984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x4_t, align 16
134994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[B]], i32 0, i32 0
135004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
135014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__S1]] to i8*
135024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x4_t* [[B]] to i8*
135034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
135044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
135054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
135064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
135074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
135084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
135094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
135104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
135114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
135124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
135134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
135144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
135154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
135164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i8* %a)
135174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
135185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_p8(poly8_t *a, poly8x16x4_t b) {
135195610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_p8(a, b);
135205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
135215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
135224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4q_p16(i16* %a, [4 x <8 x i16>] %b.coerce) #0 {
135234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x4_t, align 16
135244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x4_t, align 16
135254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[B]], i32 0, i32 0
135264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
135274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__S1]] to i8*
135284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x4_t* [[B]] to i8*
135294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
135304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
135314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
135324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
135334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
135344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
135354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
135364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
135374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
135384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
135394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
135404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
135414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
135424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
135434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
135444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
135454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
135464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
135474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
135484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
135494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
135504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
135514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i8* [[TMP2]])
135524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
135535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4q_p16(poly16_t *a, poly16x8x4_t b) {
135545610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4q_p16(a, b);
135555610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
135565610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
135574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_u8(i8* %a, [4 x <8 x i8>] %b.coerce) #0 {
135584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x4_t, align 8
135594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x4_t, align 8
135604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[B]], i32 0, i32 0
135614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
135624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__S1]] to i8*
135634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x4_t* [[B]] to i8*
135644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
135654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
135664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
135674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
135684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
135694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
135704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
135714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
135724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
135734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
135744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
135754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
135764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
135774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i8* %a)
135784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
135795610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_u8(uint8_t *a, uint8x8x4_t b) {
135805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_u8(a, b);
135815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
135825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
135834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_u16(i16* %a, [4 x <4 x i16>] %b.coerce) #0 {
135844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x4_t, align 8
135854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x4_t, align 8
135864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[B]], i32 0, i32 0
135874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
135884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__S1]] to i8*
135894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x4_t* [[B]] to i8*
135904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
135914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
135924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
135934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
135944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
135954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
135964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
135974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
135984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
135994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
136004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
136014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
136024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
136034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
136044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
136054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
136064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
136074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
136084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
136094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
136104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
136114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
136124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i8* [[TMP2]])
136134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
136145610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_u16(uint16_t *a, uint16x4x4_t b) {
136155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_u16(a, b);
136165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
136175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
136184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_u32(i32* %a, [4 x <2 x i32>] %b.coerce) #0 {
136194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x4_t, align 8
136204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x4_t, align 8
136214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[B]], i32 0, i32 0
136224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
136234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__S1]] to i8*
136244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x4_t* [[B]] to i8*
136254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
136264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
136274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
136284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
136294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
136304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
136314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
136324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
136334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
136344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
136354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
136364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
136374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
136384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
136394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
136404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
136414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
136424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
136434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
136444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
136454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
136464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
136474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v2i32.p0i8(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i8* [[TMP2]])
136484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
136495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_u32(uint32_t *a, uint32x2x4_t b) {
136505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_u32(a, b);
136515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
136525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
136534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_u64(i64* %a, [4 x <1 x i64>] %b.coerce) #0 {
136544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x4_t, align 8
136554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x4_t, align 8
136564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[B]], i32 0, i32 0
136574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
136584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__S1]] to i8*
136594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x4_t* [[B]] to i8*
136604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
136614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
136624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
136634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
136644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
136654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
136664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
136674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
136684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
136694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
136704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
136714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
136724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
136734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
136744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
136754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
136764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
136774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
136784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
136794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
136804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
136814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
136824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i8* [[TMP2]])
136834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
136845610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_u64(uint64_t *a, uint64x1x4_t b) {
136855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_u64(a, b);
136865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
136875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
136884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_s8(i8* %a, [4 x <8 x i8>] %b.coerce) #0 {
136894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x8x4_t, align 8
136904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x4_t, align 8
136914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[B]], i32 0, i32 0
136924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
136934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__S1]] to i8*
136944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x4_t* [[B]] to i8*
136954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
136964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
136974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
136984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
136994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
137004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
137014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
137024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
137034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
137044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
137054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
137064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
137074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
137084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i8* %a)
137094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
137105610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_s8(int8_t *a, int8x8x4_t b) {
137115610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_s8(a, b);
137125610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
137135610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
137144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_s16(i16* %a, [4 x <4 x i16>] %b.coerce) #0 {
137154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x4x4_t, align 8
137164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x4_t, align 8
137174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[B]], i32 0, i32 0
137184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
137194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__S1]] to i8*
137204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x4_t* [[B]] to i8*
137214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
137224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
137234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
137244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
137254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
137264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
137274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
137284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
137294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
137304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
137314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
137324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
137334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
137344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
137354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
137364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
137374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
137384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
137394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
137404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
137414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
137424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
137434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i8* [[TMP2]])
137444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
137455610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_s16(int16_t *a, int16x4x4_t b) {
137465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_s16(a, b);
137475610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
137485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
137494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_s32(i32* %a, [4 x <2 x i32>] %b.coerce) #0 {
137504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x2x4_t, align 8
137514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x4_t, align 8
137524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[B]], i32 0, i32 0
137534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
137544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__S1]] to i8*
137554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x4_t* [[B]] to i8*
137564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
137574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
137584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
137594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
137604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
137614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
137624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
137634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
137644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
137654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
137664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
137674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
137684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
137694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
137704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
137714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
137724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
137734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
137744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
137754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
137764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
137774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
137784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v2i32.p0i8(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i8* [[TMP2]])
137794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
137805610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_s32(int32_t *a, int32x2x4_t b) {
137815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_s32(a, b);
137825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
137835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
137844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_s64(i64* %a, [4 x <1 x i64>] %b.coerce) #0 {
137854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x1x4_t, align 8
137864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x4_t, align 8
137874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[B]], i32 0, i32 0
137884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
137894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__S1]] to i8*
137904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x4_t* [[B]] to i8*
137914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
137924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
137934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
137944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
137954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
137964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
137974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
137984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
137994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
138004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
138014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
138024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
138034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
138044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
138054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
138064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
138074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
138084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
138094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
138104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
138114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
138124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
138134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i8* [[TMP2]])
138144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
138155610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_s64(int64_t *a, int64x1x4_t b) {
138165610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_s64(a, b);
138175610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
138185610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
138194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_f16(half* %a, [4 x <4 x half>] %b.coerce) #0 {
138204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x4x4_t, align 8
138214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x4_t, align 8
138224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[B]], i32 0, i32 0
138234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x half>] [[B]].coerce, [4 x <4 x half>]* [[COERCE_DIVE]], align 8
138244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__S1]] to i8*
138254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x4_t* [[B]] to i8*
138264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
138274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
138284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
138294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL]], i64 0, i64 0
138304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
138314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
138324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
138334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL1]], i64 0, i64 1
138344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
138354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
138364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
138374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL3]], i64 0, i64 2
138384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
138394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
138404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
138414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL5]], i64 0, i64 3
138424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX6]], align 8
138434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x half> [[TMP9]] to <8 x i8>
138444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
138454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
138464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
138474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
138484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i8* [[TMP2]])
138494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
138505610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_f16(float16_t *a, float16x4x4_t b) {
138515610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_f16(a, b);
138525610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
138535610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
138544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_f32(float* %a, [4 x <2 x float>] %b.coerce) #0 {
138554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x2x4_t, align 8
138564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x4_t, align 8
138574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[B]], i32 0, i32 0
138584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x float>] [[B]].coerce, [4 x <2 x float>]* [[COERCE_DIVE]], align 8
138594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__S1]] to i8*
138604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x4_t* [[B]] to i8*
138614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
138624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
138634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
138644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL]], i64 0, i64 0
138654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
138664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
138674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
138684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL1]], i64 0, i64 1
138694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
138704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
138714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
138724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL3]], i64 0, i64 2
138734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
138744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
138754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
138764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL5]], i64 0, i64 3
138774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX6]], align 8
138784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x float> [[TMP9]] to <8 x i8>
138794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
138804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
138814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
138824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x float>
138834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v2f32.p0i8(<2 x float> [[TMP11]], <2 x float> [[TMP12]], <2 x float> [[TMP13]], <2 x float> [[TMP14]], i8* [[TMP2]])
138844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
138855610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_f32(float32_t *a, float32x2x4_t b) {
138865610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_f32(a, b);
138875610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
138885610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
138894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_f64(double* %a, [4 x <1 x double>] %b.coerce) #0 {
138904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x1x4_t, align 8
138914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x4_t, align 8
138924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[B]], i32 0, i32 0
138934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <1 x double>] [[B]].coerce, [4 x <1 x double>]* [[COERCE_DIVE]], align 8
138944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__S1]] to i8*
138954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x4_t* [[B]] to i8*
138964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
138974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
138984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
138994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL]], i64 0, i64 0
139004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
139014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
139024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
139034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL1]], i64 0, i64 1
139044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
139054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
139064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
139074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL3]], i64 0, i64 2
139084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
139094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
139104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
139114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL5]], i64 0, i64 3
139124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX6]], align 8
139134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <1 x double> [[TMP9]] to <8 x i8>
139144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
139154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
139164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
139174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x double>
139184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v1f64.p0i8(<1 x double> [[TMP11]], <1 x double> [[TMP12]], <1 x double> [[TMP13]], <1 x double> [[TMP14]], i8* [[TMP2]])
139194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
139205610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_f64(float64_t *a, float64x1x4_t b) {
139215610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_f64(a, b);
139225610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
139235610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
139244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_p8(i8* %a, [4 x <8 x i8>] %b.coerce) #0 {
139254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x4_t, align 8
139264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x4_t, align 8
139274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[B]], i32 0, i32 0
139284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
139294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__S1]] to i8*
139304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x4_t* [[B]] to i8*
139314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
139324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
139334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
139344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
139354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
139364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
139374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
139384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
139394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
139404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
139414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
139424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
139434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
139444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i8* %a)
139454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
139465610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_p8(poly8_t *a, poly8x8x4_t b) {
139475610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_p8(a, b);
139485610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
139495610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu
139504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst4_p16(i16* %a, [4 x <4 x i16>] %b.coerce) #0 {
139514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x4_t, align 8
139524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x4_t, align 8
139534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[B]], i32 0, i32 0
139544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
139554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__S1]] to i8*
139564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x4_t* [[B]] to i8*
139574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
139584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
139594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
139604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
139614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
139624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
139634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
139644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
139654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
139664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
139674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
139684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
139694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
139704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
139714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
139724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
139734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
139744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
139754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
139764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
139774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
139784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
139794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st4.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i8* [[TMP2]])
139804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
139815610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liuvoid test_vst4_p16(poly16_t *a, poly16x4x4_t b) {
139825610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu  vst4_p16(a, b);
139835610fbdb9c257b0b0c9589f6d6cedb58ec397a30Hao Liu}
13984ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
139854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x2_t @test_vld1q_u8_x2(i8* %a) #0 {
139864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x2_t, align 16
139874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x2_t, align 16
139884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
139894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8* %a)
139904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8> }*
139914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8> }* [[TMP1]]
139924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x16x2_t* [[RETVAL]] to i8*
139934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
139944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 32, i32 16, i1 false)
139954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], align 16
139964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x2_t [[TMP4]]
13997dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint8x16x2_t test_vld1q_u8_x2(uint8_t const *a) {
13998dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u8_x2(a);
13999dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14000dd12780e86575795fa912529a911b01e2abc4677Hao Liu
140014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x2_t @test_vld1q_u16_x2(i16* %a) #0 {
140024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x2_t, align 16
140034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x2_t, align 16
140044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
140054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
140064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
140074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16* [[TMP2]])
140084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
140094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16> }* [[TMP3]]
140104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x8x2_t* [[RETVAL]] to i8*
140114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
140124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
140134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], align 16
140144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x2_t [[TMP6]]
14015dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint16x8x2_t test_vld1q_u16_x2(uint16_t const *a) {
14016dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u16_x2(a);
14017dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14018dd12780e86575795fa912529a911b01e2abc4677Hao Liu
140194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x2_t @test_vld1q_u32_x2(i32* %a) #0 {
140204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x2_t, align 16
140214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x2_t, align 16
140224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
140234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
140244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
140254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x2.v4i32.p0i32(i32* [[TMP2]])
140264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32> }*
140274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32> } [[VLD1XN]], { <4 x i32>, <4 x i32> }* [[TMP3]]
140284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x4x2_t* [[RETVAL]] to i8*
140294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
140304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
140314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], align 16
140324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x2_t [[TMP6]]
14033dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint32x4x2_t test_vld1q_u32_x2(uint32_t const *a) {
14034dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u32_x2(a);
14035dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14036dd12780e86575795fa912529a911b01e2abc4677Hao Liu
140374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x2x2_t @test_vld1q_u64_x2(i64* %a) #0 {
140384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x2_t, align 16
140394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x2_t, align 16
140404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
140414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
140424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
140434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64* [[TMP2]])
140444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
140454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64> }* [[TMP3]]
140464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x2_t* [[RETVAL]] to i8*
140474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
140484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
140494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[RETVAL]], align 16
140504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x2x2_t [[TMP6]]
14051dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint64x2x2_t test_vld1q_u64_x2(uint64_t const *a) {
14052dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u64_x2(a);
14053dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14054dd12780e86575795fa912529a911b01e2abc4677Hao Liu
140554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x2_t @test_vld1q_s8_x2(i8* %a) #0 {
140564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x2_t, align 16
140574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x2_t, align 16
140584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
140594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8* %a)
140604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8> }*
140614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8> }* [[TMP1]]
140624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x16x2_t* [[RETVAL]] to i8*
140634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
140644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 32, i32 16, i1 false)
140654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], align 16
140664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x2_t [[TMP4]]
14067dd12780e86575795fa912529a911b01e2abc4677Hao Liuint8x16x2_t test_vld1q_s8_x2(int8_t const *a) {
14068dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s8_x2(a);
14069dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14070dd12780e86575795fa912529a911b01e2abc4677Hao Liu
140714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x2_t @test_vld1q_s16_x2(i16* %a) #0 {
140724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x2_t, align 16
140734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x2_t, align 16
140744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
140754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
140764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
140774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16* [[TMP2]])
140784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
140794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16> }* [[TMP3]]
140804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x8x2_t* [[RETVAL]] to i8*
140814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
140824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
140834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], align 16
140844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x2_t [[TMP6]]
14085dd12780e86575795fa912529a911b01e2abc4677Hao Liuint16x8x2_t test_vld1q_s16_x2(int16_t const *a) {
14086dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s16_x2(a);
14087dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14088dd12780e86575795fa912529a911b01e2abc4677Hao Liu
140894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x2_t @test_vld1q_s32_x2(i32* %a) #0 {
140904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x2_t, align 16
140914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x2_t, align 16
140924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
140934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
140944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
140954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x2.v4i32.p0i32(i32* [[TMP2]])
140964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32> }*
140974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32> } [[VLD1XN]], { <4 x i32>, <4 x i32> }* [[TMP3]]
140984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x4x2_t* [[RETVAL]] to i8*
140994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
141004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
141014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], align 16
141024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x2_t [[TMP6]]
14103dd12780e86575795fa912529a911b01e2abc4677Hao Liuint32x4x2_t test_vld1q_s32_x2(int32_t const *a) {
14104dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s32_x2(a);
14105dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14106dd12780e86575795fa912529a911b01e2abc4677Hao Liu
141074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x2x2_t @test_vld1q_s64_x2(i64* %a) #0 {
141084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x2_t, align 16
141094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x2_t, align 16
141104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
141114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
141124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
141134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64* [[TMP2]])
141144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
141154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64> }* [[TMP3]]
141164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x2_t* [[RETVAL]] to i8*
141174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
141184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
141194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x2_t, %struct.int64x2x2_t* [[RETVAL]], align 16
141204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x2x2_t [[TMP6]]
14121dd12780e86575795fa912529a911b01e2abc4677Hao Liuint64x2x2_t test_vld1q_s64_x2(int64_t const *a) {
14122dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s64_x2(a);
14123dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14124dd12780e86575795fa912529a911b01e2abc4677Hao Liu
141254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x8x2_t @test_vld1q_f16_x2(half* %a) #0 {
141264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x2_t, align 16
141274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x2_t, align 16
141284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
141294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
141304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
141314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16* [[TMP2]])
141324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
141334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16> }* [[TMP3]]
141344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x8x2_t* [[RETVAL]] to i8*
141354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
141364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
141374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x8x2_t, %struct.float16x8x2_t* [[RETVAL]], align 16
141384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x8x2_t [[TMP6]]
14139dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat16x8x2_t test_vld1q_f16_x2(float16_t const *a) {
14140dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f16_x2(a);
14141dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14142dd12780e86575795fa912529a911b01e2abc4677Hao Liu
141434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x2_t @test_vld1q_f32_x2(float* %a) #0 {
141444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x2_t, align 16
141454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x2_t, align 16
141464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
141474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
141484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to float*
141494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x2.v4f32.p0f32(float* [[TMP2]])
141504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x float>, <4 x float> }*
141514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x float>, <4 x float> } [[VLD1XN]], { <4 x float>, <4 x float> }* [[TMP3]]
141524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x4x2_t* [[RETVAL]] to i8*
141534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
141544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
141554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], align 16
141564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x2_t [[TMP6]]
14157dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat32x4x2_t test_vld1q_f32_x2(float32_t const *a) {
14158dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f32_x2(a);
14159dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14160dd12780e86575795fa912529a911b01e2abc4677Hao Liu
141614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x2x2_t @test_vld1q_f64_x2(double* %a) #0 {
141624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x2_t, align 16
141634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x2_t, align 16
141644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
141654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
141664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
141674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x2.v2f64.p0f64(double* [[TMP2]])
141684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double> }*
141694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x double>, <2 x double> } [[VLD1XN]], { <2 x double>, <2 x double> }* [[TMP3]]
141704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x2_t* [[RETVAL]] to i8*
141714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
141724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
141734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x2_t, %struct.float64x2x2_t* [[RETVAL]], align 16
141744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x2x2_t [[TMP6]]
14175dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat64x2x2_t test_vld1q_f64_x2(float64_t const *a) {
14176dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f64_x2(a);
14177dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14178dd12780e86575795fa912529a911b01e2abc4677Hao Liu
141794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x2_t @test_vld1q_p8_x2(i8* %a) #0 {
141804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x2_t, align 16
141814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x2_t, align 16
141824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
141834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8* %a)
141844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8> }*
141854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8> }* [[TMP1]]
141864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x16x2_t* [[RETVAL]] to i8*
141874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
141884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 32, i32 16, i1 false)
141894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], align 16
141904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x2_t [[TMP4]]
14191dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly8x16x2_t test_vld1q_p8_x2(poly8_t const *a) {
14192dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p8_x2(a);
14193dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14194dd12780e86575795fa912529a911b01e2abc4677Hao Liu
141954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x2_t @test_vld1q_p16_x2(i16* %a) #0 {
141964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x2_t, align 16
141974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x2_t, align 16
141984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
141994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
142004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
142014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16* [[TMP2]])
142024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16> }*
142034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16> }* [[TMP3]]
142044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x8x2_t* [[RETVAL]] to i8*
142054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
142064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
142074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], align 16
142084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x2_t [[TMP6]]
14209dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly16x8x2_t test_vld1q_p16_x2(poly16_t const *a) {
14210dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p16_x2(a);
14211dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14212dd12780e86575795fa912529a911b01e2abc4677Hao Liu
142134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly64x2x2_t @test_vld1q_p64_x2(i64* %a) #0 {
142144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x2_t, align 16
142154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x2_t, align 16
142164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
142174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
142184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
142194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64* [[TMP2]])
142204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
142214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64> }* [[TMP3]]
142224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x2x2_t* [[RETVAL]] to i8*
142234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
142244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 16, i1 false)
142254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[RETVAL]], align 16
142264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly64x2x2_t [[TMP6]]
14227dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly64x2x2_t test_vld1q_p64_x2(poly64_t const *a) {
14228dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p64_x2(a);
14229dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14230dd12780e86575795fa912529a911b01e2abc4677Hao Liu
142314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x2_t @test_vld1_u8_x2(i8* %a) #0 {
142324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x2_t, align 8
142334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x2_t, align 8
142344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
142354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8* %a)
142364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8> }*
142374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8> }* [[TMP1]]
142384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x8x2_t* [[RETVAL]] to i8*
142394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
142404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 16, i32 8, i1 false)
142414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], align 8
142424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x2_t [[TMP4]]
14243dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint8x8x2_t test_vld1_u8_x2(uint8_t const *a) {
14244dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u8_x2(a);
14245dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14246dd12780e86575795fa912529a911b01e2abc4677Hao Liu
142474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x2_t @test_vld1_u16_x2(i16* %a) #0 {
142484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x2_t, align 8
142494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x2_t, align 8
142504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
142514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
142524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
142534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16* [[TMP2]])
142544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
142554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16> }* [[TMP3]]
142564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x4x2_t* [[RETVAL]] to i8*
142574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
142584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
142594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], align 8
142604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x2_t [[TMP6]]
14261dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint16x4x2_t test_vld1_u16_x2(uint16_t const *a) {
14262dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u16_x2(a);
14263dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14264dd12780e86575795fa912529a911b01e2abc4677Hao Liu
142654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x2_t @test_vld1_u32_x2(i32* %a) #0 {
142664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x2_t, align 8
142674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x2_t, align 8
142684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
142694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
142704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
142714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x2.v2i32.p0i32(i32* [[TMP2]])
142724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32> }*
142734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32> } [[VLD1XN]], { <2 x i32>, <2 x i32> }* [[TMP3]]
142744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x2x2_t* [[RETVAL]] to i8*
142754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
142764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
142774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], align 8
142784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x2_t [[TMP6]]
14279dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint32x2x2_t test_vld1_u32_x2(uint32_t const *a) {
14280dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u32_x2(a);
14281dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14282dd12780e86575795fa912529a911b01e2abc4677Hao Liu
142834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x1x2_t @test_vld1_u64_x2(i64* %a) #0 {
142844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x2_t, align 8
142854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x2_t, align 8
142864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
142874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
142884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
142894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64* [[TMP2]])
142904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64> }*
142914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64> }* [[TMP3]]
142924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x1x2_t* [[RETVAL]] to i8*
142934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
142944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
142954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[RETVAL]], align 8
142964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x1x2_t [[TMP6]]
14297dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint64x1x2_t test_vld1_u64_x2(uint64_t const *a) {
14298dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u64_x2(a);
14299dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14300dd12780e86575795fa912529a911b01e2abc4677Hao Liu
143014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x2_t @test_vld1_s8_x2(i8* %a) #0 {
143024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x2_t, align 8
143034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x2_t, align 8
143044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
143054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8* %a)
143064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8> }*
143074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8> }* [[TMP1]]
143084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x8x2_t* [[RETVAL]] to i8*
143094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
143104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 16, i32 8, i1 false)
143114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], align 8
143124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x2_t [[TMP4]]
14313dd12780e86575795fa912529a911b01e2abc4677Hao Liuint8x8x2_t test_vld1_s8_x2(int8_t const *a) {
14314dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s8_x2(a);
14315dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14316dd12780e86575795fa912529a911b01e2abc4677Hao Liu
143174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x2_t @test_vld1_s16_x2(i16* %a) #0 {
143184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x2_t, align 8
143194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x2_t, align 8
143204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
143214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
143224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
143234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16* [[TMP2]])
143244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
143254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16> }* [[TMP3]]
143264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x4x2_t* [[RETVAL]] to i8*
143274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
143284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
143294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], align 8
143304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x2_t [[TMP6]]
14331dd12780e86575795fa912529a911b01e2abc4677Hao Liuint16x4x2_t test_vld1_s16_x2(int16_t const *a) {
14332dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s16_x2(a);
14333dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14334dd12780e86575795fa912529a911b01e2abc4677Hao Liu
143354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x2_t @test_vld1_s32_x2(i32* %a) #0 {
143364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x2_t, align 8
143374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x2_t, align 8
143384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
143394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
143404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
143414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x2.v2i32.p0i32(i32* [[TMP2]])
143424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32> }*
143434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32> } [[VLD1XN]], { <2 x i32>, <2 x i32> }* [[TMP3]]
143444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x2x2_t* [[RETVAL]] to i8*
143454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
143464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
143474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], align 8
143484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x2_t [[TMP6]]
14349dd12780e86575795fa912529a911b01e2abc4677Hao Liuint32x2x2_t test_vld1_s32_x2(int32_t const *a) {
14350dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s32_x2(a);
14351dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14352dd12780e86575795fa912529a911b01e2abc4677Hao Liu
143534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x1x2_t @test_vld1_s64_x2(i64* %a) #0 {
143544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x2_t, align 8
143554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x2_t, align 8
143564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
143574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
143584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
143594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64* [[TMP2]])
143604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64> }*
143614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64> }* [[TMP3]]
143624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x1x2_t* [[RETVAL]] to i8*
143634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
143644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
143654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x1x2_t, %struct.int64x1x2_t* [[RETVAL]], align 8
143664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x1x2_t [[TMP6]]
14367dd12780e86575795fa912529a911b01e2abc4677Hao Liuint64x1x2_t test_vld1_s64_x2(int64_t const *a) {
14368dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s64_x2(a);
14369dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14370dd12780e86575795fa912529a911b01e2abc4677Hao Liu
143714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x4x2_t @test_vld1_f16_x2(half* %a) #0 {
143724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x2_t, align 8
143734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x2_t, align 8
143744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
143754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
143764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
143774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16* [[TMP2]])
143784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
143794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16> }* [[TMP3]]
143804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x4x2_t* [[RETVAL]] to i8*
143814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
143824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
143834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x4x2_t, %struct.float16x4x2_t* [[RETVAL]], align 8
143844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x4x2_t [[TMP6]]
14385dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat16x4x2_t test_vld1_f16_x2(float16_t const *a) {
14386dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f16_x2(a);
14387dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14388dd12780e86575795fa912529a911b01e2abc4677Hao Liu
143894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x2_t @test_vld1_f32_x2(float* %a) #0 {
143904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x2_t, align 8
143914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x2_t, align 8
143924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
143934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
143944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to float*
143954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x2.v2f32.p0f32(float* [[TMP2]])
143964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x float>, <2 x float> }*
143974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x float>, <2 x float> } [[VLD1XN]], { <2 x float>, <2 x float> }* [[TMP3]]
143984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x2x2_t* [[RETVAL]] to i8*
143994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
144004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
144014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], align 8
144024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x2_t [[TMP6]]
14403dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat32x2x2_t test_vld1_f32_x2(float32_t const *a) {
14404dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f32_x2(a);
14405dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14406dd12780e86575795fa912529a911b01e2abc4677Hao Liu
144074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x1x2_t @test_vld1_f64_x2(double* %a) #0 {
144084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x2_t, align 8
144094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x2_t, align 8
144104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
144114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
144124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
144134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x2.v1f64.p0f64(double* [[TMP2]])
144144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double> }*
144154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x double>, <1 x double> } [[VLD1XN]], { <1 x double>, <1 x double> }* [[TMP3]]
144164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x2_t* [[RETVAL]] to i8*
144174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
144184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
144194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x2_t, %struct.float64x1x2_t* [[RETVAL]], align 8
144204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x1x2_t [[TMP6]]
14421dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat64x1x2_t test_vld1_f64_x2(float64_t const *a) {
14422dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f64_x2(a);
14423dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14424dd12780e86575795fa912529a911b01e2abc4677Hao Liu
144254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x2_t @test_vld1_p8_x2(i8* %a) #0 {
144264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x2_t, align 8
144274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x2_t, align 8
144284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
144294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8* %a)
144304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8> }*
144314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8> }* [[TMP1]]
144324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x8x2_t* [[RETVAL]] to i8*
144334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
144344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 16, i32 8, i1 false)
144354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], align 8
144364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x2_t [[TMP4]]
14437dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly8x8x2_t test_vld1_p8_x2(poly8_t const *a) {
14438dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p8_x2(a);
14439dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14440dd12780e86575795fa912529a911b01e2abc4677Hao Liu
144414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x2_t @test_vld1_p16_x2(i16* %a) #0 {
144424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x2_t, align 8
144434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x2_t, align 8
144444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
144454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
144464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
144474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16* [[TMP2]])
144484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16> }*
144494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16> }* [[TMP3]]
144504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x4x2_t* [[RETVAL]] to i8*
144514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
144524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
144534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], align 8
144544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x2_t [[TMP6]]
14455dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly16x4x2_t test_vld1_p16_x2(poly16_t const *a) {
14456dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p16_x2(a);
14457dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14458dd12780e86575795fa912529a911b01e2abc4677Hao Liu
144594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly64x1x2_t @test_vld1_p64_x2(i64* %a) #0 {
144604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x2_t, align 8
144614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x2_t, align 8
144624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
144634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
144644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
144654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64* [[TMP2]])
144664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64> }*
144674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64> }* [[TMP3]]
144684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x1x2_t* [[RETVAL]] to i8*
144694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
144704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 16, i32 8, i1 false)
144714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[RETVAL]], align 8
144724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly64x1x2_t [[TMP6]]
14473dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly64x1x2_t test_vld1_p64_x2(poly64_t const *a) {
14474dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p64_x2(a);
14475dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14476dd12780e86575795fa912529a911b01e2abc4677Hao Liu
144774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x3_t @test_vld1q_u8_x3(i8* %a) #0 {
144784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x3_t, align 16
144794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x3_t, align 16
144804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
144814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8* %a)
144824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
144834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP1]]
144844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x16x3_t* [[RETVAL]] to i8*
144854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
144864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 48, i32 16, i1 false)
144874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[RETVAL]], align 16
144884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x3_t [[TMP4]]
14489dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint8x16x3_t test_vld1q_u8_x3(uint8_t const *a) {
14490dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u8_x3(a);
14491dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14492dd12780e86575795fa912529a911b01e2abc4677Hao Liu
144934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x3_t @test_vld1q_u16_x3(i16* %a) #0 {
144944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x3_t, align 16
144954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x3_t, align 16
144964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
144974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
144984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
144994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16* [[TMP2]])
145004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
145014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
145024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x8x3_t* [[RETVAL]] to i8*
145034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
145044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
145054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[RETVAL]], align 16
145064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x3_t [[TMP6]]
14507dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint16x8x3_t test_vld1q_u16_x3(uint16_t const *a) {
14508dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u16_x3(a);
14509dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14510dd12780e86575795fa912529a911b01e2abc4677Hao Liu
145114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x3_t @test_vld1q_u32_x3(i32* %a) #0 {
145124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x3_t, align 16
145134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x3_t, align 16
145144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
145154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
145164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
145174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x3.v4i32.p0i32(i32* [[TMP2]])
145184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
145194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD1XN]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
145204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x4x3_t* [[RETVAL]] to i8*
145214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
145224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
145234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[RETVAL]], align 16
145244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x3_t [[TMP6]]
14525dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint32x4x3_t test_vld1q_u32_x3(uint32_t const *a) {
14526dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u32_x3(a);
14527dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14528dd12780e86575795fa912529a911b01e2abc4677Hao Liu
145294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x2x3_t @test_vld1q_u64_x3(i64* %a) #0 {
145304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x3_t, align 16
145314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x3_t, align 16
145324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
145334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
145344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
145354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64* [[TMP2]])
145364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
145374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
145384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x3_t* [[RETVAL]] to i8*
145394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
145404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
145414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[RETVAL]], align 16
145424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x2x3_t [[TMP6]]
14543dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint64x2x3_t test_vld1q_u64_x3(uint64_t const *a) {
14544dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u64_x3(a);
14545dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14546dd12780e86575795fa912529a911b01e2abc4677Hao Liu
145474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x3_t @test_vld1q_s8_x3(i8* %a) #0 {
145484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x3_t, align 16
145494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x3_t, align 16
145504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
145514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8* %a)
145524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
145534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP1]]
145544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x16x3_t* [[RETVAL]] to i8*
145554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
145564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 48, i32 16, i1 false)
145574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.int8x16x3_t, %struct.int8x16x3_t* [[RETVAL]], align 16
145584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x3_t [[TMP4]]
14559dd12780e86575795fa912529a911b01e2abc4677Hao Liuint8x16x3_t test_vld1q_s8_x3(int8_t const *a) {
14560dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s8_x3(a);
14561dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14562dd12780e86575795fa912529a911b01e2abc4677Hao Liu
145634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x3_t @test_vld1q_s16_x3(i16* %a) #0 {
145644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x3_t, align 16
145654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x3_t, align 16
145664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
145674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
145684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
145694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16* [[TMP2]])
145704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
145714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
145724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x8x3_t* [[RETVAL]] to i8*
145734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
145744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
145754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x8x3_t, %struct.int16x8x3_t* [[RETVAL]], align 16
145764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x3_t [[TMP6]]
14577dd12780e86575795fa912529a911b01e2abc4677Hao Liuint16x8x3_t test_vld1q_s16_x3(int16_t const *a) {
14578dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s16_x3(a);
14579dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14580dd12780e86575795fa912529a911b01e2abc4677Hao Liu
145814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x3_t @test_vld1q_s32_x3(i32* %a) #0 {
145824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x3_t, align 16
145834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x3_t, align 16
145844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
145854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
145864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
145874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x3.v4i32.p0i32(i32* [[TMP2]])
145884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
145894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD1XN]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
145904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x4x3_t* [[RETVAL]] to i8*
145914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
145924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
145934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x4x3_t, %struct.int32x4x3_t* [[RETVAL]], align 16
145944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x3_t [[TMP6]]
14595dd12780e86575795fa912529a911b01e2abc4677Hao Liuint32x4x3_t test_vld1q_s32_x3(int32_t const *a) {
14596dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s32_x3(a);
14597dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14598dd12780e86575795fa912529a911b01e2abc4677Hao Liu
145994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x2x3_t @test_vld1q_s64_x3(i64* %a) #0 {
146004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x3_t, align 16
146014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x3_t, align 16
146024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
146034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
146044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
146054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64* [[TMP2]])
146064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
146074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
146084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x3_t* [[RETVAL]] to i8*
146094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
146104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
146114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x3_t, %struct.int64x2x3_t* [[RETVAL]], align 16
146124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x2x3_t [[TMP6]]
14613dd12780e86575795fa912529a911b01e2abc4677Hao Liuint64x2x3_t test_vld1q_s64_x3(int64_t const *a) {
14614dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s64_x3(a);
14615dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14616dd12780e86575795fa912529a911b01e2abc4677Hao Liu
146174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x8x3_t @test_vld1q_f16_x3(half* %a) #0 {
146184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x3_t, align 16
146194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x3_t, align 16
146204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
146214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
146224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
146234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16* [[TMP2]])
146244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
146254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
146264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x8x3_t* [[RETVAL]] to i8*
146274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
146284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
146294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x8x3_t, %struct.float16x8x3_t* [[RETVAL]], align 16
146304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x8x3_t [[TMP6]]
14631dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat16x8x3_t test_vld1q_f16_x3(float16_t const *a) {
14632dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f16_x3(a);
14633dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14634dd12780e86575795fa912529a911b01e2abc4677Hao Liu
146354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x3_t @test_vld1q_f32_x3(float* %a) #0 {
146364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x3_t, align 16
146374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x3_t, align 16
146384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
146394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
146404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to float*
146414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x3.v4f32.p0f32(float* [[TMP2]])
146424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x float>, <4 x float>, <4 x float> }*
146434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x float>, <4 x float>, <4 x float> } [[VLD1XN]], { <4 x float>, <4 x float>, <4 x float> }* [[TMP3]]
146444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x4x3_t* [[RETVAL]] to i8*
146454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
146464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
146474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x4x3_t, %struct.float32x4x3_t* [[RETVAL]], align 16
146484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x3_t [[TMP6]]
14649dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat32x4x3_t test_vld1q_f32_x3(float32_t const *a) {
14650dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f32_x3(a);
14651dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14652dd12780e86575795fa912529a911b01e2abc4677Hao Liu
146534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x2x3_t @test_vld1q_f64_x3(double* %a) #0 {
146544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x3_t, align 16
146554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x3_t, align 16
146564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
146574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
146584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
146594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x3.v2f64.p0f64(double* [[TMP2]])
146604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double> }*
146614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x double>, <2 x double>, <2 x double> } [[VLD1XN]], { <2 x double>, <2 x double>, <2 x double> }* [[TMP3]]
146624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x3_t* [[RETVAL]] to i8*
146634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
146644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
146654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x3_t, %struct.float64x2x3_t* [[RETVAL]], align 16
146664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x2x3_t [[TMP6]]
14667dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat64x2x3_t test_vld1q_f64_x3(float64_t const *a) {
14668dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f64_x3(a);
14669dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14670dd12780e86575795fa912529a911b01e2abc4677Hao Liu
146714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x3_t @test_vld1q_p8_x3(i8* %a) #0 {
146724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x3_t, align 16
146734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x3_t, align 16
146744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
146754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8* %a)
146764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
146774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP1]]
146784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x16x3_t* [[RETVAL]] to i8*
146794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
146804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 48, i32 16, i1 false)
146814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[RETVAL]], align 16
146824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x3_t [[TMP4]]
14683dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly8x16x3_t test_vld1q_p8_x3(poly8_t const *a) {
14684dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p8_x3(a);
14685dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14686dd12780e86575795fa912529a911b01e2abc4677Hao Liu
146874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x3_t @test_vld1q_p16_x3(i16* %a) #0 {
146884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x3_t, align 16
146894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x3_t, align 16
146904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
146914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
146924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
146934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16* [[TMP2]])
146944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
146954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
146964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x8x3_t* [[RETVAL]] to i8*
146974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
146984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
146994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[RETVAL]], align 16
147004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x3_t [[TMP6]]
14701dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly16x8x3_t test_vld1q_p16_x3(poly16_t const *a) {
14702dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p16_x3(a);
14703dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14704dd12780e86575795fa912529a911b01e2abc4677Hao Liu
147054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly64x2x3_t @test_vld1q_p64_x3(i64* %a) #0 {
147064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x3_t, align 16
147074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x3_t, align 16
147084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
147094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
147104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
147114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64* [[TMP2]])
147124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
147134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
147144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x2x3_t* [[RETVAL]] to i8*
147154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
147164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 48, i32 16, i1 false)
147174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[RETVAL]], align 16
147184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly64x2x3_t [[TMP6]]
14719dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly64x2x3_t test_vld1q_p64_x3(poly64_t const *a) {
14720dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p64_x3(a);
14721dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14722dd12780e86575795fa912529a911b01e2abc4677Hao Liu
147234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x3_t @test_vld1_u8_x3(i8* %a) #0 {
147244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x3_t, align 8
147254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x3_t, align 8
147264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
147274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8* %a)
147284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
147294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP1]]
147304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x8x3_t* [[RETVAL]] to i8*
147314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
147324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 24, i32 8, i1 false)
147334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[RETVAL]], align 8
147344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x3_t [[TMP4]]
14735dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint8x8x3_t test_vld1_u8_x3(uint8_t const *a) {
14736dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u8_x3(a);
14737dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14738dd12780e86575795fa912529a911b01e2abc4677Hao Liu
147394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x3_t @test_vld1_u16_x3(i16* %a) #0 {
147404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x3_t, align 8
147414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x3_t, align 8
147424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
147434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
147444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
147454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16* [[TMP2]])
147464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
147474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
147484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x4x3_t* [[RETVAL]] to i8*
147494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
147504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
147514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[RETVAL]], align 8
147524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x3_t [[TMP6]]
14753dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint16x4x3_t test_vld1_u16_x3(uint16_t const *a) {
14754dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u16_x3(a);
14755dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14756dd12780e86575795fa912529a911b01e2abc4677Hao Liu
147574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x3_t @test_vld1_u32_x3(i32* %a) #0 {
147584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x3_t, align 8
147594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x3_t, align 8
147604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
147614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
147624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
147634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x3.v2i32.p0i32(i32* [[TMP2]])
147644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
147654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD1XN]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
147664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x2x3_t* [[RETVAL]] to i8*
147674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
147684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
147694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[RETVAL]], align 8
147704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x3_t [[TMP6]]
14771dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint32x2x3_t test_vld1_u32_x3(uint32_t const *a) {
14772dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u32_x3(a);
14773dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14774dd12780e86575795fa912529a911b01e2abc4677Hao Liu
147754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x1x3_t @test_vld1_u64_x3(i64* %a) #0 {
147764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x3_t, align 8
147774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x3_t, align 8
147784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
147794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
147804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
147814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64* [[TMP2]])
147824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
147834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
147844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x1x3_t* [[RETVAL]] to i8*
147854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
147864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
147874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[RETVAL]], align 8
147884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x1x3_t [[TMP6]]
14789dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint64x1x3_t test_vld1_u64_x3(uint64_t const *a) {
14790dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u64_x3(a);
14791dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14792dd12780e86575795fa912529a911b01e2abc4677Hao Liu
147934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x3_t @test_vld1_s8_x3(i8* %a) #0 {
147944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x3_t, align 8
147954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x3_t, align 8
147964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
147974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8* %a)
147984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
147994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP1]]
148004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x8x3_t* [[RETVAL]] to i8*
148014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
148024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 24, i32 8, i1 false)
148034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.int8x8x3_t, %struct.int8x8x3_t* [[RETVAL]], align 8
148044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x3_t [[TMP4]]
14805dd12780e86575795fa912529a911b01e2abc4677Hao Liuint8x8x3_t test_vld1_s8_x3(int8_t const *a) {
14806dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s8_x3(a);
14807dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14808dd12780e86575795fa912529a911b01e2abc4677Hao Liu
148094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x3_t @test_vld1_s16_x3(i16* %a) #0 {
148104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x3_t, align 8
148114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x3_t, align 8
148124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
148134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
148144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
148154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16* [[TMP2]])
148164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
148174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
148184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x4x3_t* [[RETVAL]] to i8*
148194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
148204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
148214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x4x3_t, %struct.int16x4x3_t* [[RETVAL]], align 8
148224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x3_t [[TMP6]]
14823dd12780e86575795fa912529a911b01e2abc4677Hao Liuint16x4x3_t test_vld1_s16_x3(int16_t const *a) {
14824dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s16_x3(a);
14825dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14826dd12780e86575795fa912529a911b01e2abc4677Hao Liu
148274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x3_t @test_vld1_s32_x3(i32* %a) #0 {
148284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x3_t, align 8
148294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x3_t, align 8
148304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
148314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
148324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
148334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x3.v2i32.p0i32(i32* [[TMP2]])
148344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
148354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD1XN]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
148364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x2x3_t* [[RETVAL]] to i8*
148374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
148384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
148394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x2x3_t, %struct.int32x2x3_t* [[RETVAL]], align 8
148404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x3_t [[TMP6]]
14841dd12780e86575795fa912529a911b01e2abc4677Hao Liuint32x2x3_t test_vld1_s32_x3(int32_t const *a) {
14842dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s32_x3(a);
14843dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14844dd12780e86575795fa912529a911b01e2abc4677Hao Liu
148454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x1x3_t @test_vld1_s64_x3(i64* %a) #0 {
148464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x3_t, align 8
148474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x3_t, align 8
148484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
148494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
148504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
148514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64* [[TMP2]])
148524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
148534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
148544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x1x3_t* [[RETVAL]] to i8*
148554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
148564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
148574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x1x3_t, %struct.int64x1x3_t* [[RETVAL]], align 8
148584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x1x3_t [[TMP6]]
14859dd12780e86575795fa912529a911b01e2abc4677Hao Liuint64x1x3_t test_vld1_s64_x3(int64_t const *a) {
14860dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s64_x3(a);
14861dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14862dd12780e86575795fa912529a911b01e2abc4677Hao Liu
148634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x4x3_t @test_vld1_f16_x3(half* %a) #0 {
148644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x3_t, align 8
148654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x3_t, align 8
148664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
148674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
148684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
148694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16* [[TMP2]])
148704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
148714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
148724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x4x3_t* [[RETVAL]] to i8*
148734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
148744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
148754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x4x3_t, %struct.float16x4x3_t* [[RETVAL]], align 8
148764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x4x3_t [[TMP6]]
14877dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat16x4x3_t test_vld1_f16_x3(float16_t const *a) {
14878dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f16_x3(a);
14879dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14880dd12780e86575795fa912529a911b01e2abc4677Hao Liu
148814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x3_t @test_vld1_f32_x3(float* %a) #0 {
148824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x3_t, align 8
148834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x3_t, align 8
148844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
148854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
148864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to float*
148874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x3.v2f32.p0f32(float* [[TMP2]])
148884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x float>, <2 x float>, <2 x float> }*
148894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x float>, <2 x float>, <2 x float> } [[VLD1XN]], { <2 x float>, <2 x float>, <2 x float> }* [[TMP3]]
148904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x2x3_t* [[RETVAL]] to i8*
148914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
148924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
148934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x2x3_t, %struct.float32x2x3_t* [[RETVAL]], align 8
148944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x3_t [[TMP6]]
14895dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat32x2x3_t test_vld1_f32_x3(float32_t const *a) {
14896dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f32_x3(a);
14897dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14898dd12780e86575795fa912529a911b01e2abc4677Hao Liu
148994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x1x3_t @test_vld1_f64_x3(double* %a) #0 {
149004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x3_t, align 8
149014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x3_t, align 8
149024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
149034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
149044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
149054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x3.v1f64.p0f64(double* [[TMP2]])
149064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double> }*
149074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x double>, <1 x double>, <1 x double> } [[VLD1XN]], { <1 x double>, <1 x double>, <1 x double> }* [[TMP3]]
149084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x3_t* [[RETVAL]] to i8*
149094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
149104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
149114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x3_t, %struct.float64x1x3_t* [[RETVAL]], align 8
149124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x1x3_t [[TMP6]]
14913dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat64x1x3_t test_vld1_f64_x3(float64_t const *a) {
14914dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f64_x3(a);
14915dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14916dd12780e86575795fa912529a911b01e2abc4677Hao Liu
149174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x3_t @test_vld1_p8_x3(i8* %a) #0 {
149184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x3_t, align 8
149194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x3_t, align 8
149204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
149214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8* %a)
149224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
149234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP1]]
149244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x8x3_t* [[RETVAL]] to i8*
149254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
149264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 24, i32 8, i1 false)
149274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[RETVAL]], align 8
149284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x3_t [[TMP4]]
14929dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly8x8x3_t test_vld1_p8_x3(poly8_t const *a) {
14930dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p8_x3(a);
14931dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14932dd12780e86575795fa912529a911b01e2abc4677Hao Liu
149334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x3_t @test_vld1_p16_x3(i16* %a) #0 {
149344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x3_t, align 8
149354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x3_t, align 8
149364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
149374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
149384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
149394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16* [[TMP2]])
149404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
149414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
149424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x4x3_t* [[RETVAL]] to i8*
149434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
149444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
149454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[RETVAL]], align 8
149464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x3_t [[TMP6]]
14947dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly16x4x3_t test_vld1_p16_x3(poly16_t const *a) {
14948dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p16_x3(a);
14949dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14950dd12780e86575795fa912529a911b01e2abc4677Hao Liu
149514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly64x1x3_t @test_vld1_p64_x3(i64* %a) #0 {
149524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x3_t, align 8
149534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x3_t, align 8
149544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
149554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
149564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
149574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64* [[TMP2]])
149584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
149594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
149604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x1x3_t* [[RETVAL]] to i8*
149614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
149624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 24, i32 8, i1 false)
149634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[RETVAL]], align 8
149644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly64x1x3_t [[TMP6]]
14965dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly64x1x3_t test_vld1_p64_x3(poly64_t const *a) {
14966dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p64_x3(a);
14967dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14968dd12780e86575795fa912529a911b01e2abc4677Hao Liu
149694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x16x4_t @test_vld1q_u8_x4(i8* %a) #0 {
149704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x4_t, align 16
149714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x4_t, align 16
149724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
149734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8* %a)
149744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
149754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP1]]
149764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x16x4_t* [[RETVAL]] to i8*
149774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
149784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 64, i32 16, i1 false)
149794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[RETVAL]], align 16
149804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x16x4_t [[TMP4]]
14981dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint8x16x4_t test_vld1q_u8_x4(uint8_t const *a) {
14982dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u8_x4(a);
14983dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
14984dd12780e86575795fa912529a911b01e2abc4677Hao Liu
149854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x8x4_t @test_vld1q_u16_x4(i16* %a) #0 {
149864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x4_t, align 16
149874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x4_t, align 16
149884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
149894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
149904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
149914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16* [[TMP2]])
149924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
149934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
149944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x8x4_t* [[RETVAL]] to i8*
149954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
149964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
149974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[RETVAL]], align 16
149984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x8x4_t [[TMP6]]
14999dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint16x8x4_t test_vld1q_u16_x4(uint16_t const *a) {
15000dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u16_x4(a);
15001dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15002dd12780e86575795fa912529a911b01e2abc4677Hao Liu
150034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x4x4_t @test_vld1q_u32_x4(i32* %a) #0 {
150044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x4_t, align 16
150054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x4_t, align 16
150064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
150074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
150084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
150094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x4.v4i32.p0i32(i32* [[TMP2]])
150104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
150114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD1XN]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
150124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x4x4_t* [[RETVAL]] to i8*
150134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
150144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
150154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[RETVAL]], align 16
150164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x4x4_t [[TMP6]]
15017dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint32x4x4_t test_vld1q_u32_x4(uint32_t const *a) {
15018dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u32_x4(a);
15019dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15020dd12780e86575795fa912529a911b01e2abc4677Hao Liu
150214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x2x4_t @test_vld1q_u64_x4(i64* %a) #0 {
150224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x4_t, align 16
150234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x4_t, align 16
150244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
150254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
150264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
150274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64* [[TMP2]])
150284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
150294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
150304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x4_t* [[RETVAL]] to i8*
150314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
150324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
150334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[RETVAL]], align 16
150344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x2x4_t [[TMP6]]
15035dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint64x2x4_t test_vld1q_u64_x4(uint64_t const *a) {
15036dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_u64_x4(a);
15037dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15038dd12780e86575795fa912529a911b01e2abc4677Hao Liu
150394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x16x4_t @test_vld1q_s8_x4(i8* %a) #0 {
150404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x4_t, align 16
150414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x4_t, align 16
150424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
150434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8* %a)
150444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
150454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP1]]
150464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x16x4_t* [[RETVAL]] to i8*
150474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
150484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 64, i32 16, i1 false)
150494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.int8x16x4_t, %struct.int8x16x4_t* [[RETVAL]], align 16
150504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x16x4_t [[TMP4]]
15051dd12780e86575795fa912529a911b01e2abc4677Hao Liuint8x16x4_t test_vld1q_s8_x4(int8_t const *a) {
15052dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s8_x4(a);
15053dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15054dd12780e86575795fa912529a911b01e2abc4677Hao Liu
150554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x8x4_t @test_vld1q_s16_x4(i16* %a) #0 {
150564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x4_t, align 16
150574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x4_t, align 16
150584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
150594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
150604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
150614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16* [[TMP2]])
150624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
150634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
150644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x8x4_t* [[RETVAL]] to i8*
150654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
150664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
150674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x8x4_t, %struct.int16x8x4_t* [[RETVAL]], align 16
150684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x8x4_t [[TMP6]]
15069dd12780e86575795fa912529a911b01e2abc4677Hao Liuint16x8x4_t test_vld1q_s16_x4(int16_t const *a) {
15070dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s16_x4(a);
15071dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15072dd12780e86575795fa912529a911b01e2abc4677Hao Liu
150734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x4x4_t @test_vld1q_s32_x4(i32* %a) #0 {
150744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x4_t, align 16
150754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x4_t, align 16
150764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
150774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
150784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
150794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x4.v4i32.p0i32(i32* [[TMP2]])
150804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
150814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD1XN]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP3]]
150824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x4x4_t* [[RETVAL]] to i8*
150834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
150844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
150854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x4x4_t, %struct.int32x4x4_t* [[RETVAL]], align 16
150864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x4x4_t [[TMP6]]
15087dd12780e86575795fa912529a911b01e2abc4677Hao Liuint32x4x4_t test_vld1q_s32_x4(int32_t const *a) {
15088dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s32_x4(a);
15089dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15090dd12780e86575795fa912529a911b01e2abc4677Hao Liu
150914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x2x4_t @test_vld1q_s64_x4(i64* %a) #0 {
150924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x4_t, align 16
150934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x4_t, align 16
150944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
150954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
150964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
150974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64* [[TMP2]])
150984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
150994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
151004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x4_t* [[RETVAL]] to i8*
151014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
151024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
151034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x4_t, %struct.int64x2x4_t* [[RETVAL]], align 16
151044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x2x4_t [[TMP6]]
15105dd12780e86575795fa912529a911b01e2abc4677Hao Liuint64x2x4_t test_vld1q_s64_x4(int64_t const *a) {
15106dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_s64_x4(a);
15107dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15108dd12780e86575795fa912529a911b01e2abc4677Hao Liu
151094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x8x4_t @test_vld1q_f16_x4(half* %a) #0 {
151104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x4_t, align 16
151114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x4_t, align 16
151124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
151134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
151144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
151154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16* [[TMP2]])
151164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
151174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
151184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x8x4_t* [[RETVAL]] to i8*
151194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
151204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
151214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x8x4_t, %struct.float16x8x4_t* [[RETVAL]], align 16
151224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x8x4_t [[TMP6]]
15123dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat16x8x4_t test_vld1q_f16_x4(float16_t const *a) {
15124dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f16_x4(a);
15125dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15126dd12780e86575795fa912529a911b01e2abc4677Hao Liu
151274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x4x4_t @test_vld1q_f32_x4(float* %a) #0 {
151284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x4_t, align 16
151294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x4_t, align 16
151304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
151314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
151324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to float*
151334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x4.v4f32.p0f32(float* [[TMP2]])
151344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x float>, <4 x float>, <4 x float>, <4 x float> }*
151354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x float>, <4 x float>, <4 x float>, <4 x float> } [[VLD1XN]], { <4 x float>, <4 x float>, <4 x float>, <4 x float> }* [[TMP3]]
151364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x4x4_t* [[RETVAL]] to i8*
151374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
151384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
151394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x4x4_t, %struct.float32x4x4_t* [[RETVAL]], align 16
151404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x4x4_t [[TMP6]]
15141dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat32x4x4_t test_vld1q_f32_x4(float32_t const *a) {
15142dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f32_x4(a);
15143dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15144dd12780e86575795fa912529a911b01e2abc4677Hao Liu
151454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x2x4_t @test_vld1q_f64_x4(double* %a) #0 {
151464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x4_t, align 16
151474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x4_t, align 16
151484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
151494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
151504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
151514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x4.v2f64.p0f64(double* [[TMP2]])
151524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double>, <2 x double> }*
151534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x double>, <2 x double>, <2 x double>, <2 x double> } [[VLD1XN]], { <2 x double>, <2 x double>, <2 x double>, <2 x double> }* [[TMP3]]
151544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x4_t* [[RETVAL]] to i8*
151554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
151564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
151574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x4_t, %struct.float64x2x4_t* [[RETVAL]], align 16
151584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x2x4_t [[TMP6]]
15159dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat64x2x4_t test_vld1q_f64_x4(float64_t const *a) {
15160dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_f64_x4(a);
15161dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15162dd12780e86575795fa912529a911b01e2abc4677Hao Liu
151634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x16x4_t @test_vld1q_p8_x4(i8* %a) #0 {
151644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x4_t, align 16
151654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x4_t, align 16
151664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
151674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8* %a)
151684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
151694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD1XN]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP1]]
151704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x16x4_t* [[RETVAL]] to i8*
151714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
151724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 64, i32 16, i1 false)
151734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[RETVAL]], align 16
151744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x16x4_t [[TMP4]]
15175dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly8x16x4_t test_vld1q_p8_x4(poly8_t const *a) {
15176dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p8_x4(a);
15177dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15178dd12780e86575795fa912529a911b01e2abc4677Hao Liu
151794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x8x4_t @test_vld1q_p16_x4(i16* %a) #0 {
151804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x4_t, align 16
151814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x4_t, align 16
151824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
151834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
151844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
151854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16* [[TMP2]])
151864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
151874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD1XN]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP3]]
151884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x8x4_t* [[RETVAL]] to i8*
151894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
151904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
151914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[RETVAL]], align 16
151924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x8x4_t [[TMP6]]
15193dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly16x8x4_t test_vld1q_p16_x4(poly16_t const *a) {
15194dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p16_x4(a);
15195dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15196dd12780e86575795fa912529a911b01e2abc4677Hao Liu
151974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly64x2x4_t @test_vld1q_p64_x4(i64* %a) #0 {
151984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x4_t, align 16
151994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x4_t, align 16
152004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
152014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
152024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
152034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64* [[TMP2]])
152044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
152054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD1XN]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
152064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x2x4_t* [[RETVAL]] to i8*
152074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
152084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 64, i32 16, i1 false)
152094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[RETVAL]], align 16
152104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly64x2x4_t [[TMP6]]
15211dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly64x2x4_t test_vld1q_p64_x4(poly64_t const *a) {
15212dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1q_p64_x4(a);
15213dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15214dd12780e86575795fa912529a911b01e2abc4677Hao Liu
152154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint8x8x4_t @test_vld1_u8_x4(i8* %a) #0 {
152164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x4_t, align 8
152174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x4_t, align 8
152184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
152194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8* %a)
152204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
152214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP1]]
152224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x8x4_t* [[RETVAL]] to i8*
152234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
152244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 32, i32 8, i1 false)
152254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[RETVAL]], align 8
152264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint8x8x4_t [[TMP4]]
15227dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint8x8x4_t test_vld1_u8_x4(uint8_t const *a) {
15228dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u8_x4(a);
15229dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15230dd12780e86575795fa912529a911b01e2abc4677Hao Liu
152314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint16x4x4_t @test_vld1_u16_x4(i16* %a) #0 {
152324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x4_t, align 8
152334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x4_t, align 8
152344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
152354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
152364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
152374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16* [[TMP2]])
152384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
152394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
152404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint16x4x4_t* [[RETVAL]] to i8*
152414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
152424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
152434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[RETVAL]], align 8
152444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint16x4x4_t [[TMP6]]
15245dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint16x4x4_t test_vld1_u16_x4(uint16_t const *a) {
15246dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u16_x4(a);
15247dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15248dd12780e86575795fa912529a911b01e2abc4677Hao Liu
152494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint32x2x4_t @test_vld1_u32_x4(i32* %a) #0 {
152504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x4_t, align 8
152514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x4_t, align 8
152524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
152534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
152544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
152554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x4.v2i32.p0i32(i32* [[TMP2]])
152564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
152574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD1XN]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
152584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint32x2x4_t* [[RETVAL]] to i8*
152594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
152604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
152614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[RETVAL]], align 8
152624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint32x2x4_t [[TMP6]]
15263dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint32x2x4_t test_vld1_u32_x4(uint32_t const *a) {
15264dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u32_x4(a);
15265dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15266dd12780e86575795fa912529a911b01e2abc4677Hao Liu
152674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.uint64x1x4_t @test_vld1_u64_x4(i64* %a) #0 {
152684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x4_t, align 8
152694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x4_t, align 8
152704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
152714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
152724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
152734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64* [[TMP2]])
152744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
152754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
152764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x1x4_t* [[RETVAL]] to i8*
152774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
152784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
152794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[RETVAL]], align 8
152804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.uint64x1x4_t [[TMP6]]
15281dd12780e86575795fa912529a911b01e2abc4677Hao Liuuint64x1x4_t test_vld1_u64_x4(uint64_t const *a) {
15282dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_u64_x4(a);
15283dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15284dd12780e86575795fa912529a911b01e2abc4677Hao Liu
152854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int8x8x4_t @test_vld1_s8_x4(i8* %a) #0 {
152864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x4_t, align 8
152874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x4_t, align 8
152884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
152894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8* %a)
152904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
152914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP1]]
152924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x8x4_t* [[RETVAL]] to i8*
152934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
152944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 32, i32 8, i1 false)
152954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.int8x8x4_t, %struct.int8x8x4_t* [[RETVAL]], align 8
152964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int8x8x4_t [[TMP4]]
15297dd12780e86575795fa912529a911b01e2abc4677Hao Liuint8x8x4_t test_vld1_s8_x4(int8_t const *a) {
15298dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s8_x4(a);
15299dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15300dd12780e86575795fa912529a911b01e2abc4677Hao Liu
153014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int16x4x4_t @test_vld1_s16_x4(i16* %a) #0 {
153024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x4_t, align 8
153034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x4_t, align 8
153044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
153054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
153064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
153074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16* [[TMP2]])
153084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
153094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
153104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int16x4x4_t* [[RETVAL]] to i8*
153114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
153124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
153134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int16x4x4_t, %struct.int16x4x4_t* [[RETVAL]], align 8
153144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int16x4x4_t [[TMP6]]
15315dd12780e86575795fa912529a911b01e2abc4677Hao Liuint16x4x4_t test_vld1_s16_x4(int16_t const *a) {
15316dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s16_x4(a);
15317dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15318dd12780e86575795fa912529a911b01e2abc4677Hao Liu
153194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int32x2x4_t @test_vld1_s32_x4(i32* %a) #0 {
153204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x4_t, align 8
153214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x4_t, align 8
153224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
153234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i32* %a to i8*
153244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i32*
153254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x4.v2i32.p0i32(i32* [[TMP2]])
153264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
153274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD1XN]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP3]]
153284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int32x2x4_t* [[RETVAL]] to i8*
153294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
153304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
153314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int32x2x4_t, %struct.int32x2x4_t* [[RETVAL]], align 8
153324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int32x2x4_t [[TMP6]]
15333dd12780e86575795fa912529a911b01e2abc4677Hao Liuint32x2x4_t test_vld1_s32_x4(int32_t const *a) {
15334dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s32_x4(a);
15335dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15336dd12780e86575795fa912529a911b01e2abc4677Hao Liu
153374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.int64x1x4_t @test_vld1_s64_x4(i64* %a) #0 {
153384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x4_t, align 8
153394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x4_t, align 8
153404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
153414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
153424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
153434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64* [[TMP2]])
153444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
153454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
153464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x1x4_t* [[RETVAL]] to i8*
153474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
153484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
153494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.int64x1x4_t, %struct.int64x1x4_t* [[RETVAL]], align 8
153504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.int64x1x4_t [[TMP6]]
15351dd12780e86575795fa912529a911b01e2abc4677Hao Liuint64x1x4_t test_vld1_s64_x4(int64_t const *a) {
15352dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_s64_x4(a);
15353dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15354dd12780e86575795fa912529a911b01e2abc4677Hao Liu
153554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float16x4x4_t @test_vld1_f16_x4(half* %a) #0 {
153564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x4_t, align 8
153574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x4_t, align 8
153584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
153594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast half* %a to i8*
153604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
153614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16* [[TMP2]])
153624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
153634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
153644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float16x4x4_t* [[RETVAL]] to i8*
153654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
153664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
153674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float16x4x4_t, %struct.float16x4x4_t* [[RETVAL]], align 8
153684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float16x4x4_t [[TMP6]]
15369dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat16x4x4_t test_vld1_f16_x4(float16_t const *a) {
15370dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f16_x4(a);
15371dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15372dd12780e86575795fa912529a911b01e2abc4677Hao Liu
153734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float32x2x4_t @test_vld1_f32_x4(float* %a) #0 {
153744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x4_t, align 8
153754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x4_t, align 8
153764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
153774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast float* %a to i8*
153784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to float*
153794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x4.v2f32.p0f32(float* [[TMP2]])
153804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x float>, <2 x float>, <2 x float>, <2 x float> }*
153814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <2 x float>, <2 x float>, <2 x float>, <2 x float> } [[VLD1XN]], { <2 x float>, <2 x float>, <2 x float>, <2 x float> }* [[TMP3]]
153824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float32x2x4_t* [[RETVAL]] to i8*
153834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
153844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
153854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float32x2x4_t, %struct.float32x2x4_t* [[RETVAL]], align 8
153864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float32x2x4_t [[TMP6]]
15387dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat32x2x4_t test_vld1_f32_x4(float32_t const *a) {
15388dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f32_x4(a);
15389dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15390dd12780e86575795fa912529a911b01e2abc4677Hao Liu
153914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.float64x1x4_t @test_vld1_f64_x4(double* %a) #0 {
153924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x4_t, align 8
153934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x4_t, align 8
153944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
153954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
153964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
153974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x4.v1f64.p0f64(double* [[TMP2]])
153984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double>, <1 x double> }*
153994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x double>, <1 x double>, <1 x double>, <1 x double> } [[VLD1XN]], { <1 x double>, <1 x double>, <1 x double>, <1 x double> }* [[TMP3]]
154004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x4_t* [[RETVAL]] to i8*
154014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
154024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
154034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x4_t, %struct.float64x1x4_t* [[RETVAL]], align 8
154044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.float64x1x4_t [[TMP6]]
15405dd12780e86575795fa912529a911b01e2abc4677Hao Liufloat64x1x4_t test_vld1_f64_x4(float64_t const *a) {
15406dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_f64_x4(a);
15407dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15408dd12780e86575795fa912529a911b01e2abc4677Hao Liu
154094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly8x8x4_t @test_vld1_p8_x4(i8* %a) #0 {
154104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x4_t, align 8
154114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x4_t, align 8
154124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
154134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8* %a)
154144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
154154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD1XN]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP1]]
154164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x8x4_t* [[RETVAL]] to i8*
154174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
154184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP2]], i8* [[TMP3]], i64 32, i32 8, i1 false)
154194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[RETVAL]], align 8
154204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly8x8x4_t [[TMP4]]
15421dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly8x8x4_t test_vld1_p8_x4(poly8_t const *a) {
15422dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p8_x4(a);
15423dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15424dd12780e86575795fa912529a911b01e2abc4677Hao Liu
154254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly16x4x4_t @test_vld1_p16_x4(i16* %a) #0 {
154264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x4_t, align 8
154274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x4_t, align 8
154284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
154294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i16* %a to i8*
154304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i16*
154314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16* [[TMP2]])
154324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
154334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD1XN]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP3]]
154344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly16x4x4_t* [[RETVAL]] to i8*
154354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
154364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
154374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[RETVAL]], align 8
154384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly16x4x4_t [[TMP6]]
15439dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly16x4x4_t test_vld1_p16_x4(poly16_t const *a) {
15440dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p16_x4(a);
15441dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15442dd12780e86575795fa912529a911b01e2abc4677Hao Liu
154434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define %struct.poly64x1x4_t @test_vld1_p64_x4(i64* %a) #0 {
154444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x4_t, align 8
154454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x4_t, align 8
154464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
154474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
154484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
154494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VLD1XN:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64* [[TMP2]])
154504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
154514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD1XN]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
154524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x1x4_t* [[RETVAL]] to i8*
154534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
154544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP4]], i8* [[TMP5]], i64 32, i32 8, i1 false)
154554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = load %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[RETVAL]], align 8
154564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret %struct.poly64x1x4_t [[TMP6]]
15457dd12780e86575795fa912529a911b01e2abc4677Hao Liupoly64x1x4_t test_vld1_p64_x4(poly64_t const *a) {
15458dd12780e86575795fa912529a911b01e2abc4677Hao Liu  return vld1_p64_x4(a);
15459dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15460dd12780e86575795fa912529a911b01e2abc4677Hao Liu
154614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u8_x2(i8* %a, [2 x <16 x i8>] %b.coerce) #0 {
154624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x2_t, align 16
154634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x2_t, align 16
154644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[B]], i32 0, i32 0
154654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
154664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__S1]] to i8*
154674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x2_t* [[B]] to i8*
154684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
154694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
154704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
154714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
154724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
154734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
154744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
154754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i8* %a)
154764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15477dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u8_x2(uint8_t *a, uint8x16x2_t b) {
15478dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u8_x2(a, b);
15479dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15480dd12780e86575795fa912529a911b01e2abc4677Hao Liu
154814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u16_x2(i16* %a, [2 x <8 x i16>] %b.coerce) #0 {
154824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x2_t, align 16
154834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x2_t, align 16
154844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[B]], i32 0, i32 0
154854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
154864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__S1]] to i8*
154874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x2_t* [[B]] to i8*
154884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
154894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
154904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
154914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
154924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
154934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
154944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
154954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
154964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
154974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
154984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
154994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
155004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
155014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v8i16.p0i16(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i16* [[TMP9]])
155024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15503dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u16_x2(uint16_t *a, uint16x8x2_t b) {
15504dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u16_x2(a, b);
15505dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15506dd12780e86575795fa912529a911b01e2abc4677Hao Liu
155074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u32_x2(i32* %a, [2 x <4 x i32>] %b.coerce) #0 {
155084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x2_t, align 16
155094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x2_t, align 16
155104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[B]], i32 0, i32 0
155114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
155124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__S1]] to i8*
155134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x2_t* [[B]] to i8*
155144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
155154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
155164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
155174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
155184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
155194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
155204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
155214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
155224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
155234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
155244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
155254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
155264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i32*
155274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v4i32.p0i32(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i32* [[TMP9]])
155284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15529dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u32_x2(uint32_t *a, uint32x4x2_t b) {
15530dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u32_x2(a, b);
15531dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15532dd12780e86575795fa912529a911b01e2abc4677Hao Liu
155334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u64_x2(i64* %a, [2 x <2 x i64>] %b.coerce) #0 {
155344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x2_t, align 16
155354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x2_t, align 16
155364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[B]], i32 0, i32 0
155374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
155384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__S1]] to i8*
155394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x2_t* [[B]] to i8*
155404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
155414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
155424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
155434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
155444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
155454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
155464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
155474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
155484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
155494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
155504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
155514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
155524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i64*
155534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v2i64.p0i64(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64* [[TMP9]])
155544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15555dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u64_x2(uint64_t *a, uint64x2x2_t b) {
15556dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u64_x2(a, b);
15557dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15558dd12780e86575795fa912529a911b01e2abc4677Hao Liu
155594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s8_x2(i8* %a, [2 x <16 x i8>] %b.coerce) #0 {
155604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x16x2_t, align 16
155614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x2_t, align 16
155624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[B]], i32 0, i32 0
155634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
155644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__S1]] to i8*
155654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x2_t* [[B]] to i8*
155664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
155674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
155684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
155694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
155704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
155714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
155724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
155734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i8* %a)
155744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15575dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s8_x2(int8_t *a, int8x16x2_t b) {
15576dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s8_x2(a, b);
15577dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15578dd12780e86575795fa912529a911b01e2abc4677Hao Liu
155794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s16_x2(i16* %a, [2 x <8 x i16>] %b.coerce) #0 {
155804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x8x2_t, align 16
155814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x2_t, align 16
155824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[B]], i32 0, i32 0
155834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
155844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__S1]] to i8*
155854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x2_t* [[B]] to i8*
155864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
155874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
155884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
155894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
155904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
155914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
155924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
155934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
155944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
155954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
155964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
155974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
155984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
155994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v8i16.p0i16(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i16* [[TMP9]])
156004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15601dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s16_x2(int16_t *a, int16x8x2_t b) {
15602dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s16_x2(a, b);
15603dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15604dd12780e86575795fa912529a911b01e2abc4677Hao Liu
156054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s32_x2(i32* %a, [2 x <4 x i32>] %b.coerce) #0 {
156064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x4x2_t, align 16
156074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x2_t, align 16
156084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[B]], i32 0, i32 0
156094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
156104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__S1]] to i8*
156114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x2_t* [[B]] to i8*
156124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
156134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
156144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
156154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
156164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
156174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
156184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
156194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
156204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
156214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
156224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
156234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
156244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i32*
156254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v4i32.p0i32(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i32* [[TMP9]])
156264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15627dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s32_x2(int32_t *a, int32x4x2_t b) {
15628dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s32_x2(a, b);
15629dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15630dd12780e86575795fa912529a911b01e2abc4677Hao Liu
156314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s64_x2(i64* %a, [2 x <2 x i64>] %b.coerce) #0 {
156324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x2x2_t, align 16
156334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x2_t, align 16
156344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[B]], i32 0, i32 0
156354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
156364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__S1]] to i8*
156374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x2_t* [[B]] to i8*
156384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
156394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
156404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
156414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
156424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
156434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
156444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
156454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
156464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
156474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
156484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
156494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
156504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i64*
156514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v2i64.p0i64(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64* [[TMP9]])
156524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15653dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s64_x2(int64_t *a, int64x2x2_t b) {
15654dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s64_x2(a, b);
15655dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15656dd12780e86575795fa912529a911b01e2abc4677Hao Liu
156574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f16_x2(half* %a, [2 x <8 x half>] %b.coerce) #0 {
156584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x8x2_t, align 16
156594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x2_t, align 16
156604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[B]], i32 0, i32 0
156614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x half>] [[B]].coerce, [2 x <8 x half>]* [[COERCE_DIVE]], align 16
156624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__S1]] to i8*
156634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x2_t* [[B]] to i8*
156644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
156654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
156664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
156674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL]], i64 0, i64 0
156684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
156694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
156704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
156714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL1]], i64 0, i64 1
156724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
156734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
156744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
156754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
156764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
156774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v8i16.p0i16(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i16* [[TMP9]])
156784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15679dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f16_x2(float16_t *a, float16x8x2_t b) {
15680dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f16_x2(a, b);
15681dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15682dd12780e86575795fa912529a911b01e2abc4677Hao Liu
156834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f32_x2(float* %a, [2 x <4 x float>] %b.coerce) #0 {
156844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x4x2_t, align 16
156854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x2_t, align 16
156864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[B]], i32 0, i32 0
156874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x float>] [[B]].coerce, [2 x <4 x float>]* [[COERCE_DIVE]], align 16
156884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__S1]] to i8*
156894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x2_t* [[B]] to i8*
156904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
156914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
156924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
156934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL]], i64 0, i64 0
156944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
156954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
156964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
156974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL1]], i64 0, i64 1
156984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
156994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
157004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
157014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
157024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to float*
157034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v4f32.p0f32(<4 x float> [[TMP7]], <4 x float> [[TMP8]], float* [[TMP9]])
157044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15705dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f32_x2(float32_t *a, float32x4x2_t b) {
15706dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f32_x2(a, b);
15707dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15708dd12780e86575795fa912529a911b01e2abc4677Hao Liu
157094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f64_x2(double* %a, [2 x <2 x double>] %b.coerce) #0 {
157104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x2x2_t, align 16
157114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x2_t, align 16
157124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[B]], i32 0, i32 0
157134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x double>] [[B]].coerce, [2 x <2 x double>]* [[COERCE_DIVE]], align 16
157144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__S1]] to i8*
157154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x2_t* [[B]] to i8*
157164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
157174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
157184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
157194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL]], i64 0, i64 0
157204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
157214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
157224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
157234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL1]], i64 0, i64 1
157244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
157254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
157264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
157274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
157284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to double*
157294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v2f64.p0f64(<2 x double> [[TMP7]], <2 x double> [[TMP8]], double* [[TMP9]])
157304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15731dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f64_x2(float64_t *a, float64x2x2_t b) {
15732dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f64_x2(a, b);
15733dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15734dd12780e86575795fa912529a911b01e2abc4677Hao Liu
157354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p8_x2(i8* %a, [2 x <16 x i8>] %b.coerce) #0 {
157364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x2_t, align 16
157374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x2_t, align 16
157384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[B]], i32 0, i32 0
157394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
157404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__S1]] to i8*
157414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x2_t* [[B]] to i8*
157424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
157434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
157444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
157454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
157464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
157474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
157484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
157494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i8* %a)
157504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15751dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p8_x2(poly8_t *a, poly8x16x2_t b) {
15752dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p8_x2(a, b);
15753dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15754dd12780e86575795fa912529a911b01e2abc4677Hao Liu
157554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p16_x2(i16* %a, [2 x <8 x i16>] %b.coerce) #0 {
157564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x2_t, align 16
157574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x2_t, align 16
157584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[B]], i32 0, i32 0
157594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
157604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__S1]] to i8*
157614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x2_t* [[B]] to i8*
157624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
157634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
157644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
157654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
157664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
157674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
157684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
157694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
157704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
157714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
157724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
157734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
157744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
157754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v8i16.p0i16(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i16* [[TMP9]])
157764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15777dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p16_x2(poly16_t *a, poly16x8x2_t b) {
15778dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p16_x2(a, b);
15779dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15780dd12780e86575795fa912529a911b01e2abc4677Hao Liu
157814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p64_x2(i64* %a, [2 x <2 x i64>] %b.coerce) #0 {
157824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x2_t, align 16
157834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x2_t, align 16
157844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[B]], i32 0, i32 0
157854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
157864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__S1]] to i8*
157874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x2_t* [[B]] to i8*
157884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 16, i1 false)
157894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
157904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
157914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
157924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
157934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
157944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
157954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
157964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
157974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
157984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
157994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
158004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i64*
158014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v2i64.p0i64(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64* [[TMP9]])
158024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15803dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p64_x2(poly64_t *a, poly64x2x2_t b) {
15804dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p64_x2(a, b);
15805dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15806dd12780e86575795fa912529a911b01e2abc4677Hao Liu
158074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u8_x2(i8* %a, [2 x <8 x i8>] %b.coerce) #0 {
158084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x2_t, align 8
158094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x2_t, align 8
158104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[B]], i32 0, i32 0
158114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
158124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__S1]] to i8*
158134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x2_t* [[B]] to i8*
158144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
158154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
158164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
158174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
158184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
158194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
158204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
158214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i8* %a)
158224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15823dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u8_x2(uint8_t *a, uint8x8x2_t b) {
15824dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u8_x2(a, b);
15825dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15826dd12780e86575795fa912529a911b01e2abc4677Hao Liu
158274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u16_x2(i16* %a, [2 x <4 x i16>] %b.coerce) #0 {
158284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x2_t, align 8
158294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x2_t, align 8
158304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[B]], i32 0, i32 0
158314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
158324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__S1]] to i8*
158334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x2_t* [[B]] to i8*
158344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
158354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
158364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
158374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
158384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
158394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
158404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
158414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
158424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
158434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
158444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
158454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
158464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
158474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v4i16.p0i16(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i16* [[TMP9]])
158484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15849dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u16_x2(uint16_t *a, uint16x4x2_t b) {
15850dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u16_x2(a, b);
15851dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15852dd12780e86575795fa912529a911b01e2abc4677Hao Liu
158534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u32_x2(i32* %a, [2 x <2 x i32>] %b.coerce) #0 {
158544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x2_t, align 8
158554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x2_t, align 8
158564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[B]], i32 0, i32 0
158574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
158584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__S1]] to i8*
158594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x2_t* [[B]] to i8*
158604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
158614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
158624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
158634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
158644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
158654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
158664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
158674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
158684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
158694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
158704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
158714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
158724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i32*
158734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v2i32.p0i32(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i32* [[TMP9]])
158744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15875dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u32_x2(uint32_t *a, uint32x2x2_t b) {
15876dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u32_x2(a, b);
15877dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15878dd12780e86575795fa912529a911b01e2abc4677Hao Liu
158794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u64_x2(i64* %a, [2 x <1 x i64>] %b.coerce) #0 {
158804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x2_t, align 8
158814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x2_t, align 8
158824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[B]], i32 0, i32 0
158834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
158844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__S1]] to i8*
158854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x2_t* [[B]] to i8*
158864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
158874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
158884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
158894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
158904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
158914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
158924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
158934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
158944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
158954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
158964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
158974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
158984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i64*
158994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v1i64.p0i64(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64* [[TMP9]])
159004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15901dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u64_x2(uint64_t *a, uint64x1x2_t b) {
15902dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u64_x2(a, b);
15903dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15904dd12780e86575795fa912529a911b01e2abc4677Hao Liu
159054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s8_x2(i8* %a, [2 x <8 x i8>] %b.coerce) #0 {
159064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x8x2_t, align 8
159074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x2_t, align 8
159084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[B]], i32 0, i32 0
159094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
159104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__S1]] to i8*
159114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x2_t* [[B]] to i8*
159124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
159134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
159144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
159154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
159164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
159174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
159184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
159194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i8* %a)
159204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15921dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s8_x2(int8_t *a, int8x8x2_t b) {
15922dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s8_x2(a, b);
15923dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15924dd12780e86575795fa912529a911b01e2abc4677Hao Liu
159254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s16_x2(i16* %a, [2 x <4 x i16>] %b.coerce) #0 {
159264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x4x2_t, align 8
159274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x2_t, align 8
159284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[B]], i32 0, i32 0
159294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
159304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__S1]] to i8*
159314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x2_t* [[B]] to i8*
159324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
159334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
159344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
159354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
159364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
159374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
159384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
159394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
159404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
159414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
159424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
159434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
159444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
159454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v4i16.p0i16(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i16* [[TMP9]])
159464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15947dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s16_x2(int16_t *a, int16x4x2_t b) {
15948dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s16_x2(a, b);
15949dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15950dd12780e86575795fa912529a911b01e2abc4677Hao Liu
159514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s32_x2(i32* %a, [2 x <2 x i32>] %b.coerce) #0 {
159524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x2x2_t, align 8
159534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x2_t, align 8
159544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[B]], i32 0, i32 0
159554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
159564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__S1]] to i8*
159574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x2_t* [[B]] to i8*
159584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
159594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
159604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
159614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
159624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
159634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
159644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
159654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
159664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
159674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
159684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
159694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
159704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i32*
159714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v2i32.p0i32(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i32* [[TMP9]])
159724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15973dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s32_x2(int32_t *a, int32x2x2_t b) {
15974dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s32_x2(a, b);
15975dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
15976dd12780e86575795fa912529a911b01e2abc4677Hao Liu
159774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s64_x2(i64* %a, [2 x <1 x i64>] %b.coerce) #0 {
159784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x1x2_t, align 8
159794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x2_t, align 8
159804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[B]], i32 0, i32 0
159814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
159824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__S1]] to i8*
159834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x2_t* [[B]] to i8*
159844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
159854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
159864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
159874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
159884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
159894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
159904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
159914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
159924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
159934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
159944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
159954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
159964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i64*
159974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v1i64.p0i64(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64* [[TMP9]])
159984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
15999dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s64_x2(int64_t *a, int64x1x2_t b) {
16000dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s64_x2(a, b);
16001dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16002dd12780e86575795fa912529a911b01e2abc4677Hao Liu
160034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f16_x2(half* %a, [2 x <4 x half>] %b.coerce) #0 {
160044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x4x2_t, align 8
160054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x2_t, align 8
160064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[B]], i32 0, i32 0
160074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x half>] [[B]].coerce, [2 x <4 x half>]* [[COERCE_DIVE]], align 8
160084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__S1]] to i8*
160094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x2_t* [[B]] to i8*
160104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
160114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
160124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
160134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL]], i64 0, i64 0
160144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
160154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
160164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
160174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL1]], i64 0, i64 1
160184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
160194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
160204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
160214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
160224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
160234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v4i16.p0i16(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i16* [[TMP9]])
160244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16025dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f16_x2(float16_t *a, float16x4x2_t b) {
16026dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f16_x2(a, b);
16027dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16028dd12780e86575795fa912529a911b01e2abc4677Hao Liu
160294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f32_x2(float* %a, [2 x <2 x float>] %b.coerce) #0 {
160304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x2x2_t, align 8
160314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x2_t, align 8
160324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[B]], i32 0, i32 0
160334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <2 x float>] [[B]].coerce, [2 x <2 x float>]* [[COERCE_DIVE]], align 8
160344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__S1]] to i8*
160354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x2_t* [[B]] to i8*
160364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
160374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
160384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
160394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL]], i64 0, i64 0
160404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
160414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
160424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
160434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL1]], i64 0, i64 1
160444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
160454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
160464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
160474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
160484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to float*
160494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v2f32.p0f32(<2 x float> [[TMP7]], <2 x float> [[TMP8]], float* [[TMP9]])
160504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16051dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f32_x2(float32_t *a, float32x2x2_t b) {
16052dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f32_x2(a, b);
16053dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16054dd12780e86575795fa912529a911b01e2abc4677Hao Liu
160554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f64_x2(double* %a, [2 x <1 x double>] %b.coerce) #0 {
160564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x1x2_t, align 8
160574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x2_t, align 8
160584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[B]], i32 0, i32 0
160594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <1 x double>] [[B]].coerce, [2 x <1 x double>]* [[COERCE_DIVE]], align 8
160604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__S1]] to i8*
160614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x2_t* [[B]] to i8*
160624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
160634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
160644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
160654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL]], i64 0, i64 0
160664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
160674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
160684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
160694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL1]], i64 0, i64 1
160704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
160714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
160724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
160734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
160744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to double*
160754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v1f64.p0f64(<1 x double> [[TMP7]], <1 x double> [[TMP8]], double* [[TMP9]])
160764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16077dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f64_x2(float64_t *a, float64x1x2_t b) {
16078dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f64_x2(a, b);
16079dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16080dd12780e86575795fa912529a911b01e2abc4677Hao Liu
160814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p8_x2(i8* %a, [2 x <8 x i8>] %b.coerce) #0 {
160824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x2_t, align 8
160834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x2_t, align 8
160844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[B]], i32 0, i32 0
160854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
160864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__S1]] to i8*
160874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x2_t* [[B]] to i8*
160884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
160894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
160904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
160914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
160924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
160934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
160944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
160954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i8* %a)
160964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16097dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p8_x2(poly8_t *a, poly8x8x2_t b) {
16098dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p8_x2(a, b);
16099dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16100dd12780e86575795fa912529a911b01e2abc4677Hao Liu
161014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p16_x2(i16* %a, [2 x <4 x i16>] %b.coerce) #0 {
161024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x2_t, align 8
161034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x2_t, align 8
161044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[B]], i32 0, i32 0
161054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
161064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__S1]] to i8*
161074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x2_t* [[B]] to i8*
161084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
161094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
161104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
161114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
161124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
161134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
161144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
161154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
161164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
161174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
161184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
161194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
161204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i16*
161214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v4i16.p0i16(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i16* [[TMP9]])
161224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16123dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p16_x2(poly16_t *a, poly16x4x2_t b) {
16124dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p16_x2(a, b);
16125dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16126dd12780e86575795fa912529a911b01e2abc4677Hao Liu
161274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p64_x2(i64* %a, [2 x <1 x i64>] %b.coerce) #0 {
161284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x2_t, align 8
161294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x2_t, align 8
161304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[B]], i32 0, i32 0
161314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
161324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__S1]] to i8*
161334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x2_t* [[B]] to i8*
161344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 16, i32 8, i1 false)
161354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
161364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
161374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
161384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
161394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
161404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
161414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
161424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
161434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
161444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
161454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
161464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast i8* [[TMP2]] to i64*
161474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x2.v1i64.p0i64(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64* [[TMP9]])
161484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16149dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p64_x2(poly64_t *a, poly64x1x2_t b) {
16150dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p64_x2(a, b);
16151dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16152dd12780e86575795fa912529a911b01e2abc4677Hao Liu
161534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u8_x3(i8* %a, [3 x <16 x i8>] %b.coerce) #0 {
161544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x3_t, align 16
161554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x3_t, align 16
161564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[B]], i32 0, i32 0
161574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
161584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__S1]] to i8*
161594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x3_t* [[B]] to i8*
161604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
161614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
161624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
161634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
161644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
161654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
161664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
161674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
161684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
161694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
161704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i8* %a)
161714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16172dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u8_x3(uint8_t *a, uint8x16x3_t b) {
16173dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u8_x3(a, b);
16174dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16175dd12780e86575795fa912529a911b01e2abc4677Hao Liu
161764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u16_x3(i16* %a, [3 x <8 x i16>] %b.coerce) #0 {
161774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x3_t, align 16
161784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x3_t, align 16
161794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[B]], i32 0, i32 0
161804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
161814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__S1]] to i8*
161824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x3_t* [[B]] to i8*
161834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
161844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
161854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
161864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
161874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
161884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
161894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
161904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
161914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
161924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
161934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
161944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
161954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
161964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
161974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
161984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
161994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
162004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
162014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v8i16.p0i16(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i16* [[TMP12]])
162024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16203dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u16_x3(uint16_t *a, uint16x8x3_t b) {
16204dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u16_x3(a, b);
16205dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16206dd12780e86575795fa912529a911b01e2abc4677Hao Liu
162074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u32_x3(i32* %a, [3 x <4 x i32>] %b.coerce) #0 {
162084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x3_t, align 16
162094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x3_t, align 16
162104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[B]], i32 0, i32 0
162114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
162124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__S1]] to i8*
162134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x3_t* [[B]] to i8*
162144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
162154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
162164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
162174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
162184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
162194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
162204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
162214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
162224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
162234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
162244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
162254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
162264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
162274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
162284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
162294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
162304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
162314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i32*
162324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v4i32.p0i32(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i32* [[TMP12]])
162334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16234dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u32_x3(uint32_t *a, uint32x4x3_t b) {
16235dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u32_x3(a, b);
16236dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16237dd12780e86575795fa912529a911b01e2abc4677Hao Liu
162384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u64_x3(i64* %a, [3 x <2 x i64>] %b.coerce) #0 {
162394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x3_t, align 16
162404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x3_t, align 16
162414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[B]], i32 0, i32 0
162424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
162434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__S1]] to i8*
162444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x3_t* [[B]] to i8*
162454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
162464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
162474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
162484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
162494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
162504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
162514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
162524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
162534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
162544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
162554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
162564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
162574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
162584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
162594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
162604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
162614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
162624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i64*
162634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v2i64.p0i64(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64* [[TMP12]])
162644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16265dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u64_x3(uint64_t *a, uint64x2x3_t b) {
16266dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u64_x3(a, b);
16267dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16268dd12780e86575795fa912529a911b01e2abc4677Hao Liu
162694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s8_x3(i8* %a, [3 x <16 x i8>] %b.coerce) #0 {
162704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x16x3_t, align 16
162714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x3_t, align 16
162724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[B]], i32 0, i32 0
162734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
162744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__S1]] to i8*
162754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x3_t* [[B]] to i8*
162764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
162774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
162784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
162794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
162804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
162814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
162824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
162834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
162844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
162854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
162864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i8* %a)
162874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16288dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s8_x3(int8_t *a, int8x16x3_t b) {
16289dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s8_x3(a, b);
16290dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16291dd12780e86575795fa912529a911b01e2abc4677Hao Liu
162924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s16_x3(i16* %a, [3 x <8 x i16>] %b.coerce) #0 {
162934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x8x3_t, align 16
162944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x3_t, align 16
162954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[B]], i32 0, i32 0
162964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
162974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__S1]] to i8*
162984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x3_t* [[B]] to i8*
162994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
163004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
163014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
163024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
163034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
163044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
163054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
163064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
163074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
163084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
163094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
163104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
163114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
163124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
163134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
163144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
163154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
163164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
163174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v8i16.p0i16(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i16* [[TMP12]])
163184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16319dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s16_x3(int16_t *a, int16x8x3_t b) {
16320dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s16_x3(a, b);
16321dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16322dd12780e86575795fa912529a911b01e2abc4677Hao Liu
163234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s32_x3(i32* %a, [3 x <4 x i32>] %b.coerce) #0 {
163244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x4x3_t, align 16
163254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x3_t, align 16
163264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[B]], i32 0, i32 0
163274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
163284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__S1]] to i8*
163294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x3_t* [[B]] to i8*
163304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
163314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
163324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
163334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
163344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
163354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
163364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
163374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
163384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
163394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
163404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
163414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
163424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
163434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
163444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
163454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
163464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
163474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i32*
163484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v4i32.p0i32(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i32* [[TMP12]])
163494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16350dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s32_x3(int32_t *a, int32x4x3_t b) {
16351dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s32_x3(a, b);
16352dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16353dd12780e86575795fa912529a911b01e2abc4677Hao Liu
163544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s64_x3(i64* %a, [3 x <2 x i64>] %b.coerce) #0 {
163554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x2x3_t, align 16
163564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x3_t, align 16
163574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[B]], i32 0, i32 0
163584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
163594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__S1]] to i8*
163604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x3_t* [[B]] to i8*
163614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
163624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
163634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
163644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
163654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
163664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
163674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
163684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
163694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
163704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
163714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
163724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
163734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
163744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
163754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
163764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
163774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
163784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i64*
163794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v2i64.p0i64(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64* [[TMP12]])
163804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16381dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s64_x3(int64_t *a, int64x2x3_t b) {
16382dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s64_x3(a, b);
16383dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16384dd12780e86575795fa912529a911b01e2abc4677Hao Liu
163854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f16_x3(half* %a, [3 x <8 x half>] %b.coerce) #0 {
163864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x8x3_t, align 16
163874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x3_t, align 16
163884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[B]], i32 0, i32 0
163894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x half>] [[B]].coerce, [3 x <8 x half>]* [[COERCE_DIVE]], align 16
163904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__S1]] to i8*
163914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x3_t* [[B]] to i8*
163924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
163934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
163944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
163954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL]], i64 0, i64 0
163964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
163974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
163984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
163994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL1]], i64 0, i64 1
164004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
164014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
164024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
164034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL3]], i64 0, i64 2
164044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
164054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
164064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
164074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
164084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
164094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
164104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v8i16.p0i16(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i16* [[TMP12]])
164114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16412dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f16_x3(float16_t *a, float16x8x3_t b) {
16413dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f16_x3(a, b);
16414dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16415dd12780e86575795fa912529a911b01e2abc4677Hao Liu
164164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f32_x3(float* %a, [3 x <4 x float>] %b.coerce) #0 {
164174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x4x3_t, align 16
164184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x3_t, align 16
164194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[B]], i32 0, i32 0
164204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x float>] [[B]].coerce, [3 x <4 x float>]* [[COERCE_DIVE]], align 16
164214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__S1]] to i8*
164224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x3_t* [[B]] to i8*
164234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
164244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
164254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
164264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL]], i64 0, i64 0
164274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
164284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
164294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
164304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL1]], i64 0, i64 1
164314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
164324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
164334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
164344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL3]], i64 0, i64 2
164354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
164364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
164374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
164384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
164394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
164404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to float*
164414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v4f32.p0f32(<4 x float> [[TMP9]], <4 x float> [[TMP10]], <4 x float> [[TMP11]], float* [[TMP12]])
164424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16443dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f32_x3(float32_t *a, float32x4x3_t b) {
16444dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f32_x3(a, b);
16445dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16446dd12780e86575795fa912529a911b01e2abc4677Hao Liu
164474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f64_x3(double* %a, [3 x <2 x double>] %b.coerce) #0 {
164484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x2x3_t, align 16
164494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x3_t, align 16
164504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[B]], i32 0, i32 0
164514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x double>] [[B]].coerce, [3 x <2 x double>]* [[COERCE_DIVE]], align 16
164524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__S1]] to i8*
164534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x3_t* [[B]] to i8*
164544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
164554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
164564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
164574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL]], i64 0, i64 0
164584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
164594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
164604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
164614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL1]], i64 0, i64 1
164624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
164634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
164644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
164654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL3]], i64 0, i64 2
164664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
164674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
164684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
164694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
164704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
164714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to double*
164724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v2f64.p0f64(<2 x double> [[TMP9]], <2 x double> [[TMP10]], <2 x double> [[TMP11]], double* [[TMP12]])
164734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16474dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f64_x3(float64_t *a, float64x2x3_t b) {
16475dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f64_x3(a, b);
16476dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16477dd12780e86575795fa912529a911b01e2abc4677Hao Liu
164784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p8_x3(i8* %a, [3 x <16 x i8>] %b.coerce) #0 {
164794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x3_t, align 16
164804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x3_t, align 16
164814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[B]], i32 0, i32 0
164824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
164834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__S1]] to i8*
164844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x3_t* [[B]] to i8*
164854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
164864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
164874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
164884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
164894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
164904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
164914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
164924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
164934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
164944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
164954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i8* %a)
164964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16497dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p8_x3(poly8_t *a, poly8x16x3_t b) {
16498dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p8_x3(a, b);
16499dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16500dd12780e86575795fa912529a911b01e2abc4677Hao Liu
165014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p16_x3(i16* %a, [3 x <8 x i16>] %b.coerce) #0 {
165024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x3_t, align 16
165034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x3_t, align 16
165044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[B]], i32 0, i32 0
165054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
165064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__S1]] to i8*
165074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x3_t* [[B]] to i8*
165084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
165094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
165104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
165114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
165124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
165134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
165144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
165154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
165164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
165174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
165184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
165194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
165204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
165214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
165224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
165234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
165244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
165254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
165264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v8i16.p0i16(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i16* [[TMP12]])
165274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16528dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p16_x3(poly16_t *a, poly16x8x3_t b) {
16529dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p16_x3(a, b);
16530dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16531dd12780e86575795fa912529a911b01e2abc4677Hao Liu
165324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p64_x3(i64* %a, [3 x <2 x i64>] %b.coerce) #0 {
165334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x3_t, align 16
165344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x3_t, align 16
165354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[B]], i32 0, i32 0
165364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
165374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__S1]] to i8*
165384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x3_t* [[B]] to i8*
165394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 48, i32 16, i1 false)
165404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
165414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
165424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
165434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
165444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
165454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
165464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
165474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
165484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
165494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
165504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
165514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
165524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
165534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
165544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
165554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
165564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i64*
165574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v2i64.p0i64(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64* [[TMP12]])
165584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16559dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p64_x3(poly64_t *a, poly64x2x3_t b) {
16560dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p64_x3(a, b);
16561dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16562dd12780e86575795fa912529a911b01e2abc4677Hao Liu
165634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u8_x3(i8* %a, [3 x <8 x i8>] %b.coerce) #0 {
165644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x3_t, align 8
165654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x3_t, align 8
165664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[B]], i32 0, i32 0
165674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
165684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__S1]] to i8*
165694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x3_t* [[B]] to i8*
165704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
165714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
165724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
165734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
165744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
165754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
165764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
165774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
165784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
165794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
165804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i8* %a)
165814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16582dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u8_x3(uint8_t *a, uint8x8x3_t b) {
16583dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u8_x3(a, b);
16584dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16585dd12780e86575795fa912529a911b01e2abc4677Hao Liu
165864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u16_x3(i16* %a, [3 x <4 x i16>] %b.coerce) #0 {
165874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x3_t, align 8
165884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x3_t, align 8
165894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[B]], i32 0, i32 0
165904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
165914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__S1]] to i8*
165924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x3_t* [[B]] to i8*
165934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
165944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
165954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
165964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
165974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
165984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
165994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
166004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
166014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
166024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
166034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
166044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
166054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
166064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
166074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
166084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
166094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
166104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
166114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v4i16.p0i16(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i16* [[TMP12]])
166124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16613dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u16_x3(uint16_t *a, uint16x4x3_t b) {
16614dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u16_x3(a, b);
16615dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16616dd12780e86575795fa912529a911b01e2abc4677Hao Liu
166174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u32_x3(i32* %a, [3 x <2 x i32>] %b.coerce) #0 {
166184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x3_t, align 8
166194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x3_t, align 8
166204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[B]], i32 0, i32 0
166214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
166224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__S1]] to i8*
166234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x3_t* [[B]] to i8*
166244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
166254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
166264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
166274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
166284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
166294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
166304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
166314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
166324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
166334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
166344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
166354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
166364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
166374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
166384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
166394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
166404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
166414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i32*
166424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v2i32.p0i32(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i32* [[TMP12]])
166434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16644dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u32_x3(uint32_t *a, uint32x2x3_t b) {
16645dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u32_x3(a, b);
16646dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16647dd12780e86575795fa912529a911b01e2abc4677Hao Liu
166484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u64_x3(i64* %a, [3 x <1 x i64>] %b.coerce) #0 {
166494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x3_t, align 8
166504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x3_t, align 8
166514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[B]], i32 0, i32 0
166524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
166534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__S1]] to i8*
166544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x3_t* [[B]] to i8*
166554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
166564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
166574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
166584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
166594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
166604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
166614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
166624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
166634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
166644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
166654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
166664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
166674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
166684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
166694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
166704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
166714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
166724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i64*
166734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v1i64.p0i64(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64* [[TMP12]])
166744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16675dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u64_x3(uint64_t *a, uint64x1x3_t b) {
16676dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u64_x3(a, b);
16677dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16678dd12780e86575795fa912529a911b01e2abc4677Hao Liu
166794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s8_x3(i8* %a, [3 x <8 x i8>] %b.coerce) #0 {
166804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x8x3_t, align 8
166814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x3_t, align 8
166824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[B]], i32 0, i32 0
166834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
166844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__S1]] to i8*
166854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x3_t* [[B]] to i8*
166864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
166874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
166884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
166894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
166904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
166914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
166924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
166934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
166944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
166954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
166964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i8* %a)
166974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16698dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s8_x3(int8_t *a, int8x8x3_t b) {
16699dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s8_x3(a, b);
16700dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16701dd12780e86575795fa912529a911b01e2abc4677Hao Liu
167024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s16_x3(i16* %a, [3 x <4 x i16>] %b.coerce) #0 {
167034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x4x3_t, align 8
167044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x3_t, align 8
167054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[B]], i32 0, i32 0
167064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
167074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__S1]] to i8*
167084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x3_t* [[B]] to i8*
167094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
167104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
167114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
167124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
167134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
167144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
167154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
167164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
167174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
167184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
167194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
167204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
167214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
167224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
167234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
167244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
167254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
167264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
167274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v4i16.p0i16(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i16* [[TMP12]])
167284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16729dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s16_x3(int16_t *a, int16x4x3_t b) {
16730dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s16_x3(a, b);
16731dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16732dd12780e86575795fa912529a911b01e2abc4677Hao Liu
167334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s32_x3(i32* %a, [3 x <2 x i32>] %b.coerce) #0 {
167344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x2x3_t, align 8
167354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x3_t, align 8
167364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[B]], i32 0, i32 0
167374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
167384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__S1]] to i8*
167394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x3_t* [[B]] to i8*
167404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
167414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
167424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
167434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
167444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
167454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
167464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
167474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
167484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
167494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
167504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
167514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
167524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
167534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
167544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
167554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
167564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
167574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i32*
167584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v2i32.p0i32(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i32* [[TMP12]])
167594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16760dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s32_x3(int32_t *a, int32x2x3_t b) {
16761dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s32_x3(a, b);
16762dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16763dd12780e86575795fa912529a911b01e2abc4677Hao Liu
167644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s64_x3(i64* %a, [3 x <1 x i64>] %b.coerce) #0 {
167654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x1x3_t, align 8
167664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x3_t, align 8
167674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[B]], i32 0, i32 0
167684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
167694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__S1]] to i8*
167704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x3_t* [[B]] to i8*
167714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
167724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
167734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
167744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
167754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
167764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
167774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
167784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
167794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
167804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
167814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
167824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
167834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
167844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
167854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
167864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
167874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
167884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i64*
167894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v1i64.p0i64(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64* [[TMP12]])
167904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16791dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s64_x3(int64_t *a, int64x1x3_t b) {
16792dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s64_x3(a, b);
16793dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16794dd12780e86575795fa912529a911b01e2abc4677Hao Liu
167954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f16_x3(half* %a, [3 x <4 x half>] %b.coerce) #0 {
167964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x4x3_t, align 8
167974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x3_t, align 8
167984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[B]], i32 0, i32 0
167994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x half>] [[B]].coerce, [3 x <4 x half>]* [[COERCE_DIVE]], align 8
168004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__S1]] to i8*
168014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x3_t* [[B]] to i8*
168024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
168034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
168044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
168054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL]], i64 0, i64 0
168064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
168074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
168084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
168094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL1]], i64 0, i64 1
168104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
168114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
168124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
168134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL3]], i64 0, i64 2
168144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
168154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
168164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
168174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
168184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
168194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
168204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v4i16.p0i16(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i16* [[TMP12]])
168214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16822dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f16_x3(float16_t *a, float16x4x3_t b) {
16823dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f16_x3(a, b);
16824dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16825dd12780e86575795fa912529a911b01e2abc4677Hao Liu
168264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f32_x3(float* %a, [3 x <2 x float>] %b.coerce) #0 {
168274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x2x3_t, align 8
168284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x3_t, align 8
168294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[B]], i32 0, i32 0
168304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <2 x float>] [[B]].coerce, [3 x <2 x float>]* [[COERCE_DIVE]], align 8
168314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__S1]] to i8*
168324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x3_t* [[B]] to i8*
168334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
168344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
168354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
168364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL]], i64 0, i64 0
168374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
168384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
168394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
168404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL1]], i64 0, i64 1
168414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
168424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
168434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
168444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL3]], i64 0, i64 2
168454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
168464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
168474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
168484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
168494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
168504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to float*
168514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v2f32.p0f32(<2 x float> [[TMP9]], <2 x float> [[TMP10]], <2 x float> [[TMP11]], float* [[TMP12]])
168524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16853dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f32_x3(float32_t *a, float32x2x3_t b) {
16854dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f32_x3(a, b);
16855dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16856dd12780e86575795fa912529a911b01e2abc4677Hao Liu
168574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f64_x3(double* %a, [3 x <1 x double>] %b.coerce) #0 {
168584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x1x3_t, align 8
168594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x3_t, align 8
168604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[B]], i32 0, i32 0
168614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <1 x double>] [[B]].coerce, [3 x <1 x double>]* [[COERCE_DIVE]], align 8
168624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__S1]] to i8*
168634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x3_t* [[B]] to i8*
168644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
168654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
168664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
168674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL]], i64 0, i64 0
168684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
168694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
168704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
168714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL1]], i64 0, i64 1
168724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
168734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
168744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
168754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL3]], i64 0, i64 2
168764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
168774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
168784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
168794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
168804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
168814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to double*
168824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v1f64.p0f64(<1 x double> [[TMP9]], <1 x double> [[TMP10]], <1 x double> [[TMP11]], double* [[TMP12]])
168834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16884dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f64_x3(float64_t *a, float64x1x3_t b) {
16885dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f64_x3(a, b);
16886dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16887dd12780e86575795fa912529a911b01e2abc4677Hao Liu
168884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p8_x3(i8* %a, [3 x <8 x i8>] %b.coerce) #0 {
168894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x3_t, align 8
168904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x3_t, align 8
168914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[B]], i32 0, i32 0
168924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
168934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__S1]] to i8*
168944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x3_t* [[B]] to i8*
168954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
168964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
168974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
168984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
168994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
169004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
169014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
169024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
169034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
169044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
169054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i8* %a)
169064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16907dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p8_x3(poly8_t *a, poly8x8x3_t b) {
16908dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p8_x3(a, b);
16909dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16910dd12780e86575795fa912529a911b01e2abc4677Hao Liu
169114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p16_x3(i16* %a, [3 x <4 x i16>] %b.coerce) #0 {
169124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x3_t, align 8
169134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x3_t, align 8
169144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[B]], i32 0, i32 0
169154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
169164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__S1]] to i8*
169174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x3_t* [[B]] to i8*
169184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
169194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
169204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
169214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
169224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
169234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
169244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
169254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
169264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
169274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
169284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
169294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
169304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
169314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
169324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
169334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
169344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
169354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i16*
169364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v4i16.p0i16(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i16* [[TMP12]])
169374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16938dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p16_x3(poly16_t *a, poly16x4x3_t b) {
16939dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p16_x3(a, b);
16940dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16941dd12780e86575795fa912529a911b01e2abc4677Hao Liu
169424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p64_x3(i64* %a, [3 x <1 x i64>] %b.coerce) #0 {
169434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x3_t, align 8
169444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x3_t, align 8
169454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[B]], i32 0, i32 0
169464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
169474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__S1]] to i8*
169484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x3_t* [[B]] to i8*
169494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 24, i32 8, i1 false)
169504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
169514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
169524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
169534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
169544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
169554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
169564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
169574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
169584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
169594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
169604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
169614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
169624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
169634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
169644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
169654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
169664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast i8* [[TMP2]] to i64*
169674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x3.v1i64.p0i64(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64* [[TMP12]])
169684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16969dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p64_x3(poly64_t *a, poly64x1x3_t b) {
16970dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p64_x3(a, b);
16971dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16972dd12780e86575795fa912529a911b01e2abc4677Hao Liu
169734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u8_x4(i8* %a, [4 x <16 x i8>] %b.coerce) #0 {
169744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x4_t, align 16
169754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x4_t, align 16
169764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[B]], i32 0, i32 0
169774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
169784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__S1]] to i8*
169794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x4_t* [[B]] to i8*
169804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
169814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
169824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
169834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
169844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
169854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
169864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
169874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
169884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
169894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
169904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
169914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
169924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
169934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i8* %a)
169944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
16995dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u8_x4(uint8_t *a, uint8x16x4_t b) {
16996dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u8_x4(a, b);
16997dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
16998dd12780e86575795fa912529a911b01e2abc4677Hao Liu
169994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u16_x4(i16* %a, [4 x <8 x i16>] %b.coerce) #0 {
170004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x4_t, align 16
170014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x4_t, align 16
170024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[B]], i32 0, i32 0
170034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
170044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__S1]] to i8*
170054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x4_t* [[B]] to i8*
170064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
170074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
170084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
170094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
170104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
170114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
170124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
170134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
170144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
170154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
170164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
170174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
170184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
170194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
170204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
170214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
170224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
170234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
170244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
170254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
170264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
170274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
170284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
170294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v8i16.p0i16(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i16* [[TMP15]])
170304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17031dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u16_x4(uint16_t *a, uint16x8x4_t b) {
17032dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u16_x4(a, b);
17033dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17034dd12780e86575795fa912529a911b01e2abc4677Hao Liu
170354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u32_x4(i32* %a, [4 x <4 x i32>] %b.coerce) #0 {
170364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x4_t, align 16
170374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x4_t, align 16
170384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[B]], i32 0, i32 0
170394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
170404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__S1]] to i8*
170414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x4_t* [[B]] to i8*
170424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
170434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
170444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
170454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
170464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
170474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
170484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
170494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
170504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
170514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
170524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
170534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
170544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
170554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
170564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
170574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
170584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
170594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
170604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
170614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
170624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
170634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
170644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i32*
170654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v4i32.p0i32(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i32* [[TMP15]])
170664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17067dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u32_x4(uint32_t *a, uint32x4x4_t b) {
17068dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u32_x4(a, b);
17069dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17070dd12780e86575795fa912529a911b01e2abc4677Hao Liu
170714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_u64_x4(i64* %a, [4 x <2 x i64>] %b.coerce) #0 {
170724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x4_t, align 16
170734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x4_t, align 16
170744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[B]], i32 0, i32 0
170754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
170764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__S1]] to i8*
170774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x4_t* [[B]] to i8*
170784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
170794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
170804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
170814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
170824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
170834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
170844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
170854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
170864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
170874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
170884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
170894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
170904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
170914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
170924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
170934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
170944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
170954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
170964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
170974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
170984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
170994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
171004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i64*
171014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v2i64.p0i64(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64* [[TMP15]])
171024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17103dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_u64_x4(uint64_t *a, uint64x2x4_t b) {
17104dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_u64_x4(a, b);
17105dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17106dd12780e86575795fa912529a911b01e2abc4677Hao Liu
171074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s8_x4(i8* %a, [4 x <16 x i8>] %b.coerce) #0 {
171084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x16x4_t, align 16
171094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x4_t, align 16
171104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[B]], i32 0, i32 0
171114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
171124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__S1]] to i8*
171134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x4_t* [[B]] to i8*
171144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
171154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
171164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
171174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
171184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
171194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
171204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
171214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
171224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
171234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
171244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
171254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
171264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
171274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i8* %a)
171284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17129dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s8_x4(int8_t *a, int8x16x4_t b) {
17130dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s8_x4(a, b);
17131dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17132dd12780e86575795fa912529a911b01e2abc4677Hao Liu
171334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s16_x4(i16* %a, [4 x <8 x i16>] %b.coerce) #0 {
171344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x8x4_t, align 16
171354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x4_t, align 16
171364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[B]], i32 0, i32 0
171374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
171384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__S1]] to i8*
171394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x4_t* [[B]] to i8*
171404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
171414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
171424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
171434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
171444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
171454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
171464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
171474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
171484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
171494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
171504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
171514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
171524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
171534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
171544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
171554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
171564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
171574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
171584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
171594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
171604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
171614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
171624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
171634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v8i16.p0i16(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i16* [[TMP15]])
171644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17165dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s16_x4(int16_t *a, int16x8x4_t b) {
17166dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s16_x4(a, b);
17167dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17168dd12780e86575795fa912529a911b01e2abc4677Hao Liu
171694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s32_x4(i32* %a, [4 x <4 x i32>] %b.coerce) #0 {
171704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x4x4_t, align 16
171714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x4_t, align 16
171724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[B]], i32 0, i32 0
171734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
171744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__S1]] to i8*
171754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x4_t* [[B]] to i8*
171764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
171774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
171784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
171794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
171804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
171814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
171824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
171834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
171844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
171854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
171864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
171874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
171884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
171894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
171904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
171914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
171924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
171934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
171944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
171954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
171964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
171974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
171984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i32*
171994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v4i32.p0i32(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i32* [[TMP15]])
172004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17201dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s32_x4(int32_t *a, int32x4x4_t b) {
17202dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s32_x4(a, b);
17203dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17204dd12780e86575795fa912529a911b01e2abc4677Hao Liu
172054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_s64_x4(i64* %a, [4 x <2 x i64>] %b.coerce) #0 {
172064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x2x4_t, align 16
172074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x4_t, align 16
172084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[B]], i32 0, i32 0
172094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
172104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__S1]] to i8*
172114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x4_t* [[B]] to i8*
172124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
172134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
172144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
172154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
172164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
172174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
172184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
172194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
172204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
172214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
172224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
172234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
172244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
172254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
172264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
172274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
172284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
172294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
172304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
172314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
172324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
172334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
172344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i64*
172354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v2i64.p0i64(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64* [[TMP15]])
172364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17237dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_s64_x4(int64_t *a, int64x2x4_t b) {
17238dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_s64_x4(a, b);
17239dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17240dd12780e86575795fa912529a911b01e2abc4677Hao Liu
172414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f16_x4(half* %a, [4 x <8 x half>] %b.coerce) #0 {
172424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x8x4_t, align 16
172434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x4_t, align 16
172444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[B]], i32 0, i32 0
172454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x half>] [[B]].coerce, [4 x <8 x half>]* [[COERCE_DIVE]], align 16
172464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__S1]] to i8*
172474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x4_t* [[B]] to i8*
172484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
172494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
172504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
172514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL]], i64 0, i64 0
172524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
172534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
172544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
172554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL1]], i64 0, i64 1
172564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
172574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
172584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
172594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL3]], i64 0, i64 2
172604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
172614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
172624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
172634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL5]], i64 0, i64 3
172644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX6]], align 16
172654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x half> [[TMP9]] to <16 x i8>
172664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
172674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
172684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
172694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
172704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
172714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v8i16.p0i16(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i16* [[TMP15]])
172724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17273dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f16_x4(float16_t *a, float16x8x4_t b) {
17274dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f16_x4(a, b);
17275dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17276dd12780e86575795fa912529a911b01e2abc4677Hao Liu
172774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f32_x4(float* %a, [4 x <4 x float>] %b.coerce) #0 {
172784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x4x4_t, align 16
172794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x4_t, align 16
172804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[B]], i32 0, i32 0
172814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x float>] [[B]].coerce, [4 x <4 x float>]* [[COERCE_DIVE]], align 16
172824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__S1]] to i8*
172834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x4_t* [[B]] to i8*
172844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
172854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
172864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
172874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL]], i64 0, i64 0
172884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
172894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
172904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
172914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL1]], i64 0, i64 1
172924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
172934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
172944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
172954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL3]], i64 0, i64 2
172964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
172974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
172984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
172994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL5]], i64 0, i64 3
173004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX6]], align 16
173014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x float> [[TMP9]] to <16 x i8>
173024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
173034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
173044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
173054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x float>
173064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to float*
173074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v4f32.p0f32(<4 x float> [[TMP11]], <4 x float> [[TMP12]], <4 x float> [[TMP13]], <4 x float> [[TMP14]], float* [[TMP15]])
173084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17309dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f32_x4(float32_t *a, float32x4x4_t b) {
17310dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f32_x4(a, b);
17311dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17312dd12780e86575795fa912529a911b01e2abc4677Hao Liu
173134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_f64_x4(double* %a, [4 x <2 x double>] %b.coerce) #0 {
173144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x2x4_t, align 16
173154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x4_t, align 16
173164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[B]], i32 0, i32 0
173174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x double>] [[B]].coerce, [4 x <2 x double>]* [[COERCE_DIVE]], align 16
173184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__S1]] to i8*
173194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x4_t* [[B]] to i8*
173204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
173214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
173224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
173234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL]], i64 0, i64 0
173244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
173254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
173264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
173274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL1]], i64 0, i64 1
173284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
173294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
173304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
173314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL3]], i64 0, i64 2
173324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
173334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
173344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
173354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL5]], i64 0, i64 3
173364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX6]], align 16
173374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x double> [[TMP9]] to <16 x i8>
173384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
173394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
173404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
173414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x double>
173424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to double*
173434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v2f64.p0f64(<2 x double> [[TMP11]], <2 x double> [[TMP12]], <2 x double> [[TMP13]], <2 x double> [[TMP14]], double* [[TMP15]])
173444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17345dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_f64_x4(float64_t *a, float64x2x4_t b) {
17346dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_f64_x4(a, b);
17347dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17348dd12780e86575795fa912529a911b01e2abc4677Hao Liu
173494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p8_x4(i8* %a, [4 x <16 x i8>] %b.coerce) #0 {
173504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x4_t, align 16
173514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x4_t, align 16
173524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[B]], i32 0, i32 0
173534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
173544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__S1]] to i8*
173554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x4_t* [[B]] to i8*
173564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
173574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
173584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
173594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
173604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
173614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
173624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
173634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
173644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
173654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
173664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
173674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
173684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
173694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i8* %a)
173704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17371dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p8_x4(poly8_t *a, poly8x16x4_t b) {
17372dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p8_x4(a, b);
17373dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17374dd12780e86575795fa912529a911b01e2abc4677Hao Liu
173754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p16_x4(i16* %a, [4 x <8 x i16>] %b.coerce) #0 {
173764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x4_t, align 16
173774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x4_t, align 16
173784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[B]], i32 0, i32 0
173794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
173804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__S1]] to i8*
173814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x4_t* [[B]] to i8*
173824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
173834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
173844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
173854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
173864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
173874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
173884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
173894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
173904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
173914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
173924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
173934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
173944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
173954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
173964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
173974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
173984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
173994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
174004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
174014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
174024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
174034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
174044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
174054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v8i16.p0i16(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i16* [[TMP15]])
174064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17407dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p16_x4(poly16_t *a, poly16x8x4_t b) {
17408dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p16_x4(a, b);
17409dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17410dd12780e86575795fa912529a911b01e2abc4677Hao Liu
174114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1q_p64_x4(i64* %a, [4 x <2 x i64>] %b.coerce) #0 {
174124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x4_t, align 16
174134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x4_t, align 16
174144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[B]], i32 0, i32 0
174154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
174164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__S1]] to i8*
174174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x4_t* [[B]] to i8*
174184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 64, i32 16, i1 false)
174194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
174204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
174214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
174224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
174234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
174244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
174254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
174264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
174274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
174284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
174294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
174304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
174314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
174324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
174334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
174344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
174354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
174364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
174374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
174384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
174394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
174404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i64*
174414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v2i64.p0i64(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64* [[TMP15]])
174424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17443dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1q_p64_x4(poly64_t *a, poly64x2x4_t b) {
17444dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1q_p64_x4(a, b);
17445dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17446dd12780e86575795fa912529a911b01e2abc4677Hao Liu
174474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u8_x4(i8* %a, [4 x <8 x i8>] %b.coerce) #0 {
174484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x4_t, align 8
174494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x4_t, align 8
174504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[B]], i32 0, i32 0
174514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
174524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__S1]] to i8*
174534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x4_t* [[B]] to i8*
174544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
174554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
174564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
174574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
174584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
174594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
174604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
174614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
174624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
174634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
174644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
174654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
174664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
174674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i8* %a)
174684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17469dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u8_x4(uint8_t *a, uint8x8x4_t b) {
17470dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u8_x4(a, b);
17471dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17472dd12780e86575795fa912529a911b01e2abc4677Hao Liu
174734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u16_x4(i16* %a, [4 x <4 x i16>] %b.coerce) #0 {
174744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x4_t, align 8
174754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x4_t, align 8
174764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[B]], i32 0, i32 0
174774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
174784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__S1]] to i8*
174794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x4_t* [[B]] to i8*
174804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
174814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
174824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
174834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
174844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
174854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
174864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
174874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
174884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
174894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
174904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
174914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
174924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
174934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
174944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
174954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
174964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
174974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
174984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
174994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
175004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
175014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
175024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
175034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v4i16.p0i16(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i16* [[TMP15]])
175044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17505dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u16_x4(uint16_t *a, uint16x4x4_t b) {
17506dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u16_x4(a, b);
17507dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17508dd12780e86575795fa912529a911b01e2abc4677Hao Liu
175094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u32_x4(i32* %a, [4 x <2 x i32>] %b.coerce) #0 {
175104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x4_t, align 8
175114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x4_t, align 8
175124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[B]], i32 0, i32 0
175134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
175144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__S1]] to i8*
175154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x4_t* [[B]] to i8*
175164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
175174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
175184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
175194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
175204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
175214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
175224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
175234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
175244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
175254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
175264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
175274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
175284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
175294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
175304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
175314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
175324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
175334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
175344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
175354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
175364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
175374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
175384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i32*
175394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v2i32.p0i32(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i32* [[TMP15]])
175404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17541dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u32_x4(uint32_t *a, uint32x2x4_t b) {
17542dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u32_x4(a, b);
17543dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17544dd12780e86575795fa912529a911b01e2abc4677Hao Liu
175454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_u64_x4(i64* %a, [4 x <1 x i64>] %b.coerce) #0 {
175464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x4_t, align 8
175474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x4_t, align 8
175484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[B]], i32 0, i32 0
175494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
175504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__S1]] to i8*
175514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x4_t* [[B]] to i8*
175524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
175534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
175544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
175554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
175564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
175574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
175584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
175594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
175604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
175614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
175624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
175634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
175644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
175654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
175664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
175674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
175684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
175694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
175704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
175714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
175724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
175734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
175744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i64*
175754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v1i64.p0i64(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64* [[TMP15]])
175764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17577dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_u64_x4(uint64_t *a, uint64x1x4_t b) {
17578dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_u64_x4(a, b);
17579dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17580dd12780e86575795fa912529a911b01e2abc4677Hao Liu
175814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s8_x4(i8* %a, [4 x <8 x i8>] %b.coerce) #0 {
175824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int8x8x4_t, align 8
175834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x4_t, align 8
175844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[B]], i32 0, i32 0
175854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
175864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__S1]] to i8*
175874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x4_t* [[B]] to i8*
175884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
175894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
175904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
175914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
175924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
175934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
175944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
175954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
175964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
175974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
175984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
175994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
176004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
176014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i8* %a)
176024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17603dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s8_x4(int8_t *a, int8x8x4_t b) {
17604dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s8_x4(a, b);
17605dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17606dd12780e86575795fa912529a911b01e2abc4677Hao Liu
176074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s16_x4(i16* %a, [4 x <4 x i16>] %b.coerce) #0 {
176084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int16x4x4_t, align 8
176094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x4_t, align 8
176104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[B]], i32 0, i32 0
176114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
176124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__S1]] to i8*
176134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x4_t* [[B]] to i8*
176144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
176154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
176164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
176174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
176184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
176194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
176204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
176214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
176224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
176234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
176244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
176254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
176264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
176274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
176284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
176294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
176304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
176314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
176324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
176334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
176344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
176354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
176364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
176374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v4i16.p0i16(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i16* [[TMP15]])
176384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17639dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s16_x4(int16_t *a, int16x4x4_t b) {
17640dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s16_x4(a, b);
17641dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17642dd12780e86575795fa912529a911b01e2abc4677Hao Liu
176434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s32_x4(i32* %a, [4 x <2 x i32>] %b.coerce) #0 {
176444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int32x2x4_t, align 8
176454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x4_t, align 8
176464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[B]], i32 0, i32 0
176474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
176484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__S1]] to i8*
176494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x4_t* [[B]] to i8*
176504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
176514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
176524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
176534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
176544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
176554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
176564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
176574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
176584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
176594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
176604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
176614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
176624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
176634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
176644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
176654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
176664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
176674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
176684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
176694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
176704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
176714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
176724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i32*
176734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v2i32.p0i32(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i32* [[TMP15]])
176744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17675dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s32_x4(int32_t *a, int32x2x4_t b) {
17676dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s32_x4(a, b);
17677dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17678dd12780e86575795fa912529a911b01e2abc4677Hao Liu
176794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_s64_x4(i64* %a, [4 x <1 x i64>] %b.coerce) #0 {
176804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.int64x1x4_t, align 8
176814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x4_t, align 8
176824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[B]], i32 0, i32 0
176834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
176844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__S1]] to i8*
176854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x4_t* [[B]] to i8*
176864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
176874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
176884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
176894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
176904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
176914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
176924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
176934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
176944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
176954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
176964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
176974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
176984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
176994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
177004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
177014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
177024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
177034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
177044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
177054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
177064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
177074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
177084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i64*
177094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v1i64.p0i64(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64* [[TMP15]])
177104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17711dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_s64_x4(int64_t *a, int64x1x4_t b) {
17712dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_s64_x4(a, b);
17713dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17714dd12780e86575795fa912529a911b01e2abc4677Hao Liu
177154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f16_x4(half* %a, [4 x <4 x half>] %b.coerce) #0 {
177164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float16x4x4_t, align 8
177174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x4_t, align 8
177184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[B]], i32 0, i32 0
177194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x half>] [[B]].coerce, [4 x <4 x half>]* [[COERCE_DIVE]], align 8
177204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__S1]] to i8*
177214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x4_t* [[B]] to i8*
177224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
177234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
177244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
177254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL]], i64 0, i64 0
177264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
177274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
177284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
177294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL1]], i64 0, i64 1
177304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
177314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
177324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
177334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL3]], i64 0, i64 2
177344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
177354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
177364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
177374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL5]], i64 0, i64 3
177384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX6]], align 8
177394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x half> [[TMP9]] to <8 x i8>
177404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
177414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
177424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
177434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
177444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
177454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v4i16.p0i16(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i16* [[TMP15]])
177464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17747dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f16_x4(float16_t *a, float16x4x4_t b) {
17748dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f16_x4(a, b);
17749dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17750dd12780e86575795fa912529a911b01e2abc4677Hao Liu
177514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f32_x4(float* %a, [4 x <2 x float>] %b.coerce) #0 {
177524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float32x2x4_t, align 8
177534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x4_t, align 8
177544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[B]], i32 0, i32 0
177554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <2 x float>] [[B]].coerce, [4 x <2 x float>]* [[COERCE_DIVE]], align 8
177564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__S1]] to i8*
177574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x4_t* [[B]] to i8*
177584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
177594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
177604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
177614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL]], i64 0, i64 0
177624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
177634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
177644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
177654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL1]], i64 0, i64 1
177664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
177674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
177684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
177694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL3]], i64 0, i64 2
177704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
177714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
177724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
177734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL5]], i64 0, i64 3
177744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX6]], align 8
177754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <2 x float> [[TMP9]] to <8 x i8>
177764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
177774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
177784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
177794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x float>
177804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to float*
177814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v2f32.p0f32(<2 x float> [[TMP11]], <2 x float> [[TMP12]], <2 x float> [[TMP13]], <2 x float> [[TMP14]], float* [[TMP15]])
177824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17783dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f32_x4(float32_t *a, float32x2x4_t b) {
17784dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f32_x4(a, b);
17785dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17786dd12780e86575795fa912529a911b01e2abc4677Hao Liu
177874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_f64_x4(double* %a, [4 x <1 x double>] %b.coerce) #0 {
177884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.float64x1x4_t, align 8
177894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x4_t, align 8
177904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[B]], i32 0, i32 0
177914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <1 x double>] [[B]].coerce, [4 x <1 x double>]* [[COERCE_DIVE]], align 8
177924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__S1]] to i8*
177934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x4_t* [[B]] to i8*
177944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
177954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
177964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
177974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL]], i64 0, i64 0
177984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
177994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
178004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
178014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL1]], i64 0, i64 1
178024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
178034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
178044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
178054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL3]], i64 0, i64 2
178064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
178074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
178084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
178094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL5]], i64 0, i64 3
178104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX6]], align 8
178114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <1 x double> [[TMP9]] to <8 x i8>
178124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
178134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
178144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
178154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x double>
178164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to double*
178174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v1f64.p0f64(<1 x double> [[TMP11]], <1 x double> [[TMP12]], <1 x double> [[TMP13]], <1 x double> [[TMP14]], double* [[TMP15]])
178184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17819dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_f64_x4(float64_t *a, float64x1x4_t b) {
17820dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_f64_x4(a, b);
17821dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17822dd12780e86575795fa912529a911b01e2abc4677Hao Liu
178234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p8_x4(i8* %a, [4 x <8 x i8>] %b.coerce) #0 {
178244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x4_t, align 8
178254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x4_t, align 8
178264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[B]], i32 0, i32 0
178274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
178284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__S1]] to i8*
178294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x4_t* [[B]] to i8*
178304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
178314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
178324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
178334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
178344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
178354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
178364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
178374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
178384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
178394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
178404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
178414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
178424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
178434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i8* %a)
178444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17845dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p8_x4(poly8_t *a, poly8x8x4_t b) {
17846dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p8_x4(a, b);
17847dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17848dd12780e86575795fa912529a911b01e2abc4677Hao Liu
178494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p16_x4(i16* %a, [4 x <4 x i16>] %b.coerce) #0 {
178504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x4_t, align 8
178514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x4_t, align 8
178524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[B]], i32 0, i32 0
178534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
178544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__S1]] to i8*
178554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x4_t* [[B]] to i8*
178564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
178574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
178584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
178594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
178604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
178614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
178624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
178634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
178644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
178654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
178664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
178674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
178684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
178694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
178704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
178714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
178724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
178734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
178744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
178754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
178764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
178774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
178784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i16*
178794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v4i16.p0i16(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i16* [[TMP15]])
178804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17881dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p16_x4(poly16_t *a, poly16x4x4_t b) {
17882dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p16_x4(a, b);
17883dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17884dd12780e86575795fa912529a911b01e2abc4677Hao Liu
178854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define void @test_vst1_p64_x4(i64* %a, [4 x <1 x i64>] %b.coerce) #0 {
178864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x4_t, align 8
178874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x4_t, align 8
178884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[B]], i32 0, i32 0
178894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
178904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__S1]] to i8*
178914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x4_t* [[B]] to i8*
178924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[TMP0]], i8* [[TMP1]], i64 32, i32 8, i1 false)
178934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
178944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
178954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
178964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
178974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
178984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
178994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
179004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
179014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
179024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
179034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
179044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
179054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
179064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
179074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
179084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
179094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
179104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
179114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
179124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
179134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
179144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP15:%.*]] = bitcast i8* [[TMP2]] to i64*
179154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   call void @llvm.aarch64.neon.st1x4.v1i64.p0i64(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64* [[TMP15]])
179164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret void
17917dd12780e86575795fa912529a911b01e2abc4677Hao Liuvoid test_vst1_p64_x4(poly64_t *a, poly64x1x4_t b) {
17918dd12780e86575795fa912529a911b01e2abc4677Hao Liu  vst1_p64_x4(a, b);
17919dd12780e86575795fa912529a911b01e2abc4677Hao Liu}
17920dd12780e86575795fa912529a911b01e2abc4677Hao Liu
179214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vceqd_s64(i64 %a, i64 %b) #0 {
179224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq i64 %a, %b
179234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
179244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
17925ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vceqd_s64(int64_t a, int64_t b) {
17926ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vceqd_s64(a, b);
17927ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17928ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vceqd_u64(i64 %a, i64 %b) #0 {
179304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq i64 %a, %b
179314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
179324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
17933ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosieruint64_t test_vceqd_u64(uint64_t a, uint64_t b) {
17934ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vceqd_u64(a, b);
17935651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
17936ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vceqzd_s64(i64 %a) #0 {
179384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq i64 %a, 0
179394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext i1 [[TMP0]] to i64
179404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQZ_I]]
17941ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vceqzd_s64(int64_t a) {
17942ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vceqzd_s64(a);
17943ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17944ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vceqzd_u64(i64 %a) #0 {
179464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq i64 %a, 0
179474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZD_I:%.*]] = sext i1 [[TMP0]] to i64
179484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQZD_I]]
17949ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vceqzd_u64(int64_t a) {
17950ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vceqzd_u64(a);
17951ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17952ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcged_s64(i64 %a, i64 %b) #0 {
179544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sge i64 %a, %b
179554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
179564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
17957ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vcged_s64(int64_t a, int64_t b) {
17958ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vcged_s64(a, b);
17959ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17960ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcged_u64(i64 %a, i64 %b) #0 {
179624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp uge i64 %a, %b
179634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
179644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
17965ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosieruint64_t test_vcged_u64(uint64_t a, uint64_t b) {
17966ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier    return (uint64_t)vcged_u64(a, b);
17967ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17968ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcgezd_s64(i64 %a) #0 {
179704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sge i64 %a, 0
179714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext i1 [[TMP0]] to i64
179724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCGEZ_I]]
17973ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vcgezd_s64(int64_t a) {
17974ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vcgezd_s64(a);
17975ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17976ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcgtd_s64(i64 %a, i64 %b) #0 {
179784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sgt i64 %a, %b
179794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
179804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
17981ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vcgtd_s64(int64_t a, int64_t b) {
17982ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vcgtd_s64(a, b);
17983ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17984ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcgtd_u64(i64 %a, i64 %b) #0 {
179864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp ugt i64 %a, %b
179874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
179884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
17989ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosieruint64_t test_vcgtd_u64(uint64_t a, uint64_t b) {
17990ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (uint64_t)vcgtd_u64(a, b);
17991ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
17992ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
179934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcgtzd_s64(i64 %a) #0 {
179944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sgt i64 %a, 0
179954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext i1 [[TMP0]] to i64
179964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCGTZ_I]]
17997ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vcgtzd_s64(int64_t a) {
17998ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vcgtzd_s64(a);
17999ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18000ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcled_s64(i64 %a, i64 %b) #0 {
180024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sle i64 %a, %b
180034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
180044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
18005ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vcled_s64(int64_t a, int64_t b) {
18006ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vcled_s64(a, b);
18007ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18008ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcled_u64(i64 %a, i64 %b) #0 {
180104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp ule i64 %a, %b
180114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
180124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
18013ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosieruint64_t test_vcled_u64(uint64_t a, uint64_t b) {
18014651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return (uint64_t)vcled_u64(a, b);
18015ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18016ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vclezd_s64(i64 %a) #0 {
180184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sle i64 %a, 0
180194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext i1 [[TMP0]] to i64
180204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCLEZ_I]]
18021ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vclezd_s64(int64_t a) {
18022ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vclezd_s64(a);
18023ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18024ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcltd_s64(i64 %a, i64 %b) #0 {
180264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp slt i64 %a, %b
180274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
180284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
18029ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vcltd_s64(int64_t a, int64_t b) {
18030ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vcltd_s64(a, b);
18031ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18032ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcltd_u64(i64 %a, i64 %b) #0 {
180344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp ult i64 %a, %b
180354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQD_I:%.*]] = sext i1 [[TMP0]] to i64
180364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQD_I]]
18037ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosieruint64_t test_vcltd_u64(uint64_t a, uint64_t b) {
18038ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (uint64_t)vcltd_u64(a, b);
18039ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18040ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcltzd_s64(i64 %a) #0 {
180424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp slt i64 %a, 0
180434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext i1 [[TMP0]] to i64
180444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCLTZ_I]]
18045ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vcltzd_s64(int64_t a) {
18046ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vcltzd_s64(a);
18047ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18048ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vtstd_s64(i64 %a, i64 %b) #0 {
180504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and i64 %a, %b
180514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne i64 [[TMP0]], 0
180524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTSTD_I:%.*]] = sext i1 [[TMP1]] to i64
180534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VTSTD_I]]
18054ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosierint64_t test_vtstd_s64(int64_t a, int64_t b) {
18055ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (int64_t)vtstd_s64(a, b);
18056ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
18057ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier
180584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vtstd_u64(i64 %a, i64 %b) #0 {
180594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = and i64 %a, %b
180604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = icmp ne i64 [[TMP0]], 0
180614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VTSTD_I:%.*]] = sext i1 [[TMP1]] to i64
180624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VTSTD_I]]
18063ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosieruint64_t test_vtstd_u64(uint64_t a, uint64_t b) {
18064ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier  return (uint64_t)vtstd_u64(a, b);
18065ad40008ed9e5f4d23972d09386997da5d1a835eeChad Rosier}
1806603c8276825ee44d29475023455a6888b73225ea4Chad Rosier
180674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vabsd_s64(i64 %a) #0 {
180684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABSD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.abs.i64(i64 %a) #4
180694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VABSD_S64_I]]
18070567fd23e1e108c8b3441ea01dd3e7453ea04acffChad Rosierint64_t test_vabsd_s64(int64_t a) {
18071567fd23e1e108c8b3441ea01dd3e7453ea04acffChad Rosier  return (int64_t)vabsd_s64(a);
18072567fd23e1e108c8b3441ea01dd3e7453ea04acffChad Rosier}
18073567fd23e1e108c8b3441ea01dd3e7453ea04acffChad Rosier
180744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqabsb_s8(i8 %a) #0 {
180754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
180764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSB_S8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqabs.v8i8(<8 x i8> [[TMP0]]) #4
180774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQABSB_S8_I]], i64 0
180784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
1807903c8276825ee44d29475023455a6888b73225ea4Chad Rosierint8_t test_vqabsb_s8(int8_t a) {
1808003c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int8_t)vqabsb_s8(a);
1808103c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
1808203c8276825ee44d29475023455a6888b73225ea4Chad Rosier
180834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqabsh_s16(i16 %a) #0 {
180844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
180854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqabs.v4i16(<4 x i16> [[TMP0]]) #4
180864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQABSH_S16_I]], i64 0
180874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
1808803c8276825ee44d29475023455a6888b73225ea4Chad Rosierint16_t test_vqabsh_s16(int16_t a) {
1808903c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int16_t)vqabsh_s16(a);
1809003c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
1809103c8276825ee44d29475023455a6888b73225ea4Chad Rosier
180924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqabss_s32(i32 %a) #0 {
180934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqabs.i32(i32 %a) #4
180944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQABSS_S32_I]]
1809503c8276825ee44d29475023455a6888b73225ea4Chad Rosierint32_t test_vqabss_s32(int32_t a) {
1809603c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int32_t)vqabss_s32(a);
1809703c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
1809803c8276825ee44d29475023455a6888b73225ea4Chad Rosier
180994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqabsd_s64(i64 %a) #0 {
181004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.sqabs.i64(i64 %a) #4
181014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQABSD_S64_I]]
1810203c8276825ee44d29475023455a6888b73225ea4Chad Rosierint64_t test_vqabsd_s64(int64_t a) {
1810303c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int64_t)vqabsd_s64(a);
1810403c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
1810503c8276825ee44d29475023455a6888b73225ea4Chad Rosier
181064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vnegd_s64(i64 %a) #0 {
181074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VNEGD_I:%.*]] = sub i64 0, %a
181084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VNEGD_I]]
18109cced97c345843a41ff68c9536bf54a0dfb772846Chad Rosierint64_t test_vnegd_s64(int64_t a) {
18110cced97c345843a41ff68c9536bf54a0dfb772846Chad Rosier  return (int64_t)vnegd_s64(a);
18111cced97c345843a41ff68c9536bf54a0dfb772846Chad Rosier}
18112cced97c345843a41ff68c9536bf54a0dfb772846Chad Rosier
181134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqnegb_s8(i8 %a) #0 {
181144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
181154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGB_S8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqneg.v8i8(<8 x i8> [[TMP0]]) #4
181164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQNEGB_S8_I]], i64 0
181174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
1811803c8276825ee44d29475023455a6888b73225ea4Chad Rosierint8_t test_vqnegb_s8(int8_t a) {
1811903c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int8_t)vqnegb_s8(a);
1812003c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
1812103c8276825ee44d29475023455a6888b73225ea4Chad Rosier
181224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqnegh_s16(i16 %a) #0 {
181234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
181244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqneg.v4i16(<4 x i16> [[TMP0]]) #4
181254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQNEGH_S16_I]], i64 0
181264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
1812703c8276825ee44d29475023455a6888b73225ea4Chad Rosierint16_t test_vqnegh_s16(int16_t a) {
1812803c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int16_t)vqnegh_s16(a);
1812903c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
1813003c8276825ee44d29475023455a6888b73225ea4Chad Rosier
181314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqnegs_s32(i32 %a) #0 {
181324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqneg.i32(i32 %a) #4
181334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQNEGS_S32_I]]
1813403c8276825ee44d29475023455a6888b73225ea4Chad Rosierint32_t test_vqnegs_s32(int32_t a) {
1813503c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int32_t)vqnegs_s32(a);
1813603c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
1813703c8276825ee44d29475023455a6888b73225ea4Chad Rosier
181384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqnegd_s64(i64 %a) #0 {
181394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.sqneg.i64(i64 %a) #4
181404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQNEGD_S64_I]]
1814103c8276825ee44d29475023455a6888b73225ea4Chad Rosierint64_t test_vqnegd_s64(int64_t a) {
1814203c8276825ee44d29475023455a6888b73225ea4Chad Rosier  return (int64_t)vqnegd_s64(a);
1814303c8276825ee44d29475023455a6888b73225ea4Chad Rosier}
18144a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
181454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vuqaddb_s8(i8 %a, i8 %b) #0 {
181464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
181474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
181484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADDB_S8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.suqadd.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
181494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VUQADDB_S8_I]], i64 0
181504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
18151a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosierint8_t test_vuqaddb_s8(int8_t a, int8_t b) {
18152a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (int8_t)vuqaddb_s8(a, b);
18153a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18154a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
181554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vuqaddh_s16(i16 %a, i16 %b) #0 {
181564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
181574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
181584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADDH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.suqadd.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
181594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VUQADDH_S16_I]], i64 0
181604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
18161a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosierint16_t test_vuqaddh_s16(int16_t a, int16_t b) {
18162a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (int16_t)vuqaddh_s16(a, b);
18163a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18164a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
181654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vuqadds_s32(i32 %a, i32 %b) #0 {
181664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADDS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.suqadd.i32(i32 %a, i32 %b) #4
181674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VUQADDS_S32_I]]
18168a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosierint32_t test_vuqadds_s32(int32_t a, int32_t b) {
18169a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (int32_t)vuqadds_s32(a, b);
18170a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18171a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
181724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vuqaddd_s64(i64 %a, i64 %b) #0 {
181734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADDD_S64_I:%.*]] = call i64 @llvm.aarch64.neon.suqadd.i64(i64 %a, i64 %b) #4
181744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VUQADDD_S64_I]]
18175a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosierint64_t test_vuqaddd_s64(int64_t a, int64_t b) {
18176a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (int64_t)vuqaddd_s64(a, b);
18177a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18178a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
181794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vsqaddb_u8(i8 %a, i8 %b) #0 {
181804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
181814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 %b, i64 0
181824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADDB_U8_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.usqadd.v8i8(<8 x i8> [[TMP0]], <8 x i8> [[TMP1]]) #4
181834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <8 x i8> [[VSQADDB_U8_I]], i64 0
181844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP2]]
18185a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosieruint8_t test_vsqaddb_u8(uint8_t a, uint8_t b) {
18186a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (uint8_t)vsqaddb_u8(a, b);
18187a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18188a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
181894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vsqaddh_u16(i16 %a, i16 %b) #0 {
181904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
181914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
181924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADDH_U16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.usqadd.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
181934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i16> [[VSQADDH_U16_I]], i64 0
181944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP2]]
18195a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosieruint16_t test_vsqaddh_u16(uint16_t a, uint16_t b) {
18196a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (uint16_t)vsqaddh_u16(a, b);
18197a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18198a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
181994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vsqadds_u32(i32 %a, i32 %b) #0 {
182004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADDS_U32_I:%.*]] = call i32 @llvm.aarch64.neon.usqadd.i32(i32 %a, i32 %b) #4
182014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VSQADDS_U32_I]]
18202a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosieruint32_t test_vsqadds_u32(uint32_t a, uint32_t b) {
18203a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (uint32_t)vsqadds_u32(a, b);
18204a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18205a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier
182064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsqaddd_u64(i64 %a, i64 %b) #0 {
182074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADDD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.usqadd.i64(i64 %a, i64 %b) #4
182084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSQADDD_U64_I]]
18209a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosieruint64_t test_vsqaddd_u64(uint64_t a, uint64_t b) {
18210a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier  return (uint64_t)vsqaddd_u64(a, b);
18211a48c4a87034a9478b73c25dada9921d1aa16d318Chad Rosier}
18212d867422c86914e055b8772ec1f22b349e15de94bChad Rosier
182134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqdmlalh_s16(i32 %a, i16 %b, i16 %c) #0 {
182144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
182154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %c, i64 0
182164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
182174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[LANE0_I:%.*]] = extractelement <4 x i32> [[VQDMLXL_I]], i64 0
182184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL1_I:%.*]] = call i32 @llvm.aarch64.neon.sqadd.i32(i32 %a, i32 [[LANE0_I]]) #4
182194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQDMLXL1_I]]
18220fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosierint32_t test_vqdmlalh_s16(int32_t a, int16_t b, int16_t c) {
18221651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
18222fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosier  return (int32_t)vqdmlalh_s16(a, b, c);
18223d867422c86914e055b8772ec1f22b349e15de94bChad Rosier}
18224d867422c86914e055b8772ec1f22b349e15de94bChad Rosier
182254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqdmlals_s32(i64 %a, i32 %b, i32 %c) #0 {
182264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL_I:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %b, i32 %c) #4
182274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL1_I:%.*]] = call i64 @llvm.aarch64.neon.sqadd.i64(i64 %a, i64 [[VQDMLXL_I]]) #4
182284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQDMLXL1_I]]
18229fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosierint64_t test_vqdmlals_s32(int64_t a, int32_t b, int32_t c) {
18230fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosier  return (int64_t)vqdmlals_s32(a, b, c);
18231d867422c86914e055b8772ec1f22b349e15de94bChad Rosier}
18232d867422c86914e055b8772ec1f22b349e15de94bChad Rosier
182334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqdmlslh_s16(i32 %a, i16 %b, i16 %c) #0 {
182344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
182354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %c, i64 0
182364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
182374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[LANE0_I:%.*]] = extractelement <4 x i32> [[VQDMLXL_I]], i64 0
182384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL1_I:%.*]] = call i32 @llvm.aarch64.neon.sqsub.i32(i32 %a, i32 [[LANE0_I]]) #4
182394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQDMLXL1_I]]
18240fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosierint32_t test_vqdmlslh_s16(int32_t a, int16_t b, int16_t c) {
18241651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
18242fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosier  return (int32_t)vqdmlslh_s16(a, b, c);
18243d867422c86914e055b8772ec1f22b349e15de94bChad Rosier}
18244d867422c86914e055b8772ec1f22b349e15de94bChad Rosier
182454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqdmlsls_s32(i64 %a, i32 %b, i32 %c) #0 {
182464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL_I:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %b, i32 %c) #4
182474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMLXL1_I:%.*]] = call i64 @llvm.aarch64.neon.sqsub.i64(i64 %a, i64 [[VQDMLXL_I]]) #4
182484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQDMLXL1_I]]
18249fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosierint64_t test_vqdmlsls_s32(int64_t a, int32_t b, int32_t c) {
18250fae3a1a40802cd4cc5b8d806e31da78ef3d83d13Chad Rosier  return (int64_t)vqdmlsls_s32(a, b, c);
18251d867422c86914e055b8772ec1f22b349e15de94bChad Rosier}
18252d867422c86914e055b8772ec1f22b349e15de94bChad Rosier
182534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqdmullh_s16(i16 %a, i16 %b) #0 {
182544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
182554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
182564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULLH_S16_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) #4
182574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = extractelement <4 x i32> [[VQDMULLH_S16_I]], i64 0
182584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[TMP2]]
18259d867422c86914e055b8772ec1f22b349e15de94bChad Rosierint32_t test_vqdmullh_s16(int16_t a, int16_t b) {
18260d867422c86914e055b8772ec1f22b349e15de94bChad Rosier  return (int32_t)vqdmullh_s16(a, b);
18261d867422c86914e055b8772ec1f22b349e15de94bChad Rosier}
18262d867422c86914e055b8772ec1f22b349e15de94bChad Rosier
182634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqdmulls_s32(i32 %a, i32 %b) #0 {
182644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQDMULLS_S32_I:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %a, i32 %b) #4
182654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQDMULLS_S32_I]]
18266d867422c86914e055b8772ec1f22b349e15de94bChad Rosierint64_t test_vqdmulls_s32(int32_t a, int32_t b) {
18267d867422c86914e055b8772ec1f22b349e15de94bChad Rosier  return (int64_t)vqdmulls_s32(a, b);
18268d867422c86914e055b8772ec1f22b349e15de94bChad Rosier}
182694553a858e46299955333babfa052a512682869fdChad Rosier
182704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqmovunh_s16(i16 %a) #0 {
182714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
182724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUNH_S16_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqxtun.v8i8(<8 x i16> [[TMP0]]) #4
182734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQMOVUNH_S16_I]], i64 0
182744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
182754553a858e46299955333babfa052a512682869fdChad Rosierint8_t test_vqmovunh_s16(int16_t a) {
182764553a858e46299955333babfa052a512682869fdChad Rosier  return (int8_t)vqmovunh_s16(a);
182774553a858e46299955333babfa052a512682869fdChad Rosier}
182784553a858e46299955333babfa052a512682869fdChad Rosier
182794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqmovuns_s32(i32 %a) #0 {
182804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
182814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUNS_S32_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqxtun.v4i16(<4 x i32> [[TMP0]]) #4
182824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQMOVUNS_S32_I]], i64 0
182834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
182844553a858e46299955333babfa052a512682869fdChad Rosierint16_t test_vqmovuns_s32(int32_t a) {
182854553a858e46299955333babfa052a512682869fdChad Rosier  return (int16_t)vqmovuns_s32(a);
182864553a858e46299955333babfa052a512682869fdChad Rosier}
182874553a858e46299955333babfa052a512682869fdChad Rosier
182884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqmovund_s64(i64 %a) #0 {
182894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUND_S64_I:%.*]] = call i32 @llvm.aarch64.neon.scalar.sqxtun.i32.i64(i64 %a) #4
182904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQMOVUND_S64_I]]
182914553a858e46299955333babfa052a512682869fdChad Rosierint32_t test_vqmovund_s64(int64_t a) {
182924553a858e46299955333babfa052a512682869fdChad Rosier  return (int32_t)vqmovund_s64(a);
182934553a858e46299955333babfa052a512682869fdChad Rosier}
182944553a858e46299955333babfa052a512682869fdChad Rosier
182954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqmovnh_s16(i16 %a) #0 {
182964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
182974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVNH_S16_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqxtn.v8i8(<8 x i16> [[TMP0]]) #4
182984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQMOVNH_S16_I]], i64 0
182994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
183004553a858e46299955333babfa052a512682869fdChad Rosierint8_t test_vqmovnh_s16(int16_t a) {
183014553a858e46299955333babfa052a512682869fdChad Rosier  return (int8_t)vqmovnh_s16(a);
183024553a858e46299955333babfa052a512682869fdChad Rosier}
183034553a858e46299955333babfa052a512682869fdChad Rosier
183044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqmovns_s32(i32 %a) #0 {
183054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
183064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVNS_S32_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32> [[TMP0]]) #4
183074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQMOVNS_S32_I]], i64 0
183084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
183094553a858e46299955333babfa052a512682869fdChad Rosierint16_t test_vqmovns_s32(int32_t a) {
183104553a858e46299955333babfa052a512682869fdChad Rosier  return (int16_t)vqmovns_s32(a);
183114553a858e46299955333babfa052a512682869fdChad Rosier}
183124553a858e46299955333babfa052a512682869fdChad Rosier
183134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqmovnd_s64(i64 %a) #0 {
183144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVND_S64_I:%.*]] = call i32 @llvm.aarch64.neon.scalar.sqxtn.i32.i64(i64 %a) #4
183154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQMOVND_S64_I]]
183164553a858e46299955333babfa052a512682869fdChad Rosierint32_t test_vqmovnd_s64(int64_t a) {
183174553a858e46299955333babfa052a512682869fdChad Rosier  return (int32_t)vqmovnd_s64(a);
183184553a858e46299955333babfa052a512682869fdChad Rosier}
183194553a858e46299955333babfa052a512682869fdChad Rosier
183204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqmovnh_u16(i16 %a) #0 {
183214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
183224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVNH_U16_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqxtn.v8i8(<8 x i16> [[TMP0]]) #4
183234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQMOVNH_U16_I]], i64 0
183244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
183254553a858e46299955333babfa052a512682869fdChad Rosierint8_t test_vqmovnh_u16(int16_t a) {
183264553a858e46299955333babfa052a512682869fdChad Rosier  return (int8_t)vqmovnh_u16(a);
183274553a858e46299955333babfa052a512682869fdChad Rosier}
183284553a858e46299955333babfa052a512682869fdChad Rosier
183294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqmovns_u32(i32 %a) #0 {
183304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
183314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVNS_U32_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqxtn.v4i16(<4 x i32> [[TMP0]]) #4
183324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQMOVNS_U32_I]], i64 0
183334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
183344553a858e46299955333babfa052a512682869fdChad Rosierint16_t test_vqmovns_u32(int32_t a) {
183354553a858e46299955333babfa052a512682869fdChad Rosier  return (int16_t)vqmovns_u32(a);
183364553a858e46299955333babfa052a512682869fdChad Rosier}
183374553a858e46299955333babfa052a512682869fdChad Rosier
183384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqmovnd_u64(i64 %a) #0 {
183394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVND_U64_I:%.*]] = call i32 @llvm.aarch64.neon.scalar.uqxtn.i32.i64(i64 %a) #4
183404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQMOVND_U64_I]]
183414553a858e46299955333babfa052a512682869fdChad Rosierint32_t test_vqmovnd_u64(int64_t a) {
183424553a858e46299955333babfa052a512682869fdChad Rosier  return (int32_t)vqmovnd_u64(a);
183434553a858e46299955333babfa052a512682869fdChad Rosier}
18344564020954e9eb01293d90802c89a02f87301e095Chad Rosier
183454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vceqs_f32(float %a, float %b) #0 {
183464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oeq float %a, %b
183474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i32
183484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCMPD_I]]
18349564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vceqs_f32(float32_t a, float32_t b) {
18350564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vceqs_f32(a, b);
18351564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18352564020954e9eb01293d90802c89a02f87301e095Chad Rosier
183534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vceqd_f64(double %a, double %b) #0 {
183544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oeq double %a, %b
183554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i64
183564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCMPD_I]]
18357564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vceqd_f64(float64_t a, float64_t b) {
18358564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vceqd_f64(a, b);
18359564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18360564020954e9eb01293d90802c89a02f87301e095Chad Rosier
183614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vceqzs_f32(float %a) #0 {
183624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oeq float %a, 0.000000e+00
183634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext i1 [[TMP0]] to i32
183644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCEQZ_I]]
18365564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vceqzs_f32(float32_t a) {
18366564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vceqzs_f32(a);
18367564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18368564020954e9eb01293d90802c89a02f87301e095Chad Rosier
183694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vceqzd_f64(double %a) #0 {
183704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oeq double %a, 0.000000e+00
183714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext i1 [[TMP0]] to i64
183724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCEQZ_I]]
18373564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vceqzd_f64(float64_t a) {
18374564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vceqzd_f64(a);
18375564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18376564020954e9eb01293d90802c89a02f87301e095Chad Rosier
183774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcges_f32(float %a, float %b) #0 {
183784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oge float %a, %b
183794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i32
183804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCMPD_I]]
18381564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcges_f32(float32_t a, float32_t b) {
18382564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcges_f32(a, b);
18383564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18384564020954e9eb01293d90802c89a02f87301e095Chad Rosier
183854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcged_f64(double %a, double %b) #0 {
183864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oge double %a, %b
183874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i64
183884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCMPD_I]]
18389564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcged_f64(float64_t a, float64_t b) {
18390564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcged_f64(a, b);
18391564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18392564020954e9eb01293d90802c89a02f87301e095Chad Rosier
183934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcgezs_f32(float %a) #0 {
183944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oge float %a, 0.000000e+00
183954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext i1 [[TMP0]] to i32
183964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCGEZ_I]]
18397564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcgezs_f32(float32_t a) {
18398564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcgezs_f32(a);
18399564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18400564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcgezd_f64(double %a) #0 {
184024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp oge double %a, 0.000000e+00
184034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext i1 [[TMP0]] to i64
184044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCGEZ_I]]
18405564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcgezd_f64(float64_t a) {
18406564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcgezd_f64(a);
18407564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18408564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcgts_f32(float %a, float %b) #0 {
184104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ogt float %a, %b
184114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i32
184124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCMPD_I]]
18413564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcgts_f32(float32_t a, float32_t b) {
18414564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcgts_f32(a, b);
18415564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18416564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcgtd_f64(double %a, double %b) #0 {
184184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ogt double %a, %b
184194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i64
184204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCMPD_I]]
18421564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcgtd_f64(float64_t a, float64_t b) {
18422564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcgtd_f64(a, b);
18423564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18424564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcgtzs_f32(float %a) #0 {
184264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ogt float %a, 0.000000e+00
184274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext i1 [[TMP0]] to i32
184284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCGTZ_I]]
18429564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcgtzs_f32(float32_t a) {
18430564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcgtzs_f32(a);
18431564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18432564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcgtzd_f64(double %a) #0 {
184344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ogt double %a, 0.000000e+00
184354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext i1 [[TMP0]] to i64
184364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCGTZ_I]]
18437564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcgtzd_f64(float64_t a) {
18438564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcgtzd_f64(a);
18439564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18440564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcles_f32(float %a, float %b) #0 {
184424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ole float %a, %b
184434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i32
184444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCMPD_I]]
18445564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcles_f32(float32_t a, float32_t b) {
18446564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcles_f32(a, b);
18447564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18448564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcled_f64(double %a, double %b) #0 {
184504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ole double %a, %b
184514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i64
184524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCMPD_I]]
18453564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcled_f64(float64_t a, float64_t b) {
18454564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcled_f64(a, b);
18455564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18456564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vclezs_f32(float %a) #0 {
184584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ole float %a, 0.000000e+00
184594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext i1 [[TMP0]] to i32
184604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCLEZ_I]]
18461564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vclezs_f32(float32_t a) {
18462564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vclezs_f32(a);
18463564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18464564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vclezd_f64(double %a) #0 {
184664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp ole double %a, 0.000000e+00
184674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext i1 [[TMP0]] to i64
184684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCLEZ_I]]
18469564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vclezd_f64(float64_t a) {
18470564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vclezd_f64(a);
18471564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18472564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vclts_f32(float %a, float %b) #0 {
184744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp olt float %a, %b
184754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i32
184764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCMPD_I]]
18477564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vclts_f32(float32_t a, float32_t b) {
18478564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vclts_f32(a, b);
18479564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18480564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcltd_f64(double %a, double %b) #0 {
184824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp olt double %a, %b
184834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCMPD_I:%.*]] = sext i1 [[TMP0]] to i64
184844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCMPD_I]]
18485564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcltd_f64(float64_t a, float64_t b) {
18486564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcltd_f64(a, b);
18487564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18488564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcltzs_f32(float %a) #0 {
184904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp olt float %a, 0.000000e+00
184914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext i1 [[TMP0]] to i32
184924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCLTZ_I]]
18493564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcltzs_f32(float32_t a) {
18494564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcltzs_f32(a);
18495564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18496564020954e9eb01293d90802c89a02f87301e095Chad Rosier
184974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcltzd_f64(double %a) #0 {
184984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = fcmp olt double %a, 0.000000e+00
184994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext i1 [[TMP0]] to i64
185004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCLTZ_I]]
18501564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcltzd_f64(float64_t a) {
18502564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcltzd_f64(a);
18503564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18504564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcages_f32(float %a, float %b) #0 {
185064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGES_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facge.i32.f32(float %a, float %b) #4
185074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCAGES_F32_I]]
18508564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcages_f32(float32_t a, float32_t b) {
18509564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcages_f32(a, b);
18510564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18511564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcaged_f64(double %a, double %b) #0 {
185134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGED_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facge.i64.f64(double %a, double %b) #4
185144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCAGED_F64_I]]
18515564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcaged_f64(float64_t a, float64_t b) {
18516564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcaged_f64(a, b);
18517564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18518564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcagts_f32(float %a, float %b) #0 {
185204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTS_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facgt.i32.f32(float %a, float %b) #4
185214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCAGTS_F32_I]]
18522564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcagts_f32(float32_t a, float32_t b) {
18523564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcagts_f32(a, b);
18524564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18525564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcagtd_f64(double %a, double %b) #0 {
185274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCAGTD_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facgt.i64.f64(double %a, double %b) #4
185284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCAGTD_F64_I]]
18529564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcagtd_f64(float64_t a, float64_t b) {
18530564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcagtd_f64(a, b);
18531564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18532564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcales_f32(float %a, float %b) #0 {
185344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALES_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facge.i32.f32(float %b, float %a) #4
185354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCALES_F32_I]]
18536564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcales_f32(float32_t a, float32_t b) {
18537564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcales_f32(a, b);
18538564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18539564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcaled_f64(double %a, double %b) #0 {
185414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALED_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facge.i64.f64(double %b, double %a) #4
185424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCALED_F64_I]]
18543564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcaled_f64(float64_t a, float64_t b) {
18544564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcaled_f64(a, b);
18545564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18546564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcalts_f32(float %a, float %b) #0 {
185484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTS_F32_I:%.*]] = call i32 @llvm.aarch64.neon.facgt.i32.f32(float %b, float %a) #4
185494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCALTS_F32_I]]
18550564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint32_t test_vcalts_f32(float32_t a, float32_t b) {
18551564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint32_t)vcalts_f32(a, b);
18552564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18553564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcaltd_f64(double %a, double %b) #0 {
185554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCALTD_F64_I:%.*]] = call i64 @llvm.aarch64.neon.facgt.i64.f64(double %b, double %a) #4
185564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCALTD_F64_I]]
18557564020954e9eb01293d90802c89a02f87301e095Chad Rosieruint64_t test_vcaltd_f64(float64_t a, float64_t b) {
18558564020954e9eb01293d90802c89a02f87301e095Chad Rosier  return (uint64_t)vcaltd_f64(a, b);
18559564020954e9eb01293d90802c89a02f87301e095Chad Rosier}
18560564020954e9eb01293d90802c89a02f87301e095Chad Rosier
185614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vshrd_n_s64(i64 %a) #0 {
185624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHRD_N:%.*]] = ashr i64 %a, 1
185634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[SHRD_N]]
18564f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint64_t test_vshrd_n_s64(int64_t a) {
18565f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int64_t)vshrd_n_s64(a, 1);
18566f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18567f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
185684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vshr_n_s64(<1 x i64> %a) #0 {
185694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
185704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
185714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = ashr <1 x i64> [[TMP1]], <i64 1>
185724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSHR_N]]
18573a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosierint64x1_t test_vshr_n_s64(int64x1_t a) {
18574a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vshr_n_s64(a, 1);
18575a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18576a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
185774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vshrd_n_u64(i64 %a) #0 {
185784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 0
18579f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint64_t test_vshrd_n_u64(uint64_t a) {
185806bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
18581f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint64_t)vshrd_n_u64(a, 64);
18582f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18583f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
185844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vshrd_n_u64_2() #0 {
185854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 0
185866bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesuint64_t test_vshrd_n_u64_2() {
185876bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
185886bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  uint64_t a = UINT64_C(0xf000000000000000);
185896bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  return vshrd_n_u64(a, 64);
185906bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}
185916bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
185924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vshr_n_u64(<1 x i64> %a) #0 {
185934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
185944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
185954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHR_N:%.*]] = lshr <1 x i64> [[TMP1]], <i64 1>
185964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSHR_N]]
18597a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosieruint64x1_t test_vshr_n_u64(uint64x1_t a) {
18598a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vshr_n_u64(a, 1);
18599a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18600a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
186014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vrshrd_n_s64(i64 %a) #0 {
186024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call i64 @llvm.aarch64.neon.srshl.i64(i64 %a, i64 -63)
186034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VRSHR_N]]
18604f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint64_t test_vrshrd_n_s64(int64_t a) {
18605f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int64_t)vrshrd_n_s64(a, 63);
18606f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18607f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
186084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vrshr_n_s64(<1 x i64> %a) #0 {
186094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
186104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
186114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.srshl.v1i64(<1 x i64> [[VRSHR_N]], <1 x i64> <i64 -1>)
186124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VRSHR_N1]]
18613a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosierint64x1_t test_vrshr_n_s64(int64x1_t a) {
18614a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vrshr_n_s64(a, 1);
18615a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18616a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
186174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vrshrd_n_u64(i64 %a) #0 {
186184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = call i64 @llvm.aarch64.neon.urshl.i64(i64 %a, i64 -63)
186194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VRSHR_N]]
18620f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint64_t test_vrshrd_n_u64(uint64_t a) {
18621f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint64_t)vrshrd_n_u64(a, 63);
18622f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18623f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
186244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vrshr_n_u64(<1 x i64> %a) #0 {
186254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
186264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
186274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.urshl.v1i64(<1 x i64> [[VRSHR_N]], <1 x i64> <i64 -1>)
186284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VRSHR_N1]]
18629a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosieruint64x1_t test_vrshr_n_u64(uint64x1_t a) {
18630a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vrshr_n_u64(a, 1);
18631a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18632a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
186334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsrad_n_s64(i64 %a, i64 %b) #0 {
186344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHRD_N:%.*]] = ashr i64 %b, 63
186354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add i64 %a, [[SHRD_N]]
186364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[TMP0]]
18637f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint64_t test_vsrad_n_s64(int64_t a, int64_t b) {
18638f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int64_t)vsrad_n_s64(a, b, 63);
18639f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18640f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
186414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsra_n_s64(<1 x i64> %a, <1 x i64> %b) #0 {
186424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
186434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
186444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
186454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
186464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = ashr <1 x i64> [[TMP3]], <i64 1>
186474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <1 x i64> [[TMP2]], [[VSRA_N]]
186484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP4]]
18649f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosierint64x1_t test_vsra_n_s64(int64x1_t a, int64x1_t b) {
18650f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier  return vsra_n_s64(a, b, 1);
18651f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier}
18652f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier
186534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsrad_n_u64(i64 %a, i64 %b) #0 {
186544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHRD_N:%.*]] = lshr i64 %b, 63
186554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = add i64 %a, [[SHRD_N]]
186564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[TMP0]]
18657f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint64_t test_vsrad_n_u64(uint64_t a, uint64_t b) {
18658f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint64_t)vsrad_n_u64(a, b, 63);
18659f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18660f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
186614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsrad_n_u64_2(i64 %a, i64 %b) #0 {
186624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 %a
186636bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesuint64_t test_vsrad_n_u64_2(uint64_t a, uint64_t b) {
186646bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
186656bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  return (uint64_t)vsrad_n_u64(a, b, 64);
186666bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}
186676bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
186684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsra_n_u64(<1 x i64> %a, <1 x i64> %b) #0 {
186694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
186704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
186714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
186724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
186734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRA_N:%.*]] = lshr <1 x i64> [[TMP3]], <i64 1>
186744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = add <1 x i64> [[TMP2]], [[VSRA_N]]
186754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP4]]
18676f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosieruint64x1_t test_vsra_n_u64(uint64x1_t a, uint64x1_t b) {
18677f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier  return vsra_n_u64(a, b, 1);
18678f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier}
18679f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier
186804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vrsrad_n_s64(i64 %a, i64 %b) #0 {
186814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = call i64 @llvm.aarch64.neon.srshl.i64(i64 %b, i64 -63)
186824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = add i64 %a, [[TMP0]]
186834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[TMP1]]
18684f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint64_t test_vrsrad_n_s64(int64_t a, int64_t b) {
18685f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int64_t)vrsrad_n_s64(a, b, 63);
18686f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18687f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
186884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vrsra_n_s64(<1 x i64> %a, <1 x i64> %b) #0 {
186894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
186904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
186914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
186924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.srshl.v1i64(<1 x i64> [[VRSHR_N]], <1 x i64> <i64 -1>)
186934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
186944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <1 x i64> [[TMP2]], [[VRSHR_N1]]
186954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP3]]
18696f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosierint64x1_t test_vrsra_n_s64(int64x1_t a, int64x1_t b) {
18697f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier  return vrsra_n_s64(a, b, 1);
18698f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier}
18699f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier
187004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vrsrad_n_u64(i64 %a, i64 %b) #0 {
187014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = call i64 @llvm.aarch64.neon.urshl.i64(i64 %b, i64 -63)
187024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = add i64 %a, [[TMP0]]
187034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[TMP1]]
18704f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint64_t test_vrsrad_n_u64(uint64_t a, uint64_t b) {
18705f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint64_t)vrsrad_n_u64(a, b, 63);
18706f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18707f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
187084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vrsra_n_u64(<1 x i64> %a, <1 x i64> %b) #0 {
187094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
187104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
187114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
187124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSHR_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.urshl.v1i64(<1 x i64> [[VRSHR_N]], <1 x i64> <i64 -1>)
187134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
187144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <1 x i64> [[TMP2]], [[VRSHR_N1]]
187154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP3]]
18716f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosieruint64x1_t test_vrsra_n_u64(uint64x1_t a, uint64x1_t b) {
18717f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier  return vrsra_n_u64(a, b, 1);
18718f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier}
18719f46e56bf99384b742228a9be215f38bf107c1a3bChad Rosier
187204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vshld_n_s64(i64 %a) #0 {
187214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHLD_N:%.*]] = shl i64 %a, 1
187224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[SHLD_N]]
18723f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint64_t test_vshld_n_s64(int64_t a) {
18724651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return (int64_t)vshld_n_s64(a, 1);
18725f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
187264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vshl_n_s64(<1 x i64> %a) #0 {
187274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
187284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
187294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <1 x i64> [[TMP1]], <i64 1>
187304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSHL_N]]
18731a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosierint64x1_t test_vshl_n_s64(int64x1_t a) {
18732a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vshl_n_s64(a, 1);
18733a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18734f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
187354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vshld_n_u64(i64 %a) #0 {
187364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHLD_N:%.*]] = shl i64 %a, 63
187374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[SHLD_N]]
18738f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint64_t test_vshld_n_u64(uint64_t a) {
18739f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint64_t)vshld_n_u64(a, 63);
18740f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18741f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
187424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vshl_n_u64(<1 x i64> %a) #0 {
187434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
187444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
187454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHL_N:%.*]] = shl <1 x i64> [[TMP1]], <i64 1>
187464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSHL_N]]
18747a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosieruint64x1_t test_vshl_n_u64(uint64x1_t a) {
18748a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vshl_n_u64(a, 1);
18749a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18750a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
187514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshlb_n_s8(i8 %a) #0 {
187524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
187534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLB_N_S8:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> [[TMP0]], <8 x i8> <i8 7, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>)
187544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQSHLB_N_S8]], i64 0
187554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
18756f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint8_t test_vqshlb_n_s8(int8_t a) {
18757f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int8_t)vqshlb_n_s8(a, 7);
18758f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18759f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
187604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshlh_n_s16(i16 %a) #0 {
187614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
187624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLH_N_S16:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> [[TMP0]], <4 x i16> <i16 15, i16 undef, i16 undef, i16 undef>)
187634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQSHLH_N_S16]], i64 0
187644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
18765f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint16_t test_vqshlh_n_s16(int16_t a) {
18766f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int16_t)vqshlh_n_s16(a, 15);
18767f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18768f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
187694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshls_n_s32(i32 %a) #0 {
187704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLS_N_S32:%.*]] = call i32 @llvm.aarch64.neon.sqshl.i32(i32 %a, i32 31)
187714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHLS_N_S32]]
18772f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint32_t test_vqshls_n_s32(int32_t a) {
18773f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int32_t)vqshls_n_s32(a, 31);
18774f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18775f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
187764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqshld_n_s64(i64 %a) #0 {
187774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = call i64 @llvm.aarch64.neon.sqshl.i64(i64 %a, i64 63)
187784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQSHL_N]]
18779f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint64_t test_vqshld_n_s64(int64_t a) {
18780f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int64_t)vqshld_n_s64(a, 63);
18781f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18782f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
187834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshl_n_s8(<8 x i8> %a) #0 {
187844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> %a, <8 x i8> zeroinitializer)
187854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHL_N]]
18786651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x8_t test_vqshl_n_s8(int8x8_t a) {
18787651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshl_n_s8(a, 0);
18788651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18789651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
187904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshlq_n_s8(<16 x i8> %a) #0 {
187914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8> %a, <16 x i8> zeroinitializer)
187924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQSHL_N]]
18793651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vqshlq_n_s8(int8x16_t a) {
18794651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_s8(a, 0);
18795651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18796651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
187974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshl_n_s16(<4 x i16> %a) #0 {
187984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
187994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
188004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> [[VQSHL_N]], <4 x i16> zeroinitializer)
188014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQSHL_N1]]
18802651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x4_t test_vqshl_n_s16(int16x4_t a) {
18803651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshl_n_s16(a, 0);
18804651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18805651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshlq_n_s16(<8 x i16> %a) #0 {
188074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
188084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
188094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16> [[VQSHL_N]], <8 x i16> zeroinitializer)
188104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VQSHL_N1]]
18811651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vqshlq_n_s16(int16x8_t a) {
18812651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_s16(a, 0);
18813651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18814651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshl_n_s32(<2 x i32> %a) #0 {
188164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
188174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
188184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32> [[VQSHL_N]], <2 x i32> zeroinitializer)
188194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQSHL_N1]]
18820651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x2_t test_vqshl_n_s32(int32x2_t a) {
18821651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshl_n_s32(a, 0);
18822651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18823651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshlq_n_s32(<4 x i32> %a) #0 {
188254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
188264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
188274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32> [[VQSHL_N]], <4 x i32> zeroinitializer)
188284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VQSHL_N1]]
18829651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqshlq_n_s32(int32x4_t a) {
18830651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_s32(a, 0);
18831651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18832651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqshlq_n_s64(<2 x i64> %a) #0 {
188344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
188354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
188364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64> [[VQSHL_N]], <2 x i64> zeroinitializer)
188374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VQSHL_N1]]
18838651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vqshlq_n_s64(int64x2_t a) {
18839651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_s64(a, 0);
18840651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18841651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqshl_n_u8(<8 x i8> %a) #0 {
188434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %a, <8 x i8> zeroinitializer)
188444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQSHL_N]]
18845651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x8_t test_vqshl_n_u8(uint8x8_t a) {
18846651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshl_n_u8(a, 0);
18847651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18848651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqshlq_n_u8(<16 x i8> %a) #0 {
188504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = call <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8> %a, <16 x i8> zeroinitializer)
188514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQSHL_N]]
18852651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqshlq_n_u8(uint8x16_t a) {
18853651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_u8(a, 0);
18854651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18855651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqshl_n_u16(<4 x i16> %a) #0 {
188574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
188584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
188594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> [[VQSHL_N]], <4 x i16> zeroinitializer)
188604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VQSHL_N1]]
18861651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x4_t test_vqshl_n_u16(uint16x4_t a) {
18862651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshl_n_u16(a, 0);
18863651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18864651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqshlq_n_u16(<8 x i16> %a) #0 {
188664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
188674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
188684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16> [[VQSHL_N]], <8 x i16> zeroinitializer)
188694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VQSHL_N1]]
18870651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqshlq_n_u16(uint16x8_t a) {
18871651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_u16(a, 0);
18872651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18873651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqshl_n_u32(<2 x i32> %a) #0 {
188754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
188764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
188774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32> [[VQSHL_N]], <2 x i32> zeroinitializer)
188784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VQSHL_N1]]
18879651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vqshl_n_u32(uint32x2_t a) {
18880651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshl_n_u32(a, 0);
18881651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18882651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqshlq_n_u32(<4 x i32> %a) #0 {
188844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
188854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
188864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32> [[VQSHL_N]], <4 x i32> zeroinitializer)
188874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VQSHL_N1]]
18888651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqshlq_n_u32(uint32x4_t a) {
18889651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_u32(a, 0);
18890651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18891651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
188924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqshlq_n_u64(<2 x i64> %a) #0 {
188934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
188944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
188954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64> [[VQSHL_N]], <2 x i64> zeroinitializer)
188964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VQSHL_N1]]
18897651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vqshlq_n_u64(uint64x2_t a) {
18898651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vqshlq_n_u64(a, 0);
18899651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
18900651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
189014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqshl_n_s64(<1 x i64> %a) #0 {
189024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
189034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
189044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqshl.v1i64(<1 x i64> [[VQSHL_N]], <1 x i64> <i64 1>)
189054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VQSHL_N1]]
18906a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosierint64x1_t test_vqshl_n_s64(int64x1_t a) {
18907a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vqshl_n_s64(a, 1);
18908a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18909a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
189104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshlb_n_u8(i8 %a) #0 {
189114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
189124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLB_N_U8:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> [[TMP0]], <8 x i8> <i8 7, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>)
189134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQSHLB_N_U8]], i64 0
189144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
18915f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint8_t test_vqshlb_n_u8(uint8_t a) {
18916f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint8_t)vqshlb_n_u8(a, 7);
18917f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18918f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshlh_n_u16(i16 %a) #0 {
189204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
189214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLH_N_U16:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> [[TMP0]], <4 x i16> <i16 15, i16 undef, i16 undef, i16 undef>)
189224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQSHLH_N_U16]], i64 0
189234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
18924f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint16_t test_vqshlh_n_u16(uint16_t a) {
18925f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint16_t)vqshlh_n_u16(a, 15);
18926f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18927f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshls_n_u32(i32 %a) #0 {
189294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLS_N_U32:%.*]] = call i32 @llvm.aarch64.neon.uqshl.i32(i32 %a, i32 31)
189304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHLS_N_U32]]
18931f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint32_t test_vqshls_n_u32(uint32_t a) {
18932f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint32_t)vqshls_n_u32(a, 31);
18933f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18934f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqshld_n_u64(i64 %a) #0 {
189364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = call i64 @llvm.aarch64.neon.uqshl.i64(i64 %a, i64 63)
189374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQSHL_N]]
18938f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint64_t test_vqshld_n_u64(uint64_t a) {
18939f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (uint64_t)vqshld_n_u64(a, 63);
18940f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18941f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqshl_n_u64(<1 x i64> %a) #0 {
189434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
189444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
189454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHL_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.uqshl.v1i64(<1 x i64> [[VQSHL_N]], <1 x i64> <i64 1>)
189464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VQSHL_N1]]
18947a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosieruint64x1_t test_vqshl_n_u64(uint64x1_t a) {
18948a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vqshl_n_u64(a, 1);
18949a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18950a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
189514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshlub_n_s8(i8 %a) #0 {
189524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i8> undef, i8 %a, i64 0
189534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLUB_N_S8:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshlu.v8i8(<8 x i8> [[TMP0]], <8 x i8> <i8 7, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>)
189544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQSHLUB_N_S8]], i64 0
189554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
18956f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint8_t test_vqshlub_n_s8(int8_t a) {
18957f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int8_t)vqshlub_n_s8(a, 7);
18958f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18959f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshluh_n_s16(i16 %a) #0 {
189614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
189624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLUH_N_S16:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshlu.v4i16(<4 x i16> [[TMP0]], <4 x i16> <i16 15, i16 undef, i16 undef, i16 undef>)
189634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQSHLUH_N_S16]], i64 0
189644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
18965f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint16_t test_vqshluh_n_s16(int16_t a) {
18966f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int16_t)vqshluh_n_s16(a, 15);
18967f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18968f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshlus_n_s32(i32 %a) #0 {
189704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLUS_N_S32:%.*]] = call i32 @llvm.aarch64.neon.sqshlu.i32(i32 %a, i32 31)
189714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHLUS_N_S32]]
18972f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint32_t test_vqshlus_n_s32(int32_t a) {
18973f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int32_t)vqshlus_n_s32(a, 31);
18974f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18975f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vqshlud_n_s64(i64 %a) #0 {
189774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = call i64 @llvm.aarch64.neon.sqshlu.i64(i64 %a, i64 63)
189784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VQSHLU_N]]
18979f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint64_t test_vqshlud_n_s64(int64_t a) {
18980f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier  return (int64_t)vqshlud_n_s64(a, 63);
18981f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
18982f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
189834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqshlu_n_s64(<1 x i64> %a) #0 {
189844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
189854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
189864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHLU_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqshlu.v1i64(<1 x i64> [[VQSHLU_N]], <1 x i64> <i64 1>)
189874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VQSHLU_N1]]
18988a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosieruint64x1_t test_vqshlu_n_s64(int64x1_t a) {
18989a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vqshlu_n_s64(a, 1);
18990a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
18991a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
189924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsrid_n_s64(i64 %a, i64 %b) #0 {
189934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_S64:%.*]] = bitcast i64 %a to <1 x i64>
189944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_S641:%.*]] = bitcast i64 %b to <1 x i64>
189954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_S642:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsri.v1i64(<1 x i64> [[VSRID_N_S64]], <1 x i64> [[VSRID_N_S641]], i32 63)
189964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_S643:%.*]] = bitcast <1 x i64> [[VSRID_N_S642]] to i64
189974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSRID_N_S643]]
189982bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosierint64_t test_vsrid_n_s64(int64_t a, int64_t b) {
189992bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosier  return (int64_t)vsrid_n_s64(a, b, 63);
19000f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19001f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
190024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsri_n_s64(<1 x i64> %a, <1 x i64> %b) #0 {
190034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
190044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
190054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
190064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
190074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsri.v1i64(<1 x i64> [[VSRI_N]], <1 x i64> [[VSRI_N1]], i32 1)
190084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSRI_N2]]
19009a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosierint64x1_t test_vsri_n_s64(int64x1_t a, int64x1_t b) {
19010a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vsri_n_s64(a, b, 1);
19011a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
19012a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
190134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vsrid_n_u64(i64 %a, i64 %b) #0 {
190144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_U64:%.*]] = bitcast i64 %a to <1 x i64>
190154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_U641:%.*]] = bitcast i64 %b to <1 x i64>
190164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_U642:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsri.v1i64(<1 x i64> [[VSRID_N_U64]], <1 x i64> [[VSRID_N_U641]], i32 63)
190174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRID_N_U643:%.*]] = bitcast <1 x i64> [[VSRID_N_U642]] to i64
190184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSRID_N_U643]]
190192bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosieruint64_t test_vsrid_n_u64(uint64_t a, uint64_t b) {
190202bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosier  return (uint64_t)vsrid_n_u64(a, b, 63);
19021f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19022f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
190234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsri_n_u64(<1 x i64> %a, <1 x i64> %b) #0 {
190244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
190254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
190264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
190274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
190284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSRI_N2:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsri.v1i64(<1 x i64> [[VSRI_N]], <1 x i64> [[VSRI_N1]], i32 1)
190294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSRI_N2]]
19030a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosieruint64x1_t test_vsri_n_u64(uint64x1_t a, uint64x1_t b) {
19031a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vsri_n_u64(a, b, 1);
19032a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
19033a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
190344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vslid_n_s64(i64 %a, i64 %b) #0 {
190354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_S64:%.*]] = bitcast i64 %a to <1 x i64>
190364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_S641:%.*]] = bitcast i64 %b to <1 x i64>
190374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_S642:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64> [[VSLID_N_S64]], <1 x i64> [[VSLID_N_S641]], i32 63)
190384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_S643:%.*]] = bitcast <1 x i64> [[VSLID_N_S642]] to i64
190394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSLID_N_S643]]
190402bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosierint64_t test_vslid_n_s64(int64_t a, int64_t b) {
190412bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosier  return (int64_t)vslid_n_s64(a, b, 63);
19042f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19043f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
190444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsli_n_s64(<1 x i64> %a, <1 x i64> %b) #0 {
190454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
190464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
190474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
190484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
190494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64> [[VSLI_N]], <1 x i64> [[VSLI_N1]], i32 1)
190504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSLI_N2]]
19051a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosierint64x1_t test_vsli_n_s64(int64x1_t a, int64x1_t b) {
19052a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vsli_n_s64(a, b, 1);
19053a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
19054a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
190554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vslid_n_u64(i64 %a, i64 %b) #0 {
190564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_U64:%.*]] = bitcast i64 %a to <1 x i64>
190574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_U641:%.*]] = bitcast i64 %b to <1 x i64>
190584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_U642:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64> [[VSLID_N_U64]], <1 x i64> [[VSLID_N_U641]], i32 63)
190594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLID_N_U643:%.*]] = bitcast <1 x i64> [[VSLID_N_U642]] to i64
190604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VSLID_N_U643]]
190612bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosieruint64_t test_vslid_n_u64(uint64_t a, uint64_t b) {
190622bd8af5888d8cad4b56185f2d38659eb3cb1272bChad Rosier  return (uint64_t)vslid_n_u64(a, b, 63);
19063f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19064f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
190654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsli_n_u64(<1 x i64> %a, <1 x i64> %b) #0 {
190664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
190674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
190684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
190694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N1:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
190704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSLI_N2:%.*]] = call <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64> [[VSLI_N]], <1 x i64> [[VSLI_N1]], i32 1)
190714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSLI_N2]]
19072a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosieruint64x1_t test_vsli_n_u64(uint64x1_t a, uint64x1_t b) {
19073a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier  return vsli_n_u64(a, b, 1);
19074a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier}
19075a665321a6885ff659ae6d75bb2ee2f083f78ddd7Chad Rosier
190764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshrnh_n_s16(i16 %a) #0 {
190774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
190784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRNH_N_S16:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16> [[TMP0]], i32 8)
190794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQSHRNH_N_S16]], i64 0
190804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
19081f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint8_t test_vqshrnh_n_s16(int16_t a) {
1908208efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int8_t)vqshrnh_n_s16(a, 8);
19083f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19084f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
190854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshrns_n_s32(i32 %a) #0 {
190864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
190874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRNS_N_S32:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32> [[TMP0]], i32 16)
190884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQSHRNS_N_S32]], i64 0
190894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
19090f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint16_t test_vqshrns_n_s32(int32_t a) {
1909108efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int16_t)vqshrns_n_s32(a, 16);
19092f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19093f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
190944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshrnd_n_s64(i64 %a) #0 {
190954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRND_N_S64:%.*]] = call i32 @llvm.aarch64.neon.sqshrn.i32(i64 %a, i32 32)
190964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHRND_N_S64]]
19097f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint32_t test_vqshrnd_n_s64(int64_t a) {
1909808efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int32_t)vqshrnd_n_s64(a, 32);
19099f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19100f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshrnh_n_u16(i16 %a) #0 {
191024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
191034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRNH_N_U16:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16> [[TMP0]], i32 8)
191044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQSHRNH_N_U16]], i64 0
191054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
19106f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint8_t test_vqshrnh_n_u16(uint16_t a) {
1910708efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (uint8_t)vqshrnh_n_u16(a, 8);
19108f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19109f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshrns_n_u32(i32 %a) #0 {
191114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
191124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRNS_N_U32:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32> [[TMP0]], i32 16)
191134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQSHRNS_N_U32]], i64 0
191144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
19115f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint16_t test_vqshrns_n_u32(uint32_t a) {
1911608efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (uint16_t)vqshrns_n_u32(a, 16);
19117f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19118f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshrnd_n_u64(i64 %a) #0 {
191204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRND_N_U64:%.*]] = call i32 @llvm.aarch64.neon.uqshrn.i32(i64 %a, i32 32)
191214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHRND_N_U64]]
19122f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint32_t test_vqshrnd_n_u64(uint64_t a) {
1912308efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (uint32_t)vqshrnd_n_u64(a, 32);
19124f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19125f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqrshrnh_n_s16(i16 %a) #0 {
191274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
191284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRNH_N_S16:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16> [[TMP0]], i32 8)
191294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQRSHRNH_N_S16]], i64 0
191304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
19131f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint8_t test_vqrshrnh_n_s16(int16_t a) {
1913208efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int8_t)vqrshrnh_n_s16(a, 8);
19133f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19134f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqrshrns_n_s32(i32 %a) #0 {
191364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
191374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRNS_N_S32:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32> [[TMP0]], i32 16)
191384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQRSHRNS_N_S32]], i64 0
191394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
19140f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint16_t test_vqrshrns_n_s32(int32_t a) {
1914108efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int16_t)vqrshrns_n_s32(a, 16);
19142f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19143f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqrshrnd_n_s64(i64 %a) #0 {
191454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRND_N_S64:%.*]] = call i32 @llvm.aarch64.neon.sqrshrn.i32(i64 %a, i32 32)
191464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQRSHRND_N_S64]]
19147f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint32_t test_vqrshrnd_n_s64(int64_t a) {
1914808efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int32_t)vqrshrnd_n_s64(a, 32);
19149f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19150f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqrshrnh_n_u16(i16 %a) #0 {
191524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
191534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRNH_N_U16:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16> [[TMP0]], i32 8)
191544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQRSHRNH_N_U16]], i64 0
191554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
19156f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint8_t test_vqrshrnh_n_u16(uint16_t a) {
1915708efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (uint8_t)vqrshrnh_n_u16(a, 8);
19158f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19159f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqrshrns_n_u32(i32 %a) #0 {
191614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
191624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRNS_N_U32:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32> [[TMP0]], i32 16)
191634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQRSHRNS_N_U32]], i64 0
191644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
19165f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint16_t test_vqrshrns_n_u32(uint32_t a) {
1916608efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (uint16_t)vqrshrns_n_u32(a, 16);
19167f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19168f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqrshrnd_n_u64(i64 %a) #0 {
191704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRND_N_U64:%.*]] = call i32 @llvm.aarch64.neon.uqrshrn.i32(i64 %a, i32 32)
191714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQRSHRND_N_U64]]
19172f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosieruint32_t test_vqrshrnd_n_u64(uint64_t a) {
1917308efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (uint32_t)vqrshrnd_n_u64(a, 32);
19174f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19175f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqshrunh_n_s16(i16 %a) #0 {
191774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
191784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUNH_N_S16:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16> [[TMP0]], i32 8)
191794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQSHRUNH_N_S16]], i64 0
191804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
19181f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint8_t test_vqshrunh_n_s16(int16_t a) {
1918208efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int8_t)vqshrunh_n_s16(a, 8);
19183f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19184f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqshruns_n_s32(i32 %a) #0 {
191864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
191874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUNS_N_S32:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32> [[TMP0]], i32 16)
191884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQSHRUNS_N_S32]], i64 0
191894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
19190f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint16_t test_vqshruns_n_s32(int32_t a) {
1919108efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int16_t)vqshruns_n_s32(a, 16);
19192f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19193f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
191944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqshrund_n_s64(i64 %a) #0 {
191954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQSHRUND_N_S64:%.*]] = call i32 @llvm.aarch64.neon.sqshrun.i32(i64 %a, i32 32)
191964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQSHRUND_N_S64]]
19197f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint32_t test_vqshrund_n_s64(int64_t a) {
1919808efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int32_t)vqshrund_n_s64(a, 32);
19199f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19200f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
192014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i8 @test_vqrshrunh_n_s16(i16 %a) #0 {
192024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <8 x i16> undef, i16 %a, i64 0
192034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUNH_N_S16:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16> [[TMP0]], i32 8)
192044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <8 x i8> [[VQRSHRUNH_N_S16]], i64 0
192054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i8 [[TMP1]]
19206f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint8_t test_vqrshrunh_n_s16(int16_t a) {
1920708efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int8_t)vqrshrunh_n_s16(a, 8);
19208f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19209f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
192104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i16 @test_vqrshruns_n_s32(i32 %a) #0 {
192114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = insertelement <4 x i32> undef, i32 %a, i64 0
192124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUNS_N_S32:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32> [[TMP0]], i32 16)
192134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = extractelement <4 x i16> [[VQRSHRUNS_N_S32]], i64 0
192144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i16 [[TMP1]]
19215f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint16_t test_vqrshruns_n_s32(int32_t a) {
1921608efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int16_t)vqrshruns_n_s32(a, 16);
19217f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
19218f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier
192194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vqrshrund_n_s64(i64 %a) #0 {
192204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQRSHRUND_N_S64:%.*]] = call i32 @llvm.aarch64.neon.sqrshrun.i32(i64 %a, i32 32)
192214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VQRSHRUND_N_S64]]
19222f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosierint32_t test_vqrshrund_n_s64(int64_t a) {
1922308efe365cc491ad289132cb9e286382eb0493753Bill Wendling  return (int32_t)vqrshrund_n_s64(a, 32);
19224f42727215f9fa38175d2e84a938c84122cd1e811Chad Rosier}
192256d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier
192264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vcvts_n_f32_s32(i32 %a) #0 {
192274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTS_N_F32_S32:%.*]] = call float @llvm.aarch64.neon.vcvtfxs2fp.f32.i32(i32 %a, i32 1)
192284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VCVTS_N_F32_S32]]
192296d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosierfloat32_t test_vcvts_n_f32_s32(int32_t a) {
1923038e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvts_n_f32_s32(a, 1);
192316d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier}
192326d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier
192334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vcvtd_n_f64_s64(i64 %a) #0 {
192344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTD_N_F64_S64:%.*]] = call double @llvm.aarch64.neon.vcvtfxs2fp.f64.i64(i64 %a, i32 1)
192354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VCVTD_N_F64_S64]]
192366d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosierfloat64_t test_vcvtd_n_f64_s64(int64_t a) {
1923738e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvtd_n_f64_s64(a, 1);
192386d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier}
192396d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier
192404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vcvts_n_f32_u32(i32 %a) #0 {
192414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTS_N_F32_U32:%.*]] = call float @llvm.aarch64.neon.vcvtfxu2fp.f32.i32(i32 %a, i32 32)
192424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VCVTS_N_F32_U32]]
192436d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosierfloat32_t test_vcvts_n_f32_u32(uint32_t a) {
1924438e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvts_n_f32_u32(a, 32);
192456d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier}
192466d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier
192474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vcvtd_n_f64_u64(i64 %a) #0 {
192484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTD_N_F64_U64:%.*]] = call double @llvm.aarch64.neon.vcvtfxu2fp.f64.i64(i64 %a, i32 64)
192494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VCVTD_N_F64_U64]]
192506d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosierfloat64_t test_vcvtd_n_f64_u64(uint64_t a) {
1925138e26aebf3d3db0b8126c912e385070256804d66Chad Rosier  return vcvtd_n_f64_u64(a, 64);
192529473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier}
192539473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier
192544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcvts_n_s32_f32(float %a) #0 {
192554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTS_N_S32_F32:%.*]] = call i32 @llvm.aarch64.neon.vcvtfp2fxs.i32.f32(float %a, i32 1)
192564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCVTS_N_S32_F32]]
192579473c1945f9f1dfa143e172622f16e4264e2628bChad Rosierint32_t test_vcvts_n_s32_f32(float32_t a) {
192589473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier  return (int32_t)vcvts_n_s32_f32(a, 1);
192599473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier}
192609473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier
192614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcvtd_n_s64_f64(double %a) #0 {
192624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTD_N_S64_F64:%.*]] = call i64 @llvm.aarch64.neon.vcvtfp2fxs.i64.f64(double %a, i32 1)
192634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCVTD_N_S64_F64]]
192649473c1945f9f1dfa143e172622f16e4264e2628bChad Rosierint64_t test_vcvtd_n_s64_f64(float64_t a) {
192659473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier  return (int64_t)vcvtd_n_s64_f64(a, 1);
192669473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier}
192679473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier
192684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vcvts_n_u32_f32(float %a) #0 {
192694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTS_N_U32_F32:%.*]] = call i32 @llvm.aarch64.neon.vcvtfp2fxu.i32.f32(float %a, i32 32)
192704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VCVTS_N_U32_F32]]
192719473c1945f9f1dfa143e172622f16e4264e2628bChad Rosieruint32_t test_vcvts_n_u32_f32(float32_t a) {
192729473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier  return (uint32_t)vcvts_n_u32_f32(a, 32);
192739473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier}
192749473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier
192754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vcvtd_n_u64_f64(double %a) #0 {
192764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTD_N_U64_F64:%.*]] = call i64 @llvm.aarch64.neon.vcvtfp2fxu.i64.f64(double %a, i32 64)
192774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VCVTD_N_U64_F64]]
192789473c1945f9f1dfa143e172622f16e4264e2628bChad Rosieruint64_t test_vcvtd_n_u64_f64(float64_t a) {
192799473c1945f9f1dfa143e172622f16e4264e2628bChad Rosier  return (uint64_t)vcvtd_n_u64_f64(a, 64);
192806d61978fa2c07cb1311bb29f45481cf3f4dbb887Chad Rosier}
1928172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
192824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_s16(<4 x i16> %a) #0 {
192834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
192844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1928572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_s16(int16x4_t a) {
1928672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_s16(a);
1928772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1928872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
192894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_s32(<2 x i32> %a) #0 {
192904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
192914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1929272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_s32(int32x2_t a) {
1929372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_s32(a);
1929472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1929572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
192964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_s64(<1 x i64> %a) #0 {
192974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
192984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1929972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_s64(int64x1_t a) {
1930072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_s64(a);
1930172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1930272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_u8(<8 x i8> %a) #0 {
193044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> %a
1930572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_u8(uint8x8_t a) {
1930672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_u8(a);
1930772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1930872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_u16(<4 x i16> %a) #0 {
193104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
193114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1931272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_u16(uint16x4_t a) {
1931372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_u16(a);
1931472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1931572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_u32(<2 x i32> %a) #0 {
193174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
193184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1931972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_u32(uint32x2_t a) {
1932072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_u32(a);
1932172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1932272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_u64(<1 x i64> %a) #0 {
193244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
193254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1932672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_u64(uint64x1_t a) {
1932772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_u64(a);
1932872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1932972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_f16(<4 x half> %a) #0 {
193314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <8 x i8>
193324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1933372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_f16(float16x4_t a) {
1933472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_f16(a);
1933572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1933672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_f32(<2 x float> %a) #0 {
193384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
193394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1934072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_f32(float32x2_t a) {
1934172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_f32(a);
1934272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1934372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_f64(<1 x double> %a) #0 {
193454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
193464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1934772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_f64(float64x1_t a) {
1934872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_f64(a);
1934972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1935072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_p8(<8 x i8> %a) #0 {
193524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> %a
1935372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_p8(poly8x8_t a) {
1935472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_p8(a);
1935572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1935672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_p16(<4 x i16> %a) #0 {
193584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
193594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1936072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_p16(poly16x4_t a) {
1936172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_p16(a);
1936272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1936372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_s8_p64(<1 x i64> %a) #0 {
193654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
193664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1936772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x8_t test_vreinterpret_s8_p64(poly64x1_t a) {
1936872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s8_p64(a);
1936972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1937072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_s8(<8 x i8> %a) #0 {
193724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
193734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1937472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_s8(int8x8_t a) {
1937572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_s8(a);
1937672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1937772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_s32(<2 x i32> %a) #0 {
193794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x i16>
193804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1938172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_s32(int32x2_t a) {
1938272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_s32(a);
1938372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1938472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_s64(<1 x i64> %a) #0 {
193864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
193874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1938872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_s64(int64x1_t a) {
1938972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_s64(a);
1939072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1939172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_u8(<8 x i8> %a) #0 {
193934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
193944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1939572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_u8(uint8x8_t a) {
1939672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_u8(a);
1939772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1939872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
193994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_u16(<4 x i16> %a) #0 {
194004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> %a
1940172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_u16(uint16x4_t a) {
1940272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_u16(a);
1940372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1940472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_u32(<2 x i32> %a) #0 {
194064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x i16>
194074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1940872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_u32(uint32x2_t a) {
1940972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_u32(a);
1941072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1941172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_u64(<1 x i64> %a) #0 {
194134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
194144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1941572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_u64(uint64x1_t a) {
1941672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_u64(a);
1941772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1941872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_f16(<4 x half> %a) #0 {
194204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <4 x i16>
194214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1942272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_f16(float16x4_t a) {
1942372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_f16(a);
1942472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1942572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_f32(<2 x float> %a) #0 {
194274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <4 x i16>
194284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1942972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_f32(float32x2_t a) {
1943072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_f32(a);
1943172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1943272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_f64(<1 x double> %a) #0 {
194344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <4 x i16>
194354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1943672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_f64(float64x1_t a) {
1943772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_f64(a);
1943872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1943972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_p8(<8 x i8> %a) #0 {
194414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
194424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1944372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_p8(poly8x8_t a) {
1944472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_p8(a);
1944572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1944672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_p16(<4 x i16> %a) #0 {
194484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> %a
1944972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_p16(poly16x4_t a) {
1945072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_p16(a);
1945172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1945272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_s16_p64(<1 x i64> %a) #0 {
194544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
194554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1945672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x4_t test_vreinterpret_s16_p64(poly64x1_t a) {
1945772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s16_p64(a);
1945872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1945972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_s8(<8 x i8> %a) #0 {
194614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x i32>
194624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1946372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_s8(int8x8_t a) {
1946472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_s8(a);
1946572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1946672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_s16(<4 x i16> %a) #0 {
194684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x i32>
194694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1947072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_s16(int16x4_t a) {
1947172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_s16(a);
1947272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1947372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_s64(<1 x i64> %a) #0 {
194754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x i32>
194764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1947772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_s64(int64x1_t a) {
1947872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_s64(a);
1947972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1948072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_u8(<8 x i8> %a) #0 {
194824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x i32>
194834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1948472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_u8(uint8x8_t a) {
1948572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_u8(a);
1948672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1948772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_u16(<4 x i16> %a) #0 {
194894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x i32>
194904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1949172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_u16(uint16x4_t a) {
1949272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_u16(a);
1949372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1949472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
194954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_u32(<2 x i32> %a) #0 {
194964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> %a
1949772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_u32(uint32x2_t a) {
1949872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_u32(a);
1949972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1950072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_u64(<1 x i64> %a) #0 {
195024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x i32>
195034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1950472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_u64(uint64x1_t a) {
1950572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_u64(a);
1950672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1950772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_f16(<4 x half> %a) #0 {
195094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <2 x i32>
195104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1951172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_f16(float16x4_t a) {
1951272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_f16(a);
1951372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1951472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_f32(<2 x float> %a) #0 {
195164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <2 x i32>
195174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1951872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_f32(float32x2_t a) {
1951972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_f32(a);
1952072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1952172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_f64(<1 x double> %a) #0 {
195234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <2 x i32>
195244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1952572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_f64(float64x1_t a) {
1952672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_f64(a);
1952772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1952872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_p8(<8 x i8> %a) #0 {
195304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x i32>
195314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1953272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_p8(poly8x8_t a) {
1953372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_p8(a);
1953472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1953572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_p16(<4 x i16> %a) #0 {
195374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x i32>
195384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1953972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_p16(poly16x4_t a) {
1954072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_p16(a);
1954172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1954272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_s32_p64(<1 x i64> %a) #0 {
195444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x i32>
195454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1954672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x2_t test_vreinterpret_s32_p64(poly64x1_t a) {
1954772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s32_p64(a);
1954872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1954972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_s8(<8 x i8> %a) #0 {
195514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
195524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1955372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_s8(int8x8_t a) {
1955472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_s8(a);
1955572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1955672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_s16(<4 x i16> %a) #0 {
195584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
195594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1956072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_s16(int16x4_t a) {
1956172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_s16(a);
1956272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1956372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_s32(<2 x i32> %a) #0 {
195654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x i64>
195664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1956772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_s32(int32x2_t a) {
1956872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_s32(a);
1956972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1957072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_u8(<8 x i8> %a) #0 {
195724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
195734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1957472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_u8(uint8x8_t a) {
1957572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_u8(a);
1957672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1957772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_u16(<4 x i16> %a) #0 {
195794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
195804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1958172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_u16(uint16x4_t a) {
1958272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_u16(a);
1958372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1958472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_u32(<2 x i32> %a) #0 {
195864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x i64>
195874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1958872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_u32(uint32x2_t a) {
1958972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_u32(a);
1959072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1959172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_u64(<1 x i64> %a) #0 {
195934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> %a
1959472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_u64(uint64x1_t a) {
1959572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_u64(a);
1959672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1959772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
195984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_f16(<4 x half> %a) #0 {
195994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <1 x i64>
196004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1960172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_f16(float16x4_t a) {
1960272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_f16(a);
1960372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1960472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_f32(<2 x float> %a) #0 {
196064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <1 x i64>
196074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1960872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_f32(float32x2_t a) {
1960972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_f32(a);
1961072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1961172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_f64(<1 x double> %a) #0 {
196134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <1 x i64>
196144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1961572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_f64(float64x1_t a) {
1961672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_f64(a);
1961772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1961872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_p8(<8 x i8> %a) #0 {
196204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
196214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1962272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_p8(poly8x8_t a) {
1962372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_p8(a);
1962472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1962572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_p16(<4 x i16> %a) #0 {
196274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
196284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1962972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_p16(poly16x4_t a) {
1963072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_p16(a);
1963172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1963272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_s64_p64(<1 x i64> %a) #0 {
196344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> %a
1963572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x1_t test_vreinterpret_s64_p64(poly64x1_t a) {
1963672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_s64_p64(a);
1963772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1963872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_s8(<8 x i8> %a) #0 {
196404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> %a
1964172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_s8(int8x8_t a) {
1964272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_s8(a);
1964372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1964472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_s16(<4 x i16> %a) #0 {
196464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
196474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1964872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_s16(int16x4_t a) {
1964972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_s16(a);
1965072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1965172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_s32(<2 x i32> %a) #0 {
196534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
196544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1965572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_s32(int32x2_t a) {
1965672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_s32(a);
1965772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1965872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_s64(<1 x i64> %a) #0 {
196604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
196614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1966272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_s64(int64x1_t a) {
1966372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_s64(a);
1966472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1966572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_u16(<4 x i16> %a) #0 {
196674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
196684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1966972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_u16(uint16x4_t a) {
1967072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_u16(a);
1967172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1967272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_u32(<2 x i32> %a) #0 {
196744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
196754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1967672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_u32(uint32x2_t a) {
1967772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_u32(a);
1967872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1967972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_u64(<1 x i64> %a) #0 {
196814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
196824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1968372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_u64(uint64x1_t a) {
1968472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_u64(a);
1968572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1968672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_f16(<4 x half> %a) #0 {
196884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <8 x i8>
196894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1969072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_f16(float16x4_t a) {
1969172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_f16(a);
1969272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1969372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
196944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_f32(<2 x float> %a) #0 {
196954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
196964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1969772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_f32(float32x2_t a) {
1969872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_f32(a);
1969972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1970072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_f64(<1 x double> %a) #0 {
197024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
197034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1970472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_f64(float64x1_t a) {
1970572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_f64(a);
1970672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1970772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_p8(<8 x i8> %a) #0 {
197094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> %a
1971072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_p8(poly8x8_t a) {
1971172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_p8(a);
1971272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1971372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_p16(<4 x i16> %a) #0 {
197154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
197164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1971772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_p16(poly16x4_t a) {
1971872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_p16(a);
1971972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1972072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_u8_p64(<1 x i64> %a) #0 {
197224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
197234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
1972472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x8_t test_vreinterpret_u8_p64(poly64x1_t a) {
1972572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u8_p64(a);
1972672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1972772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_s8(<8 x i8> %a) #0 {
197294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
197304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1973172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_s8(int8x8_t a) {
1973272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_s8(a);
1973372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1973472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_s16(<4 x i16> %a) #0 {
197364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> %a
1973772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_s16(int16x4_t a) {
1973872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_s16(a);
1973972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1974072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_s32(<2 x i32> %a) #0 {
197424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x i16>
197434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1974472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_s32(int32x2_t a) {
1974572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_s32(a);
1974672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1974772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_s64(<1 x i64> %a) #0 {
197494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
197504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1975172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_s64(int64x1_t a) {
1975272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_s64(a);
1975372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1975472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_u8(<8 x i8> %a) #0 {
197564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
197574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1975872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_u8(uint8x8_t a) {
1975972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_u8(a);
1976072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1976172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_u32(<2 x i32> %a) #0 {
197634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x i16>
197644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1976572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_u32(uint32x2_t a) {
1976672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_u32(a);
1976772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1976872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_u64(<1 x i64> %a) #0 {
197704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
197714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1977272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_u64(uint64x1_t a) {
1977372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_u64(a);
1977472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1977572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_f16(<4 x half> %a) #0 {
197774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <4 x i16>
197784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1977972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_f16(float16x4_t a) {
1978072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_f16(a);
1978172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1978272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_f32(<2 x float> %a) #0 {
197844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <4 x i16>
197854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1978672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_f32(float32x2_t a) {
1978772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_f32(a);
1978872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1978972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_f64(<1 x double> %a) #0 {
197914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <4 x i16>
197924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1979372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_f64(float64x1_t a) {
1979472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_f64(a);
1979572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1979672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
197974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_p8(<8 x i8> %a) #0 {
197984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
197994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1980072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_p8(poly8x8_t a) {
1980172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_p8(a);
1980272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1980372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_p16(<4 x i16> %a) #0 {
198054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> %a
1980672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_p16(poly16x4_t a) {
1980772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_p16(a);
1980872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1980972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_u16_p64(<1 x i64> %a) #0 {
198114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
198124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
1981372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x4_t test_vreinterpret_u16_p64(poly64x1_t a) {
1981472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u16_p64(a);
1981572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1981672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_s8(<8 x i8> %a) #0 {
198184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x i32>
198194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1982072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_s8(int8x8_t a) {
1982172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_s8(a);
1982272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1982372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_s16(<4 x i16> %a) #0 {
198254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x i32>
198264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1982772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_s16(int16x4_t a) {
1982872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_s16(a);
1982972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1983072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_s32(<2 x i32> %a) #0 {
198324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> %a
1983372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_s32(int32x2_t a) {
1983472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_s32(a);
1983572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1983672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_s64(<1 x i64> %a) #0 {
198384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x i32>
198394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1984072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_s64(int64x1_t a) {
1984172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_s64(a);
1984272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1984372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_u8(<8 x i8> %a) #0 {
198454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x i32>
198464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1984772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_u8(uint8x8_t a) {
1984872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_u8(a);
1984972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1985072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_u16(<4 x i16> %a) #0 {
198524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x i32>
198534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1985472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_u16(uint16x4_t a) {
1985572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_u16(a);
1985672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1985772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_u64(<1 x i64> %a) #0 {
198594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x i32>
198604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1986172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_u64(uint64x1_t a) {
1986272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_u64(a);
1986372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1986472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_f16(<4 x half> %a) #0 {
198664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <2 x i32>
198674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1986872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_f16(float16x4_t a) {
1986972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_f16(a);
1987072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1987172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_f32(<2 x float> %a) #0 {
198734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <2 x i32>
198744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1987572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_f32(float32x2_t a) {
1987672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_f32(a);
1987772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1987872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_f64(<1 x double> %a) #0 {
198804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <2 x i32>
198814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1988272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_f64(float64x1_t a) {
1988372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_f64(a);
1988472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1988572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_p8(<8 x i8> %a) #0 {
198874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x i32>
198884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1988972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_p8(poly8x8_t a) {
1989072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_p8(a);
1989172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1989272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
198934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_p16(<4 x i16> %a) #0 {
198944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x i32>
198954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1989672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_p16(poly16x4_t a) {
1989772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_p16(a);
1989872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1989972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vreinterpret_u32_p64(<1 x i64> %a) #0 {
199014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x i32>
199024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP0]]
1990372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x2_t test_vreinterpret_u32_p64(poly64x1_t a) {
1990472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u32_p64(a);
1990572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1990672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_s8(<8 x i8> %a) #0 {
199084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
199094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1991072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_s8(int8x8_t a) {
1991172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_s8(a);
1991272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1991372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_s16(<4 x i16> %a) #0 {
199154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
199164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1991772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_s16(int16x4_t a) {
1991872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_s16(a);
1991972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1992072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_s32(<2 x i32> %a) #0 {
199224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x i64>
199234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1992472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_s32(int32x2_t a) {
1992572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_s32(a);
1992672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1992772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_s64(<1 x i64> %a) #0 {
199294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> %a
1993072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_s64(int64x1_t a) {
1993172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_s64(a);
1993272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1993372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_u8(<8 x i8> %a) #0 {
199354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
199364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1993772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_u8(uint8x8_t a) {
1993872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_u8(a);
1993972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1994072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_u16(<4 x i16> %a) #0 {
199424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
199434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1994472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_u16(uint16x4_t a) {
1994572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_u16(a);
1994672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1994772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_u32(<2 x i32> %a) #0 {
199494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x i64>
199504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1995172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_u32(uint32x2_t a) {
1995272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_u32(a);
1995372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1995472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_f16(<4 x half> %a) #0 {
199564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <1 x i64>
199574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1995872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_f16(float16x4_t a) {
1995972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_f16(a);
1996072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1996172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_f32(<2 x float> %a) #0 {
199634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <1 x i64>
199644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1996572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_f32(float32x2_t a) {
1996672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_f32(a);
1996772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1996872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_f64(<1 x double> %a) #0 {
199704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <1 x i64>
199714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1997272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_f64(float64x1_t a) {
1997372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_f64(a);
1997472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1997572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_p8(<8 x i8> %a) #0 {
199774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
199784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1997972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_p8(poly8x8_t a) {
1998072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_p8(a);
1998172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1998272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_p16(<4 x i16> %a) #0 {
199844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
199854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
1998672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_p16(poly16x4_t a) {
1998772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_p16(a);
1998872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1998972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_u64_p64(<1 x i64> %a) #0 {
199914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> %a
1999272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x1_t test_vreinterpret_u64_p64(poly64x1_t a) {
1999372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_u64_p64(a);
1999472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
1999572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
199964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_s8(<8 x i8> %a) #0 {
199974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x half>
199984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
1999972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_s8(int8x8_t a) {
2000072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_s8(a);
2000172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2000272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_s16(<4 x i16> %a) #0 {
200044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <4 x half>
200054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2000672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_s16(int16x4_t a) {
2000772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_s16(a);
2000872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2000972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_s32(<2 x i32> %a) #0 {
200114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x half>
200124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2001372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_s32(int32x2_t a) {
2001472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_s32(a);
2001572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2001672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_s64(<1 x i64> %a) #0 {
200184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x half>
200194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2002072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_s64(int64x1_t a) {
2002172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_s64(a);
2002272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2002372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_u8(<8 x i8> %a) #0 {
200254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x half>
200264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2002772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_u8(uint8x8_t a) {
2002872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_u8(a);
2002972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2003072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_u16(<4 x i16> %a) #0 {
200324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <4 x half>
200334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2003472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_u16(uint16x4_t a) {
2003572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_u16(a);
2003672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2003772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_u32(<2 x i32> %a) #0 {
200394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x half>
200404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2004172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_u32(uint32x2_t a) {
2004272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_u32(a);
2004372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2004472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_u64(<1 x i64> %a) #0 {
200464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x half>
200474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2004872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_u64(uint64x1_t a) {
2004972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_u64(a);
2005072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2005172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_f32(<2 x float> %a) #0 {
200534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <4 x half>
200544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2005572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_f32(float32x2_t a) {
2005672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_f32(a);
2005772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2005872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_f64(<1 x double> %a) #0 {
200604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <4 x half>
200614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2006272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_f64(float64x1_t a) {
2006372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_f64(a);
2006472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2006572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_p8(<8 x i8> %a) #0 {
200674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x half>
200684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2006972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_p8(poly8x8_t a) {
2007072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_p8(a);
2007172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2007272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_p16(<4 x i16> %a) #0 {
200744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <4 x half>
200754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2007672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_p16(poly16x4_t a) {
2007772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_p16(a);
2007872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2007972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vreinterpret_f16_p64(<1 x i64> %a) #0 {
200814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x half>
200824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP0]]
2008372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x4_t test_vreinterpret_f16_p64(poly64x1_t a) {
2008472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f16_p64(a);
2008572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2008672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_s8(<8 x i8> %a) #0 {
200884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x float>
200894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2009072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_s8(int8x8_t a) {
2009172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_s8(a);
2009272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2009372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
200944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_s16(<4 x i16> %a) #0 {
200954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x float>
200964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2009772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_s16(int16x4_t a) {
2009872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_s16(a);
2009972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2010072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_s32(<2 x i32> %a) #0 {
201024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <2 x float>
201034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2010472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_s32(int32x2_t a) {
2010572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_s32(a);
2010672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2010772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_s64(<1 x i64> %a) #0 {
201094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x float>
201104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2011172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_s64(int64x1_t a) {
2011272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_s64(a);
2011372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2011472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_u8(<8 x i8> %a) #0 {
201164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x float>
201174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2011872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_u8(uint8x8_t a) {
2011972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_u8(a);
2012072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2012172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_u16(<4 x i16> %a) #0 {
201234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x float>
201244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2012572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_u16(uint16x4_t a) {
2012672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_u16(a);
2012772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2012872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_u32(<2 x i32> %a) #0 {
201304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <2 x float>
201314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2013272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_u32(uint32x2_t a) {
2013372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_u32(a);
2013472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2013572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_u64(<1 x i64> %a) #0 {
201374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x float>
201384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2013972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_u64(uint64x1_t a) {
2014072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_u64(a);
2014172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2014272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_f16(<4 x half> %a) #0 {
201444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <2 x float>
201454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2014672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_f16(float16x4_t a) {
2014772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_f16(a);
2014872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2014972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_f64(<1 x double> %a) #0 {
201514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <2 x float>
201524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2015372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_f64(float64x1_t a) {
2015472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_f64(a);
2015572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2015672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_p8(<8 x i8> %a) #0 {
201584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <2 x float>
201594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2016072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_p8(poly8x8_t a) {
2016172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_p8(a);
2016272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2016372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_p16(<4 x i16> %a) #0 {
201654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <2 x float>
201664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2016772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_p16(poly16x4_t a) {
2016872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_p16(a);
2016972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2017072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vreinterpret_f32_p64(<1 x i64> %a) #0 {
201724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <2 x float>
201734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[TMP0]]
2017472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x2_t test_vreinterpret_f32_p64(poly64x1_t a) {
2017572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f32_p64(a);
2017672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2017772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_s8(<8 x i8> %a) #0 {
201794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x double>
201804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2018172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_s8(int8x8_t a) {
2018272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_s8(a);
2018372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2018472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_s16(<4 x i16> %a) #0 {
201864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x double>
201874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2018872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_s16(int16x4_t a) {
2018972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_s16(a);
2019072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2019172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_s32(<2 x i32> %a) #0 {
201934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x double>
201944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2019572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_s32(int32x2_t a) {
2019672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_s32(a);
2019772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2019872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
201994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_s64(<1 x i64> %a) #0 {
202004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <1 x double>
202014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2020272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_s64(int64x1_t a) {
2020372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_s64(a);
2020472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2020572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_u8(<8 x i8> %a) #0 {
202074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x double>
202084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2020972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_u8(uint8x8_t a) {
2021072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_u8(a);
2021172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2021272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_u16(<4 x i16> %a) #0 {
202144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x double>
202154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2021672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_u16(uint16x4_t a) {
2021772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_u16(a);
2021872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2021972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_u32(<2 x i32> %a) #0 {
202214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x double>
202224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2022372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_u32(uint32x2_t a) {
2022472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_u32(a);
2022572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2022672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_u64(<1 x i64> %a) #0 {
202284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <1 x double>
202294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2023072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_u64(uint64x1_t a) {
2023172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_u64(a);
2023272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2023372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_f16(<4 x half> %a) #0 {
202354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <1 x double>
202364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2023772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_f16(float16x4_t a) {
2023872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_f16(a);
2023972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2024072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_f32(<2 x float> %a) #0 {
202424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <1 x double>
202434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2024472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_f32(float32x2_t a) {
2024572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_f32(a);
2024672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2024772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_p8(<8 x i8> %a) #0 {
202494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x double>
202504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2025172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_p8(poly8x8_t a) {
2025272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_p8(a);
2025372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2025472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_p16(<4 x i16> %a) #0 {
202564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x double>
202574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2025872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_p16(poly16x4_t a) {
2025972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_p16(a);
2026072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2026172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vreinterpret_f64_p64(<1 x i64> %a) #0 {
202634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <1 x double>
202644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP0]]
2026572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x1_t test_vreinterpret_f64_p64(poly64x1_t a) {
2026672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_f64_p64(a);
2026772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2026872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_s8(<8 x i8> %a) #0 {
202704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> %a
2027172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_s8(int8x8_t a) {
2027272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_s8(a);
2027372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2027472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_s16(<4 x i16> %a) #0 {
202764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
202774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2027872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_s16(int16x4_t a) {
2027972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_s16(a);
2028072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2028172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_s32(<2 x i32> %a) #0 {
202834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
202844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2028572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_s32(int32x2_t a) {
2028672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_s32(a);
2028772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2028872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_s64(<1 x i64> %a) #0 {
202904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
202914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2029272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_s64(int64x1_t a) {
2029372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_s64(a);
2029472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2029572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
202964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_u8(<8 x i8> %a) #0 {
202974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> %a
2029872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_u8(uint8x8_t a) {
2029972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_u8(a);
2030072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2030172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_u16(<4 x i16> %a) #0 {
203034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
203044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2030572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_u16(uint16x4_t a) {
2030672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_u16(a);
2030772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2030872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_u32(<2 x i32> %a) #0 {
203104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
203114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2031272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_u32(uint32x2_t a) {
2031372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_u32(a);
2031472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2031572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_u64(<1 x i64> %a) #0 {
203174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
203184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2031972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_u64(uint64x1_t a) {
2032072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_u64(a);
2032172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2032272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_f16(<4 x half> %a) #0 {
203244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <8 x i8>
203254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2032672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_f16(float16x4_t a) {
2032772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_f16(a);
2032872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2032972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_f32(<2 x float> %a) #0 {
203314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
203324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2033372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_f32(float32x2_t a) {
2033472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_f32(a);
2033572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2033672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_f64(<1 x double> %a) #0 {
203384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
203394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2034072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_f64(float64x1_t a) {
2034172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_f64(a);
2034272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2034372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_p16(<4 x i16> %a) #0 {
203454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
203464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2034772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_p16(poly16x4_t a) {
2034872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_p16(a);
2034972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2035072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vreinterpret_p8_p64(<1 x i64> %a) #0 {
203524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
203534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[TMP0]]
2035472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x8_t test_vreinterpret_p8_p64(poly64x1_t a) {
2035572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p8_p64(a);
2035672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2035772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_s8(<8 x i8> %a) #0 {
203594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
203604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2036172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_s8(int8x8_t a) {
2036272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_s8(a);
2036372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2036472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_s16(<4 x i16> %a) #0 {
203664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> %a
2036772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_s16(int16x4_t a) {
2036872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_s16(a);
2036972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2037072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_s32(<2 x i32> %a) #0 {
203724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x i16>
203734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2037472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_s32(int32x2_t a) {
2037572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_s32(a);
2037672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2037772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_s64(<1 x i64> %a) #0 {
203794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
203804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2038172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_s64(int64x1_t a) {
2038272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_s64(a);
2038372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2038472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_u8(<8 x i8> %a) #0 {
203864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
203874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2038872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_u8(uint8x8_t a) {
2038972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_u8(a);
2039072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2039172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_u16(<4 x i16> %a) #0 {
203934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> %a
2039472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_u16(uint16x4_t a) {
2039572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_u16(a);
2039672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2039772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
203984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_u32(<2 x i32> %a) #0 {
203994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <4 x i16>
204004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2040172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_u32(uint32x2_t a) {
2040272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_u32(a);
2040372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2040472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_u64(<1 x i64> %a) #0 {
204064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
204074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2040872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_u64(uint64x1_t a) {
2040972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_u64(a);
2041072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2041172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_f16(<4 x half> %a) #0 {
204134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <4 x i16>
204144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2041572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_f16(float16x4_t a) {
2041672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_f16(a);
2041772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2041872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_f32(<2 x float> %a) #0 {
204204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <4 x i16>
204214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2042272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_f32(float32x2_t a) {
2042372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_f32(a);
2042472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2042572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_f64(<1 x double> %a) #0 {
204274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <4 x i16>
204284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2042972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_f64(float64x1_t a) {
2043072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_f64(a);
2043172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2043272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_p8(<8 x i8> %a) #0 {
204344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <4 x i16>
204354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2043672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_p8(poly8x8_t a) {
2043772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_p8(a);
2043872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2043972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vreinterpret_p16_p64(<1 x i64> %a) #0 {
204414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <4 x i16>
204424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP0]]
2044372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x4_t test_vreinterpret_p16_p64(poly64x1_t a) {
2044472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p16_p64(a);
2044572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2044672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_s8(<8 x i8> %a) #0 {
204484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
204494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2045072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_s8(int8x8_t a) {
2045172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_s8(a);
2045272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2045372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_s16(<4 x i16> %a) #0 {
204554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
204564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2045772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_s16(int16x4_t a) {
2045872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_s16(a);
2045972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2046072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_s32(<2 x i32> %a) #0 {
204624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x i64>
204634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2046472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_s32(int32x2_t a) {
2046572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_s32(a);
2046672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2046772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_s64(<1 x i64> %a) #0 {
204694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> %a
2047072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_s64(int64x1_t a) {
2047172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_s64(a);
2047272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2047372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_u8(<8 x i8> %a) #0 {
204754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
204764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2047772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_u8(uint8x8_t a) {
2047872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_u8(a);
2047972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2048072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_u16(<4 x i16> %a) #0 {
204824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
204834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2048472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_u16(uint16x4_t a) {
2048572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_u16(a);
2048672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2048772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_u32(<2 x i32> %a) #0 {
204894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <1 x i64>
204904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2049172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_u32(uint32x2_t a) {
2049272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_u32(a);
2049372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2049472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
204954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_u64(<1 x i64> %a) #0 {
204964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> %a
2049772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_u64(uint64x1_t a) {
2049872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_u64(a);
2049972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2050072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_f16(<4 x half> %a) #0 {
205024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <1 x i64>
205034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2050472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_f16(float16x4_t a) {
2050572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_f16(a);
2050672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2050772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_f32(<2 x float> %a) #0 {
205094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <1 x i64>
205104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2051172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_f32(float32x2_t a) {
2051272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_f32(a);
2051372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2051472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_f64(<1 x double> %a) #0 {
205164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <1 x i64>
205174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2051872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_f64(float64x1_t a) {
2051972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_f64(a);
2052072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2052172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_p8(<8 x i8> %a) #0 {
205234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i8> %a to <1 x i64>
205244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2052572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_p8(poly8x8_t a) {
2052672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_p8(a);
2052772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2052872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vreinterpret_p64_p16(<4 x i16> %a) #0 {
205304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <1 x i64>
205314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP0]]
2053272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x1_t test_vreinterpret_p64_p16(poly16x4_t a) {
2053372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpret_p64_p16(a);
2053472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2053572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_s16(<8 x i16> %a) #0 {
205374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
205384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2053972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_s16(int16x8_t a) {
2054072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_s16(a);
2054172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2054272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_s32(<4 x i32> %a) #0 {
205444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
205454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2054672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_s32(int32x4_t a) {
2054772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_s32(a);
2054872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2054972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_s64(<2 x i64> %a) #0 {
205514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
205524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2055372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_s64(int64x2_t a) {
2055472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_s64(a);
2055572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2055672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_u8(<16 x i8> %a) #0 {
205584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> %a
2055972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_u8(uint8x16_t a) {
2056072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_u8(a);
2056172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2056272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_u16(<8 x i16> %a) #0 {
205644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
205654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2056672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_u16(uint16x8_t a) {
2056772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_u16(a);
2056872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2056972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_u32(<4 x i32> %a) #0 {
205714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
205724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2057372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_u32(uint32x4_t a) {
2057472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_u32(a);
2057572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2057672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_u64(<2 x i64> %a) #0 {
205784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
205794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2058072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_u64(uint64x2_t a) {
2058172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_u64(a);
2058272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2058372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_f16(<8 x half> %a) #0 {
205854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <16 x i8>
205864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2058772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_f16(float16x8_t a) {
2058872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_f16(a);
2058972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2059072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_f32(<4 x float> %a) #0 {
205924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
205934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2059472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_f32(float32x4_t a) {
2059572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_f32(a);
2059672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2059772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
205984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_f64(<2 x double> %a) #0 {
205994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
206004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2060172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_f64(float64x2_t a) {
2060272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_f64(a);
2060372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2060472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_p8(<16 x i8> %a) #0 {
206064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> %a
2060772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_p8(poly8x16_t a) {
2060872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_p8(a);
2060972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2061072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_p16(<8 x i16> %a) #0 {
206124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
206134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2061472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_p16(poly16x8_t a) {
2061572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_p16(a);
2061672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2061772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_s8_p64(<2 x i64> %a) #0 {
206194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
206204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2062172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint8x16_t test_vreinterpretq_s8_p64(poly64x2_t a) {
2062272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s8_p64(a);
2062372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2062472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_s8(<16 x i8> %a) #0 {
206264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
206274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2062872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_s8(int8x16_t a) {
2062972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_s8(a);
2063072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2063172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_s32(<4 x i32> %a) #0 {
206334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x i16>
206344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2063572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_s32(int32x4_t a) {
2063672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_s32(a);
2063772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2063872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_s64(<2 x i64> %a) #0 {
206404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
206414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2064272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_s64(int64x2_t a) {
2064372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_s64(a);
2064472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2064572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_u8(<16 x i8> %a) #0 {
206474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
206484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2064972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_u8(uint8x16_t a) {
2065072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_u8(a);
2065172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2065272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_u16(<8 x i16> %a) #0 {
206544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> %a
2065572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_u16(uint16x8_t a) {
2065672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_u16(a);
2065772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2065872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_u32(<4 x i32> %a) #0 {
206604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x i16>
206614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2066272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_u32(uint32x4_t a) {
2066372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_u32(a);
2066472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2066572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_u64(<2 x i64> %a) #0 {
206674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
206684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2066972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_u64(uint64x2_t a) {
2067072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_u64(a);
2067172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2067272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_f16(<8 x half> %a) #0 {
206744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <8 x i16>
206754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2067672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_f16(float16x8_t a) {
2067772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_f16(a);
2067872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2067972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_f32(<4 x float> %a) #0 {
206814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <8 x i16>
206824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2068372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_f32(float32x4_t a) {
2068472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_f32(a);
2068572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2068672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_f64(<2 x double> %a) #0 {
206884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <8 x i16>
206894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2069072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_f64(float64x2_t a) {
2069172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_f64(a);
2069272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2069372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
206944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_p8(<16 x i8> %a) #0 {
206954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
206964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2069772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_p8(poly8x16_t a) {
2069872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_p8(a);
2069972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2070072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_p16(<8 x i16> %a) #0 {
207024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> %a
2070372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_p16(poly16x8_t a) {
2070472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_p16(a);
2070572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2070672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_s16_p64(<2 x i64> %a) #0 {
207084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
207094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2071072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint16x8_t test_vreinterpretq_s16_p64(poly64x2_t a) {
2071172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s16_p64(a);
2071272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2071372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_s8(<16 x i8> %a) #0 {
207154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x i32>
207164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2071772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_s8(int8x16_t a) {
2071872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_s8(a);
2071972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2072072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_s16(<8 x i16> %a) #0 {
207224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x i32>
207234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2072472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_s16(int16x8_t a) {
2072572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_s16(a);
2072672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2072772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_s64(<2 x i64> %a) #0 {
207294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x i32>
207304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2073172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_s64(int64x2_t a) {
2073272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_s64(a);
2073372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2073472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_u8(<16 x i8> %a) #0 {
207364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x i32>
207374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2073872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_u8(uint8x16_t a) {
2073972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_u8(a);
2074072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2074172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_u16(<8 x i16> %a) #0 {
207434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x i32>
207444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2074572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_u16(uint16x8_t a) {
2074672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_u16(a);
2074772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2074872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_u32(<4 x i32> %a) #0 {
207504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> %a
2075172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_u32(uint32x4_t a) {
2075272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_u32(a);
2075372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2075472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_u64(<2 x i64> %a) #0 {
207564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x i32>
207574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2075872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_u64(uint64x2_t a) {
2075972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_u64(a);
2076072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2076172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_f16(<8 x half> %a) #0 {
207634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <4 x i32>
207644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2076572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_f16(float16x8_t a) {
2076672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_f16(a);
2076772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2076872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_f32(<4 x float> %a) #0 {
207704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <4 x i32>
207714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2077272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_f32(float32x4_t a) {
2077372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_f32(a);
2077472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2077572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_f64(<2 x double> %a) #0 {
207774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <4 x i32>
207784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2077972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_f64(float64x2_t a) {
2078072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_f64(a);
2078172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2078272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_p8(<16 x i8> %a) #0 {
207844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x i32>
207854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2078672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_p8(poly8x16_t a) {
2078772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_p8(a);
2078872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2078972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_p16(<8 x i16> %a) #0 {
207914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x i32>
207924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2079372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_p16(poly16x8_t a) {
2079472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_p16(a);
2079572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2079672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
207974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_s32_p64(<2 x i64> %a) #0 {
207984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x i32>
207994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2080072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint32x4_t test_vreinterpretq_s32_p64(poly64x2_t a) {
2080172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s32_p64(a);
2080272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2080372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_s8(<16 x i8> %a) #0 {
208054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
208064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2080772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_s8(int8x16_t a) {
2080872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_s8(a);
2080972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2081072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_s16(<8 x i16> %a) #0 {
208124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
208134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2081472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_s16(int16x8_t a) {
2081572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_s16(a);
2081672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2081772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_s32(<4 x i32> %a) #0 {
208194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x i64>
208204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2082172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_s32(int32x4_t a) {
2082272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_s32(a);
2082372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2082472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_u8(<16 x i8> %a) #0 {
208264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
208274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2082872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_u8(uint8x16_t a) {
2082972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_u8(a);
2083072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2083172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_u16(<8 x i16> %a) #0 {
208334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
208344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2083572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_u16(uint16x8_t a) {
2083672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_u16(a);
2083772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2083872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_u32(<4 x i32> %a) #0 {
208404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x i64>
208414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2084272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_u32(uint32x4_t a) {
2084372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_u32(a);
2084472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2084572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_u64(<2 x i64> %a) #0 {
208474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> %a
2084872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_u64(uint64x2_t a) {
2084972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_u64(a);
2085072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2085172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_f16(<8 x half> %a) #0 {
208534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <2 x i64>
208544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2085572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_f16(float16x8_t a) {
2085672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_f16(a);
2085772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2085872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_f32(<4 x float> %a) #0 {
208604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <2 x i64>
208614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2086272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_f32(float32x4_t a) {
2086372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_f32(a);
2086472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2086572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_f64(<2 x double> %a) #0 {
208674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <2 x i64>
208684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2086972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_f64(float64x2_t a) {
2087072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_f64(a);
2087172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2087272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_p8(<16 x i8> %a) #0 {
208744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
208754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2087672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_p8(poly8x16_t a) {
2087772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_p8(a);
2087872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2087972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_p16(<8 x i16> %a) #0 {
208814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
208824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2088372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_p16(poly16x8_t a) {
2088472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_p16(a);
2088572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2088672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_s64_p64(<2 x i64> %a) #0 {
208884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> %a
2088972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuint64x2_t test_vreinterpretq_s64_p64(poly64x2_t a) {
2089072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_s64_p64(a);
2089172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2089272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_s8(<16 x i8> %a) #0 {
208944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> %a
2089572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_s8(int8x16_t a) {
2089672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_s8(a);
2089772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2089872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
208994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_s16(<8 x i16> %a) #0 {
209004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
209014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2090272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_s16(int16x8_t a) {
2090372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_s16(a);
2090472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2090572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_s32(<4 x i32> %a) #0 {
209074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
209084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2090972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_s32(int32x4_t a) {
2091072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_s32(a);
2091172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2091272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_s64(<2 x i64> %a) #0 {
209144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
209154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2091672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_s64(int64x2_t a) {
2091772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_s64(a);
2091872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2091972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_u16(<8 x i16> %a) #0 {
209214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
209224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2092372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_u16(uint16x8_t a) {
2092472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_u16(a);
2092572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2092672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_u32(<4 x i32> %a) #0 {
209284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
209294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2093072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_u32(uint32x4_t a) {
2093172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_u32(a);
2093272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2093372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_u64(<2 x i64> %a) #0 {
209354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
209364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2093772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_u64(uint64x2_t a) {
2093872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_u64(a);
2093972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2094072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_f16(<8 x half> %a) #0 {
209424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <16 x i8>
209434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2094472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_f16(float16x8_t a) {
2094572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_f16(a);
2094672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2094772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_f32(<4 x float> %a) #0 {
209494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
209504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2095172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_f32(float32x4_t a) {
2095272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_f32(a);
2095372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2095472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_f64(<2 x double> %a) #0 {
209564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
209574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2095872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_f64(float64x2_t a) {
2095972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_f64(a);
2096072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2096172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_p8(<16 x i8> %a) #0 {
209634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> %a
2096472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_p8(poly8x16_t a) {
2096572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_p8(a);
2096672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2096772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_p16(<8 x i16> %a) #0 {
209694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
209704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2097172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_p16(poly16x8_t a) {
2097272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_p16(a);
2097372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2097472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_u8_p64(<2 x i64> %a) #0 {
209764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
209774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2097872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint8x16_t test_vreinterpretq_u8_p64(poly64x2_t a) {
2097972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u8_p64(a);
2098072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2098172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_s8(<16 x i8> %a) #0 {
209834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
209844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2098572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_s8(int8x16_t a) {
2098672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_s8(a);
2098772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2098872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_s16(<8 x i16> %a) #0 {
209904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> %a
2099172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_s16(int16x8_t a) {
2099272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_s16(a);
2099372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2099472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
209954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_s32(<4 x i32> %a) #0 {
209964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x i16>
209974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2099872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_s32(int32x4_t a) {
2099972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_s32(a);
2100072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2100172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_s64(<2 x i64> %a) #0 {
210034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
210044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2100572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_s64(int64x2_t a) {
2100672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_s64(a);
2100772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2100872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_u8(<16 x i8> %a) #0 {
210104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
210114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2101272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_u8(uint8x16_t a) {
2101372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_u8(a);
2101472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2101572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_u32(<4 x i32> %a) #0 {
210174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x i16>
210184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2101972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_u32(uint32x4_t a) {
2102072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_u32(a);
2102172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2102272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_u64(<2 x i64> %a) #0 {
210244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
210254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2102672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_u64(uint64x2_t a) {
2102772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_u64(a);
2102872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2102972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_f16(<8 x half> %a) #0 {
210314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <8 x i16>
210324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2103372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_f16(float16x8_t a) {
2103472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_f16(a);
2103572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2103672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_f32(<4 x float> %a) #0 {
210384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <8 x i16>
210394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2104072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_f32(float32x4_t a) {
2104172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_f32(a);
2104272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2104372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_f64(<2 x double> %a) #0 {
210454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <8 x i16>
210464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2104772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_f64(float64x2_t a) {
2104872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_f64(a);
2104972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2105072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_p8(<16 x i8> %a) #0 {
210524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
210534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2105472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_p8(poly8x16_t a) {
2105572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_p8(a);
2105672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2105772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_p16(<8 x i16> %a) #0 {
210594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> %a
2106072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_p16(poly16x8_t a) {
2106172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_p16(a);
2106272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2106372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_u16_p64(<2 x i64> %a) #0 {
210654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
210664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2106772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint16x8_t test_vreinterpretq_u16_p64(poly64x2_t a) {
2106872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u16_p64(a);
2106972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2107072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_s8(<16 x i8> %a) #0 {
210724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x i32>
210734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2107472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_s8(int8x16_t a) {
2107572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_s8(a);
2107672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2107772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_s16(<8 x i16> %a) #0 {
210794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x i32>
210804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2108172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_s16(int16x8_t a) {
2108272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_s16(a);
2108372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2108472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_s32(<4 x i32> %a) #0 {
210864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> %a
2108772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_s32(int32x4_t a) {
2108872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_s32(a);
2108972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2109072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_s64(<2 x i64> %a) #0 {
210924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x i32>
210934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2109472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_s64(int64x2_t a) {
2109572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_s64(a);
2109672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2109772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
210984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_u8(<16 x i8> %a) #0 {
210994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x i32>
211004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2110172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_u8(uint8x16_t a) {
2110272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_u8(a);
2110372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2110472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_u16(<8 x i16> %a) #0 {
211064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x i32>
211074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2110872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_u16(uint16x8_t a) {
2110972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_u16(a);
2111072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2111172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_u64(<2 x i64> %a) #0 {
211134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x i32>
211144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2111572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_u64(uint64x2_t a) {
2111672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_u64(a);
2111772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2111872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_f16(<8 x half> %a) #0 {
211204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <4 x i32>
211214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2112272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_f16(float16x8_t a) {
2112372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_f16(a);
2112472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2112572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_f32(<4 x float> %a) #0 {
211274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <4 x i32>
211284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2112972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_f32(float32x4_t a) {
2113072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_f32(a);
2113172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2113272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_f64(<2 x double> %a) #0 {
211344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <4 x i32>
211354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2113672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_f64(float64x2_t a) {
2113772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_f64(a);
2113872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2113972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_p8(<16 x i8> %a) #0 {
211414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x i32>
211424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2114372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_p8(poly8x16_t a) {
2114472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_p8(a);
2114572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2114672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_p16(<8 x i16> %a) #0 {
211484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x i32>
211494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2115072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_p16(poly16x8_t a) {
2115172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_p16(a);
2115272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2115372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vreinterpretq_u32_p64(<2 x i64> %a) #0 {
211554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x i32>
211564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP0]]
2115772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint32x4_t test_vreinterpretq_u32_p64(poly64x2_t a) {
2115872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u32_p64(a);
2115972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2116072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_s8(<16 x i8> %a) #0 {
211624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
211634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2116472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_s8(int8x16_t a) {
2116572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_s8(a);
2116672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2116772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_s16(<8 x i16> %a) #0 {
211694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
211704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2117172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_s16(int16x8_t a) {
2117272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_s16(a);
2117372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2117472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_s32(<4 x i32> %a) #0 {
211764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x i64>
211774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2117872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_s32(int32x4_t a) {
2117972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_s32(a);
2118072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2118172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_s64(<2 x i64> %a) #0 {
211834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> %a
2118472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_s64(int64x2_t a) {
2118572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_s64(a);
2118672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2118772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_u8(<16 x i8> %a) #0 {
211894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
211904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2119172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_u8(uint8x16_t a) {
2119272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_u8(a);
2119372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2119472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
211954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_u16(<8 x i16> %a) #0 {
211964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
211974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2119872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_u16(uint16x8_t a) {
2119972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_u16(a);
2120072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2120172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_u32(<4 x i32> %a) #0 {
212034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x i64>
212044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2120572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_u32(uint32x4_t a) {
2120672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_u32(a);
2120772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2120872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_f16(<8 x half> %a) #0 {
212104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <2 x i64>
212114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2121272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_f16(float16x8_t a) {
2121372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_f16(a);
2121472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2121572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_f32(<4 x float> %a) #0 {
212174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <2 x i64>
212184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2121972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_f32(float32x4_t a) {
2122072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_f32(a);
2122172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2122272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_f64(<2 x double> %a) #0 {
212244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <2 x i64>
212254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2122672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_f64(float64x2_t a) {
2122772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_f64(a);
2122872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2122972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_p8(<16 x i8> %a) #0 {
212314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
212324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2123372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_p8(poly8x16_t a) {
2123472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_p8(a);
2123572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2123672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_p16(<8 x i16> %a) #0 {
212384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
212394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2124072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_p16(poly16x8_t a) {
2124172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_p16(a);
2124272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2124372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_u64_p64(<2 x i64> %a) #0 {
212454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> %a
2124672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liuuint64x2_t test_vreinterpretq_u64_p64(poly64x2_t a) {
2124772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_u64_p64(a);
2124872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2124972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_s8(<16 x i8> %a) #0 {
212514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x half>
212524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2125372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_s8(int8x16_t a) {
2125472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_s8(a);
2125572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2125672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_s16(<8 x i16> %a) #0 {
212584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <8 x half>
212594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2126072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_s16(int16x8_t a) {
2126172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_s16(a);
2126272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2126372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_s32(<4 x i32> %a) #0 {
212654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x half>
212664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2126772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_s32(int32x4_t a) {
2126872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_s32(a);
2126972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2127072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_s64(<2 x i64> %a) #0 {
212724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x half>
212734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2127472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_s64(int64x2_t a) {
2127572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_s64(a);
2127672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2127772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_u8(<16 x i8> %a) #0 {
212794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x half>
212804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2128172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_u8(uint8x16_t a) {
2128272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_u8(a);
2128372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2128472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_u16(<8 x i16> %a) #0 {
212864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <8 x half>
212874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2128872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_u16(uint16x8_t a) {
2128972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_u16(a);
2129072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2129172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_u32(<4 x i32> %a) #0 {
212934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x half>
212944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2129572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_u32(uint32x4_t a) {
2129672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_u32(a);
2129772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2129872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
212994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_u64(<2 x i64> %a) #0 {
213004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x half>
213014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2130272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_u64(uint64x2_t a) {
2130372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_u64(a);
2130472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2130572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_f32(<4 x float> %a) #0 {
213074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <8 x half>
213084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2130972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_f32(float32x4_t a) {
2131072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_f32(a);
2131172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2131272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_f64(<2 x double> %a) #0 {
213144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <8 x half>
213154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2131672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_f64(float64x2_t a) {
2131772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_f64(a);
2131872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2131972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_p8(<16 x i8> %a) #0 {
213214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x half>
213224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2132372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_p8(poly8x16_t a) {
2132472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_p8(a);
2132572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2132672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_p16(<8 x i16> %a) #0 {
213284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <8 x half>
213294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2133072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_p16(poly16x8_t a) {
2133172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_p16(a);
2133272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2133372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vreinterpretq_f16_p64(<2 x i64> %a) #0 {
213354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x half>
213364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[TMP0]]
2133772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat16x8_t test_vreinterpretq_f16_p64(poly64x2_t a) {
2133872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f16_p64(a);
2133972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2134072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_s8(<16 x i8> %a) #0 {
213424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x float>
213434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2134472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_s8(int8x16_t a) {
2134572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_s8(a);
2134672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2134772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_s16(<8 x i16> %a) #0 {
213494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x float>
213504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2135172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_s16(int16x8_t a) {
2135272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_s16(a);
2135372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2135472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_s32(<4 x i32> %a) #0 {
213564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <4 x float>
213574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2135872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_s32(int32x4_t a) {
2135972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_s32(a);
2136072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2136172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_s64(<2 x i64> %a) #0 {
213634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x float>
213644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2136572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_s64(int64x2_t a) {
2136672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_s64(a);
2136772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2136872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_u8(<16 x i8> %a) #0 {
213704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x float>
213714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2137272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_u8(uint8x16_t a) {
2137372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_u8(a);
2137472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2137572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_u16(<8 x i16> %a) #0 {
213774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x float>
213784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2137972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_u16(uint16x8_t a) {
2138072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_u16(a);
2138172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2138272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_u32(<4 x i32> %a) #0 {
213844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <4 x float>
213854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2138672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_u32(uint32x4_t a) {
2138772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_u32(a);
2138872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2138972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_u64(<2 x i64> %a) #0 {
213914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x float>
213924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2139372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_u64(uint64x2_t a) {
2139472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_u64(a);
2139572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2139672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
213974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_f16(<8 x half> %a) #0 {
213984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <4 x float>
213994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2140072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_f16(float16x8_t a) {
2140172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_f16(a);
2140272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2140372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_f64(<2 x double> %a) #0 {
214054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <4 x float>
214064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2140772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_f64(float64x2_t a) {
2140872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_f64(a);
2140972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2141072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_p8(<16 x i8> %a) #0 {
214124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <4 x float>
214134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2141472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_p8(poly8x16_t a) {
2141572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_p8(a);
2141672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2141772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_p16(<8 x i16> %a) #0 {
214194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <4 x float>
214204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2142172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_p16(poly16x8_t a) {
2142272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_p16(a);
2142372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2142472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vreinterpretq_f32_p64(<2 x i64> %a) #0 {
214264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <4 x float>
214274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP0]]
2142872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat32x4_t test_vreinterpretq_f32_p64(poly64x2_t a) {
2142972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f32_p64(a);
2143072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2143172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_s8(<16 x i8> %a) #0 {
214334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x double>
214344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2143572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_s8(int8x16_t a) {
2143672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_s8(a);
2143772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2143872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_s16(<8 x i16> %a) #0 {
214404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x double>
214414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2144272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_s16(int16x8_t a) {
2144372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_s16(a);
2144472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2144572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_s32(<4 x i32> %a) #0 {
214474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x double>
214484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2144972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_s32(int32x4_t a) {
2145072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_s32(a);
2145172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2145272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_s64(<2 x i64> %a) #0 {
214544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <2 x double>
214554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2145672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_s64(int64x2_t a) {
2145772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_s64(a);
2145872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2145972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_u8(<16 x i8> %a) #0 {
214614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x double>
214624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2146372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_u8(uint8x16_t a) {
2146472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_u8(a);
2146572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2146672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_u16(<8 x i16> %a) #0 {
214684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x double>
214694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2147072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_u16(uint16x8_t a) {
2147172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_u16(a);
2147272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2147372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_u32(<4 x i32> %a) #0 {
214754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x double>
214764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2147772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_u32(uint32x4_t a) {
2147872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_u32(a);
2147972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2148072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_u64(<2 x i64> %a) #0 {
214824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <2 x double>
214834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2148472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_u64(uint64x2_t a) {
2148572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_u64(a);
2148672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2148772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_f16(<8 x half> %a) #0 {
214894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <2 x double>
214904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2149172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_f16(float16x8_t a) {
2149272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_f16(a);
2149372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2149472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
214954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_f32(<4 x float> %a) #0 {
214964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <2 x double>
214974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2149872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_f32(float32x4_t a) {
2149972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_f32(a);
2150072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2150172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_p8(<16 x i8> %a) #0 {
215034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x double>
215044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2150572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_p8(poly8x16_t a) {
2150672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_p8(a);
2150772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2150872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_p16(<8 x i16> %a) #0 {
215104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x double>
215114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2151272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_p16(poly16x8_t a) {
2151372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_p16(a);
2151472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2151572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vreinterpretq_f64_p64(<2 x i64> %a) #0 {
215174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <2 x double>
215184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[TMP0]]
2151972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liufloat64x2_t test_vreinterpretq_f64_p64(poly64x2_t a) {
2152072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_f64_p64(a);
2152172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2152272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_s8(<16 x i8> %a) #0 {
215244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> %a
2152572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_s8(int8x16_t a) {
2152672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_s8(a);
2152772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2152872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_s16(<8 x i16> %a) #0 {
215304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
215314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2153272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_s16(int16x8_t a) {
2153372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_s16(a);
2153472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2153572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_s32(<4 x i32> %a) #0 {
215374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
215384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2153972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_s32(int32x4_t a) {
2154072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_s32(a);
2154172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2154272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_s64(<2 x i64> %a) #0 {
215444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
215454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2154672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_s64(int64x2_t a) {
2154772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_s64(a);
2154872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2154972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_u8(<16 x i8> %a) #0 {
215514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> %a
2155272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_u8(uint8x16_t a) {
2155372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_u8(a);
2155472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2155572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_u16(<8 x i16> %a) #0 {
215574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
215584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2155972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_u16(uint16x8_t a) {
2156072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_u16(a);
2156172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2156272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_u32(<4 x i32> %a) #0 {
215644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
215654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2156672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_u32(uint32x4_t a) {
2156772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_u32(a);
2156872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2156972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_u64(<2 x i64> %a) #0 {
215714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
215724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2157372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_u64(uint64x2_t a) {
2157472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_u64(a);
2157572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2157672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_f16(<8 x half> %a) #0 {
215784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <16 x i8>
215794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2158072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_f16(float16x8_t a) {
2158172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_f16(a);
2158272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2158372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_f32(<4 x float> %a) #0 {
215854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
215864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2158772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_f32(float32x4_t a) {
2158872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_f32(a);
2158972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2159072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_f64(<2 x double> %a) #0 {
215924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
215934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2159472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_f64(float64x2_t a) {
2159572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_f64(a);
2159672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2159772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
215984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_p16(<8 x i16> %a) #0 {
215994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
216004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2160172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_p16(poly16x8_t a) {
2160272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_p16(a);
2160372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2160472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vreinterpretq_p8_p64(<2 x i64> %a) #0 {
216064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
216074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[TMP0]]
2160872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly8x16_t test_vreinterpretq_p8_p64(poly64x2_t a) {
2160972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p8_p64(a);
2161072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2161172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_s8(<16 x i8> %a) #0 {
216134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
216144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2161572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_s8(int8x16_t a) {
2161672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_s8(a);
2161772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2161872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_s16(<8 x i16> %a) #0 {
216204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> %a
2162172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_s16(int16x8_t a) {
2162272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_s16(a);
2162372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2162472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_s32(<4 x i32> %a) #0 {
216264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x i16>
216274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2162872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_s32(int32x4_t a) {
2162972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_s32(a);
2163072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2163172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_s64(<2 x i64> %a) #0 {
216334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
216344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2163572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_s64(int64x2_t a) {
2163672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_s64(a);
2163772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2163872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_u8(<16 x i8> %a) #0 {
216404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
216414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2164272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_u8(uint8x16_t a) {
2164372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_u8(a);
2164472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2164572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_u16(<8 x i16> %a) #0 {
216474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> %a
2164872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_u16(uint16x8_t a) {
2164972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_u16(a);
2165072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2165172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_u32(<4 x i32> %a) #0 {
216534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <8 x i16>
216544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2165572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_u32(uint32x4_t a) {
2165672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_u32(a);
2165772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2165872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_u64(<2 x i64> %a) #0 {
216604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
216614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2166272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_u64(uint64x2_t a) {
2166372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_u64(a);
2166472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2166572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_f16(<8 x half> %a) #0 {
216674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <8 x i16>
216684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2166972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_f16(float16x8_t a) {
2167072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_f16(a);
2167172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2167272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_f32(<4 x float> %a) #0 {
216744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <8 x i16>
216754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2167672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_f32(float32x4_t a) {
2167772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_f32(a);
2167872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2167972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_f64(<2 x double> %a) #0 {
216814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <8 x i16>
216824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2168372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_f64(float64x2_t a) {
2168472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_f64(a);
2168572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2168672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_p8(<16 x i8> %a) #0 {
216884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <8 x i16>
216894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2169072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_p8(poly8x16_t a) {
2169172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_p8(a);
2169272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2169372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
216944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vreinterpretq_p16_p64(<2 x i64> %a) #0 {
216954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <8 x i16>
216964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP0]]
2169772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly16x8_t test_vreinterpretq_p16_p64(poly64x2_t a) {
2169872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p16_p64(a);
2169972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2170072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_s8(<16 x i8> %a) #0 {
217024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
217034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2170472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_s8(int8x16_t a) {
2170572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_s8(a);
2170672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2170772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_s16(<8 x i16> %a) #0 {
217094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
217104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2171172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_s16(int16x8_t a) {
2171272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_s16(a);
2171372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2171472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_s32(<4 x i32> %a) #0 {
217164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x i64>
217174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2171872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_s32(int32x4_t a) {
2171972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_s32(a);
2172072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2172172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_s64(<2 x i64> %a) #0 {
217234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> %a
2172472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_s64(int64x2_t a) {
2172572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_s64(a);
2172672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2172772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_u8(<16 x i8> %a) #0 {
217294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
217304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2173172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_u8(uint8x16_t a) {
2173272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_u8(a);
2173372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2173472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_u16(<8 x i16> %a) #0 {
217364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
217374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2173872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_u16(uint16x8_t a) {
2173972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_u16(a);
2174072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2174172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_u32(<4 x i32> %a) #0 {
217434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <2 x i64>
217444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2174572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_u32(uint32x4_t a) {
2174672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_u32(a);
2174772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2174872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_u64(<2 x i64> %a) #0 {
217504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> %a
2175172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_u64(uint64x2_t a) {
2175272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_u64(a);
2175372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2175472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_f16(<8 x half> %a) #0 {
217564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x half> %a to <2 x i64>
217574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2175872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_f16(float16x8_t a) {
2175972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_f16(a);
2176072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2176172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_f32(<4 x float> %a) #0 {
217634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <2 x i64>
217644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2176572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_f32(float32x4_t a) {
2176672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_f32(a);
2176772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2176872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_f64(<2 x double> %a) #0 {
217704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <2 x i64>
217714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2177272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_f64(float64x2_t a) {
2177372dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_f64(a);
2177472dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2177572dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_p8(<16 x i8> %a) #0 {
217774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to <2 x i64>
217784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2177972dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_p8(poly8x16_t a) {
2178072dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_p8(a);
2178172dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2178272dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu
217834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vreinterpretq_p64_p16(<8 x i16> %a) #0 {
217844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <2 x i64>
217854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP0]]
2178672dcd52331e1ac34e2899e7ee1736f25792865cdHao Liupoly64x2_t test_vreinterpretq_p64_p16(poly16x8_t a) {
2178772dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu  return vreinterpretq_p64_p16(a);
2178872dcd52331e1ac34e2899e7ee1736f25792865cdHao Liu}
2178938750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendling
217904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vabds_f32(float %a, float %b) #0 {
217914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABDS_F32_I:%.*]] = call float @llvm.aarch64.sisd.fabd.f32(float %a, float %b) #4
217924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VABDS_F32_I]]
2179338750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendlingfloat32_t test_vabds_f32(float32_t a, float32_t b) {
2179438750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendling  return vabds_f32(a, b);
2179538750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendling}
2179638750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendling
217974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vabdd_f64(double %a, double %b) #0 {
217984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABDD_F64_I:%.*]] = call double @llvm.aarch64.sisd.fabd.f64(double %a, double %b) #4
217994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VABDD_F64_I]]
2180038750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendlingfloat64_t test_vabdd_f64(float64_t a, float64_t b) {
2180138750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendling  return vabdd_f64(a, b);
2180238750138231fbf4e9ef18ce93e55ee3bc6ac592dBill Wendling}
218031b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling
218044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vuqadd_s64(<1 x i64> %a, <1 x i64> %b) #0 {
218054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
218064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
218074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
218084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
218094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.suqadd.v1i64(<1 x i64> [[VUQADD_I]], <1 x i64> [[VUQADD1_I]]) #4
218104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VUQADD2_I]]
218111b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendlingint64x1_t test_vuqadd_s64(int64x1_t a, uint64x1_t b) {
218121b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling  return vuqadd_s64(a, b);
218131b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling}
218141b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling
218154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vsqadd_u64(<1 x i64> %a, <1 x i64> %b) #0 {
218164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
218174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
218184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
218194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
218204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD2_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.usqadd.v1i64(<1 x i64> [[VSQADD_I]], <1 x i64> [[VSQADD1_I]]) #4
218214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VSQADD2_I]]
218221b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendlinguint64x1_t test_vsqadd_u64(uint64x1_t a, int64x1_t b) {
218231b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling  return vsqadd_u64(a, b);
218241b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling}
218251b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling
218264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vsqadd_u8(<8 x i8> %a, <8 x i8> %b) #0 {
218274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.usqadd.v8i8(<8 x i8> %a, <8 x i8> %b) #4
218284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VSQADD_I]]
21829651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x8_t test_vsqadd_u8(uint8x8_t a, int8x8_t b) {
21830651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsqadd_u8(a, b);
21831651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
21832651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
218334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vsqaddq_u8(<16 x i8> %a, <16 x i8> %b) #0 {
218344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.usqadd.v16i8(<16 x i8> %a, <16 x i8> %b) #4
218354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VSQADD_I]]
21836651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vsqaddq_u8(uint8x16_t a, int8x16_t b) {
21837651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsqaddq_u8(a, b);
21838651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
21839651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
218404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vsqadd_u16(<4 x i16> %a, <4 x i16> %b) #0 {
218414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
218424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
218434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
218444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
218454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.usqadd.v4i16(<4 x i16> [[VSQADD_I]], <4 x i16> [[VSQADD1_I]]) #4
218464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VSQADD2_I]]
21847651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x4_t test_vsqadd_u16(uint16x4_t a, int16x4_t b) {
21848651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsqadd_u16(a, b);
21849651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
21850651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
218514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vsqaddq_u16(<8 x i16> %a, <8 x i16> %b) #0 {
218524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
218534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
218544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
218554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
218564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.usqadd.v8i16(<8 x i16> [[VSQADD_I]], <8 x i16> [[VSQADD1_I]]) #4
218574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSQADD2_I]]
21858651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vsqaddq_u16(uint16x8_t a, int16x8_t b) {
21859651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsqaddq_u16(a, b);
21860651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
21861651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
218624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vsqadd_u32(<2 x i32> %a, <2 x i32> %b) #0 {
218634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
218644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
218654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
218664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
218674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.usqadd.v2i32(<2 x i32> [[VSQADD_I]], <2 x i32> [[VSQADD1_I]]) #4
218684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VSQADD2_I]]
21869651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vsqadd_u32(uint32x2_t a, int32x2_t b) {
21870651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsqadd_u32(a, b);
21871651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
21872651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
218734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vsqaddq_u32(<4 x i32> %a, <4 x i32> %b) #0 {
218744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
218754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
218764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
218774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
218784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.usqadd.v4i32(<4 x i32> [[VSQADD_I]], <4 x i32> [[VSQADD1_I]]) #4
218794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSQADD2_I]]
21880651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vsqaddq_u32(uint32x4_t a, int32x4_t b) {
21881651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsqaddq_u32(a, b);
21882651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
21883651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
218844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vsqaddq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
218854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
218864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
218874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
218884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
218894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQADD2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.usqadd.v2i64(<2 x i64> [[VSQADD_I]], <2 x i64> [[VSQADD1_I]]) #4
218904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSQADD2_I]]
21891651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vsqaddq_u64(uint64x2_t a, int64x2_t b) {
21892651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vsqaddq_u64(a, b);
21893651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
21894651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
218954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vabs_s64(<1 x i64> %a) #0 {
218964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
218974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
218984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.abs.v1i64(<1 x i64> [[VABS_I]]) #4
218994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VABS1_I]]
219001b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendlingint64x1_t test_vabs_s64(int64x1_t a) {
219011b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling  return vabs_s64(a);
219021b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling}
219031b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling
219044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqabs_s64(<1 x i64> %a) #0 {
219054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
219064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
219074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqabs.v1i64(<1 x i64> [[VQABS_V_I]]) #4
219084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V2_I:%.*]] = bitcast <1 x i64> [[VQABS_V1_I]] to <8 x i8>
219094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQABS_V2_I]] to <1 x i64>
219104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP1]]
219111b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendlingint64x1_t test_vqabs_s64(int64x1_t a) {
219121b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling  return vqabs_s64(a);
219131b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling}
219141b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling
219154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vqneg_s64(<1 x i64> %a) #0 {
219164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
219174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
219184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.sqneg.v1i64(<1 x i64> [[VQNEG_V_I]]) #4
219194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V2_I:%.*]] = bitcast <1 x i64> [[VQNEG_V1_I]] to <8 x i8>
219204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQNEG_V2_I]] to <1 x i64>
219214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP1]]
219221b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendlingint64x1_t test_vqneg_s64(int64x1_t a) {
219231b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling  return vqneg_s64(a);
219241b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling}
219251b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling
219264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vneg_s64(<1 x i64> %a) #0 {
219274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <1 x i64> zeroinitializer, %a
219284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[SUB_I]]
219291b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendlingint64x1_t test_vneg_s64(int64x1_t a) {
219301b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling  return vneg_s64(a);
219311b2dde5fe25edb5dfd1708b2f33c793b6cdff75eBill Wendling}
21932d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vaddv_f32(<2 x float> %a) #0 {
219344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
219354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
219364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDV_F32_I:%.*]] = call float @llvm.aarch64.neon.faddv.f32.v2f32(<2 x float> [[TMP1]]) #4
219374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VADDV_F32_I]]
21938d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat32_t test_vaddv_f32(float32x2_t a) {
21939d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vaddv_f32(a);
21940d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
21941d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vaddvq_f32(<4 x float> %a) #0 {
219434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
219444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
219454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDVQ_F32_I:%.*]] = call float @llvm.aarch64.neon.faddv.f32.v4f32(<4 x float> [[TMP1]]) #4
219464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VADDVQ_F32_I]]
21947d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat32_t test_vaddvq_f32(float32x4_t a) {
21948d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vaddvq_f32(a);
21949d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
21950d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vaddvq_f64(<2 x double> %a) #0 {
219524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
219534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
219544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDVQ_F64_I:%.*]] = call double @llvm.aarch64.neon.faddv.f64.v2f64(<2 x double> [[TMP1]]) #4
219554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VADDVQ_F64_I]]
21956d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat64_t test_vaddvq_f64(float64x2_t a) {
21957d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vaddvq_f64(a);
21958d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
21959d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vmaxv_f32(<2 x float> %a) #0 {
219614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
219624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
219634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXV_F32_I:%.*]] = call float @llvm.aarch64.neon.fmaxv.f32.v2f32(<2 x float> [[TMP1]]) #4
219644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VMAXV_F32_I]]
21965d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat32_t test_vmaxv_f32(float32x2_t a) {
21966d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vmaxv_f32(a);
21967d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
21968d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vmaxvq_f64(<2 x double> %a) #0 {
219704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
219714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
219724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXVQ_F64_I:%.*]] = call double @llvm.aarch64.neon.fmaxv.f64.v2f64(<2 x double> [[TMP1]]) #4
219734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VMAXVQ_F64_I]]
21974d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat64_t test_vmaxvq_f64(float64x2_t a) {
21975d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vmaxvq_f64(a);
21976d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
21977d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vminv_f32(<2 x float> %a) #0 {
219794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
219804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
219814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINV_F32_I:%.*]] = call float @llvm.aarch64.neon.fminv.f32.v2f32(<2 x float> [[TMP1]]) #4
219824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VMINV_F32_I]]
21983d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat32_t test_vminv_f32(float32x2_t a) {
21984d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vminv_f32(a);
21985d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
21986d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vminvq_f64(<2 x double> %a) #0 {
219884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
219894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
219904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINVQ_F64_I:%.*]] = call double @llvm.aarch64.neon.fminv.f64.v2f64(<2 x double> [[TMP1]]) #4
219914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VMINVQ_F64_I]]
21992d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat64_t test_vminvq_f64(float64x2_t a) {
21993d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vminvq_f64(a);
21994d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
21995d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
219964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vmaxnmvq_f64(<2 x double> %a) #0 {
219974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
219984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
219994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNMVQ_F64_I:%.*]] = call double @llvm.aarch64.neon.fmaxnmv.f64.v2f64(<2 x double> [[TMP1]]) #4
220004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VMAXNMVQ_F64_I]]
22001d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat64_t test_vmaxnmvq_f64(float64x2_t a) {
22002d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vmaxnmvq_f64(a);
22003d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22004d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vmaxnmv_f32(<2 x float> %a) #0 {
220064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
220074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
220084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNMV_F32_I:%.*]] = call float @llvm.aarch64.neon.fmaxnmv.f32.v2f32(<2 x float> [[TMP1]]) #4
220094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VMAXNMV_F32_I]]
22010d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat32_t test_vmaxnmv_f32(float32x2_t a) {
22011d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vmaxnmv_f32(a);
22012d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22013d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define double @test_vminnmvq_f64(<2 x double> %a) #0 {
220154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
220164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
220174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNMVQ_F64_I:%.*]] = call double @llvm.aarch64.neon.fminnmv.f64.v2f64(<2 x double> [[TMP1]]) #4
220184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret double [[VMINNMVQ_F64_I]]
22019d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat64_t test_vminnmvq_f64(float64x2_t a) {
22020d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vminnmvq_f64(a);
22021d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22022d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define float @test_vminnmv_f32(<2 x float> %a) #0 {
220244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
220254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
220264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNMV_F32_I:%.*]] = call float @llvm.aarch64.neon.fminnmv.f32.v2f32(<2 x float> [[TMP1]]) #4
220274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret float [[VMINNMV_F32_I]]
22028d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingfloat32_t test_vminnmv_f32(float32x2_t a) {
22029d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vminnmv_f32(a);
22030d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22031d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpaddq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
220334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
220344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
220354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
220364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
220374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.addp.v2i64(<2 x i64> [[VPADDQ_V_I]], <2 x i64> [[VPADDQ_V1_I]]) #4
220384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <2 x i64> [[VPADDQ_V2_I]] to <16 x i8>
220394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <2 x i64>
220404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
22041d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingint64x2_t test_vpaddq_s64(int64x2_t a, int64x2_t b) {
22042d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vpaddq_s64(a, b);
22043d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22044d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpaddq_u64(<2 x i64> %a, <2 x i64> %b) #0 {
220464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
220474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
220484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
220494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
220504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.addp.v2i64(<2 x i64> [[VPADDQ_V_I]], <2 x i64> [[VPADDQ_V1_I]]) #4
220514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDQ_V3_I:%.*]] = bitcast <2 x i64> [[VPADDQ_V2_I]] to <16 x i8>
220524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[VPADDQ_V3_I]] to <2 x i64>
220534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
22054d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlinguint64x2_t test_vpaddq_u64(uint64x2_t a, uint64x2_t b) {
22055d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vpaddq_u64(a, b);
22056d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22057d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vpaddd_u64(<2 x i64> %a) #0 {
220594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
220604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
220614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDD_U64_I:%.*]] = call i64 @llvm.aarch64.neon.uaddv.i64.v2i64(<2 x i64> [[TMP1]]) #4
220624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VPADDD_U64_I]]
22063d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlinguint64_t test_vpaddd_u64(uint64x2_t a) {
22064d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vpaddd_u64(a);
22065d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22066d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vaddvq_s64(<2 x i64> %a) #0 {
220684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
220694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
220704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDVQ_S64_I:%.*]] = call i64 @llvm.aarch64.neon.saddv.i64.v2i64(<2 x i64> [[TMP1]]) #4
220714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VADDVQ_S64_I]]
22072d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlingint64_t test_vaddvq_s64(int64x2_t a) {
22073d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vaddvq_s64(a);
22074d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22075d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling
220764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vaddvq_u64(<2 x i64> %a) #0 {
220774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
220784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
220794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDVQ_U64_I:%.*]] = call i64 @llvm.aarch64.neon.uaddv.i64.v2i64(<2 x i64> [[TMP1]]) #4
220804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VADDVQ_U64_I]]
22081d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendlinguint64_t test_vaddvq_u64(uint64x2_t a) {
22082d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling  return vaddvq_u64(a);
22083d93bc4320ac3b2035a542fcf2004fce0c91abd11Bill Wendling}
22084c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
220854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vadd_f64(<1 x double> %a, <1 x double> %b) #0 {
220864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <1 x double> %a, %b
220874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[ADD_I]]
22088c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vadd_f64(float64x1_t a, float64x1_t b) {
22089c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vadd_f64(a, b);
22090c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22091c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
220924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vmul_f64(<1 x double> %a, <1 x double> %b) #0 {
220934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <1 x double> %a, %b
220944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[MUL_I]]
22095c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vmul_f64(float64x1_t a, float64x1_t b) {
22096c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vmul_f64(a, b);
22097c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22098c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
220994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vdiv_f64(<1 x double> %a, <1 x double> %b) #0 {
221004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[DIV_I:%.*]] = fdiv <1 x double> %a, %b
221014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[DIV_I]]
22102c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vdiv_f64(float64x1_t a, float64x1_t b) {
22103c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vdiv_f64(a, b);
22104c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22105c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vmla_f64(<1 x double> %a, <1 x double> %b, <1 x double> %c) #0 {
221074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <1 x double> %b, %c
221084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[ADD_I:%.*]] = fadd <1 x double> %a, [[MUL_I]]
221094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[ADD_I]]
22110c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vmla_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
22111c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vmla_f64(a, b, c);
22112c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22113c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vmls_f64(<1 x double> %a, <1 x double> %b, <1 x double> %c) #0 {
221154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[MUL_I:%.*]] = fmul <1 x double> %b, %c
221164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <1 x double> %a, [[MUL_I]]
221174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[SUB_I]]
22118c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vmls_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
22119c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vmls_f64(a, b, c);
22120c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22121c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vfma_f64(<1 x double> %a, <1 x double> %b, <1 x double> %c) #0 {
221234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
221244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
221254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <1 x double> %c to <8 x i8>
221264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
221274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
221284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x double>
221294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <1 x double> @llvm.fma.v1f64(<1 x double> [[TMP4]], <1 x double> [[TMP5]], <1 x double> [[TMP3]]) #4
221304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP6]]
22131c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vfma_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
22132c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vfma_f64(a, b, c);
22133c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22134c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vfms_f64(<1 x double> %a, <1 x double> %b, <1 x double> %c) #0 {
221364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <1 x double> <double -0.000000e+00>, %b
221374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
221384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> [[SUB_I]] to <8 x i8>
221394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <1 x double> %c to <8 x i8>
221404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
221414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
221424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP5:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x double>
221434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP6:%.*]] = call <1 x double> @llvm.fma.v1f64(<1 x double> [[TMP4]], <1 x double> [[TMP5]], <1 x double> [[TMP3]]) #4
221444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP6]]
22145c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vfms_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
22146c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vfms_f64(a, b, c);
22147c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22148c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vsub_f64(<1 x double> %a, <1 x double> %b) #0 {
221504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <1 x double> %a, %b
221514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[SUB_I]]
22152c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vsub_f64(float64x1_t a, float64x1_t b) {
22153c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vsub_f64(a, b);
22154c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22155c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vabd_f64(<1 x double> %a, <1 x double> %b) #0 {
221574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
221584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
221594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
221604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
221614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABD2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.fabd.v1f64(<1 x double> [[VABD_I]], <1 x double> [[VABD1_I]]) #4
221624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VABD2_I]]
22163c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vabd_f64(float64x1_t a, float64x1_t b) {
22164c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vabd_f64(a, b);
22165c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22166c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vmax_f64(<1 x double> %a, <1 x double> %b) #0 {
221684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
221694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
221704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
221714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
221724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAX2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.fmax.v1f64(<1 x double> [[VMAX_I]], <1 x double> [[VMAX1_I]]) #4
221734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VMAX2_I]]
22174c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vmax_f64(float64x1_t a, float64x1_t b) {
22175c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vmax_f64(a, b);
22176c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22177c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vmin_f64(<1 x double> %a, <1 x double> %b) #0 {
221794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
221804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
221814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
221824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
221834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMIN2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.fmin.v1f64(<1 x double> [[VMIN_I]], <1 x double> [[VMIN1_I]]) #4
221844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VMIN2_I]]
22185c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vmin_f64(float64x1_t a, float64x1_t b) {
22186c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vmin_f64(a, b);
22187c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22188c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
221894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vmaxnm_f64(<1 x double> %a, <1 x double> %b) #0 {
221904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
221914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
221924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
221934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
221944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXNM2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.fmaxnm.v1f64(<1 x double> [[VMAXNM_I]], <1 x double> [[VMAXNM1_I]]) #4
221954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VMAXNM2_I]]
22196c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vmaxnm_f64(float64x1_t a, float64x1_t b) {
22197c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vmaxnm_f64(a, b);
22198c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22199c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
222004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vminnm_f64(<1 x double> %a, <1 x double> %b) #0 {
222014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
222034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
222054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINNM2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.fminnm.v1f64(<1 x double> [[VMINNM_I]], <1 x double> [[VMINNM1_I]]) #4
222064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VMINNM2_I]]
22207c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vminnm_f64(float64x1_t a, float64x1_t b) {
22208c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vminnm_f64(a, b);
22209c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22210c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
222114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vabs_f64(<1 x double> %a) #0 {
222124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <1 x double> @llvm.fabs.v1f64(<1 x double> [[VABS_I]]) #4
222154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VABS1_I]]
22216c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vabs_f64(float64x1_t a) {
22217c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vabs_f64(a);
22218c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22219c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling
222204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vneg_f64(<1 x double> %a) #0 {
222214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <1 x double> <double -0.000000e+00>, %a
222224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[SUB_I]]
22223c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendlingfloat64x1_t test_vneg_f64(float64x1_t a) {
22224c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling  return vneg_f64(a);
22225c5c84b8d634299f02b50ee0e36b58d53d5dd43b2Bill Wendling}
22226917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvt_s64_f64(<1 x double> %a) #0 {
222284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptosi <1 x double> [[TMP1]] to <1 x i64>
222314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
22232917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingint64x1_t test_vcvt_s64_f64(float64x1_t a) {
22233917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_s64_f64(a);
22234917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22235917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvt_u64_f64(<1 x double> %a) #0 {
222374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptoui <1 x double> [[TMP1]] to <1 x i64>
222404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP2]]
22241917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlinguint64x1_t test_vcvt_u64_f64(float64x1_t a) {
22242917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_u64_f64(a);
22243917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22244917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvtn_s64_f64(<1 x double> %a) #0 {
222464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtns.v1i64.v1f64(<1 x double> [[VCVTN_I]]) #4
222494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTN1_I]]
22250917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingint64x1_t test_vcvtn_s64_f64(float64x1_t a) {
22251917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvtn_s64_f64(a);
22252917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22253917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvtn_u64_f64(<1 x double> %a) #0 {
222554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtnu.v1i64.v1f64(<1 x double> [[VCVTN_I]]) #4
222584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTN1_I]]
22259917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlinguint64x1_t test_vcvtn_u64_f64(float64x1_t a) {
22260917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvtn_u64_f64(a);
22261917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22262917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvtp_s64_f64(<1 x double> %a) #0 {
222644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtps.v1i64.v1f64(<1 x double> [[VCVTP_I]]) #4
222674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTP1_I]]
22268917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingint64x1_t test_vcvtp_s64_f64(float64x1_t a) {
22269917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvtp_s64_f64(a);
22270917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22271917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvtp_u64_f64(<1 x double> %a) #0 {
222734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtpu.v1i64.v1f64(<1 x double> [[VCVTP_I]]) #4
222764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTP1_I]]
22277917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlinguint64x1_t test_vcvtp_u64_f64(float64x1_t a) {
22278917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvtp_u64_f64(a);
22279917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22280917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvtm_s64_f64(<1 x double> %a) #0 {
222824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtms.v1i64.v1f64(<1 x double> [[VCVTM_I]]) #4
222854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTM1_I]]
22286917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingint64x1_t test_vcvtm_s64_f64(float64x1_t a) {
22287917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvtm_s64_f64(a);
22288917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22289917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvtm_u64_f64(<1 x double> %a) #0 {
222914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
222924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
222934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtmu.v1i64.v1f64(<1 x double> [[VCVTM_I]]) #4
222944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTM1_I]]
22295917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlinguint64x1_t test_vcvtm_u64_f64(float64x1_t a) {
22296917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvtm_u64_f64(a);
22297917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22298917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
222994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvta_s64_f64(<1 x double> %a) #0 {
223004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
223014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
223024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtas.v1i64.v1f64(<1 x double> [[VCVTA_I]]) #4
223034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTA1_I]]
22304917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingint64x1_t test_vcvta_s64_f64(float64x1_t a) {
22305917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvta_s64_f64(a);
22306917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22307917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvta_u64_f64(<1 x double> %a) #0 {
223094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
223104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
223114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.fcvtau.v1i64.v1f64(<1 x double> [[VCVTA_I]]) #4
223124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVTA1_I]]
22313917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlinguint64x1_t test_vcvta_u64_f64(float64x1_t a) {
22314917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvta_u64_f64(a);
22315917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22316917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vcvt_f64_s64(<1 x i64> %a) #0 {
223184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
223194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
223204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = sitofp <1 x i64> [[TMP1]] to <1 x double>
223214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VCVT_I]]
22322917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vcvt_f64_s64(int64x1_t a) {
22323917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_f64_s64(a);
22324917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22325917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vcvt_f64_u64(<1 x i64> %a) #0 {
223274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
223284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
223294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = uitofp <1 x i64> [[TMP1]] to <1 x double>
223304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VCVT_I]]
22331917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vcvt_f64_u64(uint64x1_t a) {
22332917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_f64_u64(a);
22333917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22334917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvt_n_s64_f64(<1 x double> %a) #0 {
223364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
223374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
223384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.vcvtfp2fxs.v1i64.v1f64(<1 x double> [[VCVT_N]], i32 64)
223394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVT_N1]]
22340917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingint64x1_t test_vcvt_n_s64_f64(float64x1_t a) {
22341917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_n_s64_f64(a, 64);
22342917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22343917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcvt_n_u64_f64(<1 x double> %a) #0 {
223454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
223464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
223474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <1 x i64> @llvm.aarch64.neon.vcvtfp2fxu.v1i64.v1f64(<1 x double> [[VCVT_N]], i32 64)
223484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCVT_N1]]
22349917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlinguint64x1_t test_vcvt_n_u64_f64(float64x1_t a) {
22350917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_n_u64_f64(a, 64);
22351917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22352917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vcvt_n_f64_s64(<1 x i64> %a) #0 {
223544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
223554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
223564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <1 x double> @llvm.aarch64.neon.vcvtfxs2fp.v1f64.v1i64(<1 x i64> [[VCVT_N]], i32 64)
223574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VCVT_N1]]
22358917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vcvt_n_f64_s64(int64x1_t a) {
22359917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_n_f64_s64(a, 64);
22360917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22361917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vcvt_n_f64_u64(<1 x i64> %a) #0 {
223634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
223644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
223654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_N1:%.*]] = call <1 x double> @llvm.aarch64.neon.vcvtfxu2fp.v1f64.v1i64(<1 x i64> [[VCVT_N]], i32 64)
223664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VCVT_N1]]
22367917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vcvt_n_f64_u64(uint64x1_t a) {
22368917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vcvt_n_f64_u64(a, 64);
22369917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22370917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrndn_f64(<1 x double> %a) #0 {
223724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
223734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
223744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN1_I:%.*]] = call <1 x double> @llvm.aarch64.neon.frintn.v1f64(<1 x double> [[VRNDN_I]]) #4
223754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRNDN1_I]]
22376917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrndn_f64(float64x1_t a) {
22377917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrndn_f64(a);
22378917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22379917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrnda_f64(<1 x double> %a) #0 {
223814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
223824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
223834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA1_I:%.*]] = call <1 x double> @llvm.round.v1f64(<1 x double> [[VRNDA_I]]) #4
223844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRNDA1_I]]
22385917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrnda_f64(float64x1_t a) {
22386917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrnda_f64(a);
22387917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22388917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrndp_f64(<1 x double> %a) #0 {
223904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
223914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
223924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP1_I:%.*]] = call <1 x double> @llvm.ceil.v1f64(<1 x double> [[VRNDP_I]]) #4
223934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRNDP1_I]]
22394917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrndp_f64(float64x1_t a) {
22395917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrndp_f64(a);
22396917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22397917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
223984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrndm_f64(<1 x double> %a) #0 {
223994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM1_I:%.*]] = call <1 x double> @llvm.floor.v1f64(<1 x double> [[VRNDM_I]]) #4
224024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRNDM1_I]]
22403917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrndm_f64(float64x1_t a) {
22404917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrndm_f64(a);
22405917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22406917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrndx_f64(<1 x double> %a) #0 {
224084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX1_I:%.*]] = call <1 x double> @llvm.rint.v1f64(<1 x double> [[VRNDX_I]]) #4
224114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRNDX1_I]]
22412917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrndx_f64(float64x1_t a) {
22413917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrndx_f64(a);
22414917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22415917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrnd_f64(<1 x double> %a) #0 {
224174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ1_I:%.*]] = call <1 x double> @llvm.trunc.v1f64(<1 x double> [[VRNDZ_I]]) #4
224204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRNDZ1_I]]
22421917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrnd_f64(float64x1_t a) {
22422917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrnd_f64(a);
22423917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22424917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrndi_f64(<1 x double> %a) #0 {
224264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI1_I:%.*]] = call <1 x double> @llvm.nearbyint.v1f64(<1 x double> [[VRNDI_I]]) #4
224294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRNDI1_I]]
22430917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrndi_f64(float64x1_t a) {
22431917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrndi_f64(a);
22432917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22433917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrsqrte_f64(<1 x double> %a) #0 {
224354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTE_V1_I:%.*]] = call <1 x double> @llvm.aarch64.neon.frsqrte.v1f64(<1 x double> [[VRSQRTE_V_I]]) #4
224384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRSQRTE_V1_I]]
22439917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrsqrte_f64(float64x1_t a) {
22440917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrsqrte_f64(a);
22441917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22442917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrecpe_f64(<1 x double> %a) #0 {
224444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPE_V1_I:%.*]] = call <1 x double> @llvm.aarch64.neon.frecpe.v1f64(<1 x double> [[VRECPE_V_I]]) #4
224474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VRECPE_V1_I]]
22448917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrecpe_f64(float64x1_t a) {
22449917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrecpe_f64(a);
22450917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22451917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vsqrt_f64(<1 x double> %a) #0 {
224534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQRT_I:%.*]] = call <1 x double> @llvm.sqrt.v1f64(<1 x double> [[TMP1]]) #4
224564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[VSQRT_I]]
22457917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vsqrt_f64(float64x1_t a) {
22458917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vsqrt_f64(a);
22459917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22460917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrecps_f64(<1 x double> %a, <1 x double> %b) #0 {
224624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
224644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
224664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.frecps.v1f64(<1 x double> [[VRECPS_V_I]], <1 x double> [[VRECPS_V1_I]]) #4
224674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPS_V3_I:%.*]] = bitcast <1 x double> [[VRECPS_V2_I]] to <8 x i8>
224684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRECPS_V3_I]] to <1 x double>
224694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP2]]
22470917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrecps_f64(float64x1_t a, float64x1_t b) {
22471917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrecps_f64(a, b);
22472917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22473917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling
224744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x double> @test_vrsqrts_f64(<1 x double> %a, <1 x double> %b) #0 {
224754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
224764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
224774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
224784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
224794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.frsqrts.v1f64(<1 x double> [[VRSQRTS_V_I]], <1 x double> [[VRSQRTS_V1_I]]) #4
224804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTS_V3_I:%.*]] = bitcast <1 x double> [[VRSQRTS_V2_I]] to <8 x i8>
224814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[VRSQRTS_V3_I]] to <1 x double>
224824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x double> [[TMP2]]
22483917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendlingfloat64x1_t test_vrsqrts_f64(float64x1_t a, float64x1_t b) {
22484917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling  return vrsqrts_f64(a, b);
22485917b328a7f565f9f3f0ae2067a8b97732efaa9f8Bill Wendling}
22486651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
224874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vminv_s32(<2 x i32> %a) #0 {
224884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
224894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
224904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINV_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sminv.i32.v2i32(<2 x i32> [[TMP1]]) #4
224914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VMINV_S32_I]]
22492651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vminv_s32(int32x2_t a) {
22493651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vminv_s32(a);
22494651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22495651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
224964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vminv_u32(<2 x i32> %a) #0 {
224974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
224984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
224994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMINV_U32_I:%.*]] = call i32 @llvm.aarch64.neon.uminv.i32.v2i32(<2 x i32> [[TMP1]]) #4
225004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VMINV_U32_I]]
22501651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vminv_u32(uint32x2_t a) {
22502651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vminv_u32(a);
22503651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22504651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
225054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vmaxv_s32(<2 x i32> %a) #0 {
225064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
225074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
225084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXV_S32_I:%.*]] = call i32 @llvm.aarch64.neon.smaxv.i32.v2i32(<2 x i32> [[TMP1]]) #4
225094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VMAXV_S32_I]]
22510651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vmaxv_s32(int32x2_t a) {
22511651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vmaxv_s32(a);
22512651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22513651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
225144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vmaxv_u32(<2 x i32> %a) #0 {
225154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
225164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
225174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMAXV_U32_I:%.*]] = call i32 @llvm.aarch64.neon.umaxv.i32.v2i32(<2 x i32> [[TMP1]]) #4
225184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VMAXV_U32_I]]
22519651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vmaxv_u32(uint32x2_t a) {
22520651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vmaxv_u32(a);
22521651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22522651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
225234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vaddv_s32(<2 x i32> %a) #0 {
225244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
225254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
225264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDV_S32_I:%.*]] = call i32 @llvm.aarch64.neon.saddv.i32.v2i32(<2 x i32> [[TMP1]]) #4
225274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VADDV_S32_I]]
22528651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vaddv_s32(int32x2_t a) {
22529651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vaddv_s32(a);
22530651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22531651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
225324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i32 @test_vaddv_u32(<2 x i32> %a) #0 {
225334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
225344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
225354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDV_U32_I:%.*]] = call i32 @llvm.aarch64.neon.uaddv.i32.v2i32(<2 x i32> [[TMP1]]) #4
225364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i32 [[VADDV_U32_I]]
22537651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vaddv_u32(uint32x2_t a) {
22538651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vaddv_u32(a);
22539651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22540651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
225414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vaddlv_s32(<2 x i32> %a) #0 {
225424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
225434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
225444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDLV_S32_I:%.*]] = call i64 @llvm.aarch64.neon.saddlv.i64.v2i32(<2 x i32> [[TMP1]]) #4
225454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VADDLV_S32_I]]
22546651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vaddlv_s32(int32x2_t a) {
22547651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vaddlv_s32(a);
22548651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22549651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
225504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define i64 @test_vaddlv_u32(<2 x i32> %a) #0 {
225514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
225524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
225534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VADDLV_U32_I:%.*]] = call i64 @llvm.aarch64.neon.uaddlv.i64.v2i32(<2 x i32> [[TMP1]]) #4
225544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret i64 [[VADDLV_U32_I]]
22555651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vaddlv_u32(uint32x2_t a) {
22556651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vaddlv_u32(a);
22557651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
22558