mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-04 11:27:34 +00:00
Fix printing of f16 machine operands
Only single and double FP immediates are correctly printed by MachineInstr::print() during debug output. Half float type goes to APFloat::convertToDouble() and hits assertion it is not a double semantics. This diff prints half machine operands correctly. This cannot currently be hit by any in-tree target. Patch by Stanislav Mekhanoshin git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259857 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
99c3bc5b64
commit
4b9655d7ac
@ -372,10 +372,16 @@ void MachineOperand::print(raw_ostream &OS, ModuleSlotTracker &MST,
|
||||
getCImm()->getValue().print(OS, false);
|
||||
break;
|
||||
case MachineOperand::MO_FPImmediate:
|
||||
if (getFPImm()->getType()->isFloatTy())
|
||||
if (getFPImm()->getType()->isFloatTy()) {
|
||||
OS << getFPImm()->getValueAPF().convertToFloat();
|
||||
else
|
||||
} else if (getFPImm()->getType()->isHalfTy()) {
|
||||
APFloat APF = getFPImm()->getValueAPF();
|
||||
bool Unused;
|
||||
APF.convert(APFloat::IEEEsingle, APFloat::rmNearestTiesToEven, &Unused);
|
||||
OS << "half " << APF.convertToFloat();
|
||||
} else {
|
||||
OS << getFPImm()->getValueAPF().convertToDouble();
|
||||
}
|
||||
break;
|
||||
case MachineOperand::MO_MachineBasicBlock:
|
||||
OS << "<BB#" << getMBB()->getNumber() << ">";
|
||||
|
Loading…
x
Reference in New Issue
Block a user