[flang-commits] [flang] 19bda85 - [flang] simplify ieee_logb.f90 (NFC) (#229644)

via flang-commits flang-commits at lists.llvm.org
Wed Oct 14 04:55:10 PDT 2026


Author: Kelvin Li
Date: 2026-10-14T07:55:04-04:00
New Revision: 19bda85a1c923a14ef784978d04c88f3a787c2ed

URL: https://github.com/llvm/llvm-project/commit/19bda85a1c923a14ef784978d04c88f3a787c2ed
DIFF: https://github.com/llvm/llvm-project/commit/19bda85a1c923a14ef784978d04c88f3a787c2ed.diff

LOG: [flang] simplify ieee_logb.f90 (NFC) (#229644)

This patch is to simplify the test to focus on lowering of the ieee_logb
intrinsic so that it can be tested with other targets. The test is also
enabled for the PPC target.

Added: 
    

Modified: 
    flang/test/Lower/Intrinsics/ieee_logb.f90

Removed: 
    


################################################################################
diff  --git a/flang/test/Lower/Intrinsics/ieee_logb.f90 b/flang/test/Lower/Intrinsics/ieee_logb.f90
index 185d034d3707d3..09191dcc633197 100644
--- a/flang/test/Lower/Intrinsics/ieee_logb.f90
+++ b/flang/test/Lower/Intrinsics/ieee_logb.f90
@@ -1,4 +1,3 @@
-! UNSUPPORTED: target=powerpc{{.*}}
 ! RUN: bbc -emit-fir -o - %s | FileCheck %s
 
 ! CHECK-LABEL: c.func @_QPout
@@ -6,109 +5,44 @@ subroutine out(x)
   use ieee_arithmetic
   integer, parameter :: k = 8
 
-  ! CHECK:     %[[V_60:[0-9]+]] = fir.alloca !fir.logical<4> <{bindc_name = "l", uniq_name = "_QFoutEl"}>
-  ! CHECK:     %[[V_61:[0-9]+]] = fir.declare %[[V_60]] uniq_name("_QFoutEl") : (!fir.ref<!fir.logical<4>>) -> !fir.ref<!fir.logical<4>>
-  ! CHECK:     %[[V_62:[0-9]+]] = fir.alloca f64 <{bindc_name = "r", uniq_name = "_QFoutEr"}>
-  ! CHECK:     %[[V_63:[0-9]+]] = fir.declare %[[V_62]] uniq_name("_QFoutEr") : (!fir.ref<f64>) -> !fir.ref<f64>
-  ! CHECK:     %[[V_64:[0-9]+]] = fir.declare %arg0 dummy_scope %{{[0-9]+}} arg {{[0-9]+}} uniq_name("_QFoutEx") : (!fir.ref<f64>, !fir.dscope) -> !fir.ref<f64>
+  ! CHECK:     %[[V_59:[0-9]+]] = fir.alloca f64 <{bindc_name = "r", uniq_name = "_QFoutEr"}>
+  ! CHECK:     %[[V_60:[0-9]+]] = fir.declare %[[V_59]] uniq_name("_QFoutEr") : (!fir.ref<f64>) -> !fir.ref<f64>
+  ! CHECK:     %[[V_61:[0-9]+]] = fir.declare %arg0 dummy_scope %{{[0-9]+}} arg {{[0-9]+}} uniq_name("_QFoutEx") : (!fir.ref<f64>, !fir.dscope) -> !fir.ref<f64>
   real(k) :: x, r
-  logical :: L
 
-  ! CHECK:     %[[V_65:[0-9]+]] = fir.address_of(@_QQro._QM__fortran_builtinsT__builtin_ieee_flag_type.0) : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>
-  ! CHECK:     %[[V_66:[0-9]+]] = fir.declare %[[V_65]] uniq_name("_QQro._QM__fortran_builtinsT__builtin_ieee_flag_type.0") fortran_attrs<parameter> : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>
-  ! CHECK:     %[[V_68:[0-9]+]] = fir.coordinate_of %[[V_66]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
-  ! CHECK:     %[[V_69:[0-9]+]] = fir.load %[[V_68]] : !fir.ref<i8>
-  ! CHECK:     %[[V_70:[0-9]+]] = fir.convert %[[V_69]] : (i8) -> i32
-  ! CHECK:     %[[V_71:[0-9]+]] = fir.call @_FortranAMapException(%[[V_70]]) fastmath<contract> : (i32) -> i32
-  ! CHECK:     fir.call {{.*}}feclearexcept(%[[V_71]]) fastmath<contract> : (i32)
-  call ieee_set_flag(ieee_divide_by_zero, .false.)
-
-  ! CHECK:     %[[V_72:[0-9]+]] = fir.load %[[V_64]] : !fir.ref<f64>
-  ! CHECK:     %[[V_73:[0-9]+]] = arith.bitcast %[[V_72]] : f64 to i64
-  ! CHECK:     %[[V_74:[0-9]+]] = arith.cmpf oeq, %[[V_72]], %cst{{[_0-9]*}} {{.*}} : f64
-  ! CHECK:     %[[V_75:[0-9]+]] = fir.if %[[V_74]] -> (f64) {
-  ! CHECK:       %[[V_101:[0-9]+]] = fir.call @_FortranAMapException(%c4{{.*}}) fastmath<contract> : (i32) -> i32
-  ! CHECK:       fir.call {{.*}}feraiseexcept(%[[V_101]]) fastmath<contract> : (i32)
+  ! CHECK:     %[[V_62:[0-9]+]] = fir.load %[[V_61]] : !fir.ref<f64>
+  ! CHECK:     %[[V_63:[0-9]+]] = arith.bitcast %[[V_62]] : f64 to i64
+  ! CHECK:     %[[V_64:[0-9]+]] = arith.cmpf oeq, %[[V_62]], %cst{{[_0-9]*}} {{.*}} : f64
+  ! CHECK:     %[[V_65:[0-9]+]] = fir.if %[[V_64]] -> (f64) {
+  ! CHECK:       %[[V_66:[0-9]+]] = fir.call @_FortranAMapException(%c4{{.*}}) fastmath<contract> : (i32) -> i32
+  ! CHECK:       fir.call {{.*}}feraiseexcept(%[[V_66]]) fastmath<contract> : (i32)
   ! CHECK:       fir.result %cst{{[_0-9]*}} : f64
   ! CHECK:     } else {
-  ! CHECK:       %[[V_101:[0-9]+]] = arith.shli %[[V_73]], %c1{{.*}} : i64
-  ! CHECK:       %[[V_102:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_72]]) <{bit = 504 : i32}> : (f64) -> i1
-  ! CHECK:       %[[V_103:[0-9]+]] = fir.if %[[V_102]] -> (f64) {
-  ! CHECK:         %[[V_104:[0-9]+]] = arith.shrui %[[V_101]], %c53{{.*}} : i64
-  ! CHECK:         %[[V_105:[0-9]+]] = arith.subi %[[V_104]], %c1023{{.*}} : i64
-  ! CHECK:         %[[V_106:[0-9]+]] = fir.convert %[[V_105]] : (i64) -> f64
-  ! CHECK:         fir.result %[[V_106]] : f64
+  ! CHECK:       %[[V_66:[0-9]+]] = arith.shli %[[V_63]], %c1{{.*}} : i64
+  ! CHECK:       %[[V_67:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_62]]) <{bit = 504 : i32}> : (f64) -> i1
+  ! CHECK:       %[[V_68:[0-9]+]] = fir.if %[[V_67]] -> (f64) {
+  ! CHECK:         %[[V_69:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_62]]) <{bit = 360 : i32}> : (f64) -> i1
+  ! CHECK:         %[[V_70:[0-9]+]] = fir.if %[[V_69]] -> (f64) {
+  ! CHECK:           %[[V_71:[0-9]+]] = arith.shrui %[[V_66]], %c53{{.*}} : i64
+  ! CHECK:           %[[V_72:[0-9]+]] = arith.subi %[[V_71]], %c1023{{.*}} : i64
+  ! CHECK:           %[[V_73:[0-9]+]] = fir.convert %[[V_72]] : (i64) -> f64
+  ! CHECK:           fir.result %[[V_73]] : f64
+  ! CHECK:         } else {
+  ! CHECK:           %[[V_71:[0-9]+]] = arith.shli %[[V_63]], %c12{{.*}} : i64
+  ! CHECK:           %[[V_72:[0-9]+]] = math.ctlz %[[V_71]] : i64
+  ! CHECK:           %[[V_73:[0-9]+]] = fir.convert %[[V_72]] : (i64) -> i32
+  ! CHECK:           %[[V_74:[0-9]+]] = arith.subi %c-1023{{.*}}, %[[V_73]] : i32
+  ! CHECK:           %[[V_75:[0-9]+]] = fir.convert %[[V_74]] : (i32) -> f64
+  ! CHECK:           fir.result %[[V_75]] : f64
+  ! CHECK:         }
+  ! CHECK:         fir.result %[[V_70]] : f64
   ! CHECK:       } else {
-  ! CHECK:         %[[V_104:[0-9]+]] = arith.shrui %[[V_101]], %c1{{.*}} : i64
-  ! CHECK:         %[[V_105:[0-9]+]] = arith.bitcast %[[V_104]] : i64 to f64
-  ! CHECK:         fir.result %[[V_105]] : f64
+  ! CHECK:         %[[V_69:[0-9]+]] = arith.shrui %[[V_66]], %c1{{.*}} : i64
+  ! CHECK:         %[[V_70:[0-9]+]] = arith.bitcast %[[V_69]] : i64 to f64
+  ! CHECK:         fir.result %[[V_70]] : f64
   ! CHECK:       }
-  ! CHECK:       fir.result %[[V_103]] : f64
+  ! CHECK:       fir.result %[[V_68]] : f64
   ! CHECK:     }
-  ! CHECK:     fir.store %[[V_75]] to %[[V_63]] : !fir.ref<f64>
+  ! CHECK:     fir.store %[[V_65]] to %[[V_60]] : !fir.ref<f64>
   r = ieee_logb(x)
-
-  ! CHECK:     %[[V_76:[0-9]+]] = fir.declare %[[V_65]] uniq_name("_QQro._QM__fortran_builtinsT__builtin_ieee_flag_type.0") fortran_attrs<parameter> : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>
-  ! CHECK:     %[[V_77:[0-9]+]] = fir.coordinate_of %[[V_76]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
-  ! CHECK:     %[[V_78:[0-9]+]] = fir.load %[[V_77]] : !fir.ref<i8>
-  ! CHECK:     %[[V_79:[0-9]+]] = fir.convert %[[V_78]] : (i8) -> i32
-  ! CHECK:     %[[V_80:[0-9]+]] = fir.call @_FortranAMapException(%[[V_79]]) fastmath<contract> : (i32) -> i32
-  ! CHECK:     %[[V_81:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_80]]) fastmath<contract> : (i32) -> i32
-  ! CHECK:     %[[V_82:[0-9]+]] = arith.cmpi ne, %[[V_81]], %c0{{.*}} : i32
-  ! CHECK:     %[[V_83:[0-9]+]] = fir.convert %[[V_82]] : (i1) -> !fir.logical<4>
-  ! CHECK:     fir.store %[[V_83]] to %[[V_61]] : !fir.ref<!fir.logical<4>>
-  call ieee_get_flag(ieee_divide_by_zero, L)
-
-  8 format ('  kind=8  ', f12.2, z18.16, f9.1, l3, '  ')
-  write(*, 8) x, x, r, L
-end
-
-  use ieee_arithmetic
-  integer, parameter :: k = 8
-  real(k) :: x, r
-
-  call out(ieee_value(x, ieee_signaling_nan))
-  call out(ieee_value(x, ieee_quiet_nan))
-  call out(ieee_value(x, ieee_negative_inf))
-  call out( -huge(x))
-  call out( -huge(x)/2)
-  call out(-sqrt(huge(x)))
-  call out(-2000.0_k)
-  call out(   -9.9_k)
-  call out(   -9.0_k)
-  call out(   -8.0_k)
-  call out(   -7.0_k)
-  call out(   -6.0_k)
-  call out(   -5.0_k)
-  call out(   -4.0_k)
-  call out(   -3.9_k)
-  call out(   -3.0_k)
-  call out(   -2.0_k)
-  call out(   -1.1_k)
-  call out(ieee_value(x, ieee_negative_normal))
-  call out( -.0001_k)
-  call out( -tiny(x))
-  call out(ieee_value(x, ieee_negative_subnormal))
-  call out(ieee_value(x, ieee_negative_zero))
-  call out(ieee_value(x, ieee_positive_zero))
-  call out(ieee_value(x, ieee_positive_subnormal))
-  call out(tiny(x))
-  call out(.0001_k)
-  call out(ieee_value(x, ieee_positive_normal))
-  call out(   1.1_k)
-  call out(   2.0_k)
-  call out(   3.0_k)
-  call out(   3.9_k)
-  call out(   4.0_k)
-  call out(   5.0_k)
-  call out(   6.0_k)
-  call out(   7.0_k)
-  call out(   8.0_k)
-  call out(   9.0_k)
-  call out(   9.9_k)
-  call out(2000.0_k)
-  call out( sqrt(huge(x)))
-  call out( huge(x)/2)
-  call out( huge(x))
-  call out(ieee_value(x, ieee_positive_inf))
 end


        


More information about the flang-commits mailing list