Lower Fortran intrinsic to a runtime call/llvm intrinsic
authorKiran Chandramohan <kiran.chandramohan@arm.com>
Fri, 25 Feb 2022 17:30:44 +0000 (17:30 +0000)
committerKiran Chandramohan <kiran.chandramohan@arm.com>
Fri, 25 Feb 2022 17:41:48 +0000 (17:41 +0000)
commit7c0acc1a989ae2765e0b7e20d6bc005280351956
tree05b4332dca05355f820e73357a550c90fd78a40a
parentccbbb4f6c716ba14d98cceff08a81777228ab4d1
Lower Fortran intrinsic to a runtime call/llvm intrinsic

This patch brings in code which can lower a Fortran intrinsic to
a runtime call or an llvm intrinsic. For math intrinsics the
runtime call is to the `math` or `pgmath` library. Non-math
intrinsics are covered by the Flang runtime. A distance computation
mechanism is introduced to find the runtime function that closely
matches the types of the intrinsic call.

In this patch, the `abs` intrinsic is lowered in the following way,
-> Integer version is lowered as a group of MLIR/FIR operations
-> Real version is lowered to llvm intrinsics
-> Complex version is lowered to the `math_hypot` runtime function

This patch is part of upstreaming from the fir-dev branch of https://github.com/flang-compiler/f18-llvm-project

Reviewed By: clementval

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

Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: zacharyselk <zrselk@gmail.com>
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
Co-authored-by: Valentin Clement <clementval@gmail.com>
flang/lib/Lower/IntrinsicCall.cpp
flang/test/Lower/Intrinsics/abs.f90 [new file with mode: 0644]
flang/test/Lower/Intrinsics/missing-math-runtime.f90 [new file with mode: 0644]