diff options
Diffstat (limited to 'llvm/lib/TargetParser/Host.cpp')
-rw-r--r-- | llvm/lib/TargetParser/Host.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/TargetParser/Host.cpp b/llvm/lib/TargetParser/Host.cpp index b295db5..e0c857b 100644 --- a/llvm/lib/TargetParser/Host.cpp +++ b/llvm/lib/TargetParser/Host.cpp @@ -2011,8 +2011,9 @@ const StringMap<bool> sys::getHostCPUFeatures() { const StringMap<bool> sys::getHostCPUFeatures() { unsigned long hwcap = getauxval(AT_HWCAP); bool HasFPU = hwcap & (1UL << 3); // HWCAP_LOONGARCH_FPU - uint32_t cpucfg2 = 0x2; + const uint32_t cpucfg2 = 0x2, cpucfg3 = 0x3; __asm__("cpucfg %[cpucfg2], %[cpucfg2]\n\t" : [cpucfg2] "+r"(cpucfg2)); + __asm__("cpucfg %[cpucfg3], %[cpucfg3]\n\t" : [cpucfg3] "+r"(cpucfg3)); StringMap<bool> Features; @@ -2026,12 +2027,13 @@ const StringMap<bool> sys::getHostCPUFeatures() { Features["frecipe"] = cpucfg2 & (1U << 25); // CPUCFG.2.FRECIPE Features["lam-bh"] = cpucfg2 & (1U << 27); // CPUCFG.2.LAM_BH + Features["ld-seq-sa"] = cpucfg3 & (1U << 23); // CPUCFG.3.LD_SEQ_SA + // TODO: Need to complete. // Features["div32"] = cpucfg2 & (1U << 26); // CPUCFG.2.DIV32 // Features["lamcas"] = cpucfg2 & (1U << 28); // CPUCFG.2.LAMCAS // Features["llacq-screl"] = cpucfg2 & (1U << 29); // CPUCFG.2.LLACQ_SCREL // Features["scq"] = cpucfg2 & (1U << 30); // CPUCFG.2.SCQ - // Features["ld-seq-sa"] = cpucfg3 & (1U << 23); // CPUCFG.3.LD_SEQ_SA return Features; } #elif defined(__linux__) && defined(__riscv) |