From a9c6073d912536c133d83017abf5993bd267f37c Mon Sep 17 00:00:00 2001 From: pranav-159 Date: Fri, 10 Mar 2023 14:50:25 +0530 Subject: [PATCH 1/9] ir2vec compatible with ml-llvm-project --- CMakeLists.txt | 8 +++ src/CMakeLists.txt | 76 ++++-------------------- src/CollectIR.cpp | 84 --------------------------- src/IR2Vec.cpp | 140 --------------------------------------------- 4 files changed, 18 insertions(+), 290 deletions(-) create mode 100644 CMakeLists.txt delete mode 100644 src/CollectIR.cpp delete mode 100644 src/IR2Vec.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..e7ded3db8 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.13) +project(IR2Vec VERSION 1.1.0) + +include(AddLLVM) +include(HandleLLVMOptions) +include(LLVMDistributionSupport) + +add_subdirectory(src) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 64578c03f..aa18401ac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,26 +1,6 @@ -cmake_minimum_required(VERSION 3.13) -project(ir2vec VERSION 1.1.0) - -set(IR2VEC_LIB "IR2Vec") -set(IR2VEC_LIB_STATIC "IR2Vec_Static") - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") - - -set(LT_LLVM_INSTALL_DIR "" CACHE PATH "LLVM installation directory") -list(APPEND CMAKE_PREFIX_PATH "${LT_LLVM_INSTALL_DIR}/lib/cmake/llvm/") - - -find_package(LLVM 10.0.1 REQUIRED CONFIG) -message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") -message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") - find_package (Eigen3 3.3.7 REQUIRED NO_MODULE) message(STATUS "Found Eigen3 in: ${Eigen3_DIR}") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - -include_directories(SYSTEM ${LLVM_INCLUDE_DIRS}) configure_file (./include/version.h.cmake version.h @ONLY) include_directories(./include ${CMAKE_CURRENT_BINARY_DIR}) @@ -34,54 +14,18 @@ endif() set(commonsrc FlowAware.cpp Symbolic.cpp utils.cpp) set(libsrc libIR2Vec.cpp ${commonsrc}) -set(binsrc CollectIR.cpp IR2Vec.cpp) file(GLOB RESOURCE_FILES ../vocabulary/**.txt) -# llvm_map_components_to_libnames(llvm_libs all) -llvm_map_components_to_libnames(llvm_libs support core irreader analysis TransformUtils) - -add_executable(${PROJECT_NAME} ${binsrc}) -target_link_libraries (${PROJECT_NAME} ${llvm_libs} objlib) -target_include_directories(${PROJECT_NAME} PRIVATE .) - -add_library(objlib OBJECT ${libsrc}) -set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1) -target_link_libraries (objlib Eigen3::Eigen) - -add_library(${IR2VEC_LIB} SHARED $) -add_library(${IR2VEC_LIB_STATIC} STATIC $) -set_target_properties(${IR2VEC_LIB} ${IR2VEC_LIB_STATIC} PROPERTIES - VERSION ${PROJECT_VERSION} - SOVERSION 1 - PUBLIC_HEADER "./include/IR2Vec.h" - RESOURCE ${RESOURCE_FILES} - OUTPUT_NAME ${IR2VEC_LIB} - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib - ) - -install(TARGETS ${IR2VEC_LIB} ${IR2VEC_LIB_STATIC} - LIBRARY DESTINATION lib - PUBLIC_HEADER DESTINATION include - RESOURCE DESTINATION ./) - -add_subdirectory(test-suite) - -add_custom_target(verify-symbolic - COMMAND bash ./sanity_check.sh SYM llvm10 - COMMENT "Generating Symbolic IR2Vec vectors and comparing with oracle..." - WORKING_DIRECTORY ./test-suite - DEPENDS ${PROJECT_NAME} - VERBATIM - ) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/include/IR2Vec.h DESTINATION ${LLVM_MAIN_INCLUDE_DIR}/llvm ) -add_custom_target(verify-flowaware - COMMAND bash sanity_check.sh FA llvm10 - COMMENT "Generating Flow-Aware IR2Vec vectors and comparing with oracle..." - WORKING_DIRECTORY ./test-suite - DEPENDS ${PROJECT_NAME} - VERBATIM - ) +add_llvm_library(LLVMIR2Vec + ${libsrc} + + DEPENDS + intrinsics_gen +) -add_custom_target(verify-all DEPENDS verify-symbolic verify-flowaware) +target_link_libraries(LLVMIR2Vec PRIVATE Eigen3::Eigen) +target_include_directories(LLVMIR2Vec PRIVATE ${LLVM_MAIN_INCLUDE_DIR}) +target_include_directories(LLVMIR2Vec PRIVATE .) \ No newline at end of file diff --git a/src/CollectIR.cpp b/src/CollectIR.cpp deleted file mode 100644 index 1863368c3..000000000 --- a/src/CollectIR.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2021, S. VenkataKeerthy, Rohit Aggarwal -// Department of Computer Science and Engineering, IIT Hyderabad -// -// This software is available under the BSD 4-Clause License. Please see LICENSE -// file in the top-level directory for more details. -// -#include "CollectIR.h" - -#include "llvm/Analysis/LoopInfo.h" -#include "llvm/IR/LegacyPassManager.h" -#include "llvm/IR/Type.h" -#include "llvm/Pass.h" -#include "llvm/Transforms/Scalar.h" -#include - -using namespace llvm; - -void CollectIR::generateTriplets(std::ostream &out) { - for (Function &F : M) - for (BasicBlock &B : F) - traverseBasicBlock(B); - out << res; -} - -void CollectIR::traverseBasicBlock(BasicBlock &B) { - for (Instruction &I : B) { - res += "\n" + std::string(I.getOpcodeName()) + " "; - switch (I.getType()->getTypeID()) { - case 0: - res += " voidTy "; - break; - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - res += " floatTy "; - break; - case 11: - res += " integerTy "; - break; - case 12: - res += " functionTy "; - break; - case 13: - res += " structTy "; - break; - case 14: - res += " arrayTy "; - break; - case 15: - res += " pointerTy "; - break; - case 16: - res += " vectorTy "; - break; - default: - res += "unknownTy"; - } - for (unsigned i = 0; i < I.getNumOperands(); i++) { - IR2VEC_DEBUG(I.print(outs()); outs() << "\n";); - IR2VEC_DEBUG(outs() << i << "\n"); - IR2VEC_DEBUG(I.getOperand(i)->print(outs()); outs() << "\n";); - - if (isa(I.getOperand(i))) { - res += " function "; - IR2VEC_DEBUG(outs() << "Function\n"); - } else if (isa(I.getOperand(i)->getType())) { - res += " pointer "; - IR2VEC_DEBUG(outs() << "pointer\n"); - } else if (isa(I.getOperand(i))) { - res += " constant "; - IR2VEC_DEBUG(outs() << "constant\n"); - } else if (isa(I.getOperand(i))) { - res += " label "; - IR2VEC_DEBUG(outs() << "label\n"); - } else { - res += " variable "; - IR2VEC_DEBUG(outs() << "variable2\n"); - } - } - } -} diff --git a/src/IR2Vec.cpp b/src/IR2Vec.cpp deleted file mode 100644 index f511ec969..000000000 --- a/src/IR2Vec.cpp +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) 2021, S. VenkataKeerthy, Rohit Aggarwal -// Department of Computer Science and Engineering, IIT Hyderabad -// -// This software is available under the BSD 4-Clause License. Please see LICENSE -// file in the top-level directory for more details. -// -#include "IR2Vec.h" -#include "CollectIR.h" -#include "FlowAware.h" -#include "Symbolic.h" -#include "version.h" - -#include "llvm/Support/CommandLine.h" - -using namespace llvm; -using namespace IR2Vec; - -cl::OptionCategory category("IR2Vec Options"); - -cl::opt cl_sym("sym", cl::Optional, - cl::desc("Generate Symbolic Encodings"), cl::init(false), - cl::cat(category)); - -cl::opt cl_fa("fa", cl::Optional, - cl::desc("Generate Flow-Aware Encodings"), cl::init(false), - cl::cat(category)); - -cl::opt cl_collectIR( - "collectIR", cl::Optional, - cl::desc("Generate triplets for training seed embedding vocabulary"), - cl::init(false), cl::cat(category)); - -cl::opt cl_vocab("vocab", cl::Optional, cl::init(""), - cl::desc("Use embeddings from file path"), - cl::cat(category)); - -cl::opt cl_iname(cl::Positional, cl::desc("Input file path"), - cl::Required, cl::cat(category)); - -cl::opt cl_oname("o", cl::Required, cl::desc("Output file path"), - cl::cat(category)); - -cl::opt - cl_level("level", cl::Optional, cl::init(0), - cl::desc("Level of encoding - p = Program; f = Function"), - cl::cat(category)); - -cl::opt cl_cls("class", cl::Hidden, cl::Optional, cl::init(-1), - cl::desc("Class information"), cl::cat(category)); - -cl::opt cl_WO("wo", cl::Hidden, cl::Optional, cl::init(1), - cl::desc("Weight of Opcode"), cl::cat(category)); - -cl::opt cl_WA("wa", cl::Hidden, cl::Optional, cl::init(0.2), - cl::desc("Weight of arguments"), cl::cat(category)); - -cl::opt cl_WT("wt", cl::Hidden, cl::Optional, cl::init(0.5), - cl::desc("Weight of types"), cl::cat(category)); - -cl::opt cl_debug("debug-ir2vec", cl::Optional, - cl::desc("Diagnostics for debugging"), cl::init(false), - cl::cat(category)); - -void printVersion(raw_ostream &ostream) { - ostream << "\033[1;35m" - << "IR2Vec Version : " << IR2VEC_VERSION << "\033[0m\n"; - cl::PrintVersionMessage(); -} - -int main(int argc, char **argv) { - cl::SetVersionPrinter(printVersion); - cl::HideUnrelatedOptions(category); - cl::ParseCommandLineOptions(argc, argv); - - fa = cl_fa; - sym = cl_sym; - collectIR = cl_collectIR; - vocab = cl_vocab; - iname = cl_iname; - oname = cl_oname; - level = cl_level; - cls = cl_cls; - WO = cl_WO; - WA = cl_WA; - WT = cl_WT; - debug = cl_debug; - - bool failed = false; - if (!((sym ^ fa) ^ collectIR)) { - errs() << "Either of sym, fa or collectIR should be specified\n"; - failed = true; - } - - if (sym || fa) { - if (level != 'p' && level != 'f') { - errs() << "Invalid level specified: Use either p or f\n"; - failed = true; - } - if (vocab.empty()) { - errs() << "Should specify vocab pointing to the path of vocabulary\n"; - failed = true; - } - } - - else { - if (level) - errs() << "[WARNING] level would not be used in collectIR mode\n"; - if (!vocab.empty()) - errs() << "[WARNING] vocab would not be used in collectIR mode\n"; - } - - if (failed) - exit(1); - - auto M = getLLVMIR(); - - if (fa) { - IR2Vec_FA FA(*M); - std::ofstream o, missCount, cyclicCount; - o.open(oname, std::ios_base::app); - missCount.open("missCount_" + oname, std::ios_base::app); - cyclicCount.open("cyclicCount_" + oname, std::ios_base::app); - FA.generateFlowAwareEncodings(&o, &missCount, &cyclicCount); - } - - else if (sym) { - IR2Vec_Symbolic SYM(*M); - std::ofstream o; - o.open(oname, std::ios_base::app); - SYM.generateSymbolicEncodings(&o); - } - - else if (collectIR) { - CollectIR cir(M); - std::ofstream o; - o.open(oname, std::ios_base::app); - cir.generateTriplets(o); - } - return 0; -} From a170915d133d42fcd1751f61c95fa668fad5f0cb Mon Sep 17 00:00:00 2001 From: Siddharth Jain Date: Fri, 29 Sep 2023 20:34:08 +0530 Subject: [PATCH 2/9] Add basic block to vector map --- src/FlowAware.cpp | 7 ++++--- src/Symbolic.cpp | 5 +++++ src/include/FlowAware.h | 6 ++++++ src/include/IR2Vec.h | 9 +++++++++ src/include/Symbolic.h | 6 ++++++ src/libIR2Vec.cpp | 1 + 6 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/FlowAware.cpp b/src/FlowAware.cpp index 76c1ae2ea..dfbcda95e 100644 --- a/src/FlowAware.cpp +++ b/src/FlowAware.cpp @@ -24,6 +24,7 @@ #include #include #include +#include using namespace llvm; using namespace IR2Vec; @@ -480,7 +481,7 @@ Vector IR2Vec_FA::func2Vec(Function &F, bbVector.begin(), std::plus()); } } - + bbVecMap[b] = bbVector; IR2VEC_DEBUG(outs() << "-------------------------------------------\n"); for (auto i : bbVector) { if ((i <= 0.0001 && i > 0) || (i < 0 && i >= -0.0001)) { @@ -809,7 +810,7 @@ void IR2Vec_FA::getPartialVec( } Vector instVector(DIM, 0); - StringRef opcodeName = I.getOpcodeName(); + std::string opcodeName = I.getOpcodeName(); auto vec = getValue(opcodeName); IR2VEC_DEBUG(I.print(outs()); outs() << "\n"); std::transform(instVector.begin(), instVector.end(), vec.begin(), @@ -1187,7 +1188,7 @@ void IR2Vec_FA::inst2Vec( } Vector instVector(DIM, 0); - StringRef opcodeName = I.getOpcodeName(); + std::string opcodeName = I.getOpcodeName(); auto vec = getValue(opcodeName); IR2VEC_DEBUG(I.print(outs()); outs() << "\n"); std::transform(instVector.begin(), instVector.end(), vec.begin(), diff --git a/src/Symbolic.cpp b/src/Symbolic.cpp index 111cae50a..a8aa54ada 100644 --- a/src/Symbolic.cpp +++ b/src/Symbolic.cpp @@ -123,6 +123,7 @@ Vector IR2Vec_Symbolic::func2Vec(Function &F, std::transform(funcVector.begin(), funcVector.end(), weightedBBVector.begin(), funcVector.begin(), std::plus()); + bbVecMap[b] = weightedBBVector; } funcStack.pop_back(); @@ -131,6 +132,10 @@ Vector IR2Vec_Symbolic::func2Vec(Function &F, Vector IR2Vec_Symbolic::bb2Vec(BasicBlock &B, SmallVector &funcStack) { + auto It = bbVecMap.find(&B); + if (It != bbVecMap.end()) { + return It->second; + } Vector bbVector(DIM, 0); for (auto &I : B) { diff --git a/src/include/FlowAware.h b/src/include/FlowAware.h index 03472c9a5..2d1db093e 100644 --- a/src/include/FlowAware.h +++ b/src/include/FlowAware.h @@ -35,6 +35,7 @@ class IR2Vec_FA { llvm::SmallMapVector instVecMap; + llvm::SmallMapVector bbVecMap; llvm::SmallMapVector funcVecMap; llvm::SmallMapVector + getBBVecMap() { + return bbVecMap; + } + llvm::SmallMapVector getFuncVecMap() { return funcVecMap; diff --git a/src/include/IR2Vec.h b/src/include/IR2Vec.h index a791f0ddf..2143f748e 100644 --- a/src/include/IR2Vec.h +++ b/src/include/IR2Vec.h @@ -25,6 +25,7 @@ class Embeddings { float WT = 0.5); llvm::SmallMapVector instVecMap; + llvm::SmallMapVector bbVecMap; llvm::SmallMapVector funcVecMap; Vector pgmVector; @@ -49,6 +50,14 @@ class Embeddings { return instVecMap; } + // Returns a map containing basic block and the corresponding vector + // representations for a given module corresponding to the IR2VecMode and + // other configurations that is set in constructor + llvm::SmallMapVector + getBBVecMap() { + return bbVecMap; + } + // Returns a map containing functions and the corresponding vector // representations for a given module corresponding to the IR2VecMode and // other configurations that is set in constructor diff --git a/src/include/Symbolic.h b/src/include/Symbolic.h index 200d4989a..c149b26b0 100644 --- a/src/include/Symbolic.h +++ b/src/include/Symbolic.h @@ -31,6 +31,7 @@ class IR2Vec_Symbolic { llvm::SmallVector &funcStack); std::string res; llvm::SmallMapVector funcVecMap; + llvm::SmallMapVector bbVecMap; llvm::SmallMapVector instVecMap; std::map opcMap; @@ -49,6 +50,11 @@ class IR2Vec_Symbolic { return instVecMap; } + llvm::SmallMapVector + getBBVecMap() { + return bbVecMap; + } + llvm::SmallMapVector getFuncVecMap() { return funcVecMap; diff --git a/src/libIR2Vec.cpp b/src/libIR2Vec.cpp index 87a05756b..493a70348 100644 --- a/src/libIR2Vec.cpp +++ b/src/libIR2Vec.cpp @@ -37,6 +37,7 @@ int IR2Vec::Embeddings::generateEncodings(llvm::Module &M, SYM.generateSymbolicEncodings(o); instVecMap = SYM.getInstVecMap(); funcVecMap = SYM.getFuncVecMap(); + bbVecMap = SYM.getBBVecMap(); pgmVector = SYM.getProgramVector(); } From 4a340f6f44cbad79fe0185678d98fded4b9e9d6f Mon Sep 17 00:00:00 2001 From: Yash Agrawal Date: Mon, 27 May 2024 11:25:09 +0530 Subject: [PATCH 3/9] updated vector initialisation --- src/FlowAware.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FlowAware.cpp b/src/FlowAware.cpp index dfbcda95e..2cb62729f 100644 --- a/src/FlowAware.cpp +++ b/src/FlowAware.cpp @@ -91,7 +91,7 @@ void IR2Vec_FA::collectWriteDefsMap(Module &M) { } Vector IR2Vec_FA::getValue(std::string key) { - Vector vec; + Vector vec(DIM, 0); if (opcMap.find(key) == opcMap.end()) { errs() << "cannot find key in map : " << key << "\n"; dataMissCounter++; From 99368eb1c674092f56aa330256c171895e472add Mon Sep 17 00:00:00 2001 From: "S. VenkataKeerthy" <31350914+svkeerthy@users.noreply.github.com> Date: Sun, 18 Aug 2024 13:24:24 +0530 Subject: [PATCH 4/9] Update libIR2Vec.cpp to compute bbVecMap in FA and other flows --- src/libIR2Vec.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libIR2Vec.cpp b/src/libIR2Vec.cpp index d5e3e3b94..26a9f6baf 100644 --- a/src/libIR2Vec.cpp +++ b/src/libIR2Vec.cpp @@ -33,17 +33,20 @@ int IR2Vec::Embeddings::generateEncodings(llvm::Module &M, FA.generateFlowAwareEncodingsForFunction(o, funcName); instVecMap = FA.getInstVecMap(); funcVecMap = FA.getFuncVecMap(); + bbVecMap = SYM.getBBVecMap(); } else if (mode == IR2Vec::IR2VecMode::FlowAware) { IR2Vec_FA FA(M); FA.generateFlowAwareEncodings(o); instVecMap = FA.getInstVecMap(); funcVecMap = FA.getFuncVecMap(); + bbVecMap = SYM.getBBVecMap(); pgmVector = FA.getProgramVector(); } else if (mode == IR2Vec::IR2VecMode::Symbolic && !funcName.empty()) { IR2Vec_Symbolic SYM(M); SYM.generateSymbolicEncodingsForFunction(0, funcName); instVecMap = SYM.getInstVecMap(); funcVecMap = SYM.getFuncVecMap(); + bbVecMap = SYM.getBBVecMap(); } else if (mode == IR2Vec::IR2VecMode::Symbolic) { IR2Vec_Symbolic SYM(M); SYM.generateSymbolicEncodings(o); From f199f0b5bca9616f520f309bda46ef5549dd5f64 Mon Sep 17 00:00:00 2001 From: "S. VenkataKeerthy" <31350914+svkeerthy@users.noreply.github.com> Date: Sun, 18 Aug 2024 13:29:34 +0530 Subject: [PATCH 5/9] Update libIR2Vec.cpp --- src/libIR2Vec.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libIR2Vec.cpp b/src/libIR2Vec.cpp index 26a9f6baf..c89028612 100644 --- a/src/libIR2Vec.cpp +++ b/src/libIR2Vec.cpp @@ -33,13 +33,13 @@ int IR2Vec::Embeddings::generateEncodings(llvm::Module &M, FA.generateFlowAwareEncodingsForFunction(o, funcName); instVecMap = FA.getInstVecMap(); funcVecMap = FA.getFuncVecMap(); - bbVecMap = SYM.getBBVecMap(); + bbVecMap = FA.getBBVecMap(); } else if (mode == IR2Vec::IR2VecMode::FlowAware) { IR2Vec_FA FA(M); FA.generateFlowAwareEncodings(o); instVecMap = FA.getInstVecMap(); funcVecMap = FA.getFuncVecMap(); - bbVecMap = SYM.getBBVecMap(); + bbVecMap = FA.getBBVecMap(); pgmVector = FA.getProgramVector(); } else if (mode == IR2Vec::IR2VecMode::Symbolic && !funcName.empty()) { IR2Vec_Symbolic SYM(M); From cce6af79a17a45c5665d39f47f9dae26322c2c1a Mon Sep 17 00:00:00 2001 From: Soumyaworks Date: Tue, 3 Sep 2024 12:42:30 +0530 Subject: [PATCH 6/9] Renaming check to check_ir2vec_lit_tests --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e4c7adaaf..9304ac4d6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -52,7 +52,7 @@ if(NOT LLVM_IR2VEC) add_subdirectory(test-suite) - add_custom_target(check + add_custom_target(check_ir2vec_lit_tests COMMAND python3 test-lit.py -a . COMMENT "Running LIT based test-suite" WORKING_DIRECTORY ./test-suite From 7074efd247d1752b646ee54d1e53196a2b659605 Mon Sep 17 00:00:00 2001 From: Soumyaworks Date: Tue, 3 Sep 2024 12:54:41 +0530 Subject: [PATCH 7/9] Renaming check_ir2vec_lit_tests to check_ir2vec --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9304ac4d6..43fccccbc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -52,7 +52,7 @@ if(NOT LLVM_IR2VEC) add_subdirectory(test-suite) - add_custom_target(check_ir2vec_lit_tests + add_custom_target(check_ir2vec COMMAND python3 test-lit.py -a . COMMENT "Running LIT based test-suite" WORKING_DIRECTORY ./test-suite From 2d66ee23d4536d6ab11a882b6384878440e4621b Mon Sep 17 00:00:00 2001 From: Soumyaworks Date: Tue, 3 Sep 2024 12:59:30 +0530 Subject: [PATCH 8/9] Minor renaming of make check in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8aa42518d..c51208f4c 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ If you're a C++ developer and require low-level control, optimization, or integr This process would generate `ir2vec` binary under `build/bin` directory, `libIR2Vec.a` and `libIR2Vec.so` under `build/lib` directory. -To ensure the correctness, run `make check` +To ensure the correctness, run `make check_ir2vec` From 25286287e01130660621d29ba03926fc548e7a8f Mon Sep 17 00:00:00 2001 From: "S. VenkataKeerthy" <31350914+svkeerthy@users.noreply.github.com> Date: Wed, 9 Oct 2024 20:51:46 +0530 Subject: [PATCH 9/9] Update test.yml --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3f8959486..8ae890b0f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,4 +45,4 @@ jobs: - name: make run: cd build && make -j8 - name: Run-tests - run: cd build && ulimit -s unlimited && make check + run: cd build && ulimit -s unlimited && make check_ir2vec