summaryrefslogtreecommitdiff
path: root/cuobjdump_to_ptxplus/cuobjdumpInst.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cuobjdump_to_ptxplus/cuobjdumpInst.cc')
-rw-r--r--cuobjdump_to_ptxplus/cuobjdumpInst.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/cuobjdump_to_ptxplus/cuobjdumpInst.cc b/cuobjdump_to_ptxplus/cuobjdumpInst.cc
index 2bdac6d..b276c04 100644
--- a/cuobjdump_to_ptxplus/cuobjdumpInst.cc
+++ b/cuobjdump_to_ptxplus/cuobjdumpInst.cc
@@ -1228,8 +1228,20 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
}
else if(m_base == "IMAD")
{
- printCuobjdumpPredicate();
- output("mad.wide");
+ //Patching the C3 problem
+ if(m_predicate->size() > 0 &&
+ m_predicate->front() == "C3" &&
+ m_operands->back()[0] == '-'){
+ m_predicate->clear();
+ std::string op = m_operands->back();
+ m_operands->pop_back();
+ m_operands->push_back(op.substr(1));
+ m_operands->push_back("C1");
+ output("madp.wide");
+ } else {
+ printCuobjdumpPredicate();
+ output("mad.wide");
+ }
printCuobjdumpBaseModifiers();
if(m_typeModifiers->size() == 0)