diff options
author | Sumanth Gundapaneni <sumanth.gundapaneni@amd.com> | 2024-07-23 11:34:34 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-23 20:34:34 +0400 |
commit | fc832d5349e1066b2ce8cec72bcbc39b9770758b (patch) | |
tree | ab3deb7e7fa2e95974df8d184b85381b1123dca5 /llvm/lib/CodeGen/TargetLoweringBase.cpp | |
parent | f227dc9ca24296cec0878b92d5ad3f853417e264 (diff) | |
download | llvm-fc832d5349e1066b2ce8cec72bcbc39b9770758b.zip llvm-fc832d5349e1066b2ce8cec72bcbc39b9770758b.tar.gz llvm-fc832d5349e1066b2ce8cec72bcbc39b9770758b.tar.bz2 |
[AMDGPU] Implement llvm.lround intrinsic lowering. (#98970)
This patch enables the target-independent lowering of llvm.lround via
GlobalISel. For SelectionDAG, the instrinsic is custom lowered for
AMDGPU. In order to support vector floating point input for llvm.lround,
this patch extends the target independent APIs and provide support for
scalarizing. pr98950 is needed to let verifier allow vector floating
point types
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringBase.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetLoweringBase.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp index 2be7fc9..bc5fc96 100644 --- a/llvm/lib/CodeGen/TargetLoweringBase.cpp +++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp @@ -824,13 +824,16 @@ void TargetLoweringBase::initActions() { Expand); // These library functions default to expand. - setOperationAction({ISD::FCBRT, ISD::FLOG, ISD::FLOG2, ISD::FLOG10, - ISD::FEXP, ISD::FEXP2, ISD::FEXP10, ISD::FFLOOR, - ISD::FNEARBYINT, ISD::FCEIL, ISD::FRINT, ISD::FTRUNC, - ISD::LROUND, ISD::LLROUND, ISD::LRINT, ISD::LLRINT, - ISD::FROUNDEVEN, ISD::FTAN, ISD::FACOS, ISD::FASIN, - ISD::FATAN, ISD::FCOSH, ISD::FSINH, ISD::FTANH}, - {MVT::f32, MVT::f64, MVT::f128}, Expand); + setOperationAction( + {ISD::FCBRT, ISD::FLOG, ISD::FLOG2, ISD::FLOG10, ISD::FEXP, + ISD::FEXP2, ISD::FEXP10, ISD::FFLOOR, ISD::FNEARBYINT, ISD::FCEIL, + ISD::FRINT, ISD::FTRUNC, ISD::LRINT, ISD::LLRINT, ISD::FROUNDEVEN, + ISD::FTAN, ISD::FACOS, ISD::FASIN, ISD::FATAN, ISD::FCOSH, + ISD::FSINH, ISD::FTANH}, + {MVT::f32, MVT::f64, MVT::f128}, Expand); + + setOperationAction({ISD::LROUND, ISD::LLROUND}, + {MVT::f32, MVT::f64, MVT::f128}, LibCall); setOperationAction({ISD::FTAN, ISD::FACOS, ISD::FASIN, ISD::FATAN, ISD::FCOSH, ISD::FSINH, ISD::FTANH}, |