@@ -177,7 +177,7 @@ double rsqrt(double);
177
177
// CHECK-F3: call double @llvm.fpbuiltin.atanh.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
178
178
// CHECK-F3: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
179
179
// CHECK-F3: call double @llvm.fpbuiltin.cosh.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
180
- // CHECk -F3: call double @llvm.fpbuiltin.erf.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
180
+ // CHECK -F3: call double @llvm.fpbuiltin.erf.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
181
181
// CHECK-F3: call double @llvm.fpbuiltin.erfc.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
182
182
// CHECK-F3: call double @llvm.fpbuiltin.exp.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
183
183
// CHECK-F3: call double @llvm.fpbuiltin.exp10.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
@@ -203,6 +203,19 @@ double rsqrt(double);
203
203
// CHECK-F3: call double @llvm.fpbuiltin.tan.f64(double {{.*}}) #[[ATTR_F3_LOW:[0-9]+]]
204
204
// CHECK-F3: call double @llvm.fpbuiltin.tanh.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
205
205
206
+ // CHECK-F3-LABEL: define dso_local void @f2
207
+ // CHECK-F3: call float @llvm.fpbuiltin.cos.f32(float {{.*}}) #[[ATTR_F3_HIGH]]
208
+ // CHECK-F3: call float @llvm.fpbuiltin.sin.f32(float {{.*}}) #[[ATTR_F3_HIGH]]
209
+ // CHECK-F3: call double @llvm.fpbuiltin.tan.f64(double {{.*}}) #[[ATTR_F3_LOW]]
210
+ // CHECK-F3: call double @llvm.fpbuiltin.log10.f64(double {{.*}}) #[[ATTR_F3_MEDIUM]]
211
+ // CHECK-F3: call void @llvm.fpbuiltin.sincos.f64(double {{.*}}, ptr {{.*}}, ptr {{.*}}) #[[ATTR_F3_MEDIUM]]
212
+
213
+ // CHECK-F3-LABEL: define dso_local float @fake_exp10
214
+
215
+ // CHECK-F3-LABEL: define dso_local void @f4
216
+ // CHECK-F3: call double @llvm.fpbuiltin.exp.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
217
+ // CHECK-F3: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F3_HIGH]]
218
+
206
219
// CHECK-F3: attributes #[[ATTR_F3_HIGH]] = {{.*}}"fpbuiltin-max-error"="1.0"
207
220
// CHECK-F3: attributes #[[ATTR_F3_MEDIUM]] = {{.*}}"fpbuiltin-max-error"="4.0"
208
221
// CHECK-F3: attributes #[[ATTR_F3_LOW]] = {{.*}}"fpbuiltin-max-error"="67108864.0"
@@ -414,14 +427,25 @@ void f1(float a, float b) {
414
427
// CHECK-F2: call void @llvm.fpbuiltin.sincos.f64(double {{.*}}, ptr {{.*}}, ptr {{.*}}) #[[ATTR_F2_MEDIUM]]
415
428
// CHECK-F2: call float @tanf(float {{.*}})
416
429
//
417
- // CHECK-LABEL-F4 : define dso_local void @f2
430
+ // CHECK-F4-LABEL : define dso_local void @f2
418
431
// CHECK-F4: call float @llvm.fpbuiltin.cos.f32(float {{.*}}) #[[ATTR_F4_MEDIUM]]
419
432
// CHECK-F4: call float @llvm.fpbuiltin.sin.f32(float {{.*}}) #[[ATTR_F4_MEDIUM]]
420
433
// CHECK-F4: call double @llvm.fpbuiltin.tan.f64(double {{.*}}) #[[ATTR_F4_MEDIUM]]
421
434
// CHECK-F4: call double @llvm.fpbuiltin.log10.f64(double {{.*}}) #[[ATTR_F4_MEDIUM]]
422
435
// CHECK-F4: call void @llvm.fpbuiltin.sincos.f64(double {{.*}}, ptr {{.*}}, ptr {{.*}}) #[[ATTR_F4_MEDIUM]]
423
436
// CHECK-F4: call float @tanf(float {{.*}})
424
437
//
438
+ // CHECK-F4-LABEL: define dso_local float @fake_exp10
439
+
440
+ // CHECK-F4-LABEL: define dso_local void @f3
441
+ // CHECK-F4: call float @fake_exp10(float {{.*}})
442
+
443
+ // CHECK-F4-LABEL: define dso_local void @f4
444
+ // CHECK-F4: call double @llvm.fpbuiltin.exp.f64(double {{.*}}) #[[ATTR_F4_MEDIUM]]
445
+ // CHECK-F4: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F4_MEDIUM]]
446
+
447
+ // CHECK-F4: attributes #[[ATTR_F4_MEDIUM]] = {{.*}}"fpbuiltin-max-error"="4.0"
448
+
425
449
// CHECK-F5-LABEL: define dso_local void @f2
426
450
// CHECK-F5: call float @llvm.cos.f32(float {{.*}})
427
451
// CHECK-F5: call float @llvm.sin.f32(float {{.*}})
@@ -430,6 +454,15 @@ void f1(float a, float b) {
430
454
// CHECK-F5: call i32 (double, ptr, ptr, ...) @sincos(double {{.*}}, ptr {{.*}}, ptr {{.*}})
431
455
// CHECK-F5: call float @tanf(float {{.*}})
432
456
//
457
+ // CHECK-F5-LABEL: define dso_local float @fake_exp10
458
+
459
+ // CHECK-F5-LABEL: define dso_local void @f3
460
+ // CHECK-F5: call float @fake_exp10(float {{.*}})
461
+
462
+ // CHECK-F5-LABEL: define dso_local void @f4
463
+ // CHECK-F5: call double @llvm.exp.f64(double {{.*}})
464
+ // CHECK-F5: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F5_MEDIUM]]
465
+
433
466
// CHECK-F5: attributes #[[ATTR_F5_MEDIUM]] = {{.*}}"fpbuiltin-max-error"="4.0"
434
467
// CHECK-F5: attributes #[[ATTR_F5_HIGH]] = {{.*}}"fpbuiltin-max-error"="1.0"
435
468
//
@@ -441,6 +474,15 @@ void f1(float a, float b) {
441
474
// CHECK-F6: call void @llvm.fpbuiltin.sincos.f64(double {{.*}}, ptr {{.*}}, ptr {{.*}}) #[[ATTR_F6_MEDIUM]]
442
475
// CHECK-F6: call float @tanf(float {{.*}}) #[[ATTR8:[0-9]+]]
443
476
//
477
+ // CHECK-F6-LABEL: define dso_local float @fake_exp10
478
+ //
479
+ // CHECK-F6-LABEL: define dso_local void @f3
480
+ // CHECK-F6: call float @fake_exp10(float {{.*}})
481
+
482
+ // CHECK-F6-LABEL: define dso_local void @f4
483
+ // CHECK-F6: call double @llvm.fpbuiltin.exp.f64(double {{.*}}) #[[ATTR_F6_MEDIUM]]
484
+ // CHECK-F6: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F6_MEDIUM]]
485
+
444
486
// CHECK-F6: attributes #[[ATTR_F6_MEDIUM]] = {{.*}}"fpbuiltin-max-error"="4.0"
445
487
// CHECK-F6: attributes #[[ATTR_F6_HIGH]] = {{.*}}"fpbuiltin-max-error"="1.0"
446
488
//
@@ -454,12 +496,36 @@ void f1(float a, float b) {
454
496
455
497
// CHECK-LABEL: define dso_local void @f3
456
498
// CHECK: call float @fake_exp10(float {{.*}})
499
+
500
+ // CHECK-LABEL: define dso_local void @f4
501
+ // CHECK: call double @llvm.fpbuiltin.exp.f64(double {{.*}}) #[[ATTR_HIGH]]
502
+ // CHECK: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_HIGH]]
503
+
504
+ // CHECK-F1-LABEL: define dso_local void @f3
457
505
// CHECK-F1: call float @fake_exp10(float {{.*}})
506
+
507
+ // CHECK-F1-LABEL: define dso_local void @f4
508
+ // CHECK-F1: call double @llvm.exp.f64(double {{.*}})
509
+ // CHECK-F1: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F1_HIGH]]
510
+
511
+ // CHECK-F2-LABEL: define dso_local float @fake_exp10
512
+
513
+ // CHECK-F2-LABEL: define dso_local void @f3
458
514
// CHECK-F2: call float @fake_exp10(float {{.*}})
459
515
516
+ // CHECK-F2-LABEL: define dso_local void @f4
517
+ // CHECK-F2: call double @llvm.fpbuiltin.exp.f64(double {{.*}}) #[[ATTR_F2_MEDIUM]]
518
+ // CHECK-F2: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_F2_CUDA]]
519
+
520
+ // CHECK-SPIR-LABEL: define dso_local spir_func float @fake_exp10
521
+ //
460
522
// CHECK-SPIR-LABEL: define dso_local spir_func void @f3
461
523
// CHECK-SPIR: call spir_func float @fake_exp10(float {{.*}})
462
524
525
+ // CHECK-SPIR-LABEL: define dso_local spir_func void @f4
526
+ // CHECK-SPIR: call double @llvm.fpbuiltin.exp.f64(double {{.*}}) #[[ATTR_SYCL5]]
527
+ // CHECK-SPIR: call double @llvm.fpbuiltin.cos.f64(double {{.*}}) #[[ATTR_SYCL1]]
528
+
463
529
// CHECK: attributes #[[ATTR_HIGH]] = {{.*}}"fpbuiltin-max-error"="1.0"
464
530
465
531
// CHECK-F1: attributes #[[ATTR_F1_HIGH]] = {{.*}}"fpbuiltin-max-error"="1.0"
@@ -526,6 +592,10 @@ void f1(float a, float b) {
526
592
// CHECK-DEFAULT-LABEL: define dso_local void @f3
527
593
// CHECK-DEFAULT: call float @fake_exp10(float {{.*}})
528
594
595
+ // CHECK-DEFAULT-LABEL: define dso_local void @f4
596
+ // CHECK-DEFAULT: call double @llvm.exp.f64(double {{.*}})
597
+ // CHECK-DEFAULT: call double @llvm.cos.f64(double {{.*}})
598
+
529
599
void f2 (float a , float b ) {
530
600
float sin = 0.f , cos = 0.f ;
531
601
@@ -541,3 +611,16 @@ float fake_exp10(float a) __attribute__((no_builtin)){}
541
611
void f3 (float a , float b ) {
542
612
a = fake_exp10 (b );
543
613
}
614
+
615
+ #define sz 2
616
+ double in [sz ];
617
+ double out [sz ];
618
+
619
+ double getInput (int i ) {
620
+ return in [i ];
621
+ }
622
+
623
+ void f4 () {
624
+ for (int i = 0 ; i < sz ; i ++ )
625
+ out [i ] = cos (exp (getInput (i )));
626
+ }
0 commit comments