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_CPU   1
#define MOCHI_ARCH_GPU   0
#define MOCHI_ARCH_X64   0
#define MOCHI_ARCH_X64_AVX2   0
#define MOCHI_ARCH_X64_FMA   0
#define MOCHI_ARCH_X64_SVML   0
#define MOCHI_CACHE_ALIGN   alignas(MOCHI_CACHE_LINE_SIZE)
#define MOCHI_CACHE_LINE_SIZE   64
#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_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 315 of file mochi_platform.h.

◆ MOCHI_ARCH_ARM

#define MOCHI_ARCH_ARM   0

Definition at line 84 of file mochi_platform.h.

◆ MOCHI_ARCH_ARM_NEON

#define MOCHI_ARCH_ARM_NEON   0

Definition at line 90 of file mochi_platform.h.

◆ MOCHI_ARCH_CPU

#define MOCHI_ARCH_CPU   1

Definition at line 70 of file mochi_platform.h.

◆ MOCHI_ARCH_GPU

#define MOCHI_ARCH_GPU   0

Definition at line 71 of file mochi_platform.h.

◆ MOCHI_ARCH_X64

#define MOCHI_ARCH_X64   0

Definition at line 117 of file mochi_platform.h.

◆ MOCHI_ARCH_X64_AVX2

#define MOCHI_ARCH_X64_AVX2   0

Definition at line 123 of file mochi_platform.h.

◆ MOCHI_ARCH_X64_FMA

#define MOCHI_ARCH_X64_FMA   0

Definition at line 130 of file mochi_platform.h.

◆ MOCHI_ARCH_X64_SVML

#define MOCHI_ARCH_X64_SVML   0

Definition at line 137 of file mochi_platform.h.

◆ MOCHI_CACHE_ALIGN

#define MOCHI_CACHE_ALIGN   alignas(MOCHI_CACHE_LINE_SIZE)

Definition at line 468 of file mochi_platform.h.

◆ MOCHI_CACHE_LINE_SIZE

#define MOCHI_CACHE_LINE_SIZE   64

Definition at line 465 of file mochi_platform.h.

◆ MOCHI_CLANG_AWAIT_SUSPEND_BUG

#define MOCHI_CLANG_AWAIT_SUSPEND_BUG   0

Definition at line 198 of file mochi_platform.h.

◆ MOCHI_COMPILER_ASAN

#define MOCHI_COMPILER_ASAN   0

Definition at line 219 of file mochi_platform.h.

◆ MOCHI_COMPILER_CLANG

#define MOCHI_COMPILER_CLANG   0

Definition at line 197 of file mochi_platform.h.

◆ MOCHI_COMPILER_CUDA

#define MOCHI_COMPILER_CUDA   0

Definition at line 212 of file mochi_platform.h.

◆ MOCHI_COMPILER_CUDA_CPU

#define MOCHI_COMPILER_CUDA_CPU   0

Definition at line 210 of file mochi_platform.h.

◆ MOCHI_COMPILER_CUDA_GPU

#define MOCHI_COMPILER_CUDA_GPU   0

Definition at line 211 of file mochi_platform.h.

◆ MOCHI_COMPILER_GCC

#define MOCHI_COMPILER_GCC   0

Definition at line 187 of file mochi_platform.h.

◆ MOCHI_COMPILER_HAS_RTTI

#define MOCHI_COMPILER_HAS_RTTI   1

Definition at line 262 of file mochi_platform.h.

◆ MOCHI_COMPILER_MSVC

#define MOCHI_COMPILER_MSVC   0

Definition at line 173 of file mochi_platform.h.

◆ MOCHI_COMPILER_TSAN

#define MOCHI_COMPILER_TSAN   0

Definition at line 224 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 769 of file mochi_platform.h.

◆ MOCHI_CONCEPT_DEF

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

Definition at line 772 of file mochi_platform.h.

◆ MOCHI_CPU

#define MOCHI_CPU

Definition at line 316 of file mochi_platform.h.

◆ MOCHI_DEBUG_BREAK

#define MOCHI_DEBUG_BREAK ( )
Value:
__builtin_trap()

Definition at line 498 of file mochi_platform.h.

◆ MOCHI_DEBUG_RTCHECKS_DISABLE

#define MOCHI_DEBUG_RTCHECKS_DISABLE ( )

Definition at line 662 of file mochi_platform.h.

◆ MOCHI_DEBUG_RTCHECKS_ENABLE

#define MOCHI_DEBUG_RTCHECKS_ENABLE ( )

Definition at line 661 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 713 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 702 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 731 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 738 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 718 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 725 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 707 of file mochi_platform.h.

◆ MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK

#define MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK ( )

Definition at line 611 of file mochi_platform.h.

◆ MOCHI_EMPTY_BASE

#define MOCHI_EMPTY_BASE

Definition at line 747 of file mochi_platform.h.

◆ MOCHI_FORCE_INLINE

#define MOCHI_FORCE_INLINE   inline

Definition at line 340 of file mochi_platform.h.

◆ MOCHI_FORCE_INLINE_LAMBDA

#define MOCHI_FORCE_INLINE_LAMBDA

Definition at line 377 of file mochi_platform.h.

◆ MOCHI_GPU

#define MOCHI_GPU

Definition at line 317 of file mochi_platform.h.

◆ MOCHI_GPU_KERNEL

#define MOCHI_GPU_KERNEL

Definition at line 318 of file mochi_platform.h.

◆ MOCHI_HAS_VA_OPT

#define MOCHI_HAS_VA_OPT   (MOCHI_LANGUAGE_CPP20 && !MOCHI_MSVC_TRADITIONAL)

Definition at line 268 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 782 of file mochi_platform.h.

◆ MOCHI_MSVC_TRADITIONAL

#define MOCHI_MSVC_TRADITIONAL   0

Definition at line 181 of file mochi_platform.h.

◆ MOCHI_NO_INIT

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

Definition at line 484 of file mochi_platform.h.

◆ MOCHI_NOP

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

Definition at line 673 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 676 of file mochi_platform.h.

◆ MOCHI_NOP_250

#define MOCHI_NOP_250 ( )
Value:

Definition at line 681 of file mochi_platform.h.

◆ MOCHI_NOP_50

#define MOCHI_NOP_50 ( )
Value:

Definition at line 679 of file mochi_platform.h.

◆ MOCHI_PLATFORM_ANDROID

#define MOCHI_PLATFORM_ANDROID   0

Definition at line 281 of file mochi_platform.h.

◆ MOCHI_PLATFORM_LINUX

#define MOCHI_PLATFORM_LINUX   0

Definition at line 287 of file mochi_platform.h.

◆ MOCHI_PLATFORM_MACOS

#define MOCHI_PLATFORM_MACOS   0

Definition at line 293 of file mochi_platform.h.

◆ MOCHI_PLATFORM_WINDOWS

#define MOCHI_PLATFORM_WINDOWS   0

Definition at line 299 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 690 of file mochi_platform.h.

◆ MOCHI_PP_CAT_IMPL

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

Definition at line 691 of file mochi_platform.h.

◆ MOCHI_PP_STRINGIFY

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

Definition at line 694 of file mochi_platform.h.

◆ MOCHI_PP_STRINGIFY_IMPL

#define MOCHI_PP_STRINGIFY_IMPL ( X)
Value:
#X

Definition at line 695 of file mochi_platform.h.

◆ MOCHI_RESTRICT

#define MOCHI_RESTRICT   restrict

Definition at line 437 of file mochi_platform.h.

◆ MOCHI_SIMD_REGISTER_COUNT

#define MOCHI_SIMD_REGISTER_COUNT   Unsupported architecture

Definition at line 452 of file mochi_platform.h.

◆ MOCHI_SIMD_REGISTER_SIZE_BYTES

#define MOCHI_SIMD_REGISTER_SIZE_BYTES   Unsupported architecture

Definition at line 453 of file mochi_platform.h.

◆ MOCHI_TEMPLATE_FUNCTION

#define MOCHI_TEMPLATE_FUNCTION   MOCHI_DISABLE_CUDA_GPU_EXEC_CHECK()

Definition at line 614 of file mochi_platform.h.

◆ MOCHI_UNLIKELY

#define MOCHI_UNLIKELY   [[unlikely]]

Definition at line 783 of file mochi_platform.h.

◆ MOCHI_UNREAL_ARCH_AVX2

#define MOCHI_UNREAL_ARCH_AVX2   0

Definition at line 94 of file mochi_platform.h.

◆ MOCHI_UNREAL_ARCH_NEON

#define MOCHI_UNREAL_ARCH_NEON   0

Definition at line 78 of file mochi_platform.h.

◆ MOCHI_UNROLL_LOOP_N

#define MOCHI_UNROLL_LOOP_N ( N)

Definition at line 402 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_CLANG

#define MOCHI_WARNING_ENFORCE_CLANG ( X)

Definition at line 568 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_CUDA

#define MOCHI_WARNING_ENFORCE_CUDA ( X)

Definition at line 598 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_GCC

#define MOCHI_WARNING_ENFORCE_GCC ( X)

Definition at line 560 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_GCC_CLANG

#define MOCHI_WARNING_ENFORCE_GCC_CLANG ( X)

Definition at line 577 of file mochi_platform.h.

◆ MOCHI_WARNING_ENFORCE_MSVC

#define MOCHI_WARNING_ENFORCE_MSVC ( X)

Definition at line 552 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_CLANG

#define MOCHI_WARNING_IGNORE_CLANG ( X)

Definition at line 567 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_CUDA

#define MOCHI_WARNING_IGNORE_CUDA ( X)

Definition at line 597 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_GCC

#define MOCHI_WARNING_IGNORE_GCC ( X)

Definition at line 559 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_GCC_CLANG

#define MOCHI_WARNING_IGNORE_GCC_CLANG ( X)

Definition at line 576 of file mochi_platform.h.

◆ MOCHI_WARNING_IGNORE_MSVC

#define MOCHI_WARNING_IGNORE_MSVC ( X)

Definition at line 551 of file mochi_platform.h.

◆ MOCHI_WARNING_POP

#define MOCHI_WARNING_POP ( )

Definition at line 544 of file mochi_platform.h.

◆ MOCHI_WARNING_PUSH

#define MOCHI_WARNING_PUSH ( )

Definition at line 542 of file mochi_platform.h.

◆ MOCHI_WARNING_PUSH_IGNORE_ALL

#define MOCHI_WARNING_PUSH_IGNORE_ALL ( )

Definition at line 543 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 619 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 641 of file mochi_platform.h.