From dc45f0ec4b16144c248fb86acc905fbb5b627300 Mon Sep 17 00:00:00 2001 From: "Andrew M. B. Boktor" Date: Tue, 10 Jul 2012 23:00:30 -0800 Subject: Fix for bug #154-internal and #8-external Adding support for double destination to mad instruction Fixing broken madp instruction Adding a patch to cuobjdump_to_ptxplus to work around the C3 problem (Documented in bug #154 internal). [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 13349] --- cuobjdump_to_ptxplus/cuobjdumpInst.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'cuobjdump_to_ptxplus') 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 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) -- cgit v1.3