diff options
Diffstat (limited to 'lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp')
-rw-r--r-- | lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp index fa6720f2cd..df349e33b4 100644 --- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp @@ -329,7 +329,14 @@ void ARMAsmPrinter::printOperand(const MachineInstr *MI, int OpNum, break; } case MachineOperand::MO_Immediate: { - O << '#' << MO.getImm(); + int64_t Imm = MO.getImm(); + if (Modifier) { + if (strcmp(Modifier, "lo16") == 0) + Imm = Imm & 0xffffLL; + else if (strcmp(Modifier, "hi16") == 0) + Imm = (Imm & 0xffff0000LL) >> 16; + } + O << '#' << Imm; break; } case MachineOperand::MO_MachineBasicBlock: |