[RISCV][InsertVSETVLI] Add debug output capability to DemandedFields [nfc]
authorPhilip Reames <preames@rivosinc.com>
Tue, 3 Jan 2023 21:56:23 +0000 (13:56 -0800)
committerPhilip Reames <listmail@philipreames.com>
Tue, 3 Jan 2023 21:56:57 +0000 (13:56 -0800)
llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp

index dddcd5d..438e8ee 100644 (file)
@@ -146,8 +146,36 @@ struct DemandedFields {
     TailPolicy = true;
     MaskPolicy = true;
   }
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+  /// Support for debugging, callable in GDB: V->dump()
+  LLVM_DUMP_METHOD void dump() const {
+    print(dbgs());
+    dbgs() << "\n";
+  }
+
+  /// Implement operator<<.
+  void print(raw_ostream &OS) const {
+    OS << "{";
+    OS << "VL=" << VL << ", ";
+    OS << "SEW=" << SEW << ", ";
+    OS << "LMUL=" << LMUL << ", ";
+    OS << "SEWLMULRatio=" << SEWLMULRatio << ", ";
+    OS << "TailPolicy=" << TailPolicy << ", ";
+    OS << "MaskPolicy=" << MaskPolicy;
+    OS << "}";
+  }
+#endif
 };
 
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+LLVM_ATTRIBUTE_USED
+inline raw_ostream &operator<<(raw_ostream &OS, const DemandedFields &DF) {
+  DF.print(OS);
+  return OS;
+}
+#endif
+
+
 /// Return true if the two values of the VTYPE register provided are
 /// indistinguishable from the perspective of an instruction (or set of
 /// instructions) which use only the Used subfields and properties.