LLVM OpenMP 22.0.0git
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.

Referenced by sqrt_newton_approx().

Function Documentation

◆ __kmp_abs() [1/3]

kmp_uint32 __kmp_abs ( const kmp_uint32 val)

Definition at line 32 of file kmp_collapse.cpp.

References kmp_uint32, and 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 ( T 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, kmp_calc_one_iv_rectang(), and loc.

◆ __kmpc_for_collapsed_init()

◆ __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()

◆ 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_calc_number_of_iterations_XX()

◆ 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()

◆ 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()

◆ 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()

◆ 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()

◆ kmp_calc_span_lessoreq_XX()

◆ kmp_calc_span_XX()

◆ kmp_calculate_trip_count()

◆ kmp_calculate_trip_count_XX()

◆ 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()

◆ kmp_fix_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()

◆ 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()

◆ kmp_process_loop_nest()

◆ 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)