Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(756)

Side by Side Diff: include/llvm/Bitcode/NaCl/NaClBitCodes.h

Issue 14682013: Copy BitCodes.h to NaCl/NaClBitCodes.h (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | include/llvm/Bitcode/NaCl/NaClBitstreamReader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- BitCodes.h - Enum values for the bitcode format ----------*- C++ -*-===// 1 //===- NaClBitCodes.h - Enum values for the bitcode format ------*- C++ -*-===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This header Bitcode enum values. 10 // This header Bitcode enum values.
11 // 11 //
12 // The enum values defined in this file should be considered permanent. If 12 // The enum values defined in this file should be considered permanent. If
13 // new features are added, they should have values added at the end of the 13 // new features are added, they should have values added at the end of the
14 // respective lists. 14 // respective lists.
15 // 15 //
16 //===----------------------------------------------------------------------===// 16 //===----------------------------------------------------------------------===//
17 17
18 #ifndef LLVM_BITCODE_BITCODES_H 18 #ifndef LLVM_BITCODE_NACL_NACLBITCODES_H
19 #define LLVM_BITCODE_BITCODES_H 19 #define LLVM_BITCODE_NACL_NACLBITCODES_H
20 20
21 #include "llvm/ADT/SmallVector.h" 21 #include "llvm/ADT/SmallVector.h"
22 #include "llvm/Support/DataTypes.h" 22 #include "llvm/Support/DataTypes.h"
23 #include "llvm/Support/ErrorHandling.h" 23 #include "llvm/Support/ErrorHandling.h"
24 #include <cassert> 24 #include <cassert>
25 25
26 namespace llvm { 26 namespace llvm {
27 namespace bitc { 27 namespace naclbitc {
28 enum StandardWidths { 28 enum StandardWidths {
29 BlockIDWidth = 8, // We use VBR-8 for block IDs. 29 BlockIDWidth = 8, // We use VBR-8 for block IDs.
30 CodeLenWidth = 4, // Codelen are VBR-4. 30 CodeLenWidth = 4, // Codelen are VBR-4.
31 BlockSizeWidth = 32 // BlockSize up to 2^32 32-bit words = 16GB per block. 31 BlockSizeWidth = 32 // BlockSize up to 2^32 32-bit words = 16GB per block.
32 }; 32 };
33 33
34 // The standard abbrev namespace always has a way to exit a block, enter a 34 // The standard abbrev namespace always has a way to exit a block, enter a
35 // nested block, define abbrevs, and define an unabbreviated record. 35 // nested block, define abbrevs, and define an unabbreviated record.
36 enum FixedAbbrevIDs { 36 enum FixedAbbrevIDs {
37 END_BLOCK = 0, // Must be zero to guarantee termination for broken bitcode. 37 END_BLOCK = 0, // Must be zero to guarantee termination for broken bitcode.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 enum BlockInfoCodes { 69 enum BlockInfoCodes {
70 // DEFINE_ABBREV has magic semantics here, applying to the current SETBID'd 70 // DEFINE_ABBREV has magic semantics here, applying to the current SETBID'd
71 // block, instead of the BlockInfo block. 71 // block, instead of the BlockInfo block.
72 72
73 BLOCKINFO_CODE_SETBID = 1, // SETBID: [blockid#] 73 BLOCKINFO_CODE_SETBID = 1, // SETBID: [blockid#]
74 BLOCKINFO_CODE_BLOCKNAME = 2, // BLOCKNAME: [name] 74 BLOCKINFO_CODE_BLOCKNAME = 2, // BLOCKNAME: [name]
75 BLOCKINFO_CODE_SETRECORDNAME = 3 // BLOCKINFO_CODE_SETRECORDNAME: 75 BLOCKINFO_CODE_SETRECORDNAME = 3 // BLOCKINFO_CODE_SETRECORDNAME:
76 // [id, name] 76 // [id, name]
77 }; 77 };
78 78
79 } // End bitc namespace 79 } // End bitc namespace
jvoung (off chromium) 2013/05/01 23:41:13 naclbitc
Karl 2013/05/02 14:32:14 Done.
80 80
81 /// BitCodeAbbrevOp - This describes one or more operands in an abbreviation. 81 /// NaClBitCodeAbbrevOp - This describes one or more operands in an abbreviation .
82 /// This is actually a union of two different things: 82 /// This is actually a union of two different things:
83 /// 1. It could be a literal integer value ("the operand is always 17"). 83 /// 1. It could be a literal integer value ("the operand is always 17").
84 /// 2. It could be an encoding specification ("this operand encoded like so"). 84 /// 2. It could be an encoding specification ("this operand encoded like so").
85 /// 85 ///
86 class BitCodeAbbrevOp { 86 class NaClBitCodeAbbrevOp {
87 uint64_t Val; // A literal value or data for an encoding. 87 uint64_t Val; // A literal value or data for an encoding.
88 bool IsLiteral : 1; // Indicate whether this is a literal value or not. 88 bool IsLiteral : 1; // Indicate whether this is a literal value or not.
89 unsigned Enc : 3; // The encoding to use. 89 unsigned Enc : 3; // The encoding to use.
90 public: 90 public:
91 enum Encoding { 91 enum Encoding {
92 Fixed = 1, // A fixed width field, Val specifies number of bits. 92 Fixed = 1, // A fixed width field, Val specifies number of bits.
93 VBR = 2, // A VBR field where Val specifies the width of each chunk. 93 VBR = 2, // A VBR field where Val specifies the width of each chunk.
94 Array = 3, // A sequence of fields, next field species elt encoding. 94 Array = 3, // A sequence of fields, next field species elt encoding.
95 Char6 = 4, // A 6-bit fixed field which maps to [a-zA-Z0-9._]. 95 Char6 = 4, // A 6-bit fixed field which maps to [a-zA-Z0-9._].
96 Blob = 5 // 32-bit aligned array of 8-bit characters. 96 Blob = 5 // 32-bit aligned array of 8-bit characters.
97 }; 97 };
98 98
99 explicit BitCodeAbbrevOp(uint64_t V) : Val(V), IsLiteral(true) {} 99 explicit NaClBitCodeAbbrevOp(uint64_t V) : Val(V), IsLiteral(true) {}
100 explicit BitCodeAbbrevOp(Encoding E, uint64_t Data = 0) 100 explicit NaClBitCodeAbbrevOp(Encoding E, uint64_t Data = 0)
101 : Val(Data), IsLiteral(false), Enc(E) {} 101 : Val(Data), IsLiteral(false), Enc(E) {}
102 102
103 bool isLiteral() const { return IsLiteral; } 103 bool isLiteral() const { return IsLiteral; }
104 bool isEncoding() const { return !IsLiteral; } 104 bool isEncoding() const { return !IsLiteral; }
105 105
106 // Accessors for literals. 106 // Accessors for literals.
107 uint64_t getLiteralValue() const { assert(isLiteral()); return Val; } 107 uint64_t getLiteralValue() const { assert(isLiteral()); return Val; }
108 108
109 // Accessors for encoding info. 109 // Accessors for encoding info.
110 Encoding getEncoding() const { assert(isEncoding()); return (Encoding)Enc; } 110 Encoding getEncoding() const { assert(isEncoding()); return (Encoding)Enc; }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 if (V < 26) return V+'a'; 149 if (V < 26) return V+'a';
150 if (V < 26+26) return V-26+'A'; 150 if (V < 26+26) return V-26+'A';
151 if (V < 26+26+10) return V-26-26+'0'; 151 if (V < 26+26+10) return V-26-26+'0';
152 if (V == 62) return '.'; 152 if (V == 62) return '.';
153 if (V == 63) return '_'; 153 if (V == 63) return '_';
154 llvm_unreachable("Not a value Char6 character!"); 154 llvm_unreachable("Not a value Char6 character!");
155 } 155 }
156 156
157 }; 157 };
158 158
159 template <> struct isPodLike<BitCodeAbbrevOp> { static const bool value=true; }; 159 template <> struct isPodLike<NaClBitCodeAbbrevOp> {
160 static const bool value=true;
161 };
160 162
161 /// BitCodeAbbrev - This class represents an abbreviation record. An 163 /// NaClBitCodeAbbrev - This class represents an abbreviation record. An
162 /// abbreviation allows a complex record that has redundancy to be stored in a 164 /// abbreviation allows a complex record that has redundancy to be stored in a
163 /// specialized format instead of the fully-general, fully-vbr, format. 165 /// specialized format instead of the fully-general, fully-vbr, format.
164 class BitCodeAbbrev { 166 class NaClBitCodeAbbrev {
165 SmallVector<BitCodeAbbrevOp, 32> OperandList; 167 SmallVector<NaClBitCodeAbbrevOp, 32> OperandList;
166 unsigned char RefCount; // Number of things using this. 168 unsigned char RefCount; // Number of things using this.
167 ~BitCodeAbbrev() {} 169 ~NaClBitCodeAbbrev() {}
168 public: 170 public:
169 BitCodeAbbrev() : RefCount(1) {} 171 NaClBitCodeAbbrev() : RefCount(1) {}
170 172
171 void addRef() { ++RefCount; } 173 void addRef() { ++RefCount; }
172 void dropRef() { if (--RefCount == 0) delete this; } 174 void dropRef() { if (--RefCount == 0) delete this; }
173 175
174 unsigned getNumOperandInfos() const { 176 unsigned getNumOperandInfos() const {
175 return static_cast<unsigned>(OperandList.size()); 177 return static_cast<unsigned>(OperandList.size());
176 } 178 }
177 const BitCodeAbbrevOp &getOperandInfo(unsigned N) const { 179 const NaClBitCodeAbbrevOp &getOperandInfo(unsigned N) const {
178 return OperandList[N]; 180 return OperandList[N];
179 } 181 }
180 182
181 void Add(const BitCodeAbbrevOp &OpInfo) { 183 void Add(const NaClBitCodeAbbrevOp &OpInfo) {
182 OperandList.push_back(OpInfo); 184 OperandList.push_back(OpInfo);
183 } 185 }
184 }; 186 };
185 } // End llvm namespace 187 } // End llvm namespace
186 188
187 #endif 189 #endif
OLDNEW
« no previous file with comments | « no previous file | include/llvm/Bitcode/NaCl/NaClBitstreamReader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698