578 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals2; RUN: opt -vector-library=LIBMVEC -replace-with-veclib -S < %s | FileCheck %s3 4target triple = "aarch64-unknown-linux-gnu"5 6;.7; CHECK: @llvm.compiler.used = appending global [34 x ptr] [ptr @_ZGVnN2v_cos, ptr @_ZGVnN4v_cosf, ptr @_ZGVnN2v_exp, ptr @_ZGVnN4v_expf, ptr @_ZGVnN2v_exp10, ptr @_ZGVnN4v_exp10f, ptr @_ZGVnN2v_exp2, ptr @_ZGVnN4v_exp2f, ptr @_ZGVnN2v_log, ptr @_ZGVnN4v_logf, ptr @_ZGVnN2v_log10, ptr @_ZGVnN4v_log10f, ptr @_ZGVnN2v_log2, ptr @_ZGVnN4v_log2f, ptr @_ZGVnN2vv_pow, ptr @_ZGVnN4vv_powf, ptr @_ZGVnN2v_sin, ptr @_ZGVnN4v_sinf, ptr @_ZGVnN2v_tan, ptr @_ZGVnN4v_tanf, ptr @_ZGVnN2v_acos, ptr @_ZGVnN4v_acosf, ptr @_ZGVnN2v_asin, ptr @_ZGVnN4v_asinf, ptr @_ZGVnN2v_atan, ptr @_ZGVnN4v_atanf, ptr @_ZGVnN2vv_atan2, ptr @_ZGVnN4vv_atan2f, ptr @_ZGVnN2v_cosh, ptr @_ZGVnN4v_coshf, ptr @_ZGVnN2v_sinh, ptr @_ZGVnN4v_sinhf, ptr @_ZGVnN2v_tanh, ptr @_ZGVnN4v_tanhf], section "llvm.metadata"8;.9define <2 x double> @llvm_ceil_f64(<2 x double> %in) {10; CHECK-LABEL: @llvm_ceil_f64(11; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.ceil.v2f64(<2 x double> [[IN:%.*]])12; CHECK-NEXT: ret <2 x double> [[TMP1]]13;14 %1 = call fast <2 x double> @llvm.ceil.v2f64(<2 x double> %in)15 ret <2 x double> %116}17 18define <4 x float> @llvm_ceil_f32(<4 x float> %in) {19; CHECK-LABEL: @llvm_ceil_f32(20; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.ceil.v4f32(<4 x float> [[IN:%.*]])21; CHECK-NEXT: ret <4 x float> [[TMP1]]22;23 %1 = call fast <4 x float> @llvm.ceil.v4f32(<4 x float> %in)24 ret <4 x float> %125}26 27define <2 x double> @llvm_copysign_f64(<2 x double> %mag, <2 x double> %sgn) {28; CHECK-LABEL: @llvm_copysign_f64(29; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.copysign.v2f64(<2 x double> [[MAG:%.*]], <2 x double> [[SGN:%.*]])30; CHECK-NEXT: ret <2 x double> [[TMP1]]31;32 %1 = call fast <2 x double> @llvm.copysign.v2f64(<2 x double> %mag, <2 x double> %sgn)33 ret <2 x double> %134}35 36define <4 x float> @llvm_copysign_f32(<4 x float> %mag, <4 x float> %sgn) {37; CHECK-LABEL: @llvm_copysign_f32(38; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.copysign.v4f32(<4 x float> [[MAG:%.*]], <4 x float> [[SGN:%.*]])39; CHECK-NEXT: ret <4 x float> [[TMP1]]40;41 %1 = call fast <4 x float> @llvm.copysign.v4f32(<4 x float> %mag, <4 x float> %sgn)42 ret <4 x float> %143}44 45define <2 x double> @llvm_cos_f64(<2 x double> %in) {46; CHECK-LABEL: @llvm_cos_f64(47; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_cos(<2 x double> [[IN:%.*]])48; CHECK-NEXT: ret <2 x double> [[TMP1]]49;50 %1 = call fast <2 x double> @llvm.cos.v2f64(<2 x double> %in)51 ret <2 x double> %152}53 54define <4 x float> @llvm_cos_f32(<4 x float> %in) {55; CHECK-LABEL: @llvm_cos_f32(56; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_cosf(<4 x float> [[IN:%.*]])57; CHECK-NEXT: ret <4 x float> [[TMP1]]58;59 %1 = call fast <4 x float> @llvm.cos.v4f32(<4 x float> %in)60 ret <4 x float> %161}62 63define <2 x double> @llvm_exp_f64(<2 x double> %in) {64; CHECK-LABEL: @llvm_exp_f64(65; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp(<2 x double> [[IN:%.*]])66; CHECK-NEXT: ret <2 x double> [[TMP1]]67;68 %1 = call fast <2 x double> @llvm.exp.v2f64(<2 x double> %in)69 ret <2 x double> %170}71 72define <4 x float> @llvm_exp_f32(<4 x float> %in) {73; CHECK-LABEL: @llvm_exp_f32(74; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_expf(<4 x float> [[IN:%.*]])75; CHECK-NEXT: ret <4 x float> [[TMP1]]76;77 %1 = call fast <4 x float> @llvm.exp.v4f32(<4 x float> %in)78 ret <4 x float> %179}80 81define <2 x double> @llvm_exp10_f64(<2 x double> %in) {82; CHECK-LABEL: @llvm_exp10_f64(83; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp10(<2 x double> [[IN:%.*]])84; CHECK-NEXT: ret <2 x double> [[TMP1]]85;86 %1 = call fast <2 x double> @llvm.exp10.v2f64(<2 x double> %in)87 ret <2 x double> %188}89 90define <4 x float> @llvm_exp10_f32(<4 x float> %in) {91; CHECK-LABEL: @llvm_exp10_f32(92; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_exp10f(<4 x float> [[IN:%.*]])93; CHECK-NEXT: ret <4 x float> [[TMP1]]94;95 %1 = call fast <4 x float> @llvm.exp10.v4f32(<4 x float> %in)96 ret <4 x float> %197}98 99define <2 x double> @llvm_exp2_f64(<2 x double> %in) {100; CHECK-LABEL: @llvm_exp2_f64(101; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp2(<2 x double> [[IN:%.*]])102; CHECK-NEXT: ret <2 x double> [[TMP1]]103;104 %1 = call fast <2 x double> @llvm.exp2.v2f64(<2 x double> %in)105 ret <2 x double> %1106}107 108define <4 x float> @llvm_exp2_f32(<4 x float> %in) {109; CHECK-LABEL: @llvm_exp2_f32(110; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_exp2f(<4 x float> [[IN:%.*]])111; CHECK-NEXT: ret <4 x float> [[TMP1]]112;113 %1 = call fast <4 x float> @llvm.exp2.v4f32(<4 x float> %in)114 ret <4 x float> %1115}116 117define <2 x double> @llvm_fabs_f64(<2 x double> %in) {118; CHECK-LABEL: @llvm_fabs_f64(119; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.fabs.v2f64(<2 x double> [[IN:%.*]])120; CHECK-NEXT: ret <2 x double> [[TMP1]]121;122 %1 = call fast <2 x double> @llvm.fabs.v2f64(<2 x double> %in)123 ret <2 x double> %1124}125 126define <4 x float> @llvm_fabs_f32(<4 x float> %in) {127; CHECK-LABEL: @llvm_fabs_f32(128; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> [[IN:%.*]])129; CHECK-NEXT: ret <4 x float> [[TMP1]]130;131 %1 = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> %in)132 ret <4 x float> %1133}134 135define <2 x double> @llvm_floor_f64(<2 x double> %in) {136; CHECK-LABEL: @llvm_floor_f64(137; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.floor.v2f64(<2 x double> [[IN:%.*]])138; CHECK-NEXT: ret <2 x double> [[TMP1]]139;140 %1 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %in)141 ret <2 x double> %1142}143 144define <4 x float> @llvm_floor_f32(<4 x float> %in) {145; CHECK-LABEL: @llvm_floor_f32(146; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.floor.v4f32(<4 x float> [[IN:%.*]])147; CHECK-NEXT: ret <4 x float> [[TMP1]]148;149 %1 = call fast <4 x float> @llvm.floor.v4f32(<4 x float> %in)150 ret <4 x float> %1151}152 153define <2 x double> @llvm_fma_f64(<2 x double> %a, <2 x double> %b, <2 x double> %c ) {154; CHECK-LABEL: @llvm_fma_f64(155; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.fma.v2f64(<2 x double> [[A:%.*]], <2 x double> [[B:%.*]], <2 x double> [[C:%.*]])156; CHECK-NEXT: ret <2 x double> [[TMP1]]157;158 %1 = call fast <2 x double> @llvm.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c)159 ret <2 x double> %1160}161 162define <4 x float> @llvm_fma_f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) {163; CHECK-LABEL: @llvm_fma_f32(164; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.fma.v4f32(<4 x float> [[A:%.*]], <4 x float> [[B:%.*]], <4 x float> [[C:%.*]])165; CHECK-NEXT: ret <4 x float> [[TMP1]]166;167 %1 = call fast <4 x float> @llvm.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c)168 ret <4 x float> %1169}170 171define <2 x double> @llvm_log_f64(<2 x double> %in) {172; CHECK-LABEL: @llvm_log_f64(173; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log(<2 x double> [[IN:%.*]])174; CHECK-NEXT: ret <2 x double> [[TMP1]]175;176 %1 = call fast <2 x double> @llvm.log.v2f64(<2 x double> %in)177 ret <2 x double> %1178}179 180define <4 x float> @llvm_log_f32(<4 x float> %in) {181; CHECK-LABEL: @llvm_log_f32(182; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_logf(<4 x float> [[IN:%.*]])183; CHECK-NEXT: ret <4 x float> [[TMP1]]184;185 %1 = call fast <4 x float> @llvm.log.v4f32(<4 x float> %in)186 ret <4 x float> %1187}188 189define <2 x double> @llvm_log10_f64(<2 x double> %in) {190; CHECK-LABEL: @llvm_log10_f64(191; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log10(<2 x double> [[IN:%.*]])192; CHECK-NEXT: ret <2 x double> [[TMP1]]193;194 %1 = call fast <2 x double> @llvm.log10.v2f64(<2 x double> %in)195 ret <2 x double> %1196}197 198define <4 x float> @llvm_log10_f32(<4 x float> %in) {199; CHECK-LABEL: @llvm_log10_f32(200; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_log10f(<4 x float> [[IN:%.*]])201; CHECK-NEXT: ret <4 x float> [[TMP1]]202;203 %1 = call fast <4 x float> @llvm.log10.v4f32(<4 x float> %in)204 ret <4 x float> %1205}206 207define <2 x double> @llvm_log2_f64(<2 x double> %in) {208; CHECK-LABEL: @llvm_log2_f64(209; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log2(<2 x double> [[IN:%.*]])210; CHECK-NEXT: ret <2 x double> [[TMP1]]211;212 %1 = call fast <2 x double> @llvm.log2.v2f64(<2 x double> %in)213 ret <2 x double> %1214}215 216define <4 x float> @llvm_log2_f32(<4 x float> %in) {217; CHECK-LABEL: @llvm_log2_f32(218; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_log2f(<4 x float> [[IN:%.*]])219; CHECK-NEXT: ret <4 x float> [[TMP1]]220;221 %1 = call fast <4 x float> @llvm.log2.v4f32(<4 x float> %in)222 ret <4 x float> %1223}224 225define <2 x double> @llvm_maxnum_f64(<2 x double> %in0, <2 x double> %in1) {226; CHECK-LABEL: @llvm_maxnum_f64(227; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.maxnum.v2f64(<2 x double> [[IN0:%.*]], <2 x double> [[IN1:%.*]])228; CHECK-NEXT: ret <2 x double> [[TMP1]]229;230 %1 = call fast <2 x double> @llvm.maxnum.v2f64(<2 x double> %in0, <2 x double> %in1)231 ret <2 x double> %1232}233 234define <4 x float> @llvm_maxnum_f32(<4 x float> %in0, <4 x float> %in1) {235; CHECK-LABEL: @llvm_maxnum_f32(236; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> [[IN0:%.*]], <4 x float> [[IN1:%.*]])237; CHECK-NEXT: ret <4 x float> [[TMP1]]238;239 %1 = call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> %in0, <4 x float> %in1)240 ret <4 x float> %1241}242 243define <2 x double> @llvm_minnum_f64(<2 x double> %in0, <2 x double> %in1) {244; CHECK-LABEL: @llvm_minnum_f64(245; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.minnum.v2f64(<2 x double> [[IN0:%.*]], <2 x double> [[IN1:%.*]])246; CHECK-NEXT: ret <2 x double> [[TMP1]]247;248 %1 = call fast <2 x double> @llvm.minnum.v2f64(<2 x double> %in0, <2 x double> %in1)249 ret <2 x double> %1250}251 252define <4 x float> @llvm_minnum_f32(<4 x float> %in0, <4 x float> %in1) {253; CHECK-LABEL: @llvm_minnum_f32(254; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.minnum.v4f32(<4 x float> [[IN0:%.*]], <4 x float> [[IN1:%.*]])255; CHECK-NEXT: ret <4 x float> [[TMP1]]256;257 %1 = call fast <4 x float> @llvm.minnum.v4f32(<4 x float> %in0, <4 x float> %in1)258 ret <4 x float> %1259}260 261define <2 x double> @llvm_nearbyint_f64(<2 x double> %in) {262; CHECK-LABEL: @llvm_nearbyint_f64(263; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[IN:%.*]])264; CHECK-NEXT: ret <2 x double> [[TMP1]]265;266 %1 = call fast <2 x double> @llvm.nearbyint.v2f64(<2 x double> %in)267 ret <2 x double> %1268}269 270define <4 x float> @llvm_nearbyint_f32(<4 x float> %in) {271; CHECK-LABEL: @llvm_nearbyint_f32(272; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[IN:%.*]])273; CHECK-NEXT: ret <4 x float> [[TMP1]]274;275 %1 = call fast <4 x float> @llvm.nearbyint.v4f32(<4 x float> %in)276 ret <4 x float> %1277}278 279define <2 x double> @llvm_pow_f64(<2 x double> %in, <2 x double> %pow) {280; CHECK-LABEL: @llvm_pow_f64(281; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2vv_pow(<2 x double> [[IN:%.*]], <2 x double> [[POW:%.*]])282; CHECK-NEXT: ret <2 x double> [[TMP1]]283;284 %1 = call fast <2 x double> @llvm.pow.v2f64(<2 x double> %in, <2 x double> %pow)285 ret <2 x double> %1286}287 288define <4 x float> @llvm_pow_f32(<4 x float> %in, <4 x float> %pow) {289; CHECK-LABEL: @llvm_pow_f32(290; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4vv_powf(<4 x float> [[IN:%.*]], <4 x float> [[POW:%.*]])291; CHECK-NEXT: ret <4 x float> [[TMP1]]292;293 %1 = call fast <4 x float> @llvm.pow.v4f32(<4 x float> %in, <4 x float> %pow)294 ret <4 x float> %1295}296 297define <2 x double> @llvm_rint_f64(<2 x double> %in) {298; CHECK-LABEL: @llvm_rint_f64(299; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.rint.v2f64(<2 x double> [[IN:%.*]])300; CHECK-NEXT: ret <2 x double> [[TMP1]]301;302 %1 = call fast <2 x double> @llvm.rint.v2f64(<2 x double> %in)303 ret <2 x double> %1304}305 306define <4 x float> @llvm_rint_f32(<4 x float> %in) {307; CHECK-LABEL: @llvm_rint_f32(308; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.rint.v4f32(<4 x float> [[IN:%.*]])309; CHECK-NEXT: ret <4 x float> [[TMP1]]310;311 %1 = call fast <4 x float> @llvm.rint.v4f32(<4 x float> %in)312 ret <4 x float> %1313}314 315define <2 x double> @llvm_round_f64(<2 x double> %in) {316; CHECK-LABEL: @llvm_round_f64(317; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.round.v2f64(<2 x double> [[IN:%.*]])318; CHECK-NEXT: ret <2 x double> [[TMP1]]319;320 %1 = call fast <2 x double> @llvm.round.v2f64(<2 x double> %in)321 ret <2 x double> %1322}323 324define <4 x float> @llvm_round_f32(<4 x float> %in) {325; CHECK-LABEL: @llvm_round_f32(326; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.round.v4f32(<4 x float> [[IN:%.*]])327; CHECK-NEXT: ret <4 x float> [[TMP1]]328;329 %1 = call fast <4 x float> @llvm.round.v4f32(<4 x float> %in)330 ret <4 x float> %1331}332 333define <2 x double> @llvm_sin_f64(<2 x double> %in) {334; CHECK-LABEL: @llvm_sin_f64(335; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_sin(<2 x double> [[IN:%.*]])336; CHECK-NEXT: ret <2 x double> [[TMP1]]337;338 %1 = call fast <2 x double> @llvm.sin.v2f64(<2 x double> %in)339 ret <2 x double> %1340}341 342define <4 x float> @llvm_sin_f32(<4 x float> %in) {343; CHECK-LABEL: @llvm_sin_f32(344; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_sinf(<4 x float> [[IN:%.*]])345; CHECK-NEXT: ret <4 x float> [[TMP1]]346;347 %1 = call fast <4 x float> @llvm.sin.v4f32(<4 x float> %in)348 ret <4 x float> %1349}350 351define <2 x double> @llvm_sqrt_f64(<2 x double> %in) {352; CHECK-LABEL: @llvm_sqrt_f64(353; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[IN:%.*]])354; CHECK-NEXT: ret <2 x double> [[TMP1]]355;356 %1 = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> %in)357 ret <2 x double> %1358}359 360define <4 x float> @llvm_sqrt_f32(<4 x float> %in) {361; CHECK-LABEL: @llvm_sqrt_f32(362; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[IN:%.*]])363; CHECK-NEXT: ret <4 x float> [[TMP1]]364;365 %1 = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> %in)366 ret <4 x float> %1367}368 369define <2 x double> @llvm_tan_f64(<2 x double> %in) {370; CHECK-LABEL: @llvm_tan_f64(371; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_tan(<2 x double> [[IN:%.*]])372; CHECK-NEXT: ret <2 x double> [[TMP1]]373;374 %1 = call fast <2 x double> @llvm.tan.v2f64(<2 x double> %in)375 ret <2 x double> %1376}377 378define <4 x float> @llvm_tan_f32(<4 x float> %in) {379; CHECK-LABEL: @llvm_tan_f32(380; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_tanf(<4 x float> [[IN:%.*]])381; CHECK-NEXT: ret <4 x float> [[TMP1]]382;383 %1 = call fast <4 x float> @llvm.tan.v4f32(<4 x float> %in)384 ret <4 x float> %1385}386 387define <2 x double> @llvm_acos_f64(<2 x double> %in) {388; CHECK-LABEL: @llvm_acos_f64(389; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_acos(<2 x double> [[IN:%.*]])390; CHECK-NEXT: ret <2 x double> [[TMP1]]391;392 %1 = call fast <2 x double> @llvm.acos.v2f64(<2 x double> %in)393 ret <2 x double> %1394}395 396define <4 x float> @llvm_acos_f32(<4 x float> %in) {397; CHECK-LABEL: @llvm_acos_f32(398; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_acosf(<4 x float> [[IN:%.*]])399; CHECK-NEXT: ret <4 x float> [[TMP1]]400;401 %1 = call fast <4 x float> @llvm.acos.v4f32(<4 x float> %in)402 ret <4 x float> %1403}404 405define <2 x double> @llvm_asin_f64(<2 x double> %in) {406; CHECK-LABEL: @llvm_asin_f64(407; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_asin(<2 x double> [[IN:%.*]])408; CHECK-NEXT: ret <2 x double> [[TMP1]]409;410 %1 = call fast <2 x double> @llvm.asin.v2f64(<2 x double> %in)411 ret <2 x double> %1412}413 414define <4 x float> @llvm_asin_f32(<4 x float> %in) {415; CHECK-LABEL: @llvm_asin_f32(416; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_asinf(<4 x float> [[IN:%.*]])417; CHECK-NEXT: ret <4 x float> [[TMP1]]418;419 %1 = call fast <4 x float> @llvm.asin.v4f32(<4 x float> %in)420 ret <4 x float> %1421}422 423define <2 x double> @llvm_atan_f64(<2 x double> %in) {424; CHECK-LABEL: @llvm_atan_f64(425; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_atan(<2 x double> [[IN:%.*]])426; CHECK-NEXT: ret <2 x double> [[TMP1]]427;428 %1 = call fast <2 x double> @llvm.atan.v2f64(<2 x double> %in)429 ret <2 x double> %1430}431 432define <4 x float> @llvm_atan_f32(<4 x float> %in) {433; CHECK-LABEL: @llvm_atan_f32(434; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_atanf(<4 x float> [[IN:%.*]])435; CHECK-NEXT: ret <4 x float> [[TMP1]]436;437 %1 = call fast <4 x float> @llvm.atan.v4f32(<4 x float> %in)438 ret <4 x float> %1439}440 441define <2 x double> @llvm_atan2_f64(<2 x double> %x, <2 x double> %y) {442; CHECK-LABEL: @llvm_atan2_f64(443; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2vv_atan2(<2 x double> [[INX:%.*]], <2 x double> [[INY:%.*]])444; CHECK-NEXT: ret <2 x double> [[TMP1]]445;446 %1 = call fast <2 x double> @llvm.atan2.v2f64(<2 x double> %x, <2 x double> %y)447 ret <2 x double> %1448}449 450define <4 x float> @llvm_atan2_f32(<4 x float> %x, <4 x float> %y) {451; CHECK-LABEL: @llvm_atan2_f32(452; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4vv_atan2f(<4 x float> [[INX:%.*]], <4 x float> [[INY:%.*]])453; CHECK-NEXT: ret <4 x float> [[TMP1]]454;455 %1 = call fast <4 x float> @llvm.atan2.v4f32(<4 x float> %x, <4 x float> %y)456 ret <4 x float> %1457}458 459define <2 x double> @llvm_cosh_f64(<2 x double> %in) {460; CHECK-LABEL: @llvm_cosh_f64(461; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_cosh(<2 x double> [[IN:%.*]])462; CHECK-NEXT: ret <2 x double> [[TMP1]]463;464 %1 = call fast <2 x double> @llvm.cosh.v2f64(<2 x double> %in)465 ret <2 x double> %1466}467 468define <4 x float> @llvm_cosh_f32(<4 x float> %in) {469; CHECK-LABEL: @llvm_cosh_f32(470; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_coshf(<4 x float> [[IN:%.*]])471; CHECK-NEXT: ret <4 x float> [[TMP1]]472;473 %1 = call fast <4 x float> @llvm.cosh.v4f32(<4 x float> %in)474 ret <4 x float> %1475}476 477define <2 x double> @llvm_sinh_f64(<2 x double> %in) {478; CHECK-LABEL: @llvm_sinh_f64(479; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_sinh(<2 x double> [[IN:%.*]])480; CHECK-NEXT: ret <2 x double> [[TMP1]]481;482 %1 = call fast <2 x double> @llvm.sinh.v2f64(<2 x double> %in)483 ret <2 x double> %1484}485 486define <4 x float> @llvm_sinh_f32(<4 x float> %in) {487; CHECK-LABEL: @llvm_sinh_f32(488; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_sinhf(<4 x float> [[IN:%.*]])489; CHECK-NEXT: ret <4 x float> [[TMP1]]490;491 %1 = call fast <4 x float> @llvm.sinh.v4f32(<4 x float> %in)492 ret <4 x float> %1493}494 495define <2 x double> @llvm_tanh_f64(<2 x double> %in) {496; CHECK-LABEL: @llvm_tanh_f64(497; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_tanh(<2 x double> [[IN:%.*]])498; CHECK-NEXT: ret <2 x double> [[TMP1]]499;500 %1 = call fast <2 x double> @llvm.tanh.v2f64(<2 x double> %in)501 ret <2 x double> %1502}503 504define <4 x float> @llvm_tanh_f32(<4 x float> %in) {505; CHECK-LABEL: @llvm_tanh_f32(506; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_tanhf(<4 x float> [[IN:%.*]])507; CHECK-NEXT: ret <4 x float> [[TMP1]]508;509 %1 = call fast <4 x float> @llvm.tanh.v4f32(<4 x float> %in)510 ret <4 x float> %1511}512 513define <2 x double> @llvm_trunc_f64(<2 x double> %in) {514; CHECK-LABEL: @llvm_trunc_f64(515; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.trunc.v2f64(<2 x double> [[IN:%.*]])516; CHECK-NEXT: ret <2 x double> [[TMP1]]517;518 %1 = call fast <2 x double> @llvm.trunc.v2f64(<2 x double> %in)519 ret <2 x double> %1520}521 522define <4 x float> @llvm_trunc_f32(<4 x float> %in) {523; CHECK-LABEL: @llvm_trunc_f32(524; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.trunc.v4f32(<4 x float> [[IN:%.*]])525; CHECK-NEXT: ret <4 x float> [[TMP1]]526;527 %1 = call fast <4 x float> @llvm.trunc.v4f32(<4 x float> %in)528 ret <4 x float> %1529}530 531declare <2 x double> @llvm.ceil.v2f64(<2 x double>)532declare <4 x float> @llvm.ceil.v4f32(<4 x float>)533declare <2 x double> @llvm.copysign.v2f64(<2 x double>, <2 x double>)534declare <4 x float> @llvm.copysign.v4f32(<4 x float>, <4 x float>)535declare <2 x double> @llvm.cos.v2f64(<2 x double>)536declare <4 x float> @llvm.cos.v4f32(<4 x float>)537declare <2 x double> @llvm.exp.v2f64(<2 x double>)538declare <4 x float> @llvm.exp.v4f32(<4 x float>)539declare <2 x double> @llvm.exp2.v2f64(<2 x double>)540declare <4 x float> @llvm.exp2.v4f32(<4 x float>)541declare <2 x double> @llvm.exp10.v2f64(<2 x double>)542declare <4 x float> @llvm.exp10.v4f32(<4 x float>)543declare <2 x double> @llvm.fabs.v2f64(<2 x double>)544declare <4 x float> @llvm.fabs.v4f32(<4 x float>)545declare <2 x double> @llvm.floor.v2f64(<2 x double>)546declare <4 x float> @llvm.floor.v4f32(<4 x float>)547declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>)548declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)549declare <2 x double> @llvm.log.v2f64(<2 x double>)550declare <4 x float> @llvm.log.v4f32(<4 x float>)551declare <2 x double> @llvm.log10.v2f64(<2 x double>)552declare <4 x float> @llvm.log10.v4f32(<4 x float>)553declare <2 x double> @llvm.log2.v2f64(<2 x double>)554declare <4 x float> @llvm.log2.v4f32(<4 x float>)555declare <2 x double> @llvm.maxnum.v2f64(<2 x double>, <2 x double>)556declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>)557declare <2 x double> @llvm.minnum.v2f64(<2 x double>, <2 x double>)558declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>)559declare <2 x double> @llvm.nearbyint.v2f64(<2 x double>)560declare <4 x float> @llvm.nearbyint.v4f32(<4 x float>)561declare <2 x double> @llvm.pow.v2f64(<2 x double>, <2 x double>)562declare <4 x float> @llvm.pow.v4f32(<4 x float>, <4 x float>)563declare <2 x double> @llvm.rint.v2f64(<2 x double>)564declare <4 x float> @llvm.rint.v4f32(<4 x float>)565declare <2 x double> @llvm.round.v2f64(<2 x double>)566declare <4 x float> @llvm.round.v4f32(<4 x float>)567declare <2 x double> @llvm.sin.v2f64(<2 x double>)568declare <4 x float> @llvm.sin.v4f32(<4 x float>)569declare <2 x double> @llvm.sqrt.v2f64(<2 x double>)570declare <4 x float> @llvm.sqrt.v4f32(<4 x float>)571declare <2 x double> @llvm.tan.v2f64(<2 x double>)572declare <4 x float> @llvm.tan.v4f32(<4 x float>)573declare <2 x double> @llvm.trunc.v2f64(<2 x double>)574declare <4 x float> @llvm.trunc.v4f32(<4 x float>)575;.576; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }577;.578