MimIR 0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
math.h File Reference
#include <mim/axiom.h>
#include <mim/world.h>
#include "mim/plug/math/autogen.h"
Include dependency graph for math.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  mim
 
namespace  mim::plug
 
namespace  mim::plug::math
 The math Plugin
 

Functions

%math.F
Ref mim::plug::math::type_f (Ref pe)
 
Ref mim::plug::math::type_f (World &w, nat_t p, nat_t e)
 
template<nat_t P, nat_t E>
auto mim::plug::math::match_f (Ref def)
 
auto mim::plug::math::match_f16 (Ref def)
 
auto mim::plug::math::match_f32 (Ref def)
 
auto mim::plug::math::match_f64 (Ref def)
 
std::optional< nat_tmim::plug::math::isa_f (Ref def)
 
template<class R >
const Litmim::plug::math::lit_f (World &w, R val)
 
const Litmim::plug::math::lit_f (World &w, nat_t width, mim::f64 val)
 
%math.arith
Ref mim::plug::math::op_rminus (VMode m, Ref a)
 
is_commutative/is_associative
constexpr bool mim::is_commutative (plug::math::extrema)
 
constexpr bool mim::is_commutative (plug::math::arith id)
 
constexpr bool mim::is_commutative (plug::math::cmp id)
 
constexpr bool mim::is_associative (plug::math::arith id)
 

Mode

enum class  mim::plug::math::Mode : nat_t {
  mim::plug::math::top = 0 ,
  mim::plug::math::none = top ,
  mim::plug::math::nnan = 1 << 0 ,
  mim::plug::math::ninf = 1 << 1 ,
  mim::plug::math::nsz = 1 << 2 ,
  mim::plug::math::arcp = 1 << 3 ,
  mim::plug::math::contract = 1 << 4 ,
  mim::plug::math::afn = 1 << 5 ,
  mim::plug::math::reassoc = 1 << 6 ,
  mim::plug::math::finite = nnan | ninf ,
  mim::plug::math::unsafe = nsz | arcp | reassoc ,
  mim::plug::math::fast ,
  mim::plug::math::bot = fast
}
 Allowed optimizations for a specific operation. More...
 
using mim::plug::math::VMode = std::variant<Mode, nat_t, Ref>
 Give Mode as mim::plug::math::Mode, mim::nat_t or Ref.
 
Ref mim::plug::math::mode (World &w, VMode m)
 mim::plug::math::VMode -> Ref.