1*16e45b8fSMomchil Velikov // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5 2*16e45b8fSMomchil Velikov // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +fp8 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg | FileCheck %s 3*16e45b8fSMomchil Velikov // RUN: %clang_cc1 -x c++ -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +fp8 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg | FileCheck %s -check-prefix=CHECK-CXX 4*16e45b8fSMomchil Velikov 5*16e45b8fSMomchil Velikov // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +fp8 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg | FileCheck %s 6*16e45b8fSMomchil Velikov // RUN: %clang_cc1 -x c++ -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +fp8 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg | FileCheck %s -check-prefix=CHECK-CXX 7*16e45b8fSMomchil Velikov 8*16e45b8fSMomchil Velikov // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +fp8 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s 9*16e45b8fSMomchil Velikov // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme -target-feature +fp8 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s 10*16e45b8fSMomchil Velikov 11*16e45b8fSMomchil Velikov // REQUIRES: aarch64-registered-target 12*16e45b8fSMomchil Velikov 13*16e45b8fSMomchil Velikov #ifdef __ARM_FEATURE_SME 14*16e45b8fSMomchil Velikov #include <arm_sme.h> 15*16e45b8fSMomchil Velikov #else 16*16e45b8fSMomchil Velikov #include <arm_sve.h> 17*16e45b8fSMomchil Velikov #endif 18*16e45b8fSMomchil Velikov 19*16e45b8fSMomchil Velikov #ifdef SVE_OVERLOADED_FORMS 20*16e45b8fSMomchil Velikov #define SVE_ACLE_FUNC(A1, A2_UNUSED) A1 21*16e45b8fSMomchil Velikov #else 22*16e45b8fSMomchil Velikov #define SVE_ACLE_FUNC(A1, A2) A1##A2 23*16e45b8fSMomchil Velikov #endif 24*16e45b8fSMomchil Velikov 25*16e45b8fSMomchil Velikov #ifdef __ARM_FEATURE_SME 26*16e45b8fSMomchil Velikov #define STREAMING __arm_streaming 27*16e45b8fSMomchil Velikov #else 28*16e45b8fSMomchil Velikov #define STREAMING 29*16e45b8fSMomchil Velikov #endif 30*16e45b8fSMomchil Velikov 31*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_s8_mf8( 32*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0:[0-9]+]] { 33*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 34*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[OP]] 35*16e45b8fSMomchil Velikov // 36*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z25test_svreinterpret_s8_mf8u13__SVMfloat8_t( 37*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0:[0-9]+]] { 38*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 39*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[OP]] 40*16e45b8fSMomchil Velikov // 41*16e45b8fSMomchil Velikov svint8_t test_svreinterpret_s8_mf8(svmfloat8_t op) STREAMING { 42*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s8, _mf8)(op); 43*16e45b8fSMomchil Velikov } 44*16e45b8fSMomchil Velikov 45*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_u8_mf8( 46*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 47*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 48*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[OP]] 49*16e45b8fSMomchil Velikov // 50*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z25test_svreinterpret_u8_mf8u13__SVMfloat8_t( 51*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 52*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 53*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[OP]] 54*16e45b8fSMomchil Velikov // 55*16e45b8fSMomchil Velikov svuint8_t test_svreinterpret_u8_mf8(svmfloat8_t op) STREAMING { 56*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u8, _mf8)(op); 57*16e45b8fSMomchil Velikov } 58*16e45b8fSMomchil Velikov 59*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_s8( 60*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 61*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 62*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[OP]] 63*16e45b8fSMomchil Velikov // 64*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z25test_svreinterpret_mf8_s8u10__SVInt8_t( 65*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 66*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 67*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[OP]] 68*16e45b8fSMomchil Velikov // 69*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_s8(svint8_t op) STREAMING { 70*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s8)(op); 71*16e45b8fSMomchil Velikov } 72*16e45b8fSMomchil Velikov 73*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_u8( 74*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 75*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 76*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[OP]] 77*16e45b8fSMomchil Velikov // 78*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z25test_svreinterpret_mf8_u8u11__SVUint8_t( 79*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 80*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 81*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[OP]] 82*16e45b8fSMomchil Velikov // 83*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_u8(svuint8_t op) STREAMING { 84*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u8)(op); 85*16e45b8fSMomchil Velikov } 86*16e45b8fSMomchil Velikov 87*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_mf8( 88*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 89*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 90*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[OP]] 91*16e45b8fSMomchil Velikov // 92*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_mf8u13__SVMfloat8_t( 93*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 94*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 95*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[OP]] 96*16e45b8fSMomchil Velikov // 97*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_mf8(svmfloat8_t op) STREAMING { 98*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _mf8)(op); 99*16e45b8fSMomchil Velikov } 100*16e45b8fSMomchil Velikov 101*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_s16( 102*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP:%.*]]) #[[ATTR0]] { 103*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 104*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP]] to <vscale x 16 x i8> 105*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 106*16e45b8fSMomchil Velikov // 107*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_s16u11__SVInt16_t( 108*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP:%.*]]) #[[ATTR0]] { 109*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 110*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP]] to <vscale x 16 x i8> 111*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 112*16e45b8fSMomchil Velikov // 113*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_s16(svint16_t op) STREAMING { 114*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s16)(op); 115*16e45b8fSMomchil Velikov } 116*16e45b8fSMomchil Velikov 117*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_u16( 118*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP:%.*]]) #[[ATTR0]] { 119*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 120*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP]] to <vscale x 16 x i8> 121*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 122*16e45b8fSMomchil Velikov // 123*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_u16u12__SVUint16_t( 124*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP:%.*]]) #[[ATTR0]] { 125*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 126*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i16> [[OP]] to <vscale x 16 x i8> 127*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 128*16e45b8fSMomchil Velikov // 129*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_u16(svuint16_t op) STREAMING { 130*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u16)(op); 131*16e45b8fSMomchil Velikov } 132*16e45b8fSMomchil Velikov 133*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_s32( 134*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP:%.*]]) #[[ATTR0]] { 135*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 136*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP]] to <vscale x 16 x i8> 137*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 138*16e45b8fSMomchil Velikov // 139*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_s32u11__SVInt32_t( 140*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP:%.*]]) #[[ATTR0]] { 141*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 142*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP]] to <vscale x 16 x i8> 143*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 144*16e45b8fSMomchil Velikov // 145*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_s32(svint32_t op) STREAMING { 146*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s32)(op); 147*16e45b8fSMomchil Velikov } 148*16e45b8fSMomchil Velikov 149*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_u32( 150*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP:%.*]]) #[[ATTR0]] { 151*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 152*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP]] to <vscale x 16 x i8> 153*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 154*16e45b8fSMomchil Velikov // 155*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_u32u12__SVUint32_t( 156*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP:%.*]]) #[[ATTR0]] { 157*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 158*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x i32> [[OP]] to <vscale x 16 x i8> 159*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 160*16e45b8fSMomchil Velikov // 161*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_u32(svuint32_t op) STREAMING { 162*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u32)(op); 163*16e45b8fSMomchil Velikov } 164*16e45b8fSMomchil Velikov 165*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_s64( 166*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP:%.*]]) #[[ATTR0]] { 167*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 168*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP]] to <vscale x 16 x i8> 169*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 170*16e45b8fSMomchil Velikov // 171*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_s64u11__SVInt64_t( 172*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP:%.*]]) #[[ATTR0]] { 173*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 174*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP]] to <vscale x 16 x i8> 175*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 176*16e45b8fSMomchil Velikov // 177*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_s64(svint64_t op) STREAMING { 178*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s64)(op); 179*16e45b8fSMomchil Velikov } 180*16e45b8fSMomchil Velikov 181*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_u64( 182*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP:%.*]]) #[[ATTR0]] { 183*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 184*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP]] to <vscale x 16 x i8> 185*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 186*16e45b8fSMomchil Velikov // 187*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_u64u12__SVUint64_t( 188*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP:%.*]]) #[[ATTR0]] { 189*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 190*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x i64> [[OP]] to <vscale x 16 x i8> 191*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 192*16e45b8fSMomchil Velikov // 193*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_u64(svuint64_t op) STREAMING { 194*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u64)(op); 195*16e45b8fSMomchil Velikov } 196*16e45b8fSMomchil Velikov 197*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_f16( 198*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x half> [[OP:%.*]]) #[[ATTR0]] { 199*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 200*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP]] to <vscale x 16 x i8> 201*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 202*16e45b8fSMomchil Velikov // 203*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_f16u13__SVFloat16_t( 204*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x half> [[OP:%.*]]) #[[ATTR0]] { 205*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 206*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x half> [[OP]] to <vscale x 16 x i8> 207*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 208*16e45b8fSMomchil Velikov // 209*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_f16(svfloat16_t op) STREAMING { 210*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f16)(op); 211*16e45b8fSMomchil Velikov } 212*16e45b8fSMomchil Velikov 213*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_bf16( 214*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x bfloat> [[OP:%.*]]) #[[ATTR0]] { 215*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 216*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x bfloat> [[OP]] to <vscale x 16 x i8> 217*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 218*16e45b8fSMomchil Velikov // 219*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z27test_svreinterpret_mf8_bf16u14__SVBfloat16_t( 220*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x bfloat> [[OP:%.*]]) #[[ATTR0]] { 221*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 222*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x bfloat> [[OP]] to <vscale x 16 x i8> 223*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 224*16e45b8fSMomchil Velikov // 225*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_bf16(svbfloat16_t op) STREAMING { 226*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _bf16)(op); 227*16e45b8fSMomchil Velikov } 228*16e45b8fSMomchil Velikov 229*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_f32( 230*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x float> [[OP:%.*]]) #[[ATTR0]] { 231*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 232*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP]] to <vscale x 16 x i8> 233*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 234*16e45b8fSMomchil Velikov // 235*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_f32u13__SVFloat32_t( 236*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x float> [[OP:%.*]]) #[[ATTR0]] { 237*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 238*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 4 x float> [[OP]] to <vscale x 16 x i8> 239*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 240*16e45b8fSMomchil Velikov // 241*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_f32(svfloat32_t op) STREAMING { 242*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f32)(op); 243*16e45b8fSMomchil Velikov } 244*16e45b8fSMomchil Velikov 245*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 16 x i8> @test_svreinterpret_mf8_f64( 246*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x double> [[OP:%.*]]) #[[ATTR0]] { 247*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 248*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP]] to <vscale x 16 x i8> 249*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 250*16e45b8fSMomchil Velikov // 251*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 16 x i8> @_Z26test_svreinterpret_mf8_f64u13__SVFloat64_t( 252*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x double> [[OP:%.*]]) #[[ATTR0]] { 253*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 254*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 2 x double> [[OP]] to <vscale x 16 x i8> 255*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 16 x i8> [[TMP0]] 256*16e45b8fSMomchil Velikov // 257*16e45b8fSMomchil Velikov svmfloat8_t test_svreinterpret_mf8_f64(svfloat64_t op) STREAMING { 258*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f64)(op); 259*16e45b8fSMomchil Velikov } 260*16e45b8fSMomchil Velikov 261*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 8 x i16> @test_svreinterpret_s16_mf8( 262*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 263*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 264*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x i16> 265*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]] 266*16e45b8fSMomchil Velikov // 267*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 8 x i16> @_Z26test_svreinterpret_s16_mf8u13__SVMfloat8_t( 268*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 269*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 270*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x i16> 271*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 8 x i16> [[TMP0]] 272*16e45b8fSMomchil Velikov // 273*16e45b8fSMomchil Velikov svint16_t test_svreinterpret_s16_mf8(svmfloat8_t op) STREAMING { 274*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s16, _mf8)(op); 275*16e45b8fSMomchil Velikov } 276*16e45b8fSMomchil Velikov 277*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 8 x i16> @test_svreinterpret_u16_mf8( 278*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 279*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 280*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x i16> 281*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]] 282*16e45b8fSMomchil Velikov // 283*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 8 x i16> @_Z26test_svreinterpret_u16_mf8u13__SVMfloat8_t( 284*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 285*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 286*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x i16> 287*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 8 x i16> [[TMP0]] 288*16e45b8fSMomchil Velikov // 289*16e45b8fSMomchil Velikov svuint16_t test_svreinterpret_u16_mf8(svmfloat8_t op) STREAMING { 290*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u16, _mf8)(op); 291*16e45b8fSMomchil Velikov } 292*16e45b8fSMomchil Velikov 293*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 4 x i32> @test_svreinterpret_s32_mf8( 294*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 295*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 296*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 4 x i32> 297*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]] 298*16e45b8fSMomchil Velikov // 299*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 4 x i32> @_Z26test_svreinterpret_s32_mf8u13__SVMfloat8_t( 300*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 301*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 302*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 4 x i32> 303*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 4 x i32> [[TMP0]] 304*16e45b8fSMomchil Velikov // 305*16e45b8fSMomchil Velikov svint32_t test_svreinterpret_s32_mf8(svmfloat8_t op) STREAMING { 306*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s32, _mf8)(op); 307*16e45b8fSMomchil Velikov } 308*16e45b8fSMomchil Velikov 309*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 4 x i32> @test_svreinterpret_u32_mf8( 310*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 311*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 312*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 4 x i32> 313*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]] 314*16e45b8fSMomchil Velikov // 315*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 4 x i32> @_Z26test_svreinterpret_u32_mf8u13__SVMfloat8_t( 316*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 317*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 318*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 4 x i32> 319*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 4 x i32> [[TMP0]] 320*16e45b8fSMomchil Velikov // 321*16e45b8fSMomchil Velikov svuint32_t test_svreinterpret_u32_mf8(svmfloat8_t op) STREAMING { 322*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u32, _mf8)(op); 323*16e45b8fSMomchil Velikov } 324*16e45b8fSMomchil Velikov 325*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 2 x i64> @test_svreinterpret_s64_mf8( 326*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 327*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 328*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 2 x i64> 329*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]] 330*16e45b8fSMomchil Velikov // 331*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 2 x i64> @_Z26test_svreinterpret_s64_mf8u13__SVMfloat8_t( 332*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 333*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 334*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 2 x i64> 335*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 2 x i64> [[TMP0]] 336*16e45b8fSMomchil Velikov // 337*16e45b8fSMomchil Velikov svint64_t test_svreinterpret_s64_mf8(svmfloat8_t op) STREAMING { 338*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s64, _mf8)(op); 339*16e45b8fSMomchil Velikov } 340*16e45b8fSMomchil Velikov 341*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 2 x i64> @test_svreinterpret_u64_mf8( 342*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 343*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 344*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 2 x i64> 345*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]] 346*16e45b8fSMomchil Velikov // 347*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 2 x i64> @_Z26test_svreinterpret_u64_mf8u13__SVMfloat8_t( 348*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 349*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 350*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 2 x i64> 351*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 2 x i64> [[TMP0]] 352*16e45b8fSMomchil Velikov // 353*16e45b8fSMomchil Velikov svuint64_t test_svreinterpret_u64_mf8(svmfloat8_t op) STREAMING { 354*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u64, _mf8)(op); 355*16e45b8fSMomchil Velikov } 356*16e45b8fSMomchil Velikov 357*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 8 x half> @test_svreinterpret_f16_mf8( 358*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 359*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 360*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x half> 361*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]] 362*16e45b8fSMomchil Velikov // 363*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 8 x half> @_Z26test_svreinterpret_f16_mf8u13__SVMfloat8_t( 364*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 365*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 366*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x half> 367*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 8 x half> [[TMP0]] 368*16e45b8fSMomchil Velikov // 369*16e45b8fSMomchil Velikov svfloat16_t test_svreinterpret_f16_mf8(svmfloat8_t op) STREAMING { 370*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f16, _mf8)(op); 371*16e45b8fSMomchil Velikov } 372*16e45b8fSMomchil Velikov 373*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 8 x bfloat> @test_svreinterpret_bf16_mf8( 374*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 375*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 376*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x bfloat> 377*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 8 x bfloat> [[TMP0]] 378*16e45b8fSMomchil Velikov // 379*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 8 x bfloat> @_Z27test_svreinterpret_bf16_mf8u13__SVMfloat8_t( 380*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 381*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 382*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 8 x bfloat> 383*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 8 x bfloat> [[TMP0]] 384*16e45b8fSMomchil Velikov // 385*16e45b8fSMomchil Velikov svbfloat16_t test_svreinterpret_bf16_mf8(svmfloat8_t op) STREAMING { 386*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_bf16, _mf8)(op); 387*16e45b8fSMomchil Velikov } 388*16e45b8fSMomchil Velikov 389*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 4 x float> @test_svreinterpret_f32_mf8( 390*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 391*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 392*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 4 x float> 393*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]] 394*16e45b8fSMomchil Velikov // 395*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 4 x float> @_Z26test_svreinterpret_f32_mf8u13__SVMfloat8_t( 396*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 397*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 398*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 4 x float> 399*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 4 x float> [[TMP0]] 400*16e45b8fSMomchil Velikov // 401*16e45b8fSMomchil Velikov svfloat32_t test_svreinterpret_f32_mf8(svmfloat8_t op) STREAMING { 402*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f32, _mf8)(op); 403*16e45b8fSMomchil Velikov } 404*16e45b8fSMomchil Velikov 405*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local <vscale x 2 x double> @test_svreinterpret_f64_mf8( 406*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 407*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 408*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 2 x double> 409*16e45b8fSMomchil Velikov // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]] 410*16e45b8fSMomchil Velikov // 411*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local <vscale x 2 x double> @_Z26test_svreinterpret_f64_mf8u13__SVMfloat8_t( 412*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP:%.*]]) #[[ATTR0]] { 413*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 414*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i8> [[OP]] to <vscale x 2 x double> 415*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret <vscale x 2 x double> [[TMP0]] 416*16e45b8fSMomchil Velikov // 417*16e45b8fSMomchil Velikov svfloat64_t test_svreinterpret_f64_mf8(svmfloat8_t op) STREAMING { 418*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f64, _mf8)(op); 419*16e45b8fSMomchil Velikov } 420*16e45b8fSMomchil Velikov 421*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_s8_mf8_x2( 422*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 423*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 424*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 425*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 426*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 427*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 428*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 429*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 430*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 431*16e45b8fSMomchil Velikov // 432*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_s8_mf8_x213svmfloat8x2_t( 433*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 434*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 435*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 436*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 437*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 438*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 439*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 440*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 441*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 442*16e45b8fSMomchil Velikov // 443*16e45b8fSMomchil Velikov svint8x2_t test_svreinterpret_s8_mf8_x2(svmfloat8x2_t op) STREAMING { 444*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s8, _mf8_x2)(op); 445*16e45b8fSMomchil Velikov } 446*16e45b8fSMomchil Velikov 447*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_u8_mf8_x2( 448*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 449*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 450*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 451*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 452*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 453*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 454*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 455*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 456*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 457*16e45b8fSMomchil Velikov // 458*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_u8_mf8_x213svmfloat8x2_t( 459*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 460*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 461*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 462*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 463*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 464*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 465*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 466*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 467*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 468*16e45b8fSMomchil Velikov // 469*16e45b8fSMomchil Velikov svuint8x2_t test_svreinterpret_u8_mf8_x2(svmfloat8x2_t op) STREAMING { 470*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u8, _mf8_x2)(op); 471*16e45b8fSMomchil Velikov } 472*16e45b8fSMomchil Velikov 473*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s8_x2( 474*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 475*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 476*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 477*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 478*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 479*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 480*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 481*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 482*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 483*16e45b8fSMomchil Velikov // 484*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_mf8_s8_x210svint8x2_t( 485*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 486*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 487*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 488*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 489*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 490*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 491*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 492*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 493*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 494*16e45b8fSMomchil Velikov // 495*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_s8_x2(svint8x2_t op) STREAMING { 496*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s8_x2)(op); 497*16e45b8fSMomchil Velikov } 498*16e45b8fSMomchil Velikov 499*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u8_x2( 500*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 501*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 502*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 503*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 504*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 505*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 506*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 507*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 508*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 509*16e45b8fSMomchil Velikov // 510*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_mf8_u8_x211svuint8x2_t( 511*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 512*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 513*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 514*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 515*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 516*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 517*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 518*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 519*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 520*16e45b8fSMomchil Velikov // 521*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_u8_x2(svuint8x2_t op) STREAMING { 522*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u8_x2)(op); 523*16e45b8fSMomchil Velikov } 524*16e45b8fSMomchil Velikov 525*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_mf8_x2( 526*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 527*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 528*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 529*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 530*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 531*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 532*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 533*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 534*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 535*16e45b8fSMomchil Velikov // 536*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_mf8_x213svmfloat8x2_t( 537*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 538*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 539*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 540*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 541*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 542*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP2]], 0 543*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 544*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], <vscale x 16 x i8> [[TMP4]], 1 545*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]] 546*16e45b8fSMomchil Velikov // 547*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_mf8_x2(svmfloat8x2_t op) STREAMING { 548*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _mf8_x2)(op); 549*16e45b8fSMomchil Velikov } 550*16e45b8fSMomchil Velikov 551*16e45b8fSMomchil Velikov // 552*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s16_x2( 553*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 554*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 555*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 556*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 557*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 0 558*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x i16> [[TMP2]] to <vscale x 16 x i8> 559*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 560*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 1 561*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x i16> [[TMP5]] to <vscale x 16 x i8> 562*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 563*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 564*16e45b8fSMomchil Velikov // 565*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s16_x211svint16x2_t( 566*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 567*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 568*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 569*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 570*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 0 571*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x i16> [[TMP2]] to <vscale x 16 x i8> 572*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 573*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 1 574*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x i16> [[TMP5]] to <vscale x 16 x i8> 575*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 576*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 577*16e45b8fSMomchil Velikov // 578*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_s16_x2(svint16x2_t op) STREAMING { 579*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s16_x2)(op); 580*16e45b8fSMomchil Velikov } 581*16e45b8fSMomchil Velikov 582*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u16_x2( 583*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 584*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 585*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 586*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 587*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 0 588*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x i16> [[TMP2]] to <vscale x 16 x i8> 589*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 590*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 1 591*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x i16> [[TMP5]] to <vscale x 16 x i8> 592*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 593*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 594*16e45b8fSMomchil Velikov // 595*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u16_x212svuint16x2_t( 596*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 597*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 598*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 599*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 600*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 0 601*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x i16> [[TMP2]] to <vscale x 16 x i8> 602*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 603*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], 1 604*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x i16> [[TMP5]] to <vscale x 16 x i8> 605*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 606*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 607*16e45b8fSMomchil Velikov // 608*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_u16_x2(svuint16x2_t op) STREAMING { 609*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u16_x2)(op); 610*16e45b8fSMomchil Velikov } 611*16e45b8fSMomchil Velikov 612*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s32_x2( 613*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 614*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 615*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 616*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 617*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 0 618*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 4 x i32> [[TMP2]] to <vscale x 16 x i8> 619*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 620*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 1 621*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 4 x i32> [[TMP5]] to <vscale x 16 x i8> 622*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 623*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 624*16e45b8fSMomchil Velikov // 625*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s32_x211svint32x2_t( 626*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 627*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 628*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 629*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 630*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 0 631*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 4 x i32> [[TMP2]] to <vscale x 16 x i8> 632*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 633*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 1 634*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 4 x i32> [[TMP5]] to <vscale x 16 x i8> 635*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 636*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 637*16e45b8fSMomchil Velikov // 638*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_s32_x2(svint32x2_t op) STREAMING { 639*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s32_x2)(op); 640*16e45b8fSMomchil Velikov } 641*16e45b8fSMomchil Velikov 642*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u32_x2( 643*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 644*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 645*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 646*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 647*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 0 648*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 4 x i32> [[TMP2]] to <vscale x 16 x i8> 649*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 650*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 1 651*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 4 x i32> [[TMP5]] to <vscale x 16 x i8> 652*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 653*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 654*16e45b8fSMomchil Velikov // 655*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u32_x212svuint32x2_t( 656*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 657*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 658*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 659*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 660*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 0 661*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 4 x i32> [[TMP2]] to <vscale x 16 x i8> 662*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 663*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], 1 664*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 4 x i32> [[TMP5]] to <vscale x 16 x i8> 665*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 666*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 667*16e45b8fSMomchil Velikov // 668*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_u32_x2(svuint32x2_t op) STREAMING { 669*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u32_x2)(op); 670*16e45b8fSMomchil Velikov } 671*16e45b8fSMomchil Velikov 672*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s64_x2( 673*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 674*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 675*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 676*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 677*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 0 678*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 2 x i64> [[TMP2]] to <vscale x 16 x i8> 679*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 680*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 1 681*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 2 x i64> [[TMP5]] to <vscale x 16 x i8> 682*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 683*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 684*16e45b8fSMomchil Velikov // 685*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s64_x211svint64x2_t( 686*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 687*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 688*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 689*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 690*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 0 691*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 2 x i64> [[TMP2]] to <vscale x 16 x i8> 692*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 693*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 1 694*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 2 x i64> [[TMP5]] to <vscale x 16 x i8> 695*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 696*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 697*16e45b8fSMomchil Velikov // 698*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_s64_x2(svint64x2_t op) STREAMING { 699*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s64_x2)(op); 700*16e45b8fSMomchil Velikov } 701*16e45b8fSMomchil Velikov 702*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u64_x2( 703*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 704*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 705*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 706*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 707*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 0 708*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 2 x i64> [[TMP2]] to <vscale x 16 x i8> 709*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 710*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 1 711*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 2 x i64> [[TMP5]] to <vscale x 16 x i8> 712*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 713*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 714*16e45b8fSMomchil Velikov // 715*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u64_x212svuint64x2_t( 716*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 717*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 718*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 719*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 720*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 0 721*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 2 x i64> [[TMP2]] to <vscale x 16 x i8> 722*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 723*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], 1 724*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 2 x i64> [[TMP5]] to <vscale x 16 x i8> 725*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 726*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 727*16e45b8fSMomchil Velikov // 728*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_u64_x2(svuint64x2_t op) STREAMING { 729*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u64_x2)(op); 730*16e45b8fSMomchil Velikov } 731*16e45b8fSMomchil Velikov 732*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f16_x2( 733*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x half> [[OP_COERCE0:%.*]], <vscale x 8 x half> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 734*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 735*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[OP_COERCE0]], 0 736*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]], <vscale x 8 x half> [[OP_COERCE1]], 1 737*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], 0 738*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x half> [[TMP2]] to <vscale x 16 x i8> 739*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 740*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], 1 741*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x half> [[TMP5]] to <vscale x 16 x i8> 742*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 743*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 744*16e45b8fSMomchil Velikov // 745*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f16_x213svfloat16x2_t( 746*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x half> [[OP_COERCE0:%.*]], <vscale x 8 x half> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 747*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 748*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[OP_COERCE0]], 0 749*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]], <vscale x 8 x half> [[OP_COERCE1]], 1 750*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], 0 751*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x half> [[TMP2]] to <vscale x 16 x i8> 752*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 753*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], 1 754*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x half> [[TMP5]] to <vscale x 16 x i8> 755*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 756*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 757*16e45b8fSMomchil Velikov // 758*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_f16_x2(svfloat16x2_t op) STREAMING { 759*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f16_x2)(op); 760*16e45b8fSMomchil Velikov } 761*16e45b8fSMomchil Velikov 762*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_bf16_x2( 763*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x bfloat> [[OP_COERCE0:%.*]], <vscale x 8 x bfloat> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 764*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 765*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[OP_COERCE0]], 0 766*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]], <vscale x 8 x bfloat> [[OP_COERCE1]], 1 767*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], 0 768*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP2]] to <vscale x 16 x i8> 769*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 770*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], 1 771*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP5]] to <vscale x 16 x i8> 772*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 773*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 774*16e45b8fSMomchil Velikov // 775*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z30test_svreinterpret_mf8_bf16_x214svbfloat16x2_t( 776*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x bfloat> [[OP_COERCE0:%.*]], <vscale x 8 x bfloat> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 777*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 778*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[OP_COERCE0]], 0 779*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]], <vscale x 8 x bfloat> [[OP_COERCE1]], 1 780*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], 0 781*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP2]] to <vscale x 16 x i8> 782*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 783*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], 1 784*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP5]] to <vscale x 16 x i8> 785*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 786*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 787*16e45b8fSMomchil Velikov // 788*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_bf16_x2(svbfloat16x2_t op) STREAMING { 789*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _bf16_x2)(op); 790*16e45b8fSMomchil Velikov } 791*16e45b8fSMomchil Velikov 792*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f32_x2( 793*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x float> [[OP_COERCE0:%.*]], <vscale x 4 x float> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 794*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 795*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[OP_COERCE0]], 0 796*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]], <vscale x 4 x float> [[OP_COERCE1]], 1 797*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], 0 798*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 4 x float> [[TMP2]] to <vscale x 16 x i8> 799*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 800*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], 1 801*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 4 x float> [[TMP5]] to <vscale x 16 x i8> 802*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 803*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 804*16e45b8fSMomchil Velikov // 805*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f32_x213svfloat32x2_t( 806*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x float> [[OP_COERCE0:%.*]], <vscale x 4 x float> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 807*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 808*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[OP_COERCE0]], 0 809*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]], <vscale x 4 x float> [[OP_COERCE1]], 1 810*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], 0 811*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 4 x float> [[TMP2]] to <vscale x 16 x i8> 812*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 813*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], 1 814*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 4 x float> [[TMP5]] to <vscale x 16 x i8> 815*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 816*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 817*16e45b8fSMomchil Velikov // 818*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_f32_x2(svfloat32x2_t op) STREAMING { 819*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f32_x2)(op); 820*16e45b8fSMomchil Velikov } 821*16e45b8fSMomchil Velikov 822*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f64_x2( 823*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x double> [[OP_COERCE0:%.*]], <vscale x 2 x double> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 824*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 825*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[OP_COERCE0]], 0 826*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]], <vscale x 2 x double> [[OP_COERCE1]], 1 827*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], 0 828*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 2 x double> [[TMP2]] to <vscale x 16 x i8> 829*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 830*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], 1 831*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 2 x double> [[TMP5]] to <vscale x 16 x i8> 832*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 833*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 834*16e45b8fSMomchil Velikov // 835*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f64_x213svfloat64x2_t( 836*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x double> [[OP_COERCE0:%.*]], <vscale x 2 x double> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 837*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 838*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[OP_COERCE0]], 0 839*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]], <vscale x 2 x double> [[OP_COERCE1]], 1 840*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], 0 841*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 2 x double> [[TMP2]] to <vscale x 16 x i8> 842*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 843*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], 1 844*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 2 x double> [[TMP5]] to <vscale x 16 x i8> 845*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP6]], 1 846*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]] 847*16e45b8fSMomchil Velikov // 848*16e45b8fSMomchil Velikov svmfloat8x2_t test_svreinterpret_mf8_f64_x2(svfloat64x2_t op) STREAMING { 849*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f64_x2)(op); 850*16e45b8fSMomchil Velikov } 851*16e45b8fSMomchil Velikov 852*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16> } @test_svreinterpret_s16_mf8_x2( 853*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 854*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 855*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 856*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 857*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 858*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x i16> 859*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP3]], 0 860*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 861*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x i16> 862*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP4]], <vscale x 8 x i16> [[TMP6]], 1 863*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP7]] 864*16e45b8fSMomchil Velikov // 865*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16> } @_Z29test_svreinterpret_s16_mf8_x213svmfloat8x2_t( 866*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 867*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 868*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 869*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 870*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 871*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x i16> 872*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP3]], 0 873*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 874*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x i16> 875*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP4]], <vscale x 8 x i16> [[TMP6]], 1 876*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP7]] 877*16e45b8fSMomchil Velikov // 878*16e45b8fSMomchil Velikov svint16x2_t test_svreinterpret_s16_mf8_x2(svmfloat8x2_t op) STREAMING { 879*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s16, _mf8_x2)(op); 880*16e45b8fSMomchil Velikov } 881*16e45b8fSMomchil Velikov 882*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16> } @test_svreinterpret_u16_mf8_x2( 883*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 884*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 885*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 886*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 887*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 888*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x i16> 889*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP3]], 0 890*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 891*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x i16> 892*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP4]], <vscale x 8 x i16> [[TMP6]], 1 893*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP7]] 894*16e45b8fSMomchil Velikov // 895*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16> } @_Z29test_svreinterpret_u16_mf8_x213svmfloat8x2_t( 896*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 897*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 898*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 899*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 900*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 901*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x i16> 902*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP3]], 0 903*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 904*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x i16> 905*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP4]], <vscale x 8 x i16> [[TMP6]], 1 906*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP7]] 907*16e45b8fSMomchil Velikov // 908*16e45b8fSMomchil Velikov svuint16x2_t test_svreinterpret_u16_mf8_x2(svmfloat8x2_t op) STREAMING { 909*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u16, _mf8_x2)(op); 910*16e45b8fSMomchil Velikov } 911*16e45b8fSMomchil Velikov 912*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32> } @test_svreinterpret_s32_mf8_x2( 913*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 914*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 915*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 916*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 917*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 918*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 4 x i32> 919*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP3]], 0 920*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 921*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 4 x i32> 922*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP4]], <vscale x 4 x i32> [[TMP6]], 1 923*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP7]] 924*16e45b8fSMomchil Velikov // 925*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32> } @_Z29test_svreinterpret_s32_mf8_x213svmfloat8x2_t( 926*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 927*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 928*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 929*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 930*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 931*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 4 x i32> 932*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP3]], 0 933*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 934*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 4 x i32> 935*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP4]], <vscale x 4 x i32> [[TMP6]], 1 936*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP7]] 937*16e45b8fSMomchil Velikov // 938*16e45b8fSMomchil Velikov svint32x2_t test_svreinterpret_s32_mf8_x2(svmfloat8x2_t op) STREAMING { 939*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s32, _mf8_x2)(op); 940*16e45b8fSMomchil Velikov } 941*16e45b8fSMomchil Velikov 942*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32> } @test_svreinterpret_u32_mf8_x2( 943*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 944*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 945*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 946*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 947*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 948*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 4 x i32> 949*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP3]], 0 950*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 951*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 4 x i32> 952*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP4]], <vscale x 4 x i32> [[TMP6]], 1 953*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP7]] 954*16e45b8fSMomchil Velikov // 955*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32> } @_Z29test_svreinterpret_u32_mf8_x213svmfloat8x2_t( 956*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 957*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 958*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 959*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 960*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 961*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 4 x i32> 962*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP3]], 0 963*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 964*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 4 x i32> 965*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP4]], <vscale x 4 x i32> [[TMP6]], 1 966*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP7]] 967*16e45b8fSMomchil Velikov // 968*16e45b8fSMomchil Velikov svuint32x2_t test_svreinterpret_u32_mf8_x2(svmfloat8x2_t op) STREAMING { 969*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u32, _mf8_x2)(op); 970*16e45b8fSMomchil Velikov } 971*16e45b8fSMomchil Velikov 972*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64> } @test_svreinterpret_s64_mf8_x2( 973*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 974*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 975*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 976*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 977*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 978*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 2 x i64> 979*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP3]], 0 980*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 981*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 2 x i64> 982*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP4]], <vscale x 2 x i64> [[TMP6]], 1 983*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP7]] 984*16e45b8fSMomchil Velikov // 985*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64> } @_Z29test_svreinterpret_s64_mf8_x213svmfloat8x2_t( 986*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 987*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 988*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 989*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 990*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 991*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 2 x i64> 992*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP3]], 0 993*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 994*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 2 x i64> 995*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP4]], <vscale x 2 x i64> [[TMP6]], 1 996*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP7]] 997*16e45b8fSMomchil Velikov // 998*16e45b8fSMomchil Velikov svint64x2_t test_svreinterpret_s64_mf8_x2(svmfloat8x2_t op) STREAMING { 999*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s64, _mf8_x2)(op); 1000*16e45b8fSMomchil Velikov } 1001*16e45b8fSMomchil Velikov 1002*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64> } @test_svreinterpret_u64_mf8_x2( 1003*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1004*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1005*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1006*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1007*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1008*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 2 x i64> 1009*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP3]], 0 1010*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1011*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 2 x i64> 1012*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP4]], <vscale x 2 x i64> [[TMP6]], 1 1013*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP7]] 1014*16e45b8fSMomchil Velikov // 1015*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64> } @_Z29test_svreinterpret_u64_mf8_x213svmfloat8x2_t( 1016*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1017*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1018*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1019*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1020*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1021*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 2 x i64> 1022*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP3]], 0 1023*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1024*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 2 x i64> 1025*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP4]], <vscale x 2 x i64> [[TMP6]], 1 1026*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP7]] 1027*16e45b8fSMomchil Velikov // 1028*16e45b8fSMomchil Velikov svuint64x2_t test_svreinterpret_u64_mf8_x2(svmfloat8x2_t op) STREAMING { 1029*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u64, _mf8_x2)(op); 1030*16e45b8fSMomchil Velikov } 1031*16e45b8fSMomchil Velikov 1032*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x half>, <vscale x 8 x half> } @test_svreinterpret_f16_mf8_x2( 1033*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1034*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1035*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1036*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1037*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1038*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x half> 1039*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[TMP3]], 0 1040*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1041*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x half> 1042*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP4]], <vscale x 8 x half> [[TMP6]], 1 1043*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP7]] 1044*16e45b8fSMomchil Velikov // 1045*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x half>, <vscale x 8 x half> } @_Z29test_svreinterpret_f16_mf8_x213svmfloat8x2_t( 1046*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1047*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1048*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1049*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1050*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1051*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x half> 1052*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[TMP3]], 0 1053*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1054*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x half> 1055*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP4]], <vscale x 8 x half> [[TMP6]], 1 1056*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half> } [[TMP7]] 1057*16e45b8fSMomchil Velikov // 1058*16e45b8fSMomchil Velikov svfloat16x2_t test_svreinterpret_f16_mf8_x2(svmfloat8x2_t op) STREAMING { 1059*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f16, _mf8_x2)(op); 1060*16e45b8fSMomchil Velikov } 1061*16e45b8fSMomchil Velikov 1062*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @test_svreinterpret_bf16_mf8_x2( 1063*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1064*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1065*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1066*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1067*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1068*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x bfloat> 1069*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[TMP3]], 0 1070*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1071*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x bfloat> 1072*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP4]], <vscale x 8 x bfloat> [[TMP6]], 1 1073*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP7]] 1074*16e45b8fSMomchil Velikov // 1075*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @_Z30test_svreinterpret_bf16_mf8_x213svmfloat8x2_t( 1076*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1077*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1078*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1079*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1080*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1081*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 8 x bfloat> 1082*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[TMP3]], 0 1083*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1084*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 8 x bfloat> 1085*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP4]], <vscale x 8 x bfloat> [[TMP6]], 1 1086*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP7]] 1087*16e45b8fSMomchil Velikov // 1088*16e45b8fSMomchil Velikov svbfloat16x2_t test_svreinterpret_bf16_mf8_x2(svmfloat8x2_t op) STREAMING { 1089*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_bf16, _mf8_x2)(op); 1090*16e45b8fSMomchil Velikov } 1091*16e45b8fSMomchil Velikov 1092*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x float>, <vscale x 4 x float> } @test_svreinterpret_f32_mf8_x2( 1093*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1094*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1095*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1096*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1097*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1098*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 4 x float> 1099*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[TMP3]], 0 1100*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1101*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 4 x float> 1102*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP4]], <vscale x 4 x float> [[TMP6]], 1 1103*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP7]] 1104*16e45b8fSMomchil Velikov // 1105*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x float>, <vscale x 4 x float> } @_Z29test_svreinterpret_f32_mf8_x213svmfloat8x2_t( 1106*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1107*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1108*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1109*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1110*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1111*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 4 x float> 1112*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[TMP3]], 0 1113*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1114*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 4 x float> 1115*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP4]], <vscale x 4 x float> [[TMP6]], 1 1116*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float> } [[TMP7]] 1117*16e45b8fSMomchil Velikov // 1118*16e45b8fSMomchil Velikov svfloat32x2_t test_svreinterpret_f32_mf8_x2(svmfloat8x2_t op) STREAMING { 1119*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f32, _mf8_x2)(op); 1120*16e45b8fSMomchil Velikov } 1121*16e45b8fSMomchil Velikov 1122*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x double>, <vscale x 2 x double> } @test_svreinterpret_f64_mf8_x2( 1123*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1124*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1125*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1126*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1127*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1128*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 2 x double> 1129*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[TMP3]], 0 1130*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1131*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 2 x double> 1132*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP4]], <vscale x 2 x double> [[TMP6]], 1 1133*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP7]] 1134*16e45b8fSMomchil Velikov // 1135*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x double>, <vscale x 2 x double> } @_Z29test_svreinterpret_f64_mf8_x213svmfloat8x2_t( 1136*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]]) #[[ATTR0]] { 1137*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1138*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1139*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1140*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 0 1141*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = bitcast <vscale x 16 x i8> [[TMP2]] to <vscale x 2 x double> 1142*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[TMP3]], 0 1143*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], 1 1144*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = bitcast <vscale x 16 x i8> [[TMP5]] to <vscale x 2 x double> 1145*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP4]], <vscale x 2 x double> [[TMP6]], 1 1146*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double> } [[TMP7]] 1147*16e45b8fSMomchil Velikov // 1148*16e45b8fSMomchil Velikov svfloat64x2_t test_svreinterpret_f64_mf8_x2(svmfloat8x2_t op) STREAMING { 1149*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f64, _mf8_x2)(op); 1150*16e45b8fSMomchil Velikov } 1151*16e45b8fSMomchil Velikov 1152*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_s8_mf8_x3( 1153*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1154*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1155*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1156*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1157*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1158*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1159*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1160*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1161*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1162*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1163*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1164*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1165*16e45b8fSMomchil Velikov // 1166*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_s8_mf8_x313svmfloat8x3_t( 1167*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1168*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1169*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1170*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1171*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1172*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1173*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1174*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1175*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1176*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1177*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1178*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1179*16e45b8fSMomchil Velikov // 1180*16e45b8fSMomchil Velikov svint8x3_t test_svreinterpret_s8_mf8_x3(svmfloat8x3_t op) STREAMING { 1181*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s8, _mf8_x3)(op); 1182*16e45b8fSMomchil Velikov } 1183*16e45b8fSMomchil Velikov 1184*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_u8_mf8_x3( 1185*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1186*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1187*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1188*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1189*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1190*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1191*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1192*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1193*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1194*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1195*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1196*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1197*16e45b8fSMomchil Velikov // 1198*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_u8_mf8_x313svmfloat8x3_t( 1199*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1200*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1201*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1202*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1203*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1204*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1205*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1206*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1207*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1208*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1209*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1210*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1211*16e45b8fSMomchil Velikov // 1212*16e45b8fSMomchil Velikov svuint8x3_t test_svreinterpret_u8_mf8_x3(svmfloat8x3_t op) STREAMING { 1213*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u8, _mf8_x3)(op); 1214*16e45b8fSMomchil Velikov } 1215*16e45b8fSMomchil Velikov 1216*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s8_x3( 1217*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1218*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1219*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1220*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1221*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1222*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1223*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1224*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1225*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1226*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1227*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1228*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1229*16e45b8fSMomchil Velikov // 1230*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_mf8_s8_x310svint8x3_t( 1231*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1232*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1233*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1234*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1235*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1236*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1237*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1238*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1239*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1240*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1241*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1242*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1243*16e45b8fSMomchil Velikov // 1244*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_s8_x3(svint8x3_t op) STREAMING { 1245*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s8_x3)(op); 1246*16e45b8fSMomchil Velikov } 1247*16e45b8fSMomchil Velikov 1248*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u8_x3( 1249*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1250*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1251*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1252*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1253*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1254*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1255*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1256*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1257*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1258*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1259*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1260*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1261*16e45b8fSMomchil Velikov // 1262*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_mf8_u8_x311svuint8x3_t( 1263*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1264*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1265*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1266*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1267*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1268*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1269*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1270*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1271*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1272*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1273*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1274*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1275*16e45b8fSMomchil Velikov // 1276*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_u8_x3(svuint8x3_t op) STREAMING { 1277*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u8_x3)(op); 1278*16e45b8fSMomchil Velikov } 1279*16e45b8fSMomchil Velikov 1280*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_mf8_x3( 1281*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1282*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1283*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1284*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1285*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1286*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1287*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1288*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1289*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1290*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1291*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1292*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1293*16e45b8fSMomchil Velikov // 1294*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_mf8_x313svmfloat8x3_t( 1295*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1296*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1297*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1298*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1299*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1300*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1301*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP3]], 0 1302*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1303*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP4]], <vscale x 16 x i8> [[TMP5]], 1 1304*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1305*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP7]], 2 1306*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]] 1307*16e45b8fSMomchil Velikov // 1308*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_mf8_x3(svmfloat8x3_t op) STREAMING { 1309*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _mf8_x3)(op); 1310*16e45b8fSMomchil Velikov } 1311*16e45b8fSMomchil Velikov 1312*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s16_x3( 1313*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1314*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1315*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 1316*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 1317*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 1318*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 0 1319*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x i16> [[TMP3]] to <vscale x 16 x i8> 1320*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1321*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 1 1322*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x i16> [[TMP6]] to <vscale x 16 x i8> 1323*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1324*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 2 1325*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x i16> [[TMP9]] to <vscale x 16 x i8> 1326*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1327*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1328*16e45b8fSMomchil Velikov // 1329*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s16_x311svint16x3_t( 1330*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1331*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1332*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 1333*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 1334*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 1335*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 0 1336*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x i16> [[TMP3]] to <vscale x 16 x i8> 1337*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1338*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 1 1339*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x i16> [[TMP6]] to <vscale x 16 x i8> 1340*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1341*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 2 1342*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x i16> [[TMP9]] to <vscale x 16 x i8> 1343*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1344*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1345*16e45b8fSMomchil Velikov // 1346*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_s16_x3(svint16x3_t op) STREAMING { 1347*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s16_x3)(op); 1348*16e45b8fSMomchil Velikov } 1349*16e45b8fSMomchil Velikov 1350*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u16_x3( 1351*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1352*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1353*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 1354*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 1355*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 1356*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 0 1357*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x i16> [[TMP3]] to <vscale x 16 x i8> 1358*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1359*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 1 1360*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x i16> [[TMP6]] to <vscale x 16 x i8> 1361*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1362*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 2 1363*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x i16> [[TMP9]] to <vscale x 16 x i8> 1364*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1365*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1366*16e45b8fSMomchil Velikov // 1367*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u16_x312svuint16x3_t( 1368*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1369*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1370*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 1371*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 1372*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 1373*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 0 1374*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x i16> [[TMP3]] to <vscale x 16 x i8> 1375*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1376*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 1 1377*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x i16> [[TMP6]] to <vscale x 16 x i8> 1378*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1379*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], 2 1380*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x i16> [[TMP9]] to <vscale x 16 x i8> 1381*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1382*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1383*16e45b8fSMomchil Velikov // 1384*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_u16_x3(svuint16x3_t op) STREAMING { 1385*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u16_x3)(op); 1386*16e45b8fSMomchil Velikov } 1387*16e45b8fSMomchil Velikov 1388*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s32_x3( 1389*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1390*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1391*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 1392*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 1393*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 1394*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 0 1395*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 4 x i32> [[TMP3]] to <vscale x 16 x i8> 1396*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1397*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 1 1398*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 4 x i32> [[TMP6]] to <vscale x 16 x i8> 1399*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1400*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 2 1401*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 4 x i32> [[TMP9]] to <vscale x 16 x i8> 1402*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1403*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1404*16e45b8fSMomchil Velikov // 1405*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s32_x311svint32x3_t( 1406*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1407*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1408*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 1409*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 1410*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 1411*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 0 1412*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 4 x i32> [[TMP3]] to <vscale x 16 x i8> 1413*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1414*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 1 1415*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 4 x i32> [[TMP6]] to <vscale x 16 x i8> 1416*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1417*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 2 1418*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 4 x i32> [[TMP9]] to <vscale x 16 x i8> 1419*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1420*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1421*16e45b8fSMomchil Velikov // 1422*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_s32_x3(svint32x3_t op) STREAMING { 1423*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s32_x3)(op); 1424*16e45b8fSMomchil Velikov } 1425*16e45b8fSMomchil Velikov 1426*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u32_x3( 1427*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1428*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1429*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 1430*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 1431*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 1432*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 0 1433*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 4 x i32> [[TMP3]] to <vscale x 16 x i8> 1434*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1435*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 1 1436*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 4 x i32> [[TMP6]] to <vscale x 16 x i8> 1437*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1438*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 2 1439*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 4 x i32> [[TMP9]] to <vscale x 16 x i8> 1440*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1441*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1442*16e45b8fSMomchil Velikov // 1443*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u32_x312svuint32x3_t( 1444*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1445*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1446*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 1447*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 1448*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 1449*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 0 1450*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 4 x i32> [[TMP3]] to <vscale x 16 x i8> 1451*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1452*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 1 1453*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 4 x i32> [[TMP6]] to <vscale x 16 x i8> 1454*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1455*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], 2 1456*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 4 x i32> [[TMP9]] to <vscale x 16 x i8> 1457*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1458*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1459*16e45b8fSMomchil Velikov // 1460*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_u32_x3(svuint32x3_t op) STREAMING { 1461*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u32_x3)(op); 1462*16e45b8fSMomchil Velikov } 1463*16e45b8fSMomchil Velikov 1464*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s64_x3( 1465*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1466*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1467*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 1468*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 1469*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 1470*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 0 1471*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 2 x i64> [[TMP3]] to <vscale x 16 x i8> 1472*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1473*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 1 1474*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 2 x i64> [[TMP6]] to <vscale x 16 x i8> 1475*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1476*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 2 1477*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 2 x i64> [[TMP9]] to <vscale x 16 x i8> 1478*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1479*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1480*16e45b8fSMomchil Velikov // 1481*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s64_x311svint64x3_t( 1482*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1483*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1484*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 1485*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 1486*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 1487*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 0 1488*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 2 x i64> [[TMP3]] to <vscale x 16 x i8> 1489*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1490*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 1 1491*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 2 x i64> [[TMP6]] to <vscale x 16 x i8> 1492*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1493*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 2 1494*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 2 x i64> [[TMP9]] to <vscale x 16 x i8> 1495*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1496*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1497*16e45b8fSMomchil Velikov // 1498*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_s64_x3(svint64x3_t op) STREAMING { 1499*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s64_x3)(op); 1500*16e45b8fSMomchil Velikov } 1501*16e45b8fSMomchil Velikov 1502*16e45b8fSMomchil Velikov // 1503*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u64_x3( 1504*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1505*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1506*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 1507*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 1508*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 1509*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 0 1510*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 2 x i64> [[TMP3]] to <vscale x 16 x i8> 1511*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1512*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 1 1513*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 2 x i64> [[TMP6]] to <vscale x 16 x i8> 1514*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1515*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 2 1516*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 2 x i64> [[TMP9]] to <vscale x 16 x i8> 1517*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1518*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1519*16e45b8fSMomchil Velikov // 1520*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u64_x312svuint64x3_t( 1521*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1522*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1523*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 1524*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 1525*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 1526*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 0 1527*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 2 x i64> [[TMP3]] to <vscale x 16 x i8> 1528*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1529*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 1 1530*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 2 x i64> [[TMP6]] to <vscale x 16 x i8> 1531*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1532*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], 2 1533*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 2 x i64> [[TMP9]] to <vscale x 16 x i8> 1534*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1535*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1536*16e45b8fSMomchil Velikov // 1537*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_u64_x3(svuint64x3_t op) STREAMING { 1538*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u64_x3)(op); 1539*16e45b8fSMomchil Velikov } 1540*16e45b8fSMomchil Velikov 1541*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f16_x3( 1542*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x half> [[OP_COERCE0:%.*]], <vscale x 8 x half> [[OP_COERCE1:%.*]], <vscale x 8 x half> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1543*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1544*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[OP_COERCE0]], 0 1545*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]], <vscale x 8 x half> [[OP_COERCE1]], 1 1546*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], <vscale x 8 x half> [[OP_COERCE2]], 2 1547*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], 0 1548*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x half> [[TMP3]] to <vscale x 16 x i8> 1549*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1550*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], 1 1551*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x half> [[TMP6]] to <vscale x 16 x i8> 1552*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1553*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], 2 1554*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x half> [[TMP9]] to <vscale x 16 x i8> 1555*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1556*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1557*16e45b8fSMomchil Velikov // 1558*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f16_x313svfloat16x3_t( 1559*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x half> [[OP_COERCE0:%.*]], <vscale x 8 x half> [[OP_COERCE1:%.*]], <vscale x 8 x half> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1560*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1561*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[OP_COERCE0]], 0 1562*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]], <vscale x 8 x half> [[OP_COERCE1]], 1 1563*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], <vscale x 8 x half> [[OP_COERCE2]], 2 1564*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], 0 1565*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x half> [[TMP3]] to <vscale x 16 x i8> 1566*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1567*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], 1 1568*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x half> [[TMP6]] to <vscale x 16 x i8> 1569*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1570*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], 2 1571*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x half> [[TMP9]] to <vscale x 16 x i8> 1572*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1573*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1574*16e45b8fSMomchil Velikov // 1575*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_f16_x3(svfloat16x3_t op) STREAMING { 1576*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f16_x3)(op); 1577*16e45b8fSMomchil Velikov } 1578*16e45b8fSMomchil Velikov 1579*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_bf16_x3( 1580*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x bfloat> [[OP_COERCE0:%.*]], <vscale x 8 x bfloat> [[OP_COERCE1:%.*]], <vscale x 8 x bfloat> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1581*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1582*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[OP_COERCE0]], 0 1583*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]], <vscale x 8 x bfloat> [[OP_COERCE1]], 1 1584*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], <vscale x 8 x bfloat> [[OP_COERCE2]], 2 1585*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], 0 1586*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP3]] to <vscale x 16 x i8> 1587*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1588*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], 1 1589*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP6]] to <vscale x 16 x i8> 1590*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1591*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], 2 1592*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP9]] to <vscale x 16 x i8> 1593*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1594*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1595*16e45b8fSMomchil Velikov // 1596*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z30test_svreinterpret_mf8_bf16_x314svbfloat16x3_t( 1597*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x bfloat> [[OP_COERCE0:%.*]], <vscale x 8 x bfloat> [[OP_COERCE1:%.*]], <vscale x 8 x bfloat> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1598*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1599*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[OP_COERCE0]], 0 1600*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]], <vscale x 8 x bfloat> [[OP_COERCE1]], 1 1601*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], <vscale x 8 x bfloat> [[OP_COERCE2]], 2 1602*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], 0 1603*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP3]] to <vscale x 16 x i8> 1604*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1605*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], 1 1606*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP6]] to <vscale x 16 x i8> 1607*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1608*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], 2 1609*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP9]] to <vscale x 16 x i8> 1610*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1611*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1612*16e45b8fSMomchil Velikov // 1613*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_bf16_x3(svbfloat16x3_t op) STREAMING { 1614*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _bf16_x3)(op); 1615*16e45b8fSMomchil Velikov } 1616*16e45b8fSMomchil Velikov 1617*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f32_x3( 1618*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x float> [[OP_COERCE0:%.*]], <vscale x 4 x float> [[OP_COERCE1:%.*]], <vscale x 4 x float> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1619*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1620*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[OP_COERCE0]], 0 1621*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]], <vscale x 4 x float> [[OP_COERCE1]], 1 1622*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], <vscale x 4 x float> [[OP_COERCE2]], 2 1623*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], 0 1624*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 4 x float> [[TMP3]] to <vscale x 16 x i8> 1625*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1626*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], 1 1627*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 4 x float> [[TMP6]] to <vscale x 16 x i8> 1628*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1629*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], 2 1630*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 4 x float> [[TMP9]] to <vscale x 16 x i8> 1631*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1632*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1633*16e45b8fSMomchil Velikov // 1634*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f32_x313svfloat32x3_t( 1635*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x float> [[OP_COERCE0:%.*]], <vscale x 4 x float> [[OP_COERCE1:%.*]], <vscale x 4 x float> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1636*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1637*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[OP_COERCE0]], 0 1638*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]], <vscale x 4 x float> [[OP_COERCE1]], 1 1639*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], <vscale x 4 x float> [[OP_COERCE2]], 2 1640*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], 0 1641*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 4 x float> [[TMP3]] to <vscale x 16 x i8> 1642*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1643*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], 1 1644*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 4 x float> [[TMP6]] to <vscale x 16 x i8> 1645*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1646*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], 2 1647*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 4 x float> [[TMP9]] to <vscale x 16 x i8> 1648*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1649*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1650*16e45b8fSMomchil Velikov // 1651*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_f32_x3(svfloat32x3_t op) STREAMING { 1652*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f32_x3)(op); 1653*16e45b8fSMomchil Velikov } 1654*16e45b8fSMomchil Velikov 1655*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f64_x3( 1656*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x double> [[OP_COERCE0:%.*]], <vscale x 2 x double> [[OP_COERCE1:%.*]], <vscale x 2 x double> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1657*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1658*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[OP_COERCE0]], 0 1659*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]], <vscale x 2 x double> [[OP_COERCE1]], 1 1660*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], <vscale x 2 x double> [[OP_COERCE2]], 2 1661*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], 0 1662*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 2 x double> [[TMP3]] to <vscale x 16 x i8> 1663*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1664*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], 1 1665*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 2 x double> [[TMP6]] to <vscale x 16 x i8> 1666*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1667*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], 2 1668*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 2 x double> [[TMP9]] to <vscale x 16 x i8> 1669*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1670*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1671*16e45b8fSMomchil Velikov // 1672*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f64_x313svfloat64x3_t( 1673*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x double> [[OP_COERCE0:%.*]], <vscale x 2 x double> [[OP_COERCE1:%.*]], <vscale x 2 x double> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1674*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1675*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[OP_COERCE0]], 0 1676*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]], <vscale x 2 x double> [[OP_COERCE1]], 1 1677*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], <vscale x 2 x double> [[OP_COERCE2]], 2 1678*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], 0 1679*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 2 x double> [[TMP3]] to <vscale x 16 x i8> 1680*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 1681*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], 1 1682*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 2 x double> [[TMP6]] to <vscale x 16 x i8> 1683*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP7]], 1 1684*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], 2 1685*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 2 x double> [[TMP9]] to <vscale x 16 x i8> 1686*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP8]], <vscale x 16 x i8> [[TMP10]], 2 1687*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 1688*16e45b8fSMomchil Velikov // 1689*16e45b8fSMomchil Velikov svmfloat8x3_t test_svreinterpret_mf8_f64_x3(svfloat64x3_t op) STREAMING { 1690*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f64_x3)(op); 1691*16e45b8fSMomchil Velikov } 1692*16e45b8fSMomchil Velikov 1693*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @test_svreinterpret_s16_mf8_x3( 1694*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1695*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1696*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1697*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1698*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1699*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1700*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x i16> 1701*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP4]], 0 1702*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1703*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x i16> 1704*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP5]], <vscale x 8 x i16> [[TMP7]], 1 1705*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1706*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x i16> 1707*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP8]], <vscale x 8 x i16> [[TMP10]], 2 1708*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP11]] 1709*16e45b8fSMomchil Velikov // 1710*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @_Z29test_svreinterpret_s16_mf8_x313svmfloat8x3_t( 1711*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1712*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1713*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1714*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1715*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1716*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1717*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x i16> 1718*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP4]], 0 1719*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1720*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x i16> 1721*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP5]], <vscale x 8 x i16> [[TMP7]], 1 1722*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1723*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x i16> 1724*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP8]], <vscale x 8 x i16> [[TMP10]], 2 1725*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP11]] 1726*16e45b8fSMomchil Velikov // 1727*16e45b8fSMomchil Velikov svint16x3_t test_svreinterpret_s16_mf8_x3(svmfloat8x3_t op) STREAMING { 1728*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s16, _mf8_x3)(op); 1729*16e45b8fSMomchil Velikov } 1730*16e45b8fSMomchil Velikov 1731*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @test_svreinterpret_u16_mf8_x3( 1732*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1733*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1734*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1735*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1736*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1737*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1738*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x i16> 1739*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP4]], 0 1740*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1741*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x i16> 1742*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP5]], <vscale x 8 x i16> [[TMP7]], 1 1743*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1744*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x i16> 1745*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP8]], <vscale x 8 x i16> [[TMP10]], 2 1746*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP11]] 1747*16e45b8fSMomchil Velikov // 1748*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @_Z29test_svreinterpret_u16_mf8_x313svmfloat8x3_t( 1749*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1750*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1751*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1752*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1753*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1754*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1755*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x i16> 1756*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP4]], 0 1757*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1758*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x i16> 1759*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP5]], <vscale x 8 x i16> [[TMP7]], 1 1760*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1761*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x i16> 1762*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP8]], <vscale x 8 x i16> [[TMP10]], 2 1763*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP11]] 1764*16e45b8fSMomchil Velikov // 1765*16e45b8fSMomchil Velikov svuint16x3_t test_svreinterpret_u16_mf8_x3(svmfloat8x3_t op) STREAMING { 1766*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u16, _mf8_x3)(op); 1767*16e45b8fSMomchil Velikov } 1768*16e45b8fSMomchil Velikov 1769*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @test_svreinterpret_s32_mf8_x3( 1770*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1771*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1772*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1773*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1774*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1775*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1776*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 4 x i32> 1777*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP4]], 0 1778*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1779*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 4 x i32> 1780*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP5]], <vscale x 4 x i32> [[TMP7]], 1 1781*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1782*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 4 x i32> 1783*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP8]], <vscale x 4 x i32> [[TMP10]], 2 1784*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP11]] 1785*16e45b8fSMomchil Velikov // 1786*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @_Z29test_svreinterpret_s32_mf8_x313svmfloat8x3_t( 1787*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1788*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1789*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1790*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1791*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1792*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1793*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 4 x i32> 1794*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP4]], 0 1795*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1796*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 4 x i32> 1797*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP5]], <vscale x 4 x i32> [[TMP7]], 1 1798*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1799*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 4 x i32> 1800*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP8]], <vscale x 4 x i32> [[TMP10]], 2 1801*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP11]] 1802*16e45b8fSMomchil Velikov // 1803*16e45b8fSMomchil Velikov svint32x3_t test_svreinterpret_s32_mf8_x3(svmfloat8x3_t op) STREAMING { 1804*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s32, _mf8_x3)(op); 1805*16e45b8fSMomchil Velikov } 1806*16e45b8fSMomchil Velikov 1807*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @test_svreinterpret_u32_mf8_x3( 1808*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1809*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1810*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1811*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1812*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1813*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1814*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 4 x i32> 1815*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP4]], 0 1816*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1817*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 4 x i32> 1818*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP5]], <vscale x 4 x i32> [[TMP7]], 1 1819*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1820*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 4 x i32> 1821*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP8]], <vscale x 4 x i32> [[TMP10]], 2 1822*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP11]] 1823*16e45b8fSMomchil Velikov // 1824*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @_Z29test_svreinterpret_u32_mf8_x313svmfloat8x3_t( 1825*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1826*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1827*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1828*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1829*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1830*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1831*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 4 x i32> 1832*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP4]], 0 1833*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1834*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 4 x i32> 1835*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP5]], <vscale x 4 x i32> [[TMP7]], 1 1836*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1837*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 4 x i32> 1838*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP8]], <vscale x 4 x i32> [[TMP10]], 2 1839*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP11]] 1840*16e45b8fSMomchil Velikov // 1841*16e45b8fSMomchil Velikov svuint32x3_t test_svreinterpret_u32_mf8_x3(svmfloat8x3_t op) STREAMING { 1842*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u32, _mf8_x3)(op); 1843*16e45b8fSMomchil Velikov } 1844*16e45b8fSMomchil Velikov 1845*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @test_svreinterpret_s64_mf8_x3( 1846*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1847*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1848*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1849*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1850*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1851*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1852*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 2 x i64> 1853*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP4]], 0 1854*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1855*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 2 x i64> 1856*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP5]], <vscale x 2 x i64> [[TMP7]], 1 1857*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1858*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 2 x i64> 1859*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP8]], <vscale x 2 x i64> [[TMP10]], 2 1860*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP11]] 1861*16e45b8fSMomchil Velikov // 1862*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @_Z29test_svreinterpret_s64_mf8_x313svmfloat8x3_t( 1863*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1864*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1865*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1866*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1867*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1868*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1869*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 2 x i64> 1870*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP4]], 0 1871*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1872*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 2 x i64> 1873*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP5]], <vscale x 2 x i64> [[TMP7]], 1 1874*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1875*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 2 x i64> 1876*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP8]], <vscale x 2 x i64> [[TMP10]], 2 1877*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP11]] 1878*16e45b8fSMomchil Velikov // 1879*16e45b8fSMomchil Velikov svint64x3_t test_svreinterpret_s64_mf8_x3(svmfloat8x3_t op) STREAMING { 1880*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s64, _mf8_x3)(op); 1881*16e45b8fSMomchil Velikov } 1882*16e45b8fSMomchil Velikov 1883*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @test_svreinterpret_u64_mf8_x3( 1884*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1885*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1886*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1887*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1888*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1889*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1890*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 2 x i64> 1891*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP4]], 0 1892*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1893*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 2 x i64> 1894*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP5]], <vscale x 2 x i64> [[TMP7]], 1 1895*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1896*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 2 x i64> 1897*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP8]], <vscale x 2 x i64> [[TMP10]], 2 1898*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP11]] 1899*16e45b8fSMomchil Velikov // 1900*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @_Z29test_svreinterpret_u64_mf8_x313svmfloat8x3_t( 1901*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1902*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1903*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1904*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1905*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1906*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1907*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 2 x i64> 1908*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP4]], 0 1909*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1910*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 2 x i64> 1911*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP5]], <vscale x 2 x i64> [[TMP7]], 1 1912*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1913*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 2 x i64> 1914*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP8]], <vscale x 2 x i64> [[TMP10]], 2 1915*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP11]] 1916*16e45b8fSMomchil Velikov // 1917*16e45b8fSMomchil Velikov svuint64x3_t test_svreinterpret_u64_mf8_x3(svmfloat8x3_t op) STREAMING { 1918*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u64, _mf8_x3)(op); 1919*16e45b8fSMomchil Velikov } 1920*16e45b8fSMomchil Velikov 1921*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @test_svreinterpret_f16_mf8_x3( 1922*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1923*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1924*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1925*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1926*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1927*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1928*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x half> 1929*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[TMP4]], 0 1930*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1931*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x half> 1932*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP5]], <vscale x 8 x half> [[TMP7]], 1 1933*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1934*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x half> 1935*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP8]], <vscale x 8 x half> [[TMP10]], 2 1936*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP11]] 1937*16e45b8fSMomchil Velikov // 1938*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @_Z29test_svreinterpret_f16_mf8_x313svmfloat8x3_t( 1939*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1940*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1941*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1942*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1943*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1944*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1945*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x half> 1946*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[TMP4]], 0 1947*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1948*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x half> 1949*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP5]], <vscale x 8 x half> [[TMP7]], 1 1950*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1951*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x half> 1952*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP8]], <vscale x 8 x half> [[TMP10]], 2 1953*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP11]] 1954*16e45b8fSMomchil Velikov // 1955*16e45b8fSMomchil Velikov svfloat16x3_t test_svreinterpret_f16_mf8_x3(svmfloat8x3_t op) STREAMING { 1956*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f16, _mf8_x3)(op); 1957*16e45b8fSMomchil Velikov } 1958*16e45b8fSMomchil Velikov 1959*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @test_svreinterpret_bf16_mf8_x3( 1960*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1961*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 1962*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1963*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1964*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1965*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1966*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x bfloat> 1967*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[TMP4]], 0 1968*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1969*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x bfloat> 1970*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP5]], <vscale x 8 x bfloat> [[TMP7]], 1 1971*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1972*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x bfloat> 1973*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP8]], <vscale x 8 x bfloat> [[TMP10]], 2 1974*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP11]] 1975*16e45b8fSMomchil Velikov // 1976*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @_Z30test_svreinterpret_bf16_mf8_x313svmfloat8x3_t( 1977*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1978*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 1979*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 1980*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 1981*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 1982*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 1983*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 8 x bfloat> 1984*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[TMP4]], 0 1985*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 1986*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 8 x bfloat> 1987*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP5]], <vscale x 8 x bfloat> [[TMP7]], 1 1988*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 1989*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 8 x bfloat> 1990*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP8]], <vscale x 8 x bfloat> [[TMP10]], 2 1991*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP11]] 1992*16e45b8fSMomchil Velikov // 1993*16e45b8fSMomchil Velikov svbfloat16x3_t test_svreinterpret_bf16_mf8_x3(svmfloat8x3_t op) STREAMING { 1994*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_bf16, _mf8_x3)(op); 1995*16e45b8fSMomchil Velikov } 1996*16e45b8fSMomchil Velikov 1997*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @test_svreinterpret_f32_mf8_x3( 1998*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 1999*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2000*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2001*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2002*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2003*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 2004*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 4 x float> 2005*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[TMP4]], 0 2006*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 2007*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 4 x float> 2008*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP5]], <vscale x 4 x float> [[TMP7]], 1 2009*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 2010*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 4 x float> 2011*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP8]], <vscale x 4 x float> [[TMP10]], 2 2012*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP11]] 2013*16e45b8fSMomchil Velikov // 2014*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @_Z29test_svreinterpret_f32_mf8_x313svmfloat8x3_t( 2015*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 2016*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2017*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2018*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2019*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2020*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 2021*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 4 x float> 2022*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[TMP4]], 0 2023*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 2024*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 4 x float> 2025*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP5]], <vscale x 4 x float> [[TMP7]], 1 2026*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 2027*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 4 x float> 2028*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP8]], <vscale x 4 x float> [[TMP10]], 2 2029*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP11]] 2030*16e45b8fSMomchil Velikov // 2031*16e45b8fSMomchil Velikov svfloat32x3_t test_svreinterpret_f32_mf8_x3(svmfloat8x3_t op) STREAMING { 2032*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f32, _mf8_x3)(op); 2033*16e45b8fSMomchil Velikov } 2034*16e45b8fSMomchil Velikov 2035*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @test_svreinterpret_f64_mf8_x3( 2036*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 2037*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2038*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2039*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2040*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2041*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 2042*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 2 x double> 2043*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[TMP4]], 0 2044*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 2045*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 2 x double> 2046*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP5]], <vscale x 2 x double> [[TMP7]], 1 2047*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 2048*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 2 x double> 2049*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP8]], <vscale x 2 x double> [[TMP10]], 2 2050*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP11]] 2051*16e45b8fSMomchil Velikov // 2052*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @_Z29test_svreinterpret_f64_mf8_x313svmfloat8x3_t( 2053*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]]) #[[ATTR0]] { 2054*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2055*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2056*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2057*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2058*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 0 2059*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = bitcast <vscale x 16 x i8> [[TMP3]] to <vscale x 2 x double> 2060*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[TMP4]], 0 2061*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 1 2062*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = bitcast <vscale x 16 x i8> [[TMP6]] to <vscale x 2 x double> 2063*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP5]], <vscale x 2 x double> [[TMP7]], 1 2064*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], 2 2065*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = bitcast <vscale x 16 x i8> [[TMP9]] to <vscale x 2 x double> 2066*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP8]], <vscale x 2 x double> [[TMP10]], 2 2067*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP11]] 2068*16e45b8fSMomchil Velikov // 2069*16e45b8fSMomchil Velikov svfloat64x3_t test_svreinterpret_f64_mf8_x3(svmfloat8x3_t op) STREAMING { 2070*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f64, _mf8_x3)(op); 2071*16e45b8fSMomchil Velikov } 2072*16e45b8fSMomchil Velikov 2073*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_s8_mf8_x4( 2074*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2075*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2076*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2077*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2078*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2079*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2080*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2081*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2082*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2083*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2084*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2085*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2086*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2087*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2088*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2089*16e45b8fSMomchil Velikov // 2090*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_s8_mf8_x413svmfloat8x4_t( 2091*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2092*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2093*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2094*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2095*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2096*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2097*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2098*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2099*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2100*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2101*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2102*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2103*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2104*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2105*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2106*16e45b8fSMomchil Velikov // 2107*16e45b8fSMomchil Velikov svint8x4_t test_svreinterpret_s8_mf8_x4(svmfloat8x4_t op) STREAMING { 2108*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s8, _mf8_x4)(op); 2109*16e45b8fSMomchil Velikov } 2110*16e45b8fSMomchil Velikov 2111*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_u8_mf8_x4( 2112*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2113*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2114*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2115*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2116*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2117*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2118*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2119*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2120*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2121*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2122*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2123*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2124*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2125*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2126*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2127*16e45b8fSMomchil Velikov // 2128*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_u8_mf8_x413svmfloat8x4_t( 2129*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2130*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2131*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2132*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2133*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2134*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2135*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2136*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2137*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2138*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2139*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2140*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2141*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2142*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2143*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2144*16e45b8fSMomchil Velikov // 2145*16e45b8fSMomchil Velikov svuint8x4_t test_svreinterpret_u8_mf8_x4(svmfloat8x4_t op) STREAMING { 2146*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u8, _mf8_x4)(op); 2147*16e45b8fSMomchil Velikov } 2148*16e45b8fSMomchil Velikov 2149*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s8_x4( 2150*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2151*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2152*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2153*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2154*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2155*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2156*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2157*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2158*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2159*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2160*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2161*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2162*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2163*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2164*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2165*16e45b8fSMomchil Velikov // 2166*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_mf8_s8_x410svint8x4_t( 2167*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2168*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2169*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2170*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2171*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2172*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2173*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2174*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2175*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2176*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2177*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2178*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2179*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2180*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2181*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2182*16e45b8fSMomchil Velikov // 2183*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_s8_x4(svint8x4_t op) STREAMING { 2184*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s8_x4)(op); 2185*16e45b8fSMomchil Velikov } 2186*16e45b8fSMomchil Velikov 2187*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u8_x4( 2188*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2189*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2190*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2191*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2192*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2193*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2194*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2195*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2196*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2197*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2198*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2199*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2200*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2201*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2202*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2203*16e45b8fSMomchil Velikov // 2204*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z28test_svreinterpret_mf8_u8_x411svuint8x4_t( 2205*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2206*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2207*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2208*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2209*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2210*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2211*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2212*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2213*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2214*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2215*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2216*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2217*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2218*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2219*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2220*16e45b8fSMomchil Velikov // 2221*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_u8_x4(svuint8x4_t op) STREAMING { 2222*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u8_x4)(op); 2223*16e45b8fSMomchil Velikov } 2224*16e45b8fSMomchil Velikov 2225*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_mf8_x4( 2226*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2227*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2228*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2229*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2230*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2231*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2232*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2233*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2234*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2235*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2236*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2237*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2238*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2239*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2240*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2241*16e45b8fSMomchil Velikov // 2242*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_mf8_x413svmfloat8x4_t( 2243*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2244*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2245*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2246*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2247*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2248*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2249*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2250*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP4]], 0 2251*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2252*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP5]], <vscale x 16 x i8> [[TMP6]], 1 2253*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2254*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP7]], <vscale x 16 x i8> [[TMP8]], 2 2255*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2256*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP10]], 3 2257*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP11]] 2258*16e45b8fSMomchil Velikov // 2259*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_mf8_x4(svmfloat8x4_t op) STREAMING { 2260*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _mf8_x4)(op); 2261*16e45b8fSMomchil Velikov } 2262*16e45b8fSMomchil Velikov 2263*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s16_x4( 2264*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]], <vscale x 8 x i16> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2265*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2266*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 2267*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 2268*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 2269*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], <vscale x 8 x i16> [[OP_COERCE3]], 3 2270*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 0 2271*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x i16> [[TMP4]] to <vscale x 16 x i8> 2272*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2273*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 1 2274*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x i16> [[TMP7]] to <vscale x 16 x i8> 2275*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2276*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 2 2277*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x i16> [[TMP10]] to <vscale x 16 x i8> 2278*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2279*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 3 2280*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x i16> [[TMP13]] to <vscale x 16 x i8> 2281*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2282*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2283*16e45b8fSMomchil Velikov // 2284*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s16_x411svint16x4_t( 2285*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]], <vscale x 8 x i16> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2286*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2287*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 2288*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 2289*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 2290*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], <vscale x 8 x i16> [[OP_COERCE3]], 3 2291*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 0 2292*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x i16> [[TMP4]] to <vscale x 16 x i8> 2293*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2294*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 1 2295*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x i16> [[TMP7]] to <vscale x 16 x i8> 2296*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2297*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 2 2298*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x i16> [[TMP10]] to <vscale x 16 x i8> 2299*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2300*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 3 2301*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x i16> [[TMP13]] to <vscale x 16 x i8> 2302*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2303*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2304*16e45b8fSMomchil Velikov // 2305*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_s16_x4(svint16x4_t op) STREAMING { 2306*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s16_x4)(op); 2307*16e45b8fSMomchil Velikov } 2308*16e45b8fSMomchil Velikov 2309*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u16_x4( 2310*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]], <vscale x 8 x i16> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2311*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2312*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 2313*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 2314*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 2315*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], <vscale x 8 x i16> [[OP_COERCE3]], 3 2316*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 0 2317*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x i16> [[TMP4]] to <vscale x 16 x i8> 2318*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2319*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 1 2320*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x i16> [[TMP7]] to <vscale x 16 x i8> 2321*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2322*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 2 2323*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x i16> [[TMP10]] to <vscale x 16 x i8> 2324*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2325*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 3 2326*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x i16> [[TMP13]] to <vscale x 16 x i8> 2327*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2328*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2329*16e45b8fSMomchil Velikov // 2330*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u16_x412svuint16x4_t( 2331*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x i16> [[OP_COERCE0:%.*]], <vscale x 8 x i16> [[OP_COERCE1:%.*]], <vscale x 8 x i16> [[OP_COERCE2:%.*]], <vscale x 8 x i16> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2332*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2333*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[OP_COERCE0]], 0 2334*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP0]], <vscale x 8 x i16> [[OP_COERCE1]], 1 2335*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP1]], <vscale x 8 x i16> [[OP_COERCE2]], 2 2336*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP2]], <vscale x 8 x i16> [[OP_COERCE3]], 3 2337*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 0 2338*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x i16> [[TMP4]] to <vscale x 16 x i8> 2339*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2340*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 1 2341*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x i16> [[TMP7]] to <vscale x 16 x i8> 2342*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2343*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 2 2344*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x i16> [[TMP10]] to <vscale x 16 x i8> 2345*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2346*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP3]], 3 2347*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x i16> [[TMP13]] to <vscale x 16 x i8> 2348*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2349*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2350*16e45b8fSMomchil Velikov // 2351*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_u16_x4(svuint16x4_t op) STREAMING { 2352*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u16_x4)(op); 2353*16e45b8fSMomchil Velikov } 2354*16e45b8fSMomchil Velikov 2355*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s32_x4( 2356*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]], <vscale x 4 x i32> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2357*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2358*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 2359*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 2360*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 2361*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], <vscale x 4 x i32> [[OP_COERCE3]], 3 2362*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 0 2363*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 4 x i32> [[TMP4]] to <vscale x 16 x i8> 2364*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2365*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 1 2366*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 4 x i32> [[TMP7]] to <vscale x 16 x i8> 2367*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2368*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 2 2369*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 4 x i32> [[TMP10]] to <vscale x 16 x i8> 2370*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2371*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 3 2372*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 4 x i32> [[TMP13]] to <vscale x 16 x i8> 2373*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2374*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2375*16e45b8fSMomchil Velikov // 2376*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s32_x411svint32x4_t( 2377*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]], <vscale x 4 x i32> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2378*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2379*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 2380*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 2381*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 2382*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], <vscale x 4 x i32> [[OP_COERCE3]], 3 2383*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 0 2384*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 4 x i32> [[TMP4]] to <vscale x 16 x i8> 2385*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2386*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 1 2387*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 4 x i32> [[TMP7]] to <vscale x 16 x i8> 2388*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2389*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 2 2390*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 4 x i32> [[TMP10]] to <vscale x 16 x i8> 2391*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2392*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 3 2393*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 4 x i32> [[TMP13]] to <vscale x 16 x i8> 2394*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2395*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2396*16e45b8fSMomchil Velikov // 2397*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_s32_x4(svint32x4_t op) STREAMING { 2398*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s32_x4)(op); 2399*16e45b8fSMomchil Velikov } 2400*16e45b8fSMomchil Velikov 2401*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u32_x4( 2402*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]], <vscale x 4 x i32> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2403*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2404*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 2405*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 2406*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 2407*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], <vscale x 4 x i32> [[OP_COERCE3]], 3 2408*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 0 2409*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 4 x i32> [[TMP4]] to <vscale x 16 x i8> 2410*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2411*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 1 2412*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 4 x i32> [[TMP7]] to <vscale x 16 x i8> 2413*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2414*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 2 2415*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 4 x i32> [[TMP10]] to <vscale x 16 x i8> 2416*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2417*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 3 2418*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 4 x i32> [[TMP13]] to <vscale x 16 x i8> 2419*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2420*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2421*16e45b8fSMomchil Velikov // 2422*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u32_x412svuint32x4_t( 2423*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x i32> [[OP_COERCE0:%.*]], <vscale x 4 x i32> [[OP_COERCE1:%.*]], <vscale x 4 x i32> [[OP_COERCE2:%.*]], <vscale x 4 x i32> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2424*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2425*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[OP_COERCE0]], 0 2426*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP0]], <vscale x 4 x i32> [[OP_COERCE1]], 1 2427*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP1]], <vscale x 4 x i32> [[OP_COERCE2]], 2 2428*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP2]], <vscale x 4 x i32> [[OP_COERCE3]], 3 2429*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 0 2430*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 4 x i32> [[TMP4]] to <vscale x 16 x i8> 2431*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2432*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 1 2433*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 4 x i32> [[TMP7]] to <vscale x 16 x i8> 2434*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2435*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 2 2436*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 4 x i32> [[TMP10]] to <vscale x 16 x i8> 2437*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2438*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP3]], 3 2439*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 4 x i32> [[TMP13]] to <vscale x 16 x i8> 2440*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2441*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2442*16e45b8fSMomchil Velikov // 2443*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_u32_x4(svuint32x4_t op) STREAMING { 2444*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u32_x4)(op); 2445*16e45b8fSMomchil Velikov } 2446*16e45b8fSMomchil Velikov 2447*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_s64_x4( 2448*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]], <vscale x 2 x i64> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2449*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2450*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 2451*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 2452*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 2453*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], <vscale x 2 x i64> [[OP_COERCE3]], 3 2454*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 0 2455*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 2 x i64> [[TMP4]] to <vscale x 16 x i8> 2456*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2457*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 1 2458*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 2 x i64> [[TMP7]] to <vscale x 16 x i8> 2459*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2460*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 2 2461*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 2 x i64> [[TMP10]] to <vscale x 16 x i8> 2462*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2463*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 3 2464*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 2 x i64> [[TMP13]] to <vscale x 16 x i8> 2465*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2466*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2467*16e45b8fSMomchil Velikov // 2468*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_s64_x411svint64x4_t( 2469*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]], <vscale x 2 x i64> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2470*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2471*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 2472*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 2473*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 2474*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], <vscale x 2 x i64> [[OP_COERCE3]], 3 2475*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 0 2476*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 2 x i64> [[TMP4]] to <vscale x 16 x i8> 2477*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2478*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 1 2479*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 2 x i64> [[TMP7]] to <vscale x 16 x i8> 2480*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2481*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 2 2482*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 2 x i64> [[TMP10]] to <vscale x 16 x i8> 2483*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2484*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 3 2485*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 2 x i64> [[TMP13]] to <vscale x 16 x i8> 2486*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2487*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2488*16e45b8fSMomchil Velikov // 2489*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_s64_x4(svint64x4_t op) STREAMING { 2490*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _s64_x4)(op); 2491*16e45b8fSMomchil Velikov } 2492*16e45b8fSMomchil Velikov 2493*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_u64_x4( 2494*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]], <vscale x 2 x i64> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2495*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2496*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 2497*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 2498*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 2499*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], <vscale x 2 x i64> [[OP_COERCE3]], 3 2500*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 0 2501*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 2 x i64> [[TMP4]] to <vscale x 16 x i8> 2502*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2503*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 1 2504*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 2 x i64> [[TMP7]] to <vscale x 16 x i8> 2505*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2506*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 2 2507*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 2 x i64> [[TMP10]] to <vscale x 16 x i8> 2508*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2509*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 3 2510*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 2 x i64> [[TMP13]] to <vscale x 16 x i8> 2511*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2512*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2513*16e45b8fSMomchil Velikov // 2514*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_u64_x412svuint64x4_t( 2515*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x i64> [[OP_COERCE0:%.*]], <vscale x 2 x i64> [[OP_COERCE1:%.*]], <vscale x 2 x i64> [[OP_COERCE2:%.*]], <vscale x 2 x i64> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2516*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2517*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[OP_COERCE0]], 0 2518*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP0]], <vscale x 2 x i64> [[OP_COERCE1]], 1 2519*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP1]], <vscale x 2 x i64> [[OP_COERCE2]], 2 2520*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP2]], <vscale x 2 x i64> [[OP_COERCE3]], 3 2521*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 0 2522*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 2 x i64> [[TMP4]] to <vscale x 16 x i8> 2523*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2524*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 1 2525*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 2 x i64> [[TMP7]] to <vscale x 16 x i8> 2526*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2527*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 2 2528*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 2 x i64> [[TMP10]] to <vscale x 16 x i8> 2529*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2530*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP3]], 3 2531*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 2 x i64> [[TMP13]] to <vscale x 16 x i8> 2532*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2533*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2534*16e45b8fSMomchil Velikov // 2535*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_u64_x4(svuint64x4_t op) STREAMING { 2536*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _u64_x4)(op); 2537*16e45b8fSMomchil Velikov } 2538*16e45b8fSMomchil Velikov 2539*16e45b8fSMomchil Velikov // 2540*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f16_x4( 2541*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x half> [[OP_COERCE0:%.*]], <vscale x 8 x half> [[OP_COERCE1:%.*]], <vscale x 8 x half> [[OP_COERCE2:%.*]], <vscale x 8 x half> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2542*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2543*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[OP_COERCE0]], 0 2544*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]], <vscale x 8 x half> [[OP_COERCE1]], 1 2545*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], <vscale x 8 x half> [[OP_COERCE2]], 2 2546*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], <vscale x 8 x half> [[OP_COERCE3]], 3 2547*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 0 2548*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x half> [[TMP4]] to <vscale x 16 x i8> 2549*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2550*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 1 2551*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x half> [[TMP7]] to <vscale x 16 x i8> 2552*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2553*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 2 2554*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x half> [[TMP10]] to <vscale x 16 x i8> 2555*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2556*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 3 2557*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x half> [[TMP13]] to <vscale x 16 x i8> 2558*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2559*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2560*16e45b8fSMomchil Velikov // 2561*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f16_x413svfloat16x4_t( 2562*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x half> [[OP_COERCE0:%.*]], <vscale x 8 x half> [[OP_COERCE1:%.*]], <vscale x 8 x half> [[OP_COERCE2:%.*]], <vscale x 8 x half> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2563*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2564*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[OP_COERCE0]], 0 2565*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP0]], <vscale x 8 x half> [[OP_COERCE1]], 1 2566*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP1]], <vscale x 8 x half> [[OP_COERCE2]], 2 2567*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP2]], <vscale x 8 x half> [[OP_COERCE3]], 3 2568*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 0 2569*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x half> [[TMP4]] to <vscale x 16 x i8> 2570*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2571*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 1 2572*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x half> [[TMP7]] to <vscale x 16 x i8> 2573*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2574*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 2 2575*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x half> [[TMP10]] to <vscale x 16 x i8> 2576*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2577*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP3]], 3 2578*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x half> [[TMP13]] to <vscale x 16 x i8> 2579*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2580*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2581*16e45b8fSMomchil Velikov // 2582*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_f16_x4(svfloat16x4_t op) STREAMING { 2583*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f16_x4)(op); 2584*16e45b8fSMomchil Velikov } 2585*16e45b8fSMomchil Velikov 2586*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_bf16_x4( 2587*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 8 x bfloat> [[OP_COERCE0:%.*]], <vscale x 8 x bfloat> [[OP_COERCE1:%.*]], <vscale x 8 x bfloat> [[OP_COERCE2:%.*]], <vscale x 8 x bfloat> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2588*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2589*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[OP_COERCE0]], 0 2590*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]], <vscale x 8 x bfloat> [[OP_COERCE1]], 1 2591*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], <vscale x 8 x bfloat> [[OP_COERCE2]], 2 2592*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], <vscale x 8 x bfloat> [[OP_COERCE3]], 3 2593*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 0 2594*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP4]] to <vscale x 16 x i8> 2595*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2596*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 1 2597*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP7]] to <vscale x 16 x i8> 2598*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2599*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 2 2600*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP10]] to <vscale x 16 x i8> 2601*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2602*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 3 2603*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP13]] to <vscale x 16 x i8> 2604*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2605*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2606*16e45b8fSMomchil Velikov // 2607*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z30test_svreinterpret_mf8_bf16_x414svbfloat16x4_t( 2608*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 8 x bfloat> [[OP_COERCE0:%.*]], <vscale x 8 x bfloat> [[OP_COERCE1:%.*]], <vscale x 8 x bfloat> [[OP_COERCE2:%.*]], <vscale x 8 x bfloat> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2609*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2610*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[OP_COERCE0]], 0 2611*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP0]], <vscale x 8 x bfloat> [[OP_COERCE1]], 1 2612*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP1]], <vscale x 8 x bfloat> [[OP_COERCE2]], 2 2613*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP2]], <vscale x 8 x bfloat> [[OP_COERCE3]], 3 2614*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 0 2615*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP4]] to <vscale x 16 x i8> 2616*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2617*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 1 2618*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP7]] to <vscale x 16 x i8> 2619*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2620*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 2 2621*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP10]] to <vscale x 16 x i8> 2622*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2623*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP3]], 3 2624*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 8 x bfloat> [[TMP13]] to <vscale x 16 x i8> 2625*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2626*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2627*16e45b8fSMomchil Velikov // 2628*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_bf16_x4(svbfloat16x4_t op) STREAMING { 2629*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _bf16_x4)(op); 2630*16e45b8fSMomchil Velikov } 2631*16e45b8fSMomchil Velikov 2632*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f32_x4( 2633*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 4 x float> [[OP_COERCE0:%.*]], <vscale x 4 x float> [[OP_COERCE1:%.*]], <vscale x 4 x float> [[OP_COERCE2:%.*]], <vscale x 4 x float> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2634*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2635*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[OP_COERCE0]], 0 2636*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]], <vscale x 4 x float> [[OP_COERCE1]], 1 2637*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], <vscale x 4 x float> [[OP_COERCE2]], 2 2638*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], <vscale x 4 x float> [[OP_COERCE3]], 3 2639*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 0 2640*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 4 x float> [[TMP4]] to <vscale x 16 x i8> 2641*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2642*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 1 2643*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 4 x float> [[TMP7]] to <vscale x 16 x i8> 2644*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2645*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 2 2646*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 4 x float> [[TMP10]] to <vscale x 16 x i8> 2647*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2648*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 3 2649*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 4 x float> [[TMP13]] to <vscale x 16 x i8> 2650*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2651*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2652*16e45b8fSMomchil Velikov // 2653*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f32_x413svfloat32x4_t( 2654*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 4 x float> [[OP_COERCE0:%.*]], <vscale x 4 x float> [[OP_COERCE1:%.*]], <vscale x 4 x float> [[OP_COERCE2:%.*]], <vscale x 4 x float> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2655*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2656*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[OP_COERCE0]], 0 2657*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP0]], <vscale x 4 x float> [[OP_COERCE1]], 1 2658*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP1]], <vscale x 4 x float> [[OP_COERCE2]], 2 2659*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP2]], <vscale x 4 x float> [[OP_COERCE3]], 3 2660*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 0 2661*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 4 x float> [[TMP4]] to <vscale x 16 x i8> 2662*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2663*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 1 2664*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 4 x float> [[TMP7]] to <vscale x 16 x i8> 2665*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2666*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 2 2667*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 4 x float> [[TMP10]] to <vscale x 16 x i8> 2668*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2669*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP3]], 3 2670*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 4 x float> [[TMP13]] to <vscale x 16 x i8> 2671*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2672*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2673*16e45b8fSMomchil Velikov // 2674*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_f32_x4(svfloat32x4_t op) STREAMING { 2675*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f32_x4)(op); 2676*16e45b8fSMomchil Velikov } 2677*16e45b8fSMomchil Velikov 2678*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @test_svreinterpret_mf8_f64_x4( 2679*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 2 x double> [[OP_COERCE0:%.*]], <vscale x 2 x double> [[OP_COERCE1:%.*]], <vscale x 2 x double> [[OP_COERCE2:%.*]], <vscale x 2 x double> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2680*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2681*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[OP_COERCE0]], 0 2682*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]], <vscale x 2 x double> [[OP_COERCE1]], 1 2683*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], <vscale x 2 x double> [[OP_COERCE2]], 2 2684*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], <vscale x 2 x double> [[OP_COERCE3]], 3 2685*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 0 2686*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 2 x double> [[TMP4]] to <vscale x 16 x i8> 2687*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2688*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 1 2689*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 2 x double> [[TMP7]] to <vscale x 16 x i8> 2690*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2691*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 2 2692*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 2 x double> [[TMP10]] to <vscale x 16 x i8> 2693*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2694*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 3 2695*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 2 x double> [[TMP13]] to <vscale x 16 x i8> 2696*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2697*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2698*16e45b8fSMomchil Velikov // 2699*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } @_Z29test_svreinterpret_mf8_f64_x413svfloat64x4_t( 2700*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 2 x double> [[OP_COERCE0:%.*]], <vscale x 2 x double> [[OP_COERCE1:%.*]], <vscale x 2 x double> [[OP_COERCE2:%.*]], <vscale x 2 x double> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2701*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2702*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[OP_COERCE0]], 0 2703*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP0]], <vscale x 2 x double> [[OP_COERCE1]], 1 2704*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP1]], <vscale x 2 x double> [[OP_COERCE2]], 2 2705*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP2]], <vscale x 2 x double> [[OP_COERCE3]], 3 2706*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 0 2707*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 2 x double> [[TMP4]] to <vscale x 16 x i8> 2708*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[TMP5]], 0 2709*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 1 2710*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 2 x double> [[TMP7]] to <vscale x 16 x i8> 2711*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP6]], <vscale x 16 x i8> [[TMP8]], 1 2712*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 2 2713*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 2 x double> [[TMP10]] to <vscale x 16 x i8> 2714*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP9]], <vscale x 16 x i8> [[TMP11]], 2 2715*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP3]], 3 2716*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 2 x double> [[TMP13]] to <vscale x 16 x i8> 2717*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP12]], <vscale x 16 x i8> [[TMP14]], 3 2718*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP15]] 2719*16e45b8fSMomchil Velikov // 2720*16e45b8fSMomchil Velikov svmfloat8x4_t test_svreinterpret_mf8_f64_x4(svfloat64x4_t op) STREAMING { 2721*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_mf8, _f64_x4)(op); 2722*16e45b8fSMomchil Velikov } 2723*16e45b8fSMomchil Velikov 2724*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @test_svreinterpret_s16_mf8_x4( 2725*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2726*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2727*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2728*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2729*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2730*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2731*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2732*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x i16> 2733*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP5]], 0 2734*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2735*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x i16> 2736*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP6]], <vscale x 8 x i16> [[TMP8]], 1 2737*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2738*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x i16> 2739*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP9]], <vscale x 8 x i16> [[TMP11]], 2 2740*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2741*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x i16> 2742*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP12]], <vscale x 8 x i16> [[TMP14]], 3 2743*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP15]] 2744*16e45b8fSMomchil Velikov // 2745*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @_Z29test_svreinterpret_s16_mf8_x413svmfloat8x4_t( 2746*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2747*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2748*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2749*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2750*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2751*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2752*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2753*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x i16> 2754*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP5]], 0 2755*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2756*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x i16> 2757*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP6]], <vscale x 8 x i16> [[TMP8]], 1 2758*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2759*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x i16> 2760*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP9]], <vscale x 8 x i16> [[TMP11]], 2 2761*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2762*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x i16> 2763*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP12]], <vscale x 8 x i16> [[TMP14]], 3 2764*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP15]] 2765*16e45b8fSMomchil Velikov // 2766*16e45b8fSMomchil Velikov svint16x4_t test_svreinterpret_s16_mf8_x4(svmfloat8x4_t op) STREAMING { 2767*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s16, _mf8_x4)(op); 2768*16e45b8fSMomchil Velikov } 2769*16e45b8fSMomchil Velikov 2770*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @test_svreinterpret_u16_mf8_x4( 2771*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2772*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2773*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2774*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2775*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2776*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2777*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2778*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x i16> 2779*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP5]], 0 2780*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2781*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x i16> 2782*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP6]], <vscale x 8 x i16> [[TMP8]], 1 2783*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2784*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x i16> 2785*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP9]], <vscale x 8 x i16> [[TMP11]], 2 2786*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2787*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x i16> 2788*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP12]], <vscale x 8 x i16> [[TMP14]], 3 2789*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP15]] 2790*16e45b8fSMomchil Velikov // 2791*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } @_Z29test_svreinterpret_u16_mf8_x413svmfloat8x4_t( 2792*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2793*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2794*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2795*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2796*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2797*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2798*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2799*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x i16> 2800*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } poison, <vscale x 8 x i16> [[TMP5]], 0 2801*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2802*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x i16> 2803*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP6]], <vscale x 8 x i16> [[TMP8]], 1 2804*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2805*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x i16> 2806*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP9]], <vscale x 8 x i16> [[TMP11]], 2 2807*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2808*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x i16> 2809*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP12]], <vscale x 8 x i16> [[TMP14]], 3 2810*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16> } [[TMP15]] 2811*16e45b8fSMomchil Velikov // 2812*16e45b8fSMomchil Velikov svuint16x4_t test_svreinterpret_u16_mf8_x4(svmfloat8x4_t op) STREAMING { 2813*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u16, _mf8_x4)(op); 2814*16e45b8fSMomchil Velikov } 2815*16e45b8fSMomchil Velikov 2816*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @test_svreinterpret_s32_mf8_x4( 2817*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2818*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2819*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2820*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2821*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2822*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2823*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2824*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 4 x i32> 2825*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP5]], 0 2826*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2827*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 4 x i32> 2828*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP6]], <vscale x 4 x i32> [[TMP8]], 1 2829*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2830*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 4 x i32> 2831*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP9]], <vscale x 4 x i32> [[TMP11]], 2 2832*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2833*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 4 x i32> 2834*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP12]], <vscale x 4 x i32> [[TMP14]], 3 2835*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP15]] 2836*16e45b8fSMomchil Velikov // 2837*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @_Z29test_svreinterpret_s32_mf8_x413svmfloat8x4_t( 2838*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2839*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2840*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2841*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2842*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2843*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2844*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2845*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 4 x i32> 2846*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP5]], 0 2847*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2848*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 4 x i32> 2849*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP6]], <vscale x 4 x i32> [[TMP8]], 1 2850*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2851*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 4 x i32> 2852*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP9]], <vscale x 4 x i32> [[TMP11]], 2 2853*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2854*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 4 x i32> 2855*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP12]], <vscale x 4 x i32> [[TMP14]], 3 2856*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP15]] 2857*16e45b8fSMomchil Velikov // 2858*16e45b8fSMomchil Velikov svint32x4_t test_svreinterpret_s32_mf8_x4(svmfloat8x4_t op) STREAMING { 2859*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s32, _mf8_x4)(op); 2860*16e45b8fSMomchil Velikov } 2861*16e45b8fSMomchil Velikov 2862*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @test_svreinterpret_u32_mf8_x4( 2863*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2864*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2865*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2866*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2867*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2868*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2869*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2870*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 4 x i32> 2871*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP5]], 0 2872*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2873*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 4 x i32> 2874*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP6]], <vscale x 4 x i32> [[TMP8]], 1 2875*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2876*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 4 x i32> 2877*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP9]], <vscale x 4 x i32> [[TMP11]], 2 2878*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2879*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 4 x i32> 2880*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP12]], <vscale x 4 x i32> [[TMP14]], 3 2881*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP15]] 2882*16e45b8fSMomchil Velikov // 2883*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } @_Z29test_svreinterpret_u32_mf8_x413svmfloat8x4_t( 2884*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2885*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2886*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2887*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2888*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2889*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2890*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2891*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 4 x i32> 2892*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } poison, <vscale x 4 x i32> [[TMP5]], 0 2893*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2894*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 4 x i32> 2895*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP6]], <vscale x 4 x i32> [[TMP8]], 1 2896*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2897*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 4 x i32> 2898*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP9]], <vscale x 4 x i32> [[TMP11]], 2 2899*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2900*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 4 x i32> 2901*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP12]], <vscale x 4 x i32> [[TMP14]], 3 2902*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32> } [[TMP15]] 2903*16e45b8fSMomchil Velikov // 2904*16e45b8fSMomchil Velikov svuint32x4_t test_svreinterpret_u32_mf8_x4(svmfloat8x4_t op) STREAMING { 2905*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u32, _mf8_x4)(op); 2906*16e45b8fSMomchil Velikov } 2907*16e45b8fSMomchil Velikov 2908*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @test_svreinterpret_s64_mf8_x4( 2909*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2910*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2911*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2912*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2913*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2914*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2915*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2916*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 2 x i64> 2917*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP5]], 0 2918*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2919*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 2 x i64> 2920*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP6]], <vscale x 2 x i64> [[TMP8]], 1 2921*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2922*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 2 x i64> 2923*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP9]], <vscale x 2 x i64> [[TMP11]], 2 2924*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2925*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 2 x i64> 2926*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP12]], <vscale x 2 x i64> [[TMP14]], 3 2927*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP15]] 2928*16e45b8fSMomchil Velikov // 2929*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @_Z29test_svreinterpret_s64_mf8_x413svmfloat8x4_t( 2930*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2931*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2932*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2933*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2934*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2935*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2936*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2937*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 2 x i64> 2938*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP5]], 0 2939*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2940*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 2 x i64> 2941*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP6]], <vscale x 2 x i64> [[TMP8]], 1 2942*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2943*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 2 x i64> 2944*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP9]], <vscale x 2 x i64> [[TMP11]], 2 2945*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2946*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 2 x i64> 2947*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP12]], <vscale x 2 x i64> [[TMP14]], 3 2948*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP15]] 2949*16e45b8fSMomchil Velikov // 2950*16e45b8fSMomchil Velikov svint64x4_t test_svreinterpret_s64_mf8_x4(svmfloat8x4_t op) STREAMING { 2951*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_s64, _mf8_x4)(op); 2952*16e45b8fSMomchil Velikov } 2953*16e45b8fSMomchil Velikov 2954*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @test_svreinterpret_u64_mf8_x4( 2955*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2956*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 2957*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2958*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2959*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2960*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2961*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2962*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 2 x i64> 2963*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP5]], 0 2964*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2965*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 2 x i64> 2966*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP6]], <vscale x 2 x i64> [[TMP8]], 1 2967*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2968*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 2 x i64> 2969*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP9]], <vscale x 2 x i64> [[TMP11]], 2 2970*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2971*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 2 x i64> 2972*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP12]], <vscale x 2 x i64> [[TMP14]], 3 2973*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP15]] 2974*16e45b8fSMomchil Velikov // 2975*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } @_Z29test_svreinterpret_u64_mf8_x413svmfloat8x4_t( 2976*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 2977*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 2978*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 2979*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 2980*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 2981*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 2982*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 2983*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 2 x i64> 2984*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } poison, <vscale x 2 x i64> [[TMP5]], 0 2985*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 2986*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 2 x i64> 2987*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP6]], <vscale x 2 x i64> [[TMP8]], 1 2988*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 2989*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 2 x i64> 2990*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP9]], <vscale x 2 x i64> [[TMP11]], 2 2991*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 2992*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 2 x i64> 2993*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP12]], <vscale x 2 x i64> [[TMP14]], 3 2994*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64> } [[TMP15]] 2995*16e45b8fSMomchil Velikov // 2996*16e45b8fSMomchil Velikov svuint64x4_t test_svreinterpret_u64_mf8_x4(svmfloat8x4_t op) STREAMING { 2997*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_u64, _mf8_x4)(op); 2998*16e45b8fSMomchil Velikov } 2999*16e45b8fSMomchil Velikov 3000*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @test_svreinterpret_f16_mf8_x4( 3001*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3002*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 3003*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3004*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3005*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3006*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3007*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3008*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x half> 3009*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[TMP5]], 0 3010*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3011*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x half> 3012*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP6]], <vscale x 8 x half> [[TMP8]], 1 3013*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3014*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x half> 3015*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP9]], <vscale x 8 x half> [[TMP11]], 2 3016*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3017*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x half> 3018*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP12]], <vscale x 8 x half> [[TMP14]], 3 3019*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP15]] 3020*16e45b8fSMomchil Velikov // 3021*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } @_Z29test_svreinterpret_f16_mf8_x413svmfloat8x4_t( 3022*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3023*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 3024*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3025*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3026*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3027*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3028*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3029*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x half> 3030*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } poison, <vscale x 8 x half> [[TMP5]], 0 3031*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3032*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x half> 3033*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP6]], <vscale x 8 x half> [[TMP8]], 1 3034*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3035*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x half> 3036*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP9]], <vscale x 8 x half> [[TMP11]], 2 3037*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3038*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x half> 3039*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP12]], <vscale x 8 x half> [[TMP14]], 3 3040*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half> } [[TMP15]] 3041*16e45b8fSMomchil Velikov // 3042*16e45b8fSMomchil Velikov svfloat16x4_t test_svreinterpret_f16_mf8_x4(svmfloat8x4_t op) STREAMING { 3043*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f16, _mf8_x4)(op); 3044*16e45b8fSMomchil Velikov } 3045*16e45b8fSMomchil Velikov 3046*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @test_svreinterpret_bf16_mf8_x4( 3047*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3048*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 3049*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3050*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3051*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3052*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3053*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3054*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x bfloat> 3055*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[TMP5]], 0 3056*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3057*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x bfloat> 3058*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP6]], <vscale x 8 x bfloat> [[TMP8]], 1 3059*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3060*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x bfloat> 3061*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP9]], <vscale x 8 x bfloat> [[TMP11]], 2 3062*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3063*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x bfloat> 3064*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP12]], <vscale x 8 x bfloat> [[TMP14]], 3 3065*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP15]] 3066*16e45b8fSMomchil Velikov // 3067*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } @_Z30test_svreinterpret_bf16_mf8_x413svmfloat8x4_t( 3068*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3069*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 3070*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3071*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3072*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3073*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3074*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3075*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 8 x bfloat> 3076*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } poison, <vscale x 8 x bfloat> [[TMP5]], 0 3077*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3078*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 8 x bfloat> 3079*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP6]], <vscale x 8 x bfloat> [[TMP8]], 1 3080*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3081*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 8 x bfloat> 3082*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP9]], <vscale x 8 x bfloat> [[TMP11]], 2 3083*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3084*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 8 x bfloat> 3085*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP12]], <vscale x 8 x bfloat> [[TMP14]], 3 3086*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat>, <vscale x 8 x bfloat> } [[TMP15]] 3087*16e45b8fSMomchil Velikov // 3088*16e45b8fSMomchil Velikov svbfloat16x4_t test_svreinterpret_bf16_mf8_x4(svmfloat8x4_t op) STREAMING { 3089*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_bf16, _mf8_x4)(op); 3090*16e45b8fSMomchil Velikov } 3091*16e45b8fSMomchil Velikov 3092*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @test_svreinterpret_f32_mf8_x4( 3093*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3094*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 3095*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3096*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3097*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3098*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3099*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3100*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 4 x float> 3101*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[TMP5]], 0 3102*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3103*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 4 x float> 3104*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP6]], <vscale x 4 x float> [[TMP8]], 1 3105*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3106*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 4 x float> 3107*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP9]], <vscale x 4 x float> [[TMP11]], 2 3108*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3109*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 4 x float> 3110*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP12]], <vscale x 4 x float> [[TMP14]], 3 3111*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP15]] 3112*16e45b8fSMomchil Velikov // 3113*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @_Z29test_svreinterpret_f32_mf8_x413svmfloat8x4_t( 3114*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3115*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 3116*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3117*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3118*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3119*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3120*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3121*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 4 x float> 3122*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } poison, <vscale x 4 x float> [[TMP5]], 0 3123*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3124*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 4 x float> 3125*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP6]], <vscale x 4 x float> [[TMP8]], 1 3126*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3127*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 4 x float> 3128*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP9]], <vscale x 4 x float> [[TMP11]], 2 3129*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3130*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 4 x float> 3131*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP12]], <vscale x 4 x float> [[TMP14]], 3 3132*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } [[TMP15]] 3133*16e45b8fSMomchil Velikov // 3134*16e45b8fSMomchil Velikov svfloat32x4_t test_svreinterpret_f32_mf8_x4(svmfloat8x4_t op) STREAMING { 3135*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f32, _mf8_x4)(op); 3136*16e45b8fSMomchil Velikov } 3137*16e45b8fSMomchil Velikov 3138*16e45b8fSMomchil Velikov // CHECK-LABEL: define dso_local { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @test_svreinterpret_f64_mf8_x4( 3139*16e45b8fSMomchil Velikov // CHECK-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3140*16e45b8fSMomchil Velikov // CHECK-NEXT: [[ENTRY:.*:]] 3141*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3142*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3143*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3144*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3145*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3146*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 2 x double> 3147*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[TMP5]], 0 3148*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3149*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 2 x double> 3150*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP6]], <vscale x 2 x double> [[TMP8]], 1 3151*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3152*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 2 x double> 3153*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP9]], <vscale x 2 x double> [[TMP11]], 2 3154*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3155*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 2 x double> 3156*16e45b8fSMomchil Velikov // CHECK-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP12]], <vscale x 2 x double> [[TMP14]], 3 3157*16e45b8fSMomchil Velikov // CHECK-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP15]] 3158*16e45b8fSMomchil Velikov // 3159*16e45b8fSMomchil Velikov // CHECK-CXX-LABEL: define dso_local { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } @_Z29test_svreinterpret_f64_mf8_x413svmfloat8x4_t( 3160*16e45b8fSMomchil Velikov // CHECK-CXX-SAME: <vscale x 16 x i8> [[OP_COERCE0:%.*]], <vscale x 16 x i8> [[OP_COERCE1:%.*]], <vscale x 16 x i8> [[OP_COERCE2:%.*]], <vscale x 16 x i8> [[OP_COERCE3:%.*]]) #[[ATTR0]] { 3161*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[ENTRY:.*:]] 3162*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP0:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } poison, <vscale x 16 x i8> [[OP_COERCE0]], 0 3163*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP1:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP0]], <vscale x 16 x i8> [[OP_COERCE1]], 1 3164*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP2:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP1]], <vscale x 16 x i8> [[OP_COERCE2]], 2 3165*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP3:%.*]] = insertvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP2]], <vscale x 16 x i8> [[OP_COERCE3]], 3 3166*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP4:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 0 3167*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP5:%.*]] = bitcast <vscale x 16 x i8> [[TMP4]] to <vscale x 2 x double> 3168*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP6:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } poison, <vscale x 2 x double> [[TMP5]], 0 3169*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP7:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 1 3170*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP8:%.*]] = bitcast <vscale x 16 x i8> [[TMP7]] to <vscale x 2 x double> 3171*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP9:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP6]], <vscale x 2 x double> [[TMP8]], 1 3172*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP10:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 2 3173*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP11:%.*]] = bitcast <vscale x 16 x i8> [[TMP10]] to <vscale x 2 x double> 3174*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP12:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP9]], <vscale x 2 x double> [[TMP11]], 2 3175*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP13:%.*]] = extractvalue { <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8> } [[TMP3]], 3 3176*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP14:%.*]] = bitcast <vscale x 16 x i8> [[TMP13]] to <vscale x 2 x double> 3177*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: [[TMP15:%.*]] = insertvalue { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP12]], <vscale x 2 x double> [[TMP14]], 3 3178*16e45b8fSMomchil Velikov // CHECK-CXX-NEXT: ret { <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double> } [[TMP15]] 3179*16e45b8fSMomchil Velikov // 3180*16e45b8fSMomchil Velikov svfloat64x4_t test_svreinterpret_f64_mf8_x4(svmfloat8x4_t op) STREAMING { 3181*16e45b8fSMomchil Velikov return SVE_ACLE_FUNC(svreinterpret_f64, _mf8_x4)(op); 3182*16e45b8fSMomchil Velikov } 3183