9 Star 0 Fork 13

src-openEuler/pin-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0034-MLIR17-Adaptation-to-llvm17-mlir17.patch 65.65 KB
一键复制 编辑 原始数据 按行查看 历史
MC.5 提交于 2024-04-09 10:59 . [MLIR17] Adaptation to llvm17/mlir17.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599
From f327f70f1a6b9e6872a9a95b5c4d987dd28ecab2 Mon Sep 17 00:00:00 2001
From: Mingchuan Wu <wumingchuan1992@foxmail.com>
Date: Mon, 8 Apr 2024 21:19:03 +0800
Subject: [PATCH] [MLIR17] Adaptation to llvm17/mlir17
---
CMakeLists.txt | 7 +-
cmake/common.cmake | 10 ++
include/Dialect/PluginOps.td | 127 +++++++++++-----------
include/Dialect/PluginTypes.h | 2 +
lib/Dialect/PluginOps.cpp | 175 +++++++++++++++---------------
lib/PluginAPI/ControlFlowAPI.cpp | 44 ++++----
lib/PluginAPI/DataFlowAPI.cpp | 28 ++---
lib/PluginAPI/PluginServerAPI.cpp | 38 +++----
lib/PluginServer/PluginJson.cpp | 11 +-
user/ArrayWidenPass.cpp | 50 ++++-----
user/InlineFunctionPass.cpp | 2 +-
user/LocalVarSummeryPass.cpp | 12 +-
user/SimpleLICMPass.cpp | 42 +++----
13 files changed, 283 insertions(+), 265 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 925f80e..b6dc0a5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -118,7 +118,12 @@ target_link_libraries(pin_server
${GRPC_PP_REFLECTION_LIBRARY}
${GRPC_PP_LIBRARY}
${PROTOBUF_LIBRARY}
- ${ABSEIL_SYNC_LIBRARY})
+ ${ABSEIL_SYNC_LIBRARY}
+ ${ABSEIL_CORD_LIBRARY}
+ ${ABSEIL_CORDZ_INFO_LIBRARY}
+ ${ABSEIL_CORDZ_FUNCTION_LIBRARY}
+ ${ABSEIL_LOG_INTERNAL_CHECK_OP_LIBRARY}
+ ${ABSEIL_LOG_INTERNAL_MESSAGE_LIBRARY})
# install
install(TARGETS pin_server RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/cmake/common.cmake b/cmake/common.cmake
index 033d8c3..ae27777 100644
--- a/cmake/common.cmake
+++ b/cmake/common.cmake
@@ -41,6 +41,16 @@ _CHECK(GPR_LIBRARY "GPR_LIBRARY-NOTFOUND" "libgpr.so")
# check abseil_synchronization
find_library(ABSEIL_SYNC_LIBRARY absl_synchronization)
_CHECK(ABSEIL_SYNC_LIBRARY "ABSEIL_SYNC_LIBRARY-NOTFOUND" "libabsl_synchronization.so")
+find_library(ABSEIL_CORD_LIBRARY absl_cord)
+_CHECK(ABSEIL_CORD_LIBRARY "ABSEIL_CORD_LIBRARY-NOTFOUND" "libabsl_cord.so")
+find_library(ABSEIL_CORDZ_INFO_LIBRARY absl_cordz_info)
+_CHECK(ABSEIL_CORDZ_INFO_LIBRARY "ABSEIL_CORDZ_INFO_LIBRARY-NOTFOUND" "libabsl_cordz_info.so")
+find_library(ABSEIL_CORDZ_FUNCTION_LIBRARY absl_cordz_functions)
+_CHECK(ABSEIL_CORDZ_FUNCTION_LIBRARY "ABSEIL_CORDZ_FUNCTION_LIBRARY-NOTFOUND" "libabsl_cordz_functions.so")
+find_library(ABSEIL_LOG_INTERNAL_CHECK_OP_LIBRARY absl_log_internal_check_op)
+_CHECK(ABSEIL_LOG_INTERNAL_CHECK_OP_LIBRARY "ABSEIL_LOG_INTERNAL_CHECK_OP_LIBRARY-NOTFOUND" "libabsl_log_internal_check_op.so")
+find_library(ABSEIL_LOG_INTERNAL_MESSAGE_LIBRARY absl_log_internal_message)
+_CHECK(ABSEIL_LOG_INTERNAL_MESSAGE_LIBRARY "ABSEIL_LOG_INTERNAL_MESSAGE_LIBRARY-NOTFOUND" "libabsl_log_internal_message.so")
# check jsoncpp
find_library(JSONCPP_LIBRARY jsoncpp)
diff --git a/include/Dialect/PluginOps.td b/include/Dialect/PluginOps.td
index 51a2b10..37b20c9 100644
--- a/include/Dialect/PluginOps.td
+++ b/include/Dialect/PluginOps.td
@@ -22,7 +22,7 @@ include "PluginDialect.td"
include "mlir/Interfaces/SideEffectInterfaces.td"
include "mlir/Interfaces/CallInterfaces.td"
-def CGnodeOp : Plugin_Op<"callgraphnode", [NoSideEffect]> {
+def CGnodeOp : Plugin_Op<"callgraphnode", [NoMemoryEffect]> {
let summary = "callgraph node operation";
let description = [{
TODO.
@@ -50,7 +50,7 @@ def CGnodeOp : Plugin_Op<"callgraphnode", [NoSideEffect]> {
}];
}
-def FunctionOp : Plugin_Op<"function", [NoSideEffect]> {
+def FunctionOp : Plugin_Op<"function", [NoMemoryEffect]> {
let summary = "function with a region";
let description = [{
TODO.
@@ -82,7 +82,7 @@ def FunctionOp : Plugin_Op<"function", [NoSideEffect]> {
}];
}
-def LocalDeclOp : Plugin_Op<"declaration", [NoSideEffect]> {
+def LocalDeclOp : Plugin_Op<"declaration", [NoMemoryEffect]> {
let summary = "local variable declaration";
let description = [{TODO}];
let arguments = (ins OptionalAttr<UI64Attr>:$id,
@@ -96,7 +96,7 @@ def LocalDeclOp : Plugin_Op<"declaration", [NoSideEffect]> {
];
}
-def LoopOp : Plugin_Op<"loop", [NoSideEffect]> {
+def LoopOp : Plugin_Op<"loop", [NoMemoryEffect]> {
let summary = "loop operation";
let description = [{
TODO.
@@ -156,7 +156,7 @@ def CallOp : Plugin_Op<"call", [
}];
}
-def PhiOp : Plugin_Op<"phi", [NoSideEffect]> {
+def PhiOp : Plugin_Op<"phi", [NoMemoryEffect]> {
let summary = "phi op";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id,
@@ -178,7 +178,7 @@ def PhiOp : Plugin_Op<"phi", [NoSideEffect]> {
}];
}
-def AssignOp : Plugin_Op<"assign", [NoSideEffect]> {
+def AssignOp : Plugin_Op<"assign", [NoMemoryEffect]> {
let summary = "assign op";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id,
@@ -198,7 +198,7 @@ def AssignOp : Plugin_Op<"assign", [NoSideEffect]> {
}];
}
-def NopOp : Plugin_Op<"nop", [NoSideEffect]> {
+def NopOp : Plugin_Op<"nop", [NoMemoryEffect]> {
let summary = "nop";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id);
@@ -208,7 +208,7 @@ def NopOp : Plugin_Op<"nop", [NoSideEffect]> {
];
}
-def EHElseOp : Plugin_Op<"eh_else", [NoSideEffect]> {
+def EHElseOp : Plugin_Op<"eh_else", [NoMemoryEffect]> {
let summary = "EHElseOP";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, ArrayAttr:$nBody, ArrayAttr:$eBody);
@@ -322,13 +322,13 @@ def DeclBaseOp : DeclBase<"decl"> {
let builders = [
OpBuilder<(ins "uint64_t":$id, "IDefineCode":$defCode,
"bool":$readOnly, "bool":$addressable, "bool":$used, "int":$uid, "Value":$initial,
- "Value":$name, "Optional<uint64_t>":$chain, "Type":$retType)>
+ "Value":$name, "std::optional<uint64_t>":$chain, "Type":$retType)>
];
let extraClassDeclaration = [{
Type getResultType() { return this->getOperation()->getResult(0).getType(); }
- Value GetInitial() { return initial(); }
- Value GetName() { return name(); }
- Optional<uint64_t> GetChain() { return chain(); }
+ Value GetInitial() { return getInitial(); }
+ Value GetName() { return getName(); }
+ std::optional<uint64_t> GetChain() { return getChain(); }
}];
}
@@ -337,17 +337,17 @@ def BlockOp : BLOCK<"block"> {
let description = [{TODO}];
let builders = [
OpBuilder<(ins "uint64_t":$id, "IDefineCode":$defCode,
- "bool":$readOnly, "Optional<Value>":$vars, "Optional<uint64_t>":$supercontext,
- "Optional<Value>":$subblocks, "Optional<Value>":$chain,
- "Optional<Value>":$abstract_origin, "Type":$retType)>
+ "bool":$readOnly, "std::optional<Value>":$vars, "std::optional<uint64_t>":$supercontext,
+ "std::optional<Value>":$subblocks, "std::optional<Value>":$chain,
+ "std::optional<Value>":$abstract_origin, "Type":$retType)>
];
let extraClassDeclaration = [{
Type getResultType() { return this->getOperation()->getResult(0).getType(); }
- Value GetVars() { return vars(); }
- Optional<uint64_t> GetSupercontext() { return supercontext(); }
- Value GetSubblocks() { return subblocks(); }
- Value GetChain() { return chain(); }
- Value GetAbstractorigin() { return abstract_origin(); }
+ Value GetVars() { return getVars(); }
+ std::optional<uint64_t> GetSupercontext() { return getSupercontext(); }
+ Value GetSubblocks() { return getSubblocks(); }
+ Value GetChain() { return getChain(); }
+ Value GetAbstractorigin() { return getAbstractOrigin(); }
}];
}
@@ -371,11 +371,11 @@ def FieldDeclOp : FieldDecl<"field"> {
];
let extraClassDeclaration = [{
Type getResultType() { return this->getOperation()->getResult(0).getType(); }
- Value GetInitial() { return initial(); }
- Value GetName() { return name(); }
- Optional<uint64_t> GetChain() { return chain(); }
- Value GetFieldOffset() { return fieldOffset(); }
- Value GetFieldBitOffset() { return fieldBitOffset(); }
+ Value GetInitial() { return getInitial(); }
+ Value GetName() { return getName(); }
+ std::optional<uint64_t> GetChain() { return getChain(); }
+ Value GetFieldOffset() { return getFieldOffset(); }
+ Value GetFieldBitOffset() { return getFieldBitOffset(); }
void SetName(FieldDeclOp);
void SetType(FieldDeclOp);
@@ -401,7 +401,7 @@ def AddressOp : Address<"address"> {
];
let extraClassDeclaration = [{
Type getResultType() { return this->getOperation()->getResult(0).getType(); }
- Value GetOperand() { return operand(); }
+ Value GetOperand() { return getOperand(); }
}];
}
@@ -410,9 +410,9 @@ def ConstructorOp : Constructor<"constructor"> {
let description = [{TODO}];
let builders = [
OpBuilder<(ins "uint64_t":$id, "IDefineCode":$defCode,
- "bool":$readOnly, "int32_t":$len, "ArrayRef<Value>":$idx, "ArrayRef<Value>":$val,
- "Type":$retType)>
-];
+ "bool":$readOnly, "int32_t":$len, "ArrayRef<Value>":$idx,
+ "ArrayRef<Value>":$val, "Type":$retType)>
+ ];
let extraClassDeclaration = [{
Type getResultType() { return this->getOperation()->getResult(0).getType(); }
}];
@@ -525,7 +525,7 @@ def ArrayOp : ArrayRef<"array ref"> {
}];
}
-def BaseOp : Plugin_Op<"statement_base", [NoSideEffect]> {
+def BaseOp : Plugin_Op<"statement_base", [NoMemoryEffect]> {
let summary = "Base operation, just like placeholder for statement.";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, StrAttr:$opCode);
@@ -535,7 +535,7 @@ def BaseOp : Plugin_Op<"statement_base", [NoSideEffect]> {
];
}
-def DebugOp : Plugin_Op<"debug", [NoSideEffect]> {
+def DebugOp : Plugin_Op<"debug", [NoMemoryEffect]> {
let summary = "DebugOp.";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id);
@@ -544,7 +544,7 @@ def DebugOp : Plugin_Op<"debug", [NoSideEffect]> {
OpBuilder<(ins "uint64_t":$id)>
];
}
-def AsmOp : Plugin_Op<"asm", [NoSideEffect]> {
+def AsmOp : Plugin_Op<"asm", [NoMemoryEffect]> {
let summary = "asm Op";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, StrAttr:$statement, UI32Attr:$nInputs, UI32Attr:$nOutputs, UI32Attr:$nClobbers,
@@ -556,17 +556,17 @@ def AsmOp : Plugin_Op<"asm", [NoSideEffect]> {
];
let extraClassDeclaration = [{
- unsigned GetNInputs() { return this->nInputsAttr().getInt(); };
- unsigned GetNoutputs() { return this->nOutputsAttr().getInt(); };
- unsigned GetNClobbers() { return this->nClobbersAttr().getInt(); };
+ unsigned GetNInputs() { return this->getNInputsAttr().getInt(); };
+ unsigned GetNoutputs() { return this->getNOutputsAttr().getInt(); };
+ unsigned GetNClobbers() { return this->getNClobbersAttr().getInt(); };
Value GetInputOp(unsigned index) { return getOperand(index); };
- Value GetOutputOp(unsigned index) { return getOperand(this->nInputsAttr().getInt() + index); };
+ Value GetOutputOp(unsigned index) { return getOperand(this->getNInputsAttr().getInt() + index); };
Value GetCkobberOp(unsigned index) {
- return getOperand(this->nInputsAttr().getInt() + this->nOutputsAttr().getInt() + index); };
+ return getOperand(this->getNInputsAttr().getInt() + this->getNOutputsAttr().getInt() + index); };
}];
}
-def LabelOp : Plugin_Op<"label", [NoSideEffect]> {
+def LabelOp : Plugin_Op<"label", [NoMemoryEffect]> {
let summary = "Label op.";
let description = [{TODO}];
let results = (outs AnyType:$result);
@@ -579,7 +579,7 @@ def LabelOp : Plugin_Op<"label", [NoSideEffect]> {
}];
}
-def EHMntOp : Plugin_Op<"eh_mnt", [NoSideEffect]> {
+def EHMntOp : Plugin_Op<"eh_mnt", [NoMemoryEffect]> {
let summary = "EH_MUST_NOT_THROW op.";
let description = [{TODO}];
let results = (outs AnyType:$result);
@@ -588,11 +588,11 @@ def EHMntOp : Plugin_Op<"eh_mnt", [NoSideEffect]> {
OpBuilder<(ins "uint64_t":$id, "Value":$decl)>
];
let extraClassDeclaration = [{
- Value Getfndecl() { return decl(); };
+ Value Getfndecl() { return getDecl(); };
}];
}
-def BindOp : Plugin_Op<"Bind", [NoSideEffect]> {
+def BindOp : Plugin_Op<"Bind", [NoMemoryEffect]> {
let summary = "BindOp";
let description = [{TODO}];
let results = (outs AnyType:$result);
@@ -601,12 +601,12 @@ def BindOp : Plugin_Op<"Bind", [NoSideEffect]> {
OpBuilder<(ins "uint64_t":$id, "Value":$vars, "ArrayRef<uint64_t>":$body, "Value":$block)>
];
let extraClassDeclaration = [{
- Value GetVars() { return vars(); };
- Value GetBlock() { return block(); };
+ Value GetVars() { return getVars(); };
+ Value GetBlock() { return getBlock(); };
}];
}
-def TryOp : Plugin_Op<"try", [NoSideEffect]> {
+def TryOp : Plugin_Op<"try", [NoMemoryEffect]> {
let summary = "TryOp";
let description = [{TODO}];
let results = (outs AnyType:$result);
@@ -616,7 +616,7 @@ def TryOp : Plugin_Op<"try", [NoSideEffect]> {
];
}
-def CatchOp : Plugin_Op<"catch", [NoSideEffect]> {
+def CatchOp : Plugin_Op<"catch", [NoMemoryEffect]> {
let summary = "CatchOp";
let description = [{TODO}];
let results = (outs AnyType:$result);
@@ -625,7 +625,7 @@ def CatchOp : Plugin_Op<"catch", [NoSideEffect]> {
OpBuilder<(ins "uint64_t":$id, "Value":$types, "ArrayRef<uint64_t>":$handler)>
];
let extraClassDeclaration = [{
- Value GetTypes() { return types(); };
+ Value GetTypes() { return getTypes(); };
}];
}
// Terminators
@@ -634,30 +634,29 @@ def CatchOp : Plugin_Op<"catch", [NoSideEffect]> {
class Plugin_TerminatorOp<string mnemonic, list<Trait> traits = []> :
Plugin_Op<mnemonic, !listconcat(traits, [Terminator])>;
-def SwitchOp : Plugin_TerminatorOp<"switch", [NoSideEffect]> {
+def SwitchOp : Plugin_TerminatorOp<"switch", [NoMemoryEffect]> {
let summary = "switch op.";
let description = [{TODO}];
let successors = (successor
AnySuccessor:$defaultDestination,
VariadicSuccessor<AnySuccessor>:$caseDestinations
);
- let arguments = (ins UI64Attr:$id, AnyType:$index, UI64Attr:$address, AnyType:$defaultLabel, Variadic<AnyType>:$operands,
+ let arguments = (ins UI64Attr:$id, AnyType:$index, UI64Attr:$address, AnyType:$defaultLabel, Variadic<AnyType>:$args,
UI64Attr:$defaultaddr, ArrayAttr:$caseaddrs);
let results = (outs AnyType:$result);
let builders = [
OpBuilder<(ins "uint64_t":$id, "Value":$index, "uint64_t":$address, "Value":$defaultLabel,
- "ArrayRef<Value>":$operands, "Block*":$defaultDestination, "uint64_t":$defaultaddr,
+ "ArrayRef<Value>":$args, "Block*":$defaultDestination, "uint64_t":$defaultaddr,
"ArrayRef<Block*>":$caseDestinations, "ArrayRef<uint64_t>":$caseaddrs)>
];
let extraClassDeclaration = [{
- unsigned GetNumLabels() { return getNumOperands() - 2; };
- Block* GetDefautDest() { return defaultDestination();}
- SmallVector<mlir::Block*> GetCaseDest() { return caseDestinations(); };
+ Block* GetDefautDest() { return getDefaultDestination();}
+ SmallVector<mlir::Block*> GetCaseDest() { return getCaseDestinations(); };
}];
}
-def FallThroughOp : Plugin_TerminatorOp<"fallthrough", [NoSideEffect]> {
+def FallThroughOp : Plugin_TerminatorOp<"fallthrough", [NoMemoryEffect]> {
let summary = "FallThroughOp";
let description = [{TODO}];
let successors = (successor AnySuccessor:$dest);
@@ -671,7 +670,7 @@ def FallThroughOp : Plugin_TerminatorOp<"fallthrough", [NoSideEffect]> {
];
}
-def CondOp : Plugin_TerminatorOp<"condition", [NoSideEffect]> {
+def CondOp : Plugin_TerminatorOp<"condition", [NoMemoryEffect]> {
let summary = "condition op";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, UI64Attr:$address,
@@ -698,7 +697,7 @@ def CondOp : Plugin_TerminatorOp<"condition", [NoSideEffect]> {
}
// todo: currently RetOp do not have a correct assemblyFormat
-def RetOp : Plugin_TerminatorOp<"ret", [NoSideEffect]> {
+def RetOp : Plugin_TerminatorOp<"ret", [NoMemoryEffect]> {
let summary = "RetOp";
let description = [{TODO}];
let arguments = (ins UI64Attr:$address); // for bb address
@@ -708,7 +707,7 @@ def RetOp : Plugin_TerminatorOp<"ret", [NoSideEffect]> {
];
}
-def GotoOp : Plugin_TerminatorOp<"goto", [NoSideEffect]> {
+def GotoOp : Plugin_TerminatorOp<"goto", [NoMemoryEffect]> {
let summary = "GotoOp";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, UI64Attr:$address, AnyType:$dest, UI64Attr:$successaddr);
@@ -723,7 +722,7 @@ def GotoOp : Plugin_TerminatorOp<"goto", [NoSideEffect]> {
}];
}
-def TransactionOp : Plugin_TerminatorOp<"transaction", [NoSideEffect]> {
+def TransactionOp : Plugin_TerminatorOp<"transaction", [NoMemoryEffect]> {
let summary = "TransactionOp";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, UI64Attr:$address, ArrayAttr:$stmtaddr, AnyType:$labelNorm,
@@ -737,13 +736,13 @@ def TransactionOp : Plugin_TerminatorOp<"transaction", [NoSideEffect]> {
];
let extraClassDeclaration = [{
- Value GetTransactionNormal() { return labelNorm(); }
- Value GetTransactionUinst() { return labelUninst(); }
- Value GetTransactionOver() { return labelOver(); }
+ Value GetTransactionNormal() { return getLabelNorm(); }
+ Value GetTransactionUinst() { return getLabelUninst(); }
+ Value GetTransactionOver() { return getLabelOver(); }
}];
}
-def ResxOp : Plugin_TerminatorOp<"resx", [NoSideEffect]> {
+def ResxOp : Plugin_TerminatorOp<"resx", [NoMemoryEffect]> {
let summary = "ResxOp";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, UI64Attr:$address, UI64Attr:$region);
@@ -752,11 +751,11 @@ def ResxOp : Plugin_TerminatorOp<"resx", [NoSideEffect]> {
OpBuilder<(ins "uint64_t":$id, "uint64_t":$address, "uint64_t":$region)>
];
let extraClassDeclaration = [{
- uint64_t GetTransactionNormal() { return region(); }
+ uint64_t GetTransactionNormal() { return getRegion(); }
}];
}
-def EHDispatchOp : Plugin_TerminatorOp<"dispatch", [NoSideEffect]> {
+def EHDispatchOp : Plugin_TerminatorOp<"dispatch", [NoMemoryEffect]> {
let summary = "EHDispatchOp";
let description = [{TODO}];
let arguments = (ins UI64Attr:$id, UI64Attr:$address, UI64Attr:$region, ArrayAttr:$ehHandlersaddrs);
@@ -767,7 +766,7 @@ def EHDispatchOp : Plugin_TerminatorOp<"dispatch", [NoSideEffect]> {
"ArrayRef<uint64_t>":$ehHandlersaddrs)>
];
let extraClassDeclaration = [{
- uint64_t GetTransactionNormal() { return region(); }
+ uint64_t GetTransactionNormal() { return getRegion(); }
}];
}
#endif // PLUGIN_OPS_TD
\ No newline at end of file
diff --git a/include/Dialect/PluginTypes.h b/include/Dialect/PluginTypes.h
index 5c5f54a..01df63a 100644
--- a/include/Dialect/PluginTypes.h
+++ b/include/Dialect/PluginTypes.h
@@ -61,6 +61,8 @@ enum PluginTypeID {
class PluginTypeBase : public Type {
public:
using Type::Type;
+ /// FIXME.
+ static bool classof(Type type) { return true; }
PluginTypeID getPluginTypeID ();
unsigned getPluginIntOrFloatBitWidth ();
diff --git a/lib/Dialect/PluginOps.cpp b/lib/Dialect/PluginOps.cpp
index d4b061f..8ba6d83 100644
--- a/lib/Dialect/PluginOps.cpp
+++ b/lib/Dialect/PluginOps.cpp
@@ -40,33 +40,33 @@ static uint64_t GetValueId(Value v)
{
Operation *op = v.getDefiningOp();
if (auto mOp = dyn_cast<MemOp>(op)) {
- return mOp.id();
+ return mOp.getId();
} else if (auto ssaOp = dyn_cast<SSAOp>(op)) {
- return ssaOp.id();
+ return ssaOp.getId();
} else if (auto cstOp = dyn_cast<ConstOp>(op)) {
- return cstOp.id();
+ return cstOp.getId();
} else if (auto treelistop = dyn_cast<ListOp>(op)) {
- return treelistop.id();
+ return treelistop.getId();
} else if (auto strop = dyn_cast<StrOp>(op)) {
- return strop.id();
+ return strop.getId();
} else if (auto arrayop = dyn_cast<ArrayOp>(op)) {
- return arrayop.id();
+ return arrayop.getId();
} else if (auto declop = dyn_cast<DeclBaseOp>(op)) {
- return declop.id();
+ return declop.getId();
} else if (auto fieldop = dyn_cast<FieldDeclOp>(op)) {
- return fieldop.id();
+ return fieldop.getId();
} else if (auto addressop = dyn_cast<AddressOp>(op)) {
- return addressop.id();
+ return addressop.getId();
} else if (auto constructorop = dyn_cast<ConstructorOp>(op)) {
- return constructorop.id();
+ return constructorop.getId();
} else if (auto vecop = dyn_cast<VecOp>(op)) {
- return vecop.id();
+ return vecop.getId();
} else if (auto blockop = dyn_cast<BlockOp>(op)) {
- return blockop.id();
+ return blockop.getId();
} else if (auto compOp = dyn_cast<ComponentOp>(op)) {
- return compOp.id();
+ return compOp.getId();
} else if (auto phOp = dyn_cast<PlaceholderOp>(op)) {
- return phOp.id();
+ return phOp.getId();
}
return 0;
}
@@ -74,15 +74,15 @@ static uint64_t GetValueId(Value v)
static uint64_t getBlockAddress(mlir::Block* b)
{
if (mlir::Plugin::CondOp oops = dyn_cast<mlir::Plugin::CondOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::FallThroughOp oops = dyn_cast<mlir::Plugin::FallThroughOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::RetOp oops = dyn_cast<mlir::Plugin::RetOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::GotoOp oops = dyn_cast<mlir::Plugin::GotoOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::TransactionOp oops = dyn_cast<mlir::Plugin::TransactionOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else {
assert(false);
}
@@ -105,14 +105,14 @@ void CGnodeOp::build(OpBuilder &builder, OperationState &state,
// Value CGnodeOp::GetDecl()
// {
// PluginAPI::PluginServerAPI pluginAPI;
-// uint64_t nodeId = idAttr().getInt();
+// uint64_t nodeId = getIdAttr().getInt();
// return pluginAPI.GetDeclFromCGnode(nodeId);
// }
bool CGnodeOp::IsRealSymbol()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t nodeId = idAttr().getInt();
+ uint64_t nodeId = getIdAttr().getInt();
return pluginAPI.IsRealSymbolOfCGnode(nodeId);
}
@@ -141,21 +141,21 @@ void FunctionOp::build(OpBuilder &builder, OperationState &state,
Type FunctionOp::getResultType()
{
- PluginIR::PluginFunctionType resultType = type().dyn_cast<PluginIR::PluginFunctionType>();
+ PluginIR::PluginFunctionType resultType = getType().dyn_cast<PluginIR::PluginFunctionType>();
return resultType;
}
vector<LoopOp> FunctionOp::GetAllLoops()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t funcId = idAttr().getInt();
+ uint64_t funcId = getIdAttr().getInt();
return pluginAPI.GetLoopsFromFunc(funcId);
}
LoopOp FunctionOp::AllocateNewLoop()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t funcId = idAttr().getInt();
+ uint64_t funcId = getIdAttr().getInt();
return pluginAPI.AllocateNewLoop(funcId);
}
@@ -191,14 +191,14 @@ void LoopOp::build(mlir::OpBuilder &builder, mlir::OperationState &state,
Block* LoopOp::GetHeader()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
return pluginAPI.GetHeader(loopId);
}
Block* LoopOp::GetLatch()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
return pluginAPI.GetLatch(loopId);
}
@@ -217,42 +217,42 @@ void LoopOp::SetLatch(mlir::Block* b)
vector<mlir::Block*> LoopOp::GetLoopBody()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
return pluginAPI.GetLoopBody(loopId);
}
pair<mlir::Block*, mlir::Block*> LoopOp::GetSingleExit()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
return pluginAPI.LoopSingleExit(loopId);
}
void LoopOp::Delete()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
pluginAPI.DeleteLoop(loopId);
}
LoopOp LoopOp::GetInnerLoop()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = innerLoopIdAttr().getInt();
+ uint64_t loopId = getInnerLoopIdAttr().getInt();
return pluginAPI.GetLoopById(loopId);
}
LoopOp LoopOp::GetOuterLoop()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = outerLoopIdAttr().getInt();
+ uint64_t loopId = getOuterLoopIdAttr().getInt();
return pluginAPI.GetLoopById(loopId);
}
bool LoopOp::IsBlockInside(mlir::Block* b)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
uint64_t blockId = pluginAPI.FindBasicBlock(b);
return pluginAPI.IsBlockInLoop(loopId, blockId);
}
@@ -260,32 +260,25 @@ bool LoopOp::IsBlockInside(mlir::Block* b)
bool LoopOp::IsLoopFather(mlir::Block* b)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
LoopOp loopFather = pluginAPI.GetBlockLoopFather(b);
- uint64_t id = loopFather.idAttr().getInt();
+ uint64_t id = loopFather.getIdAttr().getInt();
return id == loopId;
}
-LoopOp LoopOp::FindCommonLoop(LoopOp* loop_1, LoopOp* loop_2)
-{
- PluginAPI::PluginServerAPI pluginAPI;
- LoopOp commonLoop = pluginAPI.FindCommonLoop(loop_1, loop_2);
- return commonLoop;
-}
-
vector<pair<mlir::Block*, mlir::Block*> > LoopOp::GetExitEdges()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
+ uint64_t loopId = getIdAttr().getInt();
return pluginAPI.GetLoopExitEdges(loopId);
}
void LoopOp::AddLoop(LoopOp* outerLoop, FunctionOp* funcOp)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t loopId = idAttr().getInt();
- return pluginAPI.AddLoop(loopId, outerLoop->idAttr().getInt(),
- funcOp->idAttr().getInt());
+ uint64_t loopId = getIdAttr().getInt();
+ return pluginAPI.AddLoop(loopId, outerLoop->getIdAttr().getInt(),
+ funcOp->getIdAttr().getInt());
}
void LoopOp::AddBlock(mlir::Block* block)
@@ -328,7 +321,7 @@ void MemOp::build(OpBuilder &builder, OperationState &state,
void DeclBaseOp::build(OpBuilder &builder, OperationState &state, uint64_t id,
IDefineCode defCode, bool readOnly, bool addressable, bool used, int32_t uid, Value initial,
- Value name, Optional<uint64_t> chain, Type retType)
+ Value name, std::optional<uint64_t> chain, Type retType)
{
state.addAttribute("id", builder.getI64IntegerAttr(id));
state.addAttribute("defCode",
@@ -339,7 +332,7 @@ void DeclBaseOp::build(OpBuilder &builder, OperationState &state, uint64_t id,
state.addAttribute("uid", builder.getI32IntegerAttr(uid));
state.addOperands(initial);
if(chain) {
- state.addAttribute("chain", builder.getI64IntegerAttr(chain.getValue()));
+ state.addAttribute("chain", builder.getI64IntegerAttr(chain.value()));
}
state.addOperands(name);
state.addTypes(retType);
@@ -349,27 +342,27 @@ void DeclBaseOp::build(OpBuilder &builder, OperationState &state, uint64_t id,
// BlockOp
void BlockOp::build(OpBuilder &builder, OperationState &state, uint64_t id,
- IDefineCode defCode, bool readOnly, Optional<Value> vars, Optional<uint64_t> supercontext,
- Optional<Value> subblocks, Optional<Value> abstract_origin, Optional<Value> chain, Type retType)
+ IDefineCode defCode, bool readOnly, std::optional<Value> vars, std::optional<uint64_t> supercontext,
+ std::optional<Value> subblocks, std::optional<Value> abstract_origin, std::optional<Value> chain, Type retType)
{
state.addAttribute("id", builder.getI64IntegerAttr(id));
state.addAttribute("defCode",
builder.getI32IntegerAttr(static_cast<int32_t>(defCode)));
state.addAttribute("readOnly", builder.getBoolAttr(readOnly));
if(vars) {
- state.addOperands(vars.getValue());
+ state.addOperands(vars.value());
}
if(supercontext) {
- state.addAttribute("supercontext", builder.getI64IntegerAttr(supercontext.getValue()));
+ state.addAttribute("supercontext", builder.getI64IntegerAttr(supercontext.value()));
}
if(subblocks) {
- state.addOperands(subblocks.getValue());
+ state.addOperands(subblocks.value());
}
if(abstract_origin) {
- state.addOperands(abstract_origin.getValue());
+ state.addOperands(abstract_origin.value());
}
if(chain) {
- state.addOperands(chain.getValue());
+ state.addOperands(chain.value());
}
state.addTypes(retType);
}
@@ -448,78 +441,78 @@ void FieldDeclOp::build(OpBuilder &builder, OperationState &state, uint64_t id,
void FieldDeclOp::SetName(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
+ uint64_t fieldId = field.getIdAttr().getInt();
unsigned idx = 1;
this->setOperand(idx ,field.GetName());
- return pluginAPI.SetDeclName(this->idAttr().getInt(), fieldId);
+ return pluginAPI.SetDeclName(this->getIdAttr().getInt(), fieldId);
}
void FieldDeclOp::SetType(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetDeclType(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetDeclType(this->getIdAttr().getInt(), fieldId);
}
void FieldDeclOp::SetDeclAlign(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetDeclAlign(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetDeclAlign(this->getIdAttr().getInt(), fieldId);
}
void FieldDeclOp::SetUserAlign(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetUserAlign(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetUserAlign(this->getIdAttr().getInt(), fieldId);
}
unsigned FieldDeclOp::GetTypeSize()
{
PluginAPI::PluginServerAPI pluginAPI;
- return pluginAPI.GetDeclTypeSize(this->idAttr().getInt());
+ return pluginAPI.GetDeclTypeSize(this->getIdAttr().getInt());
}
void FieldDeclOp::SetSourceLocation(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetSourceLocation(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetSourceLocation(this->getIdAttr().getInt(), fieldId);
}
void FieldDeclOp::SetAddressable(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetAddressable(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetAddressable(this->getIdAttr().getInt(), fieldId);
}
void FieldDeclOp::SetNonAddressablep(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetNonAddressablep(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetNonAddressablep(this->getIdAttr().getInt(), fieldId);
}
void FieldDeclOp::SetVolatile(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetVolatile(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetVolatile(this->getIdAttr().getInt(), fieldId);
}
void FieldDeclOp::SetDeclContext(uint64_t declId)
{
PluginAPI::PluginServerAPI pluginAPI;
- return pluginAPI.SetDeclContext(this->idAttr().getInt(), declId);
+ return pluginAPI.SetDeclContext(this->getIdAttr().getInt(), declId);
}
void FieldDeclOp::SetDeclChain(FieldDeclOp field)
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t fieldId = field.idAttr().getInt();
- return pluginAPI.SetDeclChain(this->idAttr().getInt(), fieldId);
+ uint64_t fieldId = field.getIdAttr().getInt();
+ return pluginAPI.SetDeclChain(this->getIdAttr().getInt(), fieldId);
}
//===----------------------------------------------------------------------===//
// AddressOp
@@ -566,7 +559,7 @@ Value SSAOp::Copy()
PluginAPI::PluginServerAPI pluginAPI;
static OpBuilder builder(this->getOperation());
PinServer::PluginServer::GetInstance()->SetOpBuilder(&builder);
- return pluginAPI.CopySSAOp(this->idAttr().getInt());
+ return pluginAPI.CopySSAOp(this->getIdAttr().getInt());
}
Value SSAOp::GetCurrentDef()
@@ -574,14 +567,14 @@ Value SSAOp::GetCurrentDef()
PluginAPI::PluginServerAPI pluginAPI;
static OpBuilder builder(this->getOperation());
PinServer::PluginServer::GetInstance()->SetOpBuilder(&builder);
- return pluginAPI.GetCurrentDefFromSSA(this->idAttr().getInt());
+ return pluginAPI.GetCurrentDefFromSSA(this->getIdAttr().getInt());
}
bool SSAOp::SetCurrentDef(Value def)
{
uint64_t defId = GetValueId(def);
PluginAPI::PluginServerAPI pluginAPI;
- if (pluginAPI.SetCurrentDefInSSA(this->idAttr().getInt(), defId)) {
+ if (pluginAPI.SetCurrentDefInSSA(this->getIdAttr().getInt(), defId)) {
return true;
}
return false;
@@ -590,7 +583,7 @@ bool SSAOp::SetCurrentDef(Value def)
Operation* SSAOp::GetSSADefOperation()
{
PluginAPI::PluginServerAPI pluginAPI;
- uint64_t definingId = definingIdAttr().getInt();
+ uint64_t definingId = this->getDefiningIdAttr().getInt();
return pluginAPI.GetSSADefOperation(definingId);
}
@@ -700,15 +693,21 @@ CallInterfaceCallable CallOp::getCallableForCallee()
return (*this)->getAttrOfType<SymbolRefAttr>("callee");
}
+/// Set the callee for the generic call operation, this is required by the call
+/// interface.
+void CallOp::setCalleeFromCallable(CallInterfaceCallable callee) {
+ (*this)->setAttr("callee", callee.get<SymbolRefAttr>());
+}
+
/// Get the argument operands to the called function, this is required by the
/// call interface.
-Operation::operand_range CallOp::getArgOperands() { return inputs(); }
+Operation::operand_range CallOp::getArgOperands() { return getInputs(); }
bool CallOp::SetLHS(Value lhs)
{
uint64_t lhsId = GetValueId(lhs);
PluginAPI::PluginServerAPI pluginAPI;
- if (pluginAPI.SetLhsInCallOp(this->idAttr().getInt(), lhsId)) {
+ if (pluginAPI.SetLhsInCallOp(this->getIdAttr().getInt(), lhsId)) {
(*this)->setOperand(0, lhs);
return true;
}
@@ -723,7 +722,7 @@ void CallOp::build(OpBuilder &builder, OperationState &state,
PluginAPI::PluginServerAPI pluginAPI;
uint64_t blockId = pluginAPI.FindBasicBlock(insertionBlock);
PlaceholderOp funcOp = func.getDefiningOp<PlaceholderOp>();
- uint64_t funcId = funcOp.idAttr().getInt();
+ uint64_t funcId = funcOp.getIdAttr().getInt();
vector<uint64_t> argIds;
for (auto v : arguments) {
uint64_t argId = GetValueId(v);
@@ -821,7 +820,7 @@ Value PhiOp::GetResult()
PluginAPI::PluginServerAPI pluginAPI;
static OpBuilder builder(this->getOperation());
PinServer::PluginServer::GetInstance()->SetOpBuilder(&builder);
- return pluginAPI.GetResultFromPhi(this->idAttr().getInt());
+ return pluginAPI.GetResultFromPhi(this->getIdAttr().getInt());
}
PhiOp PhiOp::CreatePhi(Value arg, Block *block)
@@ -841,7 +840,7 @@ bool PhiOp::AddArg(Value arg, Block *pred, Block *succ)
PluginAPI::PluginServerAPI pluginAPI;
uint64_t predId = pluginAPI.FindBasicBlock(pred);
uint64_t succId = pluginAPI.FindBasicBlock(succ);
- uint32_t nArg = pluginAPI.AddArgInPhiOp(this->idAttr().getInt(), argId, predId, succId);
+ uint32_t nArg = pluginAPI.AddArgInPhiOp(this->getIdAttr().getInt(), argId, predId, succId);
OpBuilder builder(this->getOperation());
(*this)->insertOperands((*this)->getNumOperands(), {arg});
(*this)->setAttr("nArgs", builder.getI32IntegerAttr(nArg));
@@ -947,9 +946,11 @@ void AsmOp::build(OpBuilder &builder, OperationState &state,
//===----------------------------------------------------------------------===//
// SwitchOp
-void SwitchOp::build(OpBuilder &builder, OperationState &state,
- uint64_t id, Value index, uint64_t address, Value defaultLabel, ArrayRef<Value> operands,
- Block* defaultDest, uint64_t defaultaddr, ArrayRef<Block*> caseDest, ArrayRef<uint64_t> caseaddr)
+void SwitchOp::build(OpBuilder &builder, OperationState &state, uint64_t id,
+ Value index, uint64_t address, Value defaultLabel,
+ ArrayRef<Value> args, Block* defaultDest,
+ uint64_t defaultaddr, ArrayRef<Block*> caseDest,
+ ArrayRef<uint64_t> caseaddr)
{
state.addAttribute("id", builder.getI64IntegerAttr(id));
state.addAttribute("address", builder.getI64IntegerAttr(address));
@@ -961,7 +962,7 @@ void SwitchOp::build(OpBuilder &builder, OperationState &state,
state.addAttribute("caseaddrs", builder.getArrayAttr(attributes));
state.addOperands(index);
state.addOperands(defaultLabel);
- state.addOperands(operands);
+ state.addOperands(args);
state.addSuccessors(defaultDest);
state.addSuccessors(caseDest);
}
diff --git a/lib/PluginAPI/ControlFlowAPI.cpp b/lib/PluginAPI/ControlFlowAPI.cpp
index 3cf72f6..18d32b8 100644
--- a/lib/PluginAPI/ControlFlowAPI.cpp
+++ b/lib/PluginAPI/ControlFlowAPI.cpp
@@ -24,33 +24,33 @@ static uint64_t GetValueId(mlir::Value v)
{
mlir::Operation *op = v.getDefiningOp();
if (auto mOp = llvm::dyn_cast<MemOp>(op)) {
- return mOp.id();
+ return mOp.getId();
} else if (auto ssaOp = llvm::dyn_cast<SSAOp>(op)) {
- return ssaOp.id();
+ return ssaOp.getId();
} else if (auto cstOp = llvm::dyn_cast<ConstOp>(op)) {
- return cstOp.id();
+ return cstOp.getId();
} else if (auto treelistop = llvm::dyn_cast<ListOp>(op)) {
- return treelistop.id();
+ return treelistop.getId();
} else if (auto strop = llvm::dyn_cast<StrOp>(op)) {
- return strop.id();
+ return strop.getId();
} else if (auto arrayop = llvm::dyn_cast<ArrayOp>(op)) {
- return arrayop.id();
+ return arrayop.getId();
} else if (auto declop = llvm::dyn_cast<DeclBaseOp>(op)) {
- return declop.id();
+ return declop.getId();
} else if (auto fieldop = llvm::dyn_cast<FieldDeclOp>(op)) {
- return fieldop.id();
+ return fieldop.getId();
} else if (auto addressop = llvm::dyn_cast<AddressOp>(op)) {
- return addressop.id();
+ return addressop.getId();
} else if (auto constructorop = llvm::dyn_cast<ConstructorOp>(op)) {
- return constructorop.id();
+ return constructorop.getId();
} else if (auto vecop = llvm::dyn_cast<VecOp>(op)) {
- return vecop.id();
+ return vecop.getId();
} else if (auto blockop = llvm::dyn_cast<BlockOp>(op)) {
- return blockop.id();
+ return blockop.getId();
} else if (auto compop = llvm::dyn_cast<ComponentOp>(op)) {
- return compop.id();
+ return compop.getId();
} else if (auto phOp = llvm::dyn_cast<PlaceholderOp>(op)) {
- return phOp.id();
+ return phOp.getId();
}
return 0;
}
@@ -58,15 +58,15 @@ static uint64_t GetValueId(mlir::Value v)
static uint64_t getBlockAddress(mlir::Block* b)
{
if (mlir::Plugin::CondOp oops = llvm::dyn_cast<mlir::Plugin::CondOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::FallThroughOp oops = llvm::dyn_cast<mlir::Plugin::FallThroughOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::RetOp oops = llvm::dyn_cast<mlir::Plugin::RetOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::GotoOp oops = llvm::dyn_cast<mlir::Plugin::GotoOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else if (mlir::Plugin::TransactionOp oops = llvm::dyn_cast<mlir::Plugin::TransactionOp>(b->back())) {
- return oops.addressAttr().getInt();
+ return oops.getAddressAttr().getInt();
} else {
abort();
}
@@ -129,7 +129,7 @@ mlir::Block* ControlFlowAPI::CreateBlock(mlir::Block* b, FunctionOp *funcOp)
{
Json::Value root;
string funName = __func__;
- uint64_t funcAddr = funcOp->idAttr().getInt();
+ uint64_t funcAddr = funcOp->getIdAttr().getInt();
assert(funcAddr);
PluginServer *server = PluginServer::GetInstance();
uint64_t bbAddr = server->FindBasicBlock(b);
@@ -146,7 +146,7 @@ void ControlFlowAPI::DeleteBlock(mlir::Block* b, FunctionOp* funcOp)
{
Json::Value root;
string funName = __func__;
- uint64_t funcAddr = funcOp->idAttr().getInt();
+ uint64_t funcAddr = funcOp->getIdAttr().getInt();
assert(funcAddr);
uint64_t bbAddr = PluginServer::GetInstance()->FindBasicBlock(b);
assert(bbAddr);
@@ -221,7 +221,7 @@ mlir::Value ControlFlowAPI::CreateNewDef(mlir::Value oldValue,
Json::Value root;
string funName = __func__;
// FIXME: use baseOp.
- uint64_t opId = llvm::dyn_cast<PhiOp>(op).idAttr().getInt();
+ uint64_t opId = llvm::dyn_cast<PhiOp>(op).getIdAttr().getInt();
root["opId"] = std::to_string(opId);
uint64_t valueId = GetValueId(oldValue);
root["valueId"] = std::to_string(valueId);
diff --git a/lib/PluginAPI/DataFlowAPI.cpp b/lib/PluginAPI/DataFlowAPI.cpp
index 2fec19f..5bcf9a0 100644
--- a/lib/PluginAPI/DataFlowAPI.cpp
+++ b/lib/PluginAPI/DataFlowAPI.cpp
@@ -23,33 +23,33 @@ static uint64_t GetValueId(mlir::Value v)
{
mlir::Operation*op = v.getDefiningOp();
if (auto mOp = llvm::dyn_cast<MemOp>(op)) {
- return mOp.id();
+ return mOp.getId();
} else if (auto ssaOp = llvm::dyn_cast<SSAOp>(op)) {
- return ssaOp.id();
+ return ssaOp.getId();
} else if (auto cstOp = llvm::dyn_cast<ConstOp>(op)) {
- return cstOp.id();
+ return cstOp.getId();
} else if (auto treelistop = llvm::dyn_cast<ListOp>(op)) {
- return treelistop.id();
+ return treelistop.getId();
} else if (auto strop = llvm::dyn_cast<StrOp>(op)) {
- return strop.id();
+ return strop.getId();
} else if (auto arrayop = llvm::dyn_cast<ArrayOp>(op)) {
- return arrayop.id();
+ return arrayop.getId();
} else if (auto declop = llvm::dyn_cast<DeclBaseOp>(op)) {
- return declop.id();
+ return declop.getId();
} else if (auto fieldop = llvm::dyn_cast<FieldDeclOp>(op)) {
- return fieldop.id();
+ return fieldop.getId();
} else if (auto addressop = llvm::dyn_cast<AddressOp>(op)) {
- return addressop.id();
+ return addressop.getId();
} else if (auto constructorop = llvm::dyn_cast<ConstructorOp>(op)) {
- return constructorop.id();
+ return constructorop.getId();
} else if (auto vecop = llvm::dyn_cast<VecOp>(op)) {
- return vecop.id();
+ return vecop.getId();
} else if (auto blockop = llvm::dyn_cast<BlockOp>(op)) {
- return blockop.id();
+ return blockop.getId();
} else if (auto compop = llvm::dyn_cast<ComponentOp>(op)) {
- return compop.id();
+ return compop.getId();
} else if (auto phOp = llvm::dyn_cast<PlaceholderOp>(op)) {
- return phOp.id();
+ return phOp.getId();
}
return 0;
}
diff --git a/lib/PluginAPI/PluginServerAPI.cpp b/lib/PluginAPI/PluginServerAPI.cpp
index 0b7d8ab..fc36b62 100644
--- a/lib/PluginAPI/PluginServerAPI.cpp
+++ b/lib/PluginAPI/PluginServerAPI.cpp
@@ -45,33 +45,33 @@ static uint64_t GetValueId(mlir::Value v)
{
mlir::Operation *op = v.getDefiningOp();
if (auto mOp = llvm::dyn_cast<MemOp>(op)) {
- return mOp.id();
+ return mOp.getId();
} else if (auto ssaOp = llvm::dyn_cast<SSAOp>(op)) {
- return ssaOp.id();
+ return ssaOp.getId();
} else if (auto cstOp = llvm::dyn_cast<ConstOp>(op)) {
- return cstOp.id();
+ return cstOp.getId();
} else if (auto treelistop = llvm::dyn_cast<ListOp>(op)) {
- return treelistop.id();
+ return treelistop.getId();
} else if (auto strop = llvm::dyn_cast<StrOp>(op)) {
- return strop.id();
+ return strop.getId();
} else if (auto arrayop = llvm::dyn_cast<ArrayOp>(op)) {
- return arrayop.id();
+ return arrayop.getId();
} else if (auto declop = llvm::dyn_cast<DeclBaseOp>(op)) {
- return declop.id();
+ return declop.getId();
} else if (auto fieldop = llvm::dyn_cast<FieldDeclOp>(op)) {
- return fieldop.id();
+ return fieldop.getId();
} else if (auto addressop = llvm::dyn_cast<AddressOp>(op)) {
- return addressop.id();
+ return addressop.getId();
} else if (auto constructorop = llvm::dyn_cast<ConstructorOp>(op)) {
- return constructorop.id();
+ return constructorop.getId();
} else if (auto vecop = llvm::dyn_cast<VecOp>(op)) {
- return vecop.id();
+ return vecop.getId();
} else if (auto blockop = llvm::dyn_cast<BlockOp>(op)) {
- return blockop.id();
+ return blockop.getId();
} else if (auto compop = llvm::dyn_cast<ComponentOp>(op)) {
- return compop.id();
+ return compop.getId();
} else if (auto phOp = llvm::dyn_cast<PlaceholderOp>(op)) {
- return phOp.id();
+ return phOp.getId();
}
return 0;
}
@@ -725,7 +725,7 @@ void PluginServerAPI::AddBlockToLoop(mlir::Block* b, LoopOp *loop)
Json::Value root;
string funName("AddBlockToLoop");
root["blockId"] = PluginServer::GetInstance()->FindBasicBlock(b);
- root["loopId"] = loop->idAttr().getInt();
+ root["loopId"] = loop->getIdAttr().getInt();
string params = root.toStyledString();
PluginServer::GetInstance()->RemoteCallClientWithAPI(funName, params);
}
@@ -765,7 +765,7 @@ void PluginServerAPI::SetHeader(LoopOp * loop, mlir::Block* b)
{
Json::Value root;
string funName("SetHeader");
- root["loopId"] = std::to_string(loop->idAttr().getInt());
+ root["loopId"] = std::to_string(loop->getIdAttr().getInt());
root["blockId"] = std::to_string(
PluginServer::GetInstance()->FindBasicBlock(b));
string params = root.toStyledString();
@@ -776,7 +776,7 @@ void PluginServerAPI::SetLatch(LoopOp * loop, mlir::Block* b)
{
Json::Value root;
string funName("SetLatch");
- root["loopId"] = std::to_string(loop->idAttr().getInt());
+ root["loopId"] = std::to_string(loop->getIdAttr().getInt());
root["blockId"] = std::to_string(
PluginServer::GetInstance()->FindBasicBlock(b));
string params = root.toStyledString();
@@ -824,8 +824,8 @@ LoopOp PluginServerAPI::FindCommonLoop(LoopOp* loop_1, LoopOp* loop_2)
{
Json::Value root;
string funName("FindCommonLoop");
- root["loopId_1"] = loop_1->idAttr().getInt();
- root["loopId_2"] = loop_2->idAttr().getInt();
+ root["loopId_1"] = loop_1->getIdAttr().getInt();
+ root["loopId_2"] = loop_2->getIdAttr().getInt();
string params = root.toStyledString();
return PluginServer::GetInstance()->LoopOpResult(funName, params);
}
diff --git a/lib/PluginServer/PluginJson.cpp b/lib/PluginServer/PluginJson.cpp
index 864a444..30a8ca6 100755
--- a/lib/PluginServer/PluginJson.cpp
+++ b/lib/PluginServer/PluginJson.cpp
@@ -386,7 +386,7 @@ void PluginJson::FuncOpJsonDeSerialize(
fOp = opBuilder.create<FunctionOp>(location, id, funcAttributes["funcName"], declaredInline, validType);
}
- mlir::Region &bodyRegion = fOp.bodyRegion();
+ mlir::Region &bodyRegion = fOp.getBodyRegion();
Json::Value regionJson = node["region"];
Json::Value::Members bbMember = regionJson.getMemberNames();
// We must create Blocks before process opsG
@@ -861,7 +861,7 @@ mlir::Value PluginJson::DeclBaseOpJsonDeSerialize(const string& data)
int32_t uid = GetID(root["uid"]);
mlir::Value initial = ValueJsonDeSerialize(root["initial"]);
mlir::Value name = ValueJsonDeSerialize(root["name"]);
- llvm::Optional<uint64_t> chain;
+ std::optional<uint64_t> chain;
if (root["chain"]) {
chain = GetID(root["chain"]);
}
@@ -969,7 +969,7 @@ mlir::Value PluginJson::BlockOpJsonDeSerialize(const string& data)
uint64_t id = GetID(root["id"]);
bool readOnly = (bool)atoi(root["readOnly"].asString().c_str());
uint64_t supercontext = GetID(root["supercontext"]);
- llvm::Optional<mlir::Value> vars, subblocks, chain, abstract_origin;
+ std::optional<mlir::Value> vars, subblocks, chain, abstract_origin;
if (root["vars"]) {
vars = ValueJsonDeSerialize(root["vars"]);
}
@@ -1301,8 +1301,9 @@ mlir::Operation *PluginJson::SwitchOpJsonDeserialize(const string& data)
caseDest.push_back(casebb);
}
mlir::OpBuilder *opBuilder = PluginServer::GetInstance()->GetOpBuilder();
- SwitchOp op = opBuilder->create<SwitchOp>(opBuilder->getUnknownLoc(), id, index, address, defaultLabel, ops, defaultDest,
- defaultDestAddr, caseDest, caseaddr);
+ SwitchOp op = opBuilder->create<SwitchOp>(
+ opBuilder->getUnknownLoc(), id, index, address, defaultLabel,
+ ops, defaultDest, defaultDestAddr, caseDest, caseaddr);
PluginServer::GetInstance()->InsertOperation(id, op.getOperation());
return op.getOperation();
}
diff --git a/user/ArrayWidenPass.cpp b/user/ArrayWidenPass.cpp
index cafb177..dd926aa 100644
--- a/user/ArrayWidenPass.cpp
+++ b/user/ArrayWidenPass.cpp
@@ -158,14 +158,14 @@ static IDefineCode getValueDefCode(Value v)
{
IDefineCode rescode;
if (auto ssaop = dyn_cast<SSAOp>(v.getDefiningOp())) {
- rescode = ssaop.defCode().getValue();
+ rescode = ssaop.getDefCode().value();
} else if (auto memop = dyn_cast<MemOp>(v.getDefiningOp())) {
- rescode = memop.defCode().getValue();
+ rescode = memop.getDefCode().value();
} else if (auto constop = dyn_cast<ConstOp>(v.getDefiningOp())) {
- rescode = constop.defCode().getValue();
+ rescode = constop.getDefCode().value();
} else {
auto holderop = dyn_cast<PlaceholderOp>(v.getDefiningOp());
- rescode = holderop.defCode().getValue();
+ rescode = holderop.getDefCode().value();
}
return rescode;
}
@@ -174,14 +174,14 @@ static uint64_t getValueId(Value v)
{
uint64_t resid;
if (auto ssaop = dyn_cast<SSAOp>(v.getDefiningOp())) {
- resid = ssaop.id();
+ resid = ssaop.getId();
} else if (auto memop = dyn_cast<MemOp>(v.getDefiningOp())) {
- resid = memop.id();
+ resid = memop.getId();
} else if (auto constop = dyn_cast<ConstOp>(v.getDefiningOp())) {
- resid = constop.id();
+ resid = constop.getId();
} else {
auto holderop = dyn_cast<PlaceholderOp>(v.getDefiningOp());
- resid = holderop.id();
+ resid = holderop.getId();
}
return resid;
}
@@ -253,13 +253,13 @@ static IDefineCode getSingleRhsAssignOpCode(Operation *op)
static IExprCode getBinaryRhsAssignOpCode(Operation *op)
{
auto assignOp = dyn_cast<AssignOp>(op);
- return assignOp.exprCode();
+ return assignOp.getExprCode();
}
static int64_t getRealValueIntCST(Value v)
{
auto constOp = dyn_cast<ConstOp>(v.getDefiningOp());
- return constOp.initAttr().cast<mlir::IntegerAttr>().getInt();
+ return constOp.getInitAttr().cast<mlir::IntegerAttr>().getInt();
}
static Operation *getSSADefStmtofValue(Value v)
@@ -387,7 +387,7 @@ static bool checkCondOp(Operation *op)
auto cond = dyn_cast<CondOp>(op);
- if (cond.condCode() != IComparisonCode::ne && cond.condCode() != IComparisonCode::eq) {
+ if (cond.getCondCode() != IComparisonCode::ne && cond.getCondCode() != IComparisonCode::eq) {
return false;
}
@@ -482,7 +482,7 @@ static bool isSSANameVar(Value v)
return false;
}
auto ssaOp = dyn_cast<SSAOp>(v.getDefiningOp());
- uint64_t varid = ssaOp.nameVarId();
+ uint64_t varid = ssaOp.getNameVarId();
if (varid != 0) {
return true;
}
@@ -498,8 +498,8 @@ static bool isSameSSANameVar(Value v1, Value v2)
}
auto ssaOp1 = dyn_cast<SSAOp>(v1.getDefiningOp());
auto ssaOp2 = dyn_cast<SSAOp>(v2.getDefiningOp());
- uint64_t varid1 = ssaOp1.nameVarId();
- uint64_t varid2 = ssaOp2.nameVarId();
+ uint64_t varid1 = ssaOp1.getNameVarId();
+ uint64_t varid2 = ssaOp2.getNameVarId();
if (varid1 == varid2) {
return true;
}
@@ -538,14 +538,14 @@ static bool checkUpdateStmt(Operation *op)
return false;
}
auto assignOp = dyn_cast<AssignOp>(op);
- if (assignOp.exprCode() == IExprCode::Plus) {
+ if (assignOp.getExprCode() == IExprCode::Plus) {
Value rhs1 = assignOp.GetRHS1();
Value rhs2 = assignOp.GetRHS2();
if (getValueDefCode(rhs1) == IDefineCode::SSA
&& getValueDefCode(rhs2) == IDefineCode::IntCST
&& isSameSSANameVar (rhs1, originLoop.base)) {
auto constOp = dyn_cast<ConstOp>(rhs2.getDefiningOp());
- originLoop.step = constOp.initAttr().cast<mlir::IntegerAttr>().getInt();
+ originLoop.step = constOp.getInitAttr().cast<mlir::IntegerAttr>().getInt();
if (originLoop.step == 1) {
return true;
}
@@ -818,7 +818,7 @@ static bool checkExitBB(LoopOp loop)
if (!isSameSSANameVar(result, originLoop.base)) {
continue;
}
- if (phi.nArgs() == 2) {
+ if (phi.getNArgs() == 2) {
Value arg0 = phi.GetArgDef(0);
Value arg1 = phi.GetArgDef(1);
if (isEqualValue (arg0, arg1)) {
@@ -846,7 +846,7 @@ static bool checkOriginLoopInfo(LoopOp loop)
}
auto limitssaop = dyn_cast<SSAOp>(originLoop.limit.getDefiningOp());
- if (!limitssaop.readOnly().getValue()) {
+ if (!limitssaop.getReadOnly().value()) {
return false;
}
@@ -909,7 +909,7 @@ static bool checkRecordLoopForm(LoopOp loop)
static bool determineLoopForm(LoopOp loop)
{
- if (loop.innerLoopIdAttr().getInt() != 0 && loop.numBlockAttr().getInt() != 3) {
+ if (loop.getInnerLoopIdAttr().getInt() != 0 && loop.getNumBlockAttr().getInt() != 3) {
fprintf(stderr, "\nWrong loop form, there is inner loop or redundant bb.\n");
return false;
}
@@ -939,7 +939,7 @@ static bool determineLoopForm(LoopOp loop)
static void update_loop_dominator(uint64_t dir, FunctionOp* funcOp)
{
ControlFlowAPI cfAPI;
- mlir::Region &region = funcOp->bodyRegion();
+ mlir::Region &region = funcOp->getBodyRegion();
PluginServerAPI pluginAPI;
for (auto &bb : region.getBlocks()) {
@@ -962,7 +962,7 @@ static void remove_originLoop(LoopOp *loop, FunctionOp* funcOp)
ControlFlowAPI controlapi;
PluginServerAPI pluginAPI;
body = loop->GetLoopBody();
- unsigned n = loop->numBlockAttr().getInt();
+ unsigned n = loop->getNumBlockAttr().getInt();
for (unsigned i = 0; i < n; i++) {
controlapi.DeleteBlock(body[i], funcOp);
}
@@ -1166,7 +1166,7 @@ static void create_align_loop_body_bb(Block *align_loop_body_bb, Block* after_bb
cond_stmt = opBuilder->create<CondOp>(
opBuilder->getUnknownLoc(),
- llvm::dyn_cast<CondOp>(originLoop.condOp2).condCode(),
+ llvm::dyn_cast<CondOp>(originLoop.condOp2).getCondCode(),
lhs1, lhs2, tb, fb);
}
@@ -1282,7 +1282,7 @@ static void create_epilogue_loop_header(Block *epilogue_loop_header, Block* afte
cond_stmt = opBuilder->create<CondOp>(
opBuilder->getUnknownLoc(),
- llvm::dyn_cast<CondOp>(originLoop.condOp1).condCode(),
+ llvm::dyn_cast<CondOp>(originLoop.condOp1).getCondCode(),
res, originLoop.limit, tb, fb);
baseSsa.SetCurrentDef(res);
@@ -1352,7 +1352,7 @@ static void create_epilogue_loop_body_bb(Block *epilogue_loop_body_bb, Block* af
Value res = g.GetLHS();
cond_stmt = opBuilder->create<CondOp>(
opBuilder->getUnknownLoc(),
- llvm::dyn_cast<CondOp>(originLoop.condOp1).condCode(),
+ llvm::dyn_cast<CondOp>(originLoop.condOp1).getCondCode(),
lhs2, res, tb, fb);
defs_map.emplace(epilogue_loop_body_bb, baseSsa.GetCurrentDef());
@@ -1489,7 +1489,7 @@ static void ProcessArrayWiden(uint64_t fun)
context = funcOp.getOperation()->getContext();
mlir::OpBuilder opBuilder_temp = mlir::OpBuilder(context);
opBuilder = &opBuilder_temp;
- string name = funcOp.funcNameAttr().getValue().str();
+ string name = funcOp.getFuncNameAttr().getValue().str();
fprintf(stderr, "Now process func : %s \n", name.c_str());
vector<LoopOp> allLoop = funcOp.GetAllLoops();
for (auto &loop : allLoop) {
diff --git a/user/InlineFunctionPass.cpp b/user/InlineFunctionPass.cpp
index cc4c7c4..fd9313a 100755
--- a/user/InlineFunctionPass.cpp
+++ b/user/InlineFunctionPass.cpp
@@ -30,7 +30,7 @@ static void UserOptimizeFunc(void)
vector<FunctionOp> allFunction = pluginAPI.GetAllFunc();
int count = 0;
for (size_t i = 0; i < allFunction.size(); i++) {
- if (allFunction[i] && allFunction[i].declaredInlineAttr().getValue())
+ if (allFunction[i] && allFunction[i].getDeclaredInlineAttr().getValue())
count++;
}
fprintf(stderr, "declaredInline have %d functions were declared.\n", count);
diff --git a/user/LocalVarSummeryPass.cpp b/user/LocalVarSummeryPass.cpp
index 4f72a2a..c802365 100755
--- a/user/LocalVarSummeryPass.cpp
+++ b/user/LocalVarSummeryPass.cpp
@@ -36,7 +36,7 @@ static void LocalVarSummery(void)
map<string, string> args = PluginServer::GetInstance()->GetArgs();
for (size_t i = 0; i < allFunction.size(); i++) {
if (allFunction[i] == nullptr) continue;
- uint64_t funcID = allFunction[i].idAttr().getValue().getZExtValue();
+ uint64_t funcID = allFunction[i].getIdAttr().getValue().getZExtValue();
fprintf(stderr, "In the %ldth function:\n", i);
vector<mlir::Plugin::LocalDeclOp> decls = pluginAPI.GetDecls(funcID);
int64_t typeFilter = -1u;
@@ -44,9 +44,9 @@ static void LocalVarSummery(void)
typeFilter = (int64_t)pluginAPI.GetTypeCodeFromString(args["type_code"]);
}
mlir::Plugin::FunctionOp funcOp = allFunction[i];
- fprintf(stderr, "func name is :%s\n", funcOp.funcNameAttr().getValue().str().c_str());
- if (funcOp.validTypeAttr().getValue()) {
- mlir::Type dgyty = funcOp.type();
+ fprintf(stderr, "func name is :%s\n", funcOp.getFuncNameAttr().getValue().str().c_str());
+ if (funcOp.getValidTypeAttr().getValue()) {
+ mlir::Type dgyty = funcOp.getType();
if (auto ty = dgyty.dyn_cast<PluginIR::PluginFunctionType>()) {
if(auto stTy = ty.getReturnType().dyn_cast<PluginIR::PluginStructType>()) {
fprintf(stderr, "func return type is PluginStructType\n");
@@ -75,8 +75,8 @@ static void LocalVarSummery(void)
for (size_t j = 0; j < decls.size(); j++) {
auto decl = decls[j];
if (decl == nullptr) continue;
- string name = decl.symNameAttr().getValue().str();
- int64_t declTypeID = decl.typeIDAttr().getValue().getZExtValue();
+ string name = decl.getSymNameAttr().getValue().str();
+ int64_t declTypeID = decl.getTypeIDAttr().getValue().getZExtValue();
if (declTypeID == typeFilter) {
fprintf(stderr, "\tFind %ldth target type %s\n", j, name.c_str());
}
diff --git a/user/SimpleLICMPass.cpp b/user/SimpleLICMPass.cpp
index b78f86f..a051a16 100644
--- a/user/SimpleLICMPass.cpp
+++ b/user/SimpleLICMPass.cpp
@@ -95,17 +95,17 @@ static uint64_t getValueId(Value v)
{
uint64_t resid = 0;
if (auto ssaop = dyn_cast<SSAOp>(v.getDefiningOp())) {
- resid = ssaop.id();
+ resid = ssaop.getId();
} else if (auto memop = dyn_cast<MemOp>(v.getDefiningOp())) {
- resid = memop.id();
+ resid = memop.getId();
} else if (auto constop = dyn_cast<ConstOp>(v.getDefiningOp())) {
- resid = constop.id();
+ resid = constop.getId();
} else if (auto holderop = dyn_cast<PlaceholderOp>(v.getDefiningOp())){
- resid = holderop.id();
+ resid = holderop.getId();
} else if (auto componentop = dyn_cast<ComponentOp>(v.getDefiningOp())){
- resid = componentop.id();
+ resid = componentop.getId();
} else if (auto declop = llvm::dyn_cast<DeclBaseOp>(v.getDefiningOp())) {
- return declop.id();
+ return declop.getId();
}
return resid;
}
@@ -114,14 +114,14 @@ static IDefineCode getValueDefCode(Value v)
{
IDefineCode rescode;
if (auto ssaop = dyn_cast<SSAOp>(v.getDefiningOp())) {
- rescode = ssaop.defCode().getValue();
+ rescode = ssaop.getDefCode().value();
} else if (auto memop = dyn_cast<MemOp>(v.getDefiningOp())) {
- rescode = memop.defCode().getValue();
+ rescode = memop.getDefCode().value();
} else if (auto constop = dyn_cast<ConstOp>(v.getDefiningOp())) {
- rescode = constop.defCode().getValue();
+ rescode = constop.getDefCode().value();
} else {
auto holderop = dyn_cast<PlaceholderOp>(v.getDefiningOp());
- rescode = holderop.defCode().getValue();
+ rescode = holderop.getDefCode().value();
}
return rescode;
}
@@ -141,7 +141,7 @@ static bool isSSANameVar(Value v)
return false;
}
auto ssaOp = dyn_cast<SSAOp>(v.getDefiningOp());
- uint64_t varid = ssaOp.nameVarId();
+ uint64_t varid = ssaOp.getNameVarId();
if (varid != 0) {
return true;
}
@@ -154,7 +154,7 @@ static Operation *getSSADefStmtofValue(Value v)
return NULL;
}
auto ssaOp = dyn_cast<SSAOp>(v.getDefiningOp());
- // uint64_t id = ssaOp.id();
+ // uint64_t id = ssaOp.getId();
// pluginAPI.DebugValue(id);
Operation *op = ssaOp.GetSSADefOperation();
if (!op || !isa<AssignOp, PhiOp>(op)) {
@@ -185,7 +185,7 @@ static edge getLoopPreheaderEdge(LoopOp loop)
void compute_invariantness(Block* bb)
{
LoopOp loop_father = pluginAPI.GetBlockLoopFather(bb);
- if (!loop_father.outerLoopId().getValue()){
+ if (!loop_father.getOuterLoopId().value()){
return ;
}
// pluginAPI.DebugBlock(bb);
@@ -195,8 +195,8 @@ void compute_invariantness(Block* bb)
for (auto phi : phis) {
Value result = phi.GetResult();
uint64_t varId = getValueId(result);
- // pluginAPI.DebugOperation(phi.id());
- int n_args = phi.nArgs();
+ // pluginAPI.DebugOperation(phi.getId());
+ int n_args = phi.getNArgs();
if (n_args <= 2 && !pluginAPI.IsVirtualOperand(varId)) {
for (int i = 0 ; i < n_args; i++) {
Value v = phi.GetArgDef(i);
@@ -205,7 +205,7 @@ void compute_invariantness(Block* bb)
if (!def) break;
Block *def_bb = def->getBlock();
if (def_bb == bb && visited.find(def) == visited.end()) {
- pluginAPI.DebugOperation(phi.id());
+ pluginAPI.DebugOperation(phi.getId());
not_move[def] = true;
break;
}
@@ -231,7 +231,7 @@ void compute_invariantness(Block* bb)
Value lhs = assign.GetLHS();
Value rhs1 = assign.GetRHS1();
- Value vdef = dfAPI.GetGimpleVdef(assign.id());
+ Value vdef = dfAPI.GetGimpleVdef(assign.getId());
uint64_t vdef_id = getValueId(vdef);
if(vdef_id) {
variants.push_back(lhs);
@@ -239,7 +239,7 @@ void compute_invariantness(Block* bb)
change = true;
continue;
}
- vector<mlir::Value> vals = dfAPI.GetSsaUseOperand(assign.id());
+ vector<mlir::Value> vals = dfAPI.GetSsaUseOperand(assign.getId());
for (auto val : vals) {
Operation* def = getSSADefStmtofValue(val);
if(!def) continue;
@@ -282,7 +282,7 @@ void compute_invariantness(Block* bb)
if (not_move.find(op) != not_move.end()) continue;
if(!isa<AssignOp>(op)) continue;
auto assign = dyn_cast<AssignOp>(op);
- pluginAPI.DebugOperation(assign.id());
+ pluginAPI.DebugOperation(assign.getId());
move_stmt.push_back(assign);
}
cout<<" "<<endl;
@@ -295,7 +295,7 @@ LoopOp get_outermost_loop(AssignOp assign)
Block *bb = assign->getBlock();
LoopOp loop = pluginAPI.GetBlockLoopFather(bb);
LoopOp maxloop;
- vector<mlir::Value> vals = dfAPI.GetSsaUseOperand(assign.id());
+ vector<mlir::Value> vals = dfAPI.GetSsaUseOperand(assign.getId());
for (auto val: vals)
{
uint64_t id = getValueId(val);
@@ -336,7 +336,7 @@ static void ProcessSimpleLICM(uint64_t fun)
mlir::MLIRContext * context = funcOp.getOperation()->getContext();
mlir::OpBuilder opBuilder_temp = mlir::OpBuilder(context);
mlir::OpBuilder* opBuilder = &opBuilder_temp;
- string name = funcOp.funcNameAttr().getValue().str();
+ string name = funcOp.getFuncNameAttr().getValue().str();
fprintf(stderr, "Now process func : %s \n", name.c_str());
vector<LoopOp> allLoop = funcOp.GetAllLoops();
for (auto &loop : allLoop) {
--
2.33.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/pin-server.git
git@gitee.com:src-openeuler/pin-server.git
src-openeuler
pin-server
pin-server
master

搜索帮助