LLVM OpenMP 20.0.0git
Classes | Macros | Functions
kmp_collapse.cpp File Reference
#include "kmp.h"
#include "kmp_error.h"
#include "kmp_i18n.h"
#include "kmp_itt.h"
#include "kmp_stats.h"
#include "kmp_str.h"
#include "kmp_collapse.h"

Go to the source code of this file.

Classes

class  CollapseAllocator< T >
 

Macros

#define level_of_precision   0.1
 

Functions

template<typename T >
__kmp_abs (const T val)
 
kmp_uint32 __kmp_abs (const kmp_uint32 val)
 
kmp_uint64 __kmp_abs (const kmp_uint64 val)
 
template<typename T >
int __kmp_sign (T val)
 
template<typename T >
void kmp_canonicalize_one_loop_XX (ident_t *loc, bounds_infoXX_template< T > *bounds)
 
void kmp_canonicalize_loop_nest (ident_t *loc, bounds_info_t *original_bounds_nest, kmp_index_t n)
 
template<typename T >
kmp_loop_nest_iv_t kmp_calculate_trip_count_XX (bounds_infoXX_template< T > *bounds)
 
kmp_loop_nest_iv_t kmp_calculate_trip_count (bounds_info_t *bounds)
 
kmp_uint64 kmp_fix_iv (loop_type_t loop_iv_type, kmp_uint64 original_iv)
 
bool kmp_ivs_eq (loop_type_t loop_iv_type, kmp_uint64 original_iv1, kmp_uint64 original_iv2)
 
template<typename T >
bool kmp_iv_is_in_upper_bound_XX (const bounds_infoXX_template< T > *bounds, const kmp_point_t original_ivs, kmp_index_t ind)
 
template<typename T >
bool kmp_calc_one_iv_XX (const bounds_infoXX_template< T > *bounds, kmp_point_t original_ivs, const kmp_iterations_t iterations, kmp_index_t ind, bool start_with_lower_bound, bool checkBounds)
 
bool kmp_calc_one_iv (const bounds_info_t *bounds, kmp_point_t original_ivs, const kmp_iterations_t iterations, kmp_index_t ind, bool start_with_lower_bound, bool checkBounds)
 
template<typename T >
void kmp_calc_one_iv_rectang_XX (const bounds_infoXX_template< T > *bounds, kmp_uint64 *original_ivs, const kmp_iterations_t iterations, kmp_index_t ind)
 
void kmp_calc_one_iv_rectang (const bounds_info_t *bounds, kmp_uint64 *original_ivs, const kmp_iterations_t iterations, kmp_index_t ind)
 
kmp_loop_nest_iv_t __kmpc_process_loop_nest_rectang (ident_t *loc, kmp_int32 gtid, bounds_info_t *original_bounds_nest, kmp_index_t n)
 
void __kmpc_calc_original_ivs_rectang (ident_t *loc, kmp_loop_nest_iv_t new_iv, const bounds_info_t *original_bounds_nest, kmp_uint64 *original_ivs, kmp_index_t n)
 
template<typename T >
void kmp_calc_span_lessoreq_XX (bounds_info_internalXX_template< T > *bounds, bounds_info_internal_t *bounds_nest)
 
template<typename T >
void kmp_calc_span_greateroreq_XX (bounds_info_internalXX_template< T > *bounds, bounds_info_internal_t *bounds_nest)
 
template<typename T >
void kmp_calc_span_XX (bounds_info_internalXX_template< T > *bounds, bounds_info_internal_t *bounds_nest)
 
template<typename T >
void kmp_calc_new_bounds_XX (bounds_info_internalXX_template< T > *bounds, bounds_info_internal_t *bounds_nest)
 
template<typename T >
kmp_loop_nest_iv_t kmp_process_one_loop_XX (bounds_info_internalXX_template< T > *bounds, bounds_info_internal_t *bounds_nest)
 
kmp_loop_nest_iv_t kmp_process_loop_nest (bounds_info_internal_t *bounds_nest, kmp_index_t n)
 
template<typename T >
kmp_loop_nest_iv_t kmp_calc_number_of_iterations_XX (const bounds_infoXX_template< T > *bounds, const kmp_point_t original_ivs, kmp_index_t ind)
 
kmp_loop_nest_iv_t kmp_calc_number_of_iterations (const bounds_info_t *bounds, const kmp_point_t original_ivs, kmp_index_t ind)
 
kmp_loop_nest_iv_t kmp_calc_new_iv_from_original_ivs (const bounds_info_internal_t *bounds_nest, const kmp_point_t original_ivs, kmp_index_t n)
 
bool kmp_calc_original_ivs_from_iterations (const bounds_info_t *original_bounds_nest, kmp_index_t n, kmp_point_t original_ivs, kmp_iterations_t iterations, kmp_index_t ind)
 
bool kmp_calc_original_ivs_for_start (const bounds_info_t *original_bounds_nest, kmp_index_t n, kmp_point_t original_ivs)
 
bool kmp_calc_next_original_ivs (const bounds_info_t *original_bounds_nest, kmp_index_t n, const kmp_point_t original_ivs, kmp_point_t next_original_ivs)
 
template<typename T >
bool kmp_calc_one_iv_for_chunk_end_XX (const bounds_infoXX_template< T > *bounds, const bounds_infoXX_template< T > *updated_bounds, kmp_point_t original_ivs, const kmp_iterations_t iterations, kmp_index_t ind, bool start_with_lower_bound, bool compare_with_start, const kmp_point_t original_ivs_start)
 
bool kmp_calc_one_iv_for_chunk_end (const bounds_info_t *bounds, const bounds_info_t *updated_bounds, kmp_point_t original_ivs, const kmp_iterations_t iterations, kmp_index_t ind, bool start_with_lower_bound, bool compare_with_start, const kmp_point_t original_ivs_start)
 
bool kmp_calc_original_ivs_for_chunk_end (const bounds_info_t *original_bounds_nest, kmp_index_t n, const bounds_info_internal_t *updated_bounds_nest, const kmp_point_t original_ivs_start, kmp_loop_nest_iv_t new_iv, kmp_point_t original_ivs)
 
template<typename T >
void kmp_calc_one_iv_end_XX (const bounds_infoXX_template< T > *bounds, kmp_point_t original_ivs, kmp_index_t ind)
 
void kmp_calc_one_iv_end (const bounds_info_t *bounds, kmp_point_t original_ivs, kmp_index_t ind)
 
void kmp_calc_original_ivs_for_end (const bounds_info_t *const original_bounds_nest, kmp_index_t n, kmp_point_t original_ivs)
 
nested_loop_type_t kmp_identify_nested_loop_structure (bounds_info_t *original_bounds_nest, kmp_index_t n)
 
double sqrt_newton_approx (kmp_uint64 x)
 
void kmp_handle_lower_triangle_matrix (kmp_uint32 nth, kmp_uint32 tid, kmp_index_t n, bounds_info_t *original_bounds_nest, bounds_info_t *chunk_bounds_nest)
 
void kmp_handle_upper_triangle_matrix (kmp_uint32 nth, kmp_uint32 tid, kmp_index_t n, bounds_info_t *original_bounds_nest, bounds_info_t *chunk_bounds_nest)
 
kmp_int32 __kmpc_for_collapsed_init (ident_t *loc, kmp_int32 gtid, bounds_info_t *original_bounds_nest, bounds_info_t *chunk_bounds_nest, kmp_index_t n, kmp_int32 *plastiter)
 

Macro Definition Documentation

◆ level_of_precision

#define level_of_precision   0.1

Definition at line 1333 of file kmp_collapse.cpp.

Function Documentation

◆ __kmp_abs() [1/3]

kmp_uint32 __kmp_abs ( const kmp_uint32  val)

Definition at line 32 of file kmp_collapse.cpp.

References val.

◆ __kmp_abs() [2/3]

kmp_uint64 __kmp_abs ( const kmp_uint64  val)

Definition at line 33 of file kmp_collapse.cpp.

References val.

◆ __kmp_abs() [3/3]

template<typename T >
T __kmp_abs ( const T  val)

Definition at line 29 of file kmp_collapse.cpp.

References val.

Referenced by kmp_calc_number_of_iterations_XX(), and kmp_calculate_trip_count_XX().

◆ __kmp_sign()

template<typename T >
int __kmp_sign ( val)

Definition at line 39 of file kmp_collapse.cpp.

References val.

Referenced by kmp_calc_new_bounds_XX().

◆ __kmpc_calc_original_ivs_rectang()

void __kmpc_calc_original_ivs_rectang ( ident_t loc,
kmp_loop_nest_iv_t  new_iv,
const bounds_info_t original_bounds_nest,
kmp_uint64 original_ivs,
kmp_index_t  n 
)

Definition at line 488 of file kmp_collapse.cpp.

References KMP_ASSERT, and kmp_calc_one_iv_rectang().

◆ __kmpc_for_collapsed_init()

kmp_int32 __kmpc_for_collapsed_init ( ident_t loc,
kmp_int32  gtid,
bounds_info_t original_bounds_nest,
bounds_info_t chunk_bounds_nest,
kmp_index_t  n,
kmp_int32 plastiter 
)

◆ __kmpc_process_loop_nest_rectang()

kmp_loop_nest_iv_t __kmpc_process_loop_nest_rectang ( ident_t loc,
kmp_int32  gtid,
bounds_info_t original_bounds_nest,
kmp_index_t  n 
)

Definition at line 460 of file kmp_collapse.cpp.

References kmp_calculate_trip_count(), kmp_canonicalize_loop_nest(), and loc.

◆ kmp_calc_new_bounds_XX()

template<typename T >
void kmp_calc_new_bounds_XX ( bounds_info_internalXX_template< T > *  bounds,
bounds_info_internal_t bounds_nest 
)

◆ kmp_calc_new_iv_from_original_ivs()

kmp_loop_nest_iv_t kmp_calc_new_iv_from_original_ivs ( const bounds_info_internal_t bounds_nest,
const kmp_point_t  original_ivs,
kmp_index_t  n 
)

◆ kmp_calc_next_original_ivs()

bool kmp_calc_next_original_ivs ( const bounds_info_t original_bounds_nest,
kmp_index_t  n,
const kmp_point_t  original_ivs,
kmp_point_t  next_original_ivs 
)

◆ kmp_calc_number_of_iterations()

kmp_loop_nest_iv_t kmp_calc_number_of_iterations ( const bounds_info_t bounds,
const kmp_point_t  original_ivs,
kmp_index_t  ind 
)

◆ kmp_calc_number_of_iterations_XX()

template<typename T >
kmp_loop_nest_iv_t kmp_calc_number_of_iterations_XX ( const bounds_infoXX_template< T > *  bounds,
const kmp_point_t  original_ivs,
kmp_index_t  ind 
)

◆ kmp_calc_one_iv()

bool kmp_calc_one_iv ( const bounds_info_t bounds,
kmp_point_t  original_ivs,
const kmp_iterations_t  iterations,
kmp_index_t  ind,
bool  start_with_lower_bound,
bool  checkBounds 
)

◆ kmp_calc_one_iv_end()

void kmp_calc_one_iv_end ( const bounds_info_t bounds,
kmp_point_t  original_ivs,
kmp_index_t  ind 
)

◆ kmp_calc_one_iv_end_XX()

template<typename T >
void kmp_calc_one_iv_end_XX ( const bounds_infoXX_template< T > *  bounds,
kmp_point_t  original_ivs,
kmp_index_t  ind 
)

◆ kmp_calc_one_iv_for_chunk_end()

bool kmp_calc_one_iv_for_chunk_end ( const bounds_info_t bounds,
const bounds_info_t updated_bounds,
kmp_point_t  original_ivs,
const kmp_iterations_t  iterations,
kmp_index_t  ind,
bool  start_with_lower_bound,
bool  compare_with_start,
const kmp_point_t  original_ivs_start 
)

◆ kmp_calc_one_iv_for_chunk_end_XX()

template<typename T >
bool kmp_calc_one_iv_for_chunk_end_XX ( const bounds_infoXX_template< T > *  bounds,
const bounds_infoXX_template< T > *  updated_bounds,
kmp_point_t  original_ivs,
const kmp_iterations_t  iterations,
kmp_index_t  ind,
bool  start_with_lower_bound,
bool  compare_with_start,
const kmp_point_t  original_ivs_start 
)

◆ kmp_calc_one_iv_rectang()

void kmp_calc_one_iv_rectang ( const bounds_info_t bounds,
kmp_uint64 original_ivs,
const kmp_iterations_t  iterations,
kmp_index_t  ind 
)

◆ kmp_calc_one_iv_rectang_XX()

template<typename T >
void kmp_calc_one_iv_rectang_XX ( const bounds_infoXX_template< T > *  bounds,
kmp_uint64 original_ivs,
const kmp_iterations_t  iterations,
kmp_index_t  ind 
)

◆ kmp_calc_one_iv_XX()

template<typename T >
bool kmp_calc_one_iv_XX ( const bounds_infoXX_template< T > *  bounds,
kmp_point_t  original_ivs,
const kmp_iterations_t  iterations,
kmp_index_t  ind,
bool  start_with_lower_bound,
bool  checkBounds 
)

◆ kmp_calc_original_ivs_for_chunk_end()

bool kmp_calc_original_ivs_for_chunk_end ( const bounds_info_t original_bounds_nest,
kmp_index_t  n,
const bounds_info_internal_t updated_bounds_nest,
const kmp_point_t  original_ivs_start,
kmp_loop_nest_iv_t  new_iv,
kmp_point_t  original_ivs 
)

◆ kmp_calc_original_ivs_for_end()

void kmp_calc_original_ivs_for_end ( const bounds_info_t *const  original_bounds_nest,
kmp_index_t  n,
kmp_point_t  original_ivs 
)

Definition at line 1266 of file kmp_collapse.cpp.

References kmp_calc_one_iv_end().

Referenced by __kmpc_for_collapsed_init().

◆ kmp_calc_original_ivs_for_start()

bool kmp_calc_original_ivs_for_start ( const bounds_info_t original_bounds_nest,
kmp_index_t  n,
kmp_point_t  original_ivs 
)

Definition at line 947 of file kmp_collapse.cpp.

References b, and kmp_calc_original_ivs_from_iterations().

Referenced by __kmpc_for_collapsed_init().

◆ kmp_calc_original_ivs_from_iterations()

bool kmp_calc_original_ivs_from_iterations ( const bounds_info_t original_bounds_nest,
kmp_index_t  n,
kmp_point_t  original_ivs,
kmp_iterations_t  iterations,
kmp_index_t  ind 
)

Definition at line 907 of file kmp_collapse.cpp.

References i, and kmp_calc_one_iv().

Referenced by kmp_calc_next_original_ivs(), and kmp_calc_original_ivs_for_start().

◆ kmp_calc_span_greateroreq_XX()

template<typename T >
void kmp_calc_span_greateroreq_XX ( bounds_info_internalXX_template< T > *  bounds,
bounds_info_internal_t bounds_nest 
)

◆ kmp_calc_span_lessoreq_XX()

template<typename T >
void kmp_calc_span_lessoreq_XX ( bounds_info_internalXX_template< T > *  bounds,
bounds_info_internal_t bounds_nest 
)

◆ kmp_calc_span_XX()

template<typename T >
void kmp_calc_span_XX ( bounds_info_internalXX_template< T > *  bounds,
bounds_info_internal_t bounds_nest 
)

◆ kmp_calculate_trip_count()

kmp_loop_nest_iv_t kmp_calculate_trip_count ( bounds_info_t bounds)

◆ kmp_calculate_trip_count_XX()

template<typename T >
kmp_loop_nest_iv_t kmp_calculate_trip_count_XX ( bounds_infoXX_template< T > *  bounds)

◆ kmp_canonicalize_loop_nest()

void kmp_canonicalize_loop_nest ( ident_t loc,
bounds_info_t original_bounds_nest,
kmp_index_t  n 
)

◆ kmp_canonicalize_one_loop_XX()

template<typename T >
void kmp_canonicalize_one_loop_XX ( ident_t loc,
bounds_infoXX_template< T > *  bounds 
)

◆ kmp_fix_iv()

kmp_uint64 kmp_fix_iv ( loop_type_t  loop_iv_type,
kmp_uint64  original_iv 
)

◆ kmp_handle_lower_triangle_matrix()

void kmp_handle_lower_triangle_matrix ( kmp_uint32  nth,
kmp_uint32  tid,
kmp_index_t  n,
bounds_info_t original_bounds_nest,
bounds_info_t chunk_bounds_nest 
)

◆ kmp_handle_upper_triangle_matrix()

void kmp_handle_upper_triangle_matrix ( kmp_uint32  nth,
kmp_uint32  tid,
kmp_index_t  n,
bounds_info_t original_bounds_nest,
bounds_info_t chunk_bounds_nest 
)

◆ kmp_identify_nested_loop_structure()

nested_loop_type_t kmp_identify_nested_loop_structure ( bounds_info_t original_bounds_nest,
kmp_index_t  n 
)

◆ kmp_iv_is_in_upper_bound_XX()

template<typename T >
bool kmp_iv_is_in_upper_bound_XX ( const bounds_infoXX_template< T > *  bounds,
const kmp_point_t  original_ivs,
kmp_index_t  ind 
)

◆ kmp_ivs_eq()

bool kmp_ivs_eq ( loop_type_t  loop_iv_type,
kmp_uint64  original_iv1,
kmp_uint64  original_iv2 
)

◆ kmp_process_loop_nest()

kmp_loop_nest_iv_t kmp_process_loop_nest ( bounds_info_internal_t bounds_nest,
kmp_index_t  n 
)

◆ kmp_process_one_loop_XX()

template<typename T >
kmp_loop_nest_iv_t kmp_process_one_loop_XX ( bounds_info_internalXX_template< T > *  bounds,
bounds_info_internal_t bounds_nest 
)

◆ sqrt_newton_approx()

double sqrt_newton_approx ( kmp_uint64  x)