1; RUN: opt -vector-library=MASSV -inject-tli-mappings -loop-vectorize -force-vector-interleave=1 -S < %s | FileCheck %s 2 3target datalayout = "e-m:e-i64:64-n32:64" 4target triple = "powerpc64le-unknown-linux-gnu" 5 6declare double @cbrt(double) #0 7declare float @cbrtf(float) #0 8 9declare double @pow(double, double) #0 10declare double @llvm.pow.f64(double, double) #0 11declare float @powf(float, float) #0 12declare float @llvm.pow.f32(float, float) #0 13 14declare double @sqrt(double) #0 15declare float @sqrtf(float) #0 16 17declare double @exp(double) #0 18declare double @llvm.exp.f64(double) #0 19declare float @expf(float) #0 20declare float @llvm.exp.f32(float) #0 21 22declare double @exp2(double) #0 23declare double @llvm.exp2.f64(double) #0 24declare float @exp2f(float) #0 25declare float @llvm.exp2.f32(float) #0 26 27declare double @expm1(double) #0 28declare float @expm1f(float) #0 29 30declare double @log(double) #0 31declare double @llvm.log.f64(double) #0 32declare float @logf(float) #0 33declare float @llvm.log.f32(float) #0 34 35declare double @log1p(double) #0 36declare float @log1pf(float) #0 37 38declare double @log10(double) #0 39declare double @llvm.log10.f64(double) #0 40declare float @log10f(float) #0 41declare float @llvm.log10.f32(float) #0 42 43declare double @log2(double) #0 44declare double @llvm.log2.f64(double) #0 45declare float @log2f(float) #0 46declare float @llvm.log2.f32(float) #0 47 48declare double @sin(double) #0 49declare double @llvm.sin.f64(double) #0 50declare float @sinf(float) #0 51declare float @llvm.sin.f32(float) #0 52 53declare double @cos(double) #0 54declare double @llvm.cos.f64(double) #0 55declare float @cosf(float) #0 56declare float @llvm.cos.f32(float) #0 57 58declare double @tan(double) #0 59declare float @tanf(float) #0 60 61declare double @asin(double) #0 62declare float @asinf(float) #0 63 64declare double @acos(double) #0 65declare float @acosf(float) #0 66 67declare double @atan(double) #0 68declare float @atanf(float) #0 69 70declare double @atan2(double) #0 71declare float @atan2f(float) #0 72 73declare double @sinh(double) #0 74declare float @sinhf(float) #0 75 76declare double @cosh(double) #0 77declare float @coshf(float) #0 78 79declare double @tanh(double) #0 80declare float @tanhf(float) #0 81 82declare double @asinh(double) #0 83declare float @asinhf(float) #0 84 85declare double @acosh(double) #0 86declare float @acoshf(float) #0 87 88declare double @atanh(double) #0 89declare float @atanhf(float) #0 90 91define void @cbrt_f64(double* nocapture %varray) { 92; CHECK-LABEL: @cbrt_f64( 93; CHECK: __cbrtd2_massv{{.*}}<2 x double> 94; CHECK: ret void 95; 96entry: 97 br label %for.body 98 99for.body: 100 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 101 %tmp = trunc i64 %iv to i32 102 %conv = sitofp i32 %tmp to double 103 %call = tail call double @cbrt(double %conv) 104 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 105 store double %call, double* %arrayidx, align 4 106 %iv.next = add nuw nsw i64 %iv, 1 107 %exitcond = icmp eq i64 %iv.next, 1000 108 br i1 %exitcond, label %for.end, label %for.body 109 110for.end: 111 ret void 112} 113 114define void @cbrt_f32(float* nocapture %varray) { 115; CHECK-LABEL: @cbrt_f32( 116; CHECK: __cbrtf4_massv{{.*}}<4 x float> 117; CHECK: ret void 118; 119entry: 120 br label %for.body 121 122for.body: 123 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 124 %tmp = trunc i64 %iv to i32 125 %conv = sitofp i32 %tmp to float 126 %call = tail call float @cbrtf(float %conv) 127 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 128 store float %call, float* %arrayidx, align 4 129 %iv.next = add nuw nsw i64 %iv, 1 130 %exitcond = icmp eq i64 %iv.next, 1000 131 br i1 %exitcond, label %for.end, label %for.body 132 133for.end: 134 ret void 135} 136 137define void @pow_f64(double* nocapture %varray, double* nocapture readonly %exp) { 138; CHECK-LABEL: @pow_f64( 139; CHECK: __powd2_massv{{.*}}<2 x double> 140; CHECK: ret void 141; 142entry: 143 br label %for.body 144 145for.body: 146 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 147 %tmp = trunc i64 %iv to i32 148 %conv = sitofp i32 %tmp to double 149 %arrayidx = getelementptr inbounds double, double* %exp, i64 %iv 150 %tmp1 = load double, double* %arrayidx, align 4 151 %tmp2 = tail call double @pow(double %conv, double %tmp1) 152 %arrayidx2 = getelementptr inbounds double, double* %varray, i64 %iv 153 store double %tmp2, double* %arrayidx2, align 4 154 %iv.next = add nuw nsw i64 %iv, 1 155 %exitcond = icmp eq i64 %iv.next, 1000 156 br i1 %exitcond, label %for.end, label %for.body 157 158for.end: 159 ret void 160} 161 162define void @pow_f64_intrinsic(double* nocapture %varray, double* nocapture readonly %exp) { 163; CHECK-LABEL: @pow_f64_intrinsic( 164; CHECK: __powd2_massv{{.*}}<2 x double> 165; CHECK: ret void 166; 167entry: 168 br label %for.body 169 170for.body: 171 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 172 %tmp = trunc i64 %iv to i32 173 %conv = sitofp i32 %tmp to double 174 %arrayidx = getelementptr inbounds double, double* %exp, i64 %iv 175 %tmp1 = load double, double* %arrayidx, align 4 176 %tmp2 = tail call double @llvm.pow.f64(double %conv, double %tmp1) 177 %arrayidx2 = getelementptr inbounds double, double* %varray, i64 %iv 178 store double %tmp2, double* %arrayidx2, align 4 179 %iv.next = add nuw nsw i64 %iv, 1 180 %exitcond = icmp eq i64 %iv.next, 1000 181 br i1 %exitcond, label %for.end, label %for.body 182 183for.end: 184 ret void 185} 186 187define void @pow_f32(float* nocapture %varray, float* nocapture readonly %exp) { 188; CHECK-LABEL: @pow_f32( 189; CHECK: __powf4_massv{{.*}}<4 x float> 190; CHECK: ret void 191; 192entry: 193 br label %for.body 194 195for.body: 196 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 197 %tmp = trunc i64 %iv to i32 198 %conv = sitofp i32 %tmp to float 199 %arrayidx = getelementptr inbounds float, float* %exp, i64 %iv 200 %tmp1 = load float, float* %arrayidx, align 4 201 %tmp2 = tail call float @powf(float %conv, float %tmp1) 202 %arrayidx2 = getelementptr inbounds float, float* %varray, i64 %iv 203 store float %tmp2, float* %arrayidx2, align 4 204 %iv.next = add nuw nsw i64 %iv, 1 205 %exitcond = icmp eq i64 %iv.next, 1000 206 br i1 %exitcond, label %for.end, label %for.body 207 208for.end: 209 ret void 210} 211 212define void @pow_f32_intrinsic(float* nocapture %varray, float* nocapture readonly %exp) { 213; CHECK-LABEL: @pow_f32_intrinsic( 214; CHECK: __powf4_massv{{.*}}<4 x float> 215; CHECK: ret void 216; 217entry: 218 br label %for.body 219 220for.body: 221 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 222 %tmp = trunc i64 %iv to i32 223 %conv = sitofp i32 %tmp to float 224 %arrayidx = getelementptr inbounds float, float* %exp, i64 %iv 225 %tmp1 = load float, float* %arrayidx, align 4 226 %tmp2 = tail call float @llvm.pow.f32(float %conv, float %tmp1) 227 %arrayidx2 = getelementptr inbounds float, float* %varray, i64 %iv 228 store float %tmp2, float* %arrayidx2, align 4 229 %iv.next = add nuw nsw i64 %iv, 1 230 %exitcond = icmp eq i64 %iv.next, 1000 231 br i1 %exitcond, label %for.end, label %for.body 232 233for.end: 234 ret void 235} 236 237define void @sqrt_f64(double* nocapture %varray) { 238; CHECK-LABEL: @sqrt_f64( 239; CHECK-NOT: __sqrtd2_massv{{.*}}<2 x double> 240; CHECK: ret void 241; 242entry: 243 br label %for.body 244 245for.body: 246 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 247 %tmp = trunc i64 %iv to i32 248 %conv = sitofp i32 %tmp to double 249 %call = tail call double @sqrt(double %conv) 250 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 251 store double %call, double* %arrayidx, align 4 252 %iv.next = add nuw nsw i64 %iv, 1 253 %exitcond = icmp eq i64 %iv.next, 1000 254 br i1 %exitcond, label %for.end, label %for.body 255 256for.end: 257 ret void 258} 259 260define void @sqrt_f32(float* nocapture %varray) { 261; CHECK-LABEL: @sqrt_f32( 262; CHECK-NOT: __sqrtf4_massv{{.*}}<4 x float> 263; CHECK: ret void 264; 265entry: 266 br label %for.body 267 268for.body: 269 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 270 %tmp = trunc i64 %iv to i32 271 %conv = sitofp i32 %tmp to float 272 %call = tail call float @sqrtf(float %conv) 273 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 274 store float %call, float* %arrayidx, align 4 275 %iv.next = add nuw nsw i64 %iv, 1 276 %exitcond = icmp eq i64 %iv.next, 1000 277 br i1 %exitcond, label %for.end, label %for.body 278 279for.end: 280 ret void 281} 282 283define void @exp_f64(double* nocapture %varray) { 284; CHECK-LABEL: @exp_f64( 285; CHECK: __expd2_massv{{.*}}<2 x double> 286; CHECK: ret void 287; 288entry: 289 br label %for.body 290 291for.body: 292 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 293 %tmp = trunc i64 %iv to i32 294 %conv = sitofp i32 %tmp to double 295 %call = tail call double @exp(double %conv) 296 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 297 store double %call, double* %arrayidx, align 4 298 %iv.next = add nuw nsw i64 %iv, 1 299 %exitcond = icmp eq i64 %iv.next, 1000 300 br i1 %exitcond, label %for.end, label %for.body 301 302for.end: 303 ret void 304} 305 306define void @exp_f64_intrinsic(double* nocapture %varray) { 307; CHECK-LABEL: @exp_f64_intrinsic( 308; CHECK: __expd2_massv{{.*}}<2 x double> 309; CHECK: ret void 310; 311entry: 312 br label %for.body 313 314for.body: 315 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 316 %tmp = trunc i64 %iv to i32 317 %conv = sitofp i32 %tmp to double 318 %call = tail call double @llvm.exp.f64(double %conv) 319 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 320 store double %call, double* %arrayidx, align 4 321 %iv.next = add nuw nsw i64 %iv, 1 322 %exitcond = icmp eq i64 %iv.next, 1000 323 br i1 %exitcond, label %for.end, label %for.body 324 325for.end: 326 ret void 327} 328 329define void @exp_f32(float* nocapture %varray) { 330; CHECK-LABEL: @exp_f32( 331; CHECK: __expf4_massv{{.*}}<4 x float> 332; CHECK: ret void 333; 334entry: 335 br label %for.body 336 337for.body: 338 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 339 %tmp = trunc i64 %iv to i32 340 %conv = sitofp i32 %tmp to float 341 %call = tail call float @expf(float %conv) 342 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 343 store float %call, float* %arrayidx, align 4 344 %iv.next = add nuw nsw i64 %iv, 1 345 %exitcond = icmp eq i64 %iv.next, 1000 346 br i1 %exitcond, label %for.end, label %for.body 347 348for.end: 349 ret void 350} 351 352define void @exp_f32_intrinsic(float* nocapture %varray) { 353; CHECK-LABEL: @exp_f32_intrinsic( 354; CHECK: __expf4_massv{{.*}}<4 x float> 355; CHECK: ret void 356; 357entry: 358 br label %for.body 359 360for.body: 361 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 362 %tmp = trunc i64 %iv to i32 363 %conv = sitofp i32 %tmp to float 364 %call = tail call float @llvm.exp.f32(float %conv) 365 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 366 store float %call, float* %arrayidx, align 4 367 %iv.next = add nuw nsw i64 %iv, 1 368 %exitcond = icmp eq i64 %iv.next, 1000 369 br i1 %exitcond, label %for.end, label %for.body 370 371for.end: 372 ret void 373} 374 375define void @exp2_f64(double* nocapture %varray) { 376; CHECK-LABEL: @exp2_f64( 377; CHECK: __exp2d2_massv{{.*}}<2 x double> 378; CHECK: ret void 379; 380entry: 381 br label %for.body 382 383for.body: 384 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 385 %tmp = trunc i64 %iv to i32 386 %conv = sitofp i32 %tmp to double 387 %call = tail call double @exp2(double %conv) 388 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 389 store double %call, double* %arrayidx, align 4 390 %iv.next = add nuw nsw i64 %iv, 1 391 %exitcond = icmp eq i64 %iv.next, 1000 392 br i1 %exitcond, label %for.end, label %for.body 393 394for.end: 395 ret void 396} 397 398define void @exp2_f64_intrinsic(double* nocapture %varray) { 399; CHECK-LABEL: @exp2_f64_intrinsic( 400; CHECK: __exp2d2_massv{{.*}}<2 x double> 401; CHECK: ret void 402; 403entry: 404 br label %for.body 405 406for.body: 407 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 408 %tmp = trunc i64 %iv to i32 409 %conv = sitofp i32 %tmp to double 410 %call = tail call double @llvm.exp2.f64(double %conv) 411 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 412 store double %call, double* %arrayidx, align 4 413 %iv.next = add nuw nsw i64 %iv, 1 414 %exitcond = icmp eq i64 %iv.next, 1000 415 br i1 %exitcond, label %for.end, label %for.body 416 417for.end: 418 ret void 419} 420 421define void @exp2_f32(float* nocapture %varray) { 422; CHECK-LABEL: @exp2_f32( 423; CHECK: __exp2f4_massv{{.*}}<4 x float> 424; CHECK: ret void 425; 426entry: 427 br label %for.body 428 429for.body: 430 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 431 %tmp = trunc i64 %iv to i32 432 %conv = sitofp i32 %tmp to float 433 %call = tail call float @exp2f(float %conv) 434 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 435 store float %call, float* %arrayidx, align 4 436 %iv.next = add nuw nsw i64 %iv, 1 437 %exitcond = icmp eq i64 %iv.next, 1000 438 br i1 %exitcond, label %for.end, label %for.body 439 440for.end: 441 ret void 442} 443 444define void @exp2_f32_intrinsic(float* nocapture %varray) { 445; CHECK-LABEL: @exp2_f32_intrinsic( 446; CHECK: __exp2f4_massv{{.*}}<4 x float> 447; CHECK: ret void 448; 449entry: 450 br label %for.body 451 452for.body: 453 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 454 %tmp = trunc i64 %iv to i32 455 %conv = sitofp i32 %tmp to float 456 %call = tail call float @llvm.exp2.f32(float %conv) 457 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 458 store float %call, float* %arrayidx, align 4 459 %iv.next = add nuw nsw i64 %iv, 1 460 %exitcond = icmp eq i64 %iv.next, 1000 461 br i1 %exitcond, label %for.end, label %for.body 462 463for.end: 464 ret void 465} 466 467define void @expm1_f64(double* nocapture %varray) { 468; CHECK-LABEL: @expm1_f64( 469; CHECK: __expm1d2_massv{{.*}}<2 x double> 470; CHECK: ret void 471; 472entry: 473 br label %for.body 474 475for.body: 476 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 477 %tmp = trunc i64 %iv to i32 478 %conv = sitofp i32 %tmp to double 479 %call = tail call double @expm1(double %conv) 480 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 481 store double %call, double* %arrayidx, align 4 482 %iv.next = add nuw nsw i64 %iv, 1 483 %exitcond = icmp eq i64 %iv.next, 1000 484 br i1 %exitcond, label %for.end, label %for.body 485 486for.end: 487 ret void 488} 489 490define void @expm1_f32(float* nocapture %varray) { 491; CHECK-LABEL: @expm1_f32( 492; CHECK: __expm1f4_massv{{.*}}<4 x float> 493; CHECK: ret void 494; 495entry: 496 br label %for.body 497 498for.body: 499 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 500 %tmp = trunc i64 %iv to i32 501 %conv = sitofp i32 %tmp to float 502 %call = tail call float @expm1f(float %conv) 503 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 504 store float %call, float* %arrayidx, align 4 505 %iv.next = add nuw nsw i64 %iv, 1 506 %exitcond = icmp eq i64 %iv.next, 1000 507 br i1 %exitcond, label %for.end, label %for.body 508 509for.end: 510 ret void 511} 512 513define void @log_f64(double* nocapture %varray) { 514; CHECK-LABEL: @log_f64( 515; CHECK: __logd2_massv{{.*}}<2 x double> 516; CHECK: ret void 517; 518entry: 519 br label %for.body 520 521for.body: 522 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 523 %tmp = trunc i64 %iv to i32 524 %conv = sitofp i32 %tmp to double 525 %call = tail call double @log(double %conv) 526 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 527 store double %call, double* %arrayidx, align 4 528 %iv.next = add nuw nsw i64 %iv, 1 529 %exitcond = icmp eq i64 %iv.next, 1000 530 br i1 %exitcond, label %for.end, label %for.body 531 532for.end: 533 ret void 534} 535 536define void @log_f64_intrinsic(double* nocapture %varray) { 537; CHECK-LABEL: @log_f64_intrinsic( 538; CHECK: __logd2_massv{{.*}}<2 x double> 539; CHECK: ret void 540; 541entry: 542 br label %for.body 543 544for.body: 545 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 546 %tmp = trunc i64 %iv to i32 547 %conv = sitofp i32 %tmp to double 548 %call = tail call double @llvm.log.f64(double %conv) 549 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 550 store double %call, double* %arrayidx, align 4 551 %iv.next = add nuw nsw i64 %iv, 1 552 %exitcond = icmp eq i64 %iv.next, 1000 553 br i1 %exitcond, label %for.end, label %for.body 554 555for.end: 556 ret void 557} 558 559define void @log_f32(float* nocapture %varray) { 560; CHECK-LABEL: @log_f32( 561; CHECK: __logf4_massv{{.*}}<4 x float> 562; CHECK: ret void 563; 564entry: 565 br label %for.body 566 567for.body: 568 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 569 %tmp = trunc i64 %iv to i32 570 %conv = sitofp i32 %tmp to float 571 %call = tail call float @logf(float %conv) 572 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 573 store float %call, float* %arrayidx, align 4 574 %iv.next = add nuw nsw i64 %iv, 1 575 %exitcond = icmp eq i64 %iv.next, 1000 576 br i1 %exitcond, label %for.end, label %for.body 577 578for.end: 579 ret void 580} 581 582define void @log_f32_intrinsic(float* nocapture %varray) { 583; CHECK-LABEL: @log_f32_intrinsic( 584; CHECK: __logf4_massv{{.*}}<4 x float> 585; CHECK: ret void 586; 587entry: 588 br label %for.body 589 590for.body: 591 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 592 %tmp = trunc i64 %iv to i32 593 %conv = sitofp i32 %tmp to float 594 %call = tail call float @llvm.log.f32(float %conv) 595 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 596 store float %call, float* %arrayidx, align 4 597 %iv.next = add nuw nsw i64 %iv, 1 598 %exitcond = icmp eq i64 %iv.next, 1000 599 br i1 %exitcond, label %for.end, label %for.body 600 601for.end: 602 ret void 603} 604 605define void @log1p_f64(double* nocapture %varray) { 606; CHECK-LABEL: @log1p_f64( 607; CHECK: __log1pd2_massv{{.*}}<2 x double> 608; CHECK: ret void 609; 610entry: 611 br label %for.body 612 613for.body: 614 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 615 %tmp = trunc i64 %iv to i32 616 %conv = sitofp i32 %tmp to double 617 %call = tail call double @log1p(double %conv) 618 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 619 store double %call, double* %arrayidx, align 4 620 %iv.next = add nuw nsw i64 %iv, 1 621 %exitcond = icmp eq i64 %iv.next, 1000 622 br i1 %exitcond, label %for.end, label %for.body 623 624for.end: 625 ret void 626} 627 628define void @log1p_f32(float* nocapture %varray) { 629; CHECK-LABEL: @log1p_f32( 630; CHECK: __log1pf4_massv{{.*}}<4 x float> 631; CHECK: ret void 632; 633entry: 634 br label %for.body 635 636for.body: 637 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 638 %tmp = trunc i64 %iv to i32 639 %conv = sitofp i32 %tmp to float 640 %call = tail call float @log1pf(float %conv) 641 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 642 store float %call, float* %arrayidx, align 4 643 %iv.next = add nuw nsw i64 %iv, 1 644 %exitcond = icmp eq i64 %iv.next, 1000 645 br i1 %exitcond, label %for.end, label %for.body 646 647for.end: 648 ret void 649} 650 651define void @log10_f64(double* nocapture %varray) { 652; CHECK-LABEL: @log10_f64( 653; CHECK: __log10d2_massv(<2 x double> 654; CHECK: ret void 655; 656entry: 657 br label %for.body 658 659for.body: 660 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 661 %tmp = trunc i64 %iv to i32 662 %conv = sitofp i32 %tmp to double 663 %call = tail call double @log10(double %conv) 664 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 665 store double %call, double* %arrayidx, align 4 666 %iv.next = add nuw nsw i64 %iv, 1 667 %exitcond = icmp eq i64 %iv.next, 1000 668 br i1 %exitcond, label %for.end, label %for.body 669 670for.end: 671 ret void 672} 673 674define void @log10_f64_intrinsic(double* nocapture %varray) { 675; CHECK-LABEL: @log10_f64_intrinsic( 676; CHECK: __log10d2_massv{{.*}}<2 x double> 677; CHECK: ret void 678; 679entry: 680 br label %for.body 681 682for.body: 683 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 684 %tmp = trunc i64 %iv to i32 685 %conv = sitofp i32 %tmp to double 686 %call = tail call double @llvm.log10.f64(double %conv) 687 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 688 store double %call, double* %arrayidx, align 4 689 %iv.next = add nuw nsw i64 %iv, 1 690 %exitcond = icmp eq i64 %iv.next, 1000 691 br i1 %exitcond, label %for.end, label %for.body 692 693for.end: 694 ret void 695} 696 697define void @log10_f32(float* nocapture %varray) { 698; CHECK-LABEL: @log10_f32( 699; CHECK: __log10f4_massv{{.*}}<4 x float> 700; CHECK: ret void 701; 702entry: 703 br label %for.body 704 705for.body: 706 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 707 %tmp = trunc i64 %iv to i32 708 %conv = sitofp i32 %tmp to float 709 %call = tail call float @log10f(float %conv) 710 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 711 store float %call, float* %arrayidx, align 4 712 %iv.next = add nuw nsw i64 %iv, 1 713 %exitcond = icmp eq i64 %iv.next, 1000 714 br i1 %exitcond, label %for.end, label %for.body 715 716for.end: 717 ret void 718} 719 720define void @log10_f32_intrinsic(float* nocapture %varray) { 721; CHECK-LABEL: @log10_f32_intrinsic( 722; CHECK: __log10f4_massv{{.*}}<4 x float> 723; CHECK: ret void 724; 725entry: 726 br label %for.body 727 728for.body: 729 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 730 %tmp = trunc i64 %iv to i32 731 %conv = sitofp i32 %tmp to float 732 %call = tail call float @llvm.log10.f32(float %conv) 733 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 734 store float %call, float* %arrayidx, align 4 735 %iv.next = add nuw nsw i64 %iv, 1 736 %exitcond = icmp eq i64 %iv.next, 1000 737 br i1 %exitcond, label %for.end, label %for.body 738 739for.end: 740 ret void 741} 742 743define void @log2_f64(double* nocapture %varray) { 744; CHECK-LABEL: @log2_f64( 745; CHECK: __log2d2_massv(<2 x double> 746; CHECK: ret void 747; 748entry: 749 br label %for.body 750 751for.body: 752 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 753 %tmp = trunc i64 %iv to i32 754 %conv = sitofp i32 %tmp to double 755 %call = tail call double @log2(double %conv) 756 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 757 store double %call, double* %arrayidx, align 4 758 %iv.next = add nuw nsw i64 %iv, 1 759 %exitcond = icmp eq i64 %iv.next, 1000 760 br i1 %exitcond, label %for.end, label %for.body 761 762for.end: 763 ret void 764} 765 766define void @log2_f64_intrinsic(double* nocapture %varray) { 767; CHECK-LABEL: @log2_f64_intrinsic( 768; CHECK: __log2d2_massv{{.*}}<2 x double> 769; CHECK: ret void 770; 771entry: 772 br label %for.body 773 774for.body: 775 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 776 %tmp = trunc i64 %iv to i32 777 %conv = sitofp i32 %tmp to double 778 %call = tail call double @llvm.log2.f64(double %conv) 779 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 780 store double %call, double* %arrayidx, align 4 781 %iv.next = add nuw nsw i64 %iv, 1 782 %exitcond = icmp eq i64 %iv.next, 1000 783 br i1 %exitcond, label %for.end, label %for.body 784 785for.end: 786 ret void 787} 788 789define void @log2_f32(float* nocapture %varray) { 790; CHECK-LABEL: @log2_f32( 791; CHECK: __log2f4_massv{{.*}}<4 x float> 792; CHECK: ret void 793; 794entry: 795 br label %for.body 796 797for.body: 798 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 799 %tmp = trunc i64 %iv to i32 800 %conv = sitofp i32 %tmp to float 801 %call = tail call float @log2f(float %conv) 802 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 803 store float %call, float* %arrayidx, align 4 804 %iv.next = add nuw nsw i64 %iv, 1 805 %exitcond = icmp eq i64 %iv.next, 1000 806 br i1 %exitcond, label %for.end, label %for.body 807 808for.end: 809 ret void 810} 811 812define void @log2_f32_intrinsic(float* nocapture %varray) { 813; CHECK-LABEL: @log2_f32_intrinsic( 814; CHECK: __log2f4_massv{{.*}}<4 x float> 815; CHECK: ret void 816; 817entry: 818 br label %for.body 819 820for.body: 821 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 822 %tmp = trunc i64 %iv to i32 823 %conv = sitofp i32 %tmp to float 824 %call = tail call float @llvm.log2.f32(float %conv) 825 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 826 store float %call, float* %arrayidx, align 4 827 %iv.next = add nuw nsw i64 %iv, 1 828 %exitcond = icmp eq i64 %iv.next, 1000 829 br i1 %exitcond, label %for.end, label %for.body 830 831for.end: 832 ret void 833} 834 835define void @sin_f64(double* nocapture %varray) { 836; CHECK-LABEL: @sin_f64( 837; CHECK: __sind2_massv{{.*}}<2 x double> 838; CHECK: ret void 839; 840entry: 841 br label %for.body 842 843for.body: 844 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 845 %tmp = trunc i64 %iv to i32 846 %conv = sitofp i32 %tmp to double 847 %call = tail call double @sin(double %conv) 848 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 849 store double %call, double* %arrayidx, align 4 850 %iv.next = add nuw nsw i64 %iv, 1 851 %exitcond = icmp eq i64 %iv.next, 1000 852 br i1 %exitcond, label %for.end, label %for.body 853 854for.end: 855 ret void 856} 857 858define void @sin_f64_intrinsic(double* nocapture %varray) { 859; CHECK-LABEL: @sin_f64_intrinsic( 860; CHECK: __sind2_massv{{.*}}<2 x double> 861; CHECK: ret void 862; 863entry: 864 br label %for.body 865 866for.body: 867 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 868 %tmp = trunc i64 %iv to i32 869 %conv = sitofp i32 %tmp to double 870 %call = tail call double @llvm.sin.f64(double %conv) 871 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 872 store double %call, double* %arrayidx, align 4 873 %iv.next = add nuw nsw i64 %iv, 1 874 %exitcond = icmp eq i64 %iv.next, 1000 875 br i1 %exitcond, label %for.end, label %for.body 876 877for.end: 878 ret void 879} 880 881define void @sin_f32(float* nocapture %varray) { 882; CHECK-LABEL: @sin_f32( 883; CHECK: __sinf4_massv{{.*}}<4 x float> 884; CHECK: ret void 885; 886entry: 887 br label %for.body 888 889for.body: 890 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 891 %tmp = trunc i64 %iv to i32 892 %conv = sitofp i32 %tmp to float 893 %call = tail call float @sinf(float %conv) 894 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 895 store float %call, float* %arrayidx, align 4 896 %iv.next = add nuw nsw i64 %iv, 1 897 %exitcond = icmp eq i64 %iv.next, 1000 898 br i1 %exitcond, label %for.end, label %for.body 899 900for.end: 901 ret void 902} 903 904define void @sin_f32_intrinsic(float* nocapture %varray) { 905; CHECK-LABEL: @sin_f32_intrinsic( 906; CHECK: __sinf4_massv{{.*}}<4 x float> 907; CHECK: ret void 908; 909entry: 910 br label %for.body 911 912for.body: 913 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 914 %tmp = trunc i64 %iv to i32 915 %conv = sitofp i32 %tmp to float 916 %call = tail call float @llvm.sin.f32(float %conv) 917 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 918 store float %call, float* %arrayidx, align 4 919 %iv.next = add nuw nsw i64 %iv, 1 920 %exitcond = icmp eq i64 %iv.next, 1000 921 br i1 %exitcond, label %for.end, label %for.body 922 923for.end: 924 ret void 925} 926 927define void @cos_f64(double* nocapture %varray) { 928; CHECK-LABEL: @cos_f64( 929; CHECK: __cosd2_massv{{.*}}<2 x double> 930; CHECK: ret void 931; 932entry: 933 br label %for.body 934 935for.body: 936 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 937 %tmp = trunc i64 %iv to i32 938 %conv = sitofp i32 %tmp to double 939 %call = tail call double @cos(double %conv) 940 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 941 store double %call, double* %arrayidx, align 4 942 %iv.next = add nuw nsw i64 %iv, 1 943 %exitcond = icmp eq i64 %iv.next, 1000 944 br i1 %exitcond, label %for.end, label %for.body 945 946for.end: 947 ret void 948} 949 950define void @cos_f64_intrinsic(double* nocapture %varray) { 951; CHECK-LABEL: @cos_f64_intrinsic( 952; CHECK: [[TMP5:%.*]] = call <2 x double> @__cosd2_massv(<2 x double> [[TMP4:%.*]]) 953; CHECK: ret void 954; 955entry: 956 br label %for.body 957 958for.body: 959 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 960 %tmp = trunc i64 %iv to i32 961 %conv = sitofp i32 %tmp to double 962 %call = tail call double @llvm.cos.f64(double %conv) 963 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 964 store double %call, double* %arrayidx, align 4 965 %iv.next = add nuw nsw i64 %iv, 1 966 %exitcond = icmp eq i64 %iv.next, 1000 967 br i1 %exitcond, label %for.end, label %for.body 968 969for.end: 970 ret void 971} 972 973define void @cos_f32(float* nocapture %varray) { 974; CHECK-LABEL: @cos_f32( 975; CHECK: __cosf4_massv{{.*}}<4 x float> 976; CHECK: ret void 977; 978entry: 979 br label %for.body 980 981for.body: 982 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 983 %tmp = trunc i64 %iv to i32 984 %conv = sitofp i32 %tmp to float 985 %call = tail call float @cosf(float %conv) 986 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 987 store float %call, float* %arrayidx, align 4 988 %iv.next = add nuw nsw i64 %iv, 1 989 %exitcond = icmp eq i64 %iv.next, 1000 990 br i1 %exitcond, label %for.end, label %for.body 991 992for.end: 993 ret void 994} 995 996define void @cos_f32_intrinsic(float* nocapture %varray) { 997; CHECK-LABEL: @cos_f32_intrinsic( 998; CHECK: __cosf4_massv{{.*}}<4 x float> 999; CHECK: ret void 1000; 1001entry: 1002 br label %for.body 1003 1004for.body: 1005 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1006 %tmp = trunc i64 %iv to i32 1007 %conv = sitofp i32 %tmp to float 1008 %call = tail call float @llvm.cos.f32(float %conv) 1009 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1010 store float %call, float* %arrayidx, align 4 1011 %iv.next = add nuw nsw i64 %iv, 1 1012 %exitcond = icmp eq i64 %iv.next, 1000 1013 br i1 %exitcond, label %for.end, label %for.body 1014 1015for.end: 1016 ret void 1017} 1018 1019define void @tan_f64(double* nocapture %varray) { 1020; CHECK-LABEL: @tan_f64( 1021; CHECK: __tand2_massv{{.*}}<2 x double> 1022; CHECK: ret void 1023; 1024entry: 1025 br label %for.body 1026 1027for.body: 1028 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1029 %tmp = trunc i64 %iv to i32 1030 %conv = sitofp i32 %tmp to double 1031 %call = tail call double @tan(double %conv) 1032 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1033 store double %call, double* %arrayidx, align 4 1034 %iv.next = add nuw nsw i64 %iv, 1 1035 %exitcond = icmp eq i64 %iv.next, 1000 1036 br i1 %exitcond, label %for.end, label %for.body 1037 1038for.end: 1039 ret void 1040} 1041 1042define void @tan_f32(float* nocapture %varray) { 1043; CHECK-LABEL: @tan_f32( 1044; CHECK: __tanf4_massv{{.*}}<4 x float> 1045; CHECK: ret void 1046; 1047entry: 1048 br label %for.body 1049 1050for.body: 1051 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1052 %tmp = trunc i64 %iv to i32 1053 %conv = sitofp i32 %tmp to float 1054 %call = tail call float @tanf(float %conv) 1055 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1056 store float %call, float* %arrayidx, align 4 1057 %iv.next = add nuw nsw i64 %iv, 1 1058 %exitcond = icmp eq i64 %iv.next, 1000 1059 br i1 %exitcond, label %for.end, label %for.body 1060 1061for.end: 1062 ret void 1063} 1064 1065define void @asin_f64(double* nocapture %varray) { 1066; CHECK-LABEL: @asin_f64( 1067; CHECK: __asind2_massv{{.*}}<2 x double> 1068; CHECK: ret void 1069; 1070entry: 1071 br label %for.body 1072 1073for.body: 1074 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1075 %tmp = trunc i64 %iv to i32 1076 %conv = sitofp i32 %tmp to double 1077 %call = tail call double @asin(double %conv) 1078 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1079 store double %call, double* %arrayidx, align 4 1080 %iv.next = add nuw nsw i64 %iv, 1 1081 %exitcond = icmp eq i64 %iv.next, 1000 1082 br i1 %exitcond, label %for.end, label %for.body 1083 1084for.end: 1085 ret void 1086} 1087 1088define void @asin_f32(float* nocapture %varray) { 1089; CHECK-LABEL: @asin_f32( 1090; CHECK: __asinf4_massv{{.*}}<4 x float> 1091; CHECK: ret void 1092; 1093entry: 1094 br label %for.body 1095 1096for.body: 1097 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1098 %tmp = trunc i64 %iv to i32 1099 %conv = sitofp i32 %tmp to float 1100 %call = tail call float @asinf(float %conv) 1101 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1102 store float %call, float* %arrayidx, align 4 1103 %iv.next = add nuw nsw i64 %iv, 1 1104 %exitcond = icmp eq i64 %iv.next, 1000 1105 br i1 %exitcond, label %for.end, label %for.body 1106 1107for.end: 1108 ret void 1109} 1110 1111define void @acos_f64(double* nocapture %varray) { 1112; CHECK-LABEL: @acos_f64( 1113; CHECK: __acosd2_massv{{.*}}<2 x double> 1114; CHECK: ret void 1115; 1116entry: 1117 br label %for.body 1118 1119for.body: 1120 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1121 %tmp = trunc i64 %iv to i32 1122 %conv = sitofp i32 %tmp to double 1123 %call = tail call double @acos(double %conv) 1124 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1125 store double %call, double* %arrayidx, align 4 1126 %iv.next = add nuw nsw i64 %iv, 1 1127 %exitcond = icmp eq i64 %iv.next, 1000 1128 br i1 %exitcond, label %for.end, label %for.body 1129 1130for.end: 1131 ret void 1132} 1133 1134define void @acos_f32(float* nocapture %varray) { 1135; CHECK-LABEL: @acos_f32( 1136; CHECK: __acosf4_massv{{.*}}<4 x float> 1137; CHECK: ret void 1138; 1139entry: 1140 br label %for.body 1141 1142for.body: 1143 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1144 %tmp = trunc i64 %iv to i32 1145 %conv = sitofp i32 %tmp to float 1146 %call = tail call float @acosf(float %conv) 1147 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1148 store float %call, float* %arrayidx, align 4 1149 %iv.next = add nuw nsw i64 %iv, 1 1150 %exitcond = icmp eq i64 %iv.next, 1000 1151 br i1 %exitcond, label %for.end, label %for.body 1152 1153for.end: 1154 ret void 1155} 1156 1157define void @atan_f64(double* nocapture %varray) { 1158; CHECK-LABEL: @atan_f64( 1159; CHECK: __atand2_massv{{.*}}<2 x double> 1160; CHECK: ret void 1161; 1162entry: 1163 br label %for.body 1164 1165for.body: 1166 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1167 %tmp = trunc i64 %iv to i32 1168 %conv = sitofp i32 %tmp to double 1169 %call = tail call double @atan(double %conv) 1170 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1171 store double %call, double* %arrayidx, align 4 1172 %iv.next = add nuw nsw i64 %iv, 1 1173 %exitcond = icmp eq i64 %iv.next, 1000 1174 br i1 %exitcond, label %for.end, label %for.body 1175 1176for.end: 1177 ret void 1178} 1179 1180define void @atan_f32(float* nocapture %varray) { 1181; CHECK-LABEL: @atan_f32( 1182; CHECK: __atanf4_massv{{.*}}<4 x float> 1183; CHECK: ret void 1184; 1185entry: 1186 br label %for.body 1187 1188for.body: 1189 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1190 %tmp = trunc i64 %iv to i32 1191 %conv = sitofp i32 %tmp to float 1192 %call = tail call float @atanf(float %conv) 1193 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1194 store float %call, float* %arrayidx, align 4 1195 %iv.next = add nuw nsw i64 %iv, 1 1196 %exitcond = icmp eq i64 %iv.next, 1000 1197 br i1 %exitcond, label %for.end, label %for.body 1198 1199for.end: 1200 ret void 1201} 1202 1203define void @atan2_f64(double* nocapture %varray) { 1204; CHECK-LABEL: @atan2_f64( 1205; CHECK: __atan2d2_massv{{.*}}<2 x double> 1206; CHECK: ret void 1207; 1208entry: 1209 br label %for.body 1210 1211for.body: 1212 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1213 %tmp = trunc i64 %iv to i32 1214 %conv = sitofp i32 %tmp to double 1215 %call = tail call double @atan2(double %conv) 1216 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1217 store double %call, double* %arrayidx, align 4 1218 %iv.next = add nuw nsw i64 %iv, 1 1219 %exitcond = icmp eq i64 %iv.next, 1000 1220 br i1 %exitcond, label %for.end, label %for.body 1221 1222for.end: 1223 ret void 1224} 1225 1226define void @atan2_f32(float* nocapture %varray) { 1227; CHECK-LABEL: @atan2_f32( 1228; CHECK: __atan2f4_massv{{.*}}<4 x float> 1229; CHECK: ret void 1230; 1231entry: 1232 br label %for.body 1233 1234for.body: 1235 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1236 %tmp = trunc i64 %iv to i32 1237 %conv = sitofp i32 %tmp to float 1238 %call = tail call float @atan2f(float %conv) 1239 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1240 store float %call, float* %arrayidx, align 4 1241 %iv.next = add nuw nsw i64 %iv, 1 1242 %exitcond = icmp eq i64 %iv.next, 1000 1243 br i1 %exitcond, label %for.end, label %for.body 1244 1245for.end: 1246 ret void 1247} 1248 1249define void @sinh_f64(double* nocapture %varray) { 1250; CHECK-LABEL: @sinh_f64( 1251; CHECK: __sinhd2_massv{{.*}}<2 x double> 1252; CHECK: ret void 1253; 1254entry: 1255 br label %for.body 1256 1257for.body: 1258 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1259 %tmp = trunc i64 %iv to i32 1260 %conv = sitofp i32 %tmp to double 1261 %call = tail call double @sinh(double %conv) 1262 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1263 store double %call, double* %arrayidx, align 4 1264 %iv.next = add nuw nsw i64 %iv, 1 1265 %exitcond = icmp eq i64 %iv.next, 1000 1266 br i1 %exitcond, label %for.end, label %for.body 1267 1268for.end: 1269 ret void 1270} 1271 1272define void @sinh_f32(float* nocapture %varray) { 1273; CHECK-LABEL: @sinh_f32( 1274; CHECK: __sinhf4_massv{{.*}}<4 x float> 1275; CHECK: ret void 1276; 1277entry: 1278 br label %for.body 1279 1280for.body: 1281 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1282 %tmp = trunc i64 %iv to i32 1283 %conv = sitofp i32 %tmp to float 1284 %call = tail call float @sinhf(float %conv) 1285 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1286 store float %call, float* %arrayidx, align 4 1287 %iv.next = add nuw nsw i64 %iv, 1 1288 %exitcond = icmp eq i64 %iv.next, 1000 1289 br i1 %exitcond, label %for.end, label %for.body 1290 1291for.end: 1292 ret void 1293} 1294 1295define void @cosh_f64(double* nocapture %varray) { 1296; CHECK-LABEL: @cosh_f64( 1297; CHECK: __coshd2_massv{{.*}}<2 x double> 1298; CHECK: ret void 1299; 1300entry: 1301 br label %for.body 1302 1303for.body: 1304 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1305 %tmp = trunc i64 %iv to i32 1306 %conv = sitofp i32 %tmp to double 1307 %call = tail call double @cosh(double %conv) 1308 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1309 store double %call, double* %arrayidx, align 4 1310 %iv.next = add nuw nsw i64 %iv, 1 1311 %exitcond = icmp eq i64 %iv.next, 1000 1312 br i1 %exitcond, label %for.end, label %for.body 1313 1314for.end: 1315 ret void 1316} 1317 1318define void @cosh_f32(float* nocapture %varray) { 1319; CHECK-LABEL: @cosh_f32( 1320; CHECK: __coshf4_massv{{.*}}<4 x float> 1321; CHECK: ret void 1322; 1323entry: 1324 br label %for.body 1325 1326for.body: 1327 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1328 %tmp = trunc i64 %iv to i32 1329 %conv = sitofp i32 %tmp to float 1330 %call = tail call float @coshf(float %conv) 1331 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1332 store float %call, float* %arrayidx, align 4 1333 %iv.next = add nuw nsw i64 %iv, 1 1334 %exitcond = icmp eq i64 %iv.next, 1000 1335 br i1 %exitcond, label %for.end, label %for.body 1336 1337for.end: 1338 ret void 1339} 1340 1341define void @tanh_f64(double* nocapture %varray) { 1342; CHECK-LABEL: @tanh_f64( 1343; CHECK: __tanhd2_massv{{.*}}<2 x double> 1344; CHECK: ret void 1345; 1346entry: 1347 br label %for.body 1348 1349for.body: 1350 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1351 %tmp = trunc i64 %iv to i32 1352 %conv = sitofp i32 %tmp to double 1353 %call = tail call double @tanh(double %conv) 1354 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1355 store double %call, double* %arrayidx, align 4 1356 %iv.next = add nuw nsw i64 %iv, 1 1357 %exitcond = icmp eq i64 %iv.next, 1000 1358 br i1 %exitcond, label %for.end, label %for.body 1359 1360for.end: 1361 ret void 1362} 1363 1364define void @tanh_f32(float* nocapture %varray) { 1365; CHECK-LABEL: @tanh_f32( 1366; CHECK: __tanhf4_massv{{.*}}<4 x float> 1367; CHECK: ret void 1368; 1369entry: 1370 br label %for.body 1371 1372for.body: 1373 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1374 %tmp = trunc i64 %iv to i32 1375 %conv = sitofp i32 %tmp to float 1376 %call = tail call float @tanhf(float %conv) 1377 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1378 store float %call, float* %arrayidx, align 4 1379 %iv.next = add nuw nsw i64 %iv, 1 1380 %exitcond = icmp eq i64 %iv.next, 1000 1381 br i1 %exitcond, label %for.end, label %for.body 1382 1383for.end: 1384 ret void 1385} 1386 1387define void @asinh_f64(double* nocapture %varray) { 1388; CHECK-LABEL: @asinh_f64( 1389; CHECK: __asinhd2_massv{{.*}}<2 x double> 1390; CHECK: ret void 1391; 1392entry: 1393 br label %for.body 1394 1395for.body: 1396 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1397 %tmp = trunc i64 %iv to i32 1398 %conv = sitofp i32 %tmp to double 1399 %call = tail call double @asinh(double %conv) 1400 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1401 store double %call, double* %arrayidx, align 4 1402 %iv.next = add nuw nsw i64 %iv, 1 1403 %exitcond = icmp eq i64 %iv.next, 1000 1404 br i1 %exitcond, label %for.end, label %for.body 1405 1406for.end: 1407 ret void 1408} 1409 1410define void @asinh_f32(float* nocapture %varray) { 1411; CHECK-LABEL: @asinh_f32( 1412; CHECK: __asinhf4_massv{{.*}}<4 x float> 1413; CHECK: ret void 1414; 1415entry: 1416 br label %for.body 1417 1418for.body: 1419 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1420 %tmp = trunc i64 %iv to i32 1421 %conv = sitofp i32 %tmp to float 1422 %call = tail call float @asinhf(float %conv) 1423 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1424 store float %call, float* %arrayidx, align 4 1425 %iv.next = add nuw nsw i64 %iv, 1 1426 %exitcond = icmp eq i64 %iv.next, 1000 1427 br i1 %exitcond, label %for.end, label %for.body 1428 1429for.end: 1430 ret void 1431} 1432 1433define void @acosh_f64(double* nocapture %varray) { 1434; CHECK-LABEL: @acosh_f64( 1435; CHECK: __acoshd2_massv{{.*}}<2 x double> 1436; CHECK: ret void 1437; 1438entry: 1439 br label %for.body 1440 1441for.body: 1442 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1443 %tmp = trunc i64 %iv to i32 1444 %conv = sitofp i32 %tmp to double 1445 %call = tail call double @acosh(double %conv) 1446 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1447 store double %call, double* %arrayidx, align 4 1448 %iv.next = add nuw nsw i64 %iv, 1 1449 %exitcond = icmp eq i64 %iv.next, 1000 1450 br i1 %exitcond, label %for.end, label %for.body 1451 1452for.end: 1453 ret void 1454} 1455 1456define void @acosh_f32(float* nocapture %varray) { 1457; CHECK-LABEL: @acosh_f32( 1458; CHECK: __acoshf4_massv{{.*}}<4 x float> 1459; CHECK: ret void 1460; 1461entry: 1462 br label %for.body 1463 1464for.body: 1465 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1466 %tmp = trunc i64 %iv to i32 1467 %conv = sitofp i32 %tmp to float 1468 %call = tail call float @acoshf(float %conv) 1469 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1470 store float %call, float* %arrayidx, align 4 1471 %iv.next = add nuw nsw i64 %iv, 1 1472 %exitcond = icmp eq i64 %iv.next, 1000 1473 br i1 %exitcond, label %for.end, label %for.body 1474 1475for.end: 1476 ret void 1477} 1478 1479define void @atanh_f64(double* nocapture %varray) { 1480; CHECK-LABEL: @atanh_f64( 1481; CHECK: __atanhd2_massv{{.*}}<2 x double> 1482; CHECK: ret void 1483; 1484entry: 1485 br label %for.body 1486 1487for.body: 1488 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1489 %tmp = trunc i64 %iv to i32 1490 %conv = sitofp i32 %tmp to double 1491 %call = tail call double @atanh(double %conv) 1492 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv 1493 store double %call, double* %arrayidx, align 4 1494 %iv.next = add nuw nsw i64 %iv, 1 1495 %exitcond = icmp eq i64 %iv.next, 1000 1496 br i1 %exitcond, label %for.end, label %for.body 1497 1498for.end: 1499 ret void 1500} 1501 1502define void @atanh_f32(float* nocapture %varray) { 1503; CHECK-LABEL: @atanh_f32( 1504; CHECK: __atanhf4_massv{{.*}}<4 x float> 1505; CHECK: ret void 1506; 1507entry: 1508 br label %for.body 1509 1510for.body: 1511 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ] 1512 %tmp = trunc i64 %iv to i32 1513 %conv = sitofp i32 %tmp to float 1514 %call = tail call float @atanhf(float %conv) 1515 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv 1516 store float %call, float* %arrayidx, align 4 1517 %iv.next = add nuw nsw i64 %iv, 1 1518 %exitcond = icmp eq i64 %iv.next, 1000 1519 br i1 %exitcond, label %for.end, label %for.body 1520 1521for.end: 1522 ret void 1523} 1524 1525attributes #0 = { nounwind } 1526