common/xbyak_api: Make BuildRegSet() constexpr
This allows us to eliminate any static constructors that would have been emitted due to the function not being constexpr.
This commit is contained in:
parent
40050c1188
commit
f6a049337e
@ -37,12 +37,12 @@ constexpr Xbyak::Reg IndexToReg(size_t reg_index) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::bitset<32> BuildRegSet(std::initializer_list<Xbyak::Reg> regs) {
|
constexpr std::bitset<32> BuildRegSet(std::initializer_list<Xbyak::Reg> regs) {
|
||||||
std::bitset<32> bits;
|
size_t bits = 0;
|
||||||
for (const Xbyak::Reg& reg : regs) {
|
for (const Xbyak::Reg& reg : regs) {
|
||||||
bits[RegToIndex(reg)] = true;
|
bits |= size_t{1} << RegToIndex(reg);
|
||||||
}
|
}
|
||||||
return bits;
|
return {bits};
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr inline std::bitset<32> ABI_ALL_GPRS(0x0000FFFF);
|
constexpr inline std::bitset<32> ABI_ALL_GPRS(0x0000FFFF);
|
||||||
@ -57,7 +57,7 @@ constexpr inline Xbyak::Reg ABI_PARAM2 = Xbyak::util::rdx;
|
|||||||
constexpr inline Xbyak::Reg ABI_PARAM3 = Xbyak::util::r8;
|
constexpr inline Xbyak::Reg ABI_PARAM3 = Xbyak::util::r8;
|
||||||
constexpr inline Xbyak::Reg ABI_PARAM4 = Xbyak::util::r9;
|
constexpr inline Xbyak::Reg ABI_PARAM4 = Xbyak::util::r9;
|
||||||
|
|
||||||
const std::bitset<32> ABI_ALL_CALLER_SAVED = BuildRegSet({
|
constexpr inline std::bitset<32> ABI_ALL_CALLER_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rcx,
|
Xbyak::util::rcx,
|
||||||
Xbyak::util::rdx,
|
Xbyak::util::rdx,
|
||||||
@ -74,7 +74,7 @@ const std::bitset<32> ABI_ALL_CALLER_SAVED = BuildRegSet({
|
|||||||
Xbyak::util::xmm5,
|
Xbyak::util::xmm5,
|
||||||
});
|
});
|
||||||
|
|
||||||
const std::bitset<32> ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
constexpr inline std::bitset<32> ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rbx,
|
Xbyak::util::rbx,
|
||||||
Xbyak::util::rsi,
|
Xbyak::util::rsi,
|
||||||
@ -108,7 +108,7 @@ constexpr inline Xbyak::Reg ABI_PARAM2 = Xbyak::util::rsi;
|
|||||||
constexpr inline Xbyak::Reg ABI_PARAM3 = Xbyak::util::rdx;
|
constexpr inline Xbyak::Reg ABI_PARAM3 = Xbyak::util::rdx;
|
||||||
constexpr inline Xbyak::Reg ABI_PARAM4 = Xbyak::util::rcx;
|
constexpr inline Xbyak::Reg ABI_PARAM4 = Xbyak::util::rcx;
|
||||||
|
|
||||||
const std::bitset<32> ABI_ALL_CALLER_SAVED = BuildRegSet({
|
constexpr inline std::bitset<32> ABI_ALL_CALLER_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rcx,
|
Xbyak::util::rcx,
|
||||||
Xbyak::util::rdx,
|
Xbyak::util::rdx,
|
||||||
@ -137,7 +137,7 @@ const std::bitset<32> ABI_ALL_CALLER_SAVED = BuildRegSet({
|
|||||||
Xbyak::util::xmm15,
|
Xbyak::util::xmm15,
|
||||||
});
|
});
|
||||||
|
|
||||||
const std::bitset<32> ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
constexpr inline std::bitset<32> ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rbx,
|
Xbyak::util::rbx,
|
||||||
Xbyak::util::rbp,
|
Xbyak::util::rbp,
|
||||||
|
@ -29,7 +29,7 @@ constexpr Xbyak::Reg64 PARAMETERS = Xbyak::util::r12;
|
|||||||
constexpr Xbyak::Reg32 METHOD_ADDRESS = Xbyak::util::r14d;
|
constexpr Xbyak::Reg32 METHOD_ADDRESS = Xbyak::util::r14d;
|
||||||
constexpr Xbyak::Reg64 BRANCH_HOLDER = Xbyak::util::r15;
|
constexpr Xbyak::Reg64 BRANCH_HOLDER = Xbyak::util::r15;
|
||||||
|
|
||||||
const std::bitset<32> PERSISTENT_REGISTERS = Common::X64::BuildRegSet({
|
constexpr std::bitset<32> PERSISTENT_REGISTERS = Common::X64::BuildRegSet({
|
||||||
STATE,
|
STATE,
|
||||||
RESULT,
|
RESULT,
|
||||||
PARAMETERS,
|
PARAMETERS,
|
||||||
|
Loading…
Reference in New Issue
Block a user