44 lines · plain
1! RUN: bbc -emit-hlfir %s -o - | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{,CHECK-KIND10%}%if flang-supports-f128-math %{,CHECK-KIND16%}2 3! SET_EXPONENT4! CHECK-LABEL: set_exponent_test_45subroutine set_exponent_test_4(x, i)6 real(kind = 4) :: x7 integer :: i8 x = set_exponent(x, i)9! CHECK: %[[VAL_3:.*]]:2 = hlfir.declare {{.*}}"_QFset_exponent_test_4Ei"10! CHECK: %[[VAL_4:.*]]:2 = hlfir.declare {{.*}}"_QFset_exponent_test_4Ex"11! CHECK: %[[VAL_5:.*]] = fir.load %[[VAL_4]]#0 : !fir.ref<f32>12! CHECK: %[[VAL_6:.*]] = fir.load %[[VAL_3]]#0 : !fir.ref<i32>13! CHECK: %[[VAL_7:.*]] = fir.convert %[[VAL_6]] : (i32) -> i6414! CHECK: %[[VAL_8:.*]] = fir.call @_FortranASetExponent4(%[[VAL_5]], %[[VAL_7]]) fastmath<contract> : (f32, i64) -> f3215! CHECK: hlfir.assign %[[VAL_8]] to %[[VAL_4]]#0 : f32, !fir.ref<f32>16end subroutine17 18 19! CHECK-LABEL: set_exponent_test_820subroutine set_exponent_test_8(x, i)21 real(kind = 8) :: x22 integer :: i23 x = set_exponent(x, i)24! CHECK: fir.call @_FortranASetExponent8(%{{.*}}, %{{.*}}) {{.*}}: (f64, i64) -> f6425end subroutine26 27! CHECK-KIND10-LABEL: set_exponent_test_1028subroutine set_exponent_test_10(x, i)29 integer, parameter :: kind10 = merge(10, 4, selected_real_kind(p=18).eq.10)30 real(kind = kind10) :: x31 integer :: i32 x = set_exponent(x, i)33! CHECK-KIND10: fir.call @_FortranASetExponent10(%{{.*}}, %{{.*}}) {{.*}}: (f80, i64) -> f8034end subroutine35 36! CHECK-KIND16-LABEL: set_exponent_test_1637subroutine set_exponent_test_16(x, i)38 integer, parameter :: kind16 = merge(16, 4, selected_real_kind(p=33).eq.16)39 real(kind = kind16) :: x40 integer :: i41 x = set_exponent(x, i)42! CHECK-KIND16: fir.call @_FortranASetExponent16(%{{.*}}, %{{.*}}) {{.*}}: (f128, i64) -> f12843end subroutine44