@@ -398,5 +398,42 @@ define void @fcmp_no_fast(double* %x) #1 {
398
398
ret void
399
399
}
400
400
401
- attributes #1 = { "target-features" ="+avx" }
401
+ declare double @llvm.fabs.f64 (double ) nounwind readnone
402
+
403
+ ;CHECK-LABEL: @call_fast(
404
+ ;CHECK: call fast <2 x double> @llvm.fabs.v2f64
405
+ define void @call_fast (double * %x ) {
406
+ %idx1 = getelementptr inbounds double , double * %x , i64 0
407
+ %idx2 = getelementptr inbounds double , double * %x , i64 1
408
+
409
+ %load1 = load double , double * %idx1 , align 8
410
+ %load2 = load double , double * %idx2 , align 8
411
+
412
+ %call1 = tail call fast double @llvm.fabs.f64 (double %load1 ) nounwind readnone
413
+ %call2 = tail call fast double @llvm.fabs.f64 (double %load2 ) nounwind readnone
414
+
415
+ store double %call1 , double * %idx1 , align 8
416
+ store double %call2 , double * %idx2 , align 8
417
+
418
+ ret void
419
+ }
402
420
421
+ ;CHECK-LABEL: @call_no_fast(
422
+ ;CHECK: call <2 x double> @llvm.fabs.v2f64
423
+ define void @call_no_fast (double * %x ) {
424
+ %idx1 = getelementptr inbounds double , double * %x , i64 0
425
+ %idx2 = getelementptr inbounds double , double * %x , i64 1
426
+
427
+ %load1 = load double , double * %idx1 , align 8
428
+ %load2 = load double , double * %idx2 , align 8
429
+
430
+ %call1 = tail call fast double @llvm.fabs.f64 (double %load1 ) nounwind readnone
431
+ %call2 = tail call double @llvm.fabs.f64 (double %load2 ) nounwind readnone
432
+
433
+ store double %call1 , double * %idx1 , align 8
434
+ store double %call2 , double * %idx2 , align 8
435
+
436
+ ret void
437
+ }
438
+
439
+ attributes #1 = { "target-features" ="+avx" }
0 commit comments