omni/platforminfo/ICpuInfo.h
File members: omni/platforminfo/ICpuInfo.h
// Copyright (c) 2021-2023, NVIDIA CORPORATION. All rights reserved.
//
// NVIDIA CORPORATION and its licensors retain all intellectual property
// and proprietary rights in and to this software, related documentation
// and any modifications thereto. Any use, reproduction, disclosure or
// distribution of this software and related documentation without an express
// license agreement from NVIDIA CORPORATION is strictly prohibited.
//
#pragma once
#include "../core/IObject.h"
namespace omni
{
namespace platforminfo
{
class ICpuInfo;
enum class OMNI_ATTR("prefix=e") CpuFeature
{
eX86Sse,
eX86Sse2,
eX86Sse3,
eX86Ssse3,
eX86Fma,
eX86Sse41,
eX86Sse42,
eX86Avx,
eX86F16c,
eX86Popcnt,
eX86Tsc,
eX86Mmx,
eX86Avx2,
eX86Avx512F,
eX86Avx512Dq,
eX86Avx512Ifma,
eX86Avx512Pf,
eX86Avx512Er,
eX86Avx512Cd,
eX86Avx512Bw,
eX86Avx512Vl,
eX86Avx512_Vbmi,
eX86Avx512_Vbmi2,
eX86Avx512_Vnni,
eX86Avx512_Bitalg,
eX86Avx512_Vpopcntdq,
eX86Avx512_4Vnniw,
eX86Avx512_4fmaps,
eX86Avx512_Vp2intersect,
eX86AvxVnni,
eX86Avx512_Bf16,
eAmd3DNow,
eAmd3DNowExt,
eAmdMmxExt,
eArmAsimd,
eArmNeon,
eArmAtomics,
eArmSha,
eArmCrypto,
eArmCrc32,
eFeatureCount,
};
class ICpuInfo_abi : public omni::core::Inherits<omni::core::IObject, OMNI_TYPE_ID("omni.platforminfo.ICpuInfo")>
{
protected:
virtual size_t getCpuPackageCount_abi() noexcept = 0;
virtual size_t getTotalPhysicalCoreCount_abi() noexcept = 0;
virtual size_t getTotalLogicalCoreCount_abi() noexcept = 0;
virtual size_t getPhysicalCoresPerPackage_abi() noexcept = 0;
virtual size_t getLogicalCoresPerPackage_abi() noexcept = 0;
virtual bool isFeatureSupported_abi(CpuFeature feature) noexcept = 0;
virtual const char* getPrettyName_abi(size_t cpuIndex) noexcept = 0;
virtual const char* getIdentifier_abi(size_t cpuIndex) noexcept = 0;
virtual const char* getVendor_abi(size_t cpuIndex) noexcept = 0;
virtual uint64_t getProcessorMask_abi(size_t cpuIndex) noexcept = 0;
};
} // namespace platforminfo
} // namespace omni
#define OMNI_BIND_INCLUDE_INTERFACE_DECL
#include "ICpuInfo.gen.h"
class omni::platforminfo::ICpuInfo : public omni::core::Generated<omni::platforminfo::ICpuInfo_abi>
{
};
#define OMNI_BIND_INCLUDE_INTERFACE_IMPL
#include "ICpuInfo.gen.h"