17constexpr Platform platform = Platform::NEON;
19#define ARGON_PLATFORM_NEON true
20#define ARGON_HAS_FLOAT true
26#define ARGON_HAS_HALF_FLOAT true
27#define ARGON_HAS_SINGLE_FLOAT true
28#define ARGON_HAS_DOUBLE_FLOAT false
32#define ARGON_HAS_HALF_FLOAT true
33#define ARGON_HAS_SINGLE_FLOAT true
34#define ARGON_HAS_DOUBLE_FLOAT true
40#define ARGON_HAS_HALF_FLOAT (__ARM_NEON_FP & 2)
41#define ARGON_HAS_SINGLE_FLOAT (__ARM_NEON_FP & 4)
42#define ARGON_HAS_DOUBLE_FLOAT (__ARM_NEON_FP & 8)
46#elifdef __ARM_FEATURE_MVE
48constexpr Platform platform = Platform::MVE;
50#define ARGON_PLATFORM_MVE true
52#if (__ARM_FEATURE_MVE & 2)
53#define ARGON_HAS_FLOAT true
54#define ARGON_HAS_HALF_FLOAT true
55#define ARGON_HAS_SINGLE_FLOAT true
57#define ARGON_HAS_FLOAT false
58#define ARGON_HAS_HALF_FLOAT false
59#define ARGON_HAS_SINGLE_FLOAT false
64constexpr Platform platform = Platform::SIMDe;
66#define ARGON_PLATFORM_SIMDE true
67#define ARGON_HAS_FLOAT true
68#define ARGON_HAS_HALF_FLOAT false
69#define ARGON_HAS_SINGLE_FLOAT true
70#define ARGON_HAS_DOUBLE_FLOAT false
73#ifndef ARGON_USE_COMPILER_EXTENSIONS
74#if !defined(_MSC_VER) || defined(__clang__)
75#define ARGON_USE_COMPILER_EXTENSIONS 1
77#define ARGON_USE_COMPILER_EXTENSIONS 0