Files
clang-p2996/flang/test/Lower/sqrt.f90
Kiran Chandramohan fea20cb990 [Flang] Lower the sqrt intrinsics
The intrinsic computes the square root for real and complex numbers. By
default they are lowered to runtime calls to libpgmath. With the llvm
option, it can be lowered to llvm intrinsics (not all types .eg. complex
are supported for llvm lowering).

This is part of the upstreaming effort from the fir-dev branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project

Reviewed By: schweitz

Differential Revision: https://reviews.llvm.org/D122018

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
2022-03-22 15:05:21 +00:00

43 lines
923 B
Fortran

! RUN: bbc -emit-fir %s -o - | FileCheck %s
! RUN: %flang_fc1 -emit-fir %s -o - | FileCheck %s
! CHECK-LABEL: sqrt_testr
subroutine sqrt_testr(a, b)
real :: a, b
! CHECK: fir.call @fir.sqrt.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.f64.f64
b = sqrt(a)
end subroutine
! CHECK-LABEL: sqrt_testc
subroutine sqrt_testc(z)
complex :: z
! CHECK: fir.call @fir.sqrt.z4.z4
z = sqrt(z)
end subroutine
! CHECK-LABEL: sqrt_testcd
subroutine sqrt_testcd(z)
complex(kind=8) :: z
! CHECK: fir.call @fir.sqrt.z8.z8
z = sqrt(z)
end subroutine
! CHECK-LABEL: @fir.sqrt.f32.f32
! CHECK: fir.call {{.*}}mth_i_sqrt
! CHECK-LABEL: @fir.sqrt.f64.f64
! CHECK: fir.call {{.*}}mth_i_dsqrt
! CHECK-LABEL: func private @fir.sqrt.z4.z4
! CHECK: fir.call {{.*}}fc_sqrt
! CHECK-LABEL: @fir.sqrt.z8.z8
! CHECK: fir.call {{.*}}fz_sqrt