[InstCombine] Signed saturation tests. NFC
[llvm-complete.git] / test / Transforms / LoopVectorize / PowerPC / massv-calls.ll
bloba08c23b5b2dd8b798a18cfd243b22e3b617822f0
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>
94 ; CHECK: ret void
96 entry:
97   br label %for.body
99 for.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
110 for.end:
111   ret void
114 define void @cbrt_f32(float* nocapture %varray) {
115 ; CHECK-LABEL: @cbrt_f32(
116 ; CHECK: __cbrtf4_massv{{.*}}<4 x float>
117 ; CHECK: ret void
119 entry:
120   br label %for.body
122 for.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
133 for.end:
134   ret void
137 define 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
142 entry:
143   br label %for.body
145 for.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
158 for.end:
159   ret void
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>
165 ; CHECK: ret void
167 entry:
168   br label %for.body
170 for.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
183 for.end:
184   ret void
187 define 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
192 entry:
193   br label %for.body
195 for.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
208 for.end:
209   ret void
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>
215 ; CHECK: ret void
217 entry:
218   br label %for.body
220 for.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
233 for.end:
234   ret void
237 define void @sqrt_f64(double* nocapture %varray) {
238 ; CHECK-LABEL: @sqrt_f64(
239 ; CHECK: __sqrtd2_massv{{.*}}<2 x double>
240 ; CHECK: ret void
242 entry:
243   br label %for.body
245 for.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
256 for.end:
257   ret void
260 define void @sqrt_f32(float* nocapture %varray) {
261 ; CHECK-LABEL: @sqrt_f32(
262 ; CHECK: __sqrtf4_massv{{.*}}<4 x float>
263 ; CHECK: ret void
265 entry:
266   br label %for.body
268 for.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
279 for.end:
280   ret void
283 define void @exp_f64(double* nocapture %varray) {
284 ; CHECK-LABEL: @exp_f64(
285 ; CHECK: __expd2_massv{{.*}}<2 x double>
286 ; CHECK: ret void
288 entry:
289   br label %for.body
291 for.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
302 for.end:
303   ret void
306 define void @exp_f64_intrinsic(double* nocapture %varray) {
307 ; CHECK-LABEL: @exp_f64_intrinsic(
308 ; CHECK: __expd2_massv{{.*}}<2 x double>
309 ; CHECK: ret void
311 entry:
312   br label %for.body
314 for.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
325 for.end:
326   ret void
329 define void @exp_f32(float* nocapture %varray) {
330 ; CHECK-LABEL: @exp_f32(
331 ; CHECK: __expf4_massv{{.*}}<4 x float>
332 ; CHECK: ret void
334 entry:
335   br label %for.body
337 for.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
348 for.end:
349   ret void
352 define void @exp_f32_intrinsic(float* nocapture %varray) {
353 ; CHECK-LABEL: @exp_f32_intrinsic(
354 ; CHECK: __expf4_massv{{.*}}<4 x float>
355 ; CHECK: ret void
357 entry:
358   br label %for.body
360 for.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
371 for.end:
372   ret void
375 define void @exp2_f64(double* nocapture %varray) {
376 ; CHECK-LABEL: @exp2_f64(
377 ; CHECK: __exp2d2_massv{{.*}}<2 x double>
378 ; CHECK:  ret void
380 entry:
381   br label %for.body
383 for.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
394 for.end:
395   ret void
398 define void @exp2_f64_intrinsic(double* nocapture %varray) {
399 ; CHECK-LABEL: @exp2_f64_intrinsic(
400 ; CHECK: __exp2d2_massv{{.*}}<2 x double>
401 ; CHECK: ret void
403 entry:
404   br label %for.body
406 for.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
417 for.end:
418   ret void
421 define void @exp2_f32(float* nocapture %varray) {
422 ; CHECK-LABEL: @exp2_f32(
423 ; CHECK: __exp2f4_massv{{.*}}<4 x float>
424 ; CHECK: ret void
426 entry:
427   br label %for.body
429 for.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
440 for.end:
441   ret void
444 define void @exp2_f32_intrinsic(float* nocapture %varray) {
445 ; CHECK-LABEL: @exp2_f32_intrinsic(
446 ; CHECK: __exp2f4_massv{{.*}}<4 x float>
447 ; CHECK: ret void
449 entry:
450   br label %for.body
452 for.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
463 for.end:
464   ret void
467 define void @expm1_f64(double* nocapture %varray) {
468 ; CHECK-LABEL: @expm1_f64(
469 ; CHECK: __expm1d2_massv{{.*}}<2 x double>
470 ; CHECK:  ret void
472 entry:
473   br label %for.body
475 for.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
486 for.end:
487   ret void
490 define void @expm1_f32(float* nocapture %varray) {
491 ; CHECK-LABEL: @expm1_f32(
492 ; CHECK: __expm1f4_massv{{.*}}<4 x float>
493 ; CHECK: ret void
495 entry:
496   br label %for.body
498 for.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
509 for.end:
510   ret void
513 define void @log_f64(double* nocapture %varray) {
514 ; CHECK-LABEL: @log_f64(
515 ; CHECK: __logd2_massv{{.*}}<2 x double>
516 ; CHECK: ret void
518 entry:
519   br label %for.body
521 for.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
532 for.end:
533   ret void
536 define void @log_f64_intrinsic(double* nocapture %varray) {
537 ; CHECK-LABEL: @log_f64_intrinsic(
538 ; CHECK: __logd2_massv{{.*}}<2 x double>
539 ; CHECK: ret void
541 entry:
542   br label %for.body
544 for.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
555 for.end:
556   ret void
559 define void @log_f32(float* nocapture %varray) {
560 ; CHECK-LABEL: @log_f32(
561 ; CHECK: __logf4_massv{{.*}}<4 x float>
562 ; CHECK: ret void
564 entry:
565   br label %for.body
567 for.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
578 for.end:
579   ret void
582 define void @log_f32_intrinsic(float* nocapture %varray) {
583 ; CHECK-LABEL: @log_f32_intrinsic(
584 ; CHECK: __logf4_massv{{.*}}<4 x float>
585 ; CHECK: ret void
587 entry:
588   br label %for.body
590 for.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
601 for.end:
602   ret void
605 define void @log1p_f64(double* nocapture %varray) {
606 ; CHECK-LABEL: @log1p_f64(
607 ; CHECK: __log1pd2_massv{{.*}}<2 x double>
608 ; CHECK: ret void
610 entry:
611   br label %for.body
613 for.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
624 for.end:
625   ret void
628 define void @log1p_f32(float* nocapture %varray) {
629 ; CHECK-LABEL: @log1p_f32(
630 ; CHECK: __log1pf4_massv{{.*}}<4 x float>
631 ; CHECK: ret void
633 entry:
634   br label %for.body
636 for.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
647 for.end:
648   ret void
651 define void @log10_f64(double* nocapture %varray) {
652 ; CHECK-LABEL: @log10_f64(
653 ; CHECK: __log10d2_massv(<2 x double>
654 ; CHECK: ret void
656 entry:
657   br label %for.body
659 for.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
670 for.end:
671   ret void
674 define void @log10_f64_intrinsic(double* nocapture %varray) {
675 ; CHECK-LABEL: @log10_f64_intrinsic(
676 ; CHECK: __log10d2_massv{{.*}}<2 x double>
677 ; CHECK: ret void
679 entry:
680   br label %for.body
682 for.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
693 for.end:
694   ret void
697 define void @log10_f32(float* nocapture %varray) {
698 ; CHECK-LABEL: @log10_f32(
699 ; CHECK: __log10f4_massv{{.*}}<4 x float>
700 ; CHECK: ret void
702 entry:
703   br label %for.body
705 for.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
716 for.end:
717   ret void
720 define void @log10_f32_intrinsic(float* nocapture %varray) {
721 ; CHECK-LABEL: @log10_f32_intrinsic(
722 ; CHECK: __log10f4_massv{{.*}}<4 x float>
723 ; CHECK: ret void
725 entry:
726   br label %for.body
728 for.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
739 for.end:
740   ret void
743 define void @log2_f64(double* nocapture %varray) {
744 ; CHECK-LABEL: @log2_f64(
745 ; CHECK: __log2d2_massv(<2 x double>
746 ; CHECK: ret void
748 entry:
749   br label %for.body
751 for.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
762 for.end:
763   ret void
766 define void @log2_f64_intrinsic(double* nocapture %varray) {
767 ; CHECK-LABEL: @log2_f64_intrinsic(
768 ; CHECK: __log2d2_massv{{.*}}<2 x double>
769 ; CHECK: ret void
771 entry:
772   br label %for.body
774 for.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
785 for.end:
786   ret void
789 define void @log2_f32(float* nocapture %varray) {
790 ; CHECK-LABEL: @log2_f32(
791 ; CHECK: __log2f4_massv{{.*}}<4 x float>
792 ; CHECK: ret void
794 entry:
795   br label %for.body
797 for.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
808 for.end:
809   ret void
812 define void @log2_f32_intrinsic(float* nocapture %varray) {
813 ; CHECK-LABEL: @log2_f32_intrinsic(
814 ; CHECK: __log2f4_massv{{.*}}<4 x float>
815 ; CHECK: ret void
817 entry:
818   br label %for.body
820 for.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
831 for.end:
832   ret void
835 define void @sin_f64(double* nocapture %varray) {
836 ; CHECK-LABEL: @sin_f64(
837 ; CHECK: __sind2_massv{{.*}}<2 x double>
838 ; CHECK: ret void
840 entry:
841   br label %for.body
843 for.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
854 for.end:
855   ret void
858 define void @sin_f64_intrinsic(double* nocapture %varray) {
859 ; CHECK-LABEL: @sin_f64_intrinsic(
860 ; CHECK: __sind2_massv{{.*}}<2 x double>
861 ; CHECK: ret void
863 entry:
864   br label %for.body
866 for.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
877 for.end:
878   ret void
881 define void @sin_f32(float* nocapture %varray) {
882 ; CHECK-LABEL: @sin_f32(
883 ; CHECK: __sinf4_massv{{.*}}<4 x float>
884 ; CHECK: ret void
886 entry:
887   br label %for.body
889 for.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
900 for.end:
901   ret void
904 define void @sin_f32_intrinsic(float* nocapture %varray) {
905 ; CHECK-LABEL: @sin_f32_intrinsic(
906 ; CHECK: __sinf4_massv{{.*}}<4 x float>
907 ; CHECK: ret void
909 entry:
910   br label %for.body
912 for.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
923 for.end:
924   ret void
927 define void @cos_f64(double* nocapture %varray) {
928 ; CHECK-LABEL: @cos_f64(
929 ; CHECK: __cosd2_massv{{.*}}<2 x double>
930 ; CHECK: ret void
932 entry:
933   br label %for.body
935 for.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
946 for.end:
947   ret void
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:%.*]])
953 ; CHECK:    ret void
955 entry:
956   br label %for.body
958 for.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
969 for.end:
970   ret void
973 define void @cos_f32(float* nocapture %varray) {
974 ; CHECK-LABEL: @cos_f32(
975 ; CHECK: __cosf4_massv{{.*}}<4 x float>
976 ; CHECK: ret void
978 entry:
979   br label %for.body
981 for.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
992 for.end:
993   ret void
996 define void @cos_f32_intrinsic(float* nocapture %varray) {
997 ; CHECK-LABEL: @cos_f32_intrinsic(
998 ; CHECK: __cosf4_massv{{.*}}<4 x float>
999 ; CHECK: ret void
1001 entry:
1002   br label %for.body
1004 for.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
1015 for.end:
1016   ret void
1019 define void @tan_f64(double* nocapture %varray) {
1020 ; CHECK-LABEL: @tan_f64(
1021 ; CHECK: __tand2_massv{{.*}}<2 x double>
1022 ; CHECK: ret void
1024 entry:
1025   br label %for.body
1027 for.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
1038 for.end:
1039   ret void
1042 define void @tan_f32(float* nocapture %varray) {
1043 ; CHECK-LABEL: @tan_f32(
1044 ; CHECK: __tanf4_massv{{.*}}<4 x float>
1045 ; CHECK: ret void
1047 entry:
1048   br label %for.body
1050 for.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
1061 for.end:
1062   ret void
1065 define void @asin_f64(double* nocapture %varray) {
1066 ; CHECK-LABEL: @asin_f64(
1067 ; CHECK: __asind2_massv{{.*}}<2 x double>
1068 ; CHECK: ret void
1070 entry:
1071   br label %for.body
1073 for.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
1084 for.end:
1085   ret void
1088 define void @asin_f32(float* nocapture %varray) {
1089 ; CHECK-LABEL: @asin_f32(
1090 ; CHECK: __asinf4_massv{{.*}}<4 x float>
1091 ; CHECK: ret void
1093 entry:
1094   br label %for.body
1096 for.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
1107 for.end:
1108   ret void
1111 define void @acos_f64(double* nocapture %varray) {
1112 ; CHECK-LABEL: @acos_f64(
1113 ; CHECK: __acosd2_massv{{.*}}<2 x double>
1114 ; CHECK: ret void
1116 entry:
1117   br label %for.body
1119 for.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
1130 for.end:
1131   ret void
1134 define void @acos_f32(float* nocapture %varray) {
1135 ; CHECK-LABEL: @acos_f32(
1136 ; CHECK: __acosf4_massv{{.*}}<4 x float>
1137 ; CHECK: ret void
1139 entry:
1140   br label %for.body
1142 for.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
1153 for.end:
1154   ret void
1157 define void @atan_f64(double* nocapture %varray) {
1158 ; CHECK-LABEL: @atan_f64(
1159 ; CHECK: __atand2_massv{{.*}}<2 x double>
1160 ; CHECK: ret void
1162 entry:
1163   br label %for.body
1165 for.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
1176 for.end:
1177   ret void
1180 define void @atan_f32(float* nocapture %varray) {
1181 ; CHECK-LABEL: @atan_f32(
1182 ; CHECK: __atanf4_massv{{.*}}<4 x float>
1183 ; CHECK: ret void
1185 entry:
1186   br label %for.body
1188 for.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
1199 for.end:
1200   ret void
1203 define void @atan2_f64(double* nocapture %varray) {
1204 ; CHECK-LABEL: @atan2_f64(
1205 ; CHECK: __atan2d2_massv{{.*}}<2 x double>
1206 ; CHECK: ret void
1208 entry:
1209   br label %for.body
1211 for.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
1222 for.end:
1223   ret void
1226 define void @atan2_f32(float* nocapture %varray) {
1227 ; CHECK-LABEL: @atan2_f32(
1228 ; CHECK: __atan2f4_massv{{.*}}<4 x float>
1229 ; CHECK: ret void
1231 entry:
1232   br label %for.body
1234 for.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
1245 for.end:
1246   ret void
1249 define void @sinh_f64(double* nocapture %varray) {
1250 ; CHECK-LABEL: @sinh_f64(
1251 ; CHECK: __sinhd2_massv{{.*}}<2 x double>
1252 ; CHECK: ret void
1254 entry:
1255   br label %for.body
1257 for.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
1268 for.end:
1269   ret void
1272 define void @sinh_f32(float* nocapture %varray) {
1273 ; CHECK-LABEL: @sinh_f32(
1274 ; CHECK: __sinhf4_massv{{.*}}<4 x float>
1275 ; CHECK: ret void
1277 entry:
1278   br label %for.body
1280 for.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
1291 for.end:
1292   ret void
1295 define void @cosh_f64(double* nocapture %varray) {
1296 ; CHECK-LABEL: @cosh_f64(
1297 ; CHECK: __coshd2_massv{{.*}}<2 x double>
1298 ; CHECK: ret void
1300 entry:
1301   br label %for.body
1303 for.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
1314 for.end:
1315   ret void
1318 define void @cosh_f32(float* nocapture %varray) {
1319 ; CHECK-LABEL: @cosh_f32(
1320 ; CHECK: __coshf4_massv{{.*}}<4 x float>
1321 ; CHECK: ret void
1323 entry:
1324   br label %for.body
1326 for.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
1337 for.end:
1338   ret void
1341 define void @tanh_f64(double* nocapture %varray) {
1342 ; CHECK-LABEL: @tanh_f64(
1343 ; CHECK: __tanhd2_massv{{.*}}<2 x double>
1344 ; CHECK: ret void
1346 entry:
1347   br label %for.body
1349 for.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
1360 for.end:
1361   ret void
1364 define void @tanh_f32(float* nocapture %varray) {
1365 ; CHECK-LABEL: @tanh_f32(
1366 ; CHECK: __tanhf4_massv{{.*}}<4 x float>
1367 ; CHECK: ret void
1369 entry:
1370   br label %for.body
1372 for.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
1383 for.end:
1384   ret void
1387 define void @asinh_f64(double* nocapture %varray) {
1388 ; CHECK-LABEL: @asinh_f64(
1389 ; CHECK: __asinhd2_massv{{.*}}<2 x double>
1390 ; CHECK: ret void
1392 entry:
1393   br label %for.body
1395 for.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
1406 for.end:
1407   ret void
1410 define void @asinh_f32(float* nocapture %varray) {
1411 ; CHECK-LABEL: @asinh_f32(
1412 ; CHECK: __asinhf4_massv{{.*}}<4 x float>
1413 ; CHECK: ret void
1415 entry:
1416   br label %for.body
1418 for.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
1429 for.end:
1430   ret void
1433 define void @acosh_f64(double* nocapture %varray) {
1434 ; CHECK-LABEL: @acosh_f64(
1435 ; CHECK: __acoshd2_massv{{.*}}<2 x double>
1436 ; CHECK: ret void
1438 entry:
1439   br label %for.body
1441 for.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
1452 for.end:
1453   ret void
1456 define void @acosh_f32(float* nocapture %varray) {
1457 ; CHECK-LABEL: @acosh_f32(
1458 ; CHECK: __acoshf4_massv{{.*}}<4 x float>
1459 ; CHECK: ret void
1461 entry:
1462   br label %for.body
1464 for.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
1475 for.end:
1476   ret void
1479 define void @atanh_f64(double* nocapture %varray) {
1480 ; CHECK-LABEL: @atanh_f64(
1481 ; CHECK: __atanhd2_massv{{.*}}<2 x double>
1482 ; CHECK: ret void
1484 entry:
1485   br label %for.body
1487 for.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
1498 for.end:
1499   ret void
1502 define void @atanh_f32(float* nocapture %varray) {
1503 ; CHECK-LABEL: @atanh_f32(
1504 ; CHECK: __atanhf4_massv{{.*}}<4 x float>
1505 ; CHECK: ret void
1507 entry:
1508   br label %for.body
1510 for.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
1521 for.end:
1522   ret void
1525 attributes #0 = { nounwind }