Index: lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp |
diff --git a/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp b/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp |
index 03e4e0a5e17a622d05f1dfb6c8d8d9d219326818..8c7fe6dc59c97424f08abdaa963f2bb6dd11c30b 100644 |
--- a/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp |
+++ b/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp |
@@ -309,6 +309,71 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O, |
} |
} |
+ // @LOCALMOD-BEGIN |
+ // TODO(pdox): Kill this code once we switch to MC object emission |
+ const char *SFIInst = NULL; |
+ unsigned SFIEmitDest = ~0; |
+ unsigned SFIEmitPred = ~0; |
+ switch (Opcode) { |
+ case ARM::SFI_NOP_IF_AT_BUNDLE_END : |
+ SFIInst = "sfi_nop_if_at_bundle_end"; |
+ SFIEmitDest = ~0; |
+ SFIEmitPred = ~0; |
+ break; |
+ case ARM::SFI_GUARD_LOADSTORE : |
+ SFIInst = "sfi_load_store_preamble"; |
+ SFIEmitDest = 0; |
+ SFIEmitPred = 2; |
+ break; |
+ case ARM::SFI_GUARD_INDIRECT_CALL: |
+ SFIInst = "sfi_indirect_call_preamble"; |
+ SFIEmitDest = 0; |
+ SFIEmitPred = 2; |
+ break; |
+ case ARM::SFI_GUARD_INDIRECT_JMP : |
+ SFIInst = "sfi_indirect_jump_preamble"; |
+ SFIEmitDest = 0; |
+ SFIEmitPred = 2; |
+ break; |
+ case ARM::SFI_DATA_MASK : |
+ SFIInst = "sfi_data_mask"; |
+ SFIEmitDest = 0; |
+ SFIEmitPred = 2; |
+ break; |
+ case ARM::SFI_GUARD_LOADSTORE_TST: |
+ SFIInst = "sfi_cload_store_preamble"; |
+ SFIEmitDest = 0; |
+ SFIEmitPred = ~0; |
+ break; |
+ case ARM::SFI_GUARD_CALL : |
+ SFIInst = "sfi_call_preamble"; |
+ SFIEmitDest = ~0; |
+ SFIEmitPred = 0; |
+ break; |
+ case ARM::SFI_GUARD_RETURN : |
+ SFIInst = "sfi_return_preamble lr,"; |
+ SFIEmitDest = ~0; |
+ SFIEmitPred = 0; |
+ break; |
+ } |
+ if (SFIInst) { |
+ O << '\t' << SFIInst; |
+ if (SFIEmitDest != (unsigned)~0) { |
+ O << ' '; |
+ printOperand(MI, SFIEmitDest, O); |
+ } |
+ if (SFIEmitDest != (unsigned)~0 && SFIEmitPred != (unsigned)~0) { |
+ O << ','; |
+ } |
+ if (SFIEmitPred != (unsigned)~0) { |
+ O << ' '; |
+ printPredicateOperand(MI, SFIEmitPred, O); |
+ } |
+ O << '\n'; |
+ return; |
+ } |
+ // @LOCALMOD-END |
+ |
printInstruction(MI, O); |
printAnnotation(O, Annot); |
} |