Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion flang/include/flang/Common/Fortran-features.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ ENUM_CLASS(UsageWarning, Portability, PointerToUndefinable,
ZeroDoStep, UnusedForallIndex, OpenMPUsage, DataLength, IgnoredDirective,
HomonymousSpecific, HomonymousResult, IgnoredIntrinsicFunctionType,
PreviousScalarUse, RedeclaredInaccessibleComponent, ImplicitShared,
IndexVarRedefinition, IncompatibleImplicitInterfaces, BadTypeForTarget,
IndexVarRedefinition, IncompatibleImplicitInterfaces,
VectorSubscriptFinalization, UndefinedFunctionResult, UselessIomsg,
MismatchingDummyProcedure, SubscriptedEmptyArray, UnsignedLiteralTruncation,
CompatibleDeclarationsFromDistinctModules)
Expand Down
1 change: 0 additions & 1 deletion flang/lib/Common/Fortran-features.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ LanguageFeatureControl::LanguageFeatureControl() {
warnUsage_.set(UsageWarning::ImplicitShared);
warnUsage_.set(UsageWarning::IndexVarRedefinition);
warnUsage_.set(UsageWarning::IncompatibleImplicitInterfaces);
warnUsage_.set(UsageWarning::BadTypeForTarget);
warnUsage_.set(UsageWarning::VectorSubscriptFinalization);
warnUsage_.set(UsageWarning::UndefinedFunctionResult);
warnUsage_.set(UsageWarning::UselessIomsg);
Expand Down
18 changes: 2 additions & 16 deletions flang/lib/Semantics/expression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4079,8 +4079,7 @@ bool ExpressionAnalyzer::CheckIntrinsicKind(
return true;
} else if (foldingContext_.targetCharacteristics().CanSupportType(
category, kind)) {
Warn(common::UsageWarning::BadTypeForTarget,
"%s(KIND=%jd) is not an enabled type for this target"_warn_en_US,
Say("%s(KIND=%jd) is not an enabled type for this target"_err_en_US,
ToUpperCase(EnumToString(category)), kind);
return true;
} else {
Expand All @@ -4102,20 +4101,7 @@ bool ExpressionAnalyzer::CheckIntrinsicSize(
return false;
}
}
if (foldingContext_.targetCharacteristics().IsTypeEnabled(
category, kind)) { // C712, C714, C715, C727
return true;
} else if (foldingContext_.targetCharacteristics().CanSupportType(
category, kind)) {
Warn(common::UsageWarning::BadTypeForTarget,
"%s*%jd is not an enabled type for this target"_warn_en_US,
ToUpperCase(EnumToString(category)), size);
return true;
} else {
Say("%s*%jd is not a supported type"_err_en_US,
ToUpperCase(EnumToString(category)), size);
return false;
}
return CheckIntrinsicKind(category, kind);
}

bool ExpressionAnalyzer::AddImpliedDo(parser::CharBlock name, int kind) {
Expand Down
4 changes: 3 additions & 1 deletion flang/test/Evaluate/rewrite-out_of_range.F90
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
! Tests rewriting of OUT_OF_RANGE()
! RUN: %flang_fc1 -fdebug-unparse -cpp %s 2>&1 | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{,CHECK-X86-64%}
! REQUIRES: target=x86-64{{.*}}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@klausler did you mean x86_64 (with an underscore instead of a hyphen) like you did in the predicate of line 4?

(The test is not being run at all as unsupported, not even on x86_64)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!
#126699

! REQUIRES: system-linux
! RUN: %flang_fc1 -fdebug-unparse -cpp %s 2>&1 | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{%if system-linux %{,CHECK-X86-64%}%}

logical round

Expand Down
11 changes: 7 additions & 4 deletions flang/test/Lower/HLFIR/convert-variable.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! Test lowering of variables to fir.declare
! RUN: bbc -emit-hlfir %s -o - | FileCheck %s
! RUN: bbc -emit-hlfir %s -o - | FileCheck %s --check-prefixes=CHECK,%if flang-supports-f128-math %{F128%} %else %{F64%}

subroutine scalar_numeric(x)
integer :: x
Expand Down Expand Up @@ -68,13 +68,16 @@ subroutine scalar_numeric_attributes(x)
! CHECK: %[[VAL_1:.*]] = hlfir.declare %[[VAL_0]] dummy_scope %{{[0-9]+}} {fortran_attrs = #fir.var_attrs<intent_in, optional, target>, uniq_name = "_QFscalar_numeric_attributesEx"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>)

subroutine scalar_numeric_attributes_2(x)
real(16), value :: x(100)
integer, parameter :: rk = merge(16, 8, selected_real_kind(33, 4931)==16)
real(rk), value :: x(100)
end subroutine
! CHECK-LABEL: func.func @_QPscalar_numeric_attributes_2(
! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<!fir.array<100xf128>>
! F128-SAME: %[[VAL_0:.*]]: !fir.ref<!fir.array<100xf128>>
! F64-SAME: %[[VAL_0:.*]]: !fir.ref<!fir.array<100xf64>>
! CHECK: %[[VAL_1:.*]] = arith.constant 100 : index
! CHECK: %[[VAL_2:.*]] = fir.shape %[[VAL_1]] : (index) -> !fir.shape<1>
! CHECK: %[[VAL_3:.*]] = hlfir.declare %[[VAL_0]](%[[VAL_2]]) dummy_scope %{{[0-9]+}} {fortran_attrs = #fir.var_attrs<value>, uniq_name = "_QFscalar_numeric_attributes_2Ex"} : (!fir.ref<!fir.array<100xf128>>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<100xf128>>, !fir.ref<!fir.array<100xf128>>)
! F128: %[[VAL_3:.*]] = hlfir.declare %[[VAL_0]](%[[VAL_2]]) dummy_scope %{{[0-9]+}} {fortran_attrs = #fir.var_attrs<value>, uniq_name = "_QFscalar_numeric_attributes_2Ex"} : (!fir.ref<!fir.array<100xf128>>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<100xf128>>, !fir.ref<!fir.array<100xf128>>)
! F64: %[[VAL_3:.*]] = hlfir.declare %[[VAL_0]](%[[VAL_2]]) dummy_scope %{{[0-9]+}} {fortran_attrs = #fir.var_attrs<value>, uniq_name = "_QFscalar_numeric_attributes_2Ex"} : (!fir.ref<!fir.array<100xf64>>, !fir.shape<1>, !fir.dscope) -> (!fir.ref<!fir.array<100xf64>>, !fir.ref<!fir.array<100xf64>>)

subroutine scalar_numeric_attributes_3(x)
real, intent(in) :: x
Expand Down
19 changes: 12 additions & 7 deletions flang/test/Lower/Intrinsics/abs.f90
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s --check-prefixes="CHECK,CMPLX,CMPLX-PRECISE"
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s --check-prefixes=CHECK,CMPLX,CMPLX-PRECISE,%if flang-supports-f128-math %{F128%} %else %{F64%}
! RUN: bbc -emit-fir -hlfir=false --math-runtime=precise %s -o - | FileCheck %s --check-prefixes="CMPLX,CMPLX-PRECISE"
! RUN: bbc --force-mlir-complex -emit-fir -hlfir=false %s -o - | FileCheck %s --check-prefixes="CMPLX,CMPLX-FAST"
! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s --check-prefixes="CHECK,CMPLX,CMPLX-PRECISE"
! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s --check-prefixes=CHECK,CMPLX,CMPLX-PRECISE,%if flang-supports-f128-math %{F128%} %else %{F64%}
! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -mllvm --math-runtime=precise %s -o - | FileCheck %s --check-prefixes="CMPLX,CMPLX-PRECISE"
! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -mllvm --force-mlir-complex %s -o - | FileCheck %s --check-prefixes="CMPLX,CMPLX-FAST"
! RUN: %flang_fc1 -fapprox-func -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s --check-prefixes="CMPLX,CMPLX-APPROX"
Expand Down Expand Up @@ -85,13 +85,18 @@ subroutine abs_testd(a, b)
end subroutine

! CHECK-LABEL: func @_QPabs_testr16(
! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<f128>{{.*}}, %[[VAL_1:.*]]: !fir.ref<f128>{{.*}}) {
! F128-SAME: %[[VAL_0:.*]]: !fir.ref<f128>{{.*}}, %[[VAL_1:.*]]: !fir.ref<f128>{{.*}}) {
! F64-SAME: %[[VAL_0:.*]]: !fir.ref<f64>{{.*}}, %[[VAL_1:.*]]: !fir.ref<f64>{{.*}}) {
subroutine abs_testr16(a, b)
! CHECK: %[[VAL_2:.*]] = fir.load %[[VAL_0]] : !fir.ref<f128>
! CHECK: %[[VAL_3:.*]] = math.absf %[[VAL_2]] {{.*}}: f128
! CHECK: fir.store %[[VAL_3]] to %[[VAL_1]] : !fir.ref<f128>
! F128: %[[VAL_2:.*]] = fir.load %[[VAL_0]] : !fir.ref<f128>
! F64: %[[VAL_2:.*]] = fir.load %[[VAL_0]] : !fir.ref<f64>
! F128: %[[VAL_3:.*]] = math.absf %[[VAL_2]] {{.*}}: f128
! F64: %[[VAL_3:.*]] = math.absf %[[VAL_2]] {{.*}}: f64
! F128: fir.store %[[VAL_3]] to %[[VAL_1]] : !fir.ref<f128>
! F64: fir.store %[[VAL_3]] to %[[VAL_1]] : !fir.ref<f64>
! CHECK: return
real(kind=16) :: a, b
integer, parameter :: rk = merge(16, 8, selected_real_kind(33, 4931)==16)
real(kind=rk) :: a, b
b = abs(a)
end subroutine

Expand Down
1 change: 0 additions & 1 deletion flang/test/Lower/Intrinsics/exponent.f90
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ subroutine exponent_test(i1, i2, x4, x8)
integer :: i1, i2, i3
real(kind = 4) :: x4
real(kind = 8) :: x8
real(kind = 16) :: x16

i1 = exponent(x4)
! CHECK: %[[temp0:.*]] = fir.load %{{.*}} : !fir.ref<f32>
Expand Down
1 change: 1 addition & 0 deletions flang/test/Lower/Intrinsics/fma_real16.f90
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
! REQUIRES: flang-supports-f128-math
! RUN: bbc -emit-fir %s -o - | FileCheck %s
! RUN: bbc --math-runtime=precise -emit-fir %s -o - | FileCheck %s
! RUN: %flang_fc1 -emit-fir %s -o - | FileCheck %s
Expand Down
3 changes: 2 additions & 1 deletion flang/test/Lower/Intrinsics/ieee_class_queries.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
! REQUIRES: flang-supports-f128-math
! RUN: bbc -emit-fir -o - %s | FileCheck %s
! REQUIRES: x86_64-registered-target
! RUN: bbc -target x86_64-unknown-linux-gnu -emit-fir -o - %s | FileCheck %s

! CHECK-LABEL: func @_QQmain
use ieee_arithmetic, only: ieee_is_finite, ieee_is_nan, ieee_is_negative, &
Expand Down
11 changes: 7 additions & 4 deletions flang/test/Lower/Intrinsics/modulo.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s -check-prefixes=HONORINF,ALL
! RUN: flang -fc1 -menable-no-infs -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s -check-prefixes=CHECK,ALL
! RUN: flang -fc1 -menable-no-infs -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s -check-prefixes=CHECK,ALL,%if flang-supports-f128-math %{F128%} %else %{F64%}

! ALL-LABEL: func @_QPmodulo_testr(
! ALL-SAME: %[[arg0:.*]]: !fir.ref<f64>{{.*}}, %[[arg1:.*]]: !fir.ref<f64>{{.*}}, %[[arg2:.*]]: !fir.ref<f64>{{.*}}) {
Expand Down Expand Up @@ -39,9 +39,12 @@ subroutine modulo_testi(r, a, p)
end subroutine

! CHECK-LABEL: func @_QPmodulo_testr16(
! CHECK-SAME: %[[arg0:.*]]: !fir.ref<f128>{{.*}}, %[[arg1:.*]]: !fir.ref<f128>{{.*}}, %[[arg2:.*]]: !fir.ref<f128>{{.*}}) {
! F128-SAME: %[[arg0:.*]]: !fir.ref<f128>{{.*}}, %[[arg1:.*]]: !fir.ref<f128>{{.*}}, %[[arg2:.*]]: !fir.ref<f128>{{.*}}) {
! F64-SAME: %[[arg0:.*]]: !fir.ref<f64>{{.*}}, %[[arg1:.*]]: !fir.ref<f64>{{.*}}, %[[arg2:.*]]: !fir.ref<f64>{{.*}}) {
subroutine modulo_testr16(r, a, p)
real(16) :: r, a, p
! CHECK: fir.call @_FortranAModuloReal16({{.*}}){{.*}}: (f128, f128, !fir.ref<i8>, i32) -> f128
integer, parameter :: rk = merge(16, 8, selected_real_kind(33, 4931)==16)
real(rk) :: r, a, p
!F128: fir.call @_FortranAModuloReal16({{.*}}){{.*}}: (f128, f128, !fir.ref<i8>, i32) -> f128
!F64: arith.remf %0, %1 fastmath<ninf,contract> : f64
r = modulo(a, p)
end subroutine
1 change: 1 addition & 0 deletions flang/test/Lower/Intrinsics/powi_real16.f90
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
! REQUIRES: flang-supports-f128-math
! RUN: bbc -emit-fir %s -o - | FileCheck %s --check-prefix=CHECK-FAST
! RUN: bbc --math-runtime=precise -emit-fir %s -o - | FileCheck %s --check-prefix=CHECK-PRECISE
! RUN: %flang_fc1 -emit-fir %s -o - | FileCheck %s --check-prefix=CHECK-FAST
Expand Down
1 change: 1 addition & 0 deletions flang/test/Lower/Intrinsics/random_number_real16.f90
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
! REQUIRES: flang-supports-f128-math
! RUN: bbc -emit-fir %s -o - | FileCheck %s
! RUN: %flang_fc1 -emit-fir %s -o - | FileCheck %s

Expand Down
1 change: 1 addition & 0 deletions flang/test/Lower/Intrinsics/rrspacing.f90
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
! REQUIRES: flang-supports-f128-math
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir %s -o - | FileCheck %s

Expand Down
8 changes: 5 additions & 3 deletions flang/test/Lower/Intrinsics/sign.f90
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
! RUN: bbc %s -o - | FileCheck %s
! RUN: bbc %s -o - | FileCheck %s --check-prefixes=CHECK,%if flang-supports-f128-math %{F128%} %else %{F64%}

! CHECK-LABEL: sign_testi
subroutine sign_testi(a, b, c)
Expand All @@ -22,8 +22,10 @@ subroutine sign_testr(a, b, c)

! CHECK-LABEL: sign_testr2
subroutine sign_testr2(a, b, c)
real(KIND=16) a, b, c
integer, parameter :: rk = merge(16, 8, selected_real_kind(33, 4931)==16)
real(KIND=rk) a, b, c
! CHECK-NOT: fir.call @{{.*}}fabs
! CHECK: math.copysign{{.*}} : f128
! F128: math.copysign{{.*}} : f128
! F64: math.copysign{{.*}} : f64
c = sign(a, b)
end subroutine
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
! This test checks lowering of `FIRSTPRIVATE` clause for scalar types.

! REQUIRES: x86_64-registered-target
! REQUIRES: shell
! RUN: bbc -fopenmp -emit-hlfir %s -o - \
! RUN: | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{,CHECK-KIND10%}%if flang-supports-f128-math %{,CHECK-KIND16%}
Expand Down
16 changes: 10 additions & 6 deletions flang/test/Lower/assignment.f90
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
! RUN: %flang_fc1 %s -o "-" -emit-fir -cpp -flang-deprecated-no-hlfir | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{,CHECK-X86-64%}
! RUN: %flang_fc1 %s -o "-" -emit-fir -cpp -flang-deprecated-no-hlfir | FileCheck %s --check-prefixes=CHECK,%if flang-supports-f128-math %{F128%} %else %{F64%}%if target=x86_64-unknown-linux{{.*}} %{,CHECK-X86-64%}

subroutine sub1(a)
integer :: a
Expand Down Expand Up @@ -261,27 +261,29 @@ real function divf(a, b)
! CHECK: return %[[RET]] : complex<f32>

subroutine real_constant()
integer, parameter :: rk = merge(16, 8, selected_real_kind(33, 4931)==16)
real(2) :: a
real(4) :: b
real(8) :: c
#if __x86_64__
real(10) :: d
#endif
real(16) :: e
real(rk) :: e
a = 2.0_2
b = 4.0_4
c = 8.0_8
#if __x86_64__
d = 10.0_10
#endif
e = 16.0_16
e = 16.0_rk
end

! CHECK: %[[A:.*]] = fir.alloca f16
! CHECK: %[[B:.*]] = fir.alloca f32
! CHECK: %[[C:.*]] = fir.alloca f64
! CHECK-X86-64: %[[D:.*]] = fir.alloca f80
! CHECK: %[[E:.*]] = fir.alloca f128
! F128: %[[E:.*]] = fir.alloca f128
! F64: %[[E:.*]] = fir.alloca f64
! CHECK: %[[C2:.*]] = arith.constant 2.000000e+00 : f16
! CHECK: fir.store %[[C2]] to %[[A]] : !fir.ref<f16>
! CHECK: %[[C4:.*]] = arith.constant 4.000000e+00 : f32
Expand All @@ -290,8 +292,10 @@ subroutine real_constant()
! CHECK: fir.store %[[C8]] to %[[C]] : !fir.ref<f64>
! CHECK-X86-64: %[[C10:.*]] = arith.constant 1.000000e+01 : f80
! CHECK-X86-64: fir.store %[[C10]] to %[[D]] : !fir.ref<f80>
! CHECK: %[[C16:.*]] = arith.constant 1.600000e+01 : f128
! CHECK: fir.store %[[C16]] to %[[E]] : !fir.ref<f128>
! F128: %[[C16:.*]] = arith.constant 1.600000e+01 : f128
! F64: %[[C16:.*]] = arith.constant 1.600000e+01 : f64
! F128: fir.store %[[C16]] to %[[E]] : !fir.ref<f128>
! F64: fir.store %[[C16]] to %[[E]] : !fir.ref<f64>

subroutine complex_constant()
complex(4) :: a
Expand Down
26 changes: 15 additions & 11 deletions flang/test/Lower/math-lowering/abs.f90
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
! RUN: bbc -emit-fir %s -o - --math-runtime=fast | FileCheck --check-prefixes=ALL,FAST %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=fast %s -o - | FileCheck --check-prefixes=ALL,FAST %s
! RUN: bbc -emit-fir %s -o - --math-runtime=relaxed | FileCheck --check-prefixes=ALL,RELAXED %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=relaxed %s -o - | FileCheck --check-prefixes=ALL,RELAXED %s
! RUN: bbc -emit-fir %s -o - --math-runtime=precise | FileCheck --check-prefixes=ALL,PRECISE %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=precise %s -o - | FileCheck --check-prefixes=ALL,PRECISE %s
! RUN: bbc -emit-fir %s -o - --math-runtime=fast | FileCheck --check-prefixes=ALL,FAST-%if flang-supports-f128-math %{F128%} %else %{F64%} %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=fast %s -o - | FileCheck --check-prefixes=ALL,FAST,FAST-%if flang-supports-f128-math %{F128%} %else %{F64%} %s
! RUN: bbc -emit-fir %s -o - --math-runtime=relaxed | FileCheck --check-prefixes=ALL,RELAXED,RELAXED-%if flang-supports-f128-math %{F128%} %else %{F64%} %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=relaxed %s -o - | FileCheck --check-prefixes=ALL,RELAXED,RELAXED-%if flang-supports-f128-math %{F128%} %else %{F64%} %s
! RUN: bbc -emit-fir %s -o - --math-runtime=precise | FileCheck --check-prefixes=ALL,PRECISE,PRECISE-%if flang-supports-f128-math %{F128%} %else %{F64%} %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=precise %s -o - | FileCheck --check-prefixes=ALL,PRECISE,PRECISE-%if flang-supports-f128-math %{F128%} %else %{F64%} %s

function test_real4(x)
real :: x, test_real4
Expand All @@ -26,13 +26,17 @@ function test_real8(x)
! PRECISE: {{%[A-Za-z0-9._]+}} = fir.call @fabs({{%[A-Za-z0-9._]+}}) {{.*}}: (f64) -> f64

function test_real16(x)
real(16) :: x, test_real16
integer, parameter :: rk = merge(16, 8, selected_real_kind(33, 4931)==16)
real(rk) :: x, test_real16
test_real16 = abs(x)
end function
! ALL-LABEL: @_QPtest_real16
! FAST: {{%[A-Za-z0-9._]+}} = math.absf {{%[A-Za-z0-9._]+}} {{.*}}: f128
! RELAXED: {{%[A-Za-z0-9._]+}} = math.absf {{%[A-Za-z0-9._]+}} {{.*}}: f128
! PRECISE: {{%[A-Za-z0-9._]+}} = fir.call @llvm.fabs.f128({{%[A-Za-z0-9._]+}}) {{.*}}: (f128) -> f128
! FAST-F128: {{%[A-Za-z0-9._]+}} = math.absf {{%[A-Za-z0-9._]+}} {{.*}}: f128
! FAST-F64: {{%[A-Za-z0-9._]+}} = math.absf {{%[A-Za-z0-9._]+}} {{.*}}: f64
! RELAXED-F128: {{%[A-Za-z0-9._]+}} = math.absf {{%[A-Za-z0-9._]+}} {{.*}}: f128
! RELAXED-F64: {{%[A-Za-z0-9._]+}} = math.absf {{%[A-Za-z0-9._]+}} {{.*}}: f64
! PRECISE-F128: {{%[A-Za-z0-9._]+}} = fir.call @llvm.fabs.f128({{%[A-Za-z0-9._]+}}) {{.*}}: (f128) -> f128
! PRECISE-F64: {{%[A-Za-z0-9._]+}} = fir.call @fabs({{%[A-Za-z0-9._]+}}) {{.*}}: (f64) -> f64

function test_complex4(c)
complex(4) :: c, test_complex4
Expand All @@ -50,6 +54,6 @@ function test_complex8(c)

! PRECISE-DAG: func.func private @fabsf(f32) -> f32 attributes {fir.bindc_name = "fabsf", fir.runtime}
! PRECISE-DAG: func.func private @fabs(f64) -> f64 attributes {fir.bindc_name = "fabs", fir.runtime}
! PRECISE-DAG: func.func private @llvm.fabs.f128(f128) -> f128 attributes {fir.bindc_name = "llvm.fabs.f128", fir.runtime}
! PRECISE-F128-DAG: func.func private @llvm.fabs.f128(f128) -> f128 attributes {fir.bindc_name = "llvm.fabs.f128", fir.runtime}
! PRECISE-DAG: func.func private @cabsf(complex<f32>) -> f32 attributes {fir.bindc_name = "cabsf", fir.runtime}
! PRECISE-DAG: func.func private @cabs(complex<f64>) -> f64 attributes {fir.bindc_name = "cabs", fir.runtime}
13 changes: 7 additions & 6 deletions flang/test/Lower/math-lowering/aint.f90
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
! RUN: bbc -emit-fir %s -o - --math-runtime=fast | FileCheck --check-prefixes=ALL %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=fast %s -o - | FileCheck --check-prefixes=ALL %s
! RUN: bbc -emit-fir %s -o - --math-runtime=relaxed | FileCheck --check-prefixes=ALL %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=relaxed %s -o - | FileCheck --check-prefixes=ALL %s
! RUN: bbc -emit-fir %s -o - --math-runtime=precise | FileCheck --check-prefixes=ALL %s
! RUN: %flang_fc1 -emit-fir -mllvm -math-runtime=precise %s -o - | FileCheck --check-prefixes=ALL %s
! REQUIRES: x86_64-registered-target
! RUN: bbc -target x86_64-unknown-linux-gnu -emit-fir %s -o - --math-runtime=fast | FileCheck --check-prefixes=ALL %s
! RUN: %flang_fc1 -target x86_64-unknown-linux-gnu -emit-fir -mllvm -math-runtime=fast %s -o - | FileCheck --check-prefixes=ALL %s
! RUN: bbc -target x86_64-unknown-linux-gnu -emit-fir %s -o - --math-runtime=relaxed | FileCheck --check-prefixes=ALL %s
! RUN: %flang_fc1 -target x86_64-unknown-linux-gnu -emit-fir -mllvm -math-runtime=relaxed %s -o - | FileCheck --check-prefixes=ALL %s
! RUN: bbc -target x86_64-unknown-linux-gnu -emit-fir %s -o - --math-runtime=precise | FileCheck --check-prefixes=ALL %s
! RUN: %flang_fc1 -target x86_64-unknown-linux-gnu -emit-fir -mllvm -math-runtime=precise %s -o - | FileCheck --check-prefixes=ALL %s

function test_real4(x)
real :: x, test_real4
Expand Down
1 change: 0 additions & 1 deletion flang/test/Lower/real-operations-1.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
! RUN: bbc -emit-hlfir %s -o - | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{,CHECK-KIND10%}%if flang-supports-f128-math %{,CHECK-KIND16%}

! Test real add on real kinds.

! CHECK-LABEL: real2
Expand Down
1 change: 1 addition & 0 deletions flang/test/Semantics/kinds01.f90
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
! REQUIRES: x86_64-registered-target
! RUN: %python %S/test_symbols.py %s %flang_fc1
!DEF: /MainProgram1/jk1 ObjectEntity INTEGER(1)
integer(kind=1) jk1
Expand Down
1 change: 1 addition & 0 deletions flang/test/Semantics/kinds02.f90
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
! REQUIRES: x86_64-registered-target
! RUN: %python %S/test_errors.py %s %flang_fc1
! C712 The value of scalar-int-constant-expr shall be nonnegative and
! shall specify a representation method that exists on the processor.
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Semantics/resolve41.f90
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ module m
integer :: ff = 2_f
!ERROR: REAL(KIND=23) is not a supported type
real(d/2) :: g
!ERROR: REAL*47 is not a supported type
!ERROR: REAL(KIND=47) is not a supported type
real*47 :: h
!ERROR: COMPLEX*47 is not a supported type
complex*47 :: i
Expand Down