Lines Matching refs:Arch

34 enum class Arch {
41 template <Arch arch>
45 struct ArchTraits<Arch::AARCH32> {
67 struct ArchTraits<Arch::AARCH64> {
89 struct ArchTraits<Arch::X86> {
112 struct ArchTraits<Arch::X86_64> {
134 struct ArchTraits<Arch::NONE> {
152 constexpr std::remove_const_t<decltype(ArchTraits<Arch::AARCH64>::property)> func_name(Arch arch) \
154 ASSERT(arch != Arch::NONE); \
155 if (arch == Arch::X86) { \
156 return ArchTraits<Arch::X86>::property; \
158 if (arch == Arch::X86_64) { \
159 return ArchTraits<Arch::X86_64>::property; \
161 if (arch == Arch::AARCH32) { \
162 return ArchTraits<Arch::AARCH32>::property; \
164 if (arch == Arch::AARCH64) { \
165 return ArchTraits<Arch::AARCH64>::property; \
184 constexpr const char *GetArchString(Arch arch)
189 case Arch::v: \
198 inline constexpr RegMask GetCallerRegsMask(Arch arch, bool is_fp)
201 case Arch::AARCH32:
202 return is_fp ? ArchTraits<Arch::AARCH32>::CALLER_FP_REG_MASK : ArchTraits<Arch::AARCH32>::CALLER_REG_MASK;
203 case Arch::AARCH64:
204 return is_fp ? ArchTraits<Arch::AARCH64>::CALLER_FP_REG_MASK : ArchTraits<Arch::AARCH64>::CALLER_REG_MASK;
205 case Arch::X86:
206 return is_fp ? ArchTraits<Arch::X86>::CALLER_FP_REG_MASK : ArchTraits<Arch::X86>::CALLER_REG_MASK;
207 case Arch::X86_64:
208 return is_fp ? ArchTraits<Arch::X86_64>::CALLER_FP_REG_MASK : ArchTraits<Arch::X86_64>::CALLER_REG_MASK;
214 inline constexpr RegMask GetCalleeRegsMask(Arch arch, bool is_fp)
217 case Arch::AARCH32:
218 return is_fp ? ArchTraits<Arch::AARCH32>::CALLEE_FP_REG_MASK : ArchTraits<Arch::AARCH32>::CALLEE_REG_MASK;
219 case Arch::AARCH64:
220 return is_fp ? ArchTraits<Arch::AARCH64>::CALLEE_FP_REG_MASK : ArchTraits<Arch::AARCH64>::CALLEE_REG_MASK;
221 case Arch::X86:
222 return is_fp ? ArchTraits<Arch::X86>::CALLEE_FP_REG_MASK : ArchTraits<Arch::X86>::CALLEE_REG_MASK;
223 case Arch::X86_64:
224 return is_fp ? ArchTraits<Arch::X86_64>::CALLEE_FP_REG_MASK : ArchTraits<Arch::X86_64>::CALLEE_REG_MASK;
230 inline constexpr size_t GetFirstCalleeReg(Arch arch, bool is_fp)
232 if (arch == Arch::X86_64 && is_fp) {
241 inline constexpr size_t GetLastCalleeReg(Arch arch, bool is_fp)
243 if (arch == Arch::X86_64 && is_fp) {
250 inline constexpr size_t GetCalleeRegsCount(Arch arch, bool is_fp)
255 inline constexpr size_t GetFirstCallerReg(Arch arch, bool is_fp)
260 inline constexpr size_t GetLastCallerReg(Arch arch, bool is_fp)
265 inline constexpr size_t GetCallerRegsCount(Arch arch, bool is_fp)
270 inline constexpr size_t GetRegsCount(Arch arch)
277 static constexpr Arch RUNTIME_ARCH = Arch::AARCH32;
279 static constexpr Arch RUNTIME_ARCH = Arch::AARCH64;
281 static constexpr Arch RUNTIME_ARCH = Arch::X86;
283 static constexpr Arch RUNTIME_ARCH = Arch::X86_64;
285 static constexpr Arch RUNTIME_ARCH = Arch::NONE;
289 std::enable_if_t<is_stringable_v<String>, Arch> GetArchFromString(const String &str)
293 return Arch::AARCH64;
296 return Arch::AARCH32;
299 return Arch::X86;
302 return Arch::X86_64;
304 return Arch::NONE;
308 std::enable_if_t<is_stringable_v<String>, String> GetStringFromArch(const Arch &arch)
310 if (arch == Arch::AARCH64) {
313 if (arch == Arch::AARCH32) {
316 if (arch == Arch::X86) {
319 if (arch == Arch::X86_64) {