1 ; RUN: opt -vector-library=MASSV -loop-vectorize -force-vector-interleave=1 -S < %s | FileCheck %s
3 target datalayout = "e-m:e-i64:64-n32:64"
4 target triple = "powerpc64le-unknown-linux-gnu"
6 declare double @cbrt(double) #0
7 declare float @cbrtf(float) #0
9 declare double @pow(double, double) #0
10 declare double @llvm.pow.f64(double, double) #0
11 declare float @powf(float, float) #0
12 declare float @llvm.pow.f32(float, float) #0
14 declare double @sqrt(double) #0
15 declare float @sqrtf(float) #0
17 declare double @exp(double) #0
18 declare double @llvm.exp.f64(double) #0
19 declare float @expf(float) #0
20 declare float @llvm.exp.f32(float) #0
22 declare double @exp2(double) #0
23 declare double @llvm.exp2.f64(double) #0
24 declare float @exp2f(float) #0
25 declare float @llvm.exp2.f32(float) #0
27 declare double @expm1(double) #0
28 declare float @expm1f(float) #0
30 declare double @log(double) #0
31 declare double @llvm.log.f64(double) #0
32 declare float @logf(float) #0
33 declare float @llvm.log.f32(float) #0
35 declare double @log1p(double) #0
36 declare float @log1pf(float) #0
38 declare double @log10(double) #0
39 declare double @llvm.log10.f64(double) #0
40 declare float @log10f(float) #0
41 declare float @llvm.log10.f32(float) #0
43 declare double @log2(double) #0
44 declare double @llvm.log2.f64(double) #0
45 declare float @log2f(float) #0
46 declare float @llvm.log2.f32(float) #0
48 declare double @sin(double) #0
49 declare double @llvm.sin.f64(double) #0
50 declare float @sinf(float) #0
51 declare float @llvm.sin.f32(float) #0
53 declare double @cos(double) #0
54 declare double @llvm.cos.f64(double) #0
55 declare float @cosf(float) #0
56 declare float @llvm.cos.f32(float) #0
58 declare double @tan(double) #0
59 declare float @tanf(float) #0
61 declare double @asin(double) #0
62 declare float @asinf(float) #0
64 declare double @acos(double) #0
65 declare float @acosf(float) #0
67 declare double @atan(double) #0
68 declare float @atanf(float) #0
70 declare double @atan2(double) #0
71 declare float @atan2f(float) #0
73 declare double @sinh(double) #0
74 declare float @sinhf(float) #0
76 declare double @cosh(double) #0
77 declare float @coshf(float) #0
79 declare double @tanh(double) #0
80 declare float @tanhf(float) #0
82 declare double @asinh(double) #0
83 declare float @asinhf(float) #0
85 declare double @acosh(double) #0
86 declare float @acoshf(float) #0
88 declare double @atanh(double) #0
89 declare float @atanhf(float) #0
91 define void @cbrt_f64(double* nocapture %varray) {
92 ; CHECK-LABEL: @cbrt_f64(
93 ; CHECK: __cbrtd2_massv{{.*}}<2 x double>
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
114 define void @cbrt_f32(float* nocapture %varray) {
115 ; CHECK-LABEL: @cbrt_f32(
116 ; CHECK: __cbrtf4_massv{{.*}}<4 x float>
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
137 define void @pow_f64(double* nocapture %varray, double* nocapture readonly %exp) {
138 ; CHECK-LABEL: @pow_f64(
139 ; CHECK: __powd2_massv{{.*}}<2 x double>
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
162 define void @pow_f64_intrinsic(double* nocapture %varray, double* nocapture readonly %exp) {
163 ; CHECK-LABEL: @pow_f64_intrinsic(
164 ; CHECK: __powd2_massv{{.*}}<2 x double>
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
187 define void @pow_f32(float* nocapture %varray, float* nocapture readonly %exp) {
188 ; CHECK-LABEL: @pow_f32(
189 ; CHECK: __powf4_massv{{.*}}<4 x float>
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
212 define void @pow_f32_intrinsic(float* nocapture %varray, float* nocapture readonly %exp) {
213 ; CHECK-LABEL: @pow_f32_intrinsic(
214 ; CHECK: __powf4_massv{{.*}}<4 x float>
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
237 define void @sqrt_f64(double* nocapture %varray) {
238 ; CHECK-LABEL: @sqrt_f64(
239 ; CHECK: __sqrtd2_massv{{.*}}<2 x double>
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
260 define void @sqrt_f32(float* nocapture %varray) {
261 ; CHECK-LABEL: @sqrt_f32(
262 ; CHECK: __sqrtf4_massv{{.*}}<4 x float>
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
283 define void @exp_f64(double* nocapture %varray) {
284 ; CHECK-LABEL: @exp_f64(
285 ; CHECK: __expd2_massv{{.*}}<2 x double>
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
306 define void @exp_f64_intrinsic(double* nocapture %varray) {
307 ; CHECK-LABEL: @exp_f64_intrinsic(
308 ; CHECK: __expd2_massv{{.*}}<2 x double>
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
329 define void @exp_f32(float* nocapture %varray) {
330 ; CHECK-LABEL: @exp_f32(
331 ; CHECK: __expf4_massv{{.*}}<4 x float>
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
352 define void @exp_f32_intrinsic(float* nocapture %varray) {
353 ; CHECK-LABEL: @exp_f32_intrinsic(
354 ; CHECK: __expf4_massv{{.*}}<4 x float>
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
375 define void @exp2_f64(double* nocapture %varray) {
376 ; CHECK-LABEL: @exp2_f64(
377 ; CHECK: __exp2d2_massv{{.*}}<2 x double>
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
398 define void @exp2_f64_intrinsic(double* nocapture %varray) {
399 ; CHECK-LABEL: @exp2_f64_intrinsic(
400 ; CHECK: __exp2d2_massv{{.*}}<2 x double>
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
421 define void @exp2_f32(float* nocapture %varray) {
422 ; CHECK-LABEL: @exp2_f32(
423 ; CHECK: __exp2f4_massv{{.*}}<4 x float>
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
444 define void @exp2_f32_intrinsic(float* nocapture %varray) {
445 ; CHECK-LABEL: @exp2_f32_intrinsic(
446 ; CHECK: __exp2f4_massv{{.*}}<4 x float>
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
467 define void @expm1_f64(double* nocapture %varray) {
468 ; CHECK-LABEL: @expm1_f64(
469 ; CHECK: __expm1d2_massv{{.*}}<2 x double>
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
490 define void @expm1_f32(float* nocapture %varray) {
491 ; CHECK-LABEL: @expm1_f32(
492 ; CHECK: __expm1f4_massv{{.*}}<4 x float>
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
513 define void @log_f64(double* nocapture %varray) {
514 ; CHECK-LABEL: @log_f64(
515 ; CHECK: __logd2_massv{{.*}}<2 x double>
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
536 define void @log_f64_intrinsic(double* nocapture %varray) {
537 ; CHECK-LABEL: @log_f64_intrinsic(
538 ; CHECK: __logd2_massv{{.*}}<2 x double>
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
559 define void @log_f32(float* nocapture %varray) {
560 ; CHECK-LABEL: @log_f32(
561 ; CHECK: __logf4_massv{{.*}}<4 x float>
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
582 define void @log_f32_intrinsic(float* nocapture %varray) {
583 ; CHECK-LABEL: @log_f32_intrinsic(
584 ; CHECK: __logf4_massv{{.*}}<4 x float>
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
605 define void @log1p_f64(double* nocapture %varray) {
606 ; CHECK-LABEL: @log1p_f64(
607 ; CHECK: __log1pd2_massv{{.*}}<2 x double>
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
628 define void @log1p_f32(float* nocapture %varray) {
629 ; CHECK-LABEL: @log1p_f32(
630 ; CHECK: __log1pf4_massv{{.*}}<4 x float>
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
651 define void @log10_f64(double* nocapture %varray) {
652 ; CHECK-LABEL: @log10_f64(
653 ; CHECK: __log10d2_massv(<2 x double>
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
674 define void @log10_f64_intrinsic(double* nocapture %varray) {
675 ; CHECK-LABEL: @log10_f64_intrinsic(
676 ; CHECK: __log10d2_massv{{.*}}<2 x double>
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
697 define void @log10_f32(float* nocapture %varray) {
698 ; CHECK-LABEL: @log10_f32(
699 ; CHECK: __log10f4_massv{{.*}}<4 x float>
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
720 define void @log10_f32_intrinsic(float* nocapture %varray) {
721 ; CHECK-LABEL: @log10_f32_intrinsic(
722 ; CHECK: __log10f4_massv{{.*}}<4 x float>
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
743 define void @log2_f64(double* nocapture %varray) {
744 ; CHECK-LABEL: @log2_f64(
745 ; CHECK: __log2d2_massv(<2 x double>
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
766 define void @log2_f64_intrinsic(double* nocapture %varray) {
767 ; CHECK-LABEL: @log2_f64_intrinsic(
768 ; CHECK: __log2d2_massv{{.*}}<2 x double>
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
789 define void @log2_f32(float* nocapture %varray) {
790 ; CHECK-LABEL: @log2_f32(
791 ; CHECK: __log2f4_massv{{.*}}<4 x float>
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
812 define void @log2_f32_intrinsic(float* nocapture %varray) {
813 ; CHECK-LABEL: @log2_f32_intrinsic(
814 ; CHECK: __log2f4_massv{{.*}}<4 x float>
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
835 define void @sin_f64(double* nocapture %varray) {
836 ; CHECK-LABEL: @sin_f64(
837 ; CHECK: __sind2_massv{{.*}}<2 x double>
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
858 define void @sin_f64_intrinsic(double* nocapture %varray) {
859 ; CHECK-LABEL: @sin_f64_intrinsic(
860 ; CHECK: __sind2_massv{{.*}}<2 x double>
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
881 define void @sin_f32(float* nocapture %varray) {
882 ; CHECK-LABEL: @sin_f32(
883 ; CHECK: __sinf4_massv{{.*}}<4 x float>
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
904 define void @sin_f32_intrinsic(float* nocapture %varray) {
905 ; CHECK-LABEL: @sin_f32_intrinsic(
906 ; CHECK: __sinf4_massv{{.*}}<4 x float>
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
927 define void @cos_f64(double* nocapture %varray) {
928 ; CHECK-LABEL: @cos_f64(
929 ; CHECK: __cosd2_massv{{.*}}<2 x double>
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
950 define 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:%.*]])
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
973 define void @cos_f32(float* nocapture %varray) {
974 ; CHECK-LABEL: @cos_f32(
975 ; CHECK: __cosf4_massv{{.*}}<4 x float>
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
996 define void @cos_f32_intrinsic(float* nocapture %varray) {
997 ; CHECK-LABEL: @cos_f32_intrinsic(
998 ; CHECK: __cosf4_massv{{.*}}<4 x float>
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
1019 define void @tan_f64(double* nocapture %varray) {
1020 ; CHECK-LABEL: @tan_f64(
1021 ; CHECK: __tand2_massv{{.*}}<2 x double>
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
1042 define void @tan_f32(float* nocapture %varray) {
1043 ; CHECK-LABEL: @tan_f32(
1044 ; CHECK: __tanf4_massv{{.*}}<4 x float>
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
1065 define void @asin_f64(double* nocapture %varray) {
1066 ; CHECK-LABEL: @asin_f64(
1067 ; CHECK: __asind2_massv{{.*}}<2 x double>
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
1088 define void @asin_f32(float* nocapture %varray) {
1089 ; CHECK-LABEL: @asin_f32(
1090 ; CHECK: __asinf4_massv{{.*}}<4 x float>
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
1111 define void @acos_f64(double* nocapture %varray) {
1112 ; CHECK-LABEL: @acos_f64(
1113 ; CHECK: __acosd2_massv{{.*}}<2 x double>
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
1134 define void @acos_f32(float* nocapture %varray) {
1135 ; CHECK-LABEL: @acos_f32(
1136 ; CHECK: __acosf4_massv{{.*}}<4 x float>
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
1157 define void @atan_f64(double* nocapture %varray) {
1158 ; CHECK-LABEL: @atan_f64(
1159 ; CHECK: __atand2_massv{{.*}}<2 x double>
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
1180 define void @atan_f32(float* nocapture %varray) {
1181 ; CHECK-LABEL: @atan_f32(
1182 ; CHECK: __atanf4_massv{{.*}}<4 x float>
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
1203 define void @atan2_f64(double* nocapture %varray) {
1204 ; CHECK-LABEL: @atan2_f64(
1205 ; CHECK: __atan2d2_massv{{.*}}<2 x double>
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
1226 define void @atan2_f32(float* nocapture %varray) {
1227 ; CHECK-LABEL: @atan2_f32(
1228 ; CHECK: __atan2f4_massv{{.*}}<4 x float>
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
1249 define void @sinh_f64(double* nocapture %varray) {
1250 ; CHECK-LABEL: @sinh_f64(
1251 ; CHECK: __sinhd2_massv{{.*}}<2 x double>
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
1272 define void @sinh_f32(float* nocapture %varray) {
1273 ; CHECK-LABEL: @sinh_f32(
1274 ; CHECK: __sinhf4_massv{{.*}}<4 x float>
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
1295 define void @cosh_f64(double* nocapture %varray) {
1296 ; CHECK-LABEL: @cosh_f64(
1297 ; CHECK: __coshd2_massv{{.*}}<2 x double>
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
1318 define void @cosh_f32(float* nocapture %varray) {
1319 ; CHECK-LABEL: @cosh_f32(
1320 ; CHECK: __coshf4_massv{{.*}}<4 x float>
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
1341 define void @tanh_f64(double* nocapture %varray) {
1342 ; CHECK-LABEL: @tanh_f64(
1343 ; CHECK: __tanhd2_massv{{.*}}<2 x double>
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
1364 define void @tanh_f32(float* nocapture %varray) {
1365 ; CHECK-LABEL: @tanh_f32(
1366 ; CHECK: __tanhf4_massv{{.*}}<4 x float>
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
1387 define void @asinh_f64(double* nocapture %varray) {
1388 ; CHECK-LABEL: @asinh_f64(
1389 ; CHECK: __asinhd2_massv{{.*}}<2 x double>
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
1410 define void @asinh_f32(float* nocapture %varray) {
1411 ; CHECK-LABEL: @asinh_f32(
1412 ; CHECK: __asinhf4_massv{{.*}}<4 x float>
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
1433 define void @acosh_f64(double* nocapture %varray) {
1434 ; CHECK-LABEL: @acosh_f64(
1435 ; CHECK: __acoshd2_massv{{.*}}<2 x double>
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
1456 define void @acosh_f32(float* nocapture %varray) {
1457 ; CHECK-LABEL: @acosh_f32(
1458 ; CHECK: __acoshf4_massv{{.*}}<4 x float>
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
1479 define void @atanh_f64(double* nocapture %varray) {
1480 ; CHECK-LABEL: @atanh_f64(
1481 ; CHECK: __atanhd2_massv{{.*}}<2 x double>
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
1502 define void @atanh_f32(float* nocapture %varray) {
1503 ; CHECK-LABEL: @atanh_f32(
1504 ; CHECK: __atanhf4_massv{{.*}}<4 x float>
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
1525 attributes #0 = { nounwind }