Files
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

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