aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp')
-rw-r--r--lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp b/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
index 70e4317cef..9eda04d776 100644
--- a/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
+++ b/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
@@ -166,6 +166,71 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
return;
}
+ // @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 != ~0) {
+ O << ' ';
+ printOperand(MI, SFIEmitDest, O);
+ }
+ if (SFIEmitDest != ~0 && SFIEmitPred != ~0) {
+ O << ',';
+ }
+ if (SFIEmitPred != ~0) {
+ O << ' ';
+ printPredicateOperand(MI, SFIEmitPred, O);
+ }
+ O << '\n';
+ return;
+ }
+ // @LOCALMOD-END
+
if (Opcode == ARM::tLDMIA) {
bool Writeback = true;
unsigned BaseReg = MI->getOperand(0).getReg();