1! RUN: bbc -emit-fir %s -o - | FileCheck %s 2! RUN: flang -fc1 -emit-fir %s -o - | FileCheck %s 3 4! CHECK-LABEL: isnan_f32 5subroutine isnan_f32(r) 6 real :: r 7 i = isnan(r) 8 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f32) -> i1 9 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 10end subroutine isnan_f32 11 12! CHECK-LABEL: ieee_is_nan_f32 13subroutine ieee_is_nan_f32(r) 14 use ieee_arithmetic 15 real :: r 16 i = ieee_is_nan(r) 17 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f32) -> i1 18 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 19end subroutine ieee_is_nan_f32 20 21! CHECK-LABEL: isnan_f64 22subroutine isnan_f64(r) 23 real(KIND=8) :: r 24 i = isnan(r) 25 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f64) -> i1 26 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 27end subroutine isnan_f64 28 29! CHECK-LABEL: ieee_is_nan_f64 30subroutine ieee_is_nan_f64(r) 31 use ieee_arithmetic 32 real(KIND=8) :: r 33 i = ieee_is_nan(r) 34 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f64) -> i1 35 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 36end subroutine ieee_is_nan_f64 37 38! CHECK-LABEL: isnan_f80 39subroutine isnan_f80(r) 40 real(KIND=10) :: r 41 i = isnan(r) 42 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f80) -> i1 43 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 44end subroutine isnan_f80 45 46! CHECK-LABEL: ieee_is_nan_f80 47subroutine ieee_is_nan_f80(r) 48 use ieee_arithmetic 49 real(KIND=10) :: r 50 i = ieee_is_nan(r) 51 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f80) -> i1 52 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 53end subroutine ieee_is_nan_f80 54 55! CHECK-LABEL: isnan_f128 56subroutine isnan_f128(r) 57 real(KIND=16) :: r 58 i = isnan(r) 59 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f128) -> i1 60 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 61end subroutine isnan_f128 62 63! CHECK-LABEL: ieee_is_nan_f128 64subroutine ieee_is_nan_f128(r) 65 use ieee_arithmetic 66 real(KIND=16) :: r 67 i = ieee_is_nan(r) 68 ! CHECK: %[[l:.*]] = "llvm.intr.is.fpclass"(%{{.*}}) <{bit = 3 : i32}> : (f128) -> i1 69 ! CHECK: fir.convert %[[l]] : (i1) -> !fir.logical<4> 70end subroutine ieee_is_nan_f128 71