#include </home/runner/work/mimir/mimir/src/mim/plug/ll/include/mim/plug/ll/ll.h>
Public Types | |
| using | Super = mim::Emitter<std::string, std::string, BB, Emitter> |
Public Member Functions | |
| Emitter (World &world, std::ostream &ostream) | |
| bool | is_valid (std::string_view s) |
| void | start () override |
| Actual entry. | |
| void | emit_imported (Lam *) |
| virtual void | emit_epilogue (Lam *) |
| std::string | emit_bb (BB &, const Def *) |
| virtual std::string | prepare () |
| void | finalize () |
| virtual std::optional< std::string > | isa_targetspecific_intrinsic (BB &, const Def *) |
| std::string | as_targetspecific_intrinsic (BB &bb, const Def *def) |
| template<class... Args> | |
| void | declare (std::format_string< Args... > s, Args &&... args) |
| Public Member Functions inherited from mim::NestPhase< Lam > | |
| NestPhase (World &world, std::string name, bool elide_empty, bool schedule=false) | |
| const Nest & | nest () const |
| Public Member Functions inherited from mim::ClosedMutPhase< Lam > | |
| ClosedMutPhase (World &world, std::string name, bool elide_empty, bool schedule=false) | |
| bool | elide_empty () const |
| bool | schedule () const |
| Public Member Functions inherited from mim::Phase | |
| Phase (World &world, std::string name) | |
| Phase (World &world, flags_t annex) | |
| bool | todo () const |
| void | invalidate (bool todo=true) |
| Signals that another round of fixed-point iteration is required, either as part of. | |
| virtual void | run () |
| Entry point and generates some debug output; invokes Phase::start. | |
| Public Member Functions inherited from mim::Stage | |
| Stage (World &world, std::string name) | |
| Stage (World &world, flags_t annex) | |
| virtual | ~Stage ()=default |
| virtual std::unique_ptr< Stage > | recreate () |
| Creates a new instance; needed by a fixed-point PhaseMan. | |
| virtual void | apply (const App *) |
| Invoked if your Stage has additional args. | |
| virtual void | apply (Stage &) |
| Dito, but invoked by Stage::recreate. | |
| virtual bool | redirects () const |
| If true, Stage::create uses take_resolved(). | |
| virtual std::unique_ptr< Stage > | take_resolved () |
| The Stage to use instead; nullptr means elide. | |
| World & | world () |
| Driver & | driver () |
| Log & | log () const |
| std::string_view | name () const |
| flags_t | annex () const |
Additional Inherited Members | |
| template<class P, class... Args> | |
| static void | run (Args &&... args) |
| Runs a single Phase. | |
| Static Public Member Functions inherited from mim::Stage | |
| static std::unique_ptr< Stage > | create (const Flags2Stages &stages, const Def *def) |
| template<class A, class P> | |
| static void | hook (Flags2Stages &stages) |
| Public Attributes inherited from mim::Emitter< std::string, std::string, BB, Emitter > | |
| fe::Tab | tab |
| Protected Member Functions inherited from mim::Emitter< std::string, std::string, BB, Emitter > | |
| Emitter (World &world, std::string name, std::ostream &ostream, bool schedule=false) | |
| virtual bool | direct_style () |
| std::ostream & | ostream () const |
| std::string | emit (const Def *def) |
| Recursively emits code. | |
| std::string | emit_unsafe (const Def *def) |
| As above but returning !child().is_valid(value) is permitted. | |
| void | visit (const Nest &nest) override |
| Protected Member Functions inherited from mim::ClosedMutPhase< Lam > | |
| virtual void | visit (Lam *)=0 |
| Lam * | root () const |
| Protected Attributes inherited from mim::Emitter< std::string, std::string, BB, Emitter > | |
| Lam * | curr_lam_ |
| std::ostream & | ostream_ |
| Scheduler | scheduler_ |
| DefMap< std::string > | locals_ |
| DefMap< std::string > | globals_ |
| DefMap< std::string > | types_ |
| LamMap< BB > | lam2bb_ |
| Protected Attributes inherited from mim::Stage | |
| std::string | name_ |
| using mim::plug::ll::Emitter::Super = mim::Emitter<std::string, std::string, BB, Emitter> |
|
inline |
Definition at line 114 of file ll.h.
References mim::Emitter< std::string, std::string, BB, Emitter >::ostream(), and mim::Stage::world().
Definition at line 126 of file ll.h.
References mim::error(), isa_targetspecific_intrinsic(), and mim::Def::type().
|
inline |
Definition at line 132 of file ll.h.
Referenced by emit_bb(), and emit_epilogue().
Definition at line 543 of file ll.h.
References mim::plug::core::a, mim::plug::math::a, mim::plug::core::add, mim::plug::math::add, mim::plug::math::afn, mim::plug::math::ahFF, mim::plug::core::and_, mim::plug::math::arcp, mim::App::arg(), mim::Axm::as(), mim::Lit::as(), mim::plug::ll::BB::assign(), mim::Annex::base(), mim::plug::math::bin, mim::plug::ll::BB::body(), mim::plug::math::c, mim::plug::math::contract, mim::plug::math::cos, mim::plug::math::dec, declare(), mim::plug::math::div, mim::plug::core::e, mim::plug::math::e, mim::Emitter< std::string, std::string, BB, Emitter >::emit_unsafe(), mim::error(), mim::plug::math::f, mim::plug::math::f2f, mim::plug::math::f2s, mim::plug::math::f2u, mim::plug::math::fast, mim::plug::math::fmax, mim::plug::math::fmin, mim::plug::core::g, mim::plug::math::g, mim::plug::core::ge, mim::plug::math::ge, mim::Emitter< std::string, std::string, BB, Emitter >::globals_, mim::plug::math::h, mim::plug::math::ieee754max, mim::plug::math::ieee754min, mim::plug::core::iff, mim::plug::ll::is_simd(), mim::Axm::isa(), mim::Idx::isa(), mim::Lit::isa(), mim::plug::math::isa_f(), isa_targetspecific_intrinsic(), mim::plug::core::l, mim::plug::math::l, mim::Emitter< std::string, std::string, BB, Emitter >::lam2bb_, mim::plug::core::le, mim::plug::math::le, mim::plug::math::log, mim::plug::core::mul, mim::plug::math::mul, mim::Stage::name(), mim::plug::core::nand, mim::plug::core::ne, mim::plug::math::ne, mim::plug::core::neg, mim::plug::core::niff, mim::plug::math::ninf, mim::plug::math::nnan, mim::plug::core::nor, mim::plug::core::nsw, mim::plug::math::nsz, mim::plug::core::nuw, mim::plug::core::nxor, mim::plug::math::o, mim::plug::core::or_, mim::Def::proj(), mim::Def::projs(), mim::plug::math::r, mim::plug::math::reassoc, mim::plug::math::rem, mim::ClosedMutPhase< Lam >::root(), mim::plug::core::s, mim::plug::math::s2f, mim::plug::core::sdiv, mim::plug::core::sg, mim::plug::core::sge, mim::plug::core::shl, mim::plug::math::sin, mim::Idx::size2bitwidth(), mim::plug::core::sl, mim::plug::core::sle, mim::plug::core::SM, mim::plug::core::Sm, mim::plug::core::sM, mim::plug::core::sm, mim::plug::math::sq, mim::plug::core::srem, mim::plug::core::sub, mim::plug::math::sub, mim::plug::math::t, mim::plug::ll::BB::tail(), mim::plug::math::tan, mim::Def::type(), mim::plug::core::u, mim::plug::math::u, mim::plug::math::u2f, mim::plug::core::udiv, mim::plug::math::ue, mim::plug::core::ug, mim::plug::math::ug, mim::plug::core::uge, mim::plug::math::uge, mim::plug::core::ul, mim::plug::math::ul, mim::plug::core::ule, mim::plug::math::ule, mim::plug::math::une, mim::plug::core::urem, and mim::plug::core::xor_.
|
inlinevirtual |
Definition at line 377 of file ll.h.
References mim::Lam::body(), declare(), mim::Emitter< std::string, std::string, BB, Emitter >::emit_unsafe(), mim::plug::ll::find_common_simd_src(), mim::plug::ll::is_simd(), mim::plug::ll::is_simd_aggregate(), mim::Axm::isa(), mim::Lam::isa_mut_basicblock(), mim::Pi::isa_returning(), mim::Emitter< std::string, std::string, BB, Emitter >::lam2bb_, mim::Emitter< std::string, std::string, BB, Emitter >::locals_, mim::Stage::name(), mim::Def::num_vars(), mim::ClosedMutPhase< Lam >::root(), mim::Def::var(), and mim::Stage::world().
|
inline |
Definition at line 297 of file ll.h.
References mim::Axm::isa(), mim::Pi::ret_pi(), and mim::Lam::type().
|
inline |
Definition at line 331 of file ll.h.
References mim::Emitter< std::string, std::string, BB, Emitter >::lam2bb_, mim::NestPhase< Lam >::nest(), mim::Scheduler::schedule(), and mim::Emitter< std::string, std::string, BB, Emitter >::tab.
|
inline |
|
inlinevirtual |
Definition at line 125 of file ll.h.
Referenced by as_targetspecific_intrinsic(), and emit_bb().
|
inlinevirtual |
Definition at line 311 of file ll.h.
References mim::Def::is_external(), mim::plug::ll::is_simd(), mim::Axm::isa(), mim::Emitter< std::string, std::string, BB, Emitter >::locals_, mim::Stage::name(), mim::ClosedMutPhase< Lam >::root(), mim::Def::unique_name(), and mim::Def::vars().
|
inlineoverridevirtual |
Actual entry.
Reimplemented from mim::ClosedMutPhase< Lam >.
Definition at line 286 of file ll.h.
References mim::Emitter< std::string, std::string, BB, Emitter >::ostream(), and mim::Phase::start().