-
Notifications
You must be signed in to change notification settings - Fork 272
Expand file tree
/
Copy pathaub_helper_add_mmio.cpp
More file actions
57 lines (49 loc) · 1.58 KB
/
aub_helper_add_mmio.cpp
File metadata and controls
57 lines (49 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* Copyright (C) 2019-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/aub/aub_helper.h"
#include "shared/source/debug_settings/debug_settings_manager.h"
#include "aubstream/aubstream.h"
#include <sstream>
namespace NEO {
MMIOList AubHelper::getAdditionalMmioList() {
return splitMMIORegisters(debugManager.flags.AubDumpAddMmioRegistersList.get(), ';');
}
MMIOList AubHelper::splitMMIORegisters(const std::string ®isters, char delimiter) {
MMIOList result;
bool firstElementInPair = false;
std::string token;
uint32_t registerOffset = 0;
uint32_t registerValue = 0;
std::istringstream stream("");
for (std::string::const_iterator i = registers.begin();; i++) {
if (i == registers.end() || *i == delimiter) {
if (token.size() > 0) {
stream.str(token);
stream.clear();
firstElementInPair = !firstElementInPair;
stream >> std::hex >> (firstElementInPair ? registerOffset : registerValue);
if (stream.fail()) {
result.clear();
break;
}
token.clear();
if (!firstElementInPair) {
result.emplace_back(registerOffset, registerValue);
registerValue = 0;
registerOffset = 0;
}
}
if (i == registers.end()) {
break;
}
} else {
token.push_back(*i);
}
}
return result;
}
} // namespace NEO