summaryrefslogtreecommitdiff
path: root/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp')
-rw-r--r--lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp b/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
index c1512cbdc44f..d152efae6d1f 100644
--- a/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
+++ b/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
@@ -195,3 +195,26 @@ bool SparcInstPrinter::printGetPCX(const MCInst *MI, unsigned opNum,
llvm_unreachable("FIXME: Implement SparcInstPrinter::printGetPCX.");
return true;
}
+
+void SparcInstPrinter::printMembarTag(const MCInst *MI, int opNum,
+ const MCSubtargetInfo &STI,
+ raw_ostream &O) {
+ static const char *const TagNames[] = {
+ "#LoadLoad", "#StoreLoad", "#LoadStore", "#StoreStore",
+ "#Lookaside", "#MemIssue", "#Sync"};
+
+ unsigned Imm = MI->getOperand(opNum).getImm();
+
+ if (Imm > 127) {
+ O << Imm;
+ return;
+ }
+
+ bool First = true;
+ for (unsigned i = 0; i < sizeof(TagNames) / sizeof(char *); i++) {
+ if (Imm & (1 << i)) {
+ O << (First ? "" : " | ") << TagNames[i];
+ First = false;
+ }
+ }
+}