[codegen] cleaned up shared memory and double-buffering logic
This commit is contained in:
@@ -199,24 +199,24 @@ std::unique_ptr<driver::module> function::make_bin(ir::module &module, driver::c
|
||||
llvm::LLVMContext ctx;
|
||||
std::unique_ptr<llvm::Module> llvm(new llvm::Module(module.get_name(), ctx));
|
||||
// create passes
|
||||
codegen::analysis::cts shmem_info;
|
||||
codegen::analysis::cts cts;
|
||||
codegen::analysis::align align;
|
||||
codegen::analysis::liveness shmem_liveness(&shmem_info);
|
||||
codegen::analysis::liveness shmem_liveness;
|
||||
codegen::analysis::axes axes;
|
||||
codegen::analysis::layout layouts(&axes);
|
||||
codegen::transform::coalesce coalesce(&align, &layouts, &shmem_info);
|
||||
codegen::transform::coalesce coalesce(&align, &layouts);
|
||||
codegen::analysis::tiles tiles(opt.num_warps, &align, &axes, &layouts);
|
||||
codegen::analysis::allocation shmem_allocation(&shmem_liveness, &shmem_info, &tiles);
|
||||
codegen::transform::membar shmem_barriers(&shmem_allocation, &shmem_info);
|
||||
codegen::analysis::allocation shmem_allocation(&shmem_liveness, &tiles);
|
||||
codegen::transform::membar shmem_barriers(&shmem_liveness, &shmem_allocation);
|
||||
codegen::transform::dce dce;
|
||||
codegen::transform::peephole peephole;
|
||||
codegen::transform::reassociate reassociate(&align);
|
||||
codegen::selection selection(&shmem_allocation, &tiles, &shmem_info, &align, &axes, &layouts, &coalesce, target.get(), opt.num_warps);
|
||||
codegen::selection selection(&shmem_liveness, &shmem_allocation, &tiles, &align, &axes, &layouts, &coalesce, target.get(), opt.num_warps);
|
||||
// run passes
|
||||
peephole.run(module);
|
||||
dce.run(module);
|
||||
align.run(module);
|
||||
shmem_info.run(module);
|
||||
cts.run(module);
|
||||
axes.run(module);
|
||||
layouts.run(module);
|
||||
coalesce.run(module);
|
||||
@@ -227,10 +227,10 @@ std::unique_ptr<driver::module> function::make_bin(ir::module &module, driver::c
|
||||
reassociate.run(module);
|
||||
dce.run(module);
|
||||
peephole.run(module);
|
||||
shmem_info.run(module);
|
||||
dce.run(module);
|
||||
cts.run(module);
|
||||
shmem_liveness.run(module);
|
||||
ir::print(module, std::cout);
|
||||
shmem_allocation.run();
|
||||
shmem_allocation.run(module);
|
||||
if(shmem_allocation.allocated_size() > context->device()->max_shared_memory())
|
||||
return std::unique_ptr<driver::module>();
|
||||
shmem_barriers.run(module);
|
||||
|
Reference in New Issue
Block a user