[llvm-commits] [llvm] r135841 - /llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp

Benjamin Kramer benny.kra at googlemail.com
Fri Jul 22 19:49:37 PDT 2011


Author: d0k
Date: Fri Jul 22 21:49:37 2011
New Revision: 135841

URL: http://llvm.org/viewvc/llvm-project?rev=135841&view=rev
Log:
We always bounds check the bit set, there is no need to emit zero bytes at the end.

Modified:
    llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp

Modified: llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp?rev=135841&r1=135840&r2=135841&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/RegisterInfoEmitter.cpp Fri Jul 22 21:49:37 2011
@@ -206,23 +206,20 @@
 // Helper to emit a set of bits into a constant byte array.
 class BitVectorEmitter {
   BitVector Values;
-  unsigned Len;
 public:
-  BitVectorEmitter(unsigned L) : Len(L%8 ? ((L/8)+1)*8 : L) {
-    Values.resize(Len);
+  void add(unsigned v) {
+    if (v >= Values.size())
+      Values.resize(((v/8)+1)*8); // Round up to the next byte.
+    Values[v] = true;
   }
 
-  void add(unsigned v) { Values[v] = true; }
-
   void print(raw_ostream &OS) {
-    for (unsigned i = 0, e = Len / 8; i != e; ++i) {
+    for (unsigned i = 0, e = Values.size() / 8; i != e; ++i) {
       unsigned char out = 0;
-      for (unsigned ii = 0, ie = 8; ii != ie; ++ii)
-        if (Values[i * 8 + ii])
-          out |= 1 << ii;
-      OS << "0x";
-      OS.write_hex(out);
-      OS << ", ";
+      for (unsigned j = 0; j != 8; ++j)
+        if (Values[i * 8 + j])
+          out |= 1 << j;
+      OS << format("0x%02x, ", out);
     }
   }
 };
@@ -349,7 +346,7 @@
     OS << "  // " << Name << " Bit set.\n"
        << "  static const unsigned char " << Name
        << "Bits[] = {\n    ";
-    BitVectorEmitter BVE(Target.getRegBank().getRegisters().size()+1);
+    BitVectorEmitter BVE;
     for (unsigned i = 0, e = Order.size(); i != e; ++i) {
       Record *Reg = Order[i];
       BVE.add(Target.getRegBank().getReg(Reg)->EnumValue);





More information about the llvm-commits mailing list