Skip to content

Commit 8df052e

Browse files
authored
Merge pull request #2273 from Thirumalai-Shaktivel/intrinsics_06
Rename IntrinsicFunction to IntrinsicScalarFunction
2 parents 5b945fc + 3804100 commit 8df052e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+395
-397
lines changed

src/libasr/ASR.asdl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ expr
235235
| NamedExpr(expr target, expr value, ttype type)
236236
| FunctionCall(symbol name, symbol? original_name, call_arg* args,
237237
ttype type, expr? value, expr? dt)
238-
| IntrinsicFunction(int intrinsic_id, expr* args, int overload_id,
238+
| IntrinsicScalarFunction(int intrinsic_id, expr* args, int overload_id,
239239
ttype? type, expr? value)
240240
| IntrinsicArrayFunction(int arr_intrinsic_id, expr* args, int overload_id,
241241
ttype? type, expr? value)

src/libasr/asr_utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1293,7 +1293,7 @@ ASR::asr_t* make_Cast_t_value(Allocator &al, const Location &a_loc,
12931293
args.reserve(al, 1);
12941294
args.push_back(al, a_arg);
12951295
LCompilers::ASRUtils::create_intrinsic_function create_function =
1296-
LCompilers::ASRUtils::IntrinsicFunctionRegistry::get_create_function("SymbolicInteger");
1296+
LCompilers::ASRUtils::IntrinsicScalarFunctionRegistry::get_create_function("SymbolicInteger");
12971297
value = ASR::down_cast<ASR::expr_t>(create_function(al, a_loc, args,
12981298
[](const std::string&, const Location&) {
12991299
}));

src/libasr/asr_utils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4167,7 +4167,7 @@ static inline ASR::expr_t* cast_to_descriptor(Allocator& al, ASR::expr_t* arg) {
41674167
return arg;
41684168
}
41694169

4170-
static inline ASR::asr_t* make_IntrinsicFunction_t_util(
4170+
static inline ASR::asr_t* make_IntrinsicScalarFunction_t_util(
41714171
Allocator &al, const Location &a_loc, int64_t a_intrinsic_id,
41724172
ASR::expr_t** a_args, size_t n_args, int64_t a_overload_id,
41734173
ASR::ttype_t* a_type, ASR::expr_t* a_value) {
@@ -4186,7 +4186,7 @@ static inline ASR::asr_t* make_IntrinsicFunction_t_util(
41864186
}
41874187
}
41884188

4189-
return ASR::make_IntrinsicFunction_t(al, a_loc, a_intrinsic_id,
4189+
return ASR::make_IntrinsicScalarFunction_t(al, a_loc, a_intrinsic_id,
41904190
a_args, n_args, a_overload_id, a_type, a_value);
41914191
}
41924192

src/libasr/asr_verify.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -974,16 +974,16 @@ class VerifyVisitor : public BaseWalkVisitor<VerifyVisitor>
974974
}
975975
}
976976

977-
void visit_IntrinsicFunction(const ASR::IntrinsicFunction_t& x) {
977+
void visit_IntrinsicScalarFunction(const ASR::IntrinsicScalarFunction_t& x) {
978978
if( !check_external ) {
979-
BaseWalkVisitor<VerifyVisitor>::visit_IntrinsicFunction(x);
979+
BaseWalkVisitor<VerifyVisitor>::visit_IntrinsicScalarFunction(x);
980980
return ;
981981
}
982-
ASRUtils::verify_function verify_ = ASRUtils::IntrinsicFunctionRegistry
982+
ASRUtils::verify_function verify_ = ASRUtils::IntrinsicScalarFunctionRegistry
983983
::get_verify_function(x.m_intrinsic_id);
984984
LCOMPILERS_ASSERT(verify_ != nullptr);
985985
verify_(x, diagnostics);
986-
BaseWalkVisitor<VerifyVisitor>::visit_IntrinsicFunction(x);
986+
BaseWalkVisitor<VerifyVisitor>::visit_IntrinsicScalarFunction(x);
987987
}
988988

989989
void visit_IntrinsicArrayFunction(const ASR::IntrinsicArrayFunction_t& x) {

src/libasr/codegen/asr_to_c_cpp.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2739,12 +2739,12 @@ PyMODINIT_FUNC PyInit_lpython_module_)" + fn_name + R"((void) {
27392739
src = indent + sym_name + "(" + construct_call_args(x.n_args, x.m_args) + ");\n";
27402740
}
27412741

2742-
#define SET_INTRINSIC_NAME(X, func_name) \
2743-
case (static_cast<int64_t>(ASRUtils::IntrinsicFunctions::X)) : { \
2744-
out += func_name; break; \
2742+
#define SET_INTRINSIC_NAME(X, func_name) \
2743+
case (static_cast<int64_t>(ASRUtils::IntrinsicScalarFunctions::X)) : { \
2744+
out += func_name; break; \
27452745
}
27462746

2747-
void visit_IntrinsicFunction(const ASR::IntrinsicFunction_t &x) {
2747+
void visit_IntrinsicScalarFunction(const ASR::IntrinsicScalarFunction_t &x) {
27482748
std::string out;
27492749
std::string indent(4, ' ');
27502750
switch (x.m_intrinsic_id) {
@@ -2762,7 +2762,7 @@ PyMODINIT_FUNC PyInit_lpython_module_)" + fn_name + R"((void) {
27622762
SET_INTRINSIC_NAME(Exp2, "exp2");
27632763
SET_INTRINSIC_NAME(Expm1, "expm1");
27642764
default : {
2765-
throw LCompilersException("IntrinsicFunction: `"
2765+
throw LCompilersException("IntrinsicScalarFunction: `"
27662766
+ ASRUtils::get_intrinsic_name(x.m_intrinsic_id)
27672767
+ "` is not implemented");
27682768
}

src/libasr/codegen/asr_to_julia.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1893,12 +1893,7 @@ class ASRToJuliaVisitor : public ASR::BaseVisitor<ASRToJuliaVisitor>
18931893
src = out;
18941894
}
18951895

1896-
#define SET_INTRINSIC_NAME(X, func_name) \
1897-
case (static_cast<int64_t>(ASRUtils::IntrinsicFunctions::X)) : { \
1898-
out += func_name; break; \
1899-
}
1900-
1901-
void visit_IntrinsicFunction(const ASR::IntrinsicFunction_t &x) {
1896+
void visit_IntrinsicScalarFunction(const ASR::IntrinsicScalarFunction_t &x) {
19021897
std::string out;
19031898
LCOMPILERS_ASSERT(x.n_args == 1);
19041899
visit_expr(*x.m_args[0]);
@@ -1917,7 +1912,7 @@ class ASRToJuliaVisitor : public ASR::BaseVisitor<ASRToJuliaVisitor>
19171912
SET_INTRINSIC_NAME(Exp2, "exp2");
19181913
SET_INTRINSIC_NAME(Expm1, "expm1");
19191914
default : {
1920-
throw LCompilersException("IntrinsicFunction: `"
1915+
throw LCompilersException("IntrinsicScalarFunction: `"
19211916
+ ASRUtils::get_intrinsic_name(x.m_intrinsic_id)
19221917
+ "` is not implemented");
19231918
}

src/libasr/codegen/asr_to_llvm.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1779,9 +1779,9 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
17791779
llvm_utils->set_api->remove_item(pset, el, *module, asr_el_type);
17801780
}
17811781

1782-
void visit_IntrinsicFunction(const ASR::IntrinsicFunction_t& x) {
1783-
switch (static_cast<ASRUtils::IntrinsicFunctions>(x.m_intrinsic_id)) {
1784-
case ASRUtils::IntrinsicFunctions::ListIndex: {
1782+
void visit_IntrinsicScalarFunction(const ASR::IntrinsicScalarFunction_t& x) {
1783+
switch (static_cast<ASRUtils::IntrinsicScalarFunctions>(x.m_intrinsic_id)) {
1784+
case ASRUtils::IntrinsicScalarFunctions::ListIndex: {
17851785
ASR::expr_t* m_arg = x.m_args[0];
17861786
ASR::expr_t* m_ele = x.m_args[1];
17871787
ASR::expr_t* m_start = nullptr;
@@ -1807,11 +1807,11 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
18071807
generate_ListIndex(m_arg, m_ele, m_start, m_end);
18081808
break ;
18091809
}
1810-
case ASRUtils::IntrinsicFunctions::ListReverse: {
1810+
case ASRUtils::IntrinsicScalarFunctions::ListReverse: {
18111811
generate_ListReverse(x.m_args[0]);
18121812
break;
18131813
}
1814-
case ASRUtils::IntrinsicFunctions::ListPop: {
1814+
case ASRUtils::IntrinsicScalarFunctions::ListPop: {
18151815
switch(x.m_overload_id) {
18161816
case 0:
18171817
generate_ListPop_0(x.m_args[0]);
@@ -1822,27 +1822,27 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
18221822
}
18231823
break;
18241824
}
1825-
case ASRUtils::IntrinsicFunctions::Reserve: {
1825+
case ASRUtils::IntrinsicScalarFunctions::Reserve: {
18261826
generate_Reserve(x.m_args[0], x.m_args[1]);
18271827
break;
18281828
}
1829-
case ASRUtils::IntrinsicFunctions::DictKeys: {
1829+
case ASRUtils::IntrinsicScalarFunctions::DictKeys: {
18301830
generate_DictElems(x.m_args[0], 0);
18311831
break;
18321832
}
1833-
case ASRUtils::IntrinsicFunctions::DictValues: {
1833+
case ASRUtils::IntrinsicScalarFunctions::DictValues: {
18341834
generate_DictElems(x.m_args[0], 1);
18351835
break;
18361836
}
1837-
case ASRUtils::IntrinsicFunctions::SetAdd: {
1837+
case ASRUtils::IntrinsicScalarFunctions::SetAdd: {
18381838
generate_SetAdd(x.m_args[0], x.m_args[1]);
18391839
break;
18401840
}
1841-
case ASRUtils::IntrinsicFunctions::SetRemove: {
1841+
case ASRUtils::IntrinsicScalarFunctions::SetRemove: {
18421842
generate_SetRemove(x.m_args[0], x.m_args[1]);
18431843
break;
18441844
}
1845-
case ASRUtils::IntrinsicFunctions::Exp: {
1845+
case ASRUtils::IntrinsicScalarFunctions::Exp: {
18461846
switch (x.m_overload_id) {
18471847
case 0: {
18481848
ASR::expr_t* m_arg = x.m_args[0];
@@ -1856,7 +1856,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
18561856
}
18571857
break ;
18581858
}
1859-
case ASRUtils::IntrinsicFunctions::Exp2: {
1859+
case ASRUtils::IntrinsicScalarFunctions::Exp2: {
18601860
switch (x.m_overload_id) {
18611861
case 0: {
18621862
ASR::expr_t* m_arg = x.m_args[0];
@@ -1870,7 +1870,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
18701870
}
18711871
break ;
18721872
}
1873-
case ASRUtils::IntrinsicFunctions::Expm1: {
1873+
case ASRUtils::IntrinsicScalarFunctions::Expm1: {
18741874
switch (x.m_overload_id) {
18751875
case 0: {
18761876
ASR::expr_t* m_arg = x.m_args[0];
@@ -1885,7 +1885,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
18851885
break ;
18861886
}
18871887
default: {
1888-
throw CodeGenError( ASRUtils::IntrinsicFunctionRegistry::
1888+
throw CodeGenError( ASRUtils::IntrinsicScalarFunctionRegistry::
18891889
get_intrinsic_function_name(x.m_intrinsic_id) +
18901890
" is not implemented by LLVM backend.", x.base.base.loc);
18911891
}

src/libasr/pass/array_op.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,8 +1014,8 @@ class ReplaceArrayOp: public ASR::BaseExprReplacer<ReplaceArrayOp> {
10141014
result_var = nullptr;
10151015
}
10161016

1017-
void replace_IntrinsicFunction(ASR::IntrinsicFunction_t* x) {
1018-
if(!ASRUtils::IntrinsicFunctionRegistry::is_elemental(x->m_intrinsic_id)) {
1017+
void replace_IntrinsicScalarFunction(ASR::IntrinsicScalarFunction_t* x) {
1018+
if(!ASRUtils::IntrinsicScalarFunctionRegistry::is_elemental(x->m_intrinsic_id)) {
10191019
return ;
10201020
}
10211021
replace_intrinsic_function(x);

src/libasr/pass/intrinsic_function.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ in the backend.
2525
2626
*/
2727

28-
class ReplaceIntrinsicFunction: public ASR::BaseExprReplacer<ReplaceIntrinsicFunction> {
28+
class ReplaceIntrinsicFunctions: public ASR::BaseExprReplacer<ReplaceIntrinsicFunctions> {
2929

3030
private:
3131

@@ -35,14 +35,14 @@ class ReplaceIntrinsicFunction: public ASR::BaseExprReplacer<ReplaceIntrinsicFun
3535

3636
public:
3737

38-
ReplaceIntrinsicFunction(Allocator& al_, SymbolTable* global_scope_,
38+
ReplaceIntrinsicFunctions(Allocator& al_, SymbolTable* global_scope_,
3939
std::map<ASR::symbol_t*, ASRUtils::IntrinsicArrayFunctions>& func2intrinsicid_) :
4040
al(al_), global_scope(global_scope_), func2intrinsicid(func2intrinsicid_) {}
4141

4242

43-
void replace_IntrinsicFunction(ASR::IntrinsicFunction_t* x) {
43+
void replace_IntrinsicScalarFunction(ASR::IntrinsicScalarFunction_t* x) {
4444
Vec<ASR::call_arg_t> new_args;
45-
// Replace any IntrinsicFunctions in the argument first:
45+
// Replace any IntrinsicScalarFunctions in the argument first:
4646
{
4747
new_args.reserve(al, x->n_args);
4848
for( size_t i = 0; i < x->n_args; i++ ) {
@@ -63,7 +63,7 @@ class ReplaceIntrinsicFunction: public ASR::BaseExprReplacer<ReplaceIntrinsicFun
6363
// We could maintain a mapping of type -> id and look it up.
6464

6565
ASRUtils::impl_function instantiate_function =
66-
ASRUtils::IntrinsicFunctionRegistry::get_instantiate_function(x->m_intrinsic_id);
66+
ASRUtils::IntrinsicScalarFunctionRegistry::get_instantiate_function(x->m_intrinsic_id);
6767
if( instantiate_function == nullptr ) {
6868
return ;
6969
}
@@ -137,15 +137,15 @@ The following visitor calls the above replacer i.e., ReplaceFunctionCalls
137137
on expressions present in ASR so that FunctionCall get replaced everywhere
138138
and we don't end up with false positives.
139139
*/
140-
class ReplaceIntrinsicFunctionVisitor : public ASR::CallReplacerOnExpressionsVisitor<ReplaceIntrinsicFunctionVisitor>
140+
class ReplaceIntrinsicFunctionsVisitor : public ASR::CallReplacerOnExpressionsVisitor<ReplaceIntrinsicFunctionsVisitor>
141141
{
142142
private:
143143

144-
ReplaceIntrinsicFunction replacer;
144+
ReplaceIntrinsicFunctions replacer;
145145

146146
public:
147147

148-
ReplaceIntrinsicFunctionVisitor(Allocator& al_, SymbolTable* global_scope_,
148+
ReplaceIntrinsicFunctionsVisitor(Allocator& al_, SymbolTable* global_scope_,
149149
std::map<ASR::symbol_t*, ASRUtils::IntrinsicArrayFunctions>& func2intrinsicid_) :
150150
replacer(al_, global_scope_, func2intrinsicid_) {}
151151

@@ -377,7 +377,7 @@ class ReplaceFunctionCallReturningArrayVisitor : public ASR::CallReplacerOnExpre
377377
void pass_replace_intrinsic_function(Allocator &al, ASR::TranslationUnit_t &unit,
378378
const LCompilers::PassOptions& /*pass_options*/) {
379379
std::map<ASR::symbol_t*, ASRUtils::IntrinsicArrayFunctions> func2intrinsicid;
380-
ReplaceIntrinsicFunctionVisitor v(al, unit.m_global_scope, func2intrinsicid);
380+
ReplaceIntrinsicFunctionsVisitor v(al, unit.m_global_scope, func2intrinsicid);
381381
v.visit_TranslationUnit(unit);
382382
ReplaceFunctionCallReturningArrayVisitor u(al, func2intrinsicid);
383383
u.visit_TranslationUnit(unit);

0 commit comments

Comments
 (0)