SuperDex Physics C++ API
Loading...
Searching...
No Matches
mochi_platform.h File Reference
#include <type_traits>

Go to the source code of this file.

Namespaces

namespace  superdex

Macros

#define MOCHI_ANY
#define MOCHI_ARCH_ARM   0
#define MOCHI_ARCH_ARM_NEON   0
#define MOCHI_ARCH_ARM_NEON_FP16_ARITHMETIC   0
#define MOCHI_ARCH_CPU   1
#define MOCHI_ARCH_GPU   0
#define MOCHI_ARCH_X64   0
#define MOCHI_ARCH_X64_AVX2   0
#define MOCHI_ARCH_X64_AVX512   0
#define MOCHI_ARCH_X64_FMA   0
#define MOCHI_ARCH_X64_SVML   0
#define MOCHI_CLANG_AWAIT_SUSPEND_BUG   0
#define MOCHI_COMPILER_ASAN   0
#define MOCHI_COMPILER_CLANG   0
#define MOCHI_COMPILER_CUDA   0
#define MOCHI_COMPILER_CUDA_CPU   0
#define MOCHI_COMPILER_CUDA_GPU   0
#define MOCHI_COMPILER_GCC   0
#define MOCHI_COMPILER_HAS_RTTI   1
#define MOCHI_COMPILER_MSVC   0
#define MOCHI_COMPILER_TSAN   0
#define MOCHI_CONCEPT(a)
#define MOCHI_CONCEPT_DEF(a)
#define MOCHI_CONSERVATIVE_CACHE_ALIGN   alignas(MOCHI_CONSERVATIVE_CACHE_LINE_SIZE)
 Aligns the memory of a variable so it starts at the beginning of a cache line.
#define MOCHI_CONSERVATIVE_CACHE_LINE_SIZE   256
 Conservative upper limit for the size (and alignment) of a data cache line.
#define MOCHI_CPU
#define MOCHI_DEBUG_BREAK()
#define MOCHI_DEBUG_RTCHECKS_DISABLE()
#define MOCHI_DEBUG_RTCHECKS_ENABLE()
#define MOCHI_DECLARE_COPY(Name)
#define MOCHI_DECLARE_MOVE(Name)
#define MOCHI_DECLARE_MOVE_ONLY(Name)
#define MOCHI_DECLARE_NO_ASSIGN(Name)
#define MOCHI_DECLARE_NO_COPY(Name)
#define MOCHI_DECLARE_NO_COPY_NO_MOVE(Name)
#define MOCHI_DECLARE_NO_MOVE(Name)
#define MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK()
#define MOCHI_EMPTY_BASE
#define MOCHI_FORCE_INLINE   inline
#define MOCHI_FORCE_INLINE_LAMBDA
#define MOCHI_GPU
#define MOCHI_GPU_KERNEL
#define MOCHI_HAS_VA_OPT   (MOCHI_LANGUAGE_CPP20 && !MOCHI_MSVC_TRADITIONAL)
#define MOCHI_LANGUAGE_C   0
#define MOCHI_LANGUAGE_CPP   1
#define MOCHI_LANGUAGE_CPP17   (__cplusplus >= 201703L)
#define MOCHI_LANGUAGE_CPP20   (__cplusplus >= 202002L)
#define MOCHI_LIKELY   [[likely]]
#define MOCHI_MSVC_TRADITIONAL   0
#define MOCHI_NO_INIT   /* NOLINT(cppcoreguidelines-init-variables) */
#define MOCHI_NOP()
#define MOCHI_NOP_10()
#define MOCHI_NOP_250()
#define MOCHI_NOP_50()
#define MOCHI_PLATFORM_ANDROID   0
#define MOCHI_PLATFORM_LINUX   0
#define MOCHI_PLATFORM_MACOS   0
#define MOCHI_PLATFORM_WINDOWS   0
#define MOCHI_PP_CAT(a, b)
#define MOCHI_PP_CAT_IMPL(a, b)
#define MOCHI_PP_STRINGIFY(X)
#define MOCHI_PP_STRINGIFY_IMPL(X)
#define MOCHI_RESTRICT   restrict
#define MOCHI_SIMD_REGISTER_COUNT   Unsupported architecture
#define MOCHI_SIMD_REGISTER_SIZE_BYTES   Unsupported architecture
#define MOCHI_TEMPLATE_FUNCTION   MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK()
#define MOCHI_UNLIKELY   [[unlikely]]
#define MOCHI_UNREAL_ARCH_AVX2   0
#define MOCHI_UNREAL_ARCH_NEON   0
#define MOCHI_UNROLL_LOOP_N(N)
#define MOCHI_WARNING_ENFORCE_CLANG(X)
#define MOCHI_WARNING_ENFORCE_CUDA(X)
#define MOCHI_WARNING_ENFORCE_GCC(X)
#define MOCHI_WARNING_ENFORCE_GCC_CLANG(X)
#define MOCHI_WARNING_ENFORCE_MSVC(X)
#define MOCHI_WARNING_IGNORE_CLANG(X)
#define MOCHI_WARNING_IGNORE_CUDA(X)
#define MOCHI_WARNING_IGNORE_GCC(X)
#define MOCHI_WARNING_IGNORE_GCC_CLANG(X)
#define MOCHI_WARNING_IGNORE_MSVC(X)
#define MOCHI_WARNING_POP()
#define MOCHI_WARNING_PUSH()
#define MOCHI_WARNING_PUSH_IGNORE_ALL()
#define MOCHI_WARNING_SUPPRESS_CUDA()
#define MOCHI_WARNING_SUPPRESS_EIGEN()

Enumerations

enum class  superdex::ConceptMatch { superdex::True }

Macro Definition Documentation

◆ MOCHI_ANY

#define MOCHI_ANY

Definition at line 332 of file mochi_platform.h.

◆ MOCHI_ARCH_ARM

#define MOCHI_ARCH_ARM   0

Definition at line 87 of file mochi_platform.h.

◆ MOCHI_ARCH_ARM_NEON

#define MOCHI_ARCH_ARM_NEON   0

Definition at line 93 of file mochi_platform.h.

◆ MOCHI_ARCH_ARM_NEON_FP16_ARITHMETIC

#define MOCHI_ARCH_ARM_NEON_FP16_ARITHMETIC   0

Definition at line 99 of file mochi_platform.h.

◆ MOCHI_ARCH_CPU

#define MOCHI_ARCH_CPU   1

Definition at line 73 of file mochi_platform.h.

◆ MOCHI_ARCH_GPU

#define MOCHI_ARCH_GPU   0

Definition at line 74 of file mochi_platform.h.

◆ MOCHI_ARCH_X64

#define MOCHI_ARCH_X64   0

Definition at line 126 of file mochi_platform.h.

◆ MOCHI_ARCH_X64_AVX2

#define MOCHI_ARCH_X64_AVX2   0

Definition at line 140 of file mochi_platform.h.

◆ MOCHI_ARCH_X64_AVX512

#define MOCHI_ARCH_X64_AVX512   0

Definition at line 133 of file mochi_platform.h.

◆ MOCHI_ARCH_X64_FMA

#define MOCHI_ARCH_X64_FMA   0

Definition at line 147 of file mochi_platform.h.

◆ MOCHI_ARCH_X64_SVML

#define MOCHI_ARCH_X64_SVML   0

Definition at line 154 of file mochi_platform.h.

◆ MOCHI_CLANG_AWAIT_SUSPEND_BUG

#define MOCHI_CLANG_AWAIT_SUSPEND_BUG   0

Definition at line 215 of file mochi_platform.h.

◆ MOCHI_COMPILER_ASAN

#define MOCHI_COMPILER_ASAN   0

Definition at line 236 of file mochi_platform.h.

◆ MOCHI_COMPILER_CLANG

#define MOCHI_COMPILER_CLANG   0

Definition at line 214 of file mochi_platform.h.

◆ MOCHI_COMPILER_CUDA

#define MOCHI_COMPILER_CUDA   0

Definition at line 229 of file mochi_platform.h.

◆ MOCHI_COMPILER_CUDA_CPU

#define MOCHI_COMPILER_CUDA_CPU   0

Definition at line 227 of file mochi_platform.h.

◆ MOCHI_COMPILER_CUDA_GPU

#define MOCHI_COMPILER_CUDA_GPU   0

Definition at line 228 of file mochi_platform.h.

◆ MOCHI_COMPILER_GCC

#define MOCHI_COMPILER_GCC   0

Definition at line 204 of file mochi_platform.h.

◆ MOCHI_COMPILER_HAS_RTTI

#define MOCHI_COMPILER_HAS_RTTI   1

Definition at line 279 of file mochi_platform.h.

◆ MOCHI_COMPILER_MSVC

#define MOCHI_COMPILER_MSVC   0

Definition at line 190 of file mochi_platform.h.

◆ MOCHI_COMPILER_TSAN

#define MOCHI_COMPILER_TSAN   0

Definition at line 241 of file mochi_platform.h.

◆ MOCHI_CONCEPT

#define MOCHI_CONCEPT ( a)
Value:
std::enable_if_t<a, superdex::ConceptMatch> = superdex::ConceptMatch::True

Definition at line 803 of file mochi_platform.h.

◆ MOCHI_CONCEPT_DEF

#define MOCHI_CONCEPT_DEF ( a)
Value:
std::enable_if_t<a, superdex::ConceptMatch>

Definition at line 806 of file mochi_platform.h.

◆ MOCHI_CONSERVATIVE_CACHE_ALIGN

#define MOCHI_CONSERVATIVE_CACHE_ALIGN   alignas(MOCHI_CONSERVATIVE_CACHE_LINE_SIZE)

Aligns the memory of a variable so it starts at the beginning of a cache line.

Cache line size is a property of the CPU, so it is not known at compile time. This conservative value will waste some memory on most systems, but that is usually acceptable for static variables and temporary variables.

See also
MOCHI_CONSERVATIVE_CACHE_LINE_SIZE, GetCacheLineInfo

Definition at line 502 of file mochi_platform.h.

◆ MOCHI_CONSERVATIVE_CACHE_LINE_SIZE

#define MOCHI_CONSERVATIVE_CACHE_LINE_SIZE   256

Conservative upper limit for the size (and alignment) of a data cache line.

Cache line size is a property of the CPU, so it is not known at compile time. This conservative value can be used when compile-time alignment is needed. For a more accurate runtime value use GetCacheLineInfo.

See also
MOCHI_CONSERVATIVE_CACHE_ALIGN, GetCacheLineInfo

Definition at line 490 of file mochi_platform.h.

◆ MOCHI_CPU

#define MOCHI_CPU

Definition at line 333 of file mochi_platform.h.

◆ MOCHI_DEBUG_BREAK

#define MOCHI_DEBUG_BREAK ( )
Value:
__builtin_trap()

Definition at line 532 of file mochi_platform.h.

◆ MOCHI_DEBUG_RTCHECKS_DISABLE

#define MOCHI_DEBUG_RTCHECKS_DISABLE ( )

Definition at line 696 of file mochi_platform.h.

◆ MOCHI_DEBUG_RTCHECKS_ENABLE

#define MOCHI_DEBUG_RTCHECKS_ENABLE ( )

Definition at line 695 of file mochi_platform.h.

◆ MOCHI_DECLARE_COPY

#define MOCHI_DECLARE_COPY ( Name)
Value:
Name(Name const&) = default; \
Name& operator=(Name const&) = default;

Definition at line 747 of file mochi_platform.h.

◆ MOCHI_DECLARE_MOVE

#define MOCHI_DECLARE_MOVE ( Name)
Value:
Name(Name&&) noexcept = default; \
Name& operator=(Name&&) = default;

Definition at line 736 of file mochi_platform.h.

◆ MOCHI_DECLARE_MOVE_ONLY

#define MOCHI_DECLARE_MOVE_ONLY ( Name)
Value:
MOCHI_DECLARE_NO_COPY(Name)
#define MOCHI_DECLARE_MOVE(Name)

Definition at line 765 of file mochi_platform.h.

◆ MOCHI_DECLARE_NO_ASSIGN

#define MOCHI_DECLARE_NO_ASSIGN ( Name)
Value:
Name& operator=(Name const&) = delete; \
Name& operator=(Name&&) = delete;

Definition at line 772 of file mochi_platform.h.

◆ MOCHI_DECLARE_NO_COPY

#define MOCHI_DECLARE_NO_COPY ( Name)
Value:
Name(Name const&) = delete; \
Name& operator=(Name const&) = delete;

Definition at line 752 of file mochi_platform.h.

◆ MOCHI_DECLARE_NO_COPY_NO_MOVE

#define MOCHI_DECLARE_NO_COPY_NO_MOVE ( Name)
Value:
MOCHI_DECLARE_NO_MOVE(Name)
#define MOCHI_DECLARE_NO_COPY(Name)

Definition at line 759 of file mochi_platform.h.

◆ MOCHI_DECLARE_NO_MOVE

#define MOCHI_DECLARE_NO_MOVE ( Name)
Value:
Name(Name&&) = delete; \
Name& operator=(Name&&) = delete;

Definition at line 741 of file mochi_platform.h.

◆ MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK

#define MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK ( )

Definition at line 645 of file mochi_platform.h.

◆ MOCHI_EMPTY_BASE

#define MOCHI_EMPTY_BASE

Definition at line 781 of file mochi_platform.h.

◆ MOCHI_FORCE_INLINE

#define MOCHI_FORCE_INLINE   inline

Definition at line 357 of file mochi_platform.h.

◆ MOCHI_FORCE_INLINE_LAMBDA

#define MOCHI_FORCE_INLINE_LAMBDA

Definition at line 394 of file mochi_platform.h.

◆ MOCHI_GPU

#define MOCHI_GPU

Definition at line 334 of file mochi_platform.h.

◆ MOCHI_GPU_KERNEL

#define MOCHI_GPU_KERNEL

Definition at line 335 of file mochi_platform.h.

◆ MOCHI_HAS_VA_OPT

#define MOCHI_HAS_VA_OPT   (MOCHI_LANGUAGE_CPP20 && !MOCHI_MSVC_TRADITIONAL)

Definition at line 285 of file mochi_platform.h.

◆ MOCHI_LANGUAGE_C

#define MOCHI_LANGUAGE_C   0

Definition at line 43 of file mochi_platform.h.

◆ MOCHI_LANGUAGE_CPP

#define MOCHI_LANGUAGE_CPP   1

Definition at line 38 of file mochi_platform.h.

◆ MOCHI_LANGUAGE_CPP17

#define MOCHI_LANGUAGE_CPP17   (__cplusplus >= 201703L)

Definition at line 39 of file mochi_platform.h.

◆ MOCHI_LANGUAGE_CPP20

#define MOCHI_LANGUAGE_CPP20   (__cplusplus >= 202002L)

Definition at line 41 of file mochi_platform.h.

◆ MOCHI_LIKELY

#define MOCHI_LIKELY   [[likely]]

Definition at line 816 of file mochi_platform.h.

◆ MOCHI_MSVC_TRADITIONAL

#define MOCHI_MSVC_TRADITIONAL   0

Definition at line 198 of file mochi_platform.h.

◆ MOCHI_NO_INIT

#define MOCHI_NO_INIT   /* NOLINT(cppcoreguidelines-init-variables) */

Definition at line 518 of file mochi_platform.h.

◆ MOCHI_NOP

#define MOCHI_NOP ( )
Value:
__asm__ __volatile__("nop");

Definition at line 707 of file mochi_platform.h.

◆ MOCHI_NOP_10

#define MOCHI_NOP_10 ( )
Value:
MOCHI_NOP(); MOCHI_NOP(); MOCHI_NOP(); MOCHI_NOP(); MOCHI_NOP();
#define MOCHI_NOP()

Definition at line 710 of file mochi_platform.h.

◆ MOCHI_NOP_250

#define MOCHI_NOP_250 ( )
Value:

Definition at line 715 of file mochi_platform.h.

◆ MOCHI_NOP_50

#define MOCHI_NOP_50 ( )
Value:

Definition at line 713 of file mochi_platform.h.

◆ MOCHI_PLATFORM_ANDROID

#define MOCHI_PLATFORM_ANDROID   0

Definition at line 298 of file mochi_platform.h.

◆ MOCHI_PLATFORM_LINUX

#define MOCHI_PLATFORM_LINUX   0

Definition at line 304 of file mochi_platform.h.

◆ MOCHI_PLATFORM_MACOS

#define MOCHI_PLATFORM_MACOS   0

Definition at line 310 of file mochi_platform.h.

◆ MOCHI_PLATFORM_WINDOWS

#define MOCHI_PLATFORM_WINDOWS   0

Definition at line 316 of file mochi_platform.h.

◆ MOCHI_PP_CAT

#define MOCHI_PP_CAT ( a,
b )
Value:
#define MOCHI_PP_CAT_IMPL(a, b)

Definition at line 724 of file mochi_platform.h.

◆ MOCHI_PP_CAT_IMPL

#define MOCHI_PP_CAT_IMPL ( a,
b )
Value:
a##b

Definition at line 725 of file mochi_platform.h.

◆ MOCHI_PP_STRINGIFY

#define MOCHI_PP_STRINGIFY ( X)
Value:
#define MOCHI_PP_STRINGIFY_IMPL(X)

Definition at line 728 of file mochi_platform.h.

◆ MOCHI_PP_STRINGIFY_IMPL

#define MOCHI_PP_STRINGIFY_IMPL ( X)
Value:
#X

Definition at line 729 of file mochi_platform.h.

◆ MOCHI_RESTRICT

#define MOCHI_RESTRICT   restrict

Definition at line 454 of file mochi_platform.h.

◆ MOCHI_SIMD_REGISTER_COUNT

#define MOCHI_SIMD_REGISTER_COUNT   Unsupported architecture

Definition at line 472 of file mochi_platform.h.

◆ MOCHI_SIMD_REGISTER_SIZE_BYTES

#define MOCHI_SIMD_REGISTER_SIZE_BYTES   Unsupported architecture

Definition at line 473 of file mochi_platform.h.

◆ MOCHI_TEMPLATE_FUNCTION

#define MOCHI_TEMPLATE_FUNCTION   MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK()

Definition at line 648 of file mochi_platform.h.

◆ MOCHI_UNLIKELY

#define MOCHI_UNLIKELY   [[unlikely]]

Definition at line 817 of file mochi_platform.h.

◆ MOCHI_UNREAL_ARCH_AVX2

#define MOCHI_UNREAL_ARCH_AVX2   0

Definition at line 103 of file mochi_platform.h.

◆ MOCHI_UNREAL_ARCH_NEON

#define MOCHI_UNREAL_ARCH_NEON   0

Definition at line 81 of file mochi_platform.h.

◆ MOCHI_UNROLL_LOOP_N

#define MOCHI_UNROLL_LOOP_N ( N)

Definition at line 419 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_CLANG

#define MOCHI_WARNING_ENFORCE_CLANG ( X)

Definition at line 602 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_CUDA

#define MOCHI_WARNING_ENFORCE_CUDA ( X)

Definition at line 632 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_GCC

#define MOCHI_WARNING_ENFORCE_GCC ( X)

Definition at line 594 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_GCC_CLANG

#define MOCHI_WARNING_ENFORCE_GCC_CLANG ( X)

Definition at line 611 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_MSVC

#define MOCHI_WARNING_ENFORCE_MSVC ( X)

Definition at line 586 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_CLANG

#define MOCHI_WARNING_IGNORE_CLANG ( X)

Definition at line 601 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_CUDA

#define MOCHI_WARNING_IGNORE_CUDA ( X)

Definition at line 631 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_GCC

#define MOCHI_WARNING_IGNORE_GCC ( X)

Definition at line 593 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_GCC_CLANG

#define MOCHI_WARNING_IGNORE_GCC_CLANG ( X)

Definition at line 610 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_MSVC

#define MOCHI_WARNING_IGNORE_MSVC ( X)

Definition at line 585 of file mochi_platform.h.

◆ MOCHI_WARNING_POP

#define MOCHI_WARNING_POP ( )

Definition at line 578 of file mochi_platform.h.

◆ MOCHI_WARNING_PUSH

#define MOCHI_WARNING_PUSH ( )

Definition at line 576 of file mochi_platform.h.

◆ MOCHI_WARNING_PUSH_IGNORE_ALL

#define MOCHI_WARNING_PUSH_IGNORE_ALL ( )

Definition at line 577 of file mochi_platform.h.

◆ MOCHI_WARNING_SUPPRESS_CUDA

#define MOCHI_WARNING_SUPPRESS_CUDA ( )
Value:
/* Nonstandard extension used : nameless struct */ \
MOCHI_WARNING_IGNORE_MSVC(4201) \
/* '=' : conversion from 'OffsetT' to 'int', possible loss of data */ \
MOCHI_WARNING_IGNORE_MSVC(4244) \
/* Structure was padded due to alignment specifier */ \
MOCHI_WARNING_IGNORE_MSVC(4324) \
/* Declaration of 'variable' hides class member */ \
MOCHI_WARNING_IGNORE_MSVC(4458) \
/* Unreferenced local function has been removed */ \
MOCHI_WARNING_IGNORE_MSVC(4505) \
/* Uninitalized local variable */ \
MOCHI_WARNING_IGNORE_MSVC(4700) \
/* Assignment within conditional expression */ \
MOCHI_WARNING_IGNORE_MSVC(4706) \
/* Spurious "missing return statement at end of non-void function" \
in constexpr functions. Fixed in later versions of CUDA (>11.1). */ \
MOCHI_WARNING_IGNORE_CUDA(implicit_return_from_non_void_function)

Definition at line 653 of file mochi_platform.h.

◆ MOCHI_WARNING_SUPPRESS_EIGEN

#define MOCHI_WARNING_SUPPRESS_EIGEN ( )
Value:
/* Conditional expression is constant */ \
MOCHI_WARNING_IGNORE_MSVC(4127) \
/* Check operator precedence for possible error; use parentheses to clarify precedence */ \
MOCHI_WARNING_IGNORE_MSVC(4554) \
/* Conversion from '__int64' to 'uint64_t', signed/unsigned mismatch */ \
MOCHI_WARNING_IGNORE_MSVC(4245) \
/* annotation ignored on a function that is explicitly defaulted */ \
MOCHI_WARNING_IGNORE_CUDA(esa_on_defaulted_function_ignored)

Definition at line 675 of file mochi_platform.h.