]> granicus.if.org Git - llvm/commitdiff
[mips] Add support for parsing target specific flags for MIR
authorSimon Dardis <simon.dardis@imgtec.com>
Wed, 11 Oct 2017 11:11:35 +0000 (11:11 +0000)
committerSimon Dardis <simon.dardis@imgtec.com>
Wed, 11 Oct 2017 11:11:35 +0000 (11:11 +0000)
Reviewers: atanasyan

Differential Revision: https://reviews.llvm.org/D38620

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315451 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsInstrInfo.cpp
lib/Target/Mips/MipsInstrInfo.h

index 82dc442a53d9c9d583622ed5a9e520a01de7c9c5..a872fff65e46ce521d13a632e1c56ccb98e384e6 100644 (file)
@@ -618,3 +618,39 @@ bool MipsInstrInfo::verifyInstruction(const MachineInstr &MI,
   return true;
 }
 
+std::pair<unsigned, unsigned>
+MipsInstrInfo::decomposeMachineOperandsTargetFlags(unsigned TF) const {
+  return std::make_pair(TF, 0u);
+}
+
+ArrayRef<std::pair<unsigned, const char*>>
+MipsInstrInfo::getSerializableDirectMachineOperandTargetFlags() const {
+ using namespace MipsII;
+
+ static const std::pair<unsigned, const char*> Flags[] = {
+    {MO_GOT,          "mips-got"},
+    {MO_GOT_CALL,     "mips-got-call"},
+    {MO_GPREL,        "mips-gprel"},
+    {MO_ABS_HI,       "mips-abs-hi"},
+    {MO_ABS_LO,       "mips-abs-lo"},
+    {MO_TLSGD,        "mips-tlsgd"},
+    {MO_TLSLDM,       "mips-tlsldm"},
+    {MO_DTPREL_HI,    "mips-dtprel-hi"},
+    {MO_DTPREL_LO,    "mips-dtprel-lo"},
+    {MO_GOTTPREL,     "mips-gottprel"},
+    {MO_TPREL_HI,     "mips-tprel-hi"},
+    {MO_TPREL_LO,     "mips-tprel-lo"},
+    {MO_GPOFF_HI,     "mips-gpoff-hi"},
+    {MO_GPOFF_LO,     "mips-gpoff-lo"},
+    {MO_GOT_DISP,     "mips-got-disp"},
+    {MO_GOT_PAGE,     "mips-got-page"},
+    {MO_GOT_OFST,     "mips-got-ofst"},
+    {MO_HIGHER,       "mips-higher"},
+    {MO_HIGHEST,      "mips-highest"},
+    {MO_GOT_HI16,     "mips-got-hi16"},
+    {MO_GOT_LO16,     "mips-got-lo16"},
+    {MO_CALL_HI16,    "mips-call-hi16"},
+    {MO_CALL_LO16,    "mips-call-lo16"}
+  };
+  return makeArrayRef(Flags);
+}
index 0830b57cd05238485860b80ef5cff32e790284e6..a5ed1be3bee5622230e8ec237819f3ff0d1b5d68 100644 (file)
@@ -152,6 +152,12 @@ public:
   bool verifyInstruction(const MachineInstr &MI,
                          StringRef &ErrInfo) const override;
 
+  std::pair<unsigned, unsigned>
+  decomposeMachineOperandsTargetFlags(unsigned TF) const override;
+
+  ArrayRef<std::pair<unsigned, const char *>>
+  getSerializableDirectMachineOperandTargetFlags() const override;
+
 protected:
   bool isZeroImm(const MachineOperand &op) const;