Skip to content

Commit 46b9d3a

Browse files
committed
Minor tweaks and fixes.
1 parent b9fa522 commit 46b9d3a

File tree

2 files changed

+12
-17
lines changed

2 files changed

+12
-17
lines changed

src/gui/widgets/memory_observer.cc

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ void PCSX::Widgets::MemoryObserver::draw(const char* title) {
227227

228228
ImGui::InputInt(_("Step"), &m_step);
229229

230-
if (ImGui::Button(_("Search"))) {
230+
if (m_step >= 1 && ImGui::Button(_("Search"))) {
231231
if (m_useSIMD && m_sequenceSize == 8) {
232232
simd_populateAddressList<8>(memData, memBase, memSize);
233233
} else if (m_useSIMD && m_sequenceSize == 16) {
@@ -301,11 +301,9 @@ bool PCSX::Widgets::MemoryObserver::all_equal(__m256i input) {
301301

302302
std::vector<uint8_t> PCSX::Widgets::MemoryObserver::getShuffleResultsFor(const std::vector<uint8_t>& buffer) {
303303
const size_t bufferSize = buffer.size();
304-
305304
auto results = std::vector<uint8_t>(bufferSize * bufferSize);
306305

307306
auto shuffledBuffer = buffer;
308-
309307
for (auto i = 0u; i < bufferSize; ++i) {
310308
std::shift_left(shuffledBuffer.begin(), shuffledBuffer.end(), 1);
311309

@@ -322,7 +320,6 @@ bool PCSX::Widgets::MemoryObserver::matchesPattern(const std::vector<uint8_t>& b
322320
const size_t bufferSize = buffer.size();
323321

324322
auto shuffledBuffer = buffer;
325-
326323
for (auto i = 0u; i < bufferSize; ++i) {
327324
std::shift_left(shuffledBuffer.begin(), shuffledBuffer.end(), 1);
328325

@@ -342,8 +339,7 @@ void PCSX::Widgets::MemoryObserver::populateAddressList(const uint8_t* memData,
342339
const auto patternShuffleResults = getShuffleResultsFor(buffer);
343340

344341
m_addresses.clear();
345-
const auto step = m_step;
346-
for (auto i = 0; i + sequenceSize < memSize; i += step) {
342+
for (auto i = 0; i + sequenceSize < memSize; i += m_step) {
347343
std::copy_n(memData + i, sequenceSize, buffer.data());
348344

349345
if (matchesPattern(buffer, patternShuffleResults)) {

src/gui/widgets/memory_observer.h

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,35 +86,35 @@ class MemoryObserver {
8686
for (auto j = 0u; j < (32 / bufferSize); ++j) {
8787
std::ranges::copy(buffer, extendedBuffer.begin() + j * bufferSize);
8888
}
89-
const auto twoCopies = _mm256_loadu_epi8(extendedBuffer.data());
89+
const auto copies = _mm256_loadu_epi8(extendedBuffer.data());
9090

9191
switch (mask) {
9292
case 0: {
9393
const auto firstShuffleMask = _mm256_set_epi8(3, 2, 1, 0, 7, 6, 5, 4, 2, 1, 0, 7, 6, 5, 4, 3, 1, 0, 7,
9494
6, 5, 4, 3, 2, 0, 7, 6, 5, 4, 3, 2, 1);
95-
const auto firstShuffle = _mm256_shuffle_epi8(twoCopies, firstShuffleMask);
96-
return _mm256_cmpeq_epi8(twoCopies, firstShuffle);
95+
const auto firstShuffle = _mm256_shuffle_epi8(copies, firstShuffleMask);
96+
return _mm256_cmpeq_epi8(copies, firstShuffle);
9797
}
9898
case 1: {
9999
const auto secondShuffleMask = _mm256_set_epi8(7, 6, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 5, 4, 3,
100100
2, 1, 0, 7, 6, 4, 3, 2, 1, 0, 7, 6, 5);
101-
const auto secondShuffle = _mm256_shuffle_epi8(twoCopies, secondShuffleMask);
102-
return _mm256_cmpeq_epi8(twoCopies, secondShuffle);
101+
const auto secondShuffle = _mm256_shuffle_epi8(copies, secondShuffleMask);
102+
return _mm256_cmpeq_epi8(copies, secondShuffle);
103103
}
104104
case 2: {
105105
assert(bufferSize == 16);
106106
const auto thirdShuffleMask = _mm256_set_epi8(11, 10, 9, 8, 7, 6, 5, 4, 10, 9, 8, 7, 6, 5, 4, 3, 9, 8,
107107
7, 6, 5, 4, 3, 2, 8, 7, 6, 5, 4, 3, 2, 1);
108-
const auto thirdShuffle = _mm256_shuffle_epi8(twoCopies, thirdShuffleMask);
109-
return _mm256_cmpeq_epi8(twoCopies, thirdShuffle);
108+
const auto thirdShuffle = _mm256_shuffle_epi8(copies, thirdShuffleMask);
109+
return _mm256_cmpeq_epi8(copies, thirdShuffle);
110110
}
111111
case 3: {
112112
assert(bufferSize == 16);
113113
const auto fourthShuffleMask =
114114
_mm256_set_epi8(15, 14, 13, 12, 11, 10, 9, 8, 14, 13, 12, 11, 10, 9, 8, 7, 13, 12, 11, 10, 9, 8, 7,
115115
6, 12, 11, 10, 9, 8, 7, 6, 5);
116-
const auto fourthShuffle = _mm256_shuffle_epi8(twoCopies, fourthShuffleMask);
117-
return _mm256_cmpeq_epi8(twoCopies, fourthShuffle);
116+
const auto fourthShuffle = _mm256_shuffle_epi8(copies, fourthShuffleMask);
117+
return _mm256_cmpeq_epi8(copies, fourthShuffle);
118118
}
119119
default:
120120
return _mm256_setzero_si256();
@@ -138,8 +138,7 @@ class MemoryObserver {
138138
}
139139

140140
m_addresses.clear();
141-
const auto step = m_step;
142-
for (auto i = 0u; i + sequenceSize < memSize; i += step) {
141+
for (auto i = 0u; i + sequenceSize < memSize; i += m_step) {
143142
std::copy_n(memData + i, sequenceSize, buffer.data());
144143

145144
bool bAllEqual = true;

0 commit comments

Comments
 (0)