10#define __SPIRVINTRIN_H
13#error "This file is intended for SPIR-V targets or offloading to SPIR-V"
17#error "Never use <spirvintrin.h> directly; include <gpuintrin.h> instead"
20_Pragma(
"omp begin declare target device_type(nohost)");
21_Pragma(
"omp begin declare variant match(device = {arch(spirv64)})");
24#define __gpu_private __attribute__((address_space(0)))
25#define __gpu_constant __attribute__((address_space(2)))
26#define __gpu_local __attribute__((address_space(3)))
27#define __gpu_global __attribute__((address_space(1)))
28#define __gpu_generic __attribute__((address_space(4)))
32 return __builtin_spirv_num_workgroups(0);
37 return __builtin_spirv_num_workgroups(1);
42 return __builtin_spirv_num_workgroups(2);
47 return __builtin_spirv_workgroup_id(0);
52 return __builtin_spirv_workgroup_id(1);
57 return __builtin_spirv_workgroup_id(2);
62 return __builtin_spirv_workgroup_size(0);
67 return __builtin_spirv_workgroup_size(1);
72 return __builtin_spirv_workgroup_size(2);
77 return __builtin_spirv_local_invocation_id(0);
82 return __builtin_spirv_local_invocation_id(1);
87 return __builtin_spirv_local_invocation_id(2);
93 return __builtin_spirv_subgroup_size();
98 return __builtin_spirv_subgroup_local_invocation_id();
104 uint32_t [[clang::ext_vector_type(4)]] __mask =
105 __builtin_spirv_subgroup_ballot(1);
106 return __builtin_bit_cast(uint64_t,
107 __builtin_shufflevector(__mask, __mask, 0, 1));
113 return __builtin_spirv_subgroup_shuffle(__x,
123 uint32_t [[clang::ext_vector_type(4)]] __mask =
124 __builtin_spirv_subgroup_ballot(__x);
125 return __lane_mask & __builtin_bit_cast(uint64_t, __builtin_shufflevector(
126 __mask, __mask, 0, 1));
131 __builtin_spirv_group_barrier();
142 uint32_t __lane = __idx + (
__gpu_lane_id() & ~(__width - 1));
143 return __builtin_spirv_subgroup_shuffle(__x, __lane);
#define _DEFAULT_FN_ATTRS
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_any_u32_impl(uint64_t __lane_mask, uint32_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_all_u64_impl(uint64_t __lane_mask, uint64_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_all_u32_impl(uint64_t __lane_mask, uint32_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_any_u64_impl(uint64_t __lane_mask, uint64_t __x)
static _DEFAULT_FN_ATTRS __inline__ void __gpu_thread_suspend(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_thread_id_x(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_lane_id(void)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_any_u32(uint64_t __lane_mask, uint32_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_num_threads_z(void)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_lane_mask(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_read_first_lane_u32(uint64_t __lane_mask, uint32_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_shuffle_idx_u32(uint64_t __lane_mask, uint32_t __idx, uint32_t __x, uint32_t __width)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_block_id_y(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_thread_id_z(void)
static _DEFAULT_FN_ATTRS __inline__ void __gpu_sync_lane(uint64_t __lane_mask)
static _DEFAULT_FN_ATTRS __inline__ bool __gpu_is_ptr_private(void *ptr)
static _DEFAULT_FN_ATTRS __inline__ bool __gpu_is_ptr_local(void *ptr)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_num_blocks_x(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_block_id_z(void)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_all_u32(uint64_t __lane_mask, uint32_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_num_threads_y(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_num_threads_x(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_num_lanes(void)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_all_u64(uint64_t __lane_mask, uint64_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_thread_id_y(void)
_Pragma("omp begin declare target device_type(nohost)")
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_num_blocks_z(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_block_id_x(void)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_match_any_u64(uint64_t __lane_mask, uint64_t __x)
static _DEFAULT_FN_ATTRS __inline__ uint64_t __gpu_ballot(uint64_t __lane_mask, bool __x)
static _DEFAULT_FN_ATTRS __inline__ void __gpu_exit(void)
static _DEFAULT_FN_ATTRS __inline__ void __gpu_sync_threads(void)
static _DEFAULT_FN_ATTRS __inline__ uint32_t __gpu_num_blocks_y(void)