mirror of
https://github.com/google/cpu_features.git
synced 2025-04-27 15:12:30 +02:00

* Add macros for LOONGARCH hwcaps * Update hwcaps.h * LoongArch Support * Remove unused definitions. * Add ignored feature in test.
180 lines
5.0 KiB
C++
180 lines
5.0 KiB
C++
// Copyright 2022 Google LLC
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#include "cpuinfo_loongarch.h"
|
|
|
|
#include "filesystem_for_testing.h"
|
|
#include "gtest/gtest.h"
|
|
#include "hwcaps_for_testing.h"
|
|
|
|
namespace cpu_features {
|
|
namespace {
|
|
|
|
TEST(CpuinfoLoongArchvTest, UnknownFromCpuInfo) {
|
|
ResetHwcaps();
|
|
auto& fs = GetEmptyFilesystem();
|
|
fs.CreateFile("/proc/cpuinfo", R"(
|
|
system type : generic-loongson-machine
|
|
|
|
processor : 0
|
|
package : 0
|
|
core : 0
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000-HV
|
|
CPU Revision : 0x11
|
|
FPU Revision : 0x00
|
|
CPU MHz : 2500.00
|
|
BogoMIPS : 5000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu lsx lasx crc32 complex crypto lvz lbt_x86 lbt_arm lbt_mips
|
|
Hardware Watchpoint : yes, iwatch count: 8, dwatch count: 8
|
|
|
|
processor : 1
|
|
package : 0
|
|
core : 1
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000-HV
|
|
CPU Revision : 0x11
|
|
FPU Revision : 0x00
|
|
CPU MHz : 2500.00
|
|
BogoMIPS : 5000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu lsx lasx crc32 complex crypto lvz lbt_x86 lbt_arm lbt_mips
|
|
Hardware Watchpoint : yes, iwatch count: 8, dwatch count: 8
|
|
|
|
processor : 2
|
|
package : 0
|
|
core : 2
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000-HV
|
|
CPU Revision : 0x11
|
|
FPU Revision : 0x00
|
|
CPU MHz : 2500.00
|
|
BogoMIPS : 5000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu lsx lasx crc32 complex crypto lvz lbt_x86 lbt_arm lbt_mips
|
|
Hardware Watchpoint : yes, iwatch count: 8, dwatch count: 8
|
|
|
|
processor : 3
|
|
package : 0
|
|
core : 3
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000-HV
|
|
CPU Revision : 0x11
|
|
FPU Revision : 0x00
|
|
CPU MHz : 2500.00
|
|
BogoMIPS : 5000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu lsx lasx crc32 complex crypto lvz lbt_x86 lbt_arm lbt_mips
|
|
Hardware Watchpoint : yes, iwatch count: 8, dwatch count: 8)");
|
|
const auto info = GetLoongArchInfo();
|
|
EXPECT_FALSE(info.features.CPUCFG);
|
|
EXPECT_TRUE(info.features.LAM);
|
|
EXPECT_TRUE(info.features.UAL);
|
|
EXPECT_TRUE(info.features.FPU);
|
|
EXPECT_TRUE(info.features.LSX);
|
|
EXPECT_TRUE(info.features.LASX);
|
|
EXPECT_TRUE(info.features.CRC32);
|
|
EXPECT_TRUE(info.features.COMPLEX);
|
|
EXPECT_TRUE(info.features.CRYPTO);
|
|
EXPECT_TRUE(info.features.LVZ);
|
|
EXPECT_TRUE(info.features.LBT_X86);
|
|
EXPECT_TRUE(info.features.LBT_ARM);
|
|
EXPECT_TRUE(info.features.LBT_MIPS);
|
|
}
|
|
|
|
TEST(CpuinfoLoongArchvTest, QemuCpuInfo) {
|
|
ResetHwcaps();
|
|
auto& fs = GetEmptyFilesystem();
|
|
fs.CreateFile("/proc/cpuinfo", R"(
|
|
system type : generic-loongson-machine
|
|
|
|
processor : 0
|
|
package : 0
|
|
core : 0
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000
|
|
CPU Revision : 0x10
|
|
FPU Revision : 0x01
|
|
CPU MHz : 2000.00
|
|
BogoMIPS : 4000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu crc32
|
|
Hardware Watchpoint : yes, iwatch count: 0, dwatch count: 0
|
|
|
|
processor : 1
|
|
package : 0
|
|
core : 1
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000
|
|
CPU Revision : 0x10
|
|
FPU Revision : 0x01
|
|
CPU MHz : 2000.00
|
|
BogoMIPS : 4000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu crc32
|
|
Hardware Watchpoint : yes, iwatch count: 0, dwatch count: 0
|
|
|
|
processor : 2
|
|
package : 0
|
|
core : 2
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000
|
|
CPU Revision : 0x10
|
|
FPU Revision : 0x01
|
|
CPU MHz : 2000.00
|
|
BogoMIPS : 4000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu crc32
|
|
Hardware Watchpoint : yes, iwatch count: 0, dwatch count: 0
|
|
|
|
processor : 3
|
|
package : 0
|
|
core : 3
|
|
CPU Family : Loongson-64bit
|
|
Model Name : Loongson-3A5000
|
|
CPU Revision : 0x10
|
|
FPU Revision : 0x01
|
|
CPU MHz : 2000.00
|
|
BogoMIPS : 4000.00
|
|
TLB Entries : 2112
|
|
Address Sizes : 48 bits physical, 48 bits virtual
|
|
ISA : loongarch32 loongarch64
|
|
Features : cpucfg lam ual fpu crc32
|
|
Hardware Watchpoint : yes, iwatch count: 0, dwatch count: 0)");
|
|
const auto info = GetLoongArchInfo();
|
|
EXPECT_FALSE(info.features.CPUCFG);
|
|
EXPECT_TRUE(info.features.LAM);
|
|
EXPECT_TRUE(info.features.UAL);
|
|
EXPECT_TRUE(info.features.FPU);
|
|
EXPECT_TRUE(info.features.CRC32);
|
|
}
|
|
|
|
} // namespace
|
|
} // namespace cpu_features
|