Browse Source
reduce CPU usage on Spooky Mansion by making blocks be page-sized and page-aligned & remove unused set<> overhead in arm64
pull/3278/head
reduce CPU usage on Spooky Mansion by making blocks be page-sized and page-aligned & remove unused set<> overhead in arm64
pull/3278/head
committed by
Caio Oliveira
No known key found for this signature in database
GPG Key ID: AAAE6C7FD4186B0C
24 changed files with 96 additions and 246 deletions
-
2src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp
-
6src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_a32.cpp
-
12src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.cpp
-
17src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.h
-
20src/dynarmic/src/dynarmic/backend/block_range_information.cpp
-
10src/dynarmic/src/dynarmic/backend/block_range_information.h
-
2src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp
-
8src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
-
2src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp
-
5src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp
-
4src/dynarmic/src/dynarmic/backend/x64/emit_x64.h
-
9src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp
-
4src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.cpp
-
2src/dynarmic/src/dynarmic/frontend/A64/translate/impl/system.cpp
-
64src/dynarmic/src/dynarmic/ir/basic_block.cpp
-
38src/dynarmic/src/dynarmic/ir/basic_block.h
-
61src/dynarmic/src/dynarmic/ir/dense_list.h
-
11src/dynarmic/src/dynarmic/ir/ir_emitter.h
-
53src/dynarmic/src/dynarmic/ir/opt_passes.cpp
-
2src/dynarmic/tests/A32/fuzz_arm.cpp
-
2src/dynarmic/tests/A64/fuzz_with_unicorn.cpp
-
4src/dynarmic/tests/decoder_tests.cpp
-
2src/dynarmic/tests/test_generator.cpp
-
2src/shader_recompiler/frontend/ir/basic_block.cpp
@ -1,61 +0,0 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
// SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include <cstdint> |
|||
#include <cstddef> |
|||
#include <deque> |
|||
|
|||
namespace Dynarmic { |
|||
template<typename T> struct dense_list { |
|||
using difference_type = std::ptrdiff_t; |
|||
using size_type = std::size_t; |
|||
using value_type = T; |
|||
using pointer = value_type*; |
|||
using const_pointer = const value_type*; |
|||
using reference = value_type&; |
|||
using const_reference = const value_type&; |
|||
using iterator = typename std::deque<value_type>::iterator; |
|||
using const_iterator = typename std::deque<value_type>::const_iterator; |
|||
using reverse_iterator = typename std::reverse_iterator<iterator>; |
|||
using const_reverse_iterator = typename std::reverse_iterator<const_iterator>; |
|||
|
|||
inline bool empty() const noexcept { return list.empty(); } |
|||
inline size_type size() const noexcept { return list.size(); } |
|||
|
|||
inline value_type& front() noexcept { return list.front(); } |
|||
inline const value_type& front() const noexcept { return list.front(); } |
|||
|
|||
inline value_type& back() noexcept { return list.back(); } |
|||
inline const value_type& back() const noexcept { return list.back(); } |
|||
|
|||
inline iterator begin() noexcept { return list.begin(); } |
|||
inline const_iterator begin() const noexcept { return list.begin(); } |
|||
inline iterator end() noexcept { return list.end(); } |
|||
inline const_iterator end() const noexcept { return list.end(); } |
|||
|
|||
inline reverse_iterator rbegin() noexcept { return list.rbegin(); } |
|||
inline const_reverse_iterator rbegin() const noexcept { return list.rbegin(); } |
|||
inline reverse_iterator rend() noexcept { return list.rend(); } |
|||
inline const_reverse_iterator rend() const noexcept { return list.rend(); } |
|||
|
|||
inline const_iterator cbegin() const noexcept { return list.cbegin(); } |
|||
inline const_iterator cend() const noexcept { return list.cend(); } |
|||
|
|||
inline const_reverse_iterator crbegin() const noexcept { return list.crbegin(); } |
|||
inline const_reverse_iterator crend() const noexcept { return list.crend(); } |
|||
|
|||
inline iterator insert_before(iterator it, value_type& value) noexcept { |
|||
if (it == list.begin()) { |
|||
list.push_front(value); |
|||
return list.begin(); |
|||
} |
|||
auto const index = std::distance(list.begin(), it - 1); |
|||
list.insert(it - 1, value); |
|||
return list.begin() + index; |
|||
} |
|||
|
|||
std::deque<value_type> list; |
|||
}; |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue