A64: Add batch register retrieval to interface

This commit is contained in:
MerryMage
2018-01-08 17:26:49 +00:00
parent cb481a3a48
commit b12dead76a
2 changed files with 52 additions and 6 deletions

View File

@@ -6,6 +6,7 @@
#pragma once
#include <array>
#include <cstddef>
#include <cstdint>
#include <memory>
@@ -68,16 +69,24 @@ public:
/// Modify general-purpose register.
void SetRegister(size_t index, std::uint64_t value);
struct Vector {
std::uint64_t low;
std::uint64_t high;
};
/// Read all general-purpose registers.
std::array<std::uint64_t, 31> GetRegisters() const;
/// Modify all general-purpose registers.
void SetRegisters(const std::array<std::uint64_t, 31>& value);
using Vector = std::array<std::uint64_t, 2>;
static_assert(sizeof(Vector) == sizeof(std::uint64_t) * 2);
/// Read floating point and SIMD register.
Vector GetVector(std::size_t index) const;
/// Modify floating point and SIMD register.
void SetVector(std::size_t index, Vector value);
/// Read all floating point and SIMD registers.
std::array<Vector, 32> GetVectors() const;
/// Modify all floating point and SIMD registers.
void SetVectors(const std::array<Vector, 32>& value);
/// View FPCR.
std::uint32_t GetFpcr() const;
/// Modify FPCR.