Add loongarch support

This commit is contained in:
yuanhecai
2023-06-28 10:52:35 +08:00
parent 7d225bec62
commit 2e952f300f
10 changed files with 126 additions and 3 deletions
+3
View File
@@ -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 }
};
+17
View File
@@ -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