From 04b3725e0dd5f7c2822a5164476318094d76aa17 Mon Sep 17 00:00:00 2001 From: Arpit Jaiswal Date: Fri, 29 Dec 2023 00:02:30 +0000 Subject: [PATCH 1/2] Fix for identifying builtin sqrt --- tools/cgeist/Lib/CGCall.cc | 16 ++++++++++++++++ tools/cgeist/Lib/clang-mlir.cc | 14 +------------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/tools/cgeist/Lib/CGCall.cc b/tools/cgeist/Lib/CGCall.cc index c5e4d40ca2d9..695d00b56edb 100644 --- a/tools/cgeist/Lib/CGCall.cc +++ b/tools/cgeist/Lib/CGCall.cc @@ -541,6 +541,22 @@ MLIRScanner::EmitClangBuiltinCallExpr(clang::CallExpr *expr) { ValueCategory(builder.create(loc, 0, resultType), /*isRef*/ false)); } +case Builtin::BIsqrt: + case Builtin::BIsqrtf: + case Builtin::BIsqrtl: + case Builtin::BI__builtin_sqrt: + case Builtin::BI__builtin_sqrtf: + case Builtin::BI__builtin_sqrtf16: + case Builtin::BI__builtin_sqrtl: + case Builtin::BI__builtin_sqrtf128: + case Builtin::BI__builtin_elementwise_sqrt: { + auto v = Visit(expr->getArg(0)); + assert(!v.isReference); + Value res = builder.create(loc, v.val); + auto postTy = getMLIRType(expr->getType()); + return success( + ValueCategory(res, /*isRef*/ false)); + } case Builtin::BI__builtin_clzs: case Builtin::BI__builtin_clz: case Builtin::BI__builtin_clzl: diff --git a/tools/cgeist/Lib/clang-mlir.cc b/tools/cgeist/Lib/clang-mlir.cc index a3f14408b2c4..806810d31196 100644 --- a/tools/cgeist/Lib/clang-mlir.cc +++ b/tools/cgeist/Lib/clang-mlir.cc @@ -1824,19 +1824,7 @@ MLIRScanner::EmitBuiltinOps(clang::CallExpr *expr) { /*isReference*/ false), true); } - if (sr->getDecl()->getIdentifier() && - (sr->getDecl()->getName() == "sqrtf" || - sr->getDecl()->getName() == "sqrt")) { - std::vector args; - for (auto a : expr->arguments()) { - args.push_back(Visit(a).getValue(loc, builder)); - } - return make_pair( - ValueCategory(builder.create(loc, args[0]), - /*isReference*/ false), - true); - } - if (sr->getDecl()->getIdentifier() && + if (sr->getDecl()->getIdentifier() && (sr->getDecl()->getName() == "expf" || sr->getDecl()->getName() == "exp")) { std::vector args; From 3b193b61ac14602e7f1b74b535ad4811e2927b03 Mon Sep 17 00:00:00 2001 From: Arpit Jaiswal Date: Fri, 29 Dec 2023 01:28:20 +0000 Subject: [PATCH 2/2] Lint fix --- tools/cgeist/Lib/CGCall.cc | 5 ++--- tools/cgeist/Lib/clang-mlir.cc | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/cgeist/Lib/CGCall.cc b/tools/cgeist/Lib/CGCall.cc index 695d00b56edb..bbabd848517f 100644 --- a/tools/cgeist/Lib/CGCall.cc +++ b/tools/cgeist/Lib/CGCall.cc @@ -541,7 +541,7 @@ MLIRScanner::EmitClangBuiltinCallExpr(clang::CallExpr *expr) { ValueCategory(builder.create(loc, 0, resultType), /*isRef*/ false)); } -case Builtin::BIsqrt: + case Builtin::BIsqrt: case Builtin::BIsqrtf: case Builtin::BIsqrtl: case Builtin::BI__builtin_sqrt: @@ -554,8 +554,7 @@ case Builtin::BIsqrt: assert(!v.isReference); Value res = builder.create(loc, v.val); auto postTy = getMLIRType(expr->getType()); - return success( - ValueCategory(res, /*isRef*/ false)); + return success(ValueCategory(res, /*isRef*/ false)); } case Builtin::BI__builtin_clzs: case Builtin::BI__builtin_clz: diff --git a/tools/cgeist/Lib/clang-mlir.cc b/tools/cgeist/Lib/clang-mlir.cc index 806810d31196..36e8af8c7a6d 100644 --- a/tools/cgeist/Lib/clang-mlir.cc +++ b/tools/cgeist/Lib/clang-mlir.cc @@ -1824,7 +1824,7 @@ MLIRScanner::EmitBuiltinOps(clang::CallExpr *expr) { /*isReference*/ false), true); } - if (sr->getDecl()->getIdentifier() && + if (sr->getDecl()->getIdentifier() && (sr->getDecl()->getName() == "expf" || sr->getDecl()->getName() == "exp")) { std::vector args;