зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1256588 - IonMonkey: MIPS: Implement isLoongson. r=huangwenjun06
--- .../jit/mips-shared/Architecture-mips-shared.cpp | 29 ++++++++++++---------- js/src/jit/mips-shared/Architecture-mips-shared.h | 1 + 2 files changed, 17 insertions(+), 13 deletions(-)
This commit is contained in:
Родитель
7b1faa29bc
Коммит
d2f558905a
|
@ -12,6 +12,7 @@
|
|||
#include "jit/RegisterSets.h"
|
||||
|
||||
#define HWCAP_MIPS (1 << 31)
|
||||
#define HWCAP_LOONGSON (1 << 30)
|
||||
#define HWCAP_FPU (1 << 0)
|
||||
|
||||
namespace js {
|
||||
|
@ -19,20 +20,19 @@ namespace jit {
|
|||
|
||||
uint32_t GetMIPSFlags()
|
||||
{
|
||||
static bool isSet = false;
|
||||
static uint32_t flags = 0;
|
||||
if (isSet)
|
||||
return flags;
|
||||
#if defined(JS_SIMULATOR_MIPS32) || defined(JS_SIMULATOR_MIPS64)
|
||||
isSet = true;
|
||||
flags |= HWCAP_FPU;
|
||||
return flags;
|
||||
#else
|
||||
|
||||
#ifdef __linux__
|
||||
if (flags)
|
||||
return flags;
|
||||
|
||||
flags |= HWCAP_MIPS;
|
||||
#if defined(JS_SIMULATOR_MIPS32) || defined(JS_SIMULATOR_MIPS64)
|
||||
flags |= HWCAP_FPU;
|
||||
#else
|
||||
# ifdef __linux__
|
||||
FILE* fp = fopen("/proc/cpuinfo", "r");
|
||||
if (!fp)
|
||||
return false;
|
||||
return flags;
|
||||
|
||||
char buf[1024];
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
@ -40,13 +40,11 @@ uint32_t GetMIPSFlags()
|
|||
fclose(fp);
|
||||
if (strstr(buf, "FPU"))
|
||||
flags |= HWCAP_FPU;
|
||||
|
||||
isSet = true;
|
||||
return flags;
|
||||
#endif
|
||||
|
||||
return flags;
|
||||
if (strstr(buf, "Loongson"))
|
||||
flags |= HWCAP_LOONGSON;
|
||||
# endif
|
||||
#endif // JS_SIMULATOR_MIPS32 || JS_SIMULATOR_MIPS64
|
||||
return flags;
|
||||
}
|
||||
|
||||
bool hasFPU()
|
||||
|
@ -54,6 +52,11 @@ bool hasFPU()
|
|||
return js::jit::GetMIPSFlags() & HWCAP_FPU;
|
||||
}
|
||||
|
||||
bool isLoongson()
|
||||
{
|
||||
return js::jit::GetMIPSFlags() & HWCAP_LOONGSON;
|
||||
}
|
||||
|
||||
Registers::Code
|
||||
Registers::FromName(const char* name)
|
||||
{
|
||||
|
|
|
@ -310,6 +310,7 @@ class FloatRegisterMIPSShared
|
|||
|
||||
uint32_t GetMIPSFlags();
|
||||
bool hasFPU();
|
||||
bool isLoongson();
|
||||
|
||||
// MIPS doesn't have double registers that can NOT be treated as float32.
|
||||
inline bool
|
||||
|
|
Загрузка…
Ссылка в новой задаче