Home | History | Annotate | Download | only in gallivm

Lines Matching defs:gallivm

118  * same gallivm state everywhere.
130 create_pass_manager(struct gallivm_state *gallivm)
132 assert(!gallivm->passmgr);
133 assert(gallivm->target);
135 gallivm->passmgr = LLVMCreateFunctionPassManager(gallivm->provider);
136 if (!gallivm->passmgr)
139 LLVMAddTargetData(gallivm->target, gallivm->passmgr);
146 LLVMAddCFGSimplificationPass(gallivm->passmgr);
153 LLVMAddConstantPropagationPass(gallivm->passmgr);
154 LLVMAddPromoteMemoryToRegisterPass(gallivm->passmgr);
157 LLVMAddPromoteMemoryToRegisterPass(gallivm->passmgr);
158 LLVMAddConstantPropagationPass(gallivm->passmgr);
166 LLVMAddInstructionCombiningPass(gallivm->passmgr);
168 LLVMAddGVNPass(gallivm->passmgr);
174 LLVMAddPromoteMemoryToRegisterPass(gallivm->passmgr);
182 * Free gallivm object's LLVM allocations, but not the gallivm object itself.
185 free_gallivm_state(struct gallivm_state *gallivm)
192 if (gallivm->engine && gallivm->provider)
193 LLVMRemoveModuleProvider(gallivm->engine, gallivm->provider,
197 if (gallivm->passmgr) {
198 LLVMDisposePassManager(gallivm->passmgr);
203 if (gallivm->provider)
204 LLVMDisposeModuleProvider(gallivm->provider);
207 if (HAVE_LLVM >= 0x207 && gallivm->engine) {
209 LLVMDisposeExecutionEngine(gallivm->engine);
211 LLVMDisposeModule(gallivm->module);
217 if (gallivm->target) {
218 LLVMDisposeTargetData(gallivm->target);
225 if (gallivm->context)
226 LLVMContextDispose(gallivm->context);
229 if (gallivm->builder)
230 LLVMDisposeBuilder(gallivm->builder);
232 gallivm->engine = NULL;
233 gallivm->target = NULL;
234 gallivm->module = NULL;
235 gallivm->provider = NULL;
236 gallivm->passmgr = NULL;
237 gallivm->context = NULL;
238 gallivm->builder = NULL;
243 init_gallivm_engine(struct gallivm_state *gallivm)
259 ret = lp_build_create_mcjit_compiler_for_module(&gallivm->engine,
260 gallivm->module,
264 ret = LLVMCreateJITCompiler(&gallivm->engine, gallivm->provider,
274 lp_register_oprofile_jit_event_listener(gallivm->engine);
278 LLVMAddModuleProvider(gallivm->engine, gallivm->provider);//new
281 gallivm->target = LLVMGetExecutionEngineTargetData(gallivm->engine);
282 if (!gallivm->target)
290 LLVMTargetDataRef target = LLVMGetExecutionEngineTargetData(gallivm->engine);
294 data_layout = LLVMCopyStringRepOfTargetData(gallivm->target);
328 * Allocate gallivm LLVM objects.
332 init_gallivm_state(struct gallivm_state *gallivm)
334 assert(!gallivm->context);
335 assert(!gallivm->module);
336 assert(!gallivm->provider);
343 gallivm->context = gallivm_context;
344 if (!gallivm->context)
347 gallivm->module = LLVMModuleCreateWithNameInContext("gallivm",
348 gallivm->context);
349 if (!gallivm->module)
352 gallivm->provider =
353 LLVMCreateModuleProviderForExistingModule(gallivm->module);
354 if (!gallivm->provider)
357 gallivm->builder = LLVMCreateBuilderInContext(gallivm->context);
358 if (!gallivm->builder)
366 if (!init_gallivm_engine(gallivm)) {
399 gallivm->target = LLVMCreateTargetData(layout);
400 if (!gallivm->target) {
406 if (!create_pass_manager(gallivm))
412 free_gallivm_state(gallivm);
469 struct gallivm_state *gallivm;
477 gallivm = CALLOC_STRUCT(gallivm_state);
478 if (gallivm) {
479 if (!init_gallivm_state(gallivm)) {
480 FREE(gallivm);
481 gallivm = NULL;
486 GlobalGallivm = gallivm;
489 return gallivm;
497 gallivm_destroy(struct gallivm_state *gallivm)
501 (void) gallivm;
503 free_gallivm_state(gallivm);
504 FREE(gallivm);
513 gallivm_optimize_function(struct gallivm_state *gallivm,
520 assert(gallivm->passmgr);
523 LLVMRunFunctionPassManager(gallivm->passmgr, func);
539 gallivm_verify_function(struct gallivm_state *gallivm,
551 gallivm_optimize_function(gallivm, func);
562 gallivm_compile_module(struct gallivm_state *gallivm)
565 assert(!gallivm->compiled);
570 LLVMWriteBitcodeToFile(gallivm->module, "llvmpipe.bc");
576 assert(!gallivm->engine);
577 if (!init_gallivm_engine(gallivm)) {
581 assert(gallivm->engine);
583 ++gallivm->compiled;
588 gallivm_jit_function(struct gallivm_state *gallivm,
594 assert(gallivm->compiled);
595 assert(gallivm->engine);
597 code = LLVMGetPointerToGlobal(gallivm->engine, func);
616 gallivm_free_function(struct gallivm_state *gallivm,
622 LLVMFreeMachineCodeForFunction(gallivm->engine, func);