diff options
Diffstat (limited to 'cuobjdump_to_ptxplus/cuobjdumpInst.cc')
| -rw-r--r-- | cuobjdump_to_ptxplus/cuobjdumpInst.cc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/cuobjdump_to_ptxplus/cuobjdumpInst.cc b/cuobjdump_to_ptxplus/cuobjdumpInst.cc index fac53b4..2bdac6d 100644 --- a/cuobjdump_to_ptxplus/cuobjdumpInst.cc +++ b/cuobjdump_to_ptxplus/cuobjdumpInst.cc @@ -721,6 +721,24 @@ void cuobjdumpInst::printCuobjdumpOperands() } } +void cuobjdumpInst::printCuobjdumpOutputModifiers(const char* defaultMod) +{ + std::list<std::string>::iterator typemod = m_typeModifiers->begin(); + if (*typemod == ".U16" or *typemod == ".S16") { + std::list<std::string>::iterator dest_op = m_operands->begin(); + std::string& destination = *dest_op; + if (destination[destination.length()-1] == 'l') { + output(".lo"); // write to the lower 16-bits + } else if (destination[destination.length()-1] == 'h') { + output(".hi"); // write to the upper 16-bits + } else { + output(".wide"); // write to the whole 32-bits + } + return; + } + output(defaultMod); // default output modifier for mul +} + std::string int_default_mod () { return ".u32" ;} @@ -1309,7 +1327,8 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std: else if(m_base == "IMUL" || m_base == "IMUL32I") { printCuobjdumpPredicate(); - output("mul.lo"); + output("mul"); + printCuobjdumpOutputModifiers(".lo"); printCuobjdumpBaseModifiers(); if(m_typeModifiers->size() == 0) |
