! RUN: bbc -emit-fir -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CHECK,CMPLX-PRECISE" ! RUN: bbc --math-runtime=precise -emit-fir -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CMPLX-PRECISE" ! RUN: bbc --disable-mlir-complex -emit-fir -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CMPLX-PRECISE" ! RUN: %flang_fc1 -emit-fir -mllvm -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CHECK,CMPLX-PRECISE" ! RUN: %flang_fc1 -fapprox-func -emit-fir -mllvm -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CMPLX-FAST" ! RUN: %flang_fc1 -emit-fir -mllvm --math-runtime=precise -mllvm -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CMPLX-PRECISE" ! RUN: %flang_fc1 -emit-fir -mllvm --disable-mlir-complex -mllvm -outline-intrinsics %s -o - | FileCheck %s --check-prefixes="CMPLX-PRECISE" ! CHECK-LABEL: sqrt_testr subroutine sqrt_testr(a, b) real :: a, b ! CHECK: fir.call @fir.sqrt.contract.f32.f32 b = sqrt(a) end subroutine ! CHECK-LABEL: sqrt_testd subroutine sqrt_testd(a, b) real(kind=8) :: a, b ! CHECK: fir.call @fir.sqrt.contract.f64.f64 b = sqrt(a) end subroutine ! CHECK-LABEL: sqrt_testc subroutine sqrt_testc(z) complex :: z ! CHECK: fir.call @fir.sqrt.contract.z4.z4 z = sqrt(z) end subroutine ! CHECK-LABEL: sqrt_testcd subroutine sqrt_testcd(z) complex(kind=8) :: z ! CHECK: fir.call @fir.sqrt.contract.z8.z8 z = sqrt(z) end subroutine ! CHECK-LABEL: @fir.sqrt.contract.f32.f32 ! CHECK: math.sqrt %{{.*}} : f32 ! CHECK-LABEL: @fir.sqrt.contract.f64.f64 ! CHECK: math.sqrt %{{.*}} : f64 ! CHECK-LABEL: func private @fir.sqrt.contract.z4.z4 ! CMPLX-FAST: complex.sqrt %{{.*}} : complex ! CMPLX-PRECISE: fir.call @csqrtf ! CHECK-LABEL: @fir.sqrt.contract.z8.z8 ! CMPLX-FAST: complex.sqrt %{{.*}} : complex ! CMPLX-PRECISE: fir.call @csqrt