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