{"aint", "llvm.trunc.f32", genF32F32FuncType, genLibCall},
{"aint", "llvm.trunc.f64", genF64F64FuncType, genLibCall},
{"aint", "llvm.trunc.f80", genF80F80FuncType, genLibCall},
- {"aint", "llvm.trunc.f128", genF128F128FuncType, genLibCall},
// llvm.round behaves the same way as libm's round.
{"anint", "llvm.round.f32", genF32F32FuncType,
genMathOp<mlir::LLVM::RoundOp>},
genMathOp<mlir::LLVM::RoundOp>},
{"anint", "llvm.round.f80", genF80F80FuncType,
genMathOp<mlir::LLVM::RoundOp>},
- {"anint", "llvm.round.f128", genF128F128FuncType,
- genMathOp<mlir::LLVM::RoundOp>},
{"atan", "atanf", genF32F32FuncType, genMathOp<mlir::math::AtanOp>},
{"atan", "atan", genF64F64FuncType, genMathOp<mlir::math::AtanOp>},
{"atan2", "atan2f", genF32F32F32FuncType, genMathOp<mlir::math::Atan2Op>},
b = aint(a)
end subroutine
-! CHECK-LABEL: func.func @_QPaint_test_real16(
-! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<f128> {fir.bindc_name = "a"},
-! CHECK-SAME: %[[VAL_1:.*]]: !fir.ref<f128> {fir.bindc_name = "b"}) {
-! CHECK: %[[VAL_2:.*]] = fir.load %[[VAL_0]] : !fir.ref<f128>
-! CHECK: %[[VAL_3:.*]] = fir.call @llvm.trunc.f128(%[[VAL_2]]) : (f128) -> f128
-! CHECK: fir.store %[[VAL_3]] to %[[VAL_1]] : !fir.ref<f128>
-! CHECK: return
-! CHECK: }
-
-subroutine aint_test_real16(a, b)
- real(16) :: a, b
- b = aint(a)
-end subroutine
+! TODO: wait until fp128 is supported well in llvm.trunc
+!subroutine aint_test_real16(a, b)
+! real(16) :: a, b
+! b = aint(a)
+!end subroutine
b = anint(a)
end subroutine
-! CHECK-LABEL: func.func @_QPanint_test_real16(
-! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<f128> {fir.bindc_name = "a"},
-! CHECK-SAME: %[[VAL_1:.*]]: !fir.ref<f128> {fir.bindc_name = "b"}) {
-! CHECK: %[[VAL_2:.*]] = fir.load %[[VAL_0]] : !fir.ref<f128>
-! CHECK: %[[VAL_3:.*]] = "llvm.intr.round"(%[[VAL_2]]) : (f128) -> f128
-! CHECK: fir.store %[[VAL_3]] to %[[VAL_1]] : !fir.ref<f128>
-! CHECK: return
-! CHECK: }
-
-subroutine anint_test_real16(a, b)
- real(16) :: a, b
- b = anint(a)
-end subroutine
+! TODO: wait until fp128 is supported well in llvm.round
+!subroutine anint_test_real16(a, b)
+! real(16) :: a, b
+! b = anint(a)
+!end subroutine
! ALL-LABEL: @_QPtest_real10
! ALL: {{%[A-Za-z0-9._]+}} = fir.call @llvm.trunc.f80({{%[A-Za-z0-9._]+}}) : (f80) -> f80
-function test_real16(x)
- real(16) :: x, test_real16
- test_real16 = aint(x)
-end function
-
-! ALL-LABEL: @_QPtest_real16
-! ALL: {{%[A-Za-z0-9._]+}} = fir.call @llvm.trunc.f128({{%[A-Za-z0-9._]+}}) : (f128) -> f128
+! TODO: wait until fp128 is supported well in llvm.trunc
+!function test_real16(x)
+! real(16) :: x, test_real16
+! test_real16 = aint(x)
+!end function
//--- anint.f90
! RUN: bbc -emit-fir %t/anint.f90 -o - --math-runtime=fast | FileCheck --check-prefixes=ALL,FAST %t/anint.f90
! RELAXED: {{%[A-Za-z0-9._]+}} = "llvm.intr.round"({{%[A-Za-z0-9._]+}}) : (f80) -> f80
! PRECISE: {{%[A-Za-z0-9._]+}} = fir.call @llvm.round.f80({{%[A-Za-z0-9._]+}}) : (f80) -> f80
-function test_real16(x)
- real(16) :: x, test_real16
- test_real16 = anint(x)
-end function
-
-! ALL-LABEL: @_QPtest_real16
-! FAST: {{%[A-Za-z0-9._]+}} = "llvm.intr.round"({{%[A-Za-z0-9._]+}}) : (f128) -> f128
-! RELAXED: {{%[A-Za-z0-9._]+}} = "llvm.intr.round"({{%[A-Za-z0-9._]+}}) : (f128) -> f128
-! PRECISE: {{%[A-Za-z0-9._]+}} = fir.call @llvm.round.f128({{%[A-Za-z0-9._]+}}) : (f128) -> f128
+! TODO: wait until fp128 is supported well in llvm.round
+!function test_real16(x)
+! real(16) :: x, test_real16
+! test_real16 = anint(x)
+!end function
//--- atan.f90
! RUN: bbc -emit-fir %t/atan.f90 -o - --math-runtime=fast | FileCheck --check-prefixes=ALL,FAST %t/atan.f90