From 4d82398e1f6d3adfcffdd96e8d4ee4cbd18848ab Mon Sep 17 00:00:00 2001
From: foreman
Date: Thu, 3 Nov 2016 15:41:39 -0400
Subject: [PATCH] P4 to Git Change 1336110 by gandryey@gera-w8 on 2016/11/03
15:21:09
SWDEV-86035 - Add PAL backend to OpenCL
- Update printf initialization to match the GSL backend
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.cpp#22 edit
---
rocclr/runtime/device/pal/palkernel.cpp | 90 +++++++++++++------------
1 file changed, 47 insertions(+), 43 deletions(-)
diff --git a/rocclr/runtime/device/pal/palkernel.cpp b/rocclr/runtime/device/pal/palkernel.cpp
index 42c875c74a..bad47c2b93 100644
--- a/rocclr/runtime/device/pal/palkernel.cpp
+++ b/rocclr/runtime/device/pal/palkernel.cpp
@@ -544,52 +544,56 @@ HSAILKernel::initPrintf(const aclPrintfFmt* aclPrintf)
std::string pfmt = aclPrintf->fmtStr;
info.fmtString_.clear();
size_t pos = 0;
- for (size_t i = 0; i < pfmt.size(); ++i) {
- char symbol = pfmt[pos++];
- if (symbol == '\\') {
- // Rest of the C escape sequences (e.g. \') are handled correctly
- // by the MDParser, we are not sure exactly how!
- switch (pfmt[pos]) {
- case 'a':
- pos++;
- symbol = '\a';
- break;
- case 'b':
- pos++;
- symbol = '\b';
- break;
- case 'f':
- pos++;
- symbol = '\f';
- break;
- case 'n':
- pos++;
- symbol = '\n';
- break;
- case 'r':
- pos++;
- symbol = '\r';
- break;
- case 'v':
- pos++;
- symbol = '\v';
- break;
- case '7':
- if (pfmt[++pos] == '2') {
- pos++;
- i++;
- symbol = '\72';
- }
- break;
- default:
- break;
+ bool need_nl = true;
+ for (size_t pos = 0; pos < pfmt.size(); ++pos) {
+ char symbol = pfmt[pos];
+ need_nl = true;
+ if (symbol == '\\') {
+ // Rest of the C escape sequences (e.g. \') are handled correctly
+ // by the MDParser, we are not sure exactly how!
+ switch (pfmt[pos + 1]) {
+ case 'a':
+ pos++;
+ symbol = '\a';
+ break;
+ case 'b':
+ pos++;
+ symbol = '\b';
+ break;
+ case 'f':
+ pos++;
+ symbol = '\f';
+ break;
+ case 'n':
+ pos++;
+ symbol = '\n';
+ need_nl = false;
+ break;
+ case 'r':
+ pos++;
+ symbol = '\r';
+ break;
+ case 'v':
+ pos++;
+ symbol = '\v';
+ break;
+ case '7':
+ if (pfmt[pos + 2] == '2') {
+ pos += 2;
+ symbol = '\72';
+ }
+ break;
+ default:
+ break;
+ }
}
- }
- info.fmtString_.push_back(symbol);
+ info.fmtString_.push_back(symbol);
+ }
+ if (need_nl) {
+ info.fmtString_ += "\n";
}
- info.fmtString_ += "\n";
uint32_t *tmp_ptr = const_cast(aclPrintf->argSizes);
- for (uint i = 0; i < aclPrintf->numSizes; i++ , tmp_ptr++) {
+ for (uint i = 0; i < aclPrintf->numSizes; i++, tmp_ptr++) {
info.arguments_.push_back(*tmp_ptr);
}
printf_[index] = info;