@@ -862,6 +862,86 @@ func.func @_QPtest_real8(%arg0: !fir.ref<f64> {fir.bindc_name = "x"}) -> f64 {
862
862
func.func private @erff(f32) -> f32
863
863
func.func private @erf(f64) -> f64
864
864
865
+
866
+ //--- derf_fast.fir
867
+ // RUN: fir-opt %t/derf_fast.fir --fir-to-llvm-ir="target=x86_64-unknown-linux-gnu" | FileCheck %t/derf_fast.fir
868
+ // CHECK: @_QPtest_real4
869
+ // CHECK: {{%[A-Za-z0-9._]+}} = llvm.call @erff({{%[A-Za-z0-9._]+}}) : (f32) -> f32
870
+
871
+ // CHECK: @_QPtest_real8
872
+ // CHECK: {{%[A-Za-z0-9._]+}} = llvm.call @erf({{%[A-Za-z0-9._]+}}) : (f64) -> f64
873
+
874
+ func.func @_QPtest_real4(%arg0: !fir.ref<f32> {fir.bindc_name = "x"}) -> f32 {
875
+ %0 = fir.alloca f32 {bindc_name = "test_real4", uniq_name = "_QFtest_real4Etest_real4"}
876
+ %1 = fir.load %arg0 : !fir.ref<f32>
877
+ %2 = math.erf %1 : f32
878
+ fir.store %2 to %0 : !fir.ref<f32>
879
+ %3 = fir.load %0 : !fir.ref<f32>
880
+ return %3 : f32
881
+ }
882
+ func.func @_QPtest_real8(%arg0: !fir.ref<f64> {fir.bindc_name = "x"}) -> f64 {
883
+ %0 = fir.alloca f64 {bindc_name = "test_real8", uniq_name = "_QFtest_real8Etest_real8"}
884
+ %1 = fir.load %arg0 : !fir.ref<f64>
885
+ %2 = math.erf %1 : f64
886
+ fir.store %2 to %0 : !fir.ref<f64>
887
+ %3 = fir.load %0 : !fir.ref<f64>
888
+ return %3 : f64
889
+ }
890
+
891
+ //--- derf_relaxed.fir
892
+ // RUN: fir-opt %t/derf_relaxed.fir --fir-to-llvm-ir="target=x86_64-unknown-linux-gnu" | FileCheck %t/derf_relaxed.fir
893
+ // CHECK: @_QPtest_real4
894
+ // CHECK: {{%[A-Za-z0-9._]+}} = llvm.call @erff({{%[A-Za-z0-9._]+}}) : (f32) -> f32
895
+
896
+ // CHECK: @_QPtest_real8
897
+ // CHECK: {{%[A-Za-z0-9._]+}} = llvm.call @erf({{%[A-Za-z0-9._]+}}) : (f64) -> f64
898
+
899
+ func.func @_QPtest_real4(%arg0: !fir.ref<f32> {fir.bindc_name = "x"}) -> f32 {
900
+ %0 = fir.alloca f32 {bindc_name = "test_real4", uniq_name = "_QFtest_real4Etest_real4"}
901
+ %1 = fir.load %arg0 : !fir.ref<f32>
902
+ %2 = math.erf %1 : f32
903
+ fir.store %2 to %0 : !fir.ref<f32>
904
+ %3 = fir.load %0 : !fir.ref<f32>
905
+ return %3 : f32
906
+ }
907
+ func.func @_QPtest_real8(%arg0: !fir.ref<f64> {fir.bindc_name = "x"}) -> f64 {
908
+ %0 = fir.alloca f64 {bindc_name = "test_real8", uniq_name = "_QFtest_real8Etest_real8"}
909
+ %1 = fir.load %arg0 : !fir.ref<f64>
910
+ %2 = math.erf %1 : f64
911
+ fir.store %2 to %0 : !fir.ref<f64>
912
+ %3 = fir.load %0 : !fir.ref<f64>
913
+ return %3 : f64
914
+ }
915
+
916
+ //--- derf_precise.fir
917
+ // RUN: fir-opt %t/derf_precise.fir --fir-to-llvm-ir="target=x86_64-unknown-linux-gnu" | FileCheck %t/derf_precise.fir
918
+ // CHECK: @_QPtest_real4
919
+ // CHECK: {{%[A-Za-z0-9._]+}} = llvm.call @erff({{%[A-Za-z0-9._]+}}) : (f32) -> f32
920
+
921
+ // CHECK: @_QPtest_real8
922
+ // CHECK: {{%[A-Za-z0-9._]+}} = llvm.call @erf({{%[A-Za-z0-9._]+}}) : (f64) -> f64
923
+
924
+ func.func @_QPtest_real4(%arg0: !fir.ref<f32> {fir.bindc_name = "x"}) -> f32 {
925
+ %0 = fir.alloca f32 {bindc_name = "test_real4", uniq_name = "_QFtest_real4Etest_real4"}
926
+ %1 = fir.load %arg0 : !fir.ref<f32>
927
+ %2 = fir.call @erff(%1) : (f32) -> f32
928
+ fir.store %2 to %0 : !fir.ref<f32>
929
+ %3 = fir.load %0 : !fir.ref<f32>
930
+ return %3 : f32
931
+ }
932
+ func.func @_QPtest_real8(%arg0: !fir.ref<f64> {fir.bindc_name = "x"}) -> f64 {
933
+ %0 = fir.alloca f64 {bindc_name = "test_real8", uniq_name = "_QFtest_real8Etest_real8"}
934
+ %1 = fir.load %arg0 : !fir.ref<f64>
935
+ %2 = fir.call @erf(%1) : (f64) -> f64
936
+ fir.store %2 to %0 : !fir.ref<f64>
937
+ %3 = fir.load %0 : !fir.ref<f64>
938
+ return %3 : f64
939
+ }
940
+ func.func private @erff(f32) -> f32
941
+ func.func private @erf(f64) -> f64
942
+
943
+
944
+
865
945
//--- exp_fast.fir
866
946
// RUN: fir-opt %t/exp_fast.fir --fir-to-llvm-ir="target=x86_64-unknown-linux-gnu" | FileCheck %t/exp_fast.fir
867
947
// CHECK: @_QPtest_real4
0 commit comments