From bb96888d31d37760c86fa1aed3bbf203792185e7 Mon Sep 17 00:00:00 2001 From: Wilson Fung Date: Sat, 30 Jun 2012 11:15:07 -0800 Subject: Fixing one of the problems discovered for bug 154 (internal). - Output of 16-bit integer multiplication (IMUL.U16) writes to the entire 32-bit register if a full register (i.e. not half register such as R1L) is specified as the destination. Before, it was only storing the lower 16-bit of the product into the full register. - Modified function header to declare at least 4 predicates in cuobjdump_to_ptxplus. This will mask out the problem with the predicate registers used before initialized. - Modified register value print out: now unsigned integers display their decimal values as well. [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13246] --- cuobjdump_to_ptxplus/cuobjdumpInstList.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'cuobjdump_to_ptxplus/cuobjdumpInstList.cc') diff --git a/cuobjdump_to_ptxplus/cuobjdumpInstList.cc b/cuobjdump_to_ptxplus/cuobjdumpInstList.cc index 2c6a4e8..fabc396 100644 --- a/cuobjdump_to_ptxplus/cuobjdumpInstList.cc +++ b/cuobjdump_to_ptxplus/cuobjdumpInstList.cc @@ -211,7 +211,8 @@ void cuobjdumpInstList::printPredNames(cuobjdumpEntry entry) { if( entry.m_largestPredIndex >= 0) { char out[30]; - sprintf(out, "\t.reg .pred $p<%d>;", entry.m_largestPredIndex+1); + // there is at least 4 predicates for GT200, possibly more in Fermi + sprintf(out, "\t.reg .pred $p<%d>;", std::max(entry.m_largestPredIndex+1, 4)); output(out); output("\n"); } -- cgit v1.3