[all-commits] [llvm/llvm-project] 3ccd4c: [flang] Support aint/anint for 80/128 bit in lowering
PeixinQiao via All-commits
all-commits at lists.llvm.org
Fri Jul 22 23:46:16 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 3ccd4ce29ca7f59eb12b077705cde2c11ac13aae
https://github.com/llvm/llvm-project/commit/3ccd4ce29ca7f59eb12b077705cde2c11ac13aae
Author: Peixin Qiao <qiaopeixin at huawei.com>
Date: 2022-07-23 (Sat, 23 Jul 2022)
Changed paths:
M flang/include/flang/Runtime/numeric.h
M flang/lib/Lower/IntrinsicCall.cpp
M flang/runtime/numeric.cpp
M flang/test/Lower/Intrinsics/aint.f90
M flang/test/Lower/Intrinsics/anint.f90
M flang/test/Lower/math-lowering.f90
M flang/unittests/Runtime/Numeric.cpp
Log Message:
-----------
[flang] Support aint/anint for 80/128 bit in lowering
For aint/anint, LLVM conversion operations llvm.trunc and llvm.round
can support the edge case of aint(-0.) and anint(-0.). The output is -0.
and it is the same of `gfortran` and `classic flang`, while the output
of `ifort` is 0.. The `real(10)/real(16)` is not supported before.
Support it and remove the runtime functions for aint/anint.
For nint, `gfortran`, `ifort`, and LLVM Flang using llvm.lround have
different results when the magnitude of argument is more than the max of
result value range. So delay its support in lowering after more
investigations.
Reviewed By: vzakhari
Differential Revision: https://reviews.llvm.org/D130024
More information about the All-commits
mailing list