ASIMD detection on ARMv8
This commit is contained in:
parent
f1b24f501d
commit
eaed1c96be
|
@ -704,6 +704,15 @@ uint64_t cpu_features_get(void)
|
||||||
if (check_arm_cpu_feature("vfpv4"))
|
if (check_arm_cpu_feature("vfpv4"))
|
||||||
cpu |= RETRO_SIMD_VFPV4;
|
cpu |= RETRO_SIMD_VFPV4;
|
||||||
|
|
||||||
|
if (check_arm_cpu_feature("asymd"))
|
||||||
|
{
|
||||||
|
cpu |= RETRO_SIMD_ASIMD;
|
||||||
|
#ifdef __ARM_NEON__
|
||||||
|
cpu |= RETRO_SIMD_NEON;
|
||||||
|
arm_enable_runfast_mode();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
check_arm_cpu_feature("swp");
|
check_arm_cpu_feature("swp");
|
||||||
check_arm_cpu_feature("half");
|
check_arm_cpu_feature("half");
|
||||||
|
@ -748,6 +757,7 @@ uint64_t cpu_features_get(void)
|
||||||
if (cpu & RETRO_SIMD_VMX128) strlcat(buf, " VMX128", sizeof(buf));
|
if (cpu & RETRO_SIMD_VMX128) strlcat(buf, " VMX128", sizeof(buf));
|
||||||
if (cpu & RETRO_SIMD_VFPU) strlcat(buf, " VFPU", sizeof(buf));
|
if (cpu & RETRO_SIMD_VFPU) strlcat(buf, " VFPU", sizeof(buf));
|
||||||
if (cpu & RETRO_SIMD_PS) strlcat(buf, " PS", sizeof(buf));
|
if (cpu & RETRO_SIMD_PS) strlcat(buf, " PS", sizeof(buf));
|
||||||
|
if (cpu & RETRO_SIMD_ASIMD) strlcat(buf, " ASIMD", sizeof(buf));
|
||||||
|
|
||||||
return cpu;
|
return cpu;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1316,6 +1316,7 @@ struct retro_log_callback
|
||||||
#define RETRO_SIMD_POPCNT (1 << 18)
|
#define RETRO_SIMD_POPCNT (1 << 18)
|
||||||
#define RETRO_SIMD_MOVBE (1 << 19)
|
#define RETRO_SIMD_MOVBE (1 << 19)
|
||||||
#define RETRO_SIMD_CMOV (1 << 20)
|
#define RETRO_SIMD_CMOV (1 << 20)
|
||||||
|
#define RETRO_SIMD_ASIMD (1 << 21)
|
||||||
|
|
||||||
typedef uint64_t retro_perf_tick_t;
|
typedef uint64_t retro_perf_tick_t;
|
||||||
typedef int64_t retro_time_t;
|
typedef int64_t retro_time_t;
|
||||||
|
|
Loading…
Reference in New Issue