1570 lines · plain
1; RUN: opt -vector-library=MASSV -mtriple=powerpc64le-unknown-linux-gnu -passes=inject-tli-mappings,loop-vectorize -force-vector-interleave=1 -S < %s | FileCheck %s2; RUN: opt -vector-library=MASSV -vec-extabi -mattr=+altivec -mcpu=ppc64 -mtriple=powerpc64-ibm-aix-xcoff -passes=inject-tli-mappings,loop-vectorize -force-vector-interleave=1 -S < %s | FileCheck %s3 4declare double @cbrt(double) #05declare float @cbrtf(float) #06 7declare double @pow(double, double) #08declare double @llvm.pow.f64(double, double) #09declare float @powf(float, float) #010declare float @llvm.pow.f32(float, float) #011 12declare double @sqrt(double) #013declare float @sqrtf(float) #014 15declare double @exp(double) #016declare double @llvm.exp.f64(double) #017declare float @expf(float) #018declare float @llvm.exp.f32(float) #019 20declare double @exp2(double) #021declare double @llvm.exp2.f64(double) #022declare float @exp2f(float) #023declare float @llvm.exp2.f32(float) #024 25declare double @expm1(double) #026declare float @expm1f(float) #027 28declare double @log(double) #029declare double @llvm.log.f64(double) #030declare float @logf(float) #031declare float @llvm.log.f32(float) #032 33declare double @log1p(double) #034declare float @log1pf(float) #035 36declare double @log10(double) #037declare double @llvm.log10.f64(double) #038declare float @log10f(float) #039declare float @llvm.log10.f32(float) #040 41declare double @log2(double) #042declare double @llvm.log2.f64(double) #043declare float @log2f(float) #044declare float @llvm.log2.f32(float) #045 46declare double @sin(double) #047declare double @llvm.sin.f64(double) #048declare float @sinf(float) #049declare float @llvm.sin.f32(float) #050 51declare double @cos(double) #052declare double @llvm.cos.f64(double) #053declare float @cosf(float) #054declare float @llvm.cos.f32(float) #055 56declare double @tan(double) #057declare float @tanf(float) #058 59declare double @asin(double) #060declare float @asinf(float) #061 62declare double @acos(double) #063declare float @acosf(float) #064 65declare double @atan(double) #066declare float @atanf(float) #067 68declare double @atan2(double, double) #069declare float @atan2f(float, float) #070 71declare double @sinh(double) #072declare float @sinhf(float) #073 74declare double @cosh(double) #075declare float @coshf(float) #076 77declare double @tanh(double) #078declare float @tanhf(float) #079 80declare double @asinh(double) #081declare float @asinhf(float) #082 83declare double @acosh(double) #084declare float @acoshf(float) #085 86declare double @atanh(double) #087declare float @atanhf(float) #088 89define void @cbrt_f64(ptr nocapture %varray) {90; CHECK-LABEL: @cbrt_f64(91; CHECK: __cbrtd2{{.*}}<2 x double>92; CHECK: ret void93;94entry:95 br label %for.body96 97for.body:98 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]99 %tmp = trunc i64 %iv to i32100 %conv = sitofp i32 %tmp to double101 %call = tail call double @cbrt(double %conv)102 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv103 store double %call, ptr %arrayidx, align 4104 %iv.next = add nuw nsw i64 %iv, 1105 %exitcond = icmp eq i64 %iv.next, 1000106 br i1 %exitcond, label %for.end, label %for.body107 108for.end:109 ret void110}111 112define void @cbrt_f32(ptr nocapture %varray) {113; CHECK-LABEL: @cbrt_f32(114; CHECK: __cbrtf4{{.*}}<4 x float>115; CHECK: ret void116;117entry:118 br label %for.body119 120for.body:121 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]122 %tmp = trunc i64 %iv to i32123 %conv = sitofp i32 %tmp to float124 %call = tail call float @cbrtf(float %conv)125 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv126 store float %call, ptr %arrayidx, align 4127 %iv.next = add nuw nsw i64 %iv, 1128 %exitcond = icmp eq i64 %iv.next, 1000129 br i1 %exitcond, label %for.end, label %for.body130 131for.end:132 ret void133}134 135define void @pow_f64(ptr nocapture %varray, ptr nocapture readonly %exp) {136; CHECK-LABEL: @pow_f64(137; CHECK: __powd2{{.*}}<2 x double>138; CHECK: ret void139;140entry:141 br label %for.body142 143for.body:144 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]145 %tmp = trunc i64 %iv to i32146 %conv = sitofp i32 %tmp to double147 %arrayidx = getelementptr inbounds double, ptr %exp, i64 %iv148 %tmp1 = load double, ptr %arrayidx, align 4149 %tmp2 = tail call double @pow(double %conv, double %tmp1)150 %arrayidx2 = getelementptr inbounds double, ptr %varray, i64 %iv151 store double %tmp2, ptr %arrayidx2, align 4152 %iv.next = add nuw nsw i64 %iv, 1153 %exitcond = icmp eq i64 %iv.next, 1000154 br i1 %exitcond, label %for.end, label %for.body155 156for.end:157 ret void158}159 160define void @pow_f64_intrinsic(ptr nocapture %varray, ptr nocapture readonly %exp) {161; CHECK-LABEL: @pow_f64_intrinsic(162; CHECK: __powd2{{.*}}<2 x double>163; CHECK: ret void164;165entry:166 br label %for.body167 168for.body:169 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]170 %tmp = trunc i64 %iv to i32171 %conv = sitofp i32 %tmp to double172 %arrayidx = getelementptr inbounds double, ptr %exp, i64 %iv173 %tmp1 = load double, ptr %arrayidx, align 4174 %tmp2 = tail call double @llvm.pow.f64(double %conv, double %tmp1)175 %arrayidx2 = getelementptr inbounds double, ptr %varray, i64 %iv176 store double %tmp2, ptr %arrayidx2, align 4177 %iv.next = add nuw nsw i64 %iv, 1178 %exitcond = icmp eq i64 %iv.next, 1000179 br i1 %exitcond, label %for.end, label %for.body180 181for.end:182 ret void183}184 185define void @pow_f32(ptr nocapture %varray, ptr nocapture readonly %exp) {186; CHECK-LABEL: @pow_f32(187; CHECK: __powf4{{.*}}<4 x float>188; CHECK: ret void189;190entry:191 br label %for.body192 193for.body:194 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]195 %tmp = trunc i64 %iv to i32196 %conv = sitofp i32 %tmp to float197 %arrayidx = getelementptr inbounds float, ptr %exp, i64 %iv198 %tmp1 = load float, ptr %arrayidx, align 4199 %tmp2 = tail call float @powf(float %conv, float %tmp1)200 %arrayidx2 = getelementptr inbounds float, ptr %varray, i64 %iv201 store float %tmp2, ptr %arrayidx2, align 4202 %iv.next = add nuw nsw i64 %iv, 1203 %exitcond = icmp eq i64 %iv.next, 1000204 br i1 %exitcond, label %for.end, label %for.body205 206for.end:207 ret void208}209 210define void @pow_f32_intrinsic(ptr nocapture %varray, ptr nocapture readonly %exp) {211; CHECK-LABEL: @pow_f32_intrinsic(212; CHECK: __powf4{{.*}}<4 x float>213; CHECK: ret void214;215entry:216 br label %for.body217 218for.body:219 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]220 %tmp = trunc i64 %iv to i32221 %conv = sitofp i32 %tmp to float222 %arrayidx = getelementptr inbounds float, ptr %exp, i64 %iv223 %tmp1 = load float, ptr %arrayidx, align 4224 %tmp2 = tail call float @llvm.pow.f32(float %conv, float %tmp1)225 %arrayidx2 = getelementptr inbounds float, ptr %varray, i64 %iv226 store float %tmp2, ptr %arrayidx2, align 4227 %iv.next = add nuw nsw i64 %iv, 1228 %exitcond = icmp eq i64 %iv.next, 1000229 br i1 %exitcond, label %for.end, label %for.body230 231for.end:232 ret void233}234 235define void @sqrt_f64(ptr nocapture %varray) {236; CHECK-LABEL: @sqrt_f64(237; CHECK-NOT: __sqrtd2{{.*}}<2 x double>238; CHECK: ret void239;240entry:241 br label %for.body242 243for.body:244 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]245 %tmp = trunc i64 %iv to i32246 %conv = sitofp i32 %tmp to double247 %call = tail call double @sqrt(double %conv)248 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv249 store double %call, ptr %arrayidx, align 4250 %iv.next = add nuw nsw i64 %iv, 1251 %exitcond = icmp eq i64 %iv.next, 1000252 br i1 %exitcond, label %for.end, label %for.body253 254for.end:255 ret void256}257 258define void @sqrt_f32(ptr nocapture %varray) {259; CHECK-LABEL: @sqrt_f32(260; CHECK-NOT: __sqrtf4{{.*}}<4 x float>261; CHECK: ret void262;263entry:264 br label %for.body265 266for.body:267 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]268 %tmp = trunc i64 %iv to i32269 %conv = sitofp i32 %tmp to float270 %call = tail call float @sqrtf(float %conv)271 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv272 store float %call, ptr %arrayidx, align 4273 %iv.next = add nuw nsw i64 %iv, 1274 %exitcond = icmp eq i64 %iv.next, 1000275 br i1 %exitcond, label %for.end, label %for.body276 277for.end:278 ret void279}280 281define void @exp_f64(ptr nocapture %varray) {282; CHECK-LABEL: @exp_f64(283; CHECK: __expd2{{.*}}<2 x double>284; CHECK: ret void285;286entry:287 br label %for.body288 289for.body:290 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]291 %tmp = trunc i64 %iv to i32292 %conv = sitofp i32 %tmp to double293 %call = tail call double @exp(double %conv)294 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv295 store double %call, ptr %arrayidx, align 4296 %iv.next = add nuw nsw i64 %iv, 1297 %exitcond = icmp eq i64 %iv.next, 1000298 br i1 %exitcond, label %for.end, label %for.body299 300for.end:301 ret void302}303 304define void @exp_f64_intrinsic(ptr nocapture %varray) {305; CHECK-LABEL: @exp_f64_intrinsic(306; CHECK: __expd2{{.*}}<2 x double>307; CHECK: ret void308;309entry:310 br label %for.body311 312for.body:313 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]314 %tmp = trunc i64 %iv to i32315 %conv = sitofp i32 %tmp to double316 %call = tail call double @llvm.exp.f64(double %conv)317 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv318 store double %call, ptr %arrayidx, align 4319 %iv.next = add nuw nsw i64 %iv, 1320 %exitcond = icmp eq i64 %iv.next, 1000321 br i1 %exitcond, label %for.end, label %for.body322 323for.end:324 ret void325}326 327define void @exp_f32(ptr nocapture %varray) {328; CHECK-LABEL: @exp_f32(329; CHECK: __expf4{{.*}}<4 x float>330; CHECK: ret void331;332entry:333 br label %for.body334 335for.body:336 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]337 %tmp = trunc i64 %iv to i32338 %conv = sitofp i32 %tmp to float339 %call = tail call float @expf(float %conv)340 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv341 store float %call, ptr %arrayidx, align 4342 %iv.next = add nuw nsw i64 %iv, 1343 %exitcond = icmp eq i64 %iv.next, 1000344 br i1 %exitcond, label %for.end, label %for.body345 346for.end:347 ret void348}349 350define void @exp_f32_intrinsic(ptr nocapture %varray) {351; CHECK-LABEL: @exp_f32_intrinsic(352; CHECK: __expf4{{.*}}<4 x float>353; CHECK: ret void354;355entry:356 br label %for.body357 358for.body:359 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]360 %tmp = trunc i64 %iv to i32361 %conv = sitofp i32 %tmp to float362 %call = tail call float @llvm.exp.f32(float %conv)363 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv364 store float %call, ptr %arrayidx, align 4365 %iv.next = add nuw nsw i64 %iv, 1366 %exitcond = icmp eq i64 %iv.next, 1000367 br i1 %exitcond, label %for.end, label %for.body368 369for.end:370 ret void371}372 373define void @exp2_f64(ptr nocapture %varray) {374; CHECK-LABEL: @exp2_f64(375; CHECK: __exp2d2{{.*}}<2 x double>376; CHECK: ret void377;378entry:379 br label %for.body380 381for.body:382 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]383 %tmp = trunc i64 %iv to i32384 %conv = sitofp i32 %tmp to double385 %call = tail call double @exp2(double %conv)386 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv387 store double %call, ptr %arrayidx, align 4388 %iv.next = add nuw nsw i64 %iv, 1389 %exitcond = icmp eq i64 %iv.next, 1000390 br i1 %exitcond, label %for.end, label %for.body391 392for.end:393 ret void394}395 396define void @exp2_f64_intrinsic(ptr nocapture %varray) {397; CHECK-LABEL: @exp2_f64_intrinsic(398; CHECK: __exp2d2{{.*}}<2 x double>399; CHECK: ret void400;401entry:402 br label %for.body403 404for.body:405 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]406 %tmp = trunc i64 %iv to i32407 %conv = sitofp i32 %tmp to double408 %call = tail call double @llvm.exp2.f64(double %conv)409 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv410 store double %call, ptr %arrayidx, align 4411 %iv.next = add nuw nsw i64 %iv, 1412 %exitcond = icmp eq i64 %iv.next, 1000413 br i1 %exitcond, label %for.end, label %for.body414 415for.end:416 ret void417}418 419define void @exp2_f32(ptr nocapture %varray) {420; CHECK-LABEL: @exp2_f32(421; CHECK: __exp2f4{{.*}}<4 x float>422; CHECK: ret void423;424entry:425 br label %for.body426 427for.body:428 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]429 %tmp = trunc i64 %iv to i32430 %conv = sitofp i32 %tmp to float431 %call = tail call float @exp2f(float %conv)432 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv433 store float %call, ptr %arrayidx, align 4434 %iv.next = add nuw nsw i64 %iv, 1435 %exitcond = icmp eq i64 %iv.next, 1000436 br i1 %exitcond, label %for.end, label %for.body437 438for.end:439 ret void440}441 442define void @exp2_f32_intrinsic(ptr nocapture %varray) {443; CHECK-LABEL: @exp2_f32_intrinsic(444; CHECK: __exp2f4{{.*}}<4 x float>445; CHECK: ret void446;447entry:448 br label %for.body449 450for.body:451 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]452 %tmp = trunc i64 %iv to i32453 %conv = sitofp i32 %tmp to float454 %call = tail call float @llvm.exp2.f32(float %conv)455 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv456 store float %call, ptr %arrayidx, align 4457 %iv.next = add nuw nsw i64 %iv, 1458 %exitcond = icmp eq i64 %iv.next, 1000459 br i1 %exitcond, label %for.end, label %for.body460 461for.end:462 ret void463}464 465define void @expm1_f64(ptr nocapture %varray) {466; CHECK-LABEL: @expm1_f64(467; CHECK: __expm1d2{{.*}}<2 x double>468; CHECK: ret void469;470entry:471 br label %for.body472 473for.body:474 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]475 %tmp = trunc i64 %iv to i32476 %conv = sitofp i32 %tmp to double477 %call = tail call double @expm1(double %conv)478 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv479 store double %call, ptr %arrayidx, align 4480 %iv.next = add nuw nsw i64 %iv, 1481 %exitcond = icmp eq i64 %iv.next, 1000482 br i1 %exitcond, label %for.end, label %for.body483 484for.end:485 ret void486}487 488define void @expm1_f32(ptr nocapture %varray) {489; CHECK-LABEL: @expm1_f32(490; CHECK: __expm1f4{{.*}}<4 x float>491; CHECK: ret void492;493entry:494 br label %for.body495 496for.body:497 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]498 %tmp = trunc i64 %iv to i32499 %conv = sitofp i32 %tmp to float500 %call = tail call float @expm1f(float %conv)501 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv502 store float %call, ptr %arrayidx, align 4503 %iv.next = add nuw nsw i64 %iv, 1504 %exitcond = icmp eq i64 %iv.next, 1000505 br i1 %exitcond, label %for.end, label %for.body506 507for.end:508 ret void509}510 511define void @log_f64(ptr nocapture %varray) {512; CHECK-LABEL: @log_f64(513; CHECK: __logd2{{.*}}<2 x double>514; CHECK: ret void515;516entry:517 br label %for.body518 519for.body:520 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]521 %tmp = trunc i64 %iv to i32522 %conv = sitofp i32 %tmp to double523 %call = tail call double @log(double %conv)524 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv525 store double %call, ptr %arrayidx, align 4526 %iv.next = add nuw nsw i64 %iv, 1527 %exitcond = icmp eq i64 %iv.next, 1000528 br i1 %exitcond, label %for.end, label %for.body529 530for.end:531 ret void532}533 534define void @log_f64_intrinsic(ptr nocapture %varray) {535; CHECK-LABEL: @log_f64_intrinsic(536; CHECK: __logd2{{.*}}<2 x double>537; CHECK: ret void538;539entry:540 br label %for.body541 542for.body:543 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]544 %tmp = trunc i64 %iv to i32545 %conv = sitofp i32 %tmp to double546 %call = tail call double @llvm.log.f64(double %conv)547 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv548 store double %call, ptr %arrayidx, align 4549 %iv.next = add nuw nsw i64 %iv, 1550 %exitcond = icmp eq i64 %iv.next, 1000551 br i1 %exitcond, label %for.end, label %for.body552 553for.end:554 ret void555}556 557define void @log_f32(ptr nocapture %varray) {558; CHECK-LABEL: @log_f32(559; CHECK: __logf4{{.*}}<4 x float>560; CHECK: ret void561;562entry:563 br label %for.body564 565for.body:566 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]567 %tmp = trunc i64 %iv to i32568 %conv = sitofp i32 %tmp to float569 %call = tail call float @logf(float %conv)570 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv571 store float %call, ptr %arrayidx, align 4572 %iv.next = add nuw nsw i64 %iv, 1573 %exitcond = icmp eq i64 %iv.next, 1000574 br i1 %exitcond, label %for.end, label %for.body575 576for.end:577 ret void578}579 580define void @log_f32_intrinsic(ptr nocapture %varray) {581; CHECK-LABEL: @log_f32_intrinsic(582; CHECK: __logf4{{.*}}<4 x float>583; CHECK: ret void584;585entry:586 br label %for.body587 588for.body:589 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]590 %tmp = trunc i64 %iv to i32591 %conv = sitofp i32 %tmp to float592 %call = tail call float @llvm.log.f32(float %conv)593 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv594 store float %call, ptr %arrayidx, align 4595 %iv.next = add nuw nsw i64 %iv, 1596 %exitcond = icmp eq i64 %iv.next, 1000597 br i1 %exitcond, label %for.end, label %for.body598 599for.end:600 ret void601}602 603define void @log1p_f64(ptr nocapture %varray) {604; CHECK-LABEL: @log1p_f64(605; CHECK: __log1pd2{{.*}}<2 x double>606; CHECK: ret void607;608entry:609 br label %for.body610 611for.body:612 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]613 %tmp = trunc i64 %iv to i32614 %conv = sitofp i32 %tmp to double615 %call = tail call double @log1p(double %conv)616 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv617 store double %call, ptr %arrayidx, align 4618 %iv.next = add nuw nsw i64 %iv, 1619 %exitcond = icmp eq i64 %iv.next, 1000620 br i1 %exitcond, label %for.end, label %for.body621 622for.end:623 ret void624}625 626define void @log1p_f32(ptr nocapture %varray) {627; CHECK-LABEL: @log1p_f32(628; CHECK: __log1pf4{{.*}}<4 x float>629; CHECK: ret void630;631entry:632 br label %for.body633 634for.body:635 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]636 %tmp = trunc i64 %iv to i32637 %conv = sitofp i32 %tmp to float638 %call = tail call float @log1pf(float %conv)639 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv640 store float %call, ptr %arrayidx, align 4641 %iv.next = add nuw nsw i64 %iv, 1642 %exitcond = icmp eq i64 %iv.next, 1000643 br i1 %exitcond, label %for.end, label %for.body644 645for.end:646 ret void647}648 649define void @log10_f64(ptr nocapture %varray) {650; CHECK-LABEL: @log10_f64(651; CHECK: __log10d2(<2 x double>652; CHECK: ret void653;654entry:655 br label %for.body656 657for.body:658 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]659 %tmp = trunc i64 %iv to i32660 %conv = sitofp i32 %tmp to double661 %call = tail call double @log10(double %conv)662 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv663 store double %call, ptr %arrayidx, align 4664 %iv.next = add nuw nsw i64 %iv, 1665 %exitcond = icmp eq i64 %iv.next, 1000666 br i1 %exitcond, label %for.end, label %for.body667 668for.end:669 ret void670}671 672define void @log10_f64_intrinsic(ptr nocapture %varray) {673; CHECK-LABEL: @log10_f64_intrinsic(674; CHECK: __log10d2{{.*}}<2 x double>675; CHECK: ret void676;677entry:678 br label %for.body679 680for.body:681 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]682 %tmp = trunc i64 %iv to i32683 %conv = sitofp i32 %tmp to double684 %call = tail call double @llvm.log10.f64(double %conv)685 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv686 store double %call, ptr %arrayidx, align 4687 %iv.next = add nuw nsw i64 %iv, 1688 %exitcond = icmp eq i64 %iv.next, 1000689 br i1 %exitcond, label %for.end, label %for.body690 691for.end:692 ret void693}694 695define void @log10_f32(ptr nocapture %varray) {696; CHECK-LABEL: @log10_f32(697; CHECK: __log10f4{{.*}}<4 x float>698; CHECK: ret void699;700entry:701 br label %for.body702 703for.body:704 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]705 %tmp = trunc i64 %iv to i32706 %conv = sitofp i32 %tmp to float707 %call = tail call float @log10f(float %conv)708 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv709 store float %call, ptr %arrayidx, align 4710 %iv.next = add nuw nsw i64 %iv, 1711 %exitcond = icmp eq i64 %iv.next, 1000712 br i1 %exitcond, label %for.end, label %for.body713 714for.end:715 ret void716}717 718define void @log10_f32_intrinsic(ptr nocapture %varray) {719; CHECK-LABEL: @log10_f32_intrinsic(720; CHECK: __log10f4{{.*}}<4 x float>721; CHECK: ret void722;723entry:724 br label %for.body725 726for.body:727 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]728 %tmp = trunc i64 %iv to i32729 %conv = sitofp i32 %tmp to float730 %call = tail call float @llvm.log10.f32(float %conv)731 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv732 store float %call, ptr %arrayidx, align 4733 %iv.next = add nuw nsw i64 %iv, 1734 %exitcond = icmp eq i64 %iv.next, 1000735 br i1 %exitcond, label %for.end, label %for.body736 737for.end:738 ret void739}740 741define void @log2_f64(ptr nocapture %varray) {742; CHECK-LABEL: @log2_f64(743; CHECK: __log2d2(<2 x double>744; CHECK: ret void745;746entry:747 br label %for.body748 749for.body:750 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]751 %tmp = trunc i64 %iv to i32752 %conv = sitofp i32 %tmp to double753 %call = tail call double @log2(double %conv)754 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv755 store double %call, ptr %arrayidx, align 4756 %iv.next = add nuw nsw i64 %iv, 1757 %exitcond = icmp eq i64 %iv.next, 1000758 br i1 %exitcond, label %for.end, label %for.body759 760for.end:761 ret void762}763 764define void @log2_f64_intrinsic(ptr nocapture %varray) {765; CHECK-LABEL: @log2_f64_intrinsic(766; CHECK: __log2d2{{.*}}<2 x double>767; CHECK: ret void768;769entry:770 br label %for.body771 772for.body:773 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]774 %tmp = trunc i64 %iv to i32775 %conv = sitofp i32 %tmp to double776 %call = tail call double @llvm.log2.f64(double %conv)777 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv778 store double %call, ptr %arrayidx, align 4779 %iv.next = add nuw nsw i64 %iv, 1780 %exitcond = icmp eq i64 %iv.next, 1000781 br i1 %exitcond, label %for.end, label %for.body782 783for.end:784 ret void785}786 787define void @log2_f32(ptr nocapture %varray) {788; CHECK-LABEL: @log2_f32(789; CHECK: __log2f4{{.*}}<4 x float>790; CHECK: ret void791;792entry:793 br label %for.body794 795for.body:796 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]797 %tmp = trunc i64 %iv to i32798 %conv = sitofp i32 %tmp to float799 %call = tail call float @log2f(float %conv)800 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv801 store float %call, ptr %arrayidx, align 4802 %iv.next = add nuw nsw i64 %iv, 1803 %exitcond = icmp eq i64 %iv.next, 1000804 br i1 %exitcond, label %for.end, label %for.body805 806for.end:807 ret void808}809 810define void @log2_f32_intrinsic(ptr nocapture %varray) {811; CHECK-LABEL: @log2_f32_intrinsic(812; CHECK: __log2f4{{.*}}<4 x float>813; CHECK: ret void814;815entry:816 br label %for.body817 818for.body:819 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]820 %tmp = trunc i64 %iv to i32821 %conv = sitofp i32 %tmp to float822 %call = tail call float @llvm.log2.f32(float %conv)823 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv824 store float %call, ptr %arrayidx, align 4825 %iv.next = add nuw nsw i64 %iv, 1826 %exitcond = icmp eq i64 %iv.next, 1000827 br i1 %exitcond, label %for.end, label %for.body828 829for.end:830 ret void831}832 833define void @sin_f64(ptr nocapture %varray) {834; CHECK-LABEL: @sin_f64(835; CHECK: __sind2{{.*}}<2 x double>836; CHECK: ret void837;838entry:839 br label %for.body840 841for.body:842 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]843 %tmp = trunc i64 %iv to i32844 %conv = sitofp i32 %tmp to double845 %call = tail call double @sin(double %conv)846 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv847 store double %call, ptr %arrayidx, align 4848 %iv.next = add nuw nsw i64 %iv, 1849 %exitcond = icmp eq i64 %iv.next, 1000850 br i1 %exitcond, label %for.end, label %for.body851 852for.end:853 ret void854}855 856define void @sin_f64_intrinsic(ptr nocapture %varray) {857; CHECK-LABEL: @sin_f64_intrinsic(858; CHECK: __sind2{{.*}}<2 x double>859; CHECK: ret void860;861entry:862 br label %for.body863 864for.body:865 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]866 %tmp = trunc i64 %iv to i32867 %conv = sitofp i32 %tmp to double868 %call = tail call double @llvm.sin.f64(double %conv)869 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv870 store double %call, ptr %arrayidx, align 4871 %iv.next = add nuw nsw i64 %iv, 1872 %exitcond = icmp eq i64 %iv.next, 1000873 br i1 %exitcond, label %for.end, label %for.body874 875for.end:876 ret void877}878 879define void @sin_f32(ptr nocapture %varray) {880; CHECK-LABEL: @sin_f32(881; CHECK: __sinf4{{.*}}<4 x float>882; CHECK: ret void883;884entry:885 br label %for.body886 887for.body:888 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]889 %tmp = trunc i64 %iv to i32890 %conv = sitofp i32 %tmp to float891 %call = tail call float @sinf(float %conv)892 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv893 store float %call, ptr %arrayidx, align 4894 %iv.next = add nuw nsw i64 %iv, 1895 %exitcond = icmp eq i64 %iv.next, 1000896 br i1 %exitcond, label %for.end, label %for.body897 898for.end:899 ret void900}901 902define void @sin_f32_intrinsic(ptr nocapture %varray) {903; CHECK-LABEL: @sin_f32_intrinsic(904; CHECK: __sinf4{{.*}}<4 x float>905; CHECK: ret void906;907entry:908 br label %for.body909 910for.body:911 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]912 %tmp = trunc i64 %iv to i32913 %conv = sitofp i32 %tmp to float914 %call = tail call float @llvm.sin.f32(float %conv)915 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv916 store float %call, ptr %arrayidx, align 4917 %iv.next = add nuw nsw i64 %iv, 1918 %exitcond = icmp eq i64 %iv.next, 1000919 br i1 %exitcond, label %for.end, label %for.body920 921for.end:922 ret void923}924 925define void @cos_f64(ptr nocapture %varray) {926; CHECK-LABEL: @cos_f64(927; CHECK: __cosd2{{.*}}<2 x double>928; CHECK: ret void929;930entry:931 br label %for.body932 933for.body:934 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]935 %tmp = trunc i64 %iv to i32936 %conv = sitofp i32 %tmp to double937 %call = tail call double @cos(double %conv)938 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv939 store double %call, ptr %arrayidx, align 4940 %iv.next = add nuw nsw i64 %iv, 1941 %exitcond = icmp eq i64 %iv.next, 1000942 br i1 %exitcond, label %for.end, label %for.body943 944for.end:945 ret void946}947 948define void @cos_f64_intrinsic(ptr nocapture %varray) {949; CHECK-LABEL: @cos_f64_intrinsic(950; CHECK: [[TMP5:%.*]] = call <2 x double> @__cosd2(<2 x double> [[TMP4:%.*]])951; CHECK: ret void952;953entry:954 br label %for.body955 956for.body:957 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]958 %tmp = trunc i64 %iv to i32959 %conv = sitofp i32 %tmp to double960 %call = tail call double @llvm.cos.f64(double %conv)961 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv962 store double %call, ptr %arrayidx, align 4963 %iv.next = add nuw nsw i64 %iv, 1964 %exitcond = icmp eq i64 %iv.next, 1000965 br i1 %exitcond, label %for.end, label %for.body966 967for.end:968 ret void969}970 971define void @cos_f32(ptr nocapture %varray) {972; CHECK-LABEL: @cos_f32(973; CHECK: __cosf4{{.*}}<4 x float>974; CHECK: ret void975;976entry:977 br label %for.body978 979for.body:980 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]981 %tmp = trunc i64 %iv to i32982 %conv = sitofp i32 %tmp to float983 %call = tail call float @cosf(float %conv)984 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv985 store float %call, ptr %arrayidx, align 4986 %iv.next = add nuw nsw i64 %iv, 1987 %exitcond = icmp eq i64 %iv.next, 1000988 br i1 %exitcond, label %for.end, label %for.body989 990for.end:991 ret void992}993 994define void @cos_f32_intrinsic(ptr nocapture %varray) {995; CHECK-LABEL: @cos_f32_intrinsic(996; CHECK: __cosf4{{.*}}<4 x float>997; CHECK: ret void998;999entry:1000 br label %for.body1001 1002for.body:1003 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1004 %tmp = trunc i64 %iv to i321005 %conv = sitofp i32 %tmp to float1006 %call = tail call float @llvm.cos.f32(float %conv)1007 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1008 store float %call, ptr %arrayidx, align 41009 %iv.next = add nuw nsw i64 %iv, 11010 %exitcond = icmp eq i64 %iv.next, 10001011 br i1 %exitcond, label %for.end, label %for.body1012 1013for.end:1014 ret void1015}1016 1017define void @tan_f64(ptr nocapture %varray) {1018; CHECK-LABEL: @tan_f64(1019; CHECK: __tand2{{.*}}<2 x double>1020; CHECK: ret void1021;1022entry:1023 br label %for.body1024 1025for.body:1026 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1027 %tmp = trunc i64 %iv to i321028 %conv = sitofp i32 %tmp to double1029 %call = tail call double @tan(double %conv)1030 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1031 store double %call, ptr %arrayidx, align 41032 %iv.next = add nuw nsw i64 %iv, 11033 %exitcond = icmp eq i64 %iv.next, 10001034 br i1 %exitcond, label %for.end, label %for.body1035 1036for.end:1037 ret void1038}1039 1040define void @tan_f32(ptr nocapture %varray) {1041; CHECK-LABEL: @tan_f32(1042; CHECK: __tanf4{{.*}}<4 x float>1043; CHECK: ret void1044;1045entry:1046 br label %for.body1047 1048for.body:1049 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1050 %tmp = trunc i64 %iv to i321051 %conv = sitofp i32 %tmp to float1052 %call = tail call float @tanf(float %conv)1053 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1054 store float %call, ptr %arrayidx, align 41055 %iv.next = add nuw nsw i64 %iv, 11056 %exitcond = icmp eq i64 %iv.next, 10001057 br i1 %exitcond, label %for.end, label %for.body1058 1059for.end:1060 ret void1061}1062 1063define void @asin_f64(ptr nocapture %varray) {1064; CHECK-LABEL: @asin_f64(1065; CHECK: __asind2{{.*}}<2 x double>1066; CHECK: ret void1067;1068entry:1069 br label %for.body1070 1071for.body:1072 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1073 %tmp = trunc i64 %iv to i321074 %conv = sitofp i32 %tmp to double1075 %call = tail call double @asin(double %conv)1076 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1077 store double %call, ptr %arrayidx, align 41078 %iv.next = add nuw nsw i64 %iv, 11079 %exitcond = icmp eq i64 %iv.next, 10001080 br i1 %exitcond, label %for.end, label %for.body1081 1082for.end:1083 ret void1084}1085 1086define void @asin_f32(ptr nocapture %varray) {1087; CHECK-LABEL: @asin_f32(1088; CHECK: __asinf4{{.*}}<4 x float>1089; CHECK: ret void1090;1091entry:1092 br label %for.body1093 1094for.body:1095 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1096 %tmp = trunc i64 %iv to i321097 %conv = sitofp i32 %tmp to float1098 %call = tail call float @asinf(float %conv)1099 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1100 store float %call, ptr %arrayidx, align 41101 %iv.next = add nuw nsw i64 %iv, 11102 %exitcond = icmp eq i64 %iv.next, 10001103 br i1 %exitcond, label %for.end, label %for.body1104 1105for.end:1106 ret void1107}1108 1109define void @acos_f64(ptr nocapture %varray) {1110; CHECK-LABEL: @acos_f64(1111; CHECK: __acosd2{{.*}}<2 x double>1112; CHECK: ret void1113;1114entry:1115 br label %for.body1116 1117for.body:1118 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1119 %tmp = trunc i64 %iv to i321120 %conv = sitofp i32 %tmp to double1121 %call = tail call double @acos(double %conv)1122 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1123 store double %call, ptr %arrayidx, align 41124 %iv.next = add nuw nsw i64 %iv, 11125 %exitcond = icmp eq i64 %iv.next, 10001126 br i1 %exitcond, label %for.end, label %for.body1127 1128for.end:1129 ret void1130}1131 1132define void @acos_f32(ptr nocapture %varray) {1133; CHECK-LABEL: @acos_f32(1134; CHECK: __acosf4{{.*}}<4 x float>1135; CHECK: ret void1136;1137entry:1138 br label %for.body1139 1140for.body:1141 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1142 %tmp = trunc i64 %iv to i321143 %conv = sitofp i32 %tmp to float1144 %call = tail call float @acosf(float %conv)1145 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1146 store float %call, ptr %arrayidx, align 41147 %iv.next = add nuw nsw i64 %iv, 11148 %exitcond = icmp eq i64 %iv.next, 10001149 br i1 %exitcond, label %for.end, label %for.body1150 1151for.end:1152 ret void1153}1154 1155define void @atan_f64(ptr nocapture %varray) {1156; CHECK-LABEL: @atan_f64(1157; CHECK: __atand2{{.*}}<2 x double>1158; CHECK: ret void1159;1160entry:1161 br label %for.body1162 1163for.body:1164 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1165 %tmp = trunc i64 %iv to i321166 %conv = sitofp i32 %tmp to double1167 %call = tail call double @atan(double %conv)1168 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1169 store double %call, ptr %arrayidx, align 41170 %iv.next = add nuw nsw i64 %iv, 11171 %exitcond = icmp eq i64 %iv.next, 10001172 br i1 %exitcond, label %for.end, label %for.body1173 1174for.end:1175 ret void1176}1177 1178define void @atan_f32(ptr nocapture %varray) {1179; CHECK-LABEL: @atan_f32(1180; CHECK: __atanf4{{.*}}<4 x float>1181; CHECK: ret void1182;1183entry:1184 br label %for.body1185 1186for.body:1187 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1188 %tmp = trunc i64 %iv to i321189 %conv = sitofp i32 %tmp to float1190 %call = tail call float @atanf(float %conv)1191 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1192 store float %call, ptr %arrayidx, align 41193 %iv.next = add nuw nsw i64 %iv, 11194 %exitcond = icmp eq i64 %iv.next, 10001195 br i1 %exitcond, label %for.end, label %for.body1196 1197for.end:1198 ret void1199}1200 1201define void @atan2_f64(ptr nocapture %varray) {1202; CHECK-LABEL: @atan2_f64(1203; CHECK: __atan2d2{{.*}}<2 x double>1204; CHECK: ret void1205;1206entry:1207 br label %for.body1208 1209for.body:1210 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1211 %tmp = trunc i64 %iv to i321212 %conv = sitofp i32 %tmp to double1213 %call = tail call double @atan2(double %conv, double %conv)1214 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1215 store double %call, ptr %arrayidx, align 41216 %iv.next = add nuw nsw i64 %iv, 11217 %exitcond = icmp eq i64 %iv.next, 10001218 br i1 %exitcond, label %for.end, label %for.body1219 1220for.end:1221 ret void1222}1223 1224define void @atan2_f32(ptr nocapture %varray) {1225; CHECK-LABEL: @atan2_f32(1226; CHECK: __atan2f4{{.*}}<4 x float>1227; CHECK: ret void1228;1229entry:1230 br label %for.body1231 1232for.body:1233 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1234 %tmp = trunc i64 %iv to i321235 %conv = sitofp i32 %tmp to float1236 %call = tail call float @atan2f(float %conv, float %conv)1237 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1238 store float %call, ptr %arrayidx, align 41239 %iv.next = add nuw nsw i64 %iv, 11240 %exitcond = icmp eq i64 %iv.next, 10001241 br i1 %exitcond, label %for.end, label %for.body1242 1243for.end:1244 ret void1245}1246 1247define void @atan2_f64_intrinsic(ptr nocapture %varray) {1248; CHECK-LABEL: @atan2_f64_intrinsic(1249; CHECK: __atan2d2{{.*}}<2 x double>1250; CHECK: ret void1251;1252entry:1253 br label %for.body1254 1255for.body:1256 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1257 %tmp = trunc i64 %iv to i321258 %conv = sitofp i32 %tmp to double1259 %call = tail call double @llvm.atan2.f64(double %conv, double %conv)1260 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1261 store double %call, ptr %arrayidx, align 41262 %iv.next = add nuw nsw i64 %iv, 11263 %exitcond = icmp eq i64 %iv.next, 10001264 br i1 %exitcond, label %for.end, label %for.body1265 1266for.end:1267 ret void1268}1269 1270define void @atan2_f32_intrinsic(ptr nocapture %varray) {1271; CHECK-LABEL: @atan2_f32_intrinsic(1272; CHECK: __atan2f4{{.*}}<4 x float>1273; CHECK: ret void1274;1275entry:1276 br label %for.body1277 1278for.body:1279 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1280 %tmp = trunc i64 %iv to i321281 %conv = sitofp i32 %tmp to float1282 %call = tail call float @llvm.atan2.f32(float %conv, float %conv)1283 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1284 store float %call, ptr %arrayidx, align 41285 %iv.next = add nuw nsw i64 %iv, 11286 %exitcond = icmp eq i64 %iv.next, 10001287 br i1 %exitcond, label %for.end, label %for.body1288 1289for.end:1290 ret void1291}1292 1293define void @sinh_f64(ptr nocapture %varray) {1294; CHECK-LABEL: @sinh_f64(1295; CHECK: __sinhd2{{.*}}<2 x double>1296; CHECK: ret void1297;1298entry:1299 br label %for.body1300 1301for.body:1302 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1303 %tmp = trunc i64 %iv to i321304 %conv = sitofp i32 %tmp to double1305 %call = tail call double @sinh(double %conv)1306 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1307 store double %call, ptr %arrayidx, align 41308 %iv.next = add nuw nsw i64 %iv, 11309 %exitcond = icmp eq i64 %iv.next, 10001310 br i1 %exitcond, label %for.end, label %for.body1311 1312for.end:1313 ret void1314}1315 1316define void @sinh_f32(ptr nocapture %varray) {1317; CHECK-LABEL: @sinh_f32(1318; CHECK: __sinhf4{{.*}}<4 x float>1319; CHECK: ret void1320;1321entry:1322 br label %for.body1323 1324for.body:1325 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1326 %tmp = trunc i64 %iv to i321327 %conv = sitofp i32 %tmp to float1328 %call = tail call float @sinhf(float %conv)1329 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1330 store float %call, ptr %arrayidx, align 41331 %iv.next = add nuw nsw i64 %iv, 11332 %exitcond = icmp eq i64 %iv.next, 10001333 br i1 %exitcond, label %for.end, label %for.body1334 1335for.end:1336 ret void1337}1338 1339define void @cosh_f64(ptr nocapture %varray) {1340; CHECK-LABEL: @cosh_f64(1341; CHECK: __coshd2{{.*}}<2 x double>1342; CHECK: ret void1343;1344entry:1345 br label %for.body1346 1347for.body:1348 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1349 %tmp = trunc i64 %iv to i321350 %conv = sitofp i32 %tmp to double1351 %call = tail call double @cosh(double %conv)1352 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1353 store double %call, ptr %arrayidx, align 41354 %iv.next = add nuw nsw i64 %iv, 11355 %exitcond = icmp eq i64 %iv.next, 10001356 br i1 %exitcond, label %for.end, label %for.body1357 1358for.end:1359 ret void1360}1361 1362define void @cosh_f32(ptr nocapture %varray) {1363; CHECK-LABEL: @cosh_f32(1364; CHECK: __coshf4{{.*}}<4 x float>1365; CHECK: ret void1366;1367entry:1368 br label %for.body1369 1370for.body:1371 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1372 %tmp = trunc i64 %iv to i321373 %conv = sitofp i32 %tmp to float1374 %call = tail call float @coshf(float %conv)1375 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1376 store float %call, ptr %arrayidx, align 41377 %iv.next = add nuw nsw i64 %iv, 11378 %exitcond = icmp eq i64 %iv.next, 10001379 br i1 %exitcond, label %for.end, label %for.body1380 1381for.end:1382 ret void1383}1384 1385define void @tanh_f64(ptr nocapture %varray) {1386; CHECK-LABEL: @tanh_f64(1387; CHECK: __tanhd2{{.*}}<2 x double>1388; CHECK: ret void1389;1390entry:1391 br label %for.body1392 1393for.body:1394 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1395 %tmp = trunc i64 %iv to i321396 %conv = sitofp i32 %tmp to double1397 %call = tail call double @tanh(double %conv)1398 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1399 store double %call, ptr %arrayidx, align 41400 %iv.next = add nuw nsw i64 %iv, 11401 %exitcond = icmp eq i64 %iv.next, 10001402 br i1 %exitcond, label %for.end, label %for.body1403 1404for.end:1405 ret void1406}1407 1408define void @tanh_f32(ptr nocapture %varray) {1409; CHECK-LABEL: @tanh_f32(1410; CHECK: __tanhf4{{.*}}<4 x float>1411; CHECK: ret void1412;1413entry:1414 br label %for.body1415 1416for.body:1417 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1418 %tmp = trunc i64 %iv to i321419 %conv = sitofp i32 %tmp to float1420 %call = tail call float @tanhf(float %conv)1421 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1422 store float %call, ptr %arrayidx, align 41423 %iv.next = add nuw nsw i64 %iv, 11424 %exitcond = icmp eq i64 %iv.next, 10001425 br i1 %exitcond, label %for.end, label %for.body1426 1427for.end:1428 ret void1429}1430 1431define void @asinh_f64(ptr nocapture %varray) {1432; CHECK-LABEL: @asinh_f64(1433; CHECK: __asinhd2{{.*}}<2 x double>1434; CHECK: ret void1435;1436entry:1437 br label %for.body1438 1439for.body:1440 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1441 %tmp = trunc i64 %iv to i321442 %conv = sitofp i32 %tmp to double1443 %call = tail call double @asinh(double %conv)1444 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1445 store double %call, ptr %arrayidx, align 41446 %iv.next = add nuw nsw i64 %iv, 11447 %exitcond = icmp eq i64 %iv.next, 10001448 br i1 %exitcond, label %for.end, label %for.body1449 1450for.end:1451 ret void1452}1453 1454define void @asinh_f32(ptr nocapture %varray) {1455; CHECK-LABEL: @asinh_f32(1456; CHECK: __asinhf4{{.*}}<4 x float>1457; CHECK: ret void1458;1459entry:1460 br label %for.body1461 1462for.body:1463 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1464 %tmp = trunc i64 %iv to i321465 %conv = sitofp i32 %tmp to float1466 %call = tail call float @asinhf(float %conv)1467 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1468 store float %call, ptr %arrayidx, align 41469 %iv.next = add nuw nsw i64 %iv, 11470 %exitcond = icmp eq i64 %iv.next, 10001471 br i1 %exitcond, label %for.end, label %for.body1472 1473for.end:1474 ret void1475}1476 1477define void @acosh_f64(ptr nocapture %varray) {1478; CHECK-LABEL: @acosh_f64(1479; CHECK: __acoshd2{{.*}}<2 x double>1480; CHECK: ret void1481;1482entry:1483 br label %for.body1484 1485for.body:1486 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1487 %tmp = trunc i64 %iv to i321488 %conv = sitofp i32 %tmp to double1489 %call = tail call double @acosh(double %conv)1490 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1491 store double %call, ptr %arrayidx, align 41492 %iv.next = add nuw nsw i64 %iv, 11493 %exitcond = icmp eq i64 %iv.next, 10001494 br i1 %exitcond, label %for.end, label %for.body1495 1496for.end:1497 ret void1498}1499 1500define void @acosh_f32(ptr nocapture %varray) {1501; CHECK-LABEL: @acosh_f32(1502; CHECK: __acoshf4{{.*}}<4 x float>1503; CHECK: ret void1504;1505entry:1506 br label %for.body1507 1508for.body:1509 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1510 %tmp = trunc i64 %iv to i321511 %conv = sitofp i32 %tmp to float1512 %call = tail call float @acoshf(float %conv)1513 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1514 store float %call, ptr %arrayidx, align 41515 %iv.next = add nuw nsw i64 %iv, 11516 %exitcond = icmp eq i64 %iv.next, 10001517 br i1 %exitcond, label %for.end, label %for.body1518 1519for.end:1520 ret void1521}1522 1523define void @atanh_f64(ptr nocapture %varray) {1524; CHECK-LABEL: @atanh_f64(1525; CHECK: __atanhd2{{.*}}<2 x double>1526; CHECK: ret void1527;1528entry:1529 br label %for.body1530 1531for.body:1532 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1533 %tmp = trunc i64 %iv to i321534 %conv = sitofp i32 %tmp to double1535 %call = tail call double @atanh(double %conv)1536 %arrayidx = getelementptr inbounds double, ptr %varray, i64 %iv1537 store double %call, ptr %arrayidx, align 41538 %iv.next = add nuw nsw i64 %iv, 11539 %exitcond = icmp eq i64 %iv.next, 10001540 br i1 %exitcond, label %for.end, label %for.body1541 1542for.end:1543 ret void1544}1545 1546define void @atanh_f32(ptr nocapture %varray) {1547; CHECK-LABEL: @atanh_f32(1548; CHECK: __atanhf4{{.*}}<4 x float>1549; CHECK: ret void1550;1551entry:1552 br label %for.body1553 1554for.body:1555 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]1556 %tmp = trunc i64 %iv to i321557 %conv = sitofp i32 %tmp to float1558 %call = tail call float @atanhf(float %conv)1559 %arrayidx = getelementptr inbounds float, ptr %varray, i64 %iv1560 store float %call, ptr %arrayidx, align 41561 %iv.next = add nuw nsw i64 %iv, 11562 %exitcond = icmp eq i64 %iv.next, 10001563 br i1 %exitcond, label %for.end, label %for.body1564 1565for.end:1566 ret void1567}1568 1569attributes #0 = { nounwind }1570