1*207e5cccSFangrui Song // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py 2*207e5cccSFangrui Song // REQUIRES: aarch64-registered-target 3*207e5cccSFangrui Song // RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s 4*207e5cccSFangrui Song // RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK 5*207e5cccSFangrui Song // RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s 6*207e5cccSFangrui Song // RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sve -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK 7*207e5cccSFangrui Song // RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sve -S -disable-O0-optnone -Werror -o /dev/null %s 8*207e5cccSFangrui Song // RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -S -disable-O0-optnone -Werror -o /dev/null %s 9*207e5cccSFangrui Song 10*207e5cccSFangrui Song #include <arm_sve.h> 11*207e5cccSFangrui Song 12*207e5cccSFangrui Song #if defined __ARM_FEATURE_SME 13*207e5cccSFangrui Song #define MODE_ATTR __arm_streaming 14*207e5cccSFangrui Song #else 15*207e5cccSFangrui Song #define MODE_ATTR 16*207e5cccSFangrui Song #endif 17*207e5cccSFangrui Song 18*207e5cccSFangrui Song #ifdef SVE_OVERLOADED_FORMS 19*207e5cccSFangrui Song // A simple used,unused... macro, long enough to represent any SVE builtin. 20*207e5cccSFangrui Song #define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3 21*207e5cccSFangrui Song #else 22*207e5cccSFangrui Song #define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4 23*207e5cccSFangrui Song #endif 24*207e5cccSFangrui Song 25*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_s8( 26*207e5cccSFangrui Song // CHECK-NEXT: entry: 27*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.zip2.nxv16i8(<vscale x 16 x i8> [[OP1:%.*]], <vscale x 16 x i8> [[OP2:%.*]]) 28*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 29*207e5cccSFangrui Song // 30*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z14test_svzip2_s8u10__SVInt8_tS_( 31*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 32*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.zip2.nxv16i8(<vscale x 16 x i8> [[OP1:%.*]], <vscale x 16 x i8> [[OP2:%.*]]) 33*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 34*207e5cccSFangrui Song // 35*207e5cccSFangrui Song svint8_t test_svzip2_s8(svint8_t op1, svint8_t op2) MODE_ATTR 36*207e5cccSFangrui Song { 37*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_s8,,)(op1, op2); 38*207e5cccSFangrui Song } 39*207e5cccSFangrui Song 40*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_s16( 41*207e5cccSFangrui Song // CHECK-NEXT: entry: 42*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.zip2.nxv8i16(<vscale x 8 x i16> [[OP1:%.*]], <vscale x 8 x i16> [[OP2:%.*]]) 43*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]] 44*207e5cccSFangrui Song // 45*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_s16u11__SVInt16_tS_( 46*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 47*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.zip2.nxv8i16(<vscale x 8 x i16> [[OP1:%.*]], <vscale x 8 x i16> [[OP2:%.*]]) 48*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]] 49*207e5cccSFangrui Song // 50*207e5cccSFangrui Song svint16_t test_svzip2_s16(svint16_t op1, svint16_t op2) MODE_ATTR 51*207e5cccSFangrui Song { 52*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_s16,,)(op1, op2); 53*207e5cccSFangrui Song } 54*207e5cccSFangrui Song 55*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_s32( 56*207e5cccSFangrui Song // CHECK-NEXT: entry: 57*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.zip2.nxv4i32(<vscale x 4 x i32> [[OP1:%.*]], <vscale x 4 x i32> [[OP2:%.*]]) 58*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]] 59*207e5cccSFangrui Song // 60*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_s32u11__SVInt32_tS_( 61*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 62*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.zip2.nxv4i32(<vscale x 4 x i32> [[OP1:%.*]], <vscale x 4 x i32> [[OP2:%.*]]) 63*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]] 64*207e5cccSFangrui Song // 65*207e5cccSFangrui Song svint32_t test_svzip2_s32(svint32_t op1, svint32_t op2) MODE_ATTR 66*207e5cccSFangrui Song { 67*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_s32,,)(op1, op2); 68*207e5cccSFangrui Song } 69*207e5cccSFangrui Song 70*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_s64( 71*207e5cccSFangrui Song // CHECK-NEXT: entry: 72*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.zip2.nxv2i64(<vscale x 2 x i64> [[OP1:%.*]], <vscale x 2 x i64> [[OP2:%.*]]) 73*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]] 74*207e5cccSFangrui Song // 75*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_s64u11__SVInt64_tS_( 76*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 77*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.zip2.nxv2i64(<vscale x 2 x i64> [[OP1:%.*]], <vscale x 2 x i64> [[OP2:%.*]]) 78*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]] 79*207e5cccSFangrui Song // 80*207e5cccSFangrui Song svint64_t test_svzip2_s64(svint64_t op1, svint64_t op2) MODE_ATTR 81*207e5cccSFangrui Song { 82*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_s64,,)(op1, op2); 83*207e5cccSFangrui Song } 84*207e5cccSFangrui Song 85*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_u8( 86*207e5cccSFangrui Song // CHECK-NEXT: entry: 87*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.zip2.nxv16i8(<vscale x 16 x i8> [[OP1:%.*]], <vscale x 16 x i8> [[OP2:%.*]]) 88*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 89*207e5cccSFangrui Song // 90*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z14test_svzip2_u8u11__SVUint8_tS_( 91*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 92*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.zip2.nxv16i8(<vscale x 16 x i8> [[OP1:%.*]], <vscale x 16 x i8> [[OP2:%.*]]) 93*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 16 x i8> [[TMP0]] 94*207e5cccSFangrui Song // 95*207e5cccSFangrui Song svuint8_t test_svzip2_u8(svuint8_t op1, svuint8_t op2) MODE_ATTR 96*207e5cccSFangrui Song { 97*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_u8,,)(op1, op2); 98*207e5cccSFangrui Song } 99*207e5cccSFangrui Song 100*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_u16( 101*207e5cccSFangrui Song // CHECK-NEXT: entry: 102*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.zip2.nxv8i16(<vscale x 8 x i16> [[OP1:%.*]], <vscale x 8 x i16> [[OP2:%.*]]) 103*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]] 104*207e5cccSFangrui Song // 105*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_u16u12__SVUint16_tS_( 106*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 107*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x i16> @llvm.aarch64.sve.zip2.nxv8i16(<vscale x 8 x i16> [[OP1:%.*]], <vscale x 8 x i16> [[OP2:%.*]]) 108*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 8 x i16> [[TMP0]] 109*207e5cccSFangrui Song // 110*207e5cccSFangrui Song svuint16_t test_svzip2_u16(svuint16_t op1, svuint16_t op2) MODE_ATTR 111*207e5cccSFangrui Song { 112*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_u16,,)(op1, op2); 113*207e5cccSFangrui Song } 114*207e5cccSFangrui Song 115*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_u32( 116*207e5cccSFangrui Song // CHECK-NEXT: entry: 117*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.zip2.nxv4i32(<vscale x 4 x i32> [[OP1:%.*]], <vscale x 4 x i32> [[OP2:%.*]]) 118*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]] 119*207e5cccSFangrui Song // 120*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_u32u12__SVUint32_tS_( 121*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 122*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x i32> @llvm.aarch64.sve.zip2.nxv4i32(<vscale x 4 x i32> [[OP1:%.*]], <vscale x 4 x i32> [[OP2:%.*]]) 123*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 4 x i32> [[TMP0]] 124*207e5cccSFangrui Song // 125*207e5cccSFangrui Song svuint32_t test_svzip2_u32(svuint32_t op1, svuint32_t op2) MODE_ATTR 126*207e5cccSFangrui Song { 127*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_u32,,)(op1, op2); 128*207e5cccSFangrui Song } 129*207e5cccSFangrui Song 130*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_u64( 131*207e5cccSFangrui Song // CHECK-NEXT: entry: 132*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.zip2.nxv2i64(<vscale x 2 x i64> [[OP1:%.*]], <vscale x 2 x i64> [[OP2:%.*]]) 133*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]] 134*207e5cccSFangrui Song // 135*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_u64u12__SVUint64_tS_( 136*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 137*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x i64> @llvm.aarch64.sve.zip2.nxv2i64(<vscale x 2 x i64> [[OP1:%.*]], <vscale x 2 x i64> [[OP2:%.*]]) 138*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 2 x i64> [[TMP0]] 139*207e5cccSFangrui Song // 140*207e5cccSFangrui Song svuint64_t test_svzip2_u64(svuint64_t op1, svuint64_t op2) MODE_ATTR 141*207e5cccSFangrui Song { 142*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_u64,,)(op1, op2); 143*207e5cccSFangrui Song } 144*207e5cccSFangrui Song 145*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_f16( 146*207e5cccSFangrui Song // CHECK-NEXT: entry: 147*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.zip2.nxv8f16(<vscale x 8 x half> [[OP1:%.*]], <vscale x 8 x half> [[OP2:%.*]]) 148*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]] 149*207e5cccSFangrui Song // 150*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_f16u13__SVFloat16_tS_( 151*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 152*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 8 x half> @llvm.aarch64.sve.zip2.nxv8f16(<vscale x 8 x half> [[OP1:%.*]], <vscale x 8 x half> [[OP2:%.*]]) 153*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 8 x half> [[TMP0]] 154*207e5cccSFangrui Song // 155*207e5cccSFangrui Song svfloat16_t test_svzip2_f16(svfloat16_t op1, svfloat16_t op2) MODE_ATTR 156*207e5cccSFangrui Song { 157*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_f16,,)(op1, op2); 158*207e5cccSFangrui Song } 159*207e5cccSFangrui Song 160*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_f32( 161*207e5cccSFangrui Song // CHECK-NEXT: entry: 162*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.zip2.nxv4f32(<vscale x 4 x float> [[OP1:%.*]], <vscale x 4 x float> [[OP2:%.*]]) 163*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]] 164*207e5cccSFangrui Song // 165*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_f32u13__SVFloat32_tS_( 166*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 167*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 4 x float> @llvm.aarch64.sve.zip2.nxv4f32(<vscale x 4 x float> [[OP1:%.*]], <vscale x 4 x float> [[OP2:%.*]]) 168*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 4 x float> [[TMP0]] 169*207e5cccSFangrui Song // 170*207e5cccSFangrui Song svfloat32_t test_svzip2_f32(svfloat32_t op1, svfloat32_t op2) MODE_ATTR 171*207e5cccSFangrui Song { 172*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_f32,,)(op1, op2); 173*207e5cccSFangrui Song } 174*207e5cccSFangrui Song 175*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_f64( 176*207e5cccSFangrui Song // CHECK-NEXT: entry: 177*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.zip2.nxv2f64(<vscale x 2 x double> [[OP1:%.*]], <vscale x 2 x double> [[OP2:%.*]]) 178*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]] 179*207e5cccSFangrui Song // 180*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_f64u13__SVFloat64_tS_( 181*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 182*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 2 x double> @llvm.aarch64.sve.zip2.nxv2f64(<vscale x 2 x double> [[OP1:%.*]], <vscale x 2 x double> [[OP2:%.*]]) 183*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 2 x double> [[TMP0]] 184*207e5cccSFangrui Song // 185*207e5cccSFangrui Song svfloat64_t test_svzip2_f64(svfloat64_t op1, svfloat64_t op2) MODE_ATTR 186*207e5cccSFangrui Song { 187*207e5cccSFangrui Song return SVE_ACLE_FUNC(svzip2,_f64,,)(op1, op2); 188*207e5cccSFangrui Song } 189*207e5cccSFangrui Song 190*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_b8( 191*207e5cccSFangrui Song // CHECK-NEXT: entry: 192*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.nxv16i1(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 193*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 194*207e5cccSFangrui Song // 195*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z14test_svzip2_b8u10__SVBool_tS_( 196*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 197*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.nxv16i1(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 198*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 199*207e5cccSFangrui Song // 200*207e5cccSFangrui Song svbool_t test_svzip2_b8(svbool_t op1, svbool_t op2) MODE_ATTR 201*207e5cccSFangrui Song { 202*207e5cccSFangrui Song return svzip2_b8(op1, op2); 203*207e5cccSFangrui Song } 204*207e5cccSFangrui Song 205*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_b16( 206*207e5cccSFangrui Song // CHECK-NEXT: entry: 207*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.b16(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 208*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 209*207e5cccSFangrui Song // 210*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_b16u10__SVBool_tS_( 211*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 212*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.b16(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 213*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 214*207e5cccSFangrui Song // 215*207e5cccSFangrui Song svbool_t test_svzip2_b16(svbool_t op1, svbool_t op2) MODE_ATTR 216*207e5cccSFangrui Song { 217*207e5cccSFangrui Song return svzip2_b16(op1, op2); 218*207e5cccSFangrui Song } 219*207e5cccSFangrui Song 220*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_b32( 221*207e5cccSFangrui Song // CHECK-NEXT: entry: 222*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.b32(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 223*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 224*207e5cccSFangrui Song // 225*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_b32u10__SVBool_tS_( 226*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 227*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.b32(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 228*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 229*207e5cccSFangrui Song // 230*207e5cccSFangrui Song svbool_t test_svzip2_b32(svbool_t op1, svbool_t op2) MODE_ATTR 231*207e5cccSFangrui Song { 232*207e5cccSFangrui Song return svzip2_b32(op1, op2); 233*207e5cccSFangrui Song } 234*207e5cccSFangrui Song 235*207e5cccSFangrui Song // CHECK-LABEL: @test_svzip2_b64( 236*207e5cccSFangrui Song // CHECK-NEXT: entry: 237*207e5cccSFangrui Song // CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.b64(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 238*207e5cccSFangrui Song // CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 239*207e5cccSFangrui Song // 240*207e5cccSFangrui Song // CPP-CHECK-LABEL: @_Z15test_svzip2_b64u10__SVBool_tS_( 241*207e5cccSFangrui Song // CPP-CHECK-NEXT: entry: 242*207e5cccSFangrui Song // CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call <vscale x 16 x i1> @llvm.aarch64.sve.zip2.b64(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[OP2:%.*]]) 243*207e5cccSFangrui Song // CPP-CHECK-NEXT: ret <vscale x 16 x i1> [[TMP0]] 244*207e5cccSFangrui Song // 245*207e5cccSFangrui Song svbool_t test_svzip2_b64(svbool_t op1, svbool_t op2) MODE_ATTR 246*207e5cccSFangrui Song { 247*207e5cccSFangrui Song return svzip2_b64(op1, op2); 248*207e5cccSFangrui Song } 249