Add loongarch support
This commit is contained in:
@@ -104,6 +104,9 @@ static const struct {
|
||||
{ "NEON", "neon", DAV1D_ARM_CPU_FLAG_NEON },
|
||||
#elif ARCH_PPC64LE
|
||||
{ "VSX", "vsx", DAV1D_PPC_CPU_FLAG_VSX },
|
||||
#elif ARCH_LOONGARCH
|
||||
{ "LSX", "lsx", DAV1D_LOONGARCH_CPU_FLAG_LSX },
|
||||
{ "LASX", "lasx", DAV1D_LOONGARCH_CPU_FLAG_LASX },
|
||||
#endif
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
@@ -197,6 +197,23 @@ static inline uint64_t readtime(void) {
|
||||
return (((uint64_t)tbu) << 32) | (uint64_t)tbl;
|
||||
}
|
||||
#define readtime readtime
|
||||
#elif ARCH_LOONGARCH
|
||||
static inline uint64_t readtime(void) {
|
||||
#if ARCH_LOONGARCH64
|
||||
uint64_t a, id;
|
||||
__asm__ __volatile__("rdtime.d %0, %1"
|
||||
: "=r"(a), "=r"(id)
|
||||
:: );
|
||||
return a;
|
||||
#else
|
||||
uint32_t a, id;
|
||||
__asm__ __volatile__("rdtimel.w %0, %1"
|
||||
: "=r"(a), "=r"(id)
|
||||
:: );
|
||||
return (uint64_t)a;
|
||||
#endif
|
||||
}
|
||||
#define readtime readtime
|
||||
#endif
|
||||
|
||||
/* Verifies that clobbered callee-saved registers
|
||||
|
||||
Reference in New Issue
Block a user