// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
// RUN: %clang_cc1 -triple thumbv8.1m.main-none-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=LE
// RUN: %clang_cc1 -triple thumbv8.1m.main-none-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -DPOLYMORPHIC -S -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=LE
// RUN: %clang_cc1 -triple thumbebv8.1m.main-arm-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=BE
// RUN: %clang_cc1 -triple thumbebv8.1m.main-arm-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -DPOLYMORPHIC -S -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=BE

// REQUIRES: aarch64-registered-target || arm-registered-target

#include <arm_mve.h>

// LE-LABEL: @test_vreinterpretq_f16_f32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <8 x half>
// LE-NEXT:    ret <8 x half> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f16_f32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4f32(<4 x float> [[A:%.*]])
// BE-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_f32(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_f16_s16(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <8 x half>
// BOTH-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_s16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f16_s32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x half>
// LE-NEXT:    ret <8 x half> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f16_s32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f16_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x half>
// LE-NEXT:    ret <8 x half> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f16_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f16_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x half>
// LE-NEXT:    ret <8 x half> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f16_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_s8(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_f16_u16(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <8 x half>
// BOTH-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_u16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f16_u32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x half>
// LE-NEXT:    ret <8 x half> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f16_u32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f16_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x half>
// LE-NEXT:    ret <8 x half> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f16_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_u64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f16_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x half>
// LE-NEXT:    ret <8 x half> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f16_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <8 x half> [[TMP0]]
//
float16x8_t test_vreinterpretq_f16_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f16_u8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f32_f16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <4 x float>
// LE-NEXT:    ret <4 x float> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f32_f16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v8f16(<8 x half> [[A:%.*]])
// BE-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_f16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f32_s16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x float>
// LE-NEXT:    ret <4 x float> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f32_s16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_s16(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_f32_s32(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <4 x float>
// BOTH-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f32_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x float>
// LE-NEXT:    ret <4 x float> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f32_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f32_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x float>
// LE-NEXT:    ret <4 x float> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f32_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_s8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f32_u16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x float>
// LE-NEXT:    ret <4 x float> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f32_u16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_u16(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_f32_u32(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <4 x float>
// BOTH-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f32_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x float>
// LE-NEXT:    ret <4 x float> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f32_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_u64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_f32_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x float>
// LE-NEXT:    ret <4 x float> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_f32_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <4 x float> [[TMP0]]
//
float32x4_t test_vreinterpretq_f32_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_f32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_f32_u8(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_s16_f16(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <8 x i16>
// BOTH-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_f16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s16_f32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s16_f32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4f32(<4 x float> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_f32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s16_s32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s16_s32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s16_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s16_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s16_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s16_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_s8(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_s16_u16(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <8 x i16> [[A:%.*]]
//
int16x8_t test_vreinterpretq_s16_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_u16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s16_u32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s16_u32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s16_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s16_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_u64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s16_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s16_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
int16x8_t test_vreinterpretq_s16_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s16_u8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s32_f16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s32_f16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8f16(<8 x half> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_f16(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_s32_f32(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <4 x i32>
// BOTH-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_f32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s32_s16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s32_s16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_s16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s32_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s32_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s32_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s32_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_s8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s32_u16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s32_u16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_u16(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_s32_u32(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <4 x i32> [[A:%.*]]
//
int32x4_t test_vreinterpretq_s32_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s32_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s32_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_u64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s32_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s32_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
int32x4_t test_vreinterpretq_s32_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s32_u8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_f16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_f16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8f16(<8 x half> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_f16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_f32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_f32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4f32(<4 x float> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_f32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_s16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_s16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_s16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_s32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_s32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_s8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_u16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_u16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_u16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_u32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_u32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_u32(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_s64_u64(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <2 x i64> [[A:%.*]]
//
int64x2_t test_vreinterpretq_s64_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_u64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s64_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s64_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
int64x2_t test_vreinterpretq_s64_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s64_u8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_f16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_f16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8f16(<8 x half> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_f16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_f32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_f32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4f32(<4 x float> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_f32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_s16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_s16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_s16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_s32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_s32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_u16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_u16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_u16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_u32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_u32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_s8_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_s8_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
int8x16_t test_vreinterpretq_s8_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_u64(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_s8_u8(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <16 x i8> [[A:%.*]]
//
int8x16_t test_vreinterpretq_s8_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_s8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_s8_u8(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_u16_f16(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <8 x i16>
// BOTH-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_f16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u16_f32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u16_f32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4f32(<4 x float> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_f32(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_u16_s16(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <8 x i16> [[A:%.*]]
//
uint16x8_t test_vreinterpretq_u16_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_s16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u16_s32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u16_s32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u16_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u16_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u16_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u16_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_s8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u16_u32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u16_u32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u16_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u16_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_u64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u16_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>
// LE-NEXT:    ret <8 x i16> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u16_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <8 x i16> [[TMP0]]
//
uint16x8_t test_vreinterpretq_u16_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u16(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u16_u8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u32_f16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u32_f16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8f16(<8 x half> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_f16(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_u32_f32(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <4 x i32>
// BOTH-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_f32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u32_s16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u32_s16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_s16(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_u32_s32(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <4 x i32> [[A:%.*]]
//
uint32x4_t test_vreinterpretq_u32_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u32_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u32_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u32_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u32_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_s8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u32_u16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u32_u16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_u16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u32_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u32_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_u64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u32_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>
// LE-NEXT:    ret <4 x i32> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u32_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <4 x i32> [[TMP0]]
//
uint32x4_t test_vreinterpretq_u32_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u32(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u32_u8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_f16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_f16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8f16(<8 x half> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_f16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_f32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_f32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4f32(<4 x float> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_f32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_s16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_s16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_s16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_s32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_s32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_s32(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_u64_s64(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <2 x i64> [[A:%.*]]
//
uint64x2_t test_vreinterpretq_u64_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_s64(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_s8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_s8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_s8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_u16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_u16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_u16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_u32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_u32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u64_u8(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>
// LE-NEXT:    ret <2 x i64> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u64_u8(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])
// BE-NEXT:    ret <2 x i64> [[TMP0]]
//
uint64x2_t test_vreinterpretq_u64_u8(uint8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u64(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u64_u8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_f16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_f16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8f16(<8 x half> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_f16(float16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_f16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_f32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_f32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4f32(<4 x float> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_f32(float32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_f32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_s16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_s16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_s16(int16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_s16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_s32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_s32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_s32(int32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_s32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_s64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_s64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_s64(int64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_s64(a);
#endif /* POLYMORPHIC */
}

// BOTH-LABEL: @test_vreinterpretq_u8_s8(
// BOTH-NEXT:  entry:
// BOTH-NEXT:    ret <16 x i8> [[A:%.*]]
//
uint8x16_t test_vreinterpretq_u8_s8(int8x16_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_s8(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_u16(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_u16(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_u16(uint16x8_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_u16(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_u32(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_u32(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_u32(uint32x4_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_u32(a);
#endif /* POLYMORPHIC */
}

// LE-LABEL: @test_vreinterpretq_u8_u64(
// LE-NEXT:  entry:
// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>
// LE-NEXT:    ret <16 x i8> [[TMP0]]
//
// BE-LABEL: @test_vreinterpretq_u8_u64(
// BE-NEXT:  entry:
// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])
// BE-NEXT:    ret <16 x i8> [[TMP0]]
//
uint8x16_t test_vreinterpretq_u8_u64(uint64x2_t a)
{
#ifdef POLYMORPHIC
    return vreinterpretq_u8(a);
#else /* POLYMORPHIC */
    return vreinterpretq_u8_u64(a);
#endif /* POLYMORPHIC */
}
