aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Chatelet <gchatelet@google.com>2020-10-13 13:05:04 +0200
committerGitHub <noreply@github.com>2020-10-13 13:05:04 +0200
commitcdab59af76b8e93847f806c2b5ef61fafaf8fe7b (patch)
tree4c35641713aab728f44a386013bcb0c81c6375ba
parent9a8f04b24c9cca452b62ec1877a18f2e7678742b (diff)
downloadcpu_features-cdab59af76b8e93847f806c2b5ef61fafaf8fe7b.tar.gz
[NFC] Simplify build by removing inl files. (#139)
-rw-r--r--src/cpuinfo_aarch64.c53
-rw-r--r--src/cpuinfo_aarch64_db.inl71
-rw-r--r--src/cpuinfo_arm.c29
-rw-r--r--src/cpuinfo_arm_db.inl48
-rw-r--r--src/cpuinfo_mips.c5
-rw-r--r--src/cpuinfo_mips_db.inl24
-rw-r--r--src/cpuinfo_ppc.c49
-rw-r--r--src/cpuinfo_ppc_db.inl62
-rw-r--r--src/cpuinfo_x86.c63
-rw-r--r--src/cpuinfo_x86_db.inl81
-rw-r--r--src/define_tables.h19
11 files changed, 201 insertions, 303 deletions
diff --git a/src/cpuinfo_aarch64.c b/src/cpuinfo_aarch64.c
index 542663b..0a52718 100644
--- a/src/cpuinfo_aarch64.c
+++ b/src/cpuinfo_aarch64.c
@@ -24,8 +24,59 @@
// Generation of feature's getters/setters functions and kGetters, kSetters,
// kCpuInfoFlags and kHardwareCapabilities global tables.
+#define DEFINE_TABLE_FEATURES \
+ FEATURE(AARCH64_FP, fp, "fp", AARCH64_HWCAP_FP, 0) \
+ FEATURE(AARCH64_ASIMD, asimd, "asimd", AARCH64_HWCAP_ASIMD, 0) \
+ FEATURE(AARCH64_EVTSTRM, evtstrm, "evtstrm", AARCH64_HWCAP_EVTSTRM, 0) \
+ FEATURE(AARCH64_AES, aes, "aes", AARCH64_HWCAP_AES, 0) \
+ FEATURE(AARCH64_PMULL, pmull, "pmull", AARCH64_HWCAP_PMULL, 0) \
+ FEATURE(AARCH64_SHA1, sha1, "sha1", AARCH64_HWCAP_SHA1, 0) \
+ FEATURE(AARCH64_SHA2, sha2, "sha2", AARCH64_HWCAP_SHA2, 0) \
+ FEATURE(AARCH64_CRC32, crc32, "crc32", AARCH64_HWCAP_CRC32, 0) \
+ FEATURE(AARCH64_ATOMICS, atomics, "atomics", AARCH64_HWCAP_ATOMICS, 0) \
+ FEATURE(AARCH64_FPHP, fphp, "fphp", AARCH64_HWCAP_FPHP, 0) \
+ FEATURE(AARCH64_ASIMDHP, asimdhp, "asimdhp", AARCH64_HWCAP_ASIMDHP, 0) \
+ FEATURE(AARCH64_CPUID, cpuid, "cpuid", AARCH64_HWCAP_CPUID, 0) \
+ FEATURE(AARCH64_ASIMDRDM, asimdrdm, "asimdrdm", AARCH64_HWCAP_ASIMDRDM, 0) \
+ FEATURE(AARCH64_JSCVT, jscvt, "jscvt", AARCH64_HWCAP_JSCVT, 0) \
+ FEATURE(AARCH64_FCMA, fcma, "fcma", AARCH64_HWCAP_FCMA, 0) \
+ FEATURE(AARCH64_LRCPC, lrcpc, "lrcpc", AARCH64_HWCAP_LRCPC, 0) \
+ FEATURE(AARCH64_DCPOP, dcpop, "dcpop", AARCH64_HWCAP_DCPOP, 0) \
+ FEATURE(AARCH64_SHA3, sha3, "sha3", AARCH64_HWCAP_SHA3, 0) \
+ FEATURE(AARCH64_SM3, sm3, "sm3", AARCH64_HWCAP_SM3, 0) \
+ FEATURE(AARCH64_SM4, sm4, "sm4", AARCH64_HWCAP_SM4, 0) \
+ FEATURE(AARCH64_ASIMDDP, asimddp, "asimddp", AARCH64_HWCAP_ASIMDDP, 0) \
+ FEATURE(AARCH64_SHA512, sha512, "sha512", AARCH64_HWCAP_SHA512, 0) \
+ FEATURE(AARCH64_SVE, sve, "sve", AARCH64_HWCAP_SVE, 0) \
+ FEATURE(AARCH64_ASIMDFHM, asimdfhm, "asimdfhm", AARCH64_HWCAP_ASIMDFHM, 0) \
+ FEATURE(AARCH64_DIT, dit, "dit", AARCH64_HWCAP_DIT, 0) \
+ FEATURE(AARCH64_USCAT, uscat, "uscat", AARCH64_HWCAP_USCAT, 0) \
+ FEATURE(AARCH64_ILRCPC, ilrcpc, "ilrcpc", AARCH64_HWCAP_ILRCPC, 0) \
+ FEATURE(AARCH64_FLAGM, flagm, "flagm", AARCH64_HWCAP_FLAGM, 0) \
+ FEATURE(AARCH64_SSBS, ssbs, "ssbs", AARCH64_HWCAP_SSBS, 0) \
+ FEATURE(AARCH64_SB, sb, "sb", AARCH64_HWCAP_SB, 0) \
+ FEATURE(AARCH64_PACA, paca, "paca", AARCH64_HWCAP_PACA, 0) \
+ FEATURE(AARCH64_PACG, pacg, "pacg", AARCH64_HWCAP_PACG, 0) \
+ FEATURE(AARCH64_DCPODP, dcpodp, "dcpodp", 0, AARCH64_HWCAP2_DCPODP) \
+ FEATURE(AARCH64_SVE2, sve2, "sve2", 0, AARCH64_HWCAP2_SVE2) \
+ FEATURE(AARCH64_SVEAES, sveaes, "sveaes", 0, AARCH64_HWCAP2_SVEAES) \
+ FEATURE(AARCH64_SVEPMULL, svepmull, "svepmull", 0, AARCH64_HWCAP2_SVEPMULL) \
+ FEATURE(AARCH64_SVEBITPERM, svebitperm, "svebitperm", 0, \
+ AARCH64_HWCAP2_SVEBITPERM) \
+ FEATURE(AARCH64_SVESHA3, svesha3, "svesha3", 0, AARCH64_HWCAP2_SVESHA3) \
+ FEATURE(AARCH64_SVESM4, svesm4, "svesm4", 0, AARCH64_HWCAP2_SVESM4) \
+ FEATURE(AARCH64_FLAGM2, flagm2, "flagm2", 0, AARCH64_HWCAP2_FLAGM2) \
+ FEATURE(AARCH64_FRINT, frint, "frint", 0, AARCH64_HWCAP2_FRINT) \
+ FEATURE(AARCH64_SVEI8MM, svei8mm, "svei8mm", 0, AARCH64_HWCAP2_SVEI8MM) \
+ FEATURE(AARCH64_SVEF32MM, svef32mm, "svef32mm", 0, AARCH64_HWCAP2_SVEF32MM) \
+ FEATURE(AARCH64_SVEF64MM, svef64mm, "svef64mm", 0, AARCH64_HWCAP2_SVEF64MM) \
+ FEATURE(AARCH64_SVEBF16, svebf16, "svebf16", 0, AARCH64_HWCAP2_SVEBF16) \
+ FEATURE(AARCH64_I8MM, i8mm, "i8mm", 0, AARCH64_HWCAP2_I8MM) \
+ FEATURE(AARCH64_BF16, bf16, "bf16", 0, AARCH64_HWCAP2_BF16) \
+ FEATURE(AARCH64_DGH, dgh, "dgh", 0, AARCH64_HWCAP2_DGH) \
+ FEATURE(AARCH64_RNG, rng, "rng", 0, AARCH64_HWCAP2_RNG) \
+ FEATURE(AARCH64_BTI, bti, "bti", 0, AARCH64_HWCAP2_BTI)
#define DEFINE_TABLE_FEATURE_TYPE Aarch64Features
-#define DEFINE_TABLE_DB_FILENAME "cpuinfo_aarch64_db.inl"
#include "define_tables.h"
static bool HandleAarch64Line(const LineResult result,
diff --git a/src/cpuinfo_aarch64_db.inl b/src/cpuinfo_aarch64_db.inl
deleted file mode 100644
index b3200f4..0000000
--- a/src/cpuinfo_aarch64_db.inl
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2020 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.
-
-#if defined(FEATURE)
-// FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2)
-// clang-format off
-FEATURE(AARCH64_FP, fp, "fp", AARCH64_HWCAP_FP, 0)
-FEATURE(AARCH64_ASIMD, asimd, "asimd", AARCH64_HWCAP_ASIMD, 0)
-FEATURE(AARCH64_EVTSTRM, evtstrm, "evtstrm", AARCH64_HWCAP_EVTSTRM, 0)
-FEATURE(AARCH64_AES, aes, "aes", AARCH64_HWCAP_AES, 0)
-FEATURE(AARCH64_PMULL, pmull, "pmull", AARCH64_HWCAP_PMULL, 0)
-FEATURE(AARCH64_SHA1, sha1, "sha1", AARCH64_HWCAP_SHA1, 0)
-FEATURE(AARCH64_SHA2, sha2, "sha2", AARCH64_HWCAP_SHA2, 0)
-FEATURE(AARCH64_CRC32, crc32, "crc32", AARCH64_HWCAP_CRC32, 0)
-FEATURE(AARCH64_ATOMICS, atomics, "atomics", AARCH64_HWCAP_ATOMICS, 0)
-FEATURE(AARCH64_FPHP, fphp, "fphp", AARCH64_HWCAP_FPHP, 0)
-FEATURE(AARCH64_ASIMDHP, asimdhp, "asimdhp", AARCH64_HWCAP_ASIMDHP, 0)
-FEATURE(AARCH64_CPUID, cpuid, "cpuid", AARCH64_HWCAP_CPUID, 0)
-FEATURE(AARCH64_ASIMDRDM, asimdrdm, "asimdrdm", AARCH64_HWCAP_ASIMDRDM, 0)
-FEATURE(AARCH64_JSCVT, jscvt, "jscvt", AARCH64_HWCAP_JSCVT, 0)
-FEATURE(AARCH64_FCMA, fcma, "fcma", AARCH64_HWCAP_FCMA, 0)
-FEATURE(AARCH64_LRCPC, lrcpc, "lrcpc", AARCH64_HWCAP_LRCPC, 0)
-FEATURE(AARCH64_DCPOP, dcpop, "dcpop", AARCH64_HWCAP_DCPOP, 0)
-FEATURE(AARCH64_SHA3, sha3, "sha3", AARCH64_HWCAP_SHA3, 0)
-FEATURE(AARCH64_SM3, sm3, "sm3", AARCH64_HWCAP_SM3, 0)
-FEATURE(AARCH64_SM4, sm4, "sm4", AARCH64_HWCAP_SM4, 0)
-FEATURE(AARCH64_ASIMDDP, asimddp, "asimddp", AARCH64_HWCAP_ASIMDDP, 0)
-FEATURE(AARCH64_SHA512, sha512, "sha512", AARCH64_HWCAP_SHA512, 0)
-FEATURE(AARCH64_SVE, sve, "sve", AARCH64_HWCAP_SVE, 0)
-FEATURE(AARCH64_ASIMDFHM, asimdfhm, "asimdfhm", AARCH64_HWCAP_ASIMDFHM, 0)
-FEATURE(AARCH64_DIT, dit, "dit", AARCH64_HWCAP_DIT, 0)
-FEATURE(AARCH64_USCAT, uscat, "uscat", AARCH64_HWCAP_USCAT, 0)
-FEATURE(AARCH64_ILRCPC, ilrcpc, "ilrcpc", AARCH64_HWCAP_ILRCPC, 0)
-FEATURE(AARCH64_FLAGM, flagm, "flagm", AARCH64_HWCAP_FLAGM, 0)
-FEATURE(AARCH64_SSBS, ssbs, "ssbs", AARCH64_HWCAP_SSBS, 0)
-FEATURE(AARCH64_SB, sb, "sb", AARCH64_HWCAP_SB, 0)
-FEATURE(AARCH64_PACA, paca, "paca", AARCH64_HWCAP_PACA, 0)
-FEATURE(AARCH64_PACG, pacg, "pacg", AARCH64_HWCAP_PACG, 0)
-FEATURE(AARCH64_DCPODP, dcpodp, "dcpodp", 0, AARCH64_HWCAP2_DCPODP)
-FEATURE(AARCH64_SVE2, sve2, "sve2", 0, AARCH64_HWCAP2_SVE2)
-FEATURE(AARCH64_SVEAES, sveaes, "sveaes", 0, AARCH64_HWCAP2_SVEAES)
-FEATURE(AARCH64_SVEPMULL, svepmull, "svepmull", 0, AARCH64_HWCAP2_SVEPMULL)
-FEATURE(AARCH64_SVEBITPERM, svebitperm, "svebitperm", 0, AARCH64_HWCAP2_SVEBITPERM)
-FEATURE(AARCH64_SVESHA3, svesha3, "svesha3", 0, AARCH64_HWCAP2_SVESHA3)
-FEATURE(AARCH64_SVESM4, svesm4, "svesm4", 0, AARCH64_HWCAP2_SVESM4)
-FEATURE(AARCH64_FLAGM2, flagm2, "flagm2", 0, AARCH64_HWCAP2_FLAGM2)
-FEATURE(AARCH64_FRINT, frint, "frint", 0, AARCH64_HWCAP2_FRINT)
-FEATURE(AARCH64_SVEI8MM, svei8mm, "svei8mm", 0, AARCH64_HWCAP2_SVEI8MM)
-FEATURE(AARCH64_SVEF32MM, svef32mm, "svef32mm", 0, AARCH64_HWCAP2_SVEF32MM)
-FEATURE(AARCH64_SVEF64MM, svef64mm, "svef64mm", 0, AARCH64_HWCAP2_SVEF64MM)
-FEATURE(AARCH64_SVEBF16, svebf16, "svebf16", 0, AARCH64_HWCAP2_SVEBF16)
-FEATURE(AARCH64_I8MM, i8mm, "i8mm", 0, AARCH64_HWCAP2_I8MM)
-FEATURE(AARCH64_BF16, bf16, "bf16", 0, AARCH64_HWCAP2_BF16)
-FEATURE(AARCH64_DGH, dgh, "dgh", 0, AARCH64_HWCAP2_DGH)
-FEATURE(AARCH64_RNG, rng, "rng", 0, AARCH64_HWCAP2_RNG)
-FEATURE(AARCH64_BTI, bti, "bti", 0, AARCH64_HWCAP2_BTI)
-// clang-format on
-#else
-#error "The FEATURE macro must be defined"
-#endif // FEATURE
diff --git a/src/cpuinfo_arm.c b/src/cpuinfo_arm.c
index add38ce..0f216bf 100644
--- a/src/cpuinfo_arm.c
+++ b/src/cpuinfo_arm.c
@@ -25,8 +25,35 @@
// Generation of feature's getters/setters functions and kGetters, kSetters,
// kCpuInfoFlags and kHardwareCapabilities global tables.
+#define DEFINE_TABLE_FEATURES \
+ FEATURE(ARM_SWP, swp, "swp", ARM_HWCAP_SWP, 0) \
+ FEATURE(ARM_HALF, half, "half", ARM_HWCAP_HALF, 0) \
+ FEATURE(ARM_THUMB, thumb, "thumb", ARM_HWCAP_THUMB, 0) \
+ FEATURE(ARM_26BIT, _26bit, "26bit", ARM_HWCAP_26BIT, 0) \
+ FEATURE(ARM_FASTMULT, fastmult, "fastmult", ARM_HWCAP_FAST_MULT, 0) \
+ FEATURE(ARM_FPA, fpa, "fpa", ARM_HWCAP_FPA, 0) \
+ FEATURE(ARM_VFP, vfp, "vfp", ARM_HWCAP_VFP, 0) \
+ FEATURE(ARM_EDSP, edsp, "edsp", ARM_HWCAP_EDSP, 0) \
+ FEATURE(ARM_JAVA, java, "java", ARM_HWCAP_JAVA, 0) \
+ FEATURE(ARM_IWMMXT, iwmmxt, "iwmmxt", ARM_HWCAP_IWMMXT, 0) \
+ FEATURE(ARM_CRUNCH, crunch, "crunch", ARM_HWCAP_CRUNCH, 0) \
+ FEATURE(ARM_THUMBEE, thumbee, "thumbee", ARM_HWCAP_THUMBEE, 0) \
+ FEATURE(ARM_NEON, neon, "neon", ARM_HWCAP_NEON, 0) \
+ FEATURE(ARM_VFPV3, vfpv3, "vfpv3", ARM_HWCAP_VFPV3, 0) \
+ FEATURE(ARM_VFPV3D16, vfpv3d16, "vfpv3d16", ARM_HWCAP_VFPV3D16, 0) \
+ FEATURE(ARM_TLS, tls, "tls", ARM_HWCAP_TLS, 0) \
+ FEATURE(ARM_VFPV4, vfpv4, "vfpv4", ARM_HWCAP_VFPV4, 0) \
+ FEATURE(ARM_IDIVA, idiva, "idiva", ARM_HWCAP_IDIVA, 0) \
+ FEATURE(ARM_IDIVT, idivt, "idivt", ARM_HWCAP_IDIVT, 0) \
+ FEATURE(ARM_VFPD32, vfpd32, "vfpd32", ARM_HWCAP_VFPD32, 0) \
+ FEATURE(ARM_LPAE, lpae, "lpae", ARM_HWCAP_LPAE, 0) \
+ FEATURE(ARM_EVTSTRM, evtstrm, "evtstrm", ARM_HWCAP_EVTSTRM, 0) \
+ FEATURE(ARM_AES, aes, "aes", 0, ARM_HWCAP2_AES) \
+ FEATURE(ARM_PMULL, pmull, "pmull", 0, ARM_HWCAP2_PMULL) \
+ FEATURE(ARM_SHA1, sha1, "sha1", 0, ARM_HWCAP2_SHA1) \
+ FEATURE(ARM_SHA2, sha2, "sha2", 0, ARM_HWCAP2_SHA2) \
+ FEATURE(ARM_CRC32, crc32, "crc32", 0, ARM_HWCAP2_CRC32)
#define DEFINE_TABLE_FEATURE_TYPE ArmFeatures
-#define DEFINE_TABLE_DB_FILENAME "cpuinfo_arm_db.inl"
#include "define_tables.h"
typedef struct {
diff --git a/src/cpuinfo_arm_db.inl b/src/cpuinfo_arm_db.inl
deleted file mode 100644
index 3270389..0000000
--- a/src/cpuinfo_arm_db.inl
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2020 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.
-
-#if defined(FEATURE)
-// FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2)
-// clang-format off
-FEATURE(ARM_SWP, swp, "swp", ARM_HWCAP_SWP, 0)
-FEATURE(ARM_HALF, half, "half", ARM_HWCAP_HALF, 0)
-FEATURE(ARM_THUMB, thumb, "thumb", ARM_HWCAP_THUMB, 0)
-FEATURE(ARM_26BIT, _26bit, "26bit", ARM_HWCAP_26BIT, 0)
-FEATURE(ARM_FASTMULT, fastmult, "fastmult", ARM_HWCAP_FAST_MULT, 0)
-FEATURE(ARM_FPA, fpa, "fpa", ARM_HWCAP_FPA, 0)
-FEATURE(ARM_VFP, vfp, "vfp", ARM_HWCAP_VFP, 0)
-FEATURE(ARM_EDSP, edsp, "edsp", ARM_HWCAP_EDSP, 0)
-FEATURE(ARM_JAVA, java, "java", ARM_HWCAP_JAVA, 0)
-FEATURE(ARM_IWMMXT, iwmmxt, "iwmmxt", ARM_HWCAP_IWMMXT, 0)
-FEATURE(ARM_CRUNCH, crunch, "crunch", ARM_HWCAP_CRUNCH, 0)
-FEATURE(ARM_THUMBEE, thumbee, "thumbee", ARM_HWCAP_THUMBEE, 0)
-FEATURE(ARM_NEON, neon, "neon", ARM_HWCAP_NEON, 0)
-FEATURE(ARM_VFPV3, vfpv3, "vfpv3", ARM_HWCAP_VFPV3, 0)
-FEATURE(ARM_VFPV3D16, vfpv3d16, "vfpv3d16", ARM_HWCAP_VFPV3D16, 0)
-FEATURE(ARM_TLS, tls, "tls", ARM_HWCAP_TLS, 0)
-FEATURE(ARM_VFPV4, vfpv4, "vfpv4", ARM_HWCAP_VFPV4, 0)
-FEATURE(ARM_IDIVA, idiva, "idiva", ARM_HWCAP_IDIVA, 0)
-FEATURE(ARM_IDIVT, idivt, "idivt", ARM_HWCAP_IDIVT, 0)
-FEATURE(ARM_VFPD32, vfpd32, "vfpd32", ARM_HWCAP_VFPD32, 0)
-FEATURE(ARM_LPAE, lpae, "lpae", ARM_HWCAP_LPAE, 0)
-FEATURE(ARM_EVTSTRM, evtstrm, "evtstrm", ARM_HWCAP_EVTSTRM, 0)
-FEATURE(ARM_AES, aes, "aes", 0, ARM_HWCAP2_AES)
-FEATURE(ARM_PMULL, pmull, "pmull", 0, ARM_HWCAP2_PMULL)
-FEATURE(ARM_SHA1, sha1, "sha1", 0, ARM_HWCAP2_SHA1)
-FEATURE(ARM_SHA2, sha2, "sha2", 0, ARM_HWCAP2_SHA2)
-FEATURE(ARM_CRC32, crc32, "crc32", 0, ARM_HWCAP2_CRC32)
-// clang-format on
-#else
-#error "The FEATURE macro must be defined"
-#endif // FEATURE
diff --git a/src/cpuinfo_mips.c b/src/cpuinfo_mips.c
index 8e71a31..83e959f 100644
--- a/src/cpuinfo_mips.c
+++ b/src/cpuinfo_mips.c
@@ -23,8 +23,11 @@
// Generation of feature's getters/setters functions and kGetters, kSetters,
// kCpuInfoFlags and kHardwareCapabilities global tables.
+#define DEFINE_TABLE_FEATURES \
+ FEATURE(MIPS_MSA, msa, "msa", MIPS_HWCAP_MSA, 0) \
+ FEATURE(MIPS_EVA, eva, "eva", 0, 0) \
+ FEATURE(MIPS_R6, r6, "r6", MIPS_HWCAP_R6, 0)
#define DEFINE_TABLE_FEATURE_TYPE MipsFeatures
-#define DEFINE_TABLE_DB_FILENAME "cpuinfo_mips_db.inl"
#include "define_tables.h"
static bool HandleMipsLine(const LineResult result,
diff --git a/src/cpuinfo_mips_db.inl b/src/cpuinfo_mips_db.inl
deleted file mode 100644
index 61edb2b..0000000
--- a/src/cpuinfo_mips_db.inl
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2020 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.
-
-#if defined(FEATURE)
-// FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2)
-// clang-format off
-FEATURE(MIPS_MSA, msa, "msa", MIPS_HWCAP_MSA, 0)
-FEATURE(MIPS_EVA, eva, "eva", 0, 0)
-FEATURE(MIPS_R6, r6, "r6", MIPS_HWCAP_R6, 0)
-// clang-format on
-#else
-#error "The FEATURE macro must be defined"
-#endif // FEATURE
diff --git a/src/cpuinfo_ppc.c b/src/cpuinfo_ppc.c
index 3be2935..24401f9 100644
--- a/src/cpuinfo_ppc.c
+++ b/src/cpuinfo_ppc.c
@@ -25,8 +25,55 @@
// Generation of feature's getters/setters functions and kGetters, kSetters,
// kCpuInfoFlags and kHardwareCapabilities global tables.
+#define DEFINE_TABLE_FEATURES \
+ FEATURE(PPC_32, ppc32, "ppc32", PPC_FEATURE_32, 0) \
+ FEATURE(PPC_64, ppc64, "ppc64", PPC_FEATURE_64, 0) \
+ FEATURE(PPC_601_INSTR, ppc601, "ppc601", PPC_FEATURE_601_INSTR, 0) \
+ FEATURE(PPC_HAS_ALTIVEC, altivec, "altivec", PPC_FEATURE_HAS_ALTIVEC, 0) \
+ FEATURE(PPC_HAS_FPU, fpu, "fpu", PPC_FEATURE_HAS_FPU, 0) \
+ FEATURE(PPC_HAS_MMU, mmu, "mmu", PPC_FEATURE_HAS_MMU, 0) \
+ FEATURE(PPC_HAS_4xxMAC, mac_4xx, "4xxmac", PPC_FEATURE_HAS_4xxMAC, 0) \
+ FEATURE(PPC_UNIFIED_CACHE, unifiedcache, "ucache", \
+ PPC_FEATURE_UNIFIED_CACHE, 0) \
+ FEATURE(PPC_HAS_SPE, spe, "spe", PPC_FEATURE_HAS_SPE, 0) \
+ FEATURE(PPC_HAS_EFP_SINGLE, efpsingle, "efpsingle", \
+ PPC_FEATURE_HAS_EFP_SINGLE, 0) \
+ FEATURE(PPC_HAS_EFP_DOUBLE, efpdouble, "efpdouble", \
+ PPC_FEATURE_HAS_EFP_DOUBLE, 0) \
+ FEATURE(PPC_NO_TB, no_tb, "notb", PPC_FEATURE_NO_TB, 0) \
+ FEATURE(PPC_POWER4, power4, "power4", PPC_FEATURE_POWER4, 0) \
+ FEATURE(PPC_POWER5, power5, "power5", PPC_FEATURE_POWER5, 0) \
+ FEATURE(PPC_POWER5_PLUS, power5plus, "power5+", PPC_FEATURE_POWER5_PLUS, 0) \
+ FEATURE(PPC_CELL, cell, "cellbe", PPC_FEATURE_CELL, 0) \
+ FEATURE(PPC_BOOKE, booke, "booke", PPC_FEATURE_BOOKE, 0) \
+ FEATURE(PPC_SMT, smt, "smt", PPC_FEATURE_SMT, 0) \
+ FEATURE(PPC_ICACHE_SNOOP, icachesnoop, "ic_snoop", PPC_FEATURE_ICACHE_SNOOP, \
+ 0) \
+ FEATURE(PPC_ARCH_2_05, arch205, "arch_2_05", PPC_FEATURE_ARCH_2_05, 0) \
+ FEATURE(PPC_PA6T, pa6t, "pa6t", PPC_FEATURE_PA6T, 0) \
+ FEATURE(PPC_HAS_DFP, dfp, "dfp", PPC_FEATURE_HAS_DFP, 0) \
+ FEATURE(PPC_POWER6_EXT, power6ext, "power6x", PPC_FEATURE_POWER6_EXT, 0) \
+ FEATURE(PPC_ARCH_2_06, arch206, "arch_2_06", PPC_FEATURE_ARCH_2_06, 0) \
+ FEATURE(PPC_HAS_VSX, vsx, "vsx", PPC_FEATURE_HAS_VSX, 0) \
+ FEATURE(PPC_PSERIES_PERFMON_COMPAT, pseries_perfmon_compat, "archpmu", \
+ PPC_FEATURE_PSERIES_PERFMON_COMPAT, 0) \
+ FEATURE(PPC_TRUE_LE, truele, "true_le", PPC_FEATURE_TRUE_LE, 0) \
+ FEATURE(PPC_PPC_LE, ppcle, "ppcle", PPC_FEATURE_PPC_LE, 0) \
+ FEATURE(PPC_ARCH_2_07, arch207, "arch_2_07", 0, PPC_FEATURE2_ARCH_2_07) \
+ FEATURE(PPC_HTM, htm, "htm", 0, PPC_FEATURE2_HTM) \
+ FEATURE(PPC_DSCR, dscr, "dscr", 0, PPC_FEATURE2_DSCR) \
+ FEATURE(PPC_EBB, ebb, "ebb", 0, PPC_FEATURE2_EBB) \
+ FEATURE(PPC_ISEL, isel, "isel", 0, PPC_FEATURE2_ISEL) \
+ FEATURE(PPC_TAR, tar, "tar", 0, PPC_FEATURE2_TAR) \
+ FEATURE(PPC_VEC_CRYPTO, vcrypto, "vcrypto", 0, PPC_FEATURE2_VEC_CRYPTO) \
+ FEATURE(PPC_HTM_NOSC, htm_nosc, "htm-nosc", 0, PPC_FEATURE2_HTM_NOSC) \
+ FEATURE(PPC_ARCH_3_00, arch300, "arch_3_00", 0, PPC_FEATURE2_ARCH_3_00) \
+ FEATURE(PPC_HAS_IEEE128, ieee128, "ieee128", 0, PPC_FEATURE2_HAS_IEEE128) \
+ FEATURE(PPC_DARN, darn, "darn", 0, PPC_FEATURE2_DARN) \
+ FEATURE(PPC_SCV, scv, "scv", 0, PPC_FEATURE2_SCV) \
+ FEATURE(PPC_HTM_NO_SUSPEND, htm_no_suspend, "htm-no-suspend", 0, \
+ PPC_FEATURE2_HTM_NO_SUSPEND)
#define DEFINE_TABLE_FEATURE_TYPE PPCFeatures
-#define DEFINE_TABLE_DB_FILENAME "cpuinfo_ppc_db.inl"
#include "define_tables.h"
static bool HandlePPCLine(const LineResult result,
diff --git a/src/cpuinfo_ppc_db.inl b/src/cpuinfo_ppc_db.inl
deleted file mode 100644
index eb4aaf4..0000000
--- a/src/cpuinfo_ppc_db.inl
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 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.
-
-#if defined(FEATURE)
-// FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2)
-// clang-format off
-FEATURE(PPC_32, ppc32, "ppc32", PPC_FEATURE_32, 0)
-FEATURE(PPC_64, ppc64, "ppc64", PPC_FEATURE_64, 0)
-FEATURE(PPC_601_INSTR, ppc601, "ppc601", PPC_FEATURE_601_INSTR, 0)
-FEATURE(PPC_HAS_ALTIVEC, altivec, "altivec", PPC_FEATURE_HAS_ALTIVEC, 0)
-FEATURE(PPC_HAS_FPU, fpu, "fpu", PPC_FEATURE_HAS_FPU, 0)
-FEATURE(PPC_HAS_MMU, mmu, "mmu", PPC_FEATURE_HAS_MMU, 0)
-FEATURE(PPC_HAS_4xxMAC, mac_4xx, "4xxmac", PPC_FEATURE_HAS_4xxMAC, 0)
-FEATURE(PPC_UNIFIED_CACHE, unifiedcache, "ucache", PPC_FEATURE_UNIFIED_CACHE, 0)
-FEATURE(PPC_HAS_SPE, spe, "spe", PPC_FEATURE_HAS_SPE, 0)
-FEATURE(PPC_HAS_EFP_SINGLE, efpsingle, "efpsingle", PPC_FEATURE_HAS_EFP_SINGLE, 0)
-FEATURE(PPC_HAS_EFP_DOUBLE, efpdouble, "efpdouble", PPC_FEATURE_HAS_EFP_DOUBLE, 0)
-FEATURE(PPC_NO_TB, no_tb, "notb", PPC_FEATURE_NO_TB, 0)
-FEATURE(PPC_POWER4, power4, "power4", PPC_FEATURE_POWER4, 0)
-FEATURE(PPC_POWER5, power5, "power5", PPC_FEATURE_POWER5, 0)
-FEATURE(PPC_POWER5_PLUS, power5plus, "power5+", PPC_FEATURE_POWER5_PLUS, 0)
-FEATURE(PPC_CELL, cell, "cellbe", PPC_FEATURE_CELL, 0)
-FEATURE(PPC_BOOKE, booke, "booke", PPC_FEATURE_BOOKE, 0)
-FEATURE(PPC_SMT, smt, "smt", PPC_FEATURE_SMT, 0)
-FEATURE(PPC_ICACHE_SNOOP, icachesnoop, "ic_snoop", PPC_FEATURE_ICACHE_SNOOP, 0)
-FEATURE(PPC_ARCH_2_05, arch205, "arch_2_05", PPC_FEATURE_ARCH_2_05, 0)
-FEATURE(PPC_PA6T, pa6t, "pa6t", PPC_FEATURE_PA6T, 0)
-FEATURE(PPC_HAS_DFP, dfp, "dfp", PPC_FEATURE_HAS_DFP, 0)
-FEATURE(PPC_POWER6_EXT, power6ext, "power6x", PPC_FEATURE_POWER6_EXT, 0)
-FEATURE(PPC_ARCH_2_06, arch206, "arch_2_06", PPC_FEATURE_ARCH_2_06, 0)
-FEATURE(PPC_HAS_VSX, vsx, "vsx", PPC_FEATURE_HAS_VSX, 0)
-FEATURE(PPC_PSERIES_PERFMON_COMPAT, pseries_perfmon_compat, "archpmu", PPC_FEATURE_PSERIES_PERFMON_COMPAT, 0)
-FEATURE(PPC_TRUE_LE, truele, "true_le", PPC_FEATURE_TRUE_LE, 0)
-FEATURE(PPC_PPC_LE, ppcle, "ppcle", PPC_FEATURE_PPC_LE, 0)
-FEATURE(PPC_ARCH_2_07, arch207, "arch_2_07", 0, PPC_FEATURE2_ARCH_2_07)
-FEATURE(PPC_HTM, htm, "htm", 0, PPC_FEATURE2_HTM)
-FEATURE(PPC_DSCR, dscr, "dscr", 0, PPC_FEATURE2_DSCR)
-FEATURE(PPC_EBB, ebb, "ebb", 0, PPC_FEATURE2_EBB)
-FEATURE(PPC_ISEL, isel, "isel", 0, PPC_FEATURE2_ISEL)
-FEATURE(PPC_TAR, tar, "tar", 0, PPC_FEATURE2_TAR)
-FEATURE(PPC_VEC_CRYPTO, vcrypto, "vcrypto", 0, PPC_FEATURE2_VEC_CRYPTO)
-FEATURE(PPC_HTM_NOSC, htm_nosc, "htm-nosc", 0, PPC_FEATURE2_HTM_NOSC)
-FEATURE(PPC_ARCH_3_00, arch300, "arch_3_00", 0, PPC_FEATURE2_ARCH_3_00)
-FEATURE(PPC_HAS_IEEE128, ieee128, "ieee128", 0, PPC_FEATURE2_HAS_IEEE128)
-FEATURE(PPC_DARN, darn, "darn", 0, PPC_FEATURE2_DARN)
-FEATURE(PPC_SCV, scv, "scv", 0, PPC_FEATURE2_SCV)
-FEATURE(PPC_HTM_NO_SUSPEND, htm_no_suspend, "htm-no-suspend", 0, PPC_FEATURE2_HTM_NO_SUSPEND)
-// clang-format on
-#else
-#error "The FEATURE macro must be defined"
-#endif // FEATURE
diff --git a/src/cpuinfo_x86.c b/src/cpuinfo_x86.c
index 09c707a..378ed05 100644
--- a/src/cpuinfo_x86.c
+++ b/src/cpuinfo_x86.c
@@ -27,8 +27,69 @@
// Generation of feature's getters/setters functions and kGetters, kSetters,
// kCpuInfoFlags global tables.
+#define DEFINE_TABLE_FEATURES \
+ FEATURE(X86_FPU, fpu, "fpu", 0, 0) \
+ FEATURE(X86_TSC, tsc, "tsc", 0, 0) \
+ FEATURE(X86_CX8, cx8, "cx8", 0, 0) \
+ FEATURE(X86_CLFSH, clfsh, "clfsh", 0, 0) \
+ FEATURE(X86_MMX, mmx, "mmx", 0, 0) \
+ FEATURE(X86_AES, aes, "aes", 0, 0) \
+ FEATURE(X86_ERMS, erms, "erms", 0, 0) \
+ FEATURE(X86_F16C, f16c, "f16c", 0, 0) \
+ FEATURE(X86_FMA4, fma4, "fma4", 0, 0) \
+ FEATURE(X86_FMA3, fma3, "fma3", 0, 0) \
+ FEATURE(X86_VAES, vaes, "vaes", 0, 0) \
+ FEATURE(X86_VPCLMULQDQ, vpclmulqdq, "vpclmulqdq", 0, 0) \
+ FEATURE(X86_BMI1, bmi1, "bmi1", 0, 0) \
+ FEATURE(X86_HLE, hle, "hle", 0, 0) \
+ FEATURE(X86_BMI2, bmi2, "bmi2", 0, 0) \
+ FEATURE(X86_RTM, rtm, "rtm", 0, 0) \
+ FEATURE(X86_RDSEED, rdseed, "rdseed", 0, 0) \
+ FEATURE(X86_CLFLUSHOPT, clflushopt, "clflushopt", 0, 0) \
+ FEATURE(X86_CLWB, clwb, "clwb", 0, 0) \
+ FEATURE(X86_SSE, sse, "sse", 0, 0) \
+ FEATURE(X86_SSE2, sse2, "sse2", 0, 0) \
+ FEATURE(X86_SSE3, sse3, "sse3", 0, 0) \
+ FEATURE(X86_SSSE3, ssse3, "ssse3", 0, 0) \
+ FEATURE(X86_SSE4_1, sse4_1, "sse4_1", 0, 0) \
+ FEATURE(X86_SSE4_2, sse4_2, "sse4_2", 0, 0) \
+ FEATURE(X86_SSE4A, sse4a, "sse4a", 0, 0) \
+ FEATURE(X86_AVX, avx, "avx", 0, 0) \
+ FEATURE(X86_AVX2, avx2, "avx2", 0, 0) \
+ FEATURE(X86_AVX512F, avx512f, "avx512f", 0, 0) \
+ FEATURE(X86_AVX512CD, avx512cd, "avx512cd", 0, 0) \
+ FEATURE(X86_AVX512ER, avx512er, "avx512er", 0, 0) \
+ FEATURE(X86_AVX512PF, avx512pf, "avx512pf", 0, 0) \
+ FEATURE(X86_AVX512BW, avx512bw, "avx512bw", 0, 0) \
+ FEATURE(X86_AVX512DQ, avx512dq, "avx512dq", 0, 0) \
+ FEATURE(X86_AVX512VL, avx512vl, "avx512vl", 0, 0) \
+ FEATURE(X86_AVX512IFMA, avx512ifma, "avx512ifma", 0, 0) \
+ FEATURE(X86_AVX512VBMI, avx512vbmi, "avx512vbmi", 0, 0) \
+ FEATURE(X86_AVX512VBMI2, avx512vbmi2, "avx512vbmi2", 0, 0) \
+ FEATURE(X86_AVX512VNNI, avx512vnni, "avx512vnni", 0, 0) \
+ FEATURE(X86_AVX512BITALG, avx512bitalg, "avx512bitalg", 0, 0) \
+ FEATURE(X86_AVX512VPOPCNTDQ, avx512vpopcntdq, "avx512vpopcntdq", 0, 0) \
+ FEATURE(X86_AVX512_4VNNIW, avx512_4vnniw, "avx512_4vnniw", 0, 0) \
+ FEATURE(X86_AVX512_4VBMI2, avx512_4vbmi2, "avx512_4vbmi2", 0, 0) \
+ FEATURE(X86_AVX512_SECOND_FMA, avx512_second_fma, "avx512_second_fma", 0, 0) \
+ FEATURE(X86_AVX512_4FMAPS, avx512_4fmaps, "avx512_4fmaps", 0, 0) \
+ FEATURE(X86_AVX512_BF16, avx512_bf16, "avx512_bf16", 0, 0) \
+ FEATURE(X86_AVX512_VP2INTERSECT, avx512_vp2intersect, "avx512_vp2intersect", \
+ 0, 0) \
+ FEATURE(X86_AMX_BF16, amx_bf16, "amx_bf16", 0, 0) \
+ FEATURE(X86_AMX_TILE, amx_tile, "amx_tile", 0, 0) \
+ FEATURE(X86_AMX_INT8, amx_int8, "amx_int8", 0, 0) \
+ FEATURE(X86_PCLMULQDQ, pclmulqdq, "pclmulqdq", 0, 0) \
+ FEATURE(X86_SMX, smx, "smx", 0, 0) \
+ FEATURE(X86_SGX, sgx, "sgx", 0, 0) \
+ FEATURE(X86_CX16, cx16, "cx16", 0, 0) \
+ FEATURE(X86_SHA, sha, "sha", 0, 0) \
+ FEATURE(X86_POPCNT, popcnt, "popcnt", 0, 0) \
+ FEATURE(X86_MOVBE, movbe, "movbe", 0, 0) \
+ FEATURE(X86_RDRND, rdrnd, "rdrnd", 0, 0) \
+ FEATURE(X86_DCA, dca, "dca", 0, 0) \
+ FEATURE(X86_SS, ss, "ss", 0, 0)
#define DEFINE_TABLE_FEATURE_TYPE X86Features
-#define DEFINE_TABLE_DB_FILENAME "cpuinfo_x86_db.inl"
#define DEFINE_TABLE_DONT_GENERATE_HWCAPS
#include "define_tables.h"
diff --git a/src/cpuinfo_x86_db.inl b/src/cpuinfo_x86_db.inl
deleted file mode 100644
index 3ea280d..0000000
--- a/src/cpuinfo_x86_db.inl
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2020 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.
-
-#if defined(FEATURE)
-// FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2)
-// clang-format off
-FEATURE(X86_FPU, fpu, "fpu", 0, 0)
-FEATURE(X86_TSC, tsc, "tsc", 0, 0)
-FEATURE(X86_CX8, cx8, "cx8", 0, 0)
-FEATURE(X86_CLFSH, clfsh, "clfsh", 0, 0)
-FEATURE(X86_MMX, mmx, "mmx", 0, 0)
-FEATURE(X86_AES, aes, "aes", 0, 0)
-FEATURE(X86_ERMS, erms, "erms", 0, 0)
-FEATURE(X86_F16C, f16c, "f16c", 0, 0)
-FEATURE(X86_FMA4, fma4, "fma4", 0, 0)
-FEATURE(X86_FMA3, fma3, "fma3", 0, 0)
-FEATURE(X86_VAES, vaes, "vaes", 0, 0)
-FEATURE(X86_VPCLMULQDQ, vpclmulqdq, "vpclmulqdq", 0, 0)
-FEATURE(X86_BMI1, bmi1, "bmi1", 0, 0)
-FEATURE(X86_HLE, hle, "hle", 0, 0)
-FEATURE(X86_BMI2, bmi2, "bmi2", 0, 0)
-FEATURE(X86_RTM, rtm, "rtm", 0, 0)
-FEATURE(X86_RDSEED, rdseed, "rdseed", 0, 0)
-FEATURE(X86_CLFLUSHOPT, clflushopt, "clflushopt", 0, 0)
-FEATURE(X86_CLWB, clwb, "clwb", 0, 0)
-FEATURE(X86_SSE, sse, "sse", 0, 0)
-FEATURE(X86_SSE2, sse2, "sse2", 0, 0)
-FEATURE(X86_SSE3, sse3, "sse3", 0, 0)
-FEATURE(X86_SSSE3, ssse3, "ssse3", 0, 0)
-FEATURE(X86_SSE4_1, sse4_1, "sse4_1", 0, 0)
-FEATURE(X86_SSE4_2, sse4_2, "sse4_2", 0, 0)
-FEATURE(X86_SSE4A, sse4a, "sse4a", 0, 0)
-FEATURE(X86_AVX, avx, "avx", 0, 0)
-FEATURE(X86_AVX2, avx2, "avx2", 0, 0)
-FEATURE(X86_AVX512F, avx512f, "avx512f", 0, 0)
-FEATURE(X86_AVX512CD, avx512cd, "avx512cd", 0, 0)
-FEATURE(X86_AVX512ER, avx512er, "avx512er", 0, 0)
-FEATURE(X86_AVX512PF, avx512pf, "avx512pf", 0, 0)
-FEATURE(X86_AVX512BW, avx512bw, "avx512bw", 0, 0)
-FEATURE(X86_AVX512DQ, avx512dq, "avx512dq", 0, 0)
-FEATURE(X86_AVX512VL, avx512vl, "avx512vl", 0, 0)
-FEATURE(X86_AVX512IFMA, avx512ifma, "avx512ifma", 0, 0)
-FEATURE(X86_AVX512VBMI, avx512vbmi, "avx512vbmi", 0, 0)
-FEATURE(X86_AVX512VBMI2, avx512vbmi2, "avx512vbmi2", 0, 0)
-FEATURE(X86_AVX512VNNI, avx512vnni, "avx512vnni", 0, 0)
-FEATURE(X86_AVX512BITALG, avx512bitalg, "avx512bitalg", 0, 0)
-FEATURE(X86_AVX512VPOPCNTDQ, avx512vpopcntdq, "avx512vpopcntdq", 0, 0)
-FEATURE(X86_AVX512_4VNNIW, avx512_4vnniw, "avx512_4vnniw", 0, 0)
-FEATURE(X86_AVX512_4VBMI2, avx512_4vbmi2, "avx512_4vbmi2", 0, 0)
-FEATURE(X86_AVX512_SECOND_FMA, avx512_second_fma, "avx512_second_fma", 0, 0)
-FEATURE(X86_AVX512_4FMAPS, avx512_4fmaps, "avx512_4fmaps", 0, 0)
-FEATURE(X86_AVX512_BF16, avx512_bf16, "avx512_bf16", 0, 0)
-FEATURE(X86_AVX512_VP2INTERSECT, avx512_vp2intersect, "avx512_vp2intersect", 0, 0)
-FEATURE(X86_AMX_BF16, amx_bf16, "amx_bf16", 0, 0)
-FEATURE(X86_AMX_TILE, amx_tile, "amx_tile", 0, 0)
-FEATURE(X86_AMX_INT8, amx_int8, "amx_int8", 0, 0)
-FEATURE(X86_PCLMULQDQ, pclmulqdq, "pclmulqdq", 0, 0)
-FEATURE(X86_SMX, smx, "smx", 0, 0)
-FEATURE(X86_SGX, sgx, "sgx", 0, 0)
-FEATURE(X86_CX16, cx16, "cx16", 0, 0)
-FEATURE(X86_SHA, sha, "sha", 0, 0)
-FEATURE(X86_POPCNT, popcnt, "popcnt", 0, 0)
-FEATURE(X86_MOVBE, movbe, "movbe", 0, 0)
-FEATURE(X86_RDRND, rdrnd, "rdrnd", 0, 0)
-FEATURE(X86_DCA, dca, "dca", 0, 0)
-FEATURE(X86_SS, ss, "ss", 0, 0)
-// clang-format on
-#else
-#error "The FEATURE macro must be defined"
-#endif // FEATURE
diff --git a/src/define_tables.h b/src/define_tables.h
index cb5ff37..dc1485c 100644
--- a/src/define_tables.h
+++ b/src/define_tables.h
@@ -15,7 +15,7 @@
// The following preprocessor constants must be defined before including this
// file:
// - DEFINE_TABLE_FEATURE_TYPE, the underlying type (e.g. X86Features)
-// - DEFINE_TABLE_DB_FILENAME, the db file (e.g. "cpuinfo_x86_db.inl")
+// - DEFINE_TABLE_FEATURES, the list of FEATURE macros to be inserted.
// This file is to be included once per `cpuinfo_XXX.c` in order to construct
// feature getters and setters functions as well as several enum indexed tables
@@ -33,17 +33,14 @@
#define SRC_DEFINE_TABLES_H_
#define FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2) [ENUM] = CPUINFO_FLAG,
-static const char* kCpuInfoFlags[] = {
-#include DEFINE_TABLE_DB_FILENAME
-};
+static const char* kCpuInfoFlags[] = {DEFINE_TABLE_FEATURES};
#undef FEATURE
#ifndef DEFINE_TABLE_DONT_GENERATE_HWCAPS
#define FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2) \
[ENUM] = (HardwareCapabilities){HWCAP, HWCAP2},
static const HardwareCapabilities kHardwareCapabilities[] = {
-#include DEFINE_TABLE_DB_FILENAME
-};
+ DEFINE_TABLE_FEATURES};
#undef FEATURE
#endif // DEFINE_TABLE_DONT_GENERATE_HWCAPS
@@ -54,19 +51,17 @@ static const HardwareCapabilities kHardwareCapabilities[] = {
static int get_##ENUM(const DEFINE_TABLE_FEATURE_TYPE* features) { \
return features->NAME; \
}
-#include DEFINE_TABLE_DB_FILENAME
+DEFINE_TABLE_FEATURES
#undef FEATURE
#define FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2) [ENUM] = set_##ENUM,
-static void (*const kSetters[])(DEFINE_TABLE_FEATURE_TYPE*, bool) = {
-#include DEFINE_TABLE_DB_FILENAME
-};
+static void (*const kSetters[])(DEFINE_TABLE_FEATURE_TYPE*,
+ bool) = {DEFINE_TABLE_FEATURES};
#undef FEATURE
#define FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2) [ENUM] = get_##ENUM,
static int (*const kGetters[])(const DEFINE_TABLE_FEATURE_TYPE*) = {
-#include DEFINE_TABLE_DB_FILENAME
-};
+ DEFINE_TABLE_FEATURES};
#undef FEATURE
#endif // SRC_DEFINE_TABLES_H_