CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
508 lines
30 KiB
C
508 lines
30 KiB
C
//===---------------- Xteams.h - OpenMP interface ----------------- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// DeviceRTL Header file: Xteams.h
|
|
// External __kmpc headers for cross team scan functions are defined
|
|
// in DeviceRTL/src/Xteams.cpp. Clang will generate a call to one
|
|
// of these functions as it encounters the scan directive. The
|
|
// specific function depends on datatype, warpsize, and number of waves
|
|
// in the teamsize. The number of teams should not be more than
|
|
// the teamsize. Teamsize 64 is not supported yet.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef OMPTARGET_DEVICERTL_XTEAMS_H
|
|
#define OMPTARGET_DEVICERTL_XTEAMS_H
|
|
#include "DeviceTypes.h"
|
|
|
|
#define _CD double _Complex
|
|
#define _CF float _Complex
|
|
#define _UI unsigned int
|
|
#define _UL unsigned long
|
|
#define _INLINE_ATTR_ __attribute__((flatten, always_inline))
|
|
#define _RF_LDS volatile __gpu_local
|
|
|
|
extern "C" {
|
|
/// External cross team scan (xteams) helper functions
|
|
///
|
|
/// The template for name of xteams helper function is:
|
|
/// __kmpc_xteams_<dtype>_<waves>x<WSZ> where
|
|
/// <dtype> is letter(s) representing data type, e.g. d=double
|
|
/// <waves> number of waves in thread block
|
|
/// <WSZ> warp size, 32 or 64
|
|
/// So <waves> x <WSZ> is the number of threads per team.
|
|
/// Example: __kmpc_xteams_i_4x64 is the scan helper function
|
|
/// for all scan with data type double using 256 threads
|
|
/// per team.
|
|
/// All xteams helper functions are defined in Xteamr.cpp. They each call the
|
|
/// internal templated function _xteam_scan which is defined in Xteams.cpp.
|
|
/// Clang code generation for C/C++ shall instantiate a call to a helper
|
|
/// function for the operator(addition, max and min) used for a scan directive
|
|
/// used in a OpenMP target region.
|
|
///
|
|
/// \param v Input thread local scanned value
|
|
/// \param storage Pointer to a global shared storage used by all the threads
|
|
/// \param r_array Pointer to the result scan array (output)
|
|
/// \param tvs Global array of team values for this reduction instance (team_vals)
|
|
/// \param td Pointer to atomic counter of completed teams (teams_done_ptr)
|
|
/// \param _rf Function pointer to reduction function (sum,min,max)
|
|
/// \param _rf_lds Function pointer to reduction function on LDS memory
|
|
/// \param iv Reduction null value (e.g. 0 for addition)
|
|
/// \param k Outer loop iteration value, 0 to numteams*numthreads
|
|
/// \param numteams Number of teams
|
|
/// Cross team scan (xteams) functions, see documentation above.
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_16x64
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_16x64
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_16x64
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_16x64
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_16x64
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_16x64
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_16x64
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_16x64
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_8x64
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_8x64
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_8x64
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_8x64
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_8x64
|
|
(int v, int* storage, int* r_array, int* tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_8x64
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_8x64
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_8x64
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_4x64
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_4x64
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_4x64
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_4x64
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_4x64
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_4x64
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_4x64
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_4x64
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_2x64
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_2x64
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_2x64
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_2x64
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_2x64
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_2x64
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_2x64
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_2x64
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_1x64
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_1x64
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_1x64
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_1x64
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_1x64
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_1x64
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_1x64
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_1x64
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_32x32
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_32x32
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_32x32
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_32x32
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_32x32
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_32x32
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_32x32
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_32x32
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_16x32
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_16x32
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_16x32
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_16x32
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_16x32
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_16x32
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_16x32
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_16x32
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_8x32
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_8x32
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_8x32
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_8x32
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_8x32
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_8x32
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_8x32
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_8x32
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_4x32
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_4x32
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_4x32
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_4x32
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_4x32
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_4x32
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_4x32
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_4x32
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_d_2x32
|
|
(double v, double* storage, double* r_array, double *tvs, uint32_t *td, void (*_rf)(double *, double),
|
|
void (*_rf_lds)(_RF_LDS double *, _RF_LDS double *), const double iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_f_2x32
|
|
(float v, float* storage, float* r_array, float *tvs, uint32_t *td, void (*_rf)(float *, float),
|
|
void (*_rf_lds)(_RF_LDS float *, _RF_LDS float *), const float iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cd_2x32
|
|
(_CD v, _CD* storage, _CD* r_array, _CD *tvs, uint32_t *td, void (*_rf)(_CD *, _CD),
|
|
void (*_rf_lds)(_RF_LDS _CD *, _RF_LDS _CD *), const _CD iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_cf_2x32
|
|
(_CF v, _CF* storage, _CF* r_array, _CF *tvs, uint32_t *td, void (*_rf)(_CF *, _CF),
|
|
void (*_rf_lds)(_RF_LDS _CF *, _RF_LDS _CF *), const _CF iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_i_2x32
|
|
(int v, int* storage, int* r_array, int *tvs, uint32_t *td, void (*_rf)(int *, int),
|
|
void (*_rf_lds)(_RF_LDS int *, _RF_LDS int *), const int iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ui_2x32
|
|
(_UI v, _UI* storage, _UI* r_array, _UI *tvs, uint32_t *td, void (*_rf)(_UI *, _UI),
|
|
void (*_rf_lds)(_RF_LDS _UI *, _RF_LDS _UI *), const _UI iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_l_2x32
|
|
(long v, long* storage, long* r_array, long *tvs, uint32_t *td, void (*_rf)(long *, long),
|
|
void (*_rf_lds)(_RF_LDS long *, _RF_LDS long *), const long iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
void _INLINE_ATTR_ __kmpc_xteams_ul_2x32
|
|
(_UL v, _UL* storage, _UL* r_array, _UL *tvs, uint32_t *td, void (*_rf)(_UL *, _UL),
|
|
void (*_rf_lds)(_RF_LDS _UL *, _RF_LDS _UL *), const _UL iv,
|
|
const uint64_t k, const uint32_t numteams);
|
|
|
|
// Phase Two Entry points
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_i_16x64(int *storage, int segment_size,
|
|
int *tvs, int *seg_vals,
|
|
void (*rf)(int *, int),
|
|
const int rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_i_8x64(int *storage, int segment_size,
|
|
int *tvs, int *seg_vals,
|
|
void (*rf)(int *, int),
|
|
const int rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_i_4x64(int *storage, int segment_size,
|
|
int *tvs, int *seg_vals,
|
|
void (*rf)(int *, int),
|
|
const int rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_i_8x32(int *storage, int segment_size,
|
|
int *tvs, int *seg_vals,
|
|
void (*rf)(int *, int),
|
|
const int rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_i_16x32(int *storage, int segment_size,
|
|
int *tvs, int *seg_vals,
|
|
void (*rf)(int *, int),
|
|
const int rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_i_32x32(int *storage, int segment_size,
|
|
int *tvs, int *seg_vals,
|
|
void (*rf)(int *, int),
|
|
const int rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_d_16x64(
|
|
double *storage, int segment_size, double *tvs, double *seg_vals,
|
|
void (*rf)(double *, double), const double rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_d_8x64(
|
|
double *storage, int segment_size, double *tvs, double *seg_vals,
|
|
void (*rf)(double *, double), const double rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_d_4x64(
|
|
double *storage, int segment_size, double *tvs, double *seg_vals,
|
|
void (*rf)(double *, double), const double rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_d_8x32(
|
|
double *storage, int segment_size, double *tvs, double *seg_vals,
|
|
void (*rf)(double *, double), const double rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_d_16x32(
|
|
double *storage, int segment_size, double *tvs, double *seg_vals,
|
|
void (*rf)(double *, double), const double rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_d_32x32(
|
|
double *storage, int segment_size, double *tvs, double *seg_vals,
|
|
void (*rf)(double *, double), const double rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_l_16x64(long *storage, int segment_size,
|
|
long *tvs, long *seg_vals,
|
|
void (*rf)(long *, long),
|
|
const long rnv,
|
|
const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_l_8x64(long *storage, int segment_size,
|
|
long *tvs, long *seg_vals,
|
|
void (*rf)(long *, long),
|
|
const long rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_l_4x64(long *storage, int segment_size,
|
|
long *tvs, long *seg_vals,
|
|
void (*rf)(long *, long),
|
|
const long rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_l_8x32(long *storage, int segment_size,
|
|
long *tvs, long *seg_vals,
|
|
void (*rf)(long *, long),
|
|
const long rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_l_16x32(long *storage, int segment_size,
|
|
long *tvs, long *seg_vals,
|
|
void (*rf)(long *, long),
|
|
const long rnv,
|
|
const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_l_32x32(long *storage, int segment_size,
|
|
long *tvs, long *seg_vals,
|
|
void (*rf)(long *, long),
|
|
const long rnv,
|
|
const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_f_16x64(
|
|
float *storage, int segment_size, float *tvs, float *seg_vals,
|
|
void (*rf)(float *, float), const float rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_f_8x64(float *storage, int segment_size,
|
|
float *tvs, float *seg_vals,
|
|
void (*rf)(float *, float),
|
|
const float rnv,
|
|
const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_f_4x64(float *storage, int segment_size,
|
|
float *tvs, float *seg_vals,
|
|
void (*rf)(float *, float),
|
|
const float rnv,
|
|
const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_f_8x32(float *storage, int segment_size,
|
|
float *tvs, float *seg_vals,
|
|
void (*rf)(float *, float),
|
|
const float rnv,
|
|
const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_f_16x32(
|
|
float *storage, int segment_size, float *tvs, float *seg_vals,
|
|
void (*rf)(float *, float), const float rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
void _INLINE_ATTR_ __kmpc_xteams_phase2_f_32x32(
|
|
float *storage, int segment_size, float *tvs, float *seg_vals,
|
|
void (*rf)(float *, float), const float rnv, const uint64_t k,
|
|
bool is_inclusive_scan);
|
|
} // end extern C
|
|
|
|
#undef _CD
|
|
#undef _CF
|
|
#undef _UI
|
|
#undef _UL
|
|
#undef _INLINE_ATTR_
|
|
#undef _RF_LDS
|
|
|
|
#endif // of ifndef OMPTARGET_DEVICERTL_XTEAMS_H
|