16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN:  -fallow-half-arguments-and-returns -emit-llvm -o - %s \
34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: | opt -S -mem2reg | FileCheck %s
42a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
52a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin// Test new aarch64 intrinsics and types
62a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
72a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin#include <arm_neon.h>
82a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vceqz_s8(<8 x i8> %a) #0 {
104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq <8 x i8> %a, zeroinitializer
114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <8 x i1> [[TMP0]] to <8 x i8>
124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCEQZ_I]]
132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vceqz_s8(int8x8_t a) {
142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_s8(a);
152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vceqz_s16(<4 x i16> %a) #0 {
184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <4 x i16> [[TMP1]], zeroinitializer
214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i16>
224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VCEQZ_I]]
232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vceqz_s16(int16x4_t a) {
242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_s16(a);
252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vceqz_s32(<2 x i32> %a) #0 {
284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <2 x i32> [[TMP1]], zeroinitializer
314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCEQZ_I]]
332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vceqz_s32(int32x2_t a) {
342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_s32(a);
352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vceqz_s64(<1 x i64> %a) #0 {
384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <1 x i64> [[TMP1]], zeroinitializer
414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCEQZ_I]]
43612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vceqz_s64(int64x1_t a) {
44612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vceqz_s64(a);
45612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
46612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vceqz_u64(<1 x i64> %a) #0 {
484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <1 x i64> [[TMP1]], zeroinitializer
514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCEQZ_I]]
53612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vceqz_u64(uint64x1_t a) {
54612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vceqz_u64(a);
55612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
56612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vceqz_p64(<1 x i64> %a) #0 {
584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <1 x i64> [[TMP1]], zeroinitializer
614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCEQZ_I]]
63612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vceqz_p64(poly64x1_t a) {
64612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vceqz_p64(a);
65612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
66612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vceqzq_s8(<16 x i8> %a) #0 {
684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq <16 x i8> %a, zeroinitializer
694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <16 x i1> [[TMP0]] to <16 x i8>
704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCEQZ_I]]
712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vceqzq_s8(int8x16_t a) {
722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_s8(a);
732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vceqzq_s16(<8 x i16> %a) #0 {
764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <8 x i16> [[TMP1]], zeroinitializer
794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <8 x i1> [[TMP2]] to <8 x i16>
804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VCEQZ_I]]
812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vceqzq_s16(int16x8_t a) {
822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_s16(a);
832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vceqzq_s32(<4 x i32> %a) #0 {
864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <4 x i32> [[TMP1]], zeroinitializer
894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCEQZ_I]]
912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vceqzq_s32(int32x4_t a) {
922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_s32(a);
932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vceqzq_s64(<2 x i64> %a) #0 {
964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <2 x i64> [[TMP1]], zeroinitializer
994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCEQZ_I]]
1012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vceqzq_s64(int64x2_t a) {
1022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_s64(a);
1032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vceqz_u8(<8 x i8> %a) #0 {
1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq <8 x i8> %a, zeroinitializer
1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <8 x i1> [[TMP0]] to <8 x i8>
1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCEQZ_I]]
1092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vceqz_u8(uint8x8_t a) {
1102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_u8(a);
1112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vceqz_u16(<4 x i16> %a) #0 {
1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <4 x i16> [[TMP1]], zeroinitializer
1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i16>
1184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VCEQZ_I]]
1192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vceqz_u16(uint16x4_t a) {
1202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_u16(a);
1212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vceqz_u32(<2 x i32> %a) #0 {
1244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
1254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <2 x i32> [[TMP1]], zeroinitializer
1274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCEQZ_I]]
1292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vceqz_u32(uint32x2_t a) {
1302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_u32(a);
1312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vceqzq_u8(<16 x i8> %a) #0 {
1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq <16 x i8> %a, zeroinitializer
1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <16 x i1> [[TMP0]] to <16 x i8>
1364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCEQZ_I]]
1372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vceqzq_u8(uint8x16_t a) {
1382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_u8(a);
1392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vceqzq_u16(<8 x i16> %a) #0 {
1424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <8 x i16> [[TMP1]], zeroinitializer
1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <8 x i1> [[TMP2]] to <8 x i16>
1464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VCEQZ_I]]
1472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vceqzq_u16(uint16x8_t a) {
1482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_u16(a);
1492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vceqzq_u32(<4 x i32> %a) #0 {
1524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
1534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <4 x i32> [[TMP1]], zeroinitializer
1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCEQZ_I]]
1572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vceqzq_u32(uint32x4_t a) {
1582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_u32(a);
1592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vceqzq_u64(<2 x i64> %a) #0 {
1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <2 x i64> [[TMP1]], zeroinitializer
1654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
1664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCEQZ_I]]
1672a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vceqzq_u64(uint64x2_t a) {
1682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_u64(a);
1692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vceqz_f32(<2 x float> %a) #0 {
1724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
1734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
1744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oeq <2 x float> [[TMP1]], zeroinitializer
1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCEQZ_I]]
1772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vceqz_f32(float32x2_t a) {
1782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_f32(a);
1792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
1802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
1814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vceqz_f64(<1 x double> %a) #0 {
1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oeq <1 x double> [[TMP1]], zeroinitializer
1854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
1864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCEQZ_I]]
187d6f42ac4ce92771d486c8ce459d3e1266567c244Bill Wendlinguint64x1_t test_vceqz_f64(float64x1_t a) {
188d6f42ac4ce92771d486c8ce459d3e1266567c244Bill Wendling  return vceqz_f64(a);
189d6f42ac4ce92771d486c8ce459d3e1266567c244Bill Wendling}
190d6f42ac4ce92771d486c8ce459d3e1266567c244Bill Wendling
1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vceqzq_f32(<4 x float> %a) #0 {
1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
1934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
1944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oeq <4 x float> [[TMP1]], zeroinitializer
1954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCEQZ_I]]
1972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vceqzq_f32(float32x4_t a) {
1982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_f32(a);
1992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
2002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
2014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vceqz_p8(<8 x i8> %a) #0 {
2024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq <8 x i8> %a, zeroinitializer
2034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <8 x i1> [[TMP0]] to <8 x i8>
2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCEQZ_I]]
205651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x8_t test_vceqz_p8(poly8x8_t a) {
206651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vceqz_p8(a);
207651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
208651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
2094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vceqzq_p8(<16 x i8> %a) #0 {
2104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp eq <16 x i8> %a, zeroinitializer
2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <16 x i1> [[TMP0]] to <16 x i8>
2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCEQZ_I]]
213651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vceqzq_p8(poly8x16_t a) {
214651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vceqzq_p8(a);
215651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
216651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
2174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vceqz_p16(<4 x i16> %a) #0 {
2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
2204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <4 x i16> [[TMP1]], zeroinitializer
2214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i16>
2224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VCEQZ_I]]
2232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vceqz_p16(poly16x4_t a) {
2242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqz_p16(a);
2252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
2262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
2274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vceqzq_p16(<8 x i16> %a) #0 {
2284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
2294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
2304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <8 x i16> [[TMP1]], zeroinitializer
2314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <8 x i1> [[TMP2]] to <8 x i16>
2324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VCEQZ_I]]
2332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vceqzq_p16(poly16x8_t a) {
2342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_p16(a);
2352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
2362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
2374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vceqzq_f64(<2 x double> %a) #0 {
2384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
2394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
2404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oeq <2 x double> [[TMP1]], zeroinitializer
2414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
2424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCEQZ_I]]
2432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vceqzq_f64(float64x2_t a) {
2442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vceqzq_f64(a);
2452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
2462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
2474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vceqzq_p64(<2 x i64> %a) #0 {
2484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
2494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
2504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp eq <2 x i64> [[TMP1]], zeroinitializer
2514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCEQZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
2524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCEQZ_I]]
253612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x2_t test_vceqzq_p64(poly64x2_t a) {
254612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vceqzq_p64(a);
255612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
256612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
2574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcgez_s8(<8 x i8> %a) #0 {
2584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sge <8 x i8> %a, zeroinitializer
2594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <8 x i1> [[TMP0]] to <8 x i8>
2604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCGEZ_I]]
2612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vcgez_s8(int8x8_t a) {
2622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgez_s8(a);
2632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
2642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
2654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcgez_s16(<4 x i16> %a) #0 {
2664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
2674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
2684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sge <4 x i16> [[TMP1]], zeroinitializer
2694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i16>
2704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VCGEZ_I]]
2712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vcgez_s16(int16x4_t a) {
2722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgez_s16(a);
2732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
2742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
2754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcgez_s32(<2 x i32> %a) #0 {
2764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
2774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
2784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sge <2 x i32> [[TMP1]], zeroinitializer
2794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
2804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCGEZ_I]]
2812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcgez_s32(int32x2_t a) {
2822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgez_s32(a);
2832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
2842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
2854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcgez_s64(<1 x i64> %a) #0 {
2864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
2874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
2884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sge <1 x i64> [[TMP1]], zeroinitializer
2894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
2904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCGEZ_I]]
291612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcgez_s64(int64x1_t a) {
292612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcgez_s64(a);
293612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
294612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
2954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcgezq_s8(<16 x i8> %a) #0 {
2964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sge <16 x i8> %a, zeroinitializer
2974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <16 x i1> [[TMP0]] to <16 x i8>
2984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCGEZ_I]]
2992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vcgezq_s8(int8x16_t a) {
3002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgezq_s8(a);
3012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcgezq_s16(<8 x i16> %a) #0 {
3044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
3054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
3064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sge <8 x i16> [[TMP1]], zeroinitializer
3074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <8 x i1> [[TMP2]] to <8 x i16>
3084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VCGEZ_I]]
3092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vcgezq_s16(int16x8_t a) {
3102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgezq_s16(a);
3112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgezq_s32(<4 x i32> %a) #0 {
3144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
3154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
3164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sge <4 x i32> [[TMP1]], zeroinitializer
3174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
3184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCGEZ_I]]
3192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcgezq_s32(int32x4_t a) {
3202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgezq_s32(a);
3212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgezq_s64(<2 x i64> %a) #0 {
3244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
3254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
3264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sge <2 x i64> [[TMP1]], zeroinitializer
3274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
3284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCGEZ_I]]
3292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcgezq_s64(int64x2_t a) {
3302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgezq_s64(a);
3312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcgez_f32(<2 x float> %a) #0 {
3344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
3354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
3364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oge <2 x float> [[TMP1]], zeroinitializer
3374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
3384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCGEZ_I]]
3392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcgez_f32(float32x2_t a) {
3402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgez_f32(a);
3412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcgez_f64(<1 x double> %a) #0 {
3444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
3454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
3464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oge <1 x double> [[TMP1]], zeroinitializer
3474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
3484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCGEZ_I]]
349651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vcgez_f64(float64x1_t a) {
350651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcgez_f64(a);
351651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
352651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
3534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgezq_f32(<4 x float> %a) #0 {
3544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
3554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
3564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oge <4 x float> [[TMP1]], zeroinitializer
3574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
3584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCGEZ_I]]
3592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcgezq_f32(float32x4_t a) {
3602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgezq_f32(a);
3612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgezq_f64(<2 x double> %a) #0 {
3644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
3654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
3664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp oge <2 x double> [[TMP1]], zeroinitializer
3674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
3684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCGEZ_I]]
3692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcgezq_f64(float64x2_t a) {
3702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgezq_f64(a);
3712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vclez_s8(<8 x i8> %a) #0 {
3744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sle <8 x i8> %a, zeroinitializer
3754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <8 x i1> [[TMP0]] to <8 x i8>
3764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCLEZ_I]]
3772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vclez_s8(int8x8_t a) {
3782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclez_s8(a);
3792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vclez_s16(<4 x i16> %a) #0 {
3824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
3834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
3844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sle <4 x i16> [[TMP1]], zeroinitializer
3854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i16>
3864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VCLEZ_I]]
3872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vclez_s16(int16x4_t a) {
3882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclez_s16(a);
3892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
3914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vclez_s32(<2 x i32> %a) #0 {
3924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
3934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
3944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sle <2 x i32> [[TMP1]], zeroinitializer
3954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
3964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCLEZ_I]]
3972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vclez_s32(int32x2_t a) {
3982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclez_s32(a);
3992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vclez_s64(<1 x i64> %a) #0 {
4024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
4034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
4044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sle <1 x i64> [[TMP1]], zeroinitializer
4054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
4064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCLEZ_I]]
407612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vclez_s64(int64x1_t a) {
408612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vclez_s64(a);
409612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
410612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
4114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vclezq_s8(<16 x i8> %a) #0 {
4124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sle <16 x i8> %a, zeroinitializer
4134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <16 x i1> [[TMP0]] to <16 x i8>
4144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCLEZ_I]]
4152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vclezq_s8(int8x16_t a) {
4162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclezq_s8(a);
4172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vclezq_s16(<8 x i16> %a) #0 {
4204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
4214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
4224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sle <8 x i16> [[TMP1]], zeroinitializer
4234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <8 x i1> [[TMP2]] to <8 x i16>
4244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VCLEZ_I]]
4252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vclezq_s16(int16x8_t a) {
4262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclezq_s16(a);
4272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vclezq_s32(<4 x i32> %a) #0 {
4304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
4314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
4324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sle <4 x i32> [[TMP1]], zeroinitializer
4334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
4344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCLEZ_I]]
4352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vclezq_s32(int32x4_t a) {
4362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclezq_s32(a);
4372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vclezq_s64(<2 x i64> %a) #0 {
4404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
4414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
4424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sle <2 x i64> [[TMP1]], zeroinitializer
4434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
4444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCLEZ_I]]
4452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vclezq_s64(int64x2_t a) {
4462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclezq_s64(a);
4472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vclez_f32(<2 x float> %a) #0 {
4504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
4514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
4524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ole <2 x float> [[TMP1]], zeroinitializer
4534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
4544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCLEZ_I]]
4552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vclez_f32(float32x2_t a) {
4562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclez_f32(a);
4572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vclez_f64(<1 x double> %a) #0 {
4604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
4614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
4624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ole <1 x double> [[TMP1]], zeroinitializer
4634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
4644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCLEZ_I]]
465651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vclez_f64(float64x1_t a) {
466651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vclez_f64(a);
467651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
468651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
4694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vclezq_f32(<4 x float> %a) #0 {
4704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
4714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
4724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ole <4 x float> [[TMP1]], zeroinitializer
4734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
4744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCLEZ_I]]
4752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vclezq_f32(float32x4_t a) {
4762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclezq_f32(a);
4772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vclezq_f64(<2 x double> %a) #0 {
4804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
4814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
4824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ole <2 x double> [[TMP1]], zeroinitializer
4834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLEZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
4844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCLEZ_I]]
4852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vclezq_f64(float64x2_t a) {
4862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclezq_f64(a);
4872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcgtz_s8(<8 x i8> %a) #0 {
4904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sgt <8 x i8> %a, zeroinitializer
4914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <8 x i1> [[TMP0]] to <8 x i8>
4924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCGTZ_I]]
4932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vcgtz_s8(int8x8_t a) {
4942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtz_s8(a);
4952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
4962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
4974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcgtz_s16(<4 x i16> %a) #0 {
4984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
4994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
5004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sgt <4 x i16> [[TMP1]], zeroinitializer
5014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i16>
5024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VCGTZ_I]]
5032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vcgtz_s16(int16x4_t a) {
5042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtz_s16(a);
5052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcgtz_s32(<2 x i32> %a) #0 {
5084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
5094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
5104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sgt <2 x i32> [[TMP1]], zeroinitializer
5114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
5124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCGTZ_I]]
5132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcgtz_s32(int32x2_t a) {
5142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtz_s32(a);
5152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcgtz_s64(<1 x i64> %a) #0 {
5184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
5194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
5204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sgt <1 x i64> [[TMP1]], zeroinitializer
5214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
5224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCGTZ_I]]
523612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcgtz_s64(int64x1_t a) {
524612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcgtz_s64(a);
525612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
526612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
5274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcgtzq_s8(<16 x i8> %a) #0 {
5284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp sgt <16 x i8> %a, zeroinitializer
5294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <16 x i1> [[TMP0]] to <16 x i8>
5304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCGTZ_I]]
5312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vcgtzq_s8(int8x16_t a) {
5322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtzq_s8(a);
5332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcgtzq_s16(<8 x i16> %a) #0 {
5364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
5374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
5384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sgt <8 x i16> [[TMP1]], zeroinitializer
5394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <8 x i1> [[TMP2]] to <8 x i16>
5404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VCGTZ_I]]
5412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vcgtzq_s16(int16x8_t a) {
5422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtzq_s16(a);
5432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgtzq_s32(<4 x i32> %a) #0 {
5464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
5474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
5484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sgt <4 x i32> [[TMP1]], zeroinitializer
5494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
5504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCGTZ_I]]
5512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcgtzq_s32(int32x4_t a) {
5522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtzq_s32(a);
5532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgtzq_s64(<2 x i64> %a) #0 {
5564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
5574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
5584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp sgt <2 x i64> [[TMP1]], zeroinitializer
5594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
5604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCGTZ_I]]
5612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcgtzq_s64(int64x2_t a) {
5622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtzq_s64(a);
5632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcgtz_f32(<2 x float> %a) #0 {
5664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
5674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
5684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ogt <2 x float> [[TMP1]], zeroinitializer
5694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
5704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCGTZ_I]]
5712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcgtz_f32(float32x2_t a) {
5722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtz_f32(a);
5732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcgtz_f64(<1 x double> %a) #0 {
5764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
5774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
5784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ogt <1 x double> [[TMP1]], zeroinitializer
5794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
5804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCGTZ_I]]
581651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vcgtz_f64(float64x1_t a) {
582651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcgtz_f64(a);
583651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
584651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
5854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcgtzq_f32(<4 x float> %a) #0 {
5864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
5874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
5884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ogt <4 x float> [[TMP1]], zeroinitializer
5894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
5904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCGTZ_I]]
5912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcgtzq_f32(float32x4_t a) {
5922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtzq_f32(a);
5932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
5942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
5954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcgtzq_f64(<2 x double> %a) #0 {
5964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
5974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
5984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp ogt <2 x double> [[TMP1]], zeroinitializer
5994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCGTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
6004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCGTZ_I]]
6012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcgtzq_f64(float64x2_t a) {
6022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcgtzq_f64(a);
6032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcltz_s8(<8 x i8> %a) #0 {
6064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp slt <8 x i8> %a, zeroinitializer
6074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <8 x i1> [[TMP0]] to <8 x i8>
6084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCLTZ_I]]
6092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vcltz_s8(int8x8_t a) {
6102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltz_s8(a);
6112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcltz_s16(<4 x i16> %a) #0 {
6144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
6154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
6164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp slt <4 x i16> [[TMP1]], zeroinitializer
6174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i16>
6184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VCLTZ_I]]
6192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vcltz_s16(int16x4_t a) {
6202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltz_s16(a);
6212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcltz_s32(<2 x i32> %a) #0 {
6244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
6254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
6264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp slt <2 x i32> [[TMP1]], zeroinitializer
6274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
6284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCLTZ_I]]
6292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcltz_s32(int32x2_t a) {
6302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltz_s32(a);
6312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcltz_s64(<1 x i64> %a) #0 {
6344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
6354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
6364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp slt <1 x i64> [[TMP1]], zeroinitializer
6374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
6384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCLTZ_I]]
639612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendlinguint64x1_t test_vcltz_s64(int64x1_t a) {
640612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling  return vcltz_s64(a);
641612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling}
642612f5bfeac5c4d923bb448b2f06e3aeab318130fBill Wendling
6434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcltzq_s8(<16 x i8> %a) #0 {
6444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = icmp slt <16 x i8> %a, zeroinitializer
6454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <16 x i1> [[TMP0]] to <16 x i8>
6464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCLTZ_I]]
6472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vcltzq_s8(int8x16_t a) {
6482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltzq_s8(a);
6492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vcltzq_s16(<8 x i16> %a) #0 {
6524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
6534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
6544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp slt <8 x i16> [[TMP1]], zeroinitializer
6554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <8 x i1> [[TMP2]] to <8 x i16>
6564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VCLTZ_I]]
6572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vcltzq_s16(int16x8_t a) {
6582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltzq_s16(a);
6592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcltzq_s32(<4 x i32> %a) #0 {
6624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
6634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
6644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp slt <4 x i32> [[TMP1]], zeroinitializer
6654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
6664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCLTZ_I]]
6672a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcltzq_s32(int32x4_t a) {
6682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltzq_s32(a);
6692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcltzq_s64(<2 x i64> %a) #0 {
6724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
6734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
6744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = icmp slt <2 x i64> [[TMP1]], zeroinitializer
6754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
6764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCLTZ_I]]
6772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcltzq_s64(int64x2_t a) {
6782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltzq_s64(a);
6792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
6802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
6814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcltz_f32(<2 x float> %a) #0 {
6824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
6834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
6844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp olt <2 x float> [[TMP1]], zeroinitializer
6854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i32>
6864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCLTZ_I]]
6872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcltz_f32(float32x2_t a) {
6882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltz_f32(a);
6892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
690651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
6914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vcltz_f64(<1 x double> %a) #0 {
6924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
6934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
6944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp olt <1 x double> [[TMP1]], zeroinitializer
6954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <1 x i1> [[TMP2]] to <1 x i64>
6964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VCLTZ_I]]
697651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vcltz_f64(float64x1_t a) {
698651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return vcltz_f64(a);
699651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
7002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcltzq_f32(<4 x float> %a) #0 {
7024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
7034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
7044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp olt <4 x float> [[TMP1]], zeroinitializer
7054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <4 x i1> [[TMP2]] to <4 x i32>
7064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCLTZ_I]]
7072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcltzq_f32(float32x4_t a) {
7082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltzq_f32(a);
7092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcltzq_f64(<2 x double> %a) #0 {
7124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
7134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
7144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fcmp olt <2 x double> [[TMP1]], zeroinitializer
7154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLTZ_I:%.*]] = sext <2 x i1> [[TMP2]] to <2 x i64>
7164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCLTZ_I]]
7172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcltzq_f64(float64x2_t a) {
7182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcltzq_f64(a);
7192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev16_s8(<8 x i8> %a) #0 {
7224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
7234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
7242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vrev16_s8(int8x8_t a) {
7252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev16_s8(a);
7262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev16_u8(<8 x i8> %a) #0 {
7294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
7304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
7312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vrev16_u8(uint8x8_t a) {
7322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev16_u8(a);
7332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev16_p8(<8 x i8> %a) #0 {
7364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
7374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
7382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x8_t test_vrev16_p8(poly8x8_t a) {
7392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev16_p8(a);
7402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev16q_s8(<16 x i8> %a) #0 {
7434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6, i32 9, i32 8, i32 11, i32 10, i32 13, i32 12, i32 15, i32 14>
7444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
7452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vrev16q_s8(int8x16_t a) {
7462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev16q_s8(a);
7472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev16q_u8(<16 x i8> %a) #0 {
7504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6, i32 9, i32 8, i32 11, i32 10, i32 13, i32 12, i32 15, i32 14>
7514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
7522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vrev16q_u8(uint8x16_t a) {
7532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev16q_u8(a);
7542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev16q_p8(<16 x i8> %a) #0 {
7574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6, i32 9, i32 8, i32 11, i32 10, i32 13, i32 12, i32 15, i32 14>
7584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
7592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x16_t test_vrev16q_p8(poly8x16_t a) {
7602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev16q_p8(a);
7612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev32_s8(<8 x i8> %a) #0 {
7644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
7654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
7662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vrev32_s8(int8x8_t a) {
7672a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32_s8(a);
7682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrev32_s16(<4 x i16> %a) #0 {
7714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
7732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vrev32_s16(int16x4_t a) {
7742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32_s16(a);
7752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev32_u8(<8 x i8> %a) #0 {
7784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
7794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
7802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vrev32_u8(uint8x8_t a) {
7812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32_u8(a);
7822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrev32_u16(<4 x i16> %a) #0 {
7854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
7872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vrev32_u16(uint16x4_t a) {
7882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32_u16(a);
7892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev32_p8(<8 x i8> %a) #0 {
7924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
7934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
7942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x8_t test_vrev32_p8(poly8x8_t a) {
7952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32_p8(a);
7962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
7972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
7984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrev32_p16(<4 x i16> %a) #0 {
7994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
8004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
8012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly16x4_t test_vrev32_p16(poly16x4_t a) {
8022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32_p16(a);
8032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev32q_s8(<16 x i8> %a) #0 {
8064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4, i32 11, i32 10, i32 9, i32 8, i32 15, i32 14, i32 13, i32 12>
8074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
8082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vrev32q_s8(int8x16_t a) {
8092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32q_s8(a);
8102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrev32q_s16(<8 x i16> %a) #0 {
8134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
8144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
8152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vrev32q_s16(int16x8_t a) {
8162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32q_s16(a);
8172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev32q_u8(<16 x i8> %a) #0 {
8204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4, i32 11, i32 10, i32 9, i32 8, i32 15, i32 14, i32 13, i32 12>
8214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
8222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vrev32q_u8(uint8x16_t a) {
8232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32q_u8(a);
8242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrev32q_u16(<8 x i16> %a) #0 {
8274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
8284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
8292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vrev32q_u16(uint16x8_t a) {
8302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32q_u16(a);
8312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev32q_p8(<16 x i8> %a) #0 {
8344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4, i32 11, i32 10, i32 9, i32 8, i32 15, i32 14, i32 13, i32 12>
8354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
8362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x16_t test_vrev32q_p8(poly8x16_t a) {
8372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32q_p8(a);
8382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrev32q_p16(<8 x i16> %a) #0 {
8414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
8424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
8432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly16x8_t test_vrev32q_p16(poly16x8_t a) {
8442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev32q_p16(a);
8452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev64_s8(<8 x i8> %a) #0 {
8484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
8494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
8502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vrev64_s8(int8x8_t a) {
8512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_s8(a);
8522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrev64_s16(<4 x i16> %a) #0 {
8554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
8564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
8572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vrev64_s16(int16x4_t a) {
8582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_s16(a);
8592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrev64_s32(<2 x i32> %a) #0 {
8624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %a, <2 x i32> <i32 1, i32 0>
8634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
8642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vrev64_s32(int32x2_t a) {
8652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_s32(a);
8662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8672a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev64_u8(<8 x i8> %a) #0 {
8694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
8704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
8712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vrev64_u8(uint8x8_t a) {
8722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_u8(a);
8732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrev64_u16(<4 x i16> %a) #0 {
8764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
8774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
8782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vrev64_u16(uint16x4_t a) {
8792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_u16(a);
8802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrev64_u32(<2 x i32> %a) #0 {
8834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> %a, <2 x i32> <i32 1, i32 0>
8844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SHUFFLE_I]]
8852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vrev64_u32(uint32x2_t a) {
8862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_u32(a);
8872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrev64_p8(<8 x i8> %a) #0 {
8904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> %a, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
8914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SHUFFLE_I]]
8922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x8_t test_vrev64_p8(poly8x8_t a) {
8932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_p8(a);
8942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
8952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
8964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vrev64_p16(<4 x i16> %a) #0 {
8974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> %a, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
8984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SHUFFLE_I]]
8992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly16x4_t test_vrev64_p16(poly16x4_t a) {
9002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_p16(a);
9012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrev64_f32(<2 x float> %a) #0 {
9044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <2 x float> %a, <2 x float> %a, <2 x i32> <i32 1, i32 0>
9054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SHUFFLE_I]]
9062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrev64_f32(float32x2_t a) {
9072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64_f32(a);
9082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev64q_s8(<16 x i8> %a) #0 {
9114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
9132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vrev64q_s8(int8x16_t a) {
9142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_s8(a);
9152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrev64q_s16(<8 x i16> %a) #0 {
9184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
9202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vrev64q_s16(int16x8_t a) {
9212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_s16(a);
9222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrev64q_s32(<4 x i32> %a) #0 {
9254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
9264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
9272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vrev64q_s32(int32x4_t a) {
9282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_s32(a);
9292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev64q_u8(<16 x i8> %a) #0 {
9324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
9342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vrev64q_u8(uint8x16_t a) {
9352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_u8(a);
9362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrev64q_u16(<8 x i16> %a) #0 {
9394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
9412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vrev64q_u16(uint16x8_t a) {
9422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_u16(a);
9432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrev64q_u32(<4 x i32> %a) #0 {
9464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
9474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I]]
9482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vrev64q_u32(uint32x4_t a) {
9492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_u32(a);
9502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrev64q_p8(<16 x i8> %a) #0 {
9534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <16 x i8> %a, <16 x i8> %a, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I]]
9552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x16_t test_vrev64q_p8(poly8x16_t a) {
9562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_p8(a);
9572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vrev64q_p16(<8 x i16> %a) #0 {
9604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <8 x i16> %a, <8 x i16> %a, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I]]
9622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly16x8_t test_vrev64q_p16(poly16x8_t a) {
9632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_p16(a);
9642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrev64q_f32(<4 x float> %a) #0 {
9674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
9684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I]]
9692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrev64q_f32(float32x4_t a) {
9702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrev64q_f32(a);
9712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpaddl_s8(<8 x i8> %a) #0 {
9744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.saddlp.v4i16.v8i8(<8 x i8> %a) #2
9754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VPADDL_I]]
9762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vpaddl_s8(int8x8_t a) {
9772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddl_s8(a);
9782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpaddl_s16(<4 x i16> %a) #0 {
9814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
9824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
9834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.saddlp.v2i32.v4i16(<4 x i16> [[VPADDL_I]]) #2
9844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VPADDL1_I]]
9852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vpaddl_s16(int16x4_t a) {
9862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddl_s16(a);
9872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vpaddl_s32(<2 x i32> %a) #0 {
9904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
9914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
9924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.saddlp.v1i64.v2i32(<2 x i32> [[VPADDL_I]]) #2
9934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VPADDL1_I]]
9942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x1_t test_vpaddl_s32(int32x2_t a) {
9952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddl_s32(a);
9962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
9972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
9984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpaddl_u8(<8 x i8> %a) #0 {
9994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uaddlp.v4i16.v8i8(<8 x i8> %a) #2
10004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VPADDL_I]]
10012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vpaddl_u8(uint8x8_t a) {
10022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddl_u8(a);
10032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpaddl_u16(<4 x i16> %a) #0 {
10064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
10074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
10084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uaddlp.v2i32.v4i16(<4 x i16> [[VPADDL_I]]) #2
10094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VPADDL1_I]]
10102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vpaddl_u16(uint16x4_t a) {
10112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddl_u16(a);
10122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vpaddl_u32(<2 x i32> %a) #0 {
10154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
10164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
10174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.uaddlp.v1i64.v2i32(<2 x i32> [[VPADDL_I]]) #2
10184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[VPADDL1_I]]
10192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x1_t test_vpaddl_u32(uint32x2_t a) {
10202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddl_u32(a);
10212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpaddlq_s8(<16 x i8> %a) #0 {
10244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.saddlp.v8i16.v16i8(<16 x i8> %a) #2
10254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VPADDL_I]]
10262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vpaddlq_s8(int8x16_t a) {
10272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddlq_s8(a);
10282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpaddlq_s16(<8 x i16> %a) #0 {
10314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
10324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
10334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.saddlp.v4i32.v8i16(<8 x i16> [[VPADDL_I]]) #2
10344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VPADDL1_I]]
10352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vpaddlq_s16(int16x8_t a) {
10362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddlq_s16(a);
10372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpaddlq_s32(<4 x i32> %a) #0 {
10404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
10414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
10424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.saddlp.v2i64.v4i32(<4 x i32> [[VPADDL_I]]) #2
10434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VPADDL1_I]]
10442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vpaddlq_s32(int32x4_t a) {
10452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddlq_s32(a);
10462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpaddlq_u8(<16 x i8> %a) #0 {
10494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uaddlp.v8i16.v16i8(<16 x i8> %a) #2
10504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VPADDL_I]]
10512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vpaddlq_u8(uint8x16_t a) {
10522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddlq_u8(a);
10532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpaddlq_u16(<8 x i16> %a) #0 {
10564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
10574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
10584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uaddlp.v4i32.v8i16(<8 x i16> [[VPADDL_I]]) #2
10594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VPADDL1_I]]
10602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vpaddlq_u16(uint16x8_t a) {
10612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddlq_u16(a);
10622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpaddlq_u32(<4 x i32> %a) #0 {
10654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
10664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
10674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADDL1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.uaddlp.v2i64.v4i32(<4 x i32> [[VPADDL_I]]) #2
10684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VPADDL1_I]]
10692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vpaddlq_u32(uint32x4_t a) {
10702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpaddlq_u32(a);
10712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpadal_s8(<4 x i16> %a, <8 x i8> %b) #0 {
10744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
10754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.saddlp.v4i16.v8i8(<8 x i8> %b) #2
10764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
10774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = add <4 x i16> [[VPADAL_I]], [[TMP1]]
10784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
10792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vpadal_s8(int16x4_t a, int8x8_t b) {
10802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadal_s8(a, b);
10812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpadal_s16(<2 x i32> %a, <4 x i16> %b) #0 {
10844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
10854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
10864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
10874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.saddlp.v2i32.v4i16(<4 x i16> [[VPADAL_I]]) #2
10884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
10894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i32> [[VPADAL1_I]], [[TMP2]]
10904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP3]]
10912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vpadal_s16(int32x2_t a, int16x4_t b) {
10922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadal_s16(a, b);
10932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
10942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
10954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vpadal_s32(<1 x i64> %a, <2 x i32> %b) #0 {
10964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
10974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
10984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
10994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.saddlp.v1i64.v2i32(<2 x i32> [[VPADAL_I]]) #2
11004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
11014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <1 x i64> [[VPADAL1_I]], [[TMP2]]
11024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP3]]
11032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x1_t test_vpadal_s32(int64x1_t a, int32x2_t b) {
11042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadal_s32(a, b);
11052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vpadal_u8(<4 x i16> %a, <8 x i8> %b) #0 {
11084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
11094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uaddlp.v4i16.v8i8(<8 x i8> %b) #2
11104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
11114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = add <4 x i16> [[VPADAL_I]], [[TMP1]]
11124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP2]]
11132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vpadal_u8(uint16x4_t a, uint8x8_t b) {
11142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadal_u8(a, b);
11152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vpadal_u16(<2 x i32> %a, <4 x i16> %b) #0 {
11184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
11194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
11204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
11214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uaddlp.v2i32.v4i16(<4 x i16> [[VPADAL_I]]) #2
11224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
11234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i32> [[VPADAL1_I]], [[TMP2]]
11244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP3]]
11252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vpadal_u16(uint32x2_t a, uint16x4_t b) {
11262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadal_u16(a, b);
11272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <1 x i64> @test_vpadal_u32(<1 x i64> %a, <2 x i32> %b) #0 {
11304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> %a to <8 x i8>
11314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
11324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
11334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <1 x i64> @llvm.aarch64.neon.uaddlp.v1i64.v2i32(<2 x i32> [[VPADAL_I]]) #2
11344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x i64>
11354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <1 x i64> [[VPADAL1_I]], [[TMP2]]
11364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <1 x i64> [[TMP3]]
11372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x1_t test_vpadal_u32(uint64x1_t a, uint32x2_t b) {
11382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadal_u32(a, b);
11392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpadalq_s8(<8 x i16> %a, <16 x i8> %b) #0 {
11424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
11434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.saddlp.v8i16.v16i8(<16 x i8> %b) #2
11444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
11454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = add <8 x i16> [[VPADAL_I]], [[TMP1]]
11464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
11472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vpadalq_s8(int16x8_t a, int8x16_t b) {
11482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadalq_s8(a, b);
11492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpadalq_s16(<4 x i32> %a, <8 x i16> %b) #0 {
11524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
11534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
11544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
11554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.saddlp.v4i32.v8i16(<8 x i16> [[VPADAL_I]]) #2
11564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
11574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <4 x i32> [[VPADAL1_I]], [[TMP2]]
11584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP3]]
11592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vpadalq_s16(int32x4_t a, int16x8_t b) {
11602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadalq_s16(a, b);
11612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpadalq_s32(<2 x i64> %a, <4 x i32> %b) #0 {
11644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
11654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
11664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
11674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.saddlp.v2i64.v4i32(<4 x i32> [[VPADAL_I]]) #2
11684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
11694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i64> [[VPADAL1_I]], [[TMP2]]
11704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP3]]
11712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vpadalq_s32(int64x2_t a, int32x4_t b) {
11722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadalq_s32(a, b);
11732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vpadalq_u8(<8 x i16> %a, <16 x i8> %b) #0 {
11764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
11774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.uaddlp.v8i16.v16i8(<16 x i8> %b) #2
11784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
11794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = add <8 x i16> [[VPADAL_I]], [[TMP1]]
11804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP2]]
11812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vpadalq_u8(uint16x8_t a, uint8x16_t b) {
11822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadalq_u8(a, b);
11832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vpadalq_u16(<4 x i32> %a, <8 x i16> %b) #0 {
11864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
11874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
11884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
11894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.uaddlp.v4i32.v8i16(<8 x i16> [[VPADAL_I]]) #2
11904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
11914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <4 x i32> [[VPADAL1_I]], [[TMP2]]
11924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP3]]
11932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vpadalq_u16(uint32x4_t a, uint16x8_t b) {
11942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadalq_u16(a, b);
11952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
11962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
11974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vpadalq_u32(<2 x i64> %a, <4 x i32> %b) #0 {
11984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
11994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
12004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
12014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VPADAL1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.uaddlp.v2i64.v4i32(<4 x i32> [[VPADAL_I]]) #2
12024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
12034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP3:%.*]] = add <2 x i64> [[VPADAL1_I]], [[TMP2]]
12044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP3]]
12052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vpadalq_u32(uint64x2_t a, uint32x4_t b) {
12062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vpadalq_u32(a, b);
12072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqabs_s8(<8 x i8> %a) #0 {
12104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqabs.v8i8(<8 x i8> %a) #2
12114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQABS_V_I]]
12122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vqabs_s8(int8x8_t a) {
12132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqabs_s8(a);
12142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqabsq_s8(<16 x i8> %a) #0 {
12174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqabs.v16i8(<16 x i8> %a) #2
12184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQABSQ_V_I]]
12192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vqabsq_s8(int8x16_t a) {
12202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqabsq_s8(a);
12212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqabs_s16(<4 x i16> %a) #0 {
12244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
12254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
12264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V1_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqabs.v4i16(<4 x i16> [[VQABS_V_I]]) #2
12274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V2_I:%.*]] = bitcast <4 x i16> [[VQABS_V1_I]] to <8 x i8>
12284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQABS_V2_I]] to <4 x i16>
12294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
12302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vqabs_s16(int16x4_t a) {
12312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqabs_s16(a);
12322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqabsq_s16(<8 x i16> %a) #0 {
12354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
12364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
12374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V1_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqabs.v8i16(<8 x i16> [[VQABSQ_V_I]]) #2
12384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V2_I:%.*]] = bitcast <8 x i16> [[VQABSQ_V1_I]] to <16 x i8>
12394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VQABSQ_V2_I]] to <8 x i16>
12404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP1]]
12412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vqabsq_s16(int16x8_t a) {
12422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqabsq_s16(a);
12432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqabs_s32(<2 x i32> %a) #0 {
12464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
12474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
12484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqabs.v2i32(<2 x i32> [[VQABS_V_I]]) #2
12494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABS_V2_I:%.*]] = bitcast <2 x i32> [[VQABS_V1_I]] to <8 x i8>
12504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQABS_V2_I]] to <2 x i32>
12514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
12522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vqabs_s32(int32x2_t a) {
12532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqabs_s32(a);
12542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqabsq_s32(<4 x i32> %a) #0 {
12574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
12584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
12594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqabs.v4i32(<4 x i32> [[VQABSQ_V_I]]) #2
12604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V2_I:%.*]] = bitcast <4 x i32> [[VQABSQ_V1_I]] to <16 x i8>
12614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VQABSQ_V2_I]] to <4 x i32>
12624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP1]]
12632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vqabsq_s32(int32x4_t a) {
12642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqabsq_s32(a);
12652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqabsq_s64(<2 x i64> %a) #0 {
12684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
12694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
12704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqabs.v2i64(<2 x i64> [[VQABSQ_V_I]]) #2
12714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQABSQ_V2_I:%.*]] = bitcast <2 x i64> [[VQABSQ_V1_I]] to <16 x i8>
12724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VQABSQ_V2_I]] to <2 x i64>
12734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP1]]
12742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vqabsq_s64(int64x2_t a) {
12752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqabsq_s64(a);
12762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqneg_s8(<8 x i8> %a) #0 {
12794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqneg.v8i8(<8 x i8> %a) #2
12804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQNEG_V_I]]
12812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vqneg_s8(int8x8_t a) {
12822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqneg_s8(a);
12832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqnegq_s8(<16 x i8> %a) #0 {
12864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.sqneg.v16i8(<16 x i8> %a) #2
12874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VQNEGQ_V_I]]
12882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vqnegq_s8(int8x16_t a) {
12892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqnegq_s8(a);
12902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
12912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
12924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqneg_s16(<4 x i16> %a) #0 {
12934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
12944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
12954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V1_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqneg.v4i16(<4 x i16> [[VQNEG_V_I]]) #2
12964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V2_I:%.*]] = bitcast <4 x i16> [[VQNEG_V1_I]] to <8 x i8>
12974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQNEG_V2_I]] to <4 x i16>
12984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
12992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vqneg_s16(int16x4_t a) {
13002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqneg_s16(a);
13012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqnegq_s16(<8 x i16> %a) #0 {
13044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
13054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
13064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V1_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.sqneg.v8i16(<8 x i16> [[VQNEGQ_V_I]]) #2
13074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V2_I:%.*]] = bitcast <8 x i16> [[VQNEGQ_V1_I]] to <16 x i8>
13084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VQNEGQ_V2_I]] to <8 x i16>
13094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP1]]
13102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vqnegq_s16(int16x8_t a) {
13112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqnegq_s16(a);
13122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqneg_s32(<2 x i32> %a) #0 {
13154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
13164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
13174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqneg.v2i32(<2 x i32> [[VQNEG_V_I]]) #2
13184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEG_V2_I:%.*]] = bitcast <2 x i32> [[VQNEG_V1_I]] to <8 x i8>
13194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQNEG_V2_I]] to <2 x i32>
13204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
13212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vqneg_s32(int32x2_t a) {
13222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqneg_s32(a);
13232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqnegq_s32(<4 x i32> %a) #0 {
13264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
13274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
13284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqneg.v4i32(<4 x i32> [[VQNEGQ_V_I]]) #2
13294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V2_I:%.*]] = bitcast <4 x i32> [[VQNEGQ_V1_I]] to <16 x i8>
13304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VQNEGQ_V2_I]] to <4 x i32>
13314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP1]]
13322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vqnegq_s32(int32x4_t a) {
13332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqnegq_s32(a);
13342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vqnegq_s64(<2 x i64> %a) #0 {
13374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
13384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
13394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.sqneg.v2i64(<2 x i64> [[VQNEGQ_V_I]]) #2
13404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQNEGQ_V2_I:%.*]] = bitcast <2 x i64> [[VQNEGQ_V1_I]] to <16 x i8>
13414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VQNEGQ_V2_I]] to <2 x i64>
13424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP1]]
13432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vqnegq_s64(int64x2_t a) {
13442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqnegq_s64(a);
13452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vneg_s8(<8 x i8> %a) #0 {
13484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i8> zeroinitializer, %a
13494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[SUB_I]]
13502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vneg_s8(int8x8_t a) {
13512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vneg_s8(a);
13522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vnegq_s8(<16 x i8> %a) #0 {
13554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <16 x i8> zeroinitializer, %a
13564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SUB_I]]
13572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vnegq_s8(int8x16_t a) {
13582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vnegq_s8(a);
13592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vneg_s16(<4 x i16> %a) #0 {
13624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i16> zeroinitializer, %a
13634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[SUB_I]]
13642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vneg_s16(int16x4_t a) {
13652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vneg_s16(a);
13662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13672a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vnegq_s16(<8 x i16> %a) #0 {
13694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <8 x i16> zeroinitializer, %a
13704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SUB_I]]
13712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vnegq_s16(int16x8_t a) {
13722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vnegq_s16(a);
13732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vneg_s32(<2 x i32> %a) #0 {
13764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i32> zeroinitializer, %a
13774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[SUB_I]]
13782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vneg_s32(int32x2_t a) {
13792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vneg_s32(a);
13802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vnegq_s32(<4 x i32> %a) #0 {
13834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <4 x i32> zeroinitializer, %a
13844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SUB_I]]
13852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vnegq_s32(int32x4_t a) {
13862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vnegq_s32(a);
13872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vnegq_s64(<2 x i64> %a) #0 {
13904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = sub <2 x i64> zeroinitializer, %a
13914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[SUB_I]]
13922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vnegq_s64(int64x2_t a) {
13932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vnegq_s64(a);
13942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
13952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
13964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vneg_f32(<2 x float> %a) #0 {
13974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x float> <float -0.000000e+00, float -0.000000e+00>, %a
13984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[SUB_I]]
13992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vneg_f32(float32x2_t a) {
14002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vneg_f32(a);
14012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vnegq_f32(<4 x float> %a) #0 {
14044967a710c84587c654b56c828382219c3937dacbPirama 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>, %a
14054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SUB_I]]
14062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vnegq_f32(float32x4_t a) {
14072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vnegq_f32(a);
14082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vnegq_f64(<2 x double> %a) #0 {
14114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SUB_I:%.*]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %a
14124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[SUB_I]]
14132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vnegq_f64(float64x2_t a) {
14142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vnegq_f64(a);
14152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vabs_s8(<8 x i8> %a) #0 {
14184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.abs.v8i8(<8 x i8> %a) #2
14194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VABS_I]]
14202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vabs_s8(int8x8_t a) {
14212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabs_s8(a);
14222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vabsq_s8(<16 x i8> %a) #0 {
14254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.abs.v16i8(<16 x i8> %a) #2
14264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VABS_I]]
14272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vabsq_s8(int8x16_t a) {
14282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabsq_s8(a);
14292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vabs_s16(<4 x i16> %a) #0 {
14324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
14334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
14344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.abs.v4i16(<4 x i16> [[VABS_I]]) #2
14354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VABS1_I]]
14362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vabs_s16(int16x4_t a) {
14372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabs_s16(a);
14382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vabsq_s16(<8 x i16> %a) #0 {
14414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
14424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
14434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.abs.v8i16(<8 x i16> [[VABS_I]]) #2
14444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VABS1_I]]
14452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vabsq_s16(int16x8_t a) {
14462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabsq_s16(a);
14472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vabs_s32(<2 x i32> %a) #0 {
14504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
14514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
14524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.abs.v2i32(<2 x i32> [[VABS_I]]) #2
14534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VABS1_I]]
14542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vabs_s32(int32x2_t a) {
14552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabs_s32(a);
14562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vabsq_s32(<4 x i32> %a) #0 {
14594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
14604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
14614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.abs.v4i32(<4 x i32> [[VABS_I]]) #2
14624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VABS1_I]]
14632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vabsq_s32(int32x4_t a) {
14642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabsq_s32(a);
14652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vabsq_s64(<2 x i64> %a) #0 {
14684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
14694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
14704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.abs.v2i64(<2 x i64> [[VABS_I]]) #2
14714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VABS1_I]]
14722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vabsq_s64(int64x2_t a) {
14732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabsq_s64(a);
14742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vabs_f32(<2 x float> %a) #0 {
14774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
14784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
14794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <2 x float> @llvm.fabs.v2f32(<2 x float> [[VABS_I]]) #2
14804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VABS1_I]]
14812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vabs_f32(float32x2_t a) {
14822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabs_f32(a);
14832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vabsq_f32(<4 x float> %a) #0 {
14864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
14874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
14884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <4 x float> @llvm.fabs.v4f32(<4 x float> [[VABS_I]]) #2
14894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VABS1_I]]
14902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vabsq_f32(float32x4_t a) {
14912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabsq_f32(a);
14922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
14932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
14944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vabsq_f64(<2 x double> %a) #0 {
14954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
14964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
14974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VABS1_I:%.*]] = call <2 x double> @llvm.fabs.v2f64(<2 x double> [[VABS_I]]) #2
14984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VABS1_I]]
14992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vabsq_f64(float64x2_t a) {
15002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vabsq_f64(a);
15012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vuqadd_s8(<8 x i8> %a, <8 x i8> %b) #0 {
15044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.suqadd.v8i8(<8 x i8> %a, <8 x i8> %b) #2
15054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VUQADD_I]]
15062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vuqadd_s8(int8x8_t a, int8x8_t b) {
15072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vuqadd_s8(a, b);
15082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vuqaddq_s8(<16 x i8> %a, <16 x i8> %b) #0 {
15114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.suqadd.v16i8(<16 x i8> %a, <16 x i8> %b) #2
15124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VUQADD_I]]
15132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vuqaddq_s8(int8x16_t a, int8x16_t b) {
15142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vuqaddq_s8(a, b);
15152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vuqadd_s16(<4 x i16> %a, <4 x i16> %b) #0 {
15184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
15194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
15204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
15214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
15224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.suqadd.v4i16(<4 x i16> [[VUQADD_I]], <4 x i16> [[VUQADD1_I]]) #2
15234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VUQADD2_I]]
15242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vuqadd_s16(int16x4_t a, int16x4_t b) {
15252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vuqadd_s16(a, b);
15262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vuqaddq_s16(<8 x i16> %a, <8 x i16> %b) #0 {
15294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
15304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
15314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
15324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
15334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.suqadd.v8i16(<8 x i16> [[VUQADD_I]], <8 x i16> [[VUQADD1_I]]) #2
15344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VUQADD2_I]]
15352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vuqaddq_s16(int16x8_t a, int16x8_t b) {
15362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vuqaddq_s16(a, b);
15372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vuqadd_s32(<2 x i32> %a, <2 x i32> %b) #0 {
15404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
15414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
15424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
15434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD1_I:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
15444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.suqadd.v2i32(<2 x i32> [[VUQADD_I]], <2 x i32> [[VUQADD1_I]]) #2
15454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VUQADD2_I]]
15462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vuqadd_s32(int32x2_t a, int32x2_t b) {
15472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vuqadd_s32(a, b);
15482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vuqaddq_s32(<4 x i32> %a, <4 x i32> %b) #0 {
15514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
15524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
15534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
15544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
15554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.suqadd.v4i32(<4 x i32> [[VUQADD_I]], <4 x i32> [[VUQADD1_I]]) #2
15564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VUQADD2_I]]
15572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vuqaddq_s32(int32x4_t a, int32x4_t b) {
15582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vuqaddq_s32(a, b);
15592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vuqaddq_s64(<2 x i64> %a, <2 x i64> %b) #0 {
15624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
15634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
15644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
15654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
15664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VUQADD2_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.suqadd.v2i64(<2 x i64> [[VUQADD_I]], <2 x i64> [[VUQADD1_I]]) #2
15674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VUQADD2_I]]
15682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vuqaddq_s64(int64x2_t a, int64x2_t b) {
15692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vuqaddq_s64(a, b);
15702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcls_s8(<8 x i8> %a) #0 {
15734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLS_V_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.cls.v8i8(<8 x i8> %a) #2
15744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCLS_V_I]]
15752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vcls_s8(int8x8_t a) {
15762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcls_s8(a);
15772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vclsq_s8(<16 x i8> %a) #0 {
15804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLSQ_V_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.cls.v16i8(<16 x i8> %a) #2
15814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCLSQ_V_I]]
15822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vclsq_s8(int8x16_t a) {
15832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclsq_s8(a);
15842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vcls_s16(<4 x i16> %a) #0 {
15874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
15884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
15894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLS_V1_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.cls.v4i16(<4 x i16> [[VCLS_V_I]]) #2
15904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLS_V2_I:%.*]] = bitcast <4 x i16> [[VCLS_V1_I]] to <8 x i8>
15914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCLS_V2_I]] to <4 x i16>
15924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
15932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vcls_s16(int16x4_t a) {
15942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcls_s16(a);
15952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
15962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
15974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vclsq_s16(<8 x i16> %a) #0 {
15984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
15994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
16004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLSQ_V1_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.cls.v8i16(<8 x i16> [[VCLSQ_V_I]]) #2
16014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLSQ_V2_I:%.*]] = bitcast <8 x i16> [[VCLSQ_V1_I]] to <16 x i8>
16024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCLSQ_V2_I]] to <8 x i16>
16034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP1]]
16042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vclsq_s16(int16x8_t a) {
16052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclsq_s16(a);
16062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcls_s32(<2 x i32> %a) #0 {
16094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
16104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLS_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
16114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLS_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.cls.v2i32(<2 x i32> [[VCLS_V_I]]) #2
16124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLS_V2_I:%.*]] = bitcast <2 x i32> [[VCLS_V1_I]] to <8 x i8>
16134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCLS_V2_I]] to <2 x i32>
16144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
16152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vcls_s32(int32x2_t a) {
16162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcls_s32(a);
16172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vclsq_s32(<4 x i32> %a) #0 {
16204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
16214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLSQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
16224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLSQ_V1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.cls.v4i32(<4 x i32> [[VCLSQ_V_I]]) #2
16234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLSQ_V2_I:%.*]] = bitcast <4 x i32> [[VCLSQ_V1_I]] to <16 x i8>
16244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCLSQ_V2_I]] to <4 x i32>
16254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP1]]
16262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vclsq_s32(int32x4_t a) {
16272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclsq_s32(a);
16282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vclz_s8(<8 x i8> %a) #0 {
16314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V_I:%.*]] = call <8 x i8> @llvm.ctlz.v8i8(<8 x i8> %a, i1 false) #2
16324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCLZ_V_I]]
16332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vclz_s8(int8x8_t a) {
16342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclz_s8(a);
16352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vclzq_s8(<16 x i8> %a) #0 {
16384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V_I:%.*]] = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false) #2
16394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCLZQ_V_I]]
16402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vclzq_s8(int8x16_t a) {
16412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclzq_s8(a);
16422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vclz_s16(<4 x i16> %a) #0 {
16454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
16464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
16474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V1_I:%.*]] = call <4 x i16> @llvm.ctlz.v4i16(<4 x i16> [[VCLZ_V_I]], i1 false) #2
16484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V2_I:%.*]] = bitcast <4 x i16> [[VCLZ_V1_I]] to <8 x i8>
16494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCLZ_V2_I]] to <4 x i16>
16504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
16512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vclz_s16(int16x4_t a) {
16522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclz_s16(a);
16532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vclzq_s16(<8 x i16> %a) #0 {
16564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
16574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
16584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V1_I:%.*]] = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> [[VCLZQ_V_I]], i1 false) #2
16594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V2_I:%.*]] = bitcast <8 x i16> [[VCLZQ_V1_I]] to <16 x i8>
16604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCLZQ_V2_I]] to <8 x i16>
16614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP1]]
16622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vclzq_s16(int16x8_t a) {
16632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclzq_s16(a);
16642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vclz_s32(<2 x i32> %a) #0 {
16674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
16684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
16694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V1_I:%.*]] = call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[VCLZ_V_I]], i1 false) #2
16704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V2_I:%.*]] = bitcast <2 x i32> [[VCLZ_V1_I]] to <8 x i8>
16714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCLZ_V2_I]] to <2 x i32>
16724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
16732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vclz_s32(int32x2_t a) {
16742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclz_s32(a);
16752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vclzq_s32(<4 x i32> %a) #0 {
16784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
16794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
16804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V1_I:%.*]] = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> [[VCLZQ_V_I]], i1 false) #2
16814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V2_I:%.*]] = bitcast <4 x i32> [[VCLZQ_V1_I]] to <16 x i8>
16824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCLZQ_V2_I]] to <4 x i32>
16834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP1]]
16842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vclzq_s32(int32x4_t a) {
16852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclzq_s32(a);
16862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vclz_u8(<8 x i8> %a) #0 {
16894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V_I:%.*]] = call <8 x i8> @llvm.ctlz.v8i8(<8 x i8> %a, i1 false) #2
16904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCLZ_V_I]]
16912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vclz_u8(uint8x8_t a) {
16922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclz_u8(a);
16932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
16942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
16954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vclzq_u8(<16 x i8> %a) #0 {
16964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V_I:%.*]] = call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false) #2
16974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCLZQ_V_I]]
16982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vclzq_u8(uint8x16_t a) {
16992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclzq_u8(a);
17002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vclz_u16(<4 x i16> %a) #0 {
17034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
17044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
17054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V1_I:%.*]] = call <4 x i16> @llvm.ctlz.v4i16(<4 x i16> [[VCLZ_V_I]], i1 false) #2
17064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V2_I:%.*]] = bitcast <4 x i16> [[VCLZ_V1_I]] to <8 x i8>
17074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCLZ_V2_I]] to <4 x i16>
17084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
17092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vclz_u16(uint16x4_t a) {
17102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclz_u16(a);
17112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vclzq_u16(<8 x i16> %a) #0 {
17144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
17154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
17164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V1_I:%.*]] = call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> [[VCLZQ_V_I]], i1 false) #2
17174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V2_I:%.*]] = bitcast <8 x i16> [[VCLZQ_V1_I]] to <16 x i8>
17184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCLZQ_V2_I]] to <8 x i16>
17194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[TMP1]]
17202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vclzq_u16(uint16x8_t a) {
17212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclzq_u16(a);
17222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vclz_u32(<2 x i32> %a) #0 {
17254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
17264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
17274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V1_I:%.*]] = call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[VCLZ_V_I]], i1 false) #2
17284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZ_V2_I:%.*]] = bitcast <2 x i32> [[VCLZ_V1_I]] to <8 x i8>
17294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCLZ_V2_I]] to <2 x i32>
17304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
17312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vclz_u32(uint32x2_t a) {
17322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclz_u32(a);
17332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vclzq_u32(<4 x i32> %a) #0 {
17364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
17374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
17384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V1_I:%.*]] = call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> [[VCLZQ_V_I]], i1 false) #2
17394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCLZQ_V2_I:%.*]] = bitcast <4 x i32> [[VCLZQ_V1_I]] to <16 x i8>
17404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCLZQ_V2_I]] to <4 x i32>
17414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP1]]
17422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vclzq_u32(uint32x4_t a) {
17432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vclzq_u32(a);
17442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcnt_s8(<8 x i8> %a) #0 {
17474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCNT_V_I:%.*]] = call <8 x i8> @llvm.ctpop.v8i8(<8 x i8> %a) #2
17484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCNT_V_I]]
17492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vcnt_s8(int8x8_t a) {
17502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcnt_s8(a);
17512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcntq_s8(<16 x i8> %a) #0 {
17544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCNTQ_V_I:%.*]] = call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %a) #2
17554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCNTQ_V_I]]
17562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vcntq_s8(int8x16_t a) {
17572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcntq_s8(a);
17582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcnt_u8(<8 x i8> %a) #0 {
17614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCNT_V_I:%.*]] = call <8 x i8> @llvm.ctpop.v8i8(<8 x i8> %a) #2
17624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCNT_V_I]]
17632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vcnt_u8(uint8x8_t a) {
17642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcnt_u8(a);
17652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcntq_u8(<16 x i8> %a) #0 {
17684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCNTQ_V_I:%.*]] = call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %a) #2
17694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCNTQ_V_I]]
17702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vcntq_u8(uint8x16_t a) {
17712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcntq_u8(a);
17722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vcnt_p8(<8 x i8> %a) #0 {
17754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCNT_V_I:%.*]] = call <8 x i8> @llvm.ctpop.v8i8(<8 x i8> %a) #2
17764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VCNT_V_I]]
17772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x8_t test_vcnt_p8(poly8x8_t a) {
17782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcnt_p8(a);
17792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vcntq_p8(<16 x i8> %a) #0 {
17824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCNTQ_V_I:%.*]] = call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %a) #2
17834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VCNTQ_V_I]]
17842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x16_t test_vcntq_p8(poly8x16_t a) {
17852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcntq_p8(a);
17862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmvn_s8(<8 x i8> %a) #0 {
17894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <8 x i8> %a, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
17904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[NEG_I]]
17912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vmvn_s8(int8x8_t a) {
17922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvn_s8(a);
17932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
17942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
17954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmvnq_s8(<16 x i8> %a) #0 {
17964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <16 x i8> %a, <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>
17974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[NEG_I]]
17982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vmvnq_s8(int8x16_t a) {
17992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvnq_s8(a);
18002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmvn_s16(<4 x i16> %a) #0 {
18034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <4 x i16> %a, <i16 -1, i16 -1, i16 -1, i16 -1>
18044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[NEG_I]]
18052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vmvn_s16(int16x4_t a) {
18062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvn_s16(a);
18072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmvnq_s16(<8 x i16> %a) #0 {
18104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <8 x i16> %a, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
18114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[NEG_I]]
18122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vmvnq_s16(int16x8_t a) {
18132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvnq_s16(a);
18142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmvn_s32(<2 x i32> %a) #0 {
18174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <2 x i32> %a, <i32 -1, i32 -1>
18184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[NEG_I]]
18192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vmvn_s32(int32x2_t a) {
18202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvn_s32(a);
18212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmvnq_s32(<4 x i32> %a) #0 {
18244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <4 x i32> %a, <i32 -1, i32 -1, i32 -1, i32 -1>
18254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[NEG_I]]
18262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vmvnq_s32(int32x4_t a) {
18272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvnq_s32(a);
18282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmvn_u8(<8 x i8> %a) #0 {
18314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <8 x i8> %a, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
18324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[NEG_I]]
18332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vmvn_u8(uint8x8_t a) {
18342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvn_u8(a);
18352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmvnq_u8(<16 x i8> %a) #0 {
18384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <16 x i8> %a, <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>
18394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[NEG_I]]
18402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vmvnq_u8(uint8x16_t a) {
18412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvnq_u8(a);
18422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmvn_u16(<4 x i16> %a) #0 {
18454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <4 x i16> %a, <i16 -1, i16 -1, i16 -1, i16 -1>
18464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[NEG_I]]
18472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vmvn_u16(uint16x4_t a) {
18482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvn_u16(a);
18492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmvnq_u16(<8 x i16> %a) #0 {
18524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <8 x i16> %a, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
18534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[NEG_I]]
18542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vmvnq_u16(uint16x8_t a) {
18552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvnq_u16(a);
18562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmvn_u32(<2 x i32> %a) #0 {
18594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <2 x i32> %a, <i32 -1, i32 -1>
18604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[NEG_I]]
18612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vmvn_u32(uint32x2_t a) {
18622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvn_u32(a);
18632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmvnq_u32(<4 x i32> %a) #0 {
18664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <4 x i32> %a, <i32 -1, i32 -1, i32 -1, i32 -1>
18674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[NEG_I]]
18682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vmvnq_u32(uint32x4_t a) {
18692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvnq_u32(a);
18702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmvn_p8(<8 x i8> %a) #0 {
18734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <8 x i8> %a, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
18744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[NEG_I]]
18752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x8_t test_vmvn_p8(poly8x8_t a) {
18762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvn_p8(a);
18772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmvnq_p8(<16 x i8> %a) #0 {
18804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[NEG_I:%.*]] = xor <16 x i8> %a, <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>
18814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[NEG_I]]
18822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x16_t test_vmvnq_p8(poly8x16_t a) {
18832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmvnq_p8(a);
18842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrbit_s8(<8 x i8> %a) #0 {
18874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRBIT_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.rbit.v8i8(<8 x i8> %a) #2
18884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRBIT_I]]
18892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vrbit_s8(int8x8_t a) {
18902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrbit_s8(a);
18912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
18934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrbitq_s8(<16 x i8> %a) #0 {
18944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRBIT_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.rbit.v16i8(<16 x i8> %a) #2
18954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRBIT_I]]
18962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vrbitq_s8(int8x16_t a) {
18972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrbitq_s8(a);
18982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
18992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrbit_u8(<8 x i8> %a) #0 {
19014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRBIT_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.rbit.v8i8(<8 x i8> %a) #2
19024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRBIT_I]]
19032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vrbit_u8(uint8x8_t a) {
19042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrbit_u8(a);
19052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrbitq_u8(<16 x i8> %a) #0 {
19084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRBIT_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.rbit.v16i8(<16 x i8> %a) #2
19094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRBIT_I]]
19102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vrbitq_u8(uint8x16_t a) {
19112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrbitq_u8(a);
19122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vrbit_p8(<8 x i8> %a) #0 {
19154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRBIT_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.rbit.v8i8(<8 x i8> %a) #2
19164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VRBIT_I]]
19172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x8_t test_vrbit_p8(poly8x8_t a) {
19182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrbit_p8(a);
19192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vrbitq_p8(<16 x i8> %a) #0 {
19224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRBIT_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.rbit.v16i8(<16 x i8> %a) #2
19234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[VRBIT_I]]
19242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinpoly8x16_t test_vrbitq_p8(poly8x16_t a) {
19252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrbitq_p8(a);
19262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmovn_s16(<8 x i16> %a) #0 {
19294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
19304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
19314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I:%.*]] = trunc <8 x i16> [[TMP1]] to <8 x i8>
19324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VMOVN_I]]
19332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vmovn_s16(int16x8_t a) {
19342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_s16(a);
19352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmovn_s32(<4 x i32> %a) #0 {
19384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
19394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
19404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I:%.*]] = trunc <4 x i32> [[TMP1]] to <4 x i16>
19414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VMOVN_I]]
19422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vmovn_s32(int32x4_t a) {
19432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_s32(a);
19442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmovn_s64(<2 x i64> %a) #0 {
19474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
19484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
19494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I:%.*]] = trunc <2 x i64> [[TMP1]] to <2 x i32>
19504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VMOVN_I]]
19512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vmovn_s64(int64x2_t a) {
19522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_s64(a);
19532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vmovn_u16(<8 x i16> %a) #0 {
19564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
19574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
19584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I:%.*]] = trunc <8 x i16> [[TMP1]] to <8 x i8>
19594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VMOVN_I]]
19602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vmovn_u16(uint16x8_t a) {
19612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_u16(a);
19622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vmovn_u32(<4 x i32> %a) #0 {
19654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
19664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
19674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I:%.*]] = trunc <4 x i32> [[TMP1]] to <4 x i16>
19684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[VMOVN_I]]
19692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vmovn_u32(uint32x4_t a) {
19702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_u32(a);
19712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vmovn_u64(<2 x i64> %a) #0 {
19744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
19754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
19764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I:%.*]] = trunc <2 x i64> [[TMP1]] to <2 x i32>
19774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VMOVN_I]]
19782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vmovn_u64(uint64x2_t a) {
19792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_u64(a);
19802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmovn_high_s16(<8 x i8> %a, <8 x i16> %b) #0 {
19834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
19844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
19854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I_I:%.*]] = trunc <8 x i16> [[TMP1]] to <8 x i8>
19864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VMOVN_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>
19874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
19882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vmovn_high_s16(int8x8_t a, int16x8_t b) {
19892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_high_s16(a, b);
19902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
19912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
19924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmovn_high_s32(<4 x i16> %a, <4 x i32> %b) #0 {
19934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
19944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
19954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I_I:%.*]] = trunc <4 x i32> [[TMP1]] to <4 x i16>
19964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VMOVN_I_I]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
19974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
19982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vmovn_high_s32(int16x4_t a, int32x4_t b) {
19992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_high_s32(a, b);
20002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmovn_high_s64(<2 x i32> %a, <2 x i64> %b) #0 {
20034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
20044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
20054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I_I:%.*]] = trunc <2 x i64> [[TMP1]] to <2 x i32>
20064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VMOVN_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
20074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
20082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vmovn_high_s64(int32x2_t a, int64x2_t b) {
20092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_high_s64(a, b);
20102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vmovn_high_u16(<8 x i8> %a, <8 x i16> %b) #0 {
20134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
20144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
20154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I_I:%.*]] = trunc <8 x i16> [[TMP1]] to <8 x i8>
20164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VMOVN_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>
20174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
20182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vmovn_high_u16(int8x8_t a, int16x8_t b) {
20192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_high_u16(a, b);
20202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vmovn_high_u32(<4 x i16> %a, <4 x i32> %b) #0 {
20234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
20244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
20254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I_I:%.*]] = trunc <4 x i32> [[TMP1]] to <4 x i16>
20264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[VMOVN_I_I]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
20274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
20282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vmovn_high_u32(int16x4_t a, int32x4_t b) {
20292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_high_u32(a, b);
20302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vmovn_high_u64(<2 x i32> %a, <2 x i64> %b) #0 {
20334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
20344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
20354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VMOVN_I_I:%.*]] = trunc <2 x i64> [[TMP1]] to <2 x i32>
20364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[VMOVN_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
20374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
20382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vmovn_high_u64(int32x2_t a, int64x2_t b) {
20392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vmovn_high_u64(a, b);
20402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqmovun_s16(<8 x i16> %a) #0 {
20434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
20444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
20454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V1_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqxtun.v8i8(<8 x i16> [[VQMOVUN_V_I]]) #2
20464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQMOVUN_V1_I]]
20472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vqmovun_s16(int16x8_t a) {
20482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovun_s16(a);
20492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqmovun_s32(<4 x i32> %a) #0 {
20524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
20534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
20544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V1_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqxtun.v4i16(<4 x i32> [[VQMOVUN_V_I]]) #2
20554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V2_I:%.*]] = bitcast <4 x i16> [[VQMOVUN_V1_I]] to <8 x i8>
20564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVUN_V2_I]] to <4 x i16>
20574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
20582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vqmovun_s32(int32x4_t a) {
20592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovun_s32(a);
20602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqmovun_s64(<2 x i64> %a) #0 {
20634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
20644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
20654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqxtun.v2i32(<2 x i64> [[VQMOVUN_V_I]]) #2
20664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V2_I:%.*]] = bitcast <2 x i32> [[VQMOVUN_V1_I]] to <8 x i8>
20674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVUN_V2_I]] to <2 x i32>
20684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
20692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vqmovun_s64(int64x2_t a) {
20702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovun_s64(a);
20712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqmovun_high_s16(<8 x i8> %a, <8 x i16> %b) #0 {
20744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
20754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
20764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V1_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqxtun.v8i8(<8 x i16> [[VQMOVUN_V_I_I]]) #2
20774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQMOVUN_V1_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>
20784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
20792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vqmovun_high_s16(int8x8_t a, int16x8_t b) {
20802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovun_high_s16(a, b);
20812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqmovun_high_s32(<4 x i16> %a, <4 x i32> %b) #0 {
20844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
20854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
20864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V1_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqxtun.v4i16(<4 x i32> [[VQMOVUN_V_I_I]]) #2
20874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V2_I_I:%.*]] = bitcast <4 x i16> [[VQMOVUN_V1_I_I]] to <8 x i8>
20884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVUN_V2_I_I]] to <4 x i16>
20894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[TMP1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
20904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
20912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vqmovun_high_s32(int16x4_t a, int32x4_t b) {
20922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovun_high_s32(a, b);
20932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
20942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
20954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqmovun_high_s64(<2 x i32> %a, <2 x i64> %b) #0 {
20964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
20974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
20984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V1_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqxtun.v2i32(<2 x i64> [[VQMOVUN_V_I_I]]) #2
20994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVUN_V2_I_I:%.*]] = bitcast <2 x i32> [[VQMOVUN_V1_I_I]] to <8 x i8>
21004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVUN_V2_I_I]] to <2 x i32>
21014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[TMP1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
21024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
21032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vqmovun_high_s64(int32x2_t a, int64x2_t b) {
21042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovun_high_s64(a, b);
21052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqmovn_s16(<8 x i16> %a) #0 {
21084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
21094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
21104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqxtn.v8i8(<8 x i16> [[VQMOVN_V_I]]) #2
21114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQMOVN_V1_I]]
21122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x8_t test_vqmovn_s16(int16x8_t a) {
21132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_s16(a);
21142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqmovn_s32(<4 x i32> %a) #0 {
21174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
21184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
21194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32> [[VQMOVN_V_I]]) #2
21204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I:%.*]] = bitcast <4 x i16> [[VQMOVN_V1_I]] to <8 x i8>
21214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I]] to <4 x i16>
21224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
21232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x4_t test_vqmovn_s32(int32x4_t a) {
21242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_s32(a);
21252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqmovn_s64(<2 x i64> %a) #0 {
21284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
21294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
21304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqxtn.v2i32(<2 x i64> [[VQMOVN_V_I]]) #2
21314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I:%.*]] = bitcast <2 x i32> [[VQMOVN_V1_I]] to <8 x i8>
21324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I]] to <2 x i32>
21334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
21342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vqmovn_s64(int64x2_t a) {
21352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_s64(a);
21362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqmovn_high_s16(<8 x i8> %a, <8 x i16> %b) #0 {
21394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
21404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
21414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.sqxtn.v8i8(<8 x i16> [[VQMOVN_V_I_I]]) #2
21424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQMOVN_V1_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>
21434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
21442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint8x16_t test_vqmovn_high_s16(int8x8_t a, int16x8_t b) {
21452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_high_s16(a, b);
21462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqmovn_high_s32(<4 x i16> %a, <4 x i32> %b) #0 {
21494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
21504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
21514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32> [[VQMOVN_V_I_I]]) #2
21524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I_I:%.*]] = bitcast <4 x i16> [[VQMOVN_V1_I_I]] to <8 x i8>
21534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I_I]] to <4 x i16>
21544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[TMP1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
21554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
21562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vqmovn_high_s32(int16x4_t a, int32x4_t b) {
21572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_high_s32(a, b);
21582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqmovn_high_s64(<2 x i32> %a, <2 x i64> %b) #0 {
21614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
21624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
21634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.sqxtn.v2i32(<2 x i64> [[VQMOVN_V_I_I]]) #2
21644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I_I:%.*]] = bitcast <2 x i32> [[VQMOVN_V1_I_I]] to <8 x i8>
21654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I_I]] to <2 x i32>
21664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[TMP1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
21674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
21682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vqmovn_high_s64(int32x2_t a, int64x2_t b) {
21692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_high_s64(a, b);
21702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i8> @test_vqmovn_u16(<8 x i16> %a) #0 {
21734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
21744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
21754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqxtn.v8i8(<8 x i16> [[VQMOVN_V_I]]) #2
21764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i8> [[VQMOVN_V1_I]]
21772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x8_t test_vqmovn_u16(uint16x8_t a) {
21782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_u16(a);
21792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i16> @test_vqmovn_u32(<4 x i32> %a) #0 {
21824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
21834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
21844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqxtn.v4i16(<4 x i32> [[VQMOVN_V_I]]) #2
21854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I:%.*]] = bitcast <4 x i16> [[VQMOVN_V1_I]] to <8 x i8>
21864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I]] to <4 x i16>
21874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i16> [[TMP1]]
21882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x4_t test_vqmovn_u32(uint32x4_t a) {
21892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_u32(a);
21902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
21912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
21924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vqmovn_u64(<2 x i64> %a) #0 {
21934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
21944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
21954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqxtn.v2i32(<2 x i64> [[VQMOVN_V_I]]) #2
21964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I:%.*]] = bitcast <2 x i32> [[VQMOVN_V1_I]] to <8 x i8>
21974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I]] to <2 x i32>
21984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP1]]
21992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vqmovn_u64(uint64x2_t a) {
22002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_u64(a);
22012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <16 x i8> @test_vqmovn_high_u16(<8 x i8> %a, <8 x i16> %b) #0 {
22044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %b to <16 x i8>
22054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <8 x i16>
22064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.uqxtn.v8i8(<8 x i16> [[VQMOVN_V_I_I]]) #2
22074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x i8> %a, <8 x i8> [[VQMOVN_V1_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>
22084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <16 x i8> [[SHUFFLE_I_I]]
22092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint8x16_t test_vqmovn_high_u16(uint8x8_t a, uint16x8_t b) {
22102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_high_u16(a, b);
22112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vqmovn_high_u32(<4 x i16> %a, <4 x i32> %b) #0 {
22144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %b to <16 x i8>
22154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
22164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.uqxtn.v4i16(<4 x i32> [[VQMOVN_V_I_I]]) #2
22174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I_I:%.*]] = bitcast <4 x i16> [[VQMOVN_V1_I_I]] to <8 x i8>
22184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I_I]] to <4 x i16>
22194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x i16> %a, <4 x i16> [[TMP1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
22204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[SHUFFLE_I_I]]
22212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vqmovn_high_u32(uint16x4_t a, uint32x4_t b) {
22222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_high_u32(a, b);
22232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vqmovn_high_u64(<2 x i32> %a, <2 x i64> %b) #0 {
22264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %b to <16 x i8>
22274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
22284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V1_I_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.uqxtn.v2i32(<2 x i64> [[VQMOVN_V_I_I]]) #2
22294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VQMOVN_V2_I_I:%.*]] = bitcast <2 x i32> [[VQMOVN_V1_I_I]] to <8 x i8>
22304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VQMOVN_V2_I_I]] to <2 x i32>
22314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i32> %a, <2 x i32> [[TMP1]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
22324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[SHUFFLE_I_I]]
22332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vqmovn_high_u64(uint32x2_t a, uint64x2_t b) {
22342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vqmovn_high_u64(a, b);
22352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_n_s8(<8 x i8> %a) #0 {
22384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> %a to <8 x i16>
22394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
22404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
22412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vshll_n_s8(int8x8_t a) {
22422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_n_s8(a, 8);
22432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_n_s16(<4 x i16> %a) #0 {
22464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
22474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
22484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
22494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 16, i32 16, i32 16, i32 16>
22504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
22512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vshll_n_s16(int16x4_t a) {
22522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_n_s16(a, 16);
22532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_n_s32(<2 x i32> %a) #0 {
22564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
22574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
22584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
22594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 32, i64 32>
22604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
22612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vshll_n_s32(int32x2_t a) {
22622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_n_s32(a, 32);
22632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_n_u8(<8 x i8> %a) #0 {
22664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> %a to <8 x i16>
22674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
22684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
22692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vshll_n_u8(uint8x8_t a) {
22702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_n_u8(a, 8);
22712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_n_u16(<4 x i16> %a) #0 {
22744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
22754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
22764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
22774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 16, i32 16, i32 16, i32 16>
22784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
22792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vshll_n_u16(uint16x4_t a) {
22802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_n_u16(a, 16);
22812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_n_u32(<2 x i32> %a) #0 {
22844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
22854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
22864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
22874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 32, i64 32>
22884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
22892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vshll_n_u32(uint32x2_t a) {
22902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_n_u32(a, 32);
22912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
22922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
22934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_high_n_s8(<16 x i8> %a) #0 {
22944967a710c84587c654b56c828382219c3937dacbPirama 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>
22954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = sext <8 x i8> [[SHUFFLE_I]] to <8 x i16>
22964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
22974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
22982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint16x8_t test_vshll_high_n_s8(int8x16_t a) {
22992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_high_n_s8(a, 8);
23002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_high_n_s16(<8 x i16> %a) #0 {
23034967a710c84587c654b56c828382219c3937dacbPirama 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>
23044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I]] to <8 x i8>
23054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
23064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <4 x i16> [[TMP1]] to <4 x i32>
23074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 16, i32 16, i32 16, i32 16>
23084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
23092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vshll_high_n_s16(int16x8_t a) {
23102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_high_n_s16(a, 16);
23112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_high_n_s32(<4 x i32> %a) #0 {
23144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
23154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I]] to <8 x i8>
23164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
23174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = sext <2 x i32> [[TMP1]] to <2 x i64>
23184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 32, i64 32>
23194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
23202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vshll_high_n_s32(int32x4_t a) {
23212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_high_n_s32(a, 32);
23222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x i16> @test_vshll_high_n_u8(<16 x i8> %a) #0 {
23254967a710c84587c654b56c828382219c3937dacbPirama 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>
23264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = zext <8 x i8> [[SHUFFLE_I]] to <8 x i16>
23274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <8 x i16> [[TMP0]], <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
23284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x i16> [[VSHLL_N]]
23292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint16x8_t test_vshll_high_n_u8(uint8x16_t a) {
23302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_high_n_u8(a, 8);
23312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vshll_high_n_u16(<8 x i16> %a) #0 {
23344967a710c84587c654b56c828382219c3937dacbPirama 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>
23354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i16> [[SHUFFLE_I]] to <8 x i8>
23364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
23374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <4 x i16> [[TMP1]] to <4 x i32>
23384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <4 x i32> [[TMP2]], <i32 16, i32 16, i32 16, i32 16>
23394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VSHLL_N]]
23402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vshll_high_n_u16(uint16x8_t a) {
23412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_high_n_u16(a, 16);
23422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vshll_high_n_u32(<4 x i32> %a) #0 {
23454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <4 x i32> %a, <4 x i32> %a, <2 x i32> <i32 2, i32 3>
23464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> [[SHUFFLE_I]] to <8 x i8>
23474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
23484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = zext <2 x i32> [[TMP1]] to <2 x i64>
23494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSHLL_N:%.*]] = shl <2 x i64> [[TMP2]], <i64 32, i64 32>
23504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VSHLL_N]]
23512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vshll_high_n_u32(uint32x4_t a) {
23522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vshll_high_n_u32(a, 32);
23532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x half> @test_vcvt_f16_f32(<4 x float> %a) #0 {
23564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
23574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F16_F32_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
23584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F16_F321_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.vcvtfp2hf(<4 x float> [[VCVT_F16_F32_I]]) #2
23594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F16_F322_I:%.*]] = bitcast <4 x i16> [[VCVT_F16_F321_I]] to <8 x i8>
23604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCVT_F16_F322_I]] to <4 x half>
23614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x half> [[TMP1]]
23622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat16x4_t test_vcvt_f16_f32(float32x4_t a) {
23632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_f16_f32(a);
23642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <8 x half> @test_vcvt_high_f16_f32(<4 x half> %a, <4 x float> %b) #0 {
23674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %b to <16 x i8>
23684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F16_F32_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
23694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F16_F321_I_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.vcvtfp2hf(<4 x float> [[VCVT_F16_F32_I_I]]) #2
23704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F16_F322_I_I:%.*]] = bitcast <4 x i16> [[VCVT_F16_F321_I_I]] to <8 x i8>
23714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[VCVT_F16_F322_I_I]] to <4 x half>
23724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x half> %a, <4 x half> [[TMP1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
23734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <8 x half> [[SHUFFLE_I_I]]
23742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat16x8_t test_vcvt_high_f16_f32(float16x4_t a, float32x4_t b) {
23752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_high_f16_f32(a, b);
23762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vcvt_f32_f64(<2 x double> %a) #0 {
23794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
23804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
23814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = fptrunc <2 x double> [[TMP1]] to <2 x float>
23824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VCVT_I]]
23832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vcvt_f32_f64(float64x2_t a) {
23842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_f32_f64(a);
23852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvt_high_f32_f64(<2 x float> %a, <2 x double> %b) #0 {
23884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %b to <16 x i8>
23894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
23904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I_I:%.*]] = fptrunc <2 x double> [[TMP1]] to <2 x float>
23914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x float> %a, <2 x float> [[VCVT_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
23924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I_I]]
23932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vcvt_high_f32_f64(float32x2_t a, float64x2_t b) {
23942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_high_f32_f64(a, b);
23952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
23962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
23974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vcvtx_f32_f64(<2 x double> %a) #0 {
23984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
23994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTX_F32_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
24004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTX_F32_V1_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fcvtxn.v2f32.v2f64(<2 x double> [[VCVTX_F32_V_I]]) #2
24014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VCVTX_F32_V1_I]]
24022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vcvtx_f32_f64(float64x2_t a) {
24032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtx_f32_f64(a);
24042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvtx_high_f32_f64(<2 x float> %a, <2 x double> %b) #0 {
24074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %b to <16 x i8>
24084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTX_F32_V_I_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
24094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTX_F32_V1_I_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fcvtxn.v2f32.v2f64(<2 x double> [[VCVTX_F32_V_I_I]]) #2
24104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x float> %a, <2 x float> [[VCVTX_F32_V1_I_I]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
24114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[SHUFFLE_I_I]]
24122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vcvtx_high_f32_f64(float32x2_t a, float64x2_t b) {
24132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtx_high_f32_f64(a, b);
24142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvt_f32_f16(<4 x half> %a) #0 {
24174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> %a to <8 x i8>
24184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F32_F16_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
24194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F32_F161_I:%.*]] = call <4 x float> @llvm.aarch64.neon.vcvthf2fp(<4 x i16> [[VCVT_F32_F16_I]]) #2
24204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F32_F162_I:%.*]] = bitcast <4 x float> [[VCVT_F32_F161_I]] to <16 x i8>
24214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCVT_F32_F162_I]] to <4 x float>
24224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP1]]
24232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vcvt_f32_f16(float16x4_t a) {
24242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_f32_f16(a);
24252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvt_high_f32_f16(<8 x half> %a) #0 {
24284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <8 x half> %a, <8 x half> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
24294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x half> [[SHUFFLE_I_I]] to <8 x i8>
24304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F32_F16_I_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <4 x i16>
24314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F32_F161_I_I:%.*]] = call <4 x float> @llvm.aarch64.neon.vcvthf2fp(<4 x i16> [[VCVT_F32_F16_I_I]]) #2
24324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_F32_F162_I_I:%.*]] = bitcast <4 x float> [[VCVT_F32_F161_I_I]] to <16 x i8>
24334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[VCVT_F32_F162_I_I]] to <4 x float>
24344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[TMP1]]
24352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vcvt_high_f32_f16(float16x8_t a) {
24362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_high_f32_f16(a);
24372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vcvt_f64_f32(<2 x float> %a) #0 {
24404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
24414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
24424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = fpext <2 x float> [[TMP1]] to <2 x double>
24434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VCVT_I]]
24442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vcvt_f64_f32(float32x2_t a) {
24452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_f64_f32(a);
24462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vcvt_high_f64_f32(<4 x float> %a) #0 {
24494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <4 x float> %a, <4 x float> %a, <2 x i32> <i32 2, i32 3>
24504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> [[SHUFFLE_I_I]] to <8 x i8>
24514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
24524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I_I:%.*]] = fpext <2 x float> [[TMP1]] to <2 x double>
24534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VCVT_I_I]]
24542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vcvt_high_f64_f32(float32x4_t a) {
24552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_high_f64_f32(a);
24562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrndn_f32(<2 x float> %a) #0 {
24594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
24604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
24614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN1_I:%.*]] = call <2 x float> @llvm.aarch64.neon.frintn.v2f32(<2 x float> [[VRNDN_I]]) #2
24624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRNDN1_I]]
24632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrndn_f32(float32x2_t a) {
24642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndn_f32(a);
24652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrndnq_f32(<4 x float> %a) #0 {
24684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
24694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
24704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN1_I:%.*]] = call <4 x float> @llvm.aarch64.neon.frintn.v4f32(<4 x float> [[VRNDN_I]]) #2
24714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRNDN1_I]]
24722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrndnq_f32(float32x4_t a) {
24732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndnq_f32(a);
24742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24752a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrndnq_f64(<2 x double> %a) #0 {
24774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
24784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
24794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDN1_I:%.*]] = call <2 x double> @llvm.aarch64.neon.frintn.v2f64(<2 x double> [[VRNDN_I]]) #2
24804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRNDN1_I]]
24812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrndnq_f64(float64x2_t a) {
24822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndnq_f64(a);
24832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24842a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrnda_f32(<2 x float> %a) #0 {
24864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
24874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
24884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA1_I:%.*]] = call <2 x float> @llvm.round.v2f32(<2 x float> [[VRNDA_I]]) #2
24894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRNDA1_I]]
24902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrnda_f32(float32x2_t a) {
24912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrnda_f32(a);
24922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
24932a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
24944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrndaq_f32(<4 x float> %a) #0 {
24954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
24964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
24974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA1_I:%.*]] = call <4 x float> @llvm.round.v4f32(<4 x float> [[VRNDA_I]]) #2
24984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRNDA1_I]]
24992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrndaq_f32(float32x4_t a) {
25002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndaq_f32(a);
25012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25022a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrndaq_f64(<2 x double> %a) #0 {
25044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
25054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
25064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDA1_I:%.*]] = call <2 x double> @llvm.round.v2f64(<2 x double> [[VRNDA_I]]) #2
25074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRNDA1_I]]
25082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrndaq_f64(float64x2_t a) {
25092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndaq_f64(a);
25102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25112a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrndp_f32(<2 x float> %a) #0 {
25134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
25144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
25154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP1_I:%.*]] = call <2 x float> @llvm.ceil.v2f32(<2 x float> [[VRNDP_I]]) #2
25164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRNDP1_I]]
25172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrndp_f32(float32x2_t a) {
25182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndp_f32(a);
25192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25202a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrndpq_f32(<4 x float> %a) #0 {
25224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
25234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
25244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP1_I:%.*]] = call <4 x float> @llvm.ceil.v4f32(<4 x float> [[VRNDP_I]]) #2
25254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRNDP1_I]]
25262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrndpq_f32(float32x4_t a) {
25272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndpq_f32(a);
25282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25292a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrndpq_f64(<2 x double> %a) #0 {
25314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
25324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
25334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDP1_I:%.*]] = call <2 x double> @llvm.ceil.v2f64(<2 x double> [[VRNDP_I]]) #2
25344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRNDP1_I]]
25352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrndpq_f64(float64x2_t a) {
25362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndpq_f64(a);
25372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25382a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrndm_f32(<2 x float> %a) #0 {
25404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
25414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
25424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM1_I:%.*]] = call <2 x float> @llvm.floor.v2f32(<2 x float> [[VRNDM_I]]) #2
25434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRNDM1_I]]
25442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrndm_f32(float32x2_t a) {
25452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndm_f32(a);
25462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25472a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrndmq_f32(<4 x float> %a) #0 {
25494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
25504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
25514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM1_I:%.*]] = call <4 x float> @llvm.floor.v4f32(<4 x float> [[VRNDM_I]]) #2
25524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRNDM1_I]]
25532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrndmq_f32(float32x4_t a) {
25542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndmq_f32(a);
25552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25562a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrndmq_f64(<2 x double> %a) #0 {
25584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
25594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
25604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDM1_I:%.*]] = call <2 x double> @llvm.floor.v2f64(<2 x double> [[VRNDM_I]]) #2
25614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRNDM1_I]]
25622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrndmq_f64(float64x2_t a) {
25632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndmq_f64(a);
25642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25652a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrndx_f32(<2 x float> %a) #0 {
25674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
25684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
25694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX1_I:%.*]] = call <2 x float> @llvm.rint.v2f32(<2 x float> [[VRNDX_I]]) #2
25704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRNDX1_I]]
25712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrndx_f32(float32x2_t a) {
25722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndx_f32(a);
25732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25742a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrndxq_f32(<4 x float> %a) #0 {
25764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
25774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
25784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX1_I:%.*]] = call <4 x float> @llvm.rint.v4f32(<4 x float> [[VRNDX_I]]) #2
25794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRNDX1_I]]
25802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrndxq_f32(float32x4_t a) {
25812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndxq_f32(a);
25822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25832a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrndxq_f64(<2 x double> %a) #0 {
25854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
25864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
25874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDX1_I:%.*]] = call <2 x double> @llvm.rint.v2f64(<2 x double> [[VRNDX_I]]) #2
25884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRNDX1_I]]
25892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrndxq_f64(float64x2_t a) {
25902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndxq_f64(a);
25912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
25922a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
25934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrnd_f32(<2 x float> %a) #0 {
25944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
25954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
25964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ1_I:%.*]] = call <2 x float> @llvm.trunc.v2f32(<2 x float> [[VRNDZ_I]]) #2
25974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRNDZ1_I]]
25982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrnd_f32(float32x2_t a) {
25992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrnd_f32(a);
26002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26012a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrndq_f32(<4 x float> %a) #0 {
26034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
26044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
26054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ1_I:%.*]] = call <4 x float> @llvm.trunc.v4f32(<4 x float> [[VRNDZ_I]]) #2
26064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRNDZ1_I]]
26072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrndq_f32(float32x4_t a) {
26082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndq_f32(a);
26092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26102a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrndq_f64(<2 x double> %a) #0 {
26124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
26134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
26144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDZ1_I:%.*]] = call <2 x double> @llvm.trunc.v2f64(<2 x double> [[VRNDZ_I]]) #2
26154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRNDZ1_I]]
26162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrndq_f64(float64x2_t a) {
26172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndq_f64(a);
26182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26192a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrndi_f32(<2 x float> %a) #0 {
26214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
26224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
26234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI1_I:%.*]] = call <2 x float> @llvm.nearbyint.v2f32(<2 x float> [[VRNDI_I]]) #2
26244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRNDI1_I]]
26252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrndi_f32(float32x2_t a) {
26262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndi_f32(a);
26272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26282a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrndiq_f32(<4 x float> %a) #0 {
26304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
26314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
26324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI1_I:%.*]] = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[VRNDI_I]]) #2
26334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRNDI1_I]]
26342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrndiq_f32(float32x4_t a) {
26352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndiq_f32(a);
26362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26372a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrndiq_f64(<2 x double> %a) #0 {
26394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
26404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
26414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRNDI1_I:%.*]] = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[VRNDI_I]]) #2
26424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRNDI1_I]]
26432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrndiq_f64(float64x2_t a) {
26442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrndiq_f64(a);
26452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26462a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvt_s32_f32(<2 x float> %a) #0 {
26484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
26494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
26504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptosi <2 x float> [[TMP1]] to <2 x i32>
26514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
26522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vcvt_s32_f32(float32x2_t a) {
26532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_s32_f32(a);
26542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26552a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtq_s32_f32(<4 x float> %a) #0 {
26574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
26584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
26594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptosi <4 x float> [[TMP1]] to <4 x i32>
26604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
26612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vcvtq_s32_f32(float32x4_t a) {
26622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_s32_f32(a);
26632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26642a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtq_s64_f64(<2 x double> %a) #0 {
26664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
26674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
26684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptosi <2 x double> [[TMP1]] to <2 x i64>
26694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
26702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vcvtq_s64_f64(float64x2_t a) {
26712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_s64_f64(a);
26722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26732a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvt_u32_f32(<2 x float> %a) #0 {
26754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
26764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
26774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptoui <2 x float> [[TMP1]] to <2 x i32>
26784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[TMP2]]
26792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcvt_u32_f32(float32x2_t a) {
26802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_u32_f32(a);
26812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26822a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtq_u32_f32(<4 x float> %a) #0 {
26844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
26854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
26864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptoui <4 x float> [[TMP1]] to <4 x i32>
26874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[TMP2]]
26882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcvtq_u32_f32(float32x4_t a) {
26892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_u32_f32(a);
26902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
26912a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
26924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtq_u64_f64(<2 x double> %a) #0 {
26934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
26944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
26954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP2:%.*]] = fptoui <2 x double> [[TMP1]] to <2 x i64>
26964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[TMP2]]
26972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcvtq_u64_f64(float64x2_t a) {
26982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_u64_f64(a);
26992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27002a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvtn_s32_f32(<2 x float> %a) #0 {
27024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
27034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
27044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtns.v2i32.v2f32(<2 x float> [[VCVTN_I]]) #2
27054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTN1_I]]
27062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vcvtn_s32_f32(float32x2_t a) {
27072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtn_s32_f32(a);
27082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27092a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtnq_s32_f32(<4 x float> %a) #0 {
27114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
27124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
27134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtns.v4i32.v4f32(<4 x float> [[VCVTN_I]]) #2
27144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTN1_I]]
27152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vcvtnq_s32_f32(float32x4_t a) {
27162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtnq_s32_f32(a);
27172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27182a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtnq_s64_f64(<2 x double> %a) #0 {
27204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
27214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
27224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtns.v2i64.v2f64(<2 x double> [[VCVTN_I]]) #2
27234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTN1_I]]
27242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vcvtnq_s64_f64(float64x2_t a) {
27252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtnq_s64_f64(a);
27262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27272a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvtn_u32_f32(<2 x float> %a) #0 {
27294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
27304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
27314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtnu.v2i32.v2f32(<2 x float> [[VCVTN_I]]) #2
27324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTN1_I]]
27332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcvtn_u32_f32(float32x2_t a) {
27342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtn_u32_f32(a);
27352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27362a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtnq_u32_f32(<4 x float> %a) #0 {
27384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
27394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
27404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtnu.v4i32.v4f32(<4 x float> [[VCVTN_I]]) #2
27414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTN1_I]]
27422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcvtnq_u32_f32(float32x4_t a) {
27432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtnq_u32_f32(a);
27442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27452a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtnq_u64_f64(<2 x double> %a) #0 {
27474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
27484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
27494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTN1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtnu.v2i64.v2f64(<2 x double> [[VCVTN_I]]) #2
27504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTN1_I]]
27512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcvtnq_u64_f64(float64x2_t a) {
27522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtnq_u64_f64(a);
27532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27542a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvtp_s32_f32(<2 x float> %a) #0 {
27564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
27574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
27584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtps.v2i32.v2f32(<2 x float> [[VCVTP_I]]) #2
27594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTP1_I]]
27602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vcvtp_s32_f32(float32x2_t a) {
27612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtp_s32_f32(a);
27622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27632a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtpq_s32_f32(<4 x float> %a) #0 {
27654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
27664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
27674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtps.v4i32.v4f32(<4 x float> [[VCVTP_I]]) #2
27684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTP1_I]]
27692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vcvtpq_s32_f32(float32x4_t a) {
27702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtpq_s32_f32(a);
27712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27722a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtpq_s64_f64(<2 x double> %a) #0 {
27744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
27754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
27764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtps.v2i64.v2f64(<2 x double> [[VCVTP_I]]) #2
27774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTP1_I]]
27782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vcvtpq_s64_f64(float64x2_t a) {
27792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtpq_s64_f64(a);
27802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27812a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvtp_u32_f32(<2 x float> %a) #0 {
27834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
27844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
27854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtpu.v2i32.v2f32(<2 x float> [[VCVTP_I]]) #2
27864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTP1_I]]
27872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcvtp_u32_f32(float32x2_t a) {
27882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtp_u32_f32(a);
27892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27902a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
27914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtpq_u32_f32(<4 x float> %a) #0 {
27924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
27934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
27944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtpu.v4i32.v4f32(<4 x float> [[VCVTP_I]]) #2
27954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTP1_I]]
27962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcvtpq_u32_f32(float32x4_t a) {
27972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtpq_u32_f32(a);
27982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
27992a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtpq_u64_f64(<2 x double> %a) #0 {
28014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
28024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
28034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTP1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtpu.v2i64.v2f64(<2 x double> [[VCVTP_I]]) #2
28044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTP1_I]]
28052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcvtpq_u64_f64(float64x2_t a) {
28062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtpq_u64_f64(a);
28072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28082a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvtm_s32_f32(<2 x float> %a) #0 {
28104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
28114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
28124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtms.v2i32.v2f32(<2 x float> [[VCVTM_I]]) #2
28134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTM1_I]]
28142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vcvtm_s32_f32(float32x2_t a) {
28152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtm_s32_f32(a);
28162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28172a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtmq_s32_f32(<4 x float> %a) #0 {
28194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
28204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
28214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtms.v4i32.v4f32(<4 x float> [[VCVTM_I]]) #2
28224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTM1_I]]
28232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vcvtmq_s32_f32(float32x4_t a) {
28242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtmq_s32_f32(a);
28252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28262a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtmq_s64_f64(<2 x double> %a) #0 {
28284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
28294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
28304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtms.v2i64.v2f64(<2 x double> [[VCVTM_I]]) #2
28314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTM1_I]]
28322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vcvtmq_s64_f64(float64x2_t a) {
28332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtmq_s64_f64(a);
28342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28352a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvtm_u32_f32(<2 x float> %a) #0 {
28374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
28384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
28394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtmu.v2i32.v2f32(<2 x float> [[VCVTM_I]]) #2
28404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTM1_I]]
28412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcvtm_u32_f32(float32x2_t a) {
28422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtm_u32_f32(a);
28432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28442a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtmq_u32_f32(<4 x float> %a) #0 {
28464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
28474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
28484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtmu.v4i32.v4f32(<4 x float> [[VCVTM_I]]) #2
28494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTM1_I]]
28502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcvtmq_u32_f32(float32x4_t a) {
28512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtmq_u32_f32(a);
28522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28532a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtmq_u64_f64(<2 x double> %a) #0 {
28554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
28564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
28574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTM1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtmu.v2i64.v2f64(<2 x double> [[VCVTM_I]]) #2
28584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTM1_I]]
28592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcvtmq_u64_f64(float64x2_t a) {
28602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtmq_u64_f64(a);
28612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28622a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvta_s32_f32(<2 x float> %a) #0 {
28644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
28654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
28664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtas.v2i32.v2f32(<2 x float> [[VCVTA_I]]) #2
28674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTA1_I]]
28682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x2_t test_vcvta_s32_f32(float32x2_t a) {
28692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvta_s32_f32(a);
28702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28712a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtaq_s32_f32(<4 x float> %a) #0 {
28734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
28744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
28754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtas.v4i32.v4f32(<4 x float> [[VCVTA_I]]) #2
28764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTA1_I]]
28772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint32x4_t test_vcvtaq_s32_f32(float32x4_t a) {
28782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtaq_s32_f32(a);
28792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28802a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtaq_s64_f64(<2 x double> %a) #0 {
28824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
28834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
28844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtas.v2i64.v2f64(<2 x double> [[VCVTA_I]]) #2
28854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTA1_I]]
28862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinint64x2_t test_vcvtaq_s64_f64(float64x2_t a) {
28872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtaq_s64_f64(a);
28882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28892a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vcvta_u32_f32(<2 x float> %a) #0 {
28914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
28924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
28934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.fcvtau.v2i32.v2f32(<2 x float> [[VCVTA_I]]) #2
28944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VCVTA1_I]]
28952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vcvta_u32_f32(float32x2_t a) {
28962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvta_u32_f32(a);
28972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
28982a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
28994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vcvtaq_u32_f32(<4 x float> %a) #0 {
29004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
29014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
29024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.fcvtau.v4i32.v4f32(<4 x float> [[VCVTA_I]]) #2
29034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VCVTA1_I]]
29042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vcvtaq_u32_f32(float32x4_t a) {
29052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtaq_u32_f32(a);
29062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29072a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i64> @test_vcvtaq_u64_f64(<2 x double> %a) #0 {
29094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
29104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
29114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVTA1_I:%.*]] = call <2 x i64> @llvm.aarch64.neon.fcvtau.v2i64.v2f64(<2 x double> [[VCVTA_I]]) #2
29124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i64> [[VCVTA1_I]]
29132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint64x2_t test_vcvtaq_u64_f64(float64x2_t a) {
29142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtaq_u64_f64(a);
29152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29162a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrsqrte_f32(<2 x float> %a) #0 {
29184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
29194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
29204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTE_V1_I:%.*]] = call <2 x float> @llvm.aarch64.neon.frsqrte.v2f32(<2 x float> [[VRSQRTE_V_I]]) #2
29214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRSQRTE_V1_I]]
29222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrsqrte_f32(float32x2_t a) {
29232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrsqrte_f32(a);
29242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29252a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrsqrteq_f32(<4 x float> %a) #0 {
29274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
29284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
29294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTEQ_V1_I:%.*]] = call <4 x float> @llvm.aarch64.neon.frsqrte.v4f32(<4 x float> [[VRSQRTEQ_V_I]]) #2
29304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRSQRTEQ_V1_I]]
29312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrsqrteq_f32(float32x4_t a) {
29322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrsqrteq_f32(a);
29332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29342a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrsqrteq_f64(<2 x double> %a) #0 {
29364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
29374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
29384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRSQRTEQ_V1_I:%.*]] = call <2 x double> @llvm.aarch64.neon.frsqrte.v2f64(<2 x double> [[VRSQRTEQ_V_I]]) #2
29394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRSQRTEQ_V1_I]]
29402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrsqrteq_f64(float64x2_t a) {
29412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrsqrteq_f64(a);
29422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29432a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vrecpe_f32(<2 x float> %a) #0 {
29454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
29464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
29474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPE_V1_I:%.*]] = call <2 x float> @llvm.aarch64.neon.frecpe.v2f32(<2 x float> [[VRECPE_V_I]]) #2
29484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VRECPE_V1_I]]
29492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vrecpe_f32(float32x2_t a) {
29502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrecpe_f32(a);
29512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29522a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vrecpeq_f32(<4 x float> %a) #0 {
29544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
29554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
29564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPEQ_V1_I:%.*]] = call <4 x float> @llvm.aarch64.neon.frecpe.v4f32(<4 x float> [[VRECPEQ_V_I]]) #2
29574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VRECPEQ_V1_I]]
29582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vrecpeq_f32(float32x4_t a) {
29592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrecpeq_f32(a);
29602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29612a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vrecpeq_f64(<2 x double> %a) #0 {
29634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
29644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
29654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPEQ_V1_I:%.*]] = call <2 x double> @llvm.aarch64.neon.frecpe.v2f64(<2 x double> [[VRECPEQ_V_I]]) #2
29664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VRECPEQ_V1_I]]
29672a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vrecpeq_f64(float64x2_t a) {
29682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrecpeq_f64(a);
29692a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29702a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x i32> @test_vrecpe_u32(<2 x i32> %a) #0 {
29724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
29734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPE_V_I:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
29744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPE_V1_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.urecpe.v2i32(<2 x i32> [[VRECPE_V_I]]) #2
29754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x i32> [[VRECPE_V1_I]]
29762a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x2_t test_vrecpe_u32(uint32x2_t a) {
29772a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrecpe_u32(a);
29782a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29792a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x i32> @test_vrecpeq_u32(<4 x i32> %a) #0 {
29814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
29824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPEQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
29834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VRECPEQ_V1_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.urecpe.v4i32(<4 x i32> [[VRECPEQ_V_I]]) #2
29844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x i32> [[VRECPEQ_V1_I]]
29852a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinuint32x4_t test_vrecpeq_u32(uint32x4_t a) {
29862a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vrecpeq_u32(a);
29872a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29882a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vsqrt_f32(<2 x float> %a) #0 {
29904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
29914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float>
29924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQRT_I:%.*]] = call <2 x float> @llvm.sqrt.v2f32(<2 x float> [[TMP1]]) #2
29934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VSQRT_I]]
29942a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vsqrt_f32(float32x2_t a) {
29952a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vsqrt_f32(a);
29962a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
29972a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
29984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vsqrtq_f32(<4 x float> %a) #0 {
29994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
30004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x float>
30014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQRT_I:%.*]] = call <4 x float> @llvm.sqrt.v4f32(<4 x float> [[TMP1]]) #2
30024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VSQRT_I]]
30032a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vsqrtq_f32(float32x4_t a) {
30042a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vsqrtq_f32(a);
30052a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
30062a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
30074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vsqrtq_f64(<2 x double> %a) #0 {
30084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
30094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x double>
30104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VSQRT_I:%.*]] = call <2 x double> @llvm.sqrt.v2f64(<2 x double> [[TMP1]]) #2
30114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VSQRT_I]]
30122a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vsqrtq_f64(float64x2_t a) {
30132a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vsqrtq_f64(a);
30142a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
30152a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
30164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vcvt_f32_s32(<2 x i32> %a) #0 {
30174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
30184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
30194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = sitofp <2 x i32> [[TMP1]] to <2 x float>
30204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VCVT_I]]
30212a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vcvt_f32_s32(int32x2_t a) {
30222a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_f32_s32(a);
30232a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
30242a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
30254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x float> @test_vcvt_f32_u32(<2 x i32> %a) #0 {
30264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
30274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32>
30284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = uitofp <2 x i32> [[TMP1]] to <2 x float>
30294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x float> [[VCVT_I]]
30302a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x2_t test_vcvt_f32_u32(uint32x2_t a) {
30312a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvt_f32_u32(a);
30322a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
30332a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
30344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvtq_f32_s32(<4 x i32> %a) #0 {
30354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
30364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
30374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = sitofp <4 x i32> [[TMP1]] to <4 x float>
30384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VCVT_I]]
30392a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vcvtq_f32_s32(int32x4_t a) {
30402a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_f32_s32(a);
30412a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
30422a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
30434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <4 x float> @test_vcvtq_f32_u32(<4 x i32> %a) #0 {
30444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
30454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
30464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = uitofp <4 x i32> [[TMP1]] to <4 x float>
30474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <4 x float> [[VCVT_I]]
30482a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat32x4_t test_vcvtq_f32_u32(uint32x4_t a) {
30492a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_f32_u32(a);
30502a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
30512a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
30524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vcvtq_f64_s64(<2 x i64> %a) #0 {
30534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
30544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
30554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = sitofp <2 x i64> [[TMP1]] to <2 x double>
30564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VCVT_I]]
30572a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vcvtq_f64_s64(int64x2_t a) {
30582a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_f64_s64(a);
30592a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
30602a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin
30614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: define <2 x double> @test_vcvtq_f64_u64(<2 x i64> %a) #0 {
30624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to <16 x i8>
30634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[TMP1:%.*]] = bitcast <16 x i8> [[TMP0]] to <2 x i64>
30644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   [[VCVT_I:%.*]] = uitofp <2 x i64> [[TMP1]] to <2 x double>
30654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK:   ret <2 x double> [[VCVT_I]]
30662a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qinfloat64x2_t test_vcvtq_f64_u64(uint64x2_t a) {
30672a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin  return vcvtq_f64_u64(a);
30682a2b69b488134b6eb54f6e9ee8ebcc50a806e6b1Kevin Qin}
3069