Go to the documentation of this file.
24 static struct RegisterInterp {
35 std::string *ErrStr) {
37 if (
Error Err =
M->materializeAll()) {
59 initializeExecutionEngine();
60 initializeExternalFunctions();
71 while (!AtExitHandlers.empty()) {
73 AtExitHandlers.pop_back();
82 assert (
F &&
"Function *F was null at entry to run()");
91 const size_t ArgCount =
F->getFunctionType()->getNumParams();
static ExecutionEngine * create(std::unique_ptr< Module > M, std::string *ErrorStr=nullptr)
Create an interpreter ExecutionEngine.
This is an optimization pass for GlobalISel generic memory operations.
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
void runAtExitHandlers()
runAtExitHandlers - Run any functions registered by the program's calls to atexit(3),...
void callFunction(Function *F, ArrayRef< GenericValue > ArgVals)
GenericValue runFunction(Function *F, ArrayRef< GenericValue > ArgValues) override
run - Start execution with the specified function and arguments.
ArrayRef< T > slice(size_t N, size_t M) const
slice(n, m) - Chop off the first N elements of the array, and keep M elements in the array.
Base class for error info classes.
virtual std::string message() const
Return the error message as a string.
const DataLayout & getDataLayout() const
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Expected< ExpressionValue > min(const ExpressionValue &Lhs, const ExpressionValue &Rhs)
void LLVMLinkInInterpreter()
const CustomOperand< const MCSubtargetInfo & > Msg[]
Abstract interface for implementation execution of LLVM modules, designed to support both interpreter...
Lightweight error class with error context and mandatory checking.
void emitGlobals()
EmitGlobals - Emit all of the global variables to memory, storing their addresses into GlobalAddress.
Interpreter(std::unique_ptr< Module > M)
size_t size() const
size - Get the array size.
void handleAllErrors(Error E, HandlerTs &&... Handlers)
Behaves the same as handleErrors, except that by contract all errors must be handled by the given han...