brintos

brintos / llvm-project-archived public Read only

0
0
Text · 40.0 KiB · adf5fce Raw
890 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 52#include <arm_neon.h>3// RUN: %clang_cc1        -triple aarch64-none-linux-gnu -target-feature +neon -target-feature +bf16 -target-feature +fp8 -target-feature +fp8fma -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,sroa | FileCheck %s4// RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +neon -target-feature +bf16 -target-feature +fp8 -target-feature +fp8fma -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,sroa | FileCheck %s -check-prefix CHECK-CXX5 6// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +neon -target-feature +bf16 -target-feature +fp8 -target-feature +fp8fma -disable-O0-optnone -Werror -Wall -S -o /dev/null %s7 8// REQUIRES: aarch64-registered-target9 10// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_p8_mf8(11// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0:[0-9]+]] {12// CHECK-NEXT:  [[ENTRY:.*:]]13// CHECK-NEXT:    ret <8 x i8> [[V]]14//15// CHECK-CXX-LABEL: define dso_local noundef <8 x i8> @_Z24test_vreinterpret_p8_mf813__Mfloat8x8_t(16// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0:[0-9]+]] {17// CHECK-CXX-NEXT:  [[ENTRY:.*:]]18// CHECK-CXX-NEXT:    ret <8 x i8> [[V]]19//20poly8x8_t test_vreinterpret_p8_mf8(mfloat8x8_t v) {21  return vreinterpret_p8_mf8(v);22}23// CHECK-LABEL: define dso_local <1 x i64> @test_vreinterpret_p64_mf8(24// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {25// CHECK-NEXT:  [[ENTRY:.*:]]26// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i6427// CHECK-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 028// CHECK-NEXT:    ret <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]]29//30// CHECK-CXX-LABEL: define dso_local noundef <1 x i64> @_Z25test_vreinterpret_p64_mf813__Mfloat8x8_t(31// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {32// CHECK-CXX-NEXT:  [[ENTRY:.*:]]33// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i6434// CHECK-CXX-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 035// CHECK-CXX-NEXT:    ret <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]]36//37poly64x1_t test_vreinterpret_p64_mf8(mfloat8x8_t v) {38  return vreinterpret_p64_mf8(v);39}40// CHECK-LABEL: define dso_local <4 x i16> @test_vreinterpret_p16_mf8(41// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {42// CHECK-NEXT:  [[ENTRY:.*:]]43// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>44// CHECK-NEXT:    ret <4 x i16> [[TMP0]]45//46// CHECK-CXX-LABEL: define dso_local noundef <4 x i16> @_Z25test_vreinterpret_p16_mf813__Mfloat8x8_t(47// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {48// CHECK-CXX-NEXT:  [[ENTRY:.*:]]49// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>50// CHECK-CXX-NEXT:    ret <4 x i16> [[TMP0]]51//52poly16x4_t test_vreinterpret_p16_mf8(mfloat8x8_t v) {53  return vreinterpret_p16_mf8(v);54}55// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_p8_mf8(56// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {57// CHECK-NEXT:  [[ENTRY:.*:]]58// CHECK-NEXT:    ret <16 x i8> [[V]]59//60// CHECK-CXX-LABEL: define dso_local noundef <16 x i8> @_Z25test_vreinterpretq_p8_mf814__Mfloat8x16_t(61// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {62// CHECK-CXX-NEXT:  [[ENTRY:.*:]]63// CHECK-CXX-NEXT:    ret <16 x i8> [[V]]64//65poly8x16_t test_vreinterpretq_p8_mf8(mfloat8x16_t v) {66  return vreinterpretq_p8_mf8(v);67}68// CHECK-LABEL: define dso_local i128 @test_vreinterpretq_p128_mf8(69// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {70// CHECK-NEXT:  [[ENTRY:.*:]]71// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to i12872// CHECK-NEXT:    ret i128 [[TMP0]]73//74// CHECK-CXX-LABEL: define dso_local noundef i128 @_Z27test_vreinterpretq_p128_mf814__Mfloat8x16_t(75// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {76// CHECK-CXX-NEXT:  [[ENTRY:.*:]]77// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to i12878// CHECK-CXX-NEXT:    ret i128 [[TMP0]]79//80poly128_t test_vreinterpretq_p128_mf8(mfloat8x16_t v) {81  return vreinterpretq_p128_mf8(v);82}83// CHECK-LABEL: define dso_local <2 x i64> @test_vreinterpretq_p64_mf8(84// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {85// CHECK-NEXT:  [[ENTRY:.*:]]86// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>87// CHECK-NEXT:    ret <2 x i64> [[TMP0]]88//89// CHECK-CXX-LABEL: define dso_local noundef <2 x i64> @_Z26test_vreinterpretq_p64_mf814__Mfloat8x16_t(90// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {91// CHECK-CXX-NEXT:  [[ENTRY:.*:]]92// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>93// CHECK-CXX-NEXT:    ret <2 x i64> [[TMP0]]94//95poly64x2_t test_vreinterpretq_p64_mf8(mfloat8x16_t v) {96  return vreinterpretq_p64_mf8(v);97}98// CHECK-LABEL: define dso_local <8 x i16> @test_vreinterpretq_p16_mf8(99// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {100// CHECK-NEXT:  [[ENTRY:.*:]]101// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>102// CHECK-NEXT:    ret <8 x i16> [[TMP0]]103//104// CHECK-CXX-LABEL: define dso_local noundef <8 x i16> @_Z26test_vreinterpretq_p16_mf814__Mfloat8x16_t(105// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {106// CHECK-CXX-NEXT:  [[ENTRY:.*:]]107// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>108// CHECK-CXX-NEXT:    ret <8 x i16> [[TMP0]]109//110poly16x8_t test_vreinterpretq_p16_mf8(mfloat8x16_t v) {111  return vreinterpretq_p16_mf8(v);112}113// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_u8_mf8(114// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {115// CHECK-NEXT:  [[ENTRY:.*:]]116// CHECK-NEXT:    ret <16 x i8> [[V]]117//118// CHECK-CXX-LABEL: define dso_local noundef <16 x i8> @_Z25test_vreinterpretq_u8_mf814__Mfloat8x16_t(119// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {120// CHECK-CXX-NEXT:  [[ENTRY:.*:]]121// CHECK-CXX-NEXT:    ret <16 x i8> [[V]]122//123uint8x16_t test_vreinterpretq_u8_mf8(mfloat8x16_t v) {124  return vreinterpretq_u8_mf8(v);125}126// CHECK-LABEL: define dso_local <4 x i32> @test_vreinterpretq_u32_mf8(127// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {128// CHECK-NEXT:  [[ENTRY:.*:]]129// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <4 x i32>130// CHECK-NEXT:    ret <4 x i32> [[TMP0]]131//132// CHECK-CXX-LABEL: define dso_local noundef <4 x i32> @_Z26test_vreinterpretq_u32_mf814__Mfloat8x16_t(133// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {134// CHECK-CXX-NEXT:  [[ENTRY:.*:]]135// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <4 x i32>136// CHECK-CXX-NEXT:    ret <4 x i32> [[TMP0]]137//138uint32x4_t test_vreinterpretq_u32_mf8(mfloat8x16_t v) {139  return vreinterpretq_u32_mf8(v);140}141// CHECK-LABEL: define dso_local <2 x i64> @test_vreinterpretq_u64_mf8(142// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {143// CHECK-NEXT:  [[ENTRY:.*:]]144// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>145// CHECK-NEXT:    ret <2 x i64> [[TMP0]]146//147// CHECK-CXX-LABEL: define dso_local noundef <2 x i64> @_Z26test_vreinterpretq_u64_mf814__Mfloat8x16_t(148// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {149// CHECK-CXX-NEXT:  [[ENTRY:.*:]]150// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>151// CHECK-CXX-NEXT:    ret <2 x i64> [[TMP0]]152//153uint64x2_t test_vreinterpretq_u64_mf8(mfloat8x16_t v) {154  return vreinterpretq_u64_mf8(v);155}156// CHECK-LABEL: define dso_local <8 x i16> @test_vreinterpretq_u16_mf8(157// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {158// CHECK-NEXT:  [[ENTRY:.*:]]159// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>160// CHECK-NEXT:    ret <8 x i16> [[TMP0]]161//162// CHECK-CXX-LABEL: define dso_local noundef <8 x i16> @_Z26test_vreinterpretq_u16_mf814__Mfloat8x16_t(163// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {164// CHECK-CXX-NEXT:  [[ENTRY:.*:]]165// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>166// CHECK-CXX-NEXT:    ret <8 x i16> [[TMP0]]167//168uint16x8_t test_vreinterpretq_u16_mf8(mfloat8x16_t v) {169  return vreinterpretq_u16_mf8(v);170}171// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_s8_mf8(172// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {173// CHECK-NEXT:  [[ENTRY:.*:]]174// CHECK-NEXT:    ret <16 x i8> [[V]]175//176// CHECK-CXX-LABEL: define dso_local noundef <16 x i8> @_Z25test_vreinterpretq_s8_mf814__Mfloat8x16_t(177// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {178// CHECK-CXX-NEXT:  [[ENTRY:.*:]]179// CHECK-CXX-NEXT:    ret <16 x i8> [[V]]180//181int8x16_t test_vreinterpretq_s8_mf8(mfloat8x16_t v) {182  return vreinterpretq_s8_mf8(v);183}184// CHECK-LABEL: define dso_local <2 x double> @test_vreinterpretq_f64_mf8(185// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {186// CHECK-NEXT:  [[ENTRY:.*:]]187// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>188// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[TMP0]] to <2 x double>189// CHECK-NEXT:    ret <2 x double> [[TMP1]]190//191// CHECK-CXX-LABEL: define dso_local noundef <2 x double> @_Z26test_vreinterpretq_f64_mf814__Mfloat8x16_t(192// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {193// CHECK-CXX-NEXT:  [[ENTRY:.*:]]194// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>195// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[TMP0]] to <2 x double>196// CHECK-CXX-NEXT:    ret <2 x double> [[TMP1]]197//198float64x2_t test_vreinterpretq_f64_mf8(mfloat8x16_t v) {199  return vreinterpretq_f64_mf8(v);200}201// CHECK-LABEL: define dso_local <4 x float> @test_vreinterpretq_f32_mf8(202// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {203// CHECK-NEXT:  [[ENTRY:.*:]]204// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <4 x i32>205// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[TMP0]] to <4 x float>206// CHECK-NEXT:    ret <4 x float> [[TMP1]]207//208// CHECK-CXX-LABEL: define dso_local noundef <4 x float> @_Z26test_vreinterpretq_f32_mf814__Mfloat8x16_t(209// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {210// CHECK-CXX-NEXT:  [[ENTRY:.*:]]211// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <4 x i32>212// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[TMP0]] to <4 x float>213// CHECK-CXX-NEXT:    ret <4 x float> [[TMP1]]214//215float32x4_t test_vreinterpretq_f32_mf8(mfloat8x16_t v) {216  return vreinterpretq_f32_mf8(v);217}218// CHECK-LABEL: define dso_local <8 x half> @test_vreinterpretq_f16_mf8(219// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {220// CHECK-NEXT:  [[ENTRY:.*:]]221// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>222// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[TMP0]] to <8 x half>223// CHECK-NEXT:    ret <8 x half> [[TMP1]]224//225// CHECK-CXX-LABEL: define dso_local noundef <8 x half> @_Z26test_vreinterpretq_f16_mf814__Mfloat8x16_t(226// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {227// CHECK-CXX-NEXT:  [[ENTRY:.*:]]228// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>229// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[TMP0]] to <8 x half>230// CHECK-CXX-NEXT:    ret <8 x half> [[TMP1]]231//232float16x8_t test_vreinterpretq_f16_mf8(mfloat8x16_t v) {233  return vreinterpretq_f16_mf8(v);234}235// CHECK-LABEL: define dso_local <4 x i32> @test_vreinterpretq_s32_mf8(236// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {237// CHECK-NEXT:  [[ENTRY:.*:]]238// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <4 x i32>239// CHECK-NEXT:    ret <4 x i32> [[TMP0]]240//241// CHECK-CXX-LABEL: define dso_local noundef <4 x i32> @_Z26test_vreinterpretq_s32_mf814__Mfloat8x16_t(242// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {243// CHECK-CXX-NEXT:  [[ENTRY:.*:]]244// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <4 x i32>245// CHECK-CXX-NEXT:    ret <4 x i32> [[TMP0]]246//247int32x4_t test_vreinterpretq_s32_mf8(mfloat8x16_t v) {248  return vreinterpretq_s32_mf8(v);249}250// CHECK-LABEL: define dso_local <2 x i64> @test_vreinterpretq_s64_mf8(251// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {252// CHECK-NEXT:  [[ENTRY:.*:]]253// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>254// CHECK-NEXT:    ret <2 x i64> [[TMP0]]255//256// CHECK-CXX-LABEL: define dso_local noundef <2 x i64> @_Z26test_vreinterpretq_s64_mf814__Mfloat8x16_t(257// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {258// CHECK-CXX-NEXT:  [[ENTRY:.*:]]259// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <2 x i64>260// CHECK-CXX-NEXT:    ret <2 x i64> [[TMP0]]261//262int64x2_t test_vreinterpretq_s64_mf8(mfloat8x16_t v) {263  return vreinterpretq_s64_mf8(v);264}265// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_p8(266// CHECK-SAME: <16 x i8> noundef [[V:%.*]]) #[[ATTR0]] {267// CHECK-NEXT:  [[ENTRY:.*:]]268// CHECK-NEXT:    ret <16 x i8> [[V]]269//270// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z25test_vreinterpretq_mf8_p812__Poly8x16_t(271// CHECK-CXX-SAME: <16 x i8> noundef [[V:%.*]]) #[[ATTR0]] {272// CHECK-CXX-NEXT:  [[ENTRY:.*:]]273// CHECK-CXX-NEXT:    ret <16 x i8> [[V]]274//275mfloat8x16_t test_vreinterpretq_mf8_p8(poly8x16_t v) {276  return vreinterpretq_mf8_p8(v);277}278// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_p128(279// CHECK-SAME: i128 noundef [[V:%.*]]) #[[ATTR0]] {280// CHECK-NEXT:  [[ENTRY:.*:]]281// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[V]] to <16 x i8>282// CHECK-NEXT:    ret <16 x i8> [[TMP0]]283//284// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z27test_vreinterpretq_mf8_p128o(285// CHECK-CXX-SAME: i128 noundef [[V:%.*]]) #[[ATTR0]] {286// CHECK-CXX-NEXT:  [[ENTRY:.*:]]287// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast i128 [[V]] to <16 x i8>288// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]289//290mfloat8x16_t test_vreinterpretq_mf8_p128(poly128_t v) {291  return vreinterpretq_mf8_p128(v);292}293// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_p64(294// CHECK-SAME: <2 x i64> noundef [[V:%.*]]) #[[ATTR0]] {295// CHECK-NEXT:  [[ENTRY:.*:]]296// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[V]] to <16 x i8>297// CHECK-NEXT:    ret <16 x i8> [[TMP0]]298//299// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_p6412__Poly64x2_t(300// CHECK-CXX-SAME: <2 x i64> noundef [[V:%.*]]) #[[ATTR0]] {301// CHECK-CXX-NEXT:  [[ENTRY:.*:]]302// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[V]] to <16 x i8>303// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]304//305mfloat8x16_t test_vreinterpretq_mf8_p64(poly64x2_t v) {306  return vreinterpretq_mf8_p64(v);307}308// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_p16(309// CHECK-SAME: <8 x i16> noundef [[V:%.*]]) #[[ATTR0]] {310// CHECK-NEXT:  [[ENTRY:.*:]]311// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[V]] to <16 x i8>312// CHECK-NEXT:    ret <16 x i8> [[TMP0]]313//314// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_p1612__Poly16x8_t(315// CHECK-CXX-SAME: <8 x i16> noundef [[V:%.*]]) #[[ATTR0]] {316// CHECK-CXX-NEXT:  [[ENTRY:.*:]]317// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[V]] to <16 x i8>318// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]319//320mfloat8x16_t test_vreinterpretq_mf8_p16(poly16x8_t v) {321  return vreinterpretq_mf8_p16(v);322}323// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_u8(324// CHECK-SAME: <16 x i8> noundef [[V:%.*]]) #[[ATTR0]] {325// CHECK-NEXT:  [[ENTRY:.*:]]326// CHECK-NEXT:    ret <16 x i8> [[V]]327//328// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z25test_vreinterpretq_mf8_u812__Uint8x16_t(329// CHECK-CXX-SAME: <16 x i8> noundef [[V:%.*]]) #[[ATTR0]] {330// CHECK-CXX-NEXT:  [[ENTRY:.*:]]331// CHECK-CXX-NEXT:    ret <16 x i8> [[V]]332//333mfloat8x16_t test_vreinterpretq_mf8_u8(uint8x16_t v) {334  return vreinterpretq_mf8_u8(v);335}336// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_u32(337// CHECK-SAME: <4 x i32> noundef [[V:%.*]]) #[[ATTR0]] {338// CHECK-NEXT:  [[ENTRY:.*:]]339// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[V]] to <16 x i8>340// CHECK-NEXT:    ret <16 x i8> [[TMP0]]341//342// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_u3212__Uint32x4_t(343// CHECK-CXX-SAME: <4 x i32> noundef [[V:%.*]]) #[[ATTR0]] {344// CHECK-CXX-NEXT:  [[ENTRY:.*:]]345// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[V]] to <16 x i8>346// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]347//348mfloat8x16_t test_vreinterpretq_mf8_u32(uint32x4_t v) {349  return vreinterpretq_mf8_u32(v);350}351// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_u64(352// CHECK-SAME: <2 x i64> noundef [[V:%.*]]) #[[ATTR0]] {353// CHECK-NEXT:  [[ENTRY:.*:]]354// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[V]] to <16 x i8>355// CHECK-NEXT:    ret <16 x i8> [[TMP0]]356//357// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_u6412__Uint64x2_t(358// CHECK-CXX-SAME: <2 x i64> noundef [[V:%.*]]) #[[ATTR0]] {359// CHECK-CXX-NEXT:  [[ENTRY:.*:]]360// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[V]] to <16 x i8>361// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]362//363mfloat8x16_t test_vreinterpretq_mf8_u64(uint64x2_t v) {364  return vreinterpretq_mf8_u64(v);365}366// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_u16(367// CHECK-SAME: <8 x i16> noundef [[V:%.*]]) #[[ATTR0]] {368// CHECK-NEXT:  [[ENTRY:.*:]]369// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[V]] to <16 x i8>370// CHECK-NEXT:    ret <16 x i8> [[TMP0]]371//372// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_u1612__Uint16x8_t(373// CHECK-CXX-SAME: <8 x i16> noundef [[V:%.*]]) #[[ATTR0]] {374// CHECK-CXX-NEXT:  [[ENTRY:.*:]]375// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[V]] to <16 x i8>376// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]377//378mfloat8x16_t test_vreinterpretq_mf8_u16(uint16x8_t v) {379  return vreinterpretq_mf8_u16(v);380}381// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_s8(382// CHECK-SAME: <16 x i8> noundef [[V:%.*]]) #[[ATTR0]] {383// CHECK-NEXT:  [[ENTRY:.*:]]384// CHECK-NEXT:    ret <16 x i8> [[V]]385//386// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z25test_vreinterpretq_mf8_s811__Int8x16_t(387// CHECK-CXX-SAME: <16 x i8> noundef [[V:%.*]]) #[[ATTR0]] {388// CHECK-CXX-NEXT:  [[ENTRY:.*:]]389// CHECK-CXX-NEXT:    ret <16 x i8> [[V]]390//391mfloat8x16_t test_vreinterpretq_mf8_s8(int8x16_t v) {392  return vreinterpretq_mf8_s8(v);393}394// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_f64(395// CHECK-SAME: <2 x double> noundef [[V:%.*]]) #[[ATTR0]] {396// CHECK-NEXT:  [[ENTRY:.*:]]397// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x double> [[V]] to <2 x i64>398// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[TMP0]] to <16 x i8>399// CHECK-NEXT:    ret <16 x i8> [[TMP1]]400//401// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_f6413__Float64x2_t(402// CHECK-CXX-SAME: <2 x double> noundef [[V:%.*]]) #[[ATTR0]] {403// CHECK-CXX-NEXT:  [[ENTRY:.*:]]404// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <2 x double> [[V]] to <2 x i64>405// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[TMP0]] to <16 x i8>406// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP1]]407//408mfloat8x16_t test_vreinterpretq_mf8_f64(float64x2_t v) {409  return vreinterpretq_mf8_f64(v);410}411// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_f32(412// CHECK-SAME: <4 x float> noundef [[V:%.*]]) #[[ATTR0]] {413// CHECK-NEXT:  [[ENTRY:.*:]]414// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[V]] to <4 x i32>415// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[TMP0]] to <16 x i8>416// CHECK-NEXT:    ret <16 x i8> [[TMP1]]417//418// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_f3213__Float32x4_t(419// CHECK-CXX-SAME: <4 x float> noundef [[V:%.*]]) #[[ATTR0]] {420// CHECK-CXX-NEXT:  [[ENTRY:.*:]]421// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[V]] to <4 x i32>422// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[TMP0]] to <16 x i8>423// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP1]]424//425mfloat8x16_t test_vreinterpretq_mf8_f32(float32x4_t v) {426  return vreinterpretq_mf8_f32(v);427}428// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_f16(429// CHECK-SAME: <8 x half> noundef [[V:%.*]]) #[[ATTR0]] {430// CHECK-NEXT:  [[ENTRY:.*:]]431// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[V]] to <8 x i16>432// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[TMP0]] to <16 x i8>433// CHECK-NEXT:    ret <16 x i8> [[TMP1]]434//435// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_f1613__Float16x8_t(436// CHECK-CXX-SAME: <8 x half> noundef [[V:%.*]]) #[[ATTR0]] {437// CHECK-CXX-NEXT:  [[ENTRY:.*:]]438// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x half> [[V]] to <8 x i16>439// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[TMP0]] to <16 x i8>440// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP1]]441//442mfloat8x16_t test_vreinterpretq_mf8_f16(float16x8_t v) {443  return vreinterpretq_mf8_f16(v);444}445// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_s32(446// CHECK-SAME: <4 x i32> noundef [[V:%.*]]) #[[ATTR0]] {447// CHECK-NEXT:  [[ENTRY:.*:]]448// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[V]] to <16 x i8>449// CHECK-NEXT:    ret <16 x i8> [[TMP0]]450//451// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_s3211__Int32x4_t(452// CHECK-CXX-SAME: <4 x i32> noundef [[V:%.*]]) #[[ATTR0]] {453// CHECK-CXX-NEXT:  [[ENTRY:.*:]]454// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[V]] to <16 x i8>455// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]456//457mfloat8x16_t test_vreinterpretq_mf8_s32(int32x4_t v) {458  return vreinterpretq_mf8_s32(v);459}460// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_s64(461// CHECK-SAME: <2 x i64> noundef [[V:%.*]]) #[[ATTR0]] {462// CHECK-NEXT:  [[ENTRY:.*:]]463// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[V]] to <16 x i8>464// CHECK-NEXT:    ret <16 x i8> [[TMP0]]465//466// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_s6411__Int64x2_t(467// CHECK-CXX-SAME: <2 x i64> noundef [[V:%.*]]) #[[ATTR0]] {468// CHECK-CXX-NEXT:  [[ENTRY:.*:]]469// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[V]] to <16 x i8>470// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]471//472mfloat8x16_t test_vreinterpretq_mf8_s64(int64x2_t v) {473  return vreinterpretq_mf8_s64(v);474}475// CHECK-LABEL: define dso_local <16 x i8> @test_vreinterpretq_mf8_s16(476// CHECK-SAME: <8 x i16> noundef [[V:%.*]]) #[[ATTR0]] {477// CHECK-NEXT:  [[ENTRY:.*:]]478// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[V]] to <16 x i8>479// CHECK-NEXT:    ret <16 x i8> [[TMP0]]480//481// CHECK-CXX-LABEL: define dso_local <16 x i8> @_Z26test_vreinterpretq_mf8_s1611__Int16x8_t(482// CHECK-CXX-SAME: <8 x i16> noundef [[V:%.*]]) #[[ATTR0]] {483// CHECK-CXX-NEXT:  [[ENTRY:.*:]]484// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[V]] to <16 x i8>485// CHECK-CXX-NEXT:    ret <16 x i8> [[TMP0]]486//487mfloat8x16_t test_vreinterpretq_mf8_s16(int16x8_t v) {488  return vreinterpretq_mf8_s16(v);489}490// CHECK-LABEL: define dso_local <8 x i16> @test_vreinterpretq_s16_mf8(491// CHECK-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {492// CHECK-NEXT:  [[ENTRY:.*:]]493// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>494// CHECK-NEXT:    ret <8 x i16> [[TMP0]]495//496// CHECK-CXX-LABEL: define dso_local noundef <8 x i16> @_Z26test_vreinterpretq_s16_mf814__Mfloat8x16_t(497// CHECK-CXX-SAME: <16 x i8> [[V:%.*]]) #[[ATTR0]] {498// CHECK-CXX-NEXT:  [[ENTRY:.*:]]499// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[V]] to <8 x i16>500// CHECK-CXX-NEXT:    ret <8 x i16> [[TMP0]]501//502int16x8_t test_vreinterpretq_s16_mf8(mfloat8x16_t v) {503  return vreinterpretq_s16_mf8(v);504}505// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_u8_mf8(506// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {507// CHECK-NEXT:  [[ENTRY:.*:]]508// CHECK-NEXT:    ret <8 x i8> [[V]]509//510// CHECK-CXX-LABEL: define dso_local noundef <8 x i8> @_Z24test_vreinterpret_u8_mf813__Mfloat8x8_t(511// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {512// CHECK-CXX-NEXT:  [[ENTRY:.*:]]513// CHECK-CXX-NEXT:    ret <8 x i8> [[V]]514//515uint8x8_t test_vreinterpret_u8_mf8(mfloat8x8_t v) {516  return vreinterpret_u8_mf8(v);517}518// CHECK-LABEL: define dso_local <2 x i32> @test_vreinterpret_u32_mf8(519// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {520// CHECK-NEXT:  [[ENTRY:.*:]]521// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <2 x i32>522// CHECK-NEXT:    ret <2 x i32> [[TMP0]]523//524// CHECK-CXX-LABEL: define dso_local noundef <2 x i32> @_Z25test_vreinterpret_u32_mf813__Mfloat8x8_t(525// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {526// CHECK-CXX-NEXT:  [[ENTRY:.*:]]527// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <2 x i32>528// CHECK-CXX-NEXT:    ret <2 x i32> [[TMP0]]529//530uint32x2_t test_vreinterpret_u32_mf8(mfloat8x8_t v) {531  return vreinterpret_u32_mf8(v);532}533// CHECK-LABEL: define dso_local <1 x i64> @test_vreinterpret_u64_mf8(534// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {535// CHECK-NEXT:  [[ENTRY:.*:]]536// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i64537// CHECK-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0538// CHECK-NEXT:    ret <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]]539//540// CHECK-CXX-LABEL: define dso_local noundef <1 x i64> @_Z25test_vreinterpret_u64_mf813__Mfloat8x8_t(541// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {542// CHECK-CXX-NEXT:  [[ENTRY:.*:]]543// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i64544// CHECK-CXX-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0545// CHECK-CXX-NEXT:    ret <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]]546//547uint64x1_t test_vreinterpret_u64_mf8(mfloat8x8_t v) {548  return vreinterpret_u64_mf8(v);549}550// CHECK-LABEL: define dso_local <4 x i16> @test_vreinterpret_u16_mf8(551// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {552// CHECK-NEXT:  [[ENTRY:.*:]]553// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>554// CHECK-NEXT:    ret <4 x i16> [[TMP0]]555//556// CHECK-CXX-LABEL: define dso_local noundef <4 x i16> @_Z25test_vreinterpret_u16_mf813__Mfloat8x8_t(557// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {558// CHECK-CXX-NEXT:  [[ENTRY:.*:]]559// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>560// CHECK-CXX-NEXT:    ret <4 x i16> [[TMP0]]561//562uint16x4_t test_vreinterpret_u16_mf8(mfloat8x8_t v) {563  return vreinterpret_u16_mf8(v);564}565// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_s8_mf8(566// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {567// CHECK-NEXT:  [[ENTRY:.*:]]568// CHECK-NEXT:    ret <8 x i8> [[V]]569//570// CHECK-CXX-LABEL: define dso_local noundef <8 x i8> @_Z24test_vreinterpret_s8_mf813__Mfloat8x8_t(571// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {572// CHECK-CXX-NEXT:  [[ENTRY:.*:]]573// CHECK-CXX-NEXT:    ret <8 x i8> [[V]]574//575int8x8_t test_vreinterpret_s8_mf8(mfloat8x8_t v) {576  return vreinterpret_s8_mf8(v);577}578// CHECK-LABEL: define dso_local <1 x double> @test_vreinterpret_f64_mf8(579// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {580// CHECK-NEXT:  [[ENTRY:.*:]]581// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i64582// CHECK-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0583// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]] to <1 x double>584// CHECK-NEXT:    ret <1 x double> [[TMP1]]585//586// CHECK-CXX-LABEL: define dso_local noundef <1 x double> @_Z25test_vreinterpret_f64_mf813__Mfloat8x8_t(587// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {588// CHECK-CXX-NEXT:  [[ENTRY:.*:]]589// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i64590// CHECK-CXX-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0591// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]] to <1 x double>592// CHECK-CXX-NEXT:    ret <1 x double> [[TMP1]]593//594float64x1_t test_vreinterpret_f64_mf8(mfloat8x8_t v) {595  return vreinterpret_f64_mf8(v);596}597// CHECK-LABEL: define dso_local <2 x float> @test_vreinterpret_f32_mf8(598// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {599// CHECK-NEXT:  [[ENTRY:.*:]]600// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <2 x i32>601// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[TMP0]] to <2 x float>602// CHECK-NEXT:    ret <2 x float> [[TMP1]]603//604// CHECK-CXX-LABEL: define dso_local noundef <2 x float> @_Z25test_vreinterpret_f32_mf813__Mfloat8x8_t(605// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {606// CHECK-CXX-NEXT:  [[ENTRY:.*:]]607// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <2 x i32>608// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[TMP0]] to <2 x float>609// CHECK-CXX-NEXT:    ret <2 x float> [[TMP1]]610//611float32x2_t test_vreinterpret_f32_mf8(mfloat8x8_t v) {612  return vreinterpret_f32_mf8(v);613}614// CHECK-LABEL: define dso_local <4 x half> @test_vreinterpret_f16_mf8(615// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {616// CHECK-NEXT:  [[ENTRY:.*:]]617// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>618// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[TMP0]] to <4 x half>619// CHECK-NEXT:    ret <4 x half> [[TMP1]]620//621// CHECK-CXX-LABEL: define dso_local noundef <4 x half> @_Z25test_vreinterpret_f16_mf813__Mfloat8x8_t(622// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {623// CHECK-CXX-NEXT:  [[ENTRY:.*:]]624// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>625// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[TMP0]] to <4 x half>626// CHECK-CXX-NEXT:    ret <4 x half> [[TMP1]]627//628float16x4_t test_vreinterpret_f16_mf8(mfloat8x8_t v) {629  return vreinterpret_f16_mf8(v);630}631// CHECK-LABEL: define dso_local <2 x i32> @test_vreinterpret_s32_mf8(632// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {633// CHECK-NEXT:  [[ENTRY:.*:]]634// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <2 x i32>635// CHECK-NEXT:    ret <2 x i32> [[TMP0]]636//637// CHECK-CXX-LABEL: define dso_local noundef <2 x i32> @_Z25test_vreinterpret_s32_mf813__Mfloat8x8_t(638// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {639// CHECK-CXX-NEXT:  [[ENTRY:.*:]]640// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <2 x i32>641// CHECK-CXX-NEXT:    ret <2 x i32> [[TMP0]]642//643int32x2_t test_vreinterpret_s32_mf8(mfloat8x8_t v) {644  return vreinterpret_s32_mf8(v);645}646// CHECK-LABEL: define dso_local <1 x i64> @test_vreinterpret_s64_mf8(647// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {648// CHECK-NEXT:  [[ENTRY:.*:]]649// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i64650// CHECK-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0651// CHECK-NEXT:    ret <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]]652//653// CHECK-CXX-LABEL: define dso_local noundef <1 x i64> @_Z25test_vreinterpret_s64_mf813__Mfloat8x8_t(654// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {655// CHECK-CXX-NEXT:  [[ENTRY:.*:]]656// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to i64657// CHECK-CXX-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0658// CHECK-CXX-NEXT:    ret <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]]659//660int64x1_t test_vreinterpret_s64_mf8(mfloat8x8_t v) {661  return vreinterpret_s64_mf8(v);662}663// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_p8(664// CHECK-SAME: <8 x i8> noundef [[V:%.*]]) #[[ATTR0]] {665// CHECK-NEXT:  [[ENTRY:.*:]]666// CHECK-NEXT:    ret <8 x i8> [[V]]667//668// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z24test_vreinterpret_mf8_p811__Poly8x8_t(669// CHECK-CXX-SAME: <8 x i8> noundef [[V:%.*]]) #[[ATTR0]] {670// CHECK-CXX-NEXT:  [[ENTRY:.*:]]671// CHECK-CXX-NEXT:    ret <8 x i8> [[V]]672//673mfloat8x8_t test_vreinterpret_mf8_p8(poly8x8_t v) {674  return vreinterpret_mf8_p8(v);675}676// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_p64(677// CHECK-SAME: <1 x i64> noundef [[V:%.*]]) #[[ATTR0]] {678// CHECK-NEXT:  [[ENTRY:.*:]]679// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x i64> [[V]] to <8 x i8>680// CHECK-NEXT:    ret <8 x i8> [[TMP0]]681//682// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_p6412__Poly64x1_t(683// CHECK-CXX-SAME: <1 x i64> noundef [[V:%.*]]) #[[ATTR0]] {684// CHECK-CXX-NEXT:  [[ENTRY:.*:]]685// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <1 x i64> [[V]] to <8 x i8>686// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]687//688mfloat8x8_t test_vreinterpret_mf8_p64(poly64x1_t v) {689  return vreinterpret_mf8_p64(v);690}691// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_p16(692// CHECK-SAME: <4 x i16> noundef [[V:%.*]]) #[[ATTR0]] {693// CHECK-NEXT:  [[ENTRY:.*:]]694// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x i16> [[V]] to <8 x i8>695// CHECK-NEXT:    ret <8 x i8> [[TMP0]]696//697// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_p1612__Poly16x4_t(698// CHECK-CXX-SAME: <4 x i16> noundef [[V:%.*]]) #[[ATTR0]] {699// CHECK-CXX-NEXT:  [[ENTRY:.*:]]700// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <4 x i16> [[V]] to <8 x i8>701// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]702//703mfloat8x8_t test_vreinterpret_mf8_p16(poly16x4_t v) {704  return vreinterpret_mf8_p16(v);705}706// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_u8(707// CHECK-SAME: <8 x i8> noundef [[V:%.*]]) #[[ATTR0]] {708// CHECK-NEXT:  [[ENTRY:.*:]]709// CHECK-NEXT:    ret <8 x i8> [[V]]710//711// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z24test_vreinterpret_mf8_u811__Uint8x8_t(712// CHECK-CXX-SAME: <8 x i8> noundef [[V:%.*]]) #[[ATTR0]] {713// CHECK-CXX-NEXT:  [[ENTRY:.*:]]714// CHECK-CXX-NEXT:    ret <8 x i8> [[V]]715//716mfloat8x8_t test_vreinterpret_mf8_u8(uint8x8_t v) {717  return vreinterpret_mf8_u8(v);718}719// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_u32(720// CHECK-SAME: <2 x i32> noundef [[V:%.*]]) #[[ATTR0]] {721// CHECK-NEXT:  [[ENTRY:.*:]]722// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i32> [[V]] to <8 x i8>723// CHECK-NEXT:    ret <8 x i8> [[TMP0]]724//725// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_u3212__Uint32x2_t(726// CHECK-CXX-SAME: <2 x i32> noundef [[V:%.*]]) #[[ATTR0]] {727// CHECK-CXX-NEXT:  [[ENTRY:.*:]]728// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <2 x i32> [[V]] to <8 x i8>729// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]730//731mfloat8x8_t test_vreinterpret_mf8_u32(uint32x2_t v) {732  return vreinterpret_mf8_u32(v);733}734// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_u64(735// CHECK-SAME: <1 x i64> noundef [[V:%.*]]) #[[ATTR0]] {736// CHECK-NEXT:  [[ENTRY:.*:]]737// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x i64> [[V]] to <8 x i8>738// CHECK-NEXT:    ret <8 x i8> [[TMP0]]739//740// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_u6412__Uint64x1_t(741// CHECK-CXX-SAME: <1 x i64> noundef [[V:%.*]]) #[[ATTR0]] {742// CHECK-CXX-NEXT:  [[ENTRY:.*:]]743// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <1 x i64> [[V]] to <8 x i8>744// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]745//746mfloat8x8_t test_vreinterpret_mf8_u64(uint64x1_t v) {747  return vreinterpret_mf8_u64(v);748}749// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_u16(750// CHECK-SAME: <4 x i16> noundef [[V:%.*]]) #[[ATTR0]] {751// CHECK-NEXT:  [[ENTRY:.*:]]752// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x i16> [[V]] to <8 x i8>753// CHECK-NEXT:    ret <8 x i8> [[TMP0]]754//755// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_u1612__Uint16x4_t(756// CHECK-CXX-SAME: <4 x i16> noundef [[V:%.*]]) #[[ATTR0]] {757// CHECK-CXX-NEXT:  [[ENTRY:.*:]]758// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <4 x i16> [[V]] to <8 x i8>759// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]760//761mfloat8x8_t test_vreinterpret_mf8_u16(uint16x4_t v) {762  return vreinterpret_mf8_u16(v);763}764// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_s8(765// CHECK-SAME: <8 x i8> noundef [[V:%.*]]) #[[ATTR0]] {766// CHECK-NEXT:  [[ENTRY:.*:]]767// CHECK-NEXT:    ret <8 x i8> [[V]]768//769// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z24test_vreinterpret_mf8_s810__Int8x8_t(770// CHECK-CXX-SAME: <8 x i8> noundef [[V:%.*]]) #[[ATTR0]] {771// CHECK-CXX-NEXT:  [[ENTRY:.*:]]772// CHECK-CXX-NEXT:    ret <8 x i8> [[V]]773//774mfloat8x8_t test_vreinterpret_mf8_s8(int8x8_t v) {775  return vreinterpret_mf8_s8(v);776}777// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_f64(778// CHECK-SAME: <1 x double> noundef [[V:%.*]]) #[[ATTR0]] {779// CHECK-NEXT:  [[ENTRY:.*:]]780// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x double> [[V]] to i64781// CHECK-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0782// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]] to <8 x i8>783// CHECK-NEXT:    ret <8 x i8> [[TMP1]]784//785// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_f6413__Float64x1_t(786// CHECK-CXX-SAME: <1 x double> noundef [[V:%.*]]) #[[ATTR0]] {787// CHECK-CXX-NEXT:  [[ENTRY:.*:]]788// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <1 x double> [[V]] to i64789// CHECK-CXX-NEXT:    [[__P0_ADDR_I_SROA_0_0_VEC_INSERT:%.*]] = insertelement <1 x i64> undef, i64 [[TMP0]], i32 0790// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[__P0_ADDR_I_SROA_0_0_VEC_INSERT]] to <8 x i8>791// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP1]]792//793mfloat8x8_t test_vreinterpret_mf8_f64(float64x1_t v) {794  return vreinterpret_mf8_f64(v);795}796// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_f32(797// CHECK-SAME: <2 x float> noundef [[V:%.*]]) #[[ATTR0]] {798// CHECK-NEXT:  [[ENTRY:.*:]]799// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x float> [[V]] to <2 x i32>800// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[TMP0]] to <8 x i8>801// CHECK-NEXT:    ret <8 x i8> [[TMP1]]802//803// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_f3213__Float32x2_t(804// CHECK-CXX-SAME: <2 x float> noundef [[V:%.*]]) #[[ATTR0]] {805// CHECK-CXX-NEXT:  [[ENTRY:.*:]]806// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <2 x float> [[V]] to <2 x i32>807// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[TMP0]] to <8 x i8>808// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP1]]809//810mfloat8x8_t test_vreinterpret_mf8_f32(float32x2_t v) {811  return vreinterpret_mf8_f32(v);812}813// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_f16(814// CHECK-SAME: <4 x half> noundef [[V:%.*]]) #[[ATTR0]] {815// CHECK-NEXT:  [[ENTRY:.*:]]816// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x half> [[V]] to <4 x i16>817// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[TMP0]] to <8 x i8>818// CHECK-NEXT:    ret <8 x i8> [[TMP1]]819//820// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_f1613__Float16x4_t(821// CHECK-CXX-SAME: <4 x half> noundef [[V:%.*]]) #[[ATTR0]] {822// CHECK-CXX-NEXT:  [[ENTRY:.*:]]823// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <4 x half> [[V]] to <4 x i16>824// CHECK-CXX-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[TMP0]] to <8 x i8>825// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP1]]826//827mfloat8x8_t test_vreinterpret_mf8_f16(float16x4_t v) {828  return vreinterpret_mf8_f16(v);829}830// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_s32(831// CHECK-SAME: <2 x i32> noundef [[V:%.*]]) #[[ATTR0]] {832// CHECK-NEXT:  [[ENTRY:.*:]]833// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i32> [[V]] to <8 x i8>834// CHECK-NEXT:    ret <8 x i8> [[TMP0]]835//836// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_s3211__Int32x2_t(837// CHECK-CXX-SAME: <2 x i32> noundef [[V:%.*]]) #[[ATTR0]] {838// CHECK-CXX-NEXT:  [[ENTRY:.*:]]839// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <2 x i32> [[V]] to <8 x i8>840// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]841//842mfloat8x8_t test_vreinterpret_mf8_s32(int32x2_t v) {843  return vreinterpret_mf8_s32(v);844}845// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_s64(846// CHECK-SAME: <1 x i64> noundef [[V:%.*]]) #[[ATTR0]] {847// CHECK-NEXT:  [[ENTRY:.*:]]848// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x i64> [[V]] to <8 x i8>849// CHECK-NEXT:    ret <8 x i8> [[TMP0]]850//851// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_s6411__Int64x1_t(852// CHECK-CXX-SAME: <1 x i64> noundef [[V:%.*]]) #[[ATTR0]] {853// CHECK-CXX-NEXT:  [[ENTRY:.*:]]854// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <1 x i64> [[V]] to <8 x i8>855// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]856//857mfloat8x8_t test_vreinterpret_mf8_s64(int64x1_t v) {858  return vreinterpret_mf8_s64(v);859}860// CHECK-LABEL: define dso_local <8 x i8> @test_vreinterpret_mf8_s16(861// CHECK-SAME: <4 x i16> noundef [[V:%.*]]) #[[ATTR0]] {862// CHECK-NEXT:  [[ENTRY:.*:]]863// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x i16> [[V]] to <8 x i8>864// CHECK-NEXT:    ret <8 x i8> [[TMP0]]865//866// CHECK-CXX-LABEL: define dso_local <8 x i8> @_Z25test_vreinterpret_mf8_s1611__Int16x4_t(867// CHECK-CXX-SAME: <4 x i16> noundef [[V:%.*]]) #[[ATTR0]] {868// CHECK-CXX-NEXT:  [[ENTRY:.*:]]869// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <4 x i16> [[V]] to <8 x i8>870// CHECK-CXX-NEXT:    ret <8 x i8> [[TMP0]]871//872mfloat8x8_t test_vreinterpret_mf8_s16(int16x4_t v) {873  return vreinterpret_mf8_s16(v);874}875// CHECK-LABEL: define dso_local <4 x i16> @test_vreinterpret_s16_mf8(876// CHECK-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {877// CHECK-NEXT:  [[ENTRY:.*:]]878// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>879// CHECK-NEXT:    ret <4 x i16> [[TMP0]]880//881// CHECK-CXX-LABEL: define dso_local noundef <4 x i16> @_Z25test_vreinterpret_s16_mf813__Mfloat8x8_t(882// CHECK-CXX-SAME: <8 x i8> [[V:%.*]]) #[[ATTR0]] {883// CHECK-CXX-NEXT:  [[ENTRY:.*:]]884// CHECK-CXX-NEXT:    [[TMP0:%.*]] = bitcast <8 x i8> [[V]] to <4 x i16>885// CHECK-CXX-NEXT:    ret <4 x i16> [[TMP0]]886//887int16x4_t test_vreinterpret_s16_mf8(mfloat8x8_t v) {888  return vreinterpret_s16_mf8(v);889}890