brintos

brintos / llvm-project-archived public Read only

0
0
Text · 48.2 KiB · 894bbb7 Raw
1632 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2// RUN: %clang_cc1 -triple thumbv8.1m.main-none-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=LE3// RUN: %clang_cc1 -triple thumbv8.1m.main-none-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -DPOLYMORPHIC -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=LE4// RUN: %clang_cc1 -triple thumbebv8.1m.main-arm-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=BE5// RUN: %clang_cc1 -triple thumbebv8.1m.main-arm-none-eabi -target-feature +mve.fp -mfloat-abi hard -O0 -disable-O0-optnone -DPOLYMORPHIC -emit-llvm -o - %s | opt -S -passes='mem2reg,sroa,early-cse<>' | FileCheck %s --check-prefix=BOTH --check-prefix=BE6 7// REQUIRES: aarch64-registered-target || arm-registered-target8 9#include <arm_mve.h>10 11// LE-LABEL: @test_vreinterpretq_f16_f32(12// LE-NEXT:  entry:13// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <8 x half>14// LE-NEXT:    ret <8 x half> [[TMP0]]15//16// BE-LABEL: @test_vreinterpretq_f16_f32(17// BE-NEXT:  entry:18// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4f32(<4 x float> [[A:%.*]])19// BE-NEXT:    ret <8 x half> [[TMP0]]20//21float16x8_t test_vreinterpretq_f16_f32(float32x4_t a)22{23#ifdef POLYMORPHIC24    return vreinterpretq_f16(a);25#else /* POLYMORPHIC */26    return vreinterpretq_f16_f32(a);27#endif /* POLYMORPHIC */28}29 30// BOTH-LABEL: @test_vreinterpretq_f16_s16(31// BOTH-NEXT:  entry:32// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <8 x half>33// BOTH-NEXT:    ret <8 x half> [[TMP0]]34//35float16x8_t test_vreinterpretq_f16_s16(int16x8_t a)36{37#ifdef POLYMORPHIC38    return vreinterpretq_f16(a);39#else /* POLYMORPHIC */40    return vreinterpretq_f16_s16(a);41#endif /* POLYMORPHIC */42}43 44// LE-LABEL: @test_vreinterpretq_f16_s32(45// LE-NEXT:  entry:46// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x half>47// LE-NEXT:    ret <8 x half> [[TMP0]]48//49// BE-LABEL: @test_vreinterpretq_f16_s32(50// BE-NEXT:  entry:51// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4i32(<4 x i32> [[A:%.*]])52// BE-NEXT:    ret <8 x half> [[TMP0]]53//54float16x8_t test_vreinterpretq_f16_s32(int32x4_t a)55{56#ifdef POLYMORPHIC57    return vreinterpretq_f16(a);58#else /* POLYMORPHIC */59    return vreinterpretq_f16_s32(a);60#endif /* POLYMORPHIC */61}62 63// LE-LABEL: @test_vreinterpretq_f16_s64(64// LE-NEXT:  entry:65// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x half>66// LE-NEXT:    ret <8 x half> [[TMP0]]67//68// BE-LABEL: @test_vreinterpretq_f16_s64(69// BE-NEXT:  entry:70// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v2i64(<2 x i64> [[A:%.*]])71// BE-NEXT:    ret <8 x half> [[TMP0]]72//73float16x8_t test_vreinterpretq_f16_s64(int64x2_t a)74{75#ifdef POLYMORPHIC76    return vreinterpretq_f16(a);77#else /* POLYMORPHIC */78    return vreinterpretq_f16_s64(a);79#endif /* POLYMORPHIC */80}81 82// LE-LABEL: @test_vreinterpretq_f16_s8(83// LE-NEXT:  entry:84// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x half>85// LE-NEXT:    ret <8 x half> [[TMP0]]86//87// BE-LABEL: @test_vreinterpretq_f16_s8(88// BE-NEXT:  entry:89// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v16i8(<16 x i8> [[A:%.*]])90// BE-NEXT:    ret <8 x half> [[TMP0]]91//92float16x8_t test_vreinterpretq_f16_s8(int8x16_t a)93{94#ifdef POLYMORPHIC95    return vreinterpretq_f16(a);96#else /* POLYMORPHIC */97    return vreinterpretq_f16_s8(a);98#endif /* POLYMORPHIC */99}100 101// BOTH-LABEL: @test_vreinterpretq_f16_u16(102// BOTH-NEXT:  entry:103// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <8 x half>104// BOTH-NEXT:    ret <8 x half> [[TMP0]]105//106float16x8_t test_vreinterpretq_f16_u16(uint16x8_t a)107{108#ifdef POLYMORPHIC109    return vreinterpretq_f16(a);110#else /* POLYMORPHIC */111    return vreinterpretq_f16_u16(a);112#endif /* POLYMORPHIC */113}114 115// LE-LABEL: @test_vreinterpretq_f16_u32(116// LE-NEXT:  entry:117// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x half>118// LE-NEXT:    ret <8 x half> [[TMP0]]119//120// BE-LABEL: @test_vreinterpretq_f16_u32(121// BE-NEXT:  entry:122// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v4i32(<4 x i32> [[A:%.*]])123// BE-NEXT:    ret <8 x half> [[TMP0]]124//125float16x8_t test_vreinterpretq_f16_u32(uint32x4_t a)126{127#ifdef POLYMORPHIC128    return vreinterpretq_f16(a);129#else /* POLYMORPHIC */130    return vreinterpretq_f16_u32(a);131#endif /* POLYMORPHIC */132}133 134// LE-LABEL: @test_vreinterpretq_f16_u64(135// LE-NEXT:  entry:136// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x half>137// LE-NEXT:    ret <8 x half> [[TMP0]]138//139// BE-LABEL: @test_vreinterpretq_f16_u64(140// BE-NEXT:  entry:141// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v2i64(<2 x i64> [[A:%.*]])142// BE-NEXT:    ret <8 x half> [[TMP0]]143//144float16x8_t test_vreinterpretq_f16_u64(uint64x2_t a)145{146#ifdef POLYMORPHIC147    return vreinterpretq_f16(a);148#else /* POLYMORPHIC */149    return vreinterpretq_f16_u64(a);150#endif /* POLYMORPHIC */151}152 153// LE-LABEL: @test_vreinterpretq_f16_u8(154// LE-NEXT:  entry:155// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x half>156// LE-NEXT:    ret <8 x half> [[TMP0]]157//158// BE-LABEL: @test_vreinterpretq_f16_u8(159// BE-NEXT:  entry:160// BE-NEXT:    [[TMP0:%.*]] = call <8 x half> @llvm.arm.mve.vreinterpretq.v8f16.v16i8(<16 x i8> [[A:%.*]])161// BE-NEXT:    ret <8 x half> [[TMP0]]162//163float16x8_t test_vreinterpretq_f16_u8(uint8x16_t a)164{165#ifdef POLYMORPHIC166    return vreinterpretq_f16(a);167#else /* POLYMORPHIC */168    return vreinterpretq_f16_u8(a);169#endif /* POLYMORPHIC */170}171 172// LE-LABEL: @test_vreinterpretq_f32_f16(173// LE-NEXT:  entry:174// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <4 x float>175// LE-NEXT:    ret <4 x float> [[TMP0]]176//177// BE-LABEL: @test_vreinterpretq_f32_f16(178// BE-NEXT:  entry:179// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v8f16(<8 x half> [[A:%.*]])180// BE-NEXT:    ret <4 x float> [[TMP0]]181//182float32x4_t test_vreinterpretq_f32_f16(float16x8_t a)183{184#ifdef POLYMORPHIC185    return vreinterpretq_f32(a);186#else /* POLYMORPHIC */187    return vreinterpretq_f32_f16(a);188#endif /* POLYMORPHIC */189}190 191// LE-LABEL: @test_vreinterpretq_f32_s16(192// LE-NEXT:  entry:193// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x float>194// LE-NEXT:    ret <4 x float> [[TMP0]]195//196// BE-LABEL: @test_vreinterpretq_f32_s16(197// BE-NEXT:  entry:198// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v8i16(<8 x i16> [[A:%.*]])199// BE-NEXT:    ret <4 x float> [[TMP0]]200//201float32x4_t test_vreinterpretq_f32_s16(int16x8_t a)202{203#ifdef POLYMORPHIC204    return vreinterpretq_f32(a);205#else /* POLYMORPHIC */206    return vreinterpretq_f32_s16(a);207#endif /* POLYMORPHIC */208}209 210// BOTH-LABEL: @test_vreinterpretq_f32_s32(211// BOTH-NEXT:  entry:212// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <4 x float>213// BOTH-NEXT:    ret <4 x float> [[TMP0]]214//215float32x4_t test_vreinterpretq_f32_s32(int32x4_t a)216{217#ifdef POLYMORPHIC218    return vreinterpretq_f32(a);219#else /* POLYMORPHIC */220    return vreinterpretq_f32_s32(a);221#endif /* POLYMORPHIC */222}223 224// LE-LABEL: @test_vreinterpretq_f32_s64(225// LE-NEXT:  entry:226// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x float>227// LE-NEXT:    ret <4 x float> [[TMP0]]228//229// BE-LABEL: @test_vreinterpretq_f32_s64(230// BE-NEXT:  entry:231// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v2i64(<2 x i64> [[A:%.*]])232// BE-NEXT:    ret <4 x float> [[TMP0]]233//234float32x4_t test_vreinterpretq_f32_s64(int64x2_t a)235{236#ifdef POLYMORPHIC237    return vreinterpretq_f32(a);238#else /* POLYMORPHIC */239    return vreinterpretq_f32_s64(a);240#endif /* POLYMORPHIC */241}242 243// LE-LABEL: @test_vreinterpretq_f32_s8(244// LE-NEXT:  entry:245// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x float>246// LE-NEXT:    ret <4 x float> [[TMP0]]247//248// BE-LABEL: @test_vreinterpretq_f32_s8(249// BE-NEXT:  entry:250// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v16i8(<16 x i8> [[A:%.*]])251// BE-NEXT:    ret <4 x float> [[TMP0]]252//253float32x4_t test_vreinterpretq_f32_s8(int8x16_t a)254{255#ifdef POLYMORPHIC256    return vreinterpretq_f32(a);257#else /* POLYMORPHIC */258    return vreinterpretq_f32_s8(a);259#endif /* POLYMORPHIC */260}261 262// LE-LABEL: @test_vreinterpretq_f32_u16(263// LE-NEXT:  entry:264// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x float>265// LE-NEXT:    ret <4 x float> [[TMP0]]266//267// BE-LABEL: @test_vreinterpretq_f32_u16(268// BE-NEXT:  entry:269// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v8i16(<8 x i16> [[A:%.*]])270// BE-NEXT:    ret <4 x float> [[TMP0]]271//272float32x4_t test_vreinterpretq_f32_u16(uint16x8_t a)273{274#ifdef POLYMORPHIC275    return vreinterpretq_f32(a);276#else /* POLYMORPHIC */277    return vreinterpretq_f32_u16(a);278#endif /* POLYMORPHIC */279}280 281// BOTH-LABEL: @test_vreinterpretq_f32_u32(282// BOTH-NEXT:  entry:283// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <4 x float>284// BOTH-NEXT:    ret <4 x float> [[TMP0]]285//286float32x4_t test_vreinterpretq_f32_u32(uint32x4_t a)287{288#ifdef POLYMORPHIC289    return vreinterpretq_f32(a);290#else /* POLYMORPHIC */291    return vreinterpretq_f32_u32(a);292#endif /* POLYMORPHIC */293}294 295// LE-LABEL: @test_vreinterpretq_f32_u64(296// LE-NEXT:  entry:297// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x float>298// LE-NEXT:    ret <4 x float> [[TMP0]]299//300// BE-LABEL: @test_vreinterpretq_f32_u64(301// BE-NEXT:  entry:302// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v2i64(<2 x i64> [[A:%.*]])303// BE-NEXT:    ret <4 x float> [[TMP0]]304//305float32x4_t test_vreinterpretq_f32_u64(uint64x2_t a)306{307#ifdef POLYMORPHIC308    return vreinterpretq_f32(a);309#else /* POLYMORPHIC */310    return vreinterpretq_f32_u64(a);311#endif /* POLYMORPHIC */312}313 314// LE-LABEL: @test_vreinterpretq_f32_u8(315// LE-NEXT:  entry:316// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x float>317// LE-NEXT:    ret <4 x float> [[TMP0]]318//319// BE-LABEL: @test_vreinterpretq_f32_u8(320// BE-NEXT:  entry:321// BE-NEXT:    [[TMP0:%.*]] = call <4 x float> @llvm.arm.mve.vreinterpretq.v4f32.v16i8(<16 x i8> [[A:%.*]])322// BE-NEXT:    ret <4 x float> [[TMP0]]323//324float32x4_t test_vreinterpretq_f32_u8(uint8x16_t a)325{326#ifdef POLYMORPHIC327    return vreinterpretq_f32(a);328#else /* POLYMORPHIC */329    return vreinterpretq_f32_u8(a);330#endif /* POLYMORPHIC */331}332 333// BOTH-LABEL: @test_vreinterpretq_s16_f16(334// BOTH-NEXT:  entry:335// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <8 x i16>336// BOTH-NEXT:    ret <8 x i16> [[TMP0]]337//338int16x8_t test_vreinterpretq_s16_f16(float16x8_t a)339{340#ifdef POLYMORPHIC341    return vreinterpretq_s16(a);342#else /* POLYMORPHIC */343    return vreinterpretq_s16_f16(a);344#endif /* POLYMORPHIC */345}346 347// LE-LABEL: @test_vreinterpretq_s16_f32(348// LE-NEXT:  entry:349// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <8 x i16>350// LE-NEXT:    ret <8 x i16> [[TMP0]]351//352// BE-LABEL: @test_vreinterpretq_s16_f32(353// BE-NEXT:  entry:354// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4f32(<4 x float> [[A:%.*]])355// BE-NEXT:    ret <8 x i16> [[TMP0]]356//357int16x8_t test_vreinterpretq_s16_f32(float32x4_t a)358{359#ifdef POLYMORPHIC360    return vreinterpretq_s16(a);361#else /* POLYMORPHIC */362    return vreinterpretq_s16_f32(a);363#endif /* POLYMORPHIC */364}365 366// LE-LABEL: @test_vreinterpretq_s16_s32(367// LE-NEXT:  entry:368// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>369// LE-NEXT:    ret <8 x i16> [[TMP0]]370//371// BE-LABEL: @test_vreinterpretq_s16_s32(372// BE-NEXT:  entry:373// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])374// BE-NEXT:    ret <8 x i16> [[TMP0]]375//376int16x8_t test_vreinterpretq_s16_s32(int32x4_t a)377{378#ifdef POLYMORPHIC379    return vreinterpretq_s16(a);380#else /* POLYMORPHIC */381    return vreinterpretq_s16_s32(a);382#endif /* POLYMORPHIC */383}384 385// LE-LABEL: @test_vreinterpretq_s16_s64(386// LE-NEXT:  entry:387// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>388// LE-NEXT:    ret <8 x i16> [[TMP0]]389//390// BE-LABEL: @test_vreinterpretq_s16_s64(391// BE-NEXT:  entry:392// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])393// BE-NEXT:    ret <8 x i16> [[TMP0]]394//395int16x8_t test_vreinterpretq_s16_s64(int64x2_t a)396{397#ifdef POLYMORPHIC398    return vreinterpretq_s16(a);399#else /* POLYMORPHIC */400    return vreinterpretq_s16_s64(a);401#endif /* POLYMORPHIC */402}403 404// LE-LABEL: @test_vreinterpretq_s16_s8(405// LE-NEXT:  entry:406// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>407// LE-NEXT:    ret <8 x i16> [[TMP0]]408//409// BE-LABEL: @test_vreinterpretq_s16_s8(410// BE-NEXT:  entry:411// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])412// BE-NEXT:    ret <8 x i16> [[TMP0]]413//414int16x8_t test_vreinterpretq_s16_s8(int8x16_t a)415{416#ifdef POLYMORPHIC417    return vreinterpretq_s16(a);418#else /* POLYMORPHIC */419    return vreinterpretq_s16_s8(a);420#endif /* POLYMORPHIC */421}422 423// BOTH-LABEL: @test_vreinterpretq_s16_u16(424// BOTH-NEXT:  entry:425// BOTH-NEXT:    ret <8 x i16> [[A:%.*]]426//427int16x8_t test_vreinterpretq_s16_u16(uint16x8_t a)428{429#ifdef POLYMORPHIC430    return vreinterpretq_s16(a);431#else /* POLYMORPHIC */432    return vreinterpretq_s16_u16(a);433#endif /* POLYMORPHIC */434}435 436// LE-LABEL: @test_vreinterpretq_s16_u32(437// LE-NEXT:  entry:438// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>439// LE-NEXT:    ret <8 x i16> [[TMP0]]440//441// BE-LABEL: @test_vreinterpretq_s16_u32(442// BE-NEXT:  entry:443// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])444// BE-NEXT:    ret <8 x i16> [[TMP0]]445//446int16x8_t test_vreinterpretq_s16_u32(uint32x4_t a)447{448#ifdef POLYMORPHIC449    return vreinterpretq_s16(a);450#else /* POLYMORPHIC */451    return vreinterpretq_s16_u32(a);452#endif /* POLYMORPHIC */453}454 455// LE-LABEL: @test_vreinterpretq_s16_u64(456// LE-NEXT:  entry:457// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>458// LE-NEXT:    ret <8 x i16> [[TMP0]]459//460// BE-LABEL: @test_vreinterpretq_s16_u64(461// BE-NEXT:  entry:462// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])463// BE-NEXT:    ret <8 x i16> [[TMP0]]464//465int16x8_t test_vreinterpretq_s16_u64(uint64x2_t a)466{467#ifdef POLYMORPHIC468    return vreinterpretq_s16(a);469#else /* POLYMORPHIC */470    return vreinterpretq_s16_u64(a);471#endif /* POLYMORPHIC */472}473 474// LE-LABEL: @test_vreinterpretq_s16_u8(475// LE-NEXT:  entry:476// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>477// LE-NEXT:    ret <8 x i16> [[TMP0]]478//479// BE-LABEL: @test_vreinterpretq_s16_u8(480// BE-NEXT:  entry:481// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])482// BE-NEXT:    ret <8 x i16> [[TMP0]]483//484int16x8_t test_vreinterpretq_s16_u8(uint8x16_t a)485{486#ifdef POLYMORPHIC487    return vreinterpretq_s16(a);488#else /* POLYMORPHIC */489    return vreinterpretq_s16_u8(a);490#endif /* POLYMORPHIC */491}492 493// LE-LABEL: @test_vreinterpretq_s32_f16(494// LE-NEXT:  entry:495// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <4 x i32>496// LE-NEXT:    ret <4 x i32> [[TMP0]]497//498// BE-LABEL: @test_vreinterpretq_s32_f16(499// BE-NEXT:  entry:500// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8f16(<8 x half> [[A:%.*]])501// BE-NEXT:    ret <4 x i32> [[TMP0]]502//503int32x4_t test_vreinterpretq_s32_f16(float16x8_t a)504{505#ifdef POLYMORPHIC506    return vreinterpretq_s32(a);507#else /* POLYMORPHIC */508    return vreinterpretq_s32_f16(a);509#endif /* POLYMORPHIC */510}511 512// BOTH-LABEL: @test_vreinterpretq_s32_f32(513// BOTH-NEXT:  entry:514// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <4 x i32>515// BOTH-NEXT:    ret <4 x i32> [[TMP0]]516//517int32x4_t test_vreinterpretq_s32_f32(float32x4_t a)518{519#ifdef POLYMORPHIC520    return vreinterpretq_s32(a);521#else /* POLYMORPHIC */522    return vreinterpretq_s32_f32(a);523#endif /* POLYMORPHIC */524}525 526// LE-LABEL: @test_vreinterpretq_s32_s16(527// LE-NEXT:  entry:528// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>529// LE-NEXT:    ret <4 x i32> [[TMP0]]530//531// BE-LABEL: @test_vreinterpretq_s32_s16(532// BE-NEXT:  entry:533// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])534// BE-NEXT:    ret <4 x i32> [[TMP0]]535//536int32x4_t test_vreinterpretq_s32_s16(int16x8_t a)537{538#ifdef POLYMORPHIC539    return vreinterpretq_s32(a);540#else /* POLYMORPHIC */541    return vreinterpretq_s32_s16(a);542#endif /* POLYMORPHIC */543}544 545// LE-LABEL: @test_vreinterpretq_s32_s64(546// LE-NEXT:  entry:547// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>548// LE-NEXT:    ret <4 x i32> [[TMP0]]549//550// BE-LABEL: @test_vreinterpretq_s32_s64(551// BE-NEXT:  entry:552// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])553// BE-NEXT:    ret <4 x i32> [[TMP0]]554//555int32x4_t test_vreinterpretq_s32_s64(int64x2_t a)556{557#ifdef POLYMORPHIC558    return vreinterpretq_s32(a);559#else /* POLYMORPHIC */560    return vreinterpretq_s32_s64(a);561#endif /* POLYMORPHIC */562}563 564// LE-LABEL: @test_vreinterpretq_s32_s8(565// LE-NEXT:  entry:566// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>567// LE-NEXT:    ret <4 x i32> [[TMP0]]568//569// BE-LABEL: @test_vreinterpretq_s32_s8(570// BE-NEXT:  entry:571// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])572// BE-NEXT:    ret <4 x i32> [[TMP0]]573//574int32x4_t test_vreinterpretq_s32_s8(int8x16_t a)575{576#ifdef POLYMORPHIC577    return vreinterpretq_s32(a);578#else /* POLYMORPHIC */579    return vreinterpretq_s32_s8(a);580#endif /* POLYMORPHIC */581}582 583// LE-LABEL: @test_vreinterpretq_s32_u16(584// LE-NEXT:  entry:585// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>586// LE-NEXT:    ret <4 x i32> [[TMP0]]587//588// BE-LABEL: @test_vreinterpretq_s32_u16(589// BE-NEXT:  entry:590// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])591// BE-NEXT:    ret <4 x i32> [[TMP0]]592//593int32x4_t test_vreinterpretq_s32_u16(uint16x8_t a)594{595#ifdef POLYMORPHIC596    return vreinterpretq_s32(a);597#else /* POLYMORPHIC */598    return vreinterpretq_s32_u16(a);599#endif /* POLYMORPHIC */600}601 602// BOTH-LABEL: @test_vreinterpretq_s32_u32(603// BOTH-NEXT:  entry:604// BOTH-NEXT:    ret <4 x i32> [[A:%.*]]605//606int32x4_t test_vreinterpretq_s32_u32(uint32x4_t a)607{608#ifdef POLYMORPHIC609    return vreinterpretq_s32(a);610#else /* POLYMORPHIC */611    return vreinterpretq_s32_u32(a);612#endif /* POLYMORPHIC */613}614 615// LE-LABEL: @test_vreinterpretq_s32_u64(616// LE-NEXT:  entry:617// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>618// LE-NEXT:    ret <4 x i32> [[TMP0]]619//620// BE-LABEL: @test_vreinterpretq_s32_u64(621// BE-NEXT:  entry:622// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])623// BE-NEXT:    ret <4 x i32> [[TMP0]]624//625int32x4_t test_vreinterpretq_s32_u64(uint64x2_t a)626{627#ifdef POLYMORPHIC628    return vreinterpretq_s32(a);629#else /* POLYMORPHIC */630    return vreinterpretq_s32_u64(a);631#endif /* POLYMORPHIC */632}633 634// LE-LABEL: @test_vreinterpretq_s32_u8(635// LE-NEXT:  entry:636// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>637// LE-NEXT:    ret <4 x i32> [[TMP0]]638//639// BE-LABEL: @test_vreinterpretq_s32_u8(640// BE-NEXT:  entry:641// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])642// BE-NEXT:    ret <4 x i32> [[TMP0]]643//644int32x4_t test_vreinterpretq_s32_u8(uint8x16_t a)645{646#ifdef POLYMORPHIC647    return vreinterpretq_s32(a);648#else /* POLYMORPHIC */649    return vreinterpretq_s32_u8(a);650#endif /* POLYMORPHIC */651}652 653// LE-LABEL: @test_vreinterpretq_s64_f16(654// LE-NEXT:  entry:655// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <2 x i64>656// LE-NEXT:    ret <2 x i64> [[TMP0]]657//658// BE-LABEL: @test_vreinterpretq_s64_f16(659// BE-NEXT:  entry:660// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8f16(<8 x half> [[A:%.*]])661// BE-NEXT:    ret <2 x i64> [[TMP0]]662//663int64x2_t test_vreinterpretq_s64_f16(float16x8_t a)664{665#ifdef POLYMORPHIC666    return vreinterpretq_s64(a);667#else /* POLYMORPHIC */668    return vreinterpretq_s64_f16(a);669#endif /* POLYMORPHIC */670}671 672// LE-LABEL: @test_vreinterpretq_s64_f32(673// LE-NEXT:  entry:674// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <2 x i64>675// LE-NEXT:    ret <2 x i64> [[TMP0]]676//677// BE-LABEL: @test_vreinterpretq_s64_f32(678// BE-NEXT:  entry:679// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4f32(<4 x float> [[A:%.*]])680// BE-NEXT:    ret <2 x i64> [[TMP0]]681//682int64x2_t test_vreinterpretq_s64_f32(float32x4_t a)683{684#ifdef POLYMORPHIC685    return vreinterpretq_s64(a);686#else /* POLYMORPHIC */687    return vreinterpretq_s64_f32(a);688#endif /* POLYMORPHIC */689}690 691// LE-LABEL: @test_vreinterpretq_s64_s16(692// LE-NEXT:  entry:693// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>694// LE-NEXT:    ret <2 x i64> [[TMP0]]695//696// BE-LABEL: @test_vreinterpretq_s64_s16(697// BE-NEXT:  entry:698// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])699// BE-NEXT:    ret <2 x i64> [[TMP0]]700//701int64x2_t test_vreinterpretq_s64_s16(int16x8_t a)702{703#ifdef POLYMORPHIC704    return vreinterpretq_s64(a);705#else /* POLYMORPHIC */706    return vreinterpretq_s64_s16(a);707#endif /* POLYMORPHIC */708}709 710// LE-LABEL: @test_vreinterpretq_s64_s32(711// LE-NEXT:  entry:712// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>713// LE-NEXT:    ret <2 x i64> [[TMP0]]714//715// BE-LABEL: @test_vreinterpretq_s64_s32(716// BE-NEXT:  entry:717// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])718// BE-NEXT:    ret <2 x i64> [[TMP0]]719//720int64x2_t test_vreinterpretq_s64_s32(int32x4_t a)721{722#ifdef POLYMORPHIC723    return vreinterpretq_s64(a);724#else /* POLYMORPHIC */725    return vreinterpretq_s64_s32(a);726#endif /* POLYMORPHIC */727}728 729// LE-LABEL: @test_vreinterpretq_s64_s8(730// LE-NEXT:  entry:731// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>732// LE-NEXT:    ret <2 x i64> [[TMP0]]733//734// BE-LABEL: @test_vreinterpretq_s64_s8(735// BE-NEXT:  entry:736// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])737// BE-NEXT:    ret <2 x i64> [[TMP0]]738//739int64x2_t test_vreinterpretq_s64_s8(int8x16_t a)740{741#ifdef POLYMORPHIC742    return vreinterpretq_s64(a);743#else /* POLYMORPHIC */744    return vreinterpretq_s64_s8(a);745#endif /* POLYMORPHIC */746}747 748// LE-LABEL: @test_vreinterpretq_s64_u16(749// LE-NEXT:  entry:750// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>751// LE-NEXT:    ret <2 x i64> [[TMP0]]752//753// BE-LABEL: @test_vreinterpretq_s64_u16(754// BE-NEXT:  entry:755// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])756// BE-NEXT:    ret <2 x i64> [[TMP0]]757//758int64x2_t test_vreinterpretq_s64_u16(uint16x8_t a)759{760#ifdef POLYMORPHIC761    return vreinterpretq_s64(a);762#else /* POLYMORPHIC */763    return vreinterpretq_s64_u16(a);764#endif /* POLYMORPHIC */765}766 767// LE-LABEL: @test_vreinterpretq_s64_u32(768// LE-NEXT:  entry:769// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>770// LE-NEXT:    ret <2 x i64> [[TMP0]]771//772// BE-LABEL: @test_vreinterpretq_s64_u32(773// BE-NEXT:  entry:774// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])775// BE-NEXT:    ret <2 x i64> [[TMP0]]776//777int64x2_t test_vreinterpretq_s64_u32(uint32x4_t a)778{779#ifdef POLYMORPHIC780    return vreinterpretq_s64(a);781#else /* POLYMORPHIC */782    return vreinterpretq_s64_u32(a);783#endif /* POLYMORPHIC */784}785 786// BOTH-LABEL: @test_vreinterpretq_s64_u64(787// BOTH-NEXT:  entry:788// BOTH-NEXT:    ret <2 x i64> [[A:%.*]]789//790int64x2_t test_vreinterpretq_s64_u64(uint64x2_t a)791{792#ifdef POLYMORPHIC793    return vreinterpretq_s64(a);794#else /* POLYMORPHIC */795    return vreinterpretq_s64_u64(a);796#endif /* POLYMORPHIC */797}798 799// LE-LABEL: @test_vreinterpretq_s64_u8(800// LE-NEXT:  entry:801// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>802// LE-NEXT:    ret <2 x i64> [[TMP0]]803//804// BE-LABEL: @test_vreinterpretq_s64_u8(805// BE-NEXT:  entry:806// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])807// BE-NEXT:    ret <2 x i64> [[TMP0]]808//809int64x2_t test_vreinterpretq_s64_u8(uint8x16_t a)810{811#ifdef POLYMORPHIC812    return vreinterpretq_s64(a);813#else /* POLYMORPHIC */814    return vreinterpretq_s64_u8(a);815#endif /* POLYMORPHIC */816}817 818// LE-LABEL: @test_vreinterpretq_s8_f16(819// LE-NEXT:  entry:820// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <16 x i8>821// LE-NEXT:    ret <16 x i8> [[TMP0]]822//823// BE-LABEL: @test_vreinterpretq_s8_f16(824// BE-NEXT:  entry:825// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8f16(<8 x half> [[A:%.*]])826// BE-NEXT:    ret <16 x i8> [[TMP0]]827//828int8x16_t test_vreinterpretq_s8_f16(float16x8_t a)829{830#ifdef POLYMORPHIC831    return vreinterpretq_s8(a);832#else /* POLYMORPHIC */833    return vreinterpretq_s8_f16(a);834#endif /* POLYMORPHIC */835}836 837// LE-LABEL: @test_vreinterpretq_s8_f32(838// LE-NEXT:  entry:839// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <16 x i8>840// LE-NEXT:    ret <16 x i8> [[TMP0]]841//842// BE-LABEL: @test_vreinterpretq_s8_f32(843// BE-NEXT:  entry:844// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4f32(<4 x float> [[A:%.*]])845// BE-NEXT:    ret <16 x i8> [[TMP0]]846//847int8x16_t test_vreinterpretq_s8_f32(float32x4_t a)848{849#ifdef POLYMORPHIC850    return vreinterpretq_s8(a);851#else /* POLYMORPHIC */852    return vreinterpretq_s8_f32(a);853#endif /* POLYMORPHIC */854}855 856// LE-LABEL: @test_vreinterpretq_s8_s16(857// LE-NEXT:  entry:858// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>859// LE-NEXT:    ret <16 x i8> [[TMP0]]860//861// BE-LABEL: @test_vreinterpretq_s8_s16(862// BE-NEXT:  entry:863// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])864// BE-NEXT:    ret <16 x i8> [[TMP0]]865//866int8x16_t test_vreinterpretq_s8_s16(int16x8_t a)867{868#ifdef POLYMORPHIC869    return vreinterpretq_s8(a);870#else /* POLYMORPHIC */871    return vreinterpretq_s8_s16(a);872#endif /* POLYMORPHIC */873}874 875// LE-LABEL: @test_vreinterpretq_s8_s32(876// LE-NEXT:  entry:877// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>878// LE-NEXT:    ret <16 x i8> [[TMP0]]879//880// BE-LABEL: @test_vreinterpretq_s8_s32(881// BE-NEXT:  entry:882// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])883// BE-NEXT:    ret <16 x i8> [[TMP0]]884//885int8x16_t test_vreinterpretq_s8_s32(int32x4_t a)886{887#ifdef POLYMORPHIC888    return vreinterpretq_s8(a);889#else /* POLYMORPHIC */890    return vreinterpretq_s8_s32(a);891#endif /* POLYMORPHIC */892}893 894// LE-LABEL: @test_vreinterpretq_s8_s64(895// LE-NEXT:  entry:896// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>897// LE-NEXT:    ret <16 x i8> [[TMP0]]898//899// BE-LABEL: @test_vreinterpretq_s8_s64(900// BE-NEXT:  entry:901// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])902// BE-NEXT:    ret <16 x i8> [[TMP0]]903//904int8x16_t test_vreinterpretq_s8_s64(int64x2_t a)905{906#ifdef POLYMORPHIC907    return vreinterpretq_s8(a);908#else /* POLYMORPHIC */909    return vreinterpretq_s8_s64(a);910#endif /* POLYMORPHIC */911}912 913// LE-LABEL: @test_vreinterpretq_s8_u16(914// LE-NEXT:  entry:915// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>916// LE-NEXT:    ret <16 x i8> [[TMP0]]917//918// BE-LABEL: @test_vreinterpretq_s8_u16(919// BE-NEXT:  entry:920// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])921// BE-NEXT:    ret <16 x i8> [[TMP0]]922//923int8x16_t test_vreinterpretq_s8_u16(uint16x8_t a)924{925#ifdef POLYMORPHIC926    return vreinterpretq_s8(a);927#else /* POLYMORPHIC */928    return vreinterpretq_s8_u16(a);929#endif /* POLYMORPHIC */930}931 932// LE-LABEL: @test_vreinterpretq_s8_u32(933// LE-NEXT:  entry:934// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>935// LE-NEXT:    ret <16 x i8> [[TMP0]]936//937// BE-LABEL: @test_vreinterpretq_s8_u32(938// BE-NEXT:  entry:939// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])940// BE-NEXT:    ret <16 x i8> [[TMP0]]941//942int8x16_t test_vreinterpretq_s8_u32(uint32x4_t a)943{944#ifdef POLYMORPHIC945    return vreinterpretq_s8(a);946#else /* POLYMORPHIC */947    return vreinterpretq_s8_u32(a);948#endif /* POLYMORPHIC */949}950 951// LE-LABEL: @test_vreinterpretq_s8_u64(952// LE-NEXT:  entry:953// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>954// LE-NEXT:    ret <16 x i8> [[TMP0]]955//956// BE-LABEL: @test_vreinterpretq_s8_u64(957// BE-NEXT:  entry:958// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])959// BE-NEXT:    ret <16 x i8> [[TMP0]]960//961int8x16_t test_vreinterpretq_s8_u64(uint64x2_t a)962{963#ifdef POLYMORPHIC964    return vreinterpretq_s8(a);965#else /* POLYMORPHIC */966    return vreinterpretq_s8_u64(a);967#endif /* POLYMORPHIC */968}969 970// BOTH-LABEL: @test_vreinterpretq_s8_u8(971// BOTH-NEXT:  entry:972// BOTH-NEXT:    ret <16 x i8> [[A:%.*]]973//974int8x16_t test_vreinterpretq_s8_u8(uint8x16_t a)975{976#ifdef POLYMORPHIC977    return vreinterpretq_s8(a);978#else /* POLYMORPHIC */979    return vreinterpretq_s8_u8(a);980#endif /* POLYMORPHIC */981}982 983// BOTH-LABEL: @test_vreinterpretq_u16_f16(984// BOTH-NEXT:  entry:985// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <8 x i16>986// BOTH-NEXT:    ret <8 x i16> [[TMP0]]987//988uint16x8_t test_vreinterpretq_u16_f16(float16x8_t a)989{990#ifdef POLYMORPHIC991    return vreinterpretq_u16(a);992#else /* POLYMORPHIC */993    return vreinterpretq_u16_f16(a);994#endif /* POLYMORPHIC */995}996 997// LE-LABEL: @test_vreinterpretq_u16_f32(998// LE-NEXT:  entry:999// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <8 x i16>1000// LE-NEXT:    ret <8 x i16> [[TMP0]]1001//1002// BE-LABEL: @test_vreinterpretq_u16_f32(1003// BE-NEXT:  entry:1004// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4f32(<4 x float> [[A:%.*]])1005// BE-NEXT:    ret <8 x i16> [[TMP0]]1006//1007uint16x8_t test_vreinterpretq_u16_f32(float32x4_t a)1008{1009#ifdef POLYMORPHIC1010    return vreinterpretq_u16(a);1011#else /* POLYMORPHIC */1012    return vreinterpretq_u16_f32(a);1013#endif /* POLYMORPHIC */1014}1015 1016// BOTH-LABEL: @test_vreinterpretq_u16_s16(1017// BOTH-NEXT:  entry:1018// BOTH-NEXT:    ret <8 x i16> [[A:%.*]]1019//1020uint16x8_t test_vreinterpretq_u16_s16(int16x8_t a)1021{1022#ifdef POLYMORPHIC1023    return vreinterpretq_u16(a);1024#else /* POLYMORPHIC */1025    return vreinterpretq_u16_s16(a);1026#endif /* POLYMORPHIC */1027}1028 1029// LE-LABEL: @test_vreinterpretq_u16_s32(1030// LE-NEXT:  entry:1031// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>1032// LE-NEXT:    ret <8 x i16> [[TMP0]]1033//1034// BE-LABEL: @test_vreinterpretq_u16_s32(1035// BE-NEXT:  entry:1036// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])1037// BE-NEXT:    ret <8 x i16> [[TMP0]]1038//1039uint16x8_t test_vreinterpretq_u16_s32(int32x4_t a)1040{1041#ifdef POLYMORPHIC1042    return vreinterpretq_u16(a);1043#else /* POLYMORPHIC */1044    return vreinterpretq_u16_s32(a);1045#endif /* POLYMORPHIC */1046}1047 1048// LE-LABEL: @test_vreinterpretq_u16_s64(1049// LE-NEXT:  entry:1050// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>1051// LE-NEXT:    ret <8 x i16> [[TMP0]]1052//1053// BE-LABEL: @test_vreinterpretq_u16_s64(1054// BE-NEXT:  entry:1055// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])1056// BE-NEXT:    ret <8 x i16> [[TMP0]]1057//1058uint16x8_t test_vreinterpretq_u16_s64(int64x2_t a)1059{1060#ifdef POLYMORPHIC1061    return vreinterpretq_u16(a);1062#else /* POLYMORPHIC */1063    return vreinterpretq_u16_s64(a);1064#endif /* POLYMORPHIC */1065}1066 1067// LE-LABEL: @test_vreinterpretq_u16_s8(1068// LE-NEXT:  entry:1069// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>1070// LE-NEXT:    ret <8 x i16> [[TMP0]]1071//1072// BE-LABEL: @test_vreinterpretq_u16_s8(1073// BE-NEXT:  entry:1074// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])1075// BE-NEXT:    ret <8 x i16> [[TMP0]]1076//1077uint16x8_t test_vreinterpretq_u16_s8(int8x16_t a)1078{1079#ifdef POLYMORPHIC1080    return vreinterpretq_u16(a);1081#else /* POLYMORPHIC */1082    return vreinterpretq_u16_s8(a);1083#endif /* POLYMORPHIC */1084}1085 1086// LE-LABEL: @test_vreinterpretq_u16_u32(1087// LE-NEXT:  entry:1088// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <8 x i16>1089// LE-NEXT:    ret <8 x i16> [[TMP0]]1090//1091// BE-LABEL: @test_vreinterpretq_u16_u32(1092// BE-NEXT:  entry:1093// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v4i32(<4 x i32> [[A:%.*]])1094// BE-NEXT:    ret <8 x i16> [[TMP0]]1095//1096uint16x8_t test_vreinterpretq_u16_u32(uint32x4_t a)1097{1098#ifdef POLYMORPHIC1099    return vreinterpretq_u16(a);1100#else /* POLYMORPHIC */1101    return vreinterpretq_u16_u32(a);1102#endif /* POLYMORPHIC */1103}1104 1105// LE-LABEL: @test_vreinterpretq_u16_u64(1106// LE-NEXT:  entry:1107// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <8 x i16>1108// LE-NEXT:    ret <8 x i16> [[TMP0]]1109//1110// BE-LABEL: @test_vreinterpretq_u16_u64(1111// BE-NEXT:  entry:1112// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v2i64(<2 x i64> [[A:%.*]])1113// BE-NEXT:    ret <8 x i16> [[TMP0]]1114//1115uint16x8_t test_vreinterpretq_u16_u64(uint64x2_t a)1116{1117#ifdef POLYMORPHIC1118    return vreinterpretq_u16(a);1119#else /* POLYMORPHIC */1120    return vreinterpretq_u16_u64(a);1121#endif /* POLYMORPHIC */1122}1123 1124// LE-LABEL: @test_vreinterpretq_u16_u8(1125// LE-NEXT:  entry:1126// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <8 x i16>1127// LE-NEXT:    ret <8 x i16> [[TMP0]]1128//1129// BE-LABEL: @test_vreinterpretq_u16_u8(1130// BE-NEXT:  entry:1131// BE-NEXT:    [[TMP0:%.*]] = call <8 x i16> @llvm.arm.mve.vreinterpretq.v8i16.v16i8(<16 x i8> [[A:%.*]])1132// BE-NEXT:    ret <8 x i16> [[TMP0]]1133//1134uint16x8_t test_vreinterpretq_u16_u8(uint8x16_t a)1135{1136#ifdef POLYMORPHIC1137    return vreinterpretq_u16(a);1138#else /* POLYMORPHIC */1139    return vreinterpretq_u16_u8(a);1140#endif /* POLYMORPHIC */1141}1142 1143// LE-LABEL: @test_vreinterpretq_u32_f16(1144// LE-NEXT:  entry:1145// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <4 x i32>1146// LE-NEXT:    ret <4 x i32> [[TMP0]]1147//1148// BE-LABEL: @test_vreinterpretq_u32_f16(1149// BE-NEXT:  entry:1150// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8f16(<8 x half> [[A:%.*]])1151// BE-NEXT:    ret <4 x i32> [[TMP0]]1152//1153uint32x4_t test_vreinterpretq_u32_f16(float16x8_t a)1154{1155#ifdef POLYMORPHIC1156    return vreinterpretq_u32(a);1157#else /* POLYMORPHIC */1158    return vreinterpretq_u32_f16(a);1159#endif /* POLYMORPHIC */1160}1161 1162// BOTH-LABEL: @test_vreinterpretq_u32_f32(1163// BOTH-NEXT:  entry:1164// BOTH-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <4 x i32>1165// BOTH-NEXT:    ret <4 x i32> [[TMP0]]1166//1167uint32x4_t test_vreinterpretq_u32_f32(float32x4_t a)1168{1169#ifdef POLYMORPHIC1170    return vreinterpretq_u32(a);1171#else /* POLYMORPHIC */1172    return vreinterpretq_u32_f32(a);1173#endif /* POLYMORPHIC */1174}1175 1176// LE-LABEL: @test_vreinterpretq_u32_s16(1177// LE-NEXT:  entry:1178// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>1179// LE-NEXT:    ret <4 x i32> [[TMP0]]1180//1181// BE-LABEL: @test_vreinterpretq_u32_s16(1182// BE-NEXT:  entry:1183// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])1184// BE-NEXT:    ret <4 x i32> [[TMP0]]1185//1186uint32x4_t test_vreinterpretq_u32_s16(int16x8_t a)1187{1188#ifdef POLYMORPHIC1189    return vreinterpretq_u32(a);1190#else /* POLYMORPHIC */1191    return vreinterpretq_u32_s16(a);1192#endif /* POLYMORPHIC */1193}1194 1195// BOTH-LABEL: @test_vreinterpretq_u32_s32(1196// BOTH-NEXT:  entry:1197// BOTH-NEXT:    ret <4 x i32> [[A:%.*]]1198//1199uint32x4_t test_vreinterpretq_u32_s32(int32x4_t a)1200{1201#ifdef POLYMORPHIC1202    return vreinterpretq_u32(a);1203#else /* POLYMORPHIC */1204    return vreinterpretq_u32_s32(a);1205#endif /* POLYMORPHIC */1206}1207 1208// LE-LABEL: @test_vreinterpretq_u32_s64(1209// LE-NEXT:  entry:1210// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>1211// LE-NEXT:    ret <4 x i32> [[TMP0]]1212//1213// BE-LABEL: @test_vreinterpretq_u32_s64(1214// BE-NEXT:  entry:1215// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])1216// BE-NEXT:    ret <4 x i32> [[TMP0]]1217//1218uint32x4_t test_vreinterpretq_u32_s64(int64x2_t a)1219{1220#ifdef POLYMORPHIC1221    return vreinterpretq_u32(a);1222#else /* POLYMORPHIC */1223    return vreinterpretq_u32_s64(a);1224#endif /* POLYMORPHIC */1225}1226 1227// LE-LABEL: @test_vreinterpretq_u32_s8(1228// LE-NEXT:  entry:1229// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>1230// LE-NEXT:    ret <4 x i32> [[TMP0]]1231//1232// BE-LABEL: @test_vreinterpretq_u32_s8(1233// BE-NEXT:  entry:1234// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])1235// BE-NEXT:    ret <4 x i32> [[TMP0]]1236//1237uint32x4_t test_vreinterpretq_u32_s8(int8x16_t a)1238{1239#ifdef POLYMORPHIC1240    return vreinterpretq_u32(a);1241#else /* POLYMORPHIC */1242    return vreinterpretq_u32_s8(a);1243#endif /* POLYMORPHIC */1244}1245 1246// LE-LABEL: @test_vreinterpretq_u32_u16(1247// LE-NEXT:  entry:1248// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <4 x i32>1249// LE-NEXT:    ret <4 x i32> [[TMP0]]1250//1251// BE-LABEL: @test_vreinterpretq_u32_u16(1252// BE-NEXT:  entry:1253// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v8i16(<8 x i16> [[A:%.*]])1254// BE-NEXT:    ret <4 x i32> [[TMP0]]1255//1256uint32x4_t test_vreinterpretq_u32_u16(uint16x8_t a)1257{1258#ifdef POLYMORPHIC1259    return vreinterpretq_u32(a);1260#else /* POLYMORPHIC */1261    return vreinterpretq_u32_u16(a);1262#endif /* POLYMORPHIC */1263}1264 1265// LE-LABEL: @test_vreinterpretq_u32_u64(1266// LE-NEXT:  entry:1267// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <4 x i32>1268// LE-NEXT:    ret <4 x i32> [[TMP0]]1269//1270// BE-LABEL: @test_vreinterpretq_u32_u64(1271// BE-NEXT:  entry:1272// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v2i64(<2 x i64> [[A:%.*]])1273// BE-NEXT:    ret <4 x i32> [[TMP0]]1274//1275uint32x4_t test_vreinterpretq_u32_u64(uint64x2_t a)1276{1277#ifdef POLYMORPHIC1278    return vreinterpretq_u32(a);1279#else /* POLYMORPHIC */1280    return vreinterpretq_u32_u64(a);1281#endif /* POLYMORPHIC */1282}1283 1284// LE-LABEL: @test_vreinterpretq_u32_u8(1285// LE-NEXT:  entry:1286// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <4 x i32>1287// LE-NEXT:    ret <4 x i32> [[TMP0]]1288//1289// BE-LABEL: @test_vreinterpretq_u32_u8(1290// BE-NEXT:  entry:1291// BE-NEXT:    [[TMP0:%.*]] = call <4 x i32> @llvm.arm.mve.vreinterpretq.v4i32.v16i8(<16 x i8> [[A:%.*]])1292// BE-NEXT:    ret <4 x i32> [[TMP0]]1293//1294uint32x4_t test_vreinterpretq_u32_u8(uint8x16_t a)1295{1296#ifdef POLYMORPHIC1297    return vreinterpretq_u32(a);1298#else /* POLYMORPHIC */1299    return vreinterpretq_u32_u8(a);1300#endif /* POLYMORPHIC */1301}1302 1303// LE-LABEL: @test_vreinterpretq_u64_f16(1304// LE-NEXT:  entry:1305// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <2 x i64>1306// LE-NEXT:    ret <2 x i64> [[TMP0]]1307//1308// BE-LABEL: @test_vreinterpretq_u64_f16(1309// BE-NEXT:  entry:1310// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8f16(<8 x half> [[A:%.*]])1311// BE-NEXT:    ret <2 x i64> [[TMP0]]1312//1313uint64x2_t test_vreinterpretq_u64_f16(float16x8_t a)1314{1315#ifdef POLYMORPHIC1316    return vreinterpretq_u64(a);1317#else /* POLYMORPHIC */1318    return vreinterpretq_u64_f16(a);1319#endif /* POLYMORPHIC */1320}1321 1322// LE-LABEL: @test_vreinterpretq_u64_f32(1323// LE-NEXT:  entry:1324// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <2 x i64>1325// LE-NEXT:    ret <2 x i64> [[TMP0]]1326//1327// BE-LABEL: @test_vreinterpretq_u64_f32(1328// BE-NEXT:  entry:1329// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4f32(<4 x float> [[A:%.*]])1330// BE-NEXT:    ret <2 x i64> [[TMP0]]1331//1332uint64x2_t test_vreinterpretq_u64_f32(float32x4_t a)1333{1334#ifdef POLYMORPHIC1335    return vreinterpretq_u64(a);1336#else /* POLYMORPHIC */1337    return vreinterpretq_u64_f32(a);1338#endif /* POLYMORPHIC */1339}1340 1341// LE-LABEL: @test_vreinterpretq_u64_s16(1342// LE-NEXT:  entry:1343// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>1344// LE-NEXT:    ret <2 x i64> [[TMP0]]1345//1346// BE-LABEL: @test_vreinterpretq_u64_s16(1347// BE-NEXT:  entry:1348// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])1349// BE-NEXT:    ret <2 x i64> [[TMP0]]1350//1351uint64x2_t test_vreinterpretq_u64_s16(int16x8_t a)1352{1353#ifdef POLYMORPHIC1354    return vreinterpretq_u64(a);1355#else /* POLYMORPHIC */1356    return vreinterpretq_u64_s16(a);1357#endif /* POLYMORPHIC */1358}1359 1360// LE-LABEL: @test_vreinterpretq_u64_s32(1361// LE-NEXT:  entry:1362// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>1363// LE-NEXT:    ret <2 x i64> [[TMP0]]1364//1365// BE-LABEL: @test_vreinterpretq_u64_s32(1366// BE-NEXT:  entry:1367// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])1368// BE-NEXT:    ret <2 x i64> [[TMP0]]1369//1370uint64x2_t test_vreinterpretq_u64_s32(int32x4_t a)1371{1372#ifdef POLYMORPHIC1373    return vreinterpretq_u64(a);1374#else /* POLYMORPHIC */1375    return vreinterpretq_u64_s32(a);1376#endif /* POLYMORPHIC */1377}1378 1379// BOTH-LABEL: @test_vreinterpretq_u64_s64(1380// BOTH-NEXT:  entry:1381// BOTH-NEXT:    ret <2 x i64> [[A:%.*]]1382//1383uint64x2_t test_vreinterpretq_u64_s64(int64x2_t a)1384{1385#ifdef POLYMORPHIC1386    return vreinterpretq_u64(a);1387#else /* POLYMORPHIC */1388    return vreinterpretq_u64_s64(a);1389#endif /* POLYMORPHIC */1390}1391 1392// LE-LABEL: @test_vreinterpretq_u64_s8(1393// LE-NEXT:  entry:1394// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>1395// LE-NEXT:    ret <2 x i64> [[TMP0]]1396//1397// BE-LABEL: @test_vreinterpretq_u64_s8(1398// BE-NEXT:  entry:1399// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])1400// BE-NEXT:    ret <2 x i64> [[TMP0]]1401//1402uint64x2_t test_vreinterpretq_u64_s8(int8x16_t a)1403{1404#ifdef POLYMORPHIC1405    return vreinterpretq_u64(a);1406#else /* POLYMORPHIC */1407    return vreinterpretq_u64_s8(a);1408#endif /* POLYMORPHIC */1409}1410 1411// LE-LABEL: @test_vreinterpretq_u64_u16(1412// LE-NEXT:  entry:1413// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <2 x i64>1414// LE-NEXT:    ret <2 x i64> [[TMP0]]1415//1416// BE-LABEL: @test_vreinterpretq_u64_u16(1417// BE-NEXT:  entry:1418// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v8i16(<8 x i16> [[A:%.*]])1419// BE-NEXT:    ret <2 x i64> [[TMP0]]1420//1421uint64x2_t test_vreinterpretq_u64_u16(uint16x8_t a)1422{1423#ifdef POLYMORPHIC1424    return vreinterpretq_u64(a);1425#else /* POLYMORPHIC */1426    return vreinterpretq_u64_u16(a);1427#endif /* POLYMORPHIC */1428}1429 1430// LE-LABEL: @test_vreinterpretq_u64_u32(1431// LE-NEXT:  entry:1432// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <2 x i64>1433// LE-NEXT:    ret <2 x i64> [[TMP0]]1434//1435// BE-LABEL: @test_vreinterpretq_u64_u32(1436// BE-NEXT:  entry:1437// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v4i32(<4 x i32> [[A:%.*]])1438// BE-NEXT:    ret <2 x i64> [[TMP0]]1439//1440uint64x2_t test_vreinterpretq_u64_u32(uint32x4_t a)1441{1442#ifdef POLYMORPHIC1443    return vreinterpretq_u64(a);1444#else /* POLYMORPHIC */1445    return vreinterpretq_u64_u32(a);1446#endif /* POLYMORPHIC */1447}1448 1449// LE-LABEL: @test_vreinterpretq_u64_u8(1450// LE-NEXT:  entry:1451// LE-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to <2 x i64>1452// LE-NEXT:    ret <2 x i64> [[TMP0]]1453//1454// BE-LABEL: @test_vreinterpretq_u64_u8(1455// BE-NEXT:  entry:1456// BE-NEXT:    [[TMP0:%.*]] = call <2 x i64> @llvm.arm.mve.vreinterpretq.v2i64.v16i8(<16 x i8> [[A:%.*]])1457// BE-NEXT:    ret <2 x i64> [[TMP0]]1458//1459uint64x2_t test_vreinterpretq_u64_u8(uint8x16_t a)1460{1461#ifdef POLYMORPHIC1462    return vreinterpretq_u64(a);1463#else /* POLYMORPHIC */1464    return vreinterpretq_u64_u8(a);1465#endif /* POLYMORPHIC */1466}1467 1468// LE-LABEL: @test_vreinterpretq_u8_f16(1469// LE-NEXT:  entry:1470// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[A:%.*]] to <16 x i8>1471// LE-NEXT:    ret <16 x i8> [[TMP0]]1472//1473// BE-LABEL: @test_vreinterpretq_u8_f16(1474// BE-NEXT:  entry:1475// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8f16(<8 x half> [[A:%.*]])1476// BE-NEXT:    ret <16 x i8> [[TMP0]]1477//1478uint8x16_t test_vreinterpretq_u8_f16(float16x8_t a)1479{1480#ifdef POLYMORPHIC1481    return vreinterpretq_u8(a);1482#else /* POLYMORPHIC */1483    return vreinterpretq_u8_f16(a);1484#endif /* POLYMORPHIC */1485}1486 1487// LE-LABEL: @test_vreinterpretq_u8_f32(1488// LE-NEXT:  entry:1489// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to <16 x i8>1490// LE-NEXT:    ret <16 x i8> [[TMP0]]1491//1492// BE-LABEL: @test_vreinterpretq_u8_f32(1493// BE-NEXT:  entry:1494// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4f32(<4 x float> [[A:%.*]])1495// BE-NEXT:    ret <16 x i8> [[TMP0]]1496//1497uint8x16_t test_vreinterpretq_u8_f32(float32x4_t a)1498{1499#ifdef POLYMORPHIC1500    return vreinterpretq_u8(a);1501#else /* POLYMORPHIC */1502    return vreinterpretq_u8_f32(a);1503#endif /* POLYMORPHIC */1504}1505 1506// LE-LABEL: @test_vreinterpretq_u8_s16(1507// LE-NEXT:  entry:1508// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>1509// LE-NEXT:    ret <16 x i8> [[TMP0]]1510//1511// BE-LABEL: @test_vreinterpretq_u8_s16(1512// BE-NEXT:  entry:1513// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])1514// BE-NEXT:    ret <16 x i8> [[TMP0]]1515//1516uint8x16_t test_vreinterpretq_u8_s16(int16x8_t a)1517{1518#ifdef POLYMORPHIC1519    return vreinterpretq_u8(a);1520#else /* POLYMORPHIC */1521    return vreinterpretq_u8_s16(a);1522#endif /* POLYMORPHIC */1523}1524 1525// LE-LABEL: @test_vreinterpretq_u8_s32(1526// LE-NEXT:  entry:1527// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>1528// LE-NEXT:    ret <16 x i8> [[TMP0]]1529//1530// BE-LABEL: @test_vreinterpretq_u8_s32(1531// BE-NEXT:  entry:1532// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])1533// BE-NEXT:    ret <16 x i8> [[TMP0]]1534//1535uint8x16_t test_vreinterpretq_u8_s32(int32x4_t a)1536{1537#ifdef POLYMORPHIC1538    return vreinterpretq_u8(a);1539#else /* POLYMORPHIC */1540    return vreinterpretq_u8_s32(a);1541#endif /* POLYMORPHIC */1542}1543 1544// LE-LABEL: @test_vreinterpretq_u8_s64(1545// LE-NEXT:  entry:1546// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>1547// LE-NEXT:    ret <16 x i8> [[TMP0]]1548//1549// BE-LABEL: @test_vreinterpretq_u8_s64(1550// BE-NEXT:  entry:1551// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])1552// BE-NEXT:    ret <16 x i8> [[TMP0]]1553//1554uint8x16_t test_vreinterpretq_u8_s64(int64x2_t a)1555{1556#ifdef POLYMORPHIC1557    return vreinterpretq_u8(a);1558#else /* POLYMORPHIC */1559    return vreinterpretq_u8_s64(a);1560#endif /* POLYMORPHIC */1561}1562 1563// BOTH-LABEL: @test_vreinterpretq_u8_s8(1564// BOTH-NEXT:  entry:1565// BOTH-NEXT:    ret <16 x i8> [[A:%.*]]1566//1567uint8x16_t test_vreinterpretq_u8_s8(int8x16_t a)1568{1569#ifdef POLYMORPHIC1570    return vreinterpretq_u8(a);1571#else /* POLYMORPHIC */1572    return vreinterpretq_u8_s8(a);1573#endif /* POLYMORPHIC */1574}1575 1576// LE-LABEL: @test_vreinterpretq_u8_u16(1577// LE-NEXT:  entry:1578// LE-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to <16 x i8>1579// LE-NEXT:    ret <16 x i8> [[TMP0]]1580//1581// BE-LABEL: @test_vreinterpretq_u8_u16(1582// BE-NEXT:  entry:1583// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v8i16(<8 x i16> [[A:%.*]])1584// BE-NEXT:    ret <16 x i8> [[TMP0]]1585//1586uint8x16_t test_vreinterpretq_u8_u16(uint16x8_t a)1587{1588#ifdef POLYMORPHIC1589    return vreinterpretq_u8(a);1590#else /* POLYMORPHIC */1591    return vreinterpretq_u8_u16(a);1592#endif /* POLYMORPHIC */1593}1594 1595// LE-LABEL: @test_vreinterpretq_u8_u32(1596// LE-NEXT:  entry:1597// LE-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to <16 x i8>1598// LE-NEXT:    ret <16 x i8> [[TMP0]]1599//1600// BE-LABEL: @test_vreinterpretq_u8_u32(1601// BE-NEXT:  entry:1602// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v4i32(<4 x i32> [[A:%.*]])1603// BE-NEXT:    ret <16 x i8> [[TMP0]]1604//1605uint8x16_t test_vreinterpretq_u8_u32(uint32x4_t a)1606{1607#ifdef POLYMORPHIC1608    return vreinterpretq_u8(a);1609#else /* POLYMORPHIC */1610    return vreinterpretq_u8_u32(a);1611#endif /* POLYMORPHIC */1612}1613 1614// LE-LABEL: @test_vreinterpretq_u8_u64(1615// LE-NEXT:  entry:1616// LE-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to <16 x i8>1617// LE-NEXT:    ret <16 x i8> [[TMP0]]1618//1619// BE-LABEL: @test_vreinterpretq_u8_u64(1620// BE-NEXT:  entry:1621// BE-NEXT:    [[TMP0:%.*]] = call <16 x i8> @llvm.arm.mve.vreinterpretq.v16i8.v2i64(<2 x i64> [[A:%.*]])1622// BE-NEXT:    ret <16 x i8> [[TMP0]]1623//1624uint8x16_t test_vreinterpretq_u8_u64(uint64x2_t a)1625{1626#ifdef POLYMORPHIC1627    return vreinterpretq_u8(a);1628#else /* POLYMORPHIC */1629    return vreinterpretq_u8_u64(a);1630#endif /* POLYMORPHIC */1631}1632