diff options
Diffstat (limited to 'src/shader_recompiler/frontend/ir/reg.h')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/reg.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/shader_recompiler/frontend/ir/reg.h b/src/shader_recompiler/frontend/ir/reg.h index 316fc4be8..771094eb9 100644 --- a/src/shader_recompiler/frontend/ir/reg.h +++ b/src/shader_recompiler/frontend/ir/reg.h | |||
| @@ -271,6 +271,9 @@ enum class Reg : u64 { | |||
| 271 | }; | 271 | }; |
| 272 | static_assert(static_cast<int>(Reg::RZ) == 255); | 272 | static_assert(static_cast<int>(Reg::RZ) == 255); |
| 273 | 273 | ||
| 274 | constexpr size_t NUM_USER_REGS = 255; | ||
| 275 | constexpr size_t NUM_REGS = 256; | ||
| 276 | |||
| 274 | [[nodiscard]] constexpr Reg operator+(Reg reg, int num) { | 277 | [[nodiscard]] constexpr Reg operator+(Reg reg, int num) { |
| 275 | if (reg == Reg::RZ) { | 278 | if (reg == Reg::RZ) { |
| 276 | // Adding or subtracting registers from RZ yields RZ | 279 | // Adding or subtracting registers from RZ yields RZ |
| @@ -290,8 +293,12 @@ static_assert(static_cast<int>(Reg::RZ) == 255); | |||
| 290 | return reg + (-num); | 293 | return reg + (-num); |
| 291 | } | 294 | } |
| 292 | 295 | ||
| 296 | [[nodiscard]] constexpr size_t RegIndex(Reg reg) noexcept { | ||
| 297 | return static_cast<size_t>(reg); | ||
| 298 | } | ||
| 299 | |||
| 293 | [[nodiscard]] constexpr bool IsAligned(Reg reg, size_t align) { | 300 | [[nodiscard]] constexpr bool IsAligned(Reg reg, size_t align) { |
| 294 | return (static_cast<size_t>(reg) / align) * align == static_cast<size_t>(reg); | 301 | return (RegIndex(reg) / align) * align == RegIndex(reg); |
| 295 | } | 302 | } |
| 296 | 303 | ||
| 297 | } // namespace Shader::IR | 304 | } // namespace Shader::IR |