mirror of https://github.com/gnss-sdr/gnss-sdr
54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
// SPDX-FileCopyrightText: 2017 Google Inc.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
#ifndef CPU_FEATURES_INCLUDE_CPUINFO_MIPS_H_
|
|
#define CPU_FEATURES_INCLUDE_CPUINFO_MIPS_H_
|
|
|
|
#include "cpu_features_cache_info.h"
|
|
#include "cpu_features_macros.h"
|
|
|
|
CPU_FEATURES_START_CPP_NAMESPACE
|
|
|
|
typedef struct
|
|
{
|
|
int msa : 1; // MIPS SIMD Architecture
|
|
// https://www.mips.com/products/architectures/ase/simd/
|
|
int eva : 1; // Enhanced Virtual Addressing
|
|
// https://www.mips.com/products/architectures/mips64/
|
|
int r6 : 1; // True if is release 6 of the processor.
|
|
|
|
// Make sure to update MipsFeaturesEnum below if you add a field here.
|
|
} MipsFeatures;
|
|
|
|
typedef struct
|
|
{
|
|
MipsFeatures features;
|
|
} MipsInfo;
|
|
|
|
MipsInfo GetMipsInfo(void);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Introspection functions
|
|
|
|
typedef enum
|
|
{
|
|
MIPS_MSA,
|
|
MIPS_EVA,
|
|
MIPS_R6,
|
|
MIPS_LAST_,
|
|
} MipsFeaturesEnum;
|
|
|
|
int GetMipsFeaturesEnumValue(const MipsFeatures* features,
|
|
MipsFeaturesEnum value);
|
|
|
|
const char* GetMipsFeaturesEnumName(MipsFeaturesEnum);
|
|
|
|
CPU_FEATURES_END_CPP_NAMESPACE
|
|
|
|
#if !defined(CPU_FEATURES_ARCH_MIPS)
|
|
#error "Including cpuinfo_mips.h from a non-mips target."
|
|
#endif
|
|
|
|
#endif // CPU_FEATURES_INCLUDE_CPUINFO_MIPS_H_
|