@@ -412,6 +412,10 @@ define void @acos_f32(ptr nocapture %varray) {
412
412
; CHECK: [[TMP5:%.*]] = call <4 x float> @amd_vrs4_acosf(<4 x float> [[TMP4:%.*]])
413
413
; CHECK: ret void
414
414
;
415
+ ; CHECK-AVX512-VF16-LABEL: @acos_f32(
416
+ ; CHECK-AVX512-VF16: [[TMP5:%.*]] = call <16 x float> @amd_vrs16_acosf(<16 x float> [[TMP4:%.*]])
417
+ ; CHECK-AVX512-VF16: ret void
418
+ ;
415
419
entry:
416
420
br label %for.body
417
421
@@ -435,6 +439,10 @@ define void @acos_f32_intrinsic(ptr nocapture %varray) {
435
439
; CHECK: [[TMP5:%.*]] = call <4 x float> @amd_vrs4_acosf(<4 x float> [[TMP4:%.*]])
436
440
; CHECK: ret void
437
441
;
442
+ ; CHECK-AVX512-VF16-LABEL: @acos_f32_intrinsic(
443
+ ; CHECK-AVX512-VF16: [[TMP5:%.*]] = call <16 x float> @amd_vrs16_acosf(<16 x float> [[TMP4:%.*]])
444
+ ; CHECK-AVX512-VF16: ret void
445
+ ;
438
446
entry:
439
447
br label %for.body
440
448
@@ -669,6 +677,29 @@ for.end:
669
677
ret void
670
678
}
671
679
680
+ define void @cosh_f64 (ptr nocapture %varray ) {
681
+ ; CHECK-AVX-VF2-LABEL: @cosh_f64(
682
+ ; CHECK-AVX-VF2: [[TMP5:%.*]] = call <2 x double> @amd_vrd2_cosh(<2 x double> [[TMP4:%.*]])
683
+ ; CHECK-AVX-VF2: ret void
684
+ ;
685
+ entry:
686
+ br label %for.body
687
+
688
+ for.body:
689
+ %iv = phi i64 [ 0 , %entry ], [ %iv.next , %for.body ]
690
+ %tmp = trunc i64 %iv to i32
691
+ %conv = sitofp i32 %tmp to double
692
+ %call = tail call double @cosh (double %conv )
693
+ %arrayidx = getelementptr inbounds double , ptr %varray , i64 %iv
694
+ store double %call , ptr %arrayidx , align 4
695
+ %iv.next = add nuw nsw i64 %iv , 1
696
+ %exitcond = icmp eq i64 %iv.next , 1000
697
+ br i1 %exitcond , label %for.end , label %for.body
698
+
699
+ for.end:
700
+ ret void
701
+ }
702
+
672
703
define void @cosh_f32 (ptr nocapture %varray ) {
673
704
; CHECK-LABEL: @cosh_f32(
674
705
; CHECK: [[TMP5:%.*]] = call <4 x float> @amd_vrs4_coshf(<4 x float> [[TMP4:%.*]])
@@ -692,6 +723,29 @@ for.end:
692
723
ret void
693
724
}
694
725
726
+ define void @cosh_f64_intrinsic (ptr nocapture %varray ) {
727
+ ; CHECK-AVX-VF2-LABEL: @cosh_f64_intrinsic(
728
+ ; CHECK-AVX-VF2: [[TMP5:%.*]] = call <2 x double> @amd_vrd2_cosh(<2 x double> [[TMP4:%.*]])
729
+ ; CHECK-AVX-VF2: ret void
730
+ ;
731
+ entry:
732
+ br label %for.body
733
+
734
+ for.body:
735
+ %iv = phi i64 [ 0 , %entry ], [ %iv.next , %for.body ]
736
+ %tmp = trunc i64 %iv to i32
737
+ %conv = sitofp i32 %tmp to double
738
+ %call = tail call double @llvm.cosh.f64 (double %conv )
739
+ %arrayidx = getelementptr inbounds double , ptr %varray , i64 %iv
740
+ store double %call , ptr %arrayidx , align 4
741
+ %iv.next = add nuw nsw i64 %iv , 1
742
+ %exitcond = icmp eq i64 %iv.next , 1000
743
+ br i1 %exitcond , label %for.end , label %for.body
744
+
745
+ for.end:
746
+ ret void
747
+ }
748
+
695
749
define void @cosh_f32_intrinsic (ptr nocapture %varray ) {
696
750
; CHECK-LABEL: @cosh_f32_intrinsic(
697
751
; CHECK: [[TMP5:%.*]] = call <4 x float> @amd_vrs4_coshf(<4 x float> [[TMP4:%.*]])
@@ -720,6 +774,10 @@ define void @tanh_f32(ptr nocapture %varray) {
720
774
; CHECK: [[TMP5:%.*]] = call <4 x float> @amd_vrs4_tanhf(<4 x float> [[TMP4:%.*]])
721
775
; CHECK: ret void
722
776
;
777
+ ; CHECK-AVX512-VF16-LABEL: @tanh_f32(
778
+ ; CHECK-AVX512-VF16: [[TMP5:%.*]] = call <16 x float> @amd_vrs16_tanhf(<16 x float> [[TMP4:%.*]])
779
+ ; CHECK-AVX512-VF16: ret void
780
+ ;
723
781
entry:
724
782
br label %for.body
725
783
@@ -743,6 +801,10 @@ define void @tanh_f32_intrinsic(ptr nocapture %varray) {
743
801
; CHECK: [[TMP5:%.*]] = call <4 x float> @amd_vrs4_tanhf(<4 x float> [[TMP4:%.*]])
744
802
; CHECK: ret void
745
803
;
804
+ ; CHECK-AVX512-VF16-LABEL: @tanh_f32_intrinsic(
805
+ ; CHECK-AVX512-VF16: [[TMP5:%.*]] = call <16 x float> @amd_vrs16_tanhf(<16 x float> [[TMP4:%.*]])
806
+ ; CHECK-AVX512-VF16: ret void
807
+ ;
746
808
entry:
747
809
br label %for.body
748
810
0 commit comments