1 ; RUN: opt -vector-library=MASSV -mtriple=powerpc64le-unknown-linux-gnu -inject-tli-mappings -loop-vectorize -force-vector-interleave=1 -S < %s | FileCheck %s
2 ; RUN: opt -vector-library=MASSV -vec-extabi -mattr=+altivec -mtriple=powerpc64-ibm-aix-xcoff -inject-tli-mappings -loop-vectorize -force-vector-interleave=1 -S < %s | FileCheck %s
4 declare double @cbrt(double) #0
5 declare float @cbrtf(float) #0
7 declare double @pow(double, double) #0
8 declare double @llvm.pow.f64(double, double) #0
9 declare float @powf(float, float) #0
10 declare float @llvm.pow.f32(float, float) #0
12 declare double @sqrt(double) #0
13 declare float @sqrtf(float) #0
15 declare double @exp(double) #0
16 declare double @llvm.exp.f64(double) #0
17 declare float @expf(float) #0
18 declare float @llvm.exp.f32(float) #0
20 declare double @exp2(double) #0
21 declare double @llvm.exp2.f64(double) #0
22 declare float @exp2f(float) #0
23 declare float @llvm.exp2.f32(float) #0
25 declare double @expm1(double) #0
26 declare float @expm1f(float) #0
28 declare double @log(double) #0
29 declare double @llvm.log.f64(double) #0
30 declare float @logf(float) #0
31 declare float @llvm.log.f32(float) #0
33 declare double @log1p(double) #0
34 declare float @log1pf(float) #0
36 declare double @log10(double) #0
37 declare double @llvm.log10.f64(double) #0
38 declare float @log10f(float) #0
39 declare float @llvm.log10.f32(float) #0
41 declare double @log2(double) #0
42 declare double @llvm.log2.f64(double) #0
43 declare float @log2f(float) #0
44 declare float @llvm.log2.f32(float) #0
46 declare double @sin(double) #0
47 declare double @llvm.sin.f64(double) #0
48 declare float @sinf(float) #0
49 declare float @llvm.sin.f32(float) #0
51 declare double @cos(double) #0
52 declare double @llvm.cos.f64(double) #0
53 declare float @cosf(float) #0
54 declare float @llvm.cos.f32(float) #0
56 declare double @tan(double) #0
57 declare float @tanf(float) #0
59 declare double @asin(double) #0
60 declare float @asinf(float) #0
62 declare double @acos(double) #0
63 declare float @acosf(float) #0
65 declare double @atan(double) #0
66 declare float @atanf(float) #0
68 declare double @atan2(double) #0
69 declare float @atan2f(float) #0
71 declare double @sinh(double) #0
72 declare float @sinhf(float) #0
74 declare double @cosh(double) #0
75 declare float @coshf(float) #0
77 declare double @tanh(double) #0
78 declare float @tanhf(float) #0
80 declare double @asinh(double) #0
81 declare float @asinhf(float) #0
83 declare double @acosh(double) #0
84 declare float @acoshf(float) #0
86 declare double @atanh(double) #0
87 declare float @atanhf(float) #0
89 define void @cbrt_f64(double* nocapture %varray) {
90 ; CHECK-LABEL: @cbrt_f64(
91 ; CHECK: __cbrtd2{{.*}}<2 x double>
98 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
99 %tmp = trunc i64 %iv to i32
100 %conv = sitofp i32 %tmp to double
101 %call = tail call double @cbrt(double %conv)
102 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
103 store double %call, double* %arrayidx, align 4
104 %iv.next = add nuw nsw i64 %iv, 1
105 %exitcond = icmp eq i64 %iv.next, 1000
106 br i1 %exitcond, label %for.end, label %for.body
112 define void @cbrt_f32(float* nocapture %varray) {
113 ; CHECK-LABEL: @cbrt_f32(
114 ; CHECK: __cbrtf4{{.*}}<4 x float>
121 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
122 %tmp = trunc i64 %iv to i32
123 %conv = sitofp i32 %tmp to float
124 %call = tail call float @cbrtf(float %conv)
125 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
126 store float %call, float* %arrayidx, align 4
127 %iv.next = add nuw nsw i64 %iv, 1
128 %exitcond = icmp eq i64 %iv.next, 1000
129 br i1 %exitcond, label %for.end, label %for.body
135 define void @pow_f64(double* nocapture %varray, double* nocapture readonly %exp) {
136 ; CHECK-LABEL: @pow_f64(
137 ; CHECK: __powd2{{.*}}<2 x double>
144 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
145 %tmp = trunc i64 %iv to i32
146 %conv = sitofp i32 %tmp to double
147 %arrayidx = getelementptr inbounds double, double* %exp, i64 %iv
148 %tmp1 = load double, double* %arrayidx, align 4
149 %tmp2 = tail call double @pow(double %conv, double %tmp1)
150 %arrayidx2 = getelementptr inbounds double, double* %varray, i64 %iv
151 store double %tmp2, double* %arrayidx2, align 4
152 %iv.next = add nuw nsw i64 %iv, 1
153 %exitcond = icmp eq i64 %iv.next, 1000
154 br i1 %exitcond, label %for.end, label %for.body
160 define void @pow_f64_intrinsic(double* nocapture %varray, double* nocapture readonly %exp) {
161 ; CHECK-LABEL: @pow_f64_intrinsic(
162 ; CHECK: __powd2{{.*}}<2 x double>
169 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
170 %tmp = trunc i64 %iv to i32
171 %conv = sitofp i32 %tmp to double
172 %arrayidx = getelementptr inbounds double, double* %exp, i64 %iv
173 %tmp1 = load double, double* %arrayidx, align 4
174 %tmp2 = tail call double @llvm.pow.f64(double %conv, double %tmp1)
175 %arrayidx2 = getelementptr inbounds double, double* %varray, i64 %iv
176 store double %tmp2, double* %arrayidx2, align 4
177 %iv.next = add nuw nsw i64 %iv, 1
178 %exitcond = icmp eq i64 %iv.next, 1000
179 br i1 %exitcond, label %for.end, label %for.body
185 define void @pow_f32(float* nocapture %varray, float* nocapture readonly %exp) {
186 ; CHECK-LABEL: @pow_f32(
187 ; CHECK: __powf4{{.*}}<4 x float>
194 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
195 %tmp = trunc i64 %iv to i32
196 %conv = sitofp i32 %tmp to float
197 %arrayidx = getelementptr inbounds float, float* %exp, i64 %iv
198 %tmp1 = load float, float* %arrayidx, align 4
199 %tmp2 = tail call float @powf(float %conv, float %tmp1)
200 %arrayidx2 = getelementptr inbounds float, float* %varray, i64 %iv
201 store float %tmp2, float* %arrayidx2, align 4
202 %iv.next = add nuw nsw i64 %iv, 1
203 %exitcond = icmp eq i64 %iv.next, 1000
204 br i1 %exitcond, label %for.end, label %for.body
210 define void @pow_f32_intrinsic(float* nocapture %varray, float* nocapture readonly %exp) {
211 ; CHECK-LABEL: @pow_f32_intrinsic(
212 ; CHECK: __powf4{{.*}}<4 x float>
219 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
220 %tmp = trunc i64 %iv to i32
221 %conv = sitofp i32 %tmp to float
222 %arrayidx = getelementptr inbounds float, float* %exp, i64 %iv
223 %tmp1 = load float, float* %arrayidx, align 4
224 %tmp2 = tail call float @llvm.pow.f32(float %conv, float %tmp1)
225 %arrayidx2 = getelementptr inbounds float, float* %varray, i64 %iv
226 store float %tmp2, float* %arrayidx2, align 4
227 %iv.next = add nuw nsw i64 %iv, 1
228 %exitcond = icmp eq i64 %iv.next, 1000
229 br i1 %exitcond, label %for.end, label %for.body
235 define void @sqrt_f64(double* nocapture %varray) {
236 ; CHECK-LABEL: @sqrt_f64(
237 ; CHECK-NOT: __sqrtd2{{.*}}<2 x double>
244 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
245 %tmp = trunc i64 %iv to i32
246 %conv = sitofp i32 %tmp to double
247 %call = tail call double @sqrt(double %conv)
248 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
249 store double %call, double* %arrayidx, align 4
250 %iv.next = add nuw nsw i64 %iv, 1
251 %exitcond = icmp eq i64 %iv.next, 1000
252 br i1 %exitcond, label %for.end, label %for.body
258 define void @sqrt_f32(float* nocapture %varray) {
259 ; CHECK-LABEL: @sqrt_f32(
260 ; CHECK-NOT: __sqrtf4{{.*}}<4 x float>
267 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
268 %tmp = trunc i64 %iv to i32
269 %conv = sitofp i32 %tmp to float
270 %call = tail call float @sqrtf(float %conv)
271 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
272 store float %call, float* %arrayidx, align 4
273 %iv.next = add nuw nsw i64 %iv, 1
274 %exitcond = icmp eq i64 %iv.next, 1000
275 br i1 %exitcond, label %for.end, label %for.body
281 define void @exp_f64(double* nocapture %varray) {
282 ; CHECK-LABEL: @exp_f64(
283 ; CHECK: __expd2{{.*}}<2 x double>
290 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
291 %tmp = trunc i64 %iv to i32
292 %conv = sitofp i32 %tmp to double
293 %call = tail call double @exp(double %conv)
294 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
295 store double %call, double* %arrayidx, align 4
296 %iv.next = add nuw nsw i64 %iv, 1
297 %exitcond = icmp eq i64 %iv.next, 1000
298 br i1 %exitcond, label %for.end, label %for.body
304 define void @exp_f64_intrinsic(double* nocapture %varray) {
305 ; CHECK-LABEL: @exp_f64_intrinsic(
306 ; CHECK: __expd2{{.*}}<2 x double>
313 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
314 %tmp = trunc i64 %iv to i32
315 %conv = sitofp i32 %tmp to double
316 %call = tail call double @llvm.exp.f64(double %conv)
317 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
318 store double %call, double* %arrayidx, align 4
319 %iv.next = add nuw nsw i64 %iv, 1
320 %exitcond = icmp eq i64 %iv.next, 1000
321 br i1 %exitcond, label %for.end, label %for.body
327 define void @exp_f32(float* nocapture %varray) {
328 ; CHECK-LABEL: @exp_f32(
329 ; CHECK: __expf4{{.*}}<4 x float>
336 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
337 %tmp = trunc i64 %iv to i32
338 %conv = sitofp i32 %tmp to float
339 %call = tail call float @expf(float %conv)
340 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
341 store float %call, float* %arrayidx, align 4
342 %iv.next = add nuw nsw i64 %iv, 1
343 %exitcond = icmp eq i64 %iv.next, 1000
344 br i1 %exitcond, label %for.end, label %for.body
350 define void @exp_f32_intrinsic(float* nocapture %varray) {
351 ; CHECK-LABEL: @exp_f32_intrinsic(
352 ; CHECK: __expf4{{.*}}<4 x float>
359 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
360 %tmp = trunc i64 %iv to i32
361 %conv = sitofp i32 %tmp to float
362 %call = tail call float @llvm.exp.f32(float %conv)
363 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
364 store float %call, float* %arrayidx, align 4
365 %iv.next = add nuw nsw i64 %iv, 1
366 %exitcond = icmp eq i64 %iv.next, 1000
367 br i1 %exitcond, label %for.end, label %for.body
373 define void @exp2_f64(double* nocapture %varray) {
374 ; CHECK-LABEL: @exp2_f64(
375 ; CHECK: __exp2d2{{.*}}<2 x double>
382 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
383 %tmp = trunc i64 %iv to i32
384 %conv = sitofp i32 %tmp to double
385 %call = tail call double @exp2(double %conv)
386 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
387 store double %call, double* %arrayidx, align 4
388 %iv.next = add nuw nsw i64 %iv, 1
389 %exitcond = icmp eq i64 %iv.next, 1000
390 br i1 %exitcond, label %for.end, label %for.body
396 define void @exp2_f64_intrinsic(double* nocapture %varray) {
397 ; CHECK-LABEL: @exp2_f64_intrinsic(
398 ; CHECK: __exp2d2{{.*}}<2 x double>
405 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
406 %tmp = trunc i64 %iv to i32
407 %conv = sitofp i32 %tmp to double
408 %call = tail call double @llvm.exp2.f64(double %conv)
409 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
410 store double %call, double* %arrayidx, align 4
411 %iv.next = add nuw nsw i64 %iv, 1
412 %exitcond = icmp eq i64 %iv.next, 1000
413 br i1 %exitcond, label %for.end, label %for.body
419 define void @exp2_f32(float* nocapture %varray) {
420 ; CHECK-LABEL: @exp2_f32(
421 ; CHECK: __exp2f4{{.*}}<4 x float>
428 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
429 %tmp = trunc i64 %iv to i32
430 %conv = sitofp i32 %tmp to float
431 %call = tail call float @exp2f(float %conv)
432 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
433 store float %call, float* %arrayidx, align 4
434 %iv.next = add nuw nsw i64 %iv, 1
435 %exitcond = icmp eq i64 %iv.next, 1000
436 br i1 %exitcond, label %for.end, label %for.body
442 define void @exp2_f32_intrinsic(float* nocapture %varray) {
443 ; CHECK-LABEL: @exp2_f32_intrinsic(
444 ; CHECK: __exp2f4{{.*}}<4 x float>
451 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
452 %tmp = trunc i64 %iv to i32
453 %conv = sitofp i32 %tmp to float
454 %call = tail call float @llvm.exp2.f32(float %conv)
455 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
456 store float %call, float* %arrayidx, align 4
457 %iv.next = add nuw nsw i64 %iv, 1
458 %exitcond = icmp eq i64 %iv.next, 1000
459 br i1 %exitcond, label %for.end, label %for.body
465 define void @expm1_f64(double* nocapture %varray) {
466 ; CHECK-LABEL: @expm1_f64(
467 ; CHECK: __expm1d2{{.*}}<2 x double>
474 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
475 %tmp = trunc i64 %iv to i32
476 %conv = sitofp i32 %tmp to double
477 %call = tail call double @expm1(double %conv)
478 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
479 store double %call, double* %arrayidx, align 4
480 %iv.next = add nuw nsw i64 %iv, 1
481 %exitcond = icmp eq i64 %iv.next, 1000
482 br i1 %exitcond, label %for.end, label %for.body
488 define void @expm1_f32(float* nocapture %varray) {
489 ; CHECK-LABEL: @expm1_f32(
490 ; CHECK: __expm1f4{{.*}}<4 x float>
497 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
498 %tmp = trunc i64 %iv to i32
499 %conv = sitofp i32 %tmp to float
500 %call = tail call float @expm1f(float %conv)
501 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
502 store float %call, float* %arrayidx, align 4
503 %iv.next = add nuw nsw i64 %iv, 1
504 %exitcond = icmp eq i64 %iv.next, 1000
505 br i1 %exitcond, label %for.end, label %for.body
511 define void @log_f64(double* nocapture %varray) {
512 ; CHECK-LABEL: @log_f64(
513 ; CHECK: __logd2{{.*}}<2 x double>
520 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
521 %tmp = trunc i64 %iv to i32
522 %conv = sitofp i32 %tmp to double
523 %call = tail call double @log(double %conv)
524 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
525 store double %call, double* %arrayidx, align 4
526 %iv.next = add nuw nsw i64 %iv, 1
527 %exitcond = icmp eq i64 %iv.next, 1000
528 br i1 %exitcond, label %for.end, label %for.body
534 define void @log_f64_intrinsic(double* nocapture %varray) {
535 ; CHECK-LABEL: @log_f64_intrinsic(
536 ; CHECK: __logd2{{.*}}<2 x double>
543 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
544 %tmp = trunc i64 %iv to i32
545 %conv = sitofp i32 %tmp to double
546 %call = tail call double @llvm.log.f64(double %conv)
547 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
548 store double %call, double* %arrayidx, align 4
549 %iv.next = add nuw nsw i64 %iv, 1
550 %exitcond = icmp eq i64 %iv.next, 1000
551 br i1 %exitcond, label %for.end, label %for.body
557 define void @log_f32(float* nocapture %varray) {
558 ; CHECK-LABEL: @log_f32(
559 ; CHECK: __logf4{{.*}}<4 x float>
566 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
567 %tmp = trunc i64 %iv to i32
568 %conv = sitofp i32 %tmp to float
569 %call = tail call float @logf(float %conv)
570 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
571 store float %call, float* %arrayidx, align 4
572 %iv.next = add nuw nsw i64 %iv, 1
573 %exitcond = icmp eq i64 %iv.next, 1000
574 br i1 %exitcond, label %for.end, label %for.body
580 define void @log_f32_intrinsic(float* nocapture %varray) {
581 ; CHECK-LABEL: @log_f32_intrinsic(
582 ; CHECK: __logf4{{.*}}<4 x float>
589 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
590 %tmp = trunc i64 %iv to i32
591 %conv = sitofp i32 %tmp to float
592 %call = tail call float @llvm.log.f32(float %conv)
593 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
594 store float %call, float* %arrayidx, align 4
595 %iv.next = add nuw nsw i64 %iv, 1
596 %exitcond = icmp eq i64 %iv.next, 1000
597 br i1 %exitcond, label %for.end, label %for.body
603 define void @log1p_f64(double* nocapture %varray) {
604 ; CHECK-LABEL: @log1p_f64(
605 ; CHECK: __log1pd2{{.*}}<2 x double>
612 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
613 %tmp = trunc i64 %iv to i32
614 %conv = sitofp i32 %tmp to double
615 %call = tail call double @log1p(double %conv)
616 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
617 store double %call, double* %arrayidx, align 4
618 %iv.next = add nuw nsw i64 %iv, 1
619 %exitcond = icmp eq i64 %iv.next, 1000
620 br i1 %exitcond, label %for.end, label %for.body
626 define void @log1p_f32(float* nocapture %varray) {
627 ; CHECK-LABEL: @log1p_f32(
628 ; CHECK: __log1pf4{{.*}}<4 x float>
635 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
636 %tmp = trunc i64 %iv to i32
637 %conv = sitofp i32 %tmp to float
638 %call = tail call float @log1pf(float %conv)
639 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
640 store float %call, float* %arrayidx, align 4
641 %iv.next = add nuw nsw i64 %iv, 1
642 %exitcond = icmp eq i64 %iv.next, 1000
643 br i1 %exitcond, label %for.end, label %for.body
649 define void @log10_f64(double* nocapture %varray) {
650 ; CHECK-LABEL: @log10_f64(
651 ; CHECK: __log10d2(<2 x double>
658 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
659 %tmp = trunc i64 %iv to i32
660 %conv = sitofp i32 %tmp to double
661 %call = tail call double @log10(double %conv)
662 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
663 store double %call, double* %arrayidx, align 4
664 %iv.next = add nuw nsw i64 %iv, 1
665 %exitcond = icmp eq i64 %iv.next, 1000
666 br i1 %exitcond, label %for.end, label %for.body
672 define void @log10_f64_intrinsic(double* nocapture %varray) {
673 ; CHECK-LABEL: @log10_f64_intrinsic(
674 ; CHECK: __log10d2{{.*}}<2 x double>
681 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
682 %tmp = trunc i64 %iv to i32
683 %conv = sitofp i32 %tmp to double
684 %call = tail call double @llvm.log10.f64(double %conv)
685 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
686 store double %call, double* %arrayidx, align 4
687 %iv.next = add nuw nsw i64 %iv, 1
688 %exitcond = icmp eq i64 %iv.next, 1000
689 br i1 %exitcond, label %for.end, label %for.body
695 define void @log10_f32(float* nocapture %varray) {
696 ; CHECK-LABEL: @log10_f32(
697 ; CHECK: __log10f4{{.*}}<4 x float>
704 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
705 %tmp = trunc i64 %iv to i32
706 %conv = sitofp i32 %tmp to float
707 %call = tail call float @log10f(float %conv)
708 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
709 store float %call, float* %arrayidx, align 4
710 %iv.next = add nuw nsw i64 %iv, 1
711 %exitcond = icmp eq i64 %iv.next, 1000
712 br i1 %exitcond, label %for.end, label %for.body
718 define void @log10_f32_intrinsic(float* nocapture %varray) {
719 ; CHECK-LABEL: @log10_f32_intrinsic(
720 ; CHECK: __log10f4{{.*}}<4 x float>
727 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
728 %tmp = trunc i64 %iv to i32
729 %conv = sitofp i32 %tmp to float
730 %call = tail call float @llvm.log10.f32(float %conv)
731 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
732 store float %call, float* %arrayidx, align 4
733 %iv.next = add nuw nsw i64 %iv, 1
734 %exitcond = icmp eq i64 %iv.next, 1000
735 br i1 %exitcond, label %for.end, label %for.body
741 define void @log2_f64(double* nocapture %varray) {
742 ; CHECK-LABEL: @log2_f64(
743 ; CHECK: __log2d2(<2 x double>
750 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
751 %tmp = trunc i64 %iv to i32
752 %conv = sitofp i32 %tmp to double
753 %call = tail call double @log2(double %conv)
754 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
755 store double %call, double* %arrayidx, align 4
756 %iv.next = add nuw nsw i64 %iv, 1
757 %exitcond = icmp eq i64 %iv.next, 1000
758 br i1 %exitcond, label %for.end, label %for.body
764 define void @log2_f64_intrinsic(double* nocapture %varray) {
765 ; CHECK-LABEL: @log2_f64_intrinsic(
766 ; CHECK: __log2d2{{.*}}<2 x double>
773 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
774 %tmp = trunc i64 %iv to i32
775 %conv = sitofp i32 %tmp to double
776 %call = tail call double @llvm.log2.f64(double %conv)
777 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
778 store double %call, double* %arrayidx, align 4
779 %iv.next = add nuw nsw i64 %iv, 1
780 %exitcond = icmp eq i64 %iv.next, 1000
781 br i1 %exitcond, label %for.end, label %for.body
787 define void @log2_f32(float* nocapture %varray) {
788 ; CHECK-LABEL: @log2_f32(
789 ; CHECK: __log2f4{{.*}}<4 x float>
796 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
797 %tmp = trunc i64 %iv to i32
798 %conv = sitofp i32 %tmp to float
799 %call = tail call float @log2f(float %conv)
800 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
801 store float %call, float* %arrayidx, align 4
802 %iv.next = add nuw nsw i64 %iv, 1
803 %exitcond = icmp eq i64 %iv.next, 1000
804 br i1 %exitcond, label %for.end, label %for.body
810 define void @log2_f32_intrinsic(float* nocapture %varray) {
811 ; CHECK-LABEL: @log2_f32_intrinsic(
812 ; CHECK: __log2f4{{.*}}<4 x float>
819 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
820 %tmp = trunc i64 %iv to i32
821 %conv = sitofp i32 %tmp to float
822 %call = tail call float @llvm.log2.f32(float %conv)
823 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
824 store float %call, float* %arrayidx, align 4
825 %iv.next = add nuw nsw i64 %iv, 1
826 %exitcond = icmp eq i64 %iv.next, 1000
827 br i1 %exitcond, label %for.end, label %for.body
833 define void @sin_f64(double* nocapture %varray) {
834 ; CHECK-LABEL: @sin_f64(
835 ; CHECK: __sind2{{.*}}<2 x double>
842 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
843 %tmp = trunc i64 %iv to i32
844 %conv = sitofp i32 %tmp to double
845 %call = tail call double @sin(double %conv)
846 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
847 store double %call, double* %arrayidx, align 4
848 %iv.next = add nuw nsw i64 %iv, 1
849 %exitcond = icmp eq i64 %iv.next, 1000
850 br i1 %exitcond, label %for.end, label %for.body
856 define void @sin_f64_intrinsic(double* nocapture %varray) {
857 ; CHECK-LABEL: @sin_f64_intrinsic(
858 ; CHECK: __sind2{{.*}}<2 x double>
865 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
866 %tmp = trunc i64 %iv to i32
867 %conv = sitofp i32 %tmp to double
868 %call = tail call double @llvm.sin.f64(double %conv)
869 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
870 store double %call, double* %arrayidx, align 4
871 %iv.next = add nuw nsw i64 %iv, 1
872 %exitcond = icmp eq i64 %iv.next, 1000
873 br i1 %exitcond, label %for.end, label %for.body
879 define void @sin_f32(float* nocapture %varray) {
880 ; CHECK-LABEL: @sin_f32(
881 ; CHECK: __sinf4{{.*}}<4 x float>
888 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
889 %tmp = trunc i64 %iv to i32
890 %conv = sitofp i32 %tmp to float
891 %call = tail call float @sinf(float %conv)
892 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
893 store float %call, float* %arrayidx, align 4
894 %iv.next = add nuw nsw i64 %iv, 1
895 %exitcond = icmp eq i64 %iv.next, 1000
896 br i1 %exitcond, label %for.end, label %for.body
902 define void @sin_f32_intrinsic(float* nocapture %varray) {
903 ; CHECK-LABEL: @sin_f32_intrinsic(
904 ; CHECK: __sinf4{{.*}}<4 x float>
911 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
912 %tmp = trunc i64 %iv to i32
913 %conv = sitofp i32 %tmp to float
914 %call = tail call float @llvm.sin.f32(float %conv)
915 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
916 store float %call, float* %arrayidx, align 4
917 %iv.next = add nuw nsw i64 %iv, 1
918 %exitcond = icmp eq i64 %iv.next, 1000
919 br i1 %exitcond, label %for.end, label %for.body
925 define void @cos_f64(double* nocapture %varray) {
926 ; CHECK-LABEL: @cos_f64(
927 ; CHECK: __cosd2{{.*}}<2 x double>
934 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
935 %tmp = trunc i64 %iv to i32
936 %conv = sitofp i32 %tmp to double
937 %call = tail call double @cos(double %conv)
938 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
939 store double %call, double* %arrayidx, align 4
940 %iv.next = add nuw nsw i64 %iv, 1
941 %exitcond = icmp eq i64 %iv.next, 1000
942 br i1 %exitcond, label %for.end, label %for.body
948 define void @cos_f64_intrinsic(double* nocapture %varray) {
949 ; CHECK-LABEL: @cos_f64_intrinsic(
950 ; CHECK: [[TMP5:%.*]] = call <2 x double> @__cosd2(<2 x double> [[TMP4:%.*]])
957 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
958 %tmp = trunc i64 %iv to i32
959 %conv = sitofp i32 %tmp to double
960 %call = tail call double @llvm.cos.f64(double %conv)
961 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
962 store double %call, double* %arrayidx, align 4
963 %iv.next = add nuw nsw i64 %iv, 1
964 %exitcond = icmp eq i64 %iv.next, 1000
965 br i1 %exitcond, label %for.end, label %for.body
971 define void @cos_f32(float* nocapture %varray) {
972 ; CHECK-LABEL: @cos_f32(
973 ; CHECK: __cosf4{{.*}}<4 x float>
980 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
981 %tmp = trunc i64 %iv to i32
982 %conv = sitofp i32 %tmp to float
983 %call = tail call float @cosf(float %conv)
984 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
985 store float %call, float* %arrayidx, align 4
986 %iv.next = add nuw nsw i64 %iv, 1
987 %exitcond = icmp eq i64 %iv.next, 1000
988 br i1 %exitcond, label %for.end, label %for.body
994 define void @cos_f32_intrinsic(float* nocapture %varray) {
995 ; CHECK-LABEL: @cos_f32_intrinsic(
996 ; CHECK: __cosf4{{.*}}<4 x float>
1003 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1004 %tmp = trunc i64 %iv to i32
1005 %conv = sitofp i32 %tmp to float
1006 %call = tail call float @llvm.cos.f32(float %conv)
1007 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1008 store float %call, float* %arrayidx, align 4
1009 %iv.next = add nuw nsw i64 %iv, 1
1010 %exitcond = icmp eq i64 %iv.next, 1000
1011 br i1 %exitcond, label %for.end, label %for.body
1017 define void @tan_f64(double* nocapture %varray) {
1018 ; CHECK-LABEL: @tan_f64(
1019 ; CHECK: __tand2{{.*}}<2 x double>
1026 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1027 %tmp = trunc i64 %iv to i32
1028 %conv = sitofp i32 %tmp to double
1029 %call = tail call double @tan(double %conv)
1030 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1031 store double %call, double* %arrayidx, align 4
1032 %iv.next = add nuw nsw i64 %iv, 1
1033 %exitcond = icmp eq i64 %iv.next, 1000
1034 br i1 %exitcond, label %for.end, label %for.body
1040 define void @tan_f32(float* nocapture %varray) {
1041 ; CHECK-LABEL: @tan_f32(
1042 ; CHECK: __tanf4{{.*}}<4 x float>
1049 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1050 %tmp = trunc i64 %iv to i32
1051 %conv = sitofp i32 %tmp to float
1052 %call = tail call float @tanf(float %conv)
1053 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1054 store float %call, float* %arrayidx, align 4
1055 %iv.next = add nuw nsw i64 %iv, 1
1056 %exitcond = icmp eq i64 %iv.next, 1000
1057 br i1 %exitcond, label %for.end, label %for.body
1063 define void @asin_f64(double* nocapture %varray) {
1064 ; CHECK-LABEL: @asin_f64(
1065 ; CHECK: __asind2{{.*}}<2 x double>
1072 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1073 %tmp = trunc i64 %iv to i32
1074 %conv = sitofp i32 %tmp to double
1075 %call = tail call double @asin(double %conv)
1076 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1077 store double %call, double* %arrayidx, align 4
1078 %iv.next = add nuw nsw i64 %iv, 1
1079 %exitcond = icmp eq i64 %iv.next, 1000
1080 br i1 %exitcond, label %for.end, label %for.body
1086 define void @asin_f32(float* nocapture %varray) {
1087 ; CHECK-LABEL: @asin_f32(
1088 ; CHECK: __asinf4{{.*}}<4 x float>
1095 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1096 %tmp = trunc i64 %iv to i32
1097 %conv = sitofp i32 %tmp to float
1098 %call = tail call float @asinf(float %conv)
1099 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1100 store float %call, float* %arrayidx, align 4
1101 %iv.next = add nuw nsw i64 %iv, 1
1102 %exitcond = icmp eq i64 %iv.next, 1000
1103 br i1 %exitcond, label %for.end, label %for.body
1109 define void @acos_f64(double* nocapture %varray) {
1110 ; CHECK-LABEL: @acos_f64(
1111 ; CHECK: __acosd2{{.*}}<2 x double>
1118 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1119 %tmp = trunc i64 %iv to i32
1120 %conv = sitofp i32 %tmp to double
1121 %call = tail call double @acos(double %conv)
1122 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1123 store double %call, double* %arrayidx, align 4
1124 %iv.next = add nuw nsw i64 %iv, 1
1125 %exitcond = icmp eq i64 %iv.next, 1000
1126 br i1 %exitcond, label %for.end, label %for.body
1132 define void @acos_f32(float* nocapture %varray) {
1133 ; CHECK-LABEL: @acos_f32(
1134 ; CHECK: __acosf4{{.*}}<4 x float>
1141 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1142 %tmp = trunc i64 %iv to i32
1143 %conv = sitofp i32 %tmp to float
1144 %call = tail call float @acosf(float %conv)
1145 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1146 store float %call, float* %arrayidx, align 4
1147 %iv.next = add nuw nsw i64 %iv, 1
1148 %exitcond = icmp eq i64 %iv.next, 1000
1149 br i1 %exitcond, label %for.end, label %for.body
1155 define void @atan_f64(double* nocapture %varray) {
1156 ; CHECK-LABEL: @atan_f64(
1157 ; CHECK: __atand2{{.*}}<2 x double>
1164 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1165 %tmp = trunc i64 %iv to i32
1166 %conv = sitofp i32 %tmp to double
1167 %call = tail call double @atan(double %conv)
1168 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1169 store double %call, double* %arrayidx, align 4
1170 %iv.next = add nuw nsw i64 %iv, 1
1171 %exitcond = icmp eq i64 %iv.next, 1000
1172 br i1 %exitcond, label %for.end, label %for.body
1178 define void @atan_f32(float* nocapture %varray) {
1179 ; CHECK-LABEL: @atan_f32(
1180 ; CHECK: __atanf4{{.*}}<4 x float>
1187 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1188 %tmp = trunc i64 %iv to i32
1189 %conv = sitofp i32 %tmp to float
1190 %call = tail call float @atanf(float %conv)
1191 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1192 store float %call, float* %arrayidx, align 4
1193 %iv.next = add nuw nsw i64 %iv, 1
1194 %exitcond = icmp eq i64 %iv.next, 1000
1195 br i1 %exitcond, label %for.end, label %for.body
1201 define void @atan2_f64(double* nocapture %varray) {
1202 ; CHECK-LABEL: @atan2_f64(
1203 ; CHECK: __atan2d2{{.*}}<2 x double>
1210 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1211 %tmp = trunc i64 %iv to i32
1212 %conv = sitofp i32 %tmp to double
1213 %call = tail call double @atan2(double %conv)
1214 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1215 store double %call, double* %arrayidx, align 4
1216 %iv.next = add nuw nsw i64 %iv, 1
1217 %exitcond = icmp eq i64 %iv.next, 1000
1218 br i1 %exitcond, label %for.end, label %for.body
1224 define void @atan2_f32(float* nocapture %varray) {
1225 ; CHECK-LABEL: @atan2_f32(
1226 ; CHECK: __atan2f4{{.*}}<4 x float>
1233 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1234 %tmp = trunc i64 %iv to i32
1235 %conv = sitofp i32 %tmp to float
1236 %call = tail call float @atan2f(float %conv)
1237 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1238 store float %call, float* %arrayidx, align 4
1239 %iv.next = add nuw nsw i64 %iv, 1
1240 %exitcond = icmp eq i64 %iv.next, 1000
1241 br i1 %exitcond, label %for.end, label %for.body
1247 define void @sinh_f64(double* nocapture %varray) {
1248 ; CHECK-LABEL: @sinh_f64(
1249 ; CHECK: __sinhd2{{.*}}<2 x double>
1256 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1257 %tmp = trunc i64 %iv to i32
1258 %conv = sitofp i32 %tmp to double
1259 %call = tail call double @sinh(double %conv)
1260 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1261 store double %call, double* %arrayidx, align 4
1262 %iv.next = add nuw nsw i64 %iv, 1
1263 %exitcond = icmp eq i64 %iv.next, 1000
1264 br i1 %exitcond, label %for.end, label %for.body
1270 define void @sinh_f32(float* nocapture %varray) {
1271 ; CHECK-LABEL: @sinh_f32(
1272 ; CHECK: __sinhf4{{.*}}<4 x float>
1279 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1280 %tmp = trunc i64 %iv to i32
1281 %conv = sitofp i32 %tmp to float
1282 %call = tail call float @sinhf(float %conv)
1283 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1284 store float %call, float* %arrayidx, align 4
1285 %iv.next = add nuw nsw i64 %iv, 1
1286 %exitcond = icmp eq i64 %iv.next, 1000
1287 br i1 %exitcond, label %for.end, label %for.body
1293 define void @cosh_f64(double* nocapture %varray) {
1294 ; CHECK-LABEL: @cosh_f64(
1295 ; CHECK: __coshd2{{.*}}<2 x double>
1302 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1303 %tmp = trunc i64 %iv to i32
1304 %conv = sitofp i32 %tmp to double
1305 %call = tail call double @cosh(double %conv)
1306 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1307 store double %call, double* %arrayidx, align 4
1308 %iv.next = add nuw nsw i64 %iv, 1
1309 %exitcond = icmp eq i64 %iv.next, 1000
1310 br i1 %exitcond, label %for.end, label %for.body
1316 define void @cosh_f32(float* nocapture %varray) {
1317 ; CHECK-LABEL: @cosh_f32(
1318 ; CHECK: __coshf4{{.*}}<4 x float>
1325 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1326 %tmp = trunc i64 %iv to i32
1327 %conv = sitofp i32 %tmp to float
1328 %call = tail call float @coshf(float %conv)
1329 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1330 store float %call, float* %arrayidx, align 4
1331 %iv.next = add nuw nsw i64 %iv, 1
1332 %exitcond = icmp eq i64 %iv.next, 1000
1333 br i1 %exitcond, label %for.end, label %for.body
1339 define void @tanh_f64(double* nocapture %varray) {
1340 ; CHECK-LABEL: @tanh_f64(
1341 ; CHECK: __tanhd2{{.*}}<2 x double>
1348 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1349 %tmp = trunc i64 %iv to i32
1350 %conv = sitofp i32 %tmp to double
1351 %call = tail call double @tanh(double %conv)
1352 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1353 store double %call, double* %arrayidx, align 4
1354 %iv.next = add nuw nsw i64 %iv, 1
1355 %exitcond = icmp eq i64 %iv.next, 1000
1356 br i1 %exitcond, label %for.end, label %for.body
1362 define void @tanh_f32(float* nocapture %varray) {
1363 ; CHECK-LABEL: @tanh_f32(
1364 ; CHECK: __tanhf4{{.*}}<4 x float>
1371 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1372 %tmp = trunc i64 %iv to i32
1373 %conv = sitofp i32 %tmp to float
1374 %call = tail call float @tanhf(float %conv)
1375 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1376 store float %call, float* %arrayidx, align 4
1377 %iv.next = add nuw nsw i64 %iv, 1
1378 %exitcond = icmp eq i64 %iv.next, 1000
1379 br i1 %exitcond, label %for.end, label %for.body
1385 define void @asinh_f64(double* nocapture %varray) {
1386 ; CHECK-LABEL: @asinh_f64(
1387 ; CHECK: __asinhd2{{.*}}<2 x double>
1394 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1395 %tmp = trunc i64 %iv to i32
1396 %conv = sitofp i32 %tmp to double
1397 %call = tail call double @asinh(double %conv)
1398 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1399 store double %call, double* %arrayidx, align 4
1400 %iv.next = add nuw nsw i64 %iv, 1
1401 %exitcond = icmp eq i64 %iv.next, 1000
1402 br i1 %exitcond, label %for.end, label %for.body
1408 define void @asinh_f32(float* nocapture %varray) {
1409 ; CHECK-LABEL: @asinh_f32(
1410 ; CHECK: __asinhf4{{.*}}<4 x float>
1417 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1418 %tmp = trunc i64 %iv to i32
1419 %conv = sitofp i32 %tmp to float
1420 %call = tail call float @asinhf(float %conv)
1421 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1422 store float %call, float* %arrayidx, align 4
1423 %iv.next = add nuw nsw i64 %iv, 1
1424 %exitcond = icmp eq i64 %iv.next, 1000
1425 br i1 %exitcond, label %for.end, label %for.body
1431 define void @acosh_f64(double* nocapture %varray) {
1432 ; CHECK-LABEL: @acosh_f64(
1433 ; CHECK: __acoshd2{{.*}}<2 x double>
1440 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1441 %tmp = trunc i64 %iv to i32
1442 %conv = sitofp i32 %tmp to double
1443 %call = tail call double @acosh(double %conv)
1444 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1445 store double %call, double* %arrayidx, align 4
1446 %iv.next = add nuw nsw i64 %iv, 1
1447 %exitcond = icmp eq i64 %iv.next, 1000
1448 br i1 %exitcond, label %for.end, label %for.body
1454 define void @acosh_f32(float* nocapture %varray) {
1455 ; CHECK-LABEL: @acosh_f32(
1456 ; CHECK: __acoshf4{{.*}}<4 x float>
1463 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1464 %tmp = trunc i64 %iv to i32
1465 %conv = sitofp i32 %tmp to float
1466 %call = tail call float @acoshf(float %conv)
1467 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1468 store float %call, float* %arrayidx, align 4
1469 %iv.next = add nuw nsw i64 %iv, 1
1470 %exitcond = icmp eq i64 %iv.next, 1000
1471 br i1 %exitcond, label %for.end, label %for.body
1477 define void @atanh_f64(double* nocapture %varray) {
1478 ; CHECK-LABEL: @atanh_f64(
1479 ; CHECK: __atanhd2{{.*}}<2 x double>
1486 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1487 %tmp = trunc i64 %iv to i32
1488 %conv = sitofp i32 %tmp to double
1489 %call = tail call double @atanh(double %conv)
1490 %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv
1491 store double %call, double* %arrayidx, align 4
1492 %iv.next = add nuw nsw i64 %iv, 1
1493 %exitcond = icmp eq i64 %iv.next, 1000
1494 br i1 %exitcond, label %for.end, label %for.body
1500 define void @atanh_f32(float* nocapture %varray) {
1501 ; CHECK-LABEL: @atanh_f32(
1502 ; CHECK: __atanhf4{{.*}}<4 x float>
1509 %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
1510 %tmp = trunc i64 %iv to i32
1511 %conv = sitofp i32 %tmp to float
1512 %call = tail call float @atanhf(float %conv)
1513 %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv
1514 store float %call, float* %arrayidx, align 4
1515 %iv.next = add nuw nsw i64 %iv, 1
1516 %exitcond = icmp eq i64 %iv.next, 1000
1517 br i1 %exitcond, label %for.end, label %for.body
1523 attributes #0 = { nounwind }