PandA-2024.02
Macros | Functions
IR_lowering_exec.cpp File Reference
#include "config_HAVE_ASSERTS.hpp"
#include "config_HAVE_FROM_DISCREPANCY_BUILT.hpp"
#include "Discrepancy.hpp"
#include "IR_lowering.hpp"
#include "Parameter.hpp"
#include "application_manager.hpp"
#include "custom_map.hpp"
#include "dbgPrintHelper.hpp"
#include "design_flow_step.hpp"
#include "exceptions.hpp"
#include "frontend_flow_step.hpp"
#include "function_behavior.hpp"
#include "function_frontend_flow_step.hpp"
#include "math_function.hpp"
#include "refcount.hpp"
#include "string_manipulation.hpp"
#include "tree_basic_block.hpp"
#include "tree_common.hpp"
#include "tree_helper.hpp"
#include "tree_manager.hpp"
#include "tree_manipulation.hpp"
#include "tree_node.hpp"
#include "tree_reindex.hpp"
#include <algorithm>
#include <cstring>
#include <iterator>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for IR_lowering_exec.cpp:

Go to the source code of this file.

Macros

#define LOWPART(x)   (static_cast<unsigned long long int>(x) & ((1ULL << 32) - 1))
 
#define HIGHPART(x)   (static_cast<unsigned long long int>(x) >> 32)
 
#define BASE   (1LL << 32)
 

Functions

static unsigned long long int invert_mod2n (unsigned long long int x, unsigned long long n)
 Compute the inverse of X mod 2**n, i.e., find Y such that X * Y is congruent to 1 (mod 2**N). More...
 
static void encode (long long int *words, unsigned long long int low, long long int hi)
 
static void decode (long long int *words, unsigned long long int *low, long long int *hi)
 
static int div_and_round_double_cprop (unsigned long long int lnum_orig, long long int hnum_orig, unsigned long long int lden_orig, unsigned long long int *lquo, long long int *hquo)
 
static unsigned long long int choose_multiplier (unsigned long long int d, int n, int precision, unsigned long long int *multiplier_ptr, int *post_shift_ptr, int *lgup_ptr)
 

Macro Definition Documentation

◆ BASE

#define BASE   (1LL << 32)

Definition at line 94 of file IR_lowering_exec.cpp.

Referenced by decode(), and div_and_round_double_cprop().

◆ HIGHPART

#define HIGHPART (   x)    (static_cast<unsigned long long int>(x) >> 32)

Definition at line 93 of file IR_lowering_exec.cpp.

Referenced by div_and_round_double_cprop(), and encode().

◆ LOWPART

#define LOWPART (   x)    (static_cast<unsigned long long int>(x) & ((1ULL << 32) - 1))

Definition at line 92 of file IR_lowering_exec.cpp.

Referenced by div_and_round_double_cprop(), and encode().

Function Documentation

◆ choose_multiplier()

static unsigned long long int choose_multiplier ( unsigned long long int  d,
int  n,
int  precision,
unsigned long long int *  multiplier_ptr,
int *  post_shift_ptr,
int *  lgup_ptr 
)
static

Definition at line 313 of file IR_lowering_exec.cpp.

References ceil_log2(), div_and_round_double_cprop(), and THROW_ASSERT.

Referenced by IR_lowering::division_by_a_constant().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ decode()

static void decode ( long long int *  words,
unsigned long long int *  low,
long long int *  hi 
)
static

Definition at line 110 of file IR_lowering_exec.cpp.

References BASE.

Referenced by div_and_round_double_cprop().

Here is the caller graph for this function:

◆ div_and_round_double_cprop()

static int div_and_round_double_cprop ( unsigned long long int  lnum_orig,
long long int  hnum_orig,
unsigned long long int  lden_orig,
unsigned long long int *  lquo,
long long int *  hquo 
)
static

Definition at line 124 of file IR_lowering_exec.cpp.

References BASE, decode(), encode(), HIGHPART, and LOWPART.

Referenced by choose_multiplier().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ encode()

static void encode ( long long int *  words,
unsigned long long int  low,
long long int  hi 
)
static

Definition at line 99 of file IR_lowering_exec.cpp.

References HIGHPART, and LOWPART.

Referenced by div_and_round_double_cprop().

Here is the caller graph for this function:

◆ invert_mod2n()

static unsigned long long int invert_mod2n ( unsigned long long int  x,
unsigned long long  n 
)
static

Compute the inverse of X mod 2**n, i.e., find Y such that X * Y is congruent to 1 (mod 2**N).

Author
Fabrizio Ferrandi fabri.nosp@m.zio..nosp@m.ferra.nosp@m.ndi@.nosp@m.polim.nosp@m.i.it

Definition at line 69 of file IR_lowering_exec.cpp.

References x.

Referenced by IR_lowering::division_by_a_constant().

Here is the caller graph for this function:

Generated on Mon Feb 12 2024 13:03:20 for PandA-2024.02 by doxygen 1.8.13