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

Side by Side Diff: src/IceTargetLoweringX8632.cpp

Issue 618313003: Subzero: Move to C++11 static_assert(). (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 6 years, 2 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
OLDNEW
1 //===- subzero/src/IceTargetLoweringX8632.cpp - x86-32 lowering -----------===// 1 //===- subzero/src/IceTargetLoweringX8632.cpp - x86-32 lowering -----------===//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
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 file implements the TargetLoweringX8632 class, which 10 // This file implements the TargetLoweringX8632 class, which
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 _num 182 _num
183 }; 183 };
184 // Define a set of constants based on high-level table entries. 184 // Define a set of constants based on high-level table entries.
185 #define X(tag, str) static const int _table1_##tag = InstFcmp::tag; 185 #define X(tag, str) static const int _table1_##tag = InstFcmp::tag;
186 ICEINSTFCMP_TABLE; 186 ICEINSTFCMP_TABLE;
187 #undef X 187 #undef X
188 // Define a set of constants based on low-level table entries, 188 // Define a set of constants based on low-level table entries,
189 // and ensure the table entry keys are consistent. 189 // and ensure the table entry keys are consistent.
190 #define X(val, dflt, swapS, C1, C2, swapV, pred) \ 190 #define X(val, dflt, swapS, C1, C2, swapV, pred) \
191 static const int _table2_##val = _tmp_##val; \ 191 static const int _table2_##val = _tmp_##val; \
192 STATIC_ASSERT(_table1_##val == _table2_##val); 192 static_assert( \
193 _table1_##val == _table2_##val, \
194 "Inconsistency between FCMPX8632_TABLE and ICEINSTFCMP_TABLE");
193 FCMPX8632_TABLE; 195 FCMPX8632_TABLE;
194 #undef X 196 #undef X
195 // Repeat the static asserts with respect to the high-level 197 // Repeat the static asserts with respect to the high-level
196 // table entries in case the high-level table has extra entries. 198 // table entries in case the high-level table has extra entries.
197 #define X(tag, str) STATIC_ASSERT(_table1_##tag == _table2_##tag); 199 #define X(tag, str) \
200 static_assert( \
201 _table1_##tag == _table2_##tag, \
202 "Inconsistency between FCMPX8632_TABLE and ICEINSTFCMP_TABLE");
198 ICEINSTFCMP_TABLE; 203 ICEINSTFCMP_TABLE;
199 #undef X 204 #undef X
200 } 205 }
201 206
202 // Validate the enum values in ICMPX8632_TABLE. 207 // Validate the enum values in ICMPX8632_TABLE.
203 { 208 {
204 // Define a temporary set of enum values based on low-level 209 // Define a temporary set of enum values based on low-level
205 // table entries. 210 // table entries.
206 enum _tmp_enum { 211 enum _tmp_enum {
207 #define X(val, C_32, C1_64, C2_64, C3_64) _tmp_##val, 212 #define X(val, C_32, C1_64, C2_64, C3_64) _tmp_##val,
208 ICMPX8632_TABLE 213 ICMPX8632_TABLE
209 #undef X 214 #undef X
210 _num 215 _num
211 }; 216 };
212 // Define a set of constants based on high-level table entries. 217 // Define a set of constants based on high-level table entries.
213 #define X(tag, str) static const int _table1_##tag = InstIcmp::tag; 218 #define X(tag, str) static const int _table1_##tag = InstIcmp::tag;
214 ICEINSTICMP_TABLE; 219 ICEINSTICMP_TABLE;
215 #undef X 220 #undef X
216 // Define a set of constants based on low-level table entries, 221 // Define a set of constants based on low-level table entries,
217 // and ensure the table entry keys are consistent. 222 // and ensure the table entry keys are consistent.
218 #define X(val, C_32, C1_64, C2_64, C3_64) \ 223 #define X(val, C_32, C1_64, C2_64, C3_64) \
219 static const int _table2_##val = _tmp_##val; \ 224 static const int _table2_##val = _tmp_##val; \
220 STATIC_ASSERT(_table1_##val == _table2_##val); 225 static_assert( \
226 _table1_##val == _table2_##val, \
227 "Inconsistency between ICMPX8632_TABLE and ICEINSTICMP_TABLE");
221 ICMPX8632_TABLE; 228 ICMPX8632_TABLE;
222 #undef X 229 #undef X
223 // Repeat the static asserts with respect to the high-level 230 // Repeat the static asserts with respect to the high-level
224 // table entries in case the high-level table has extra entries. 231 // table entries in case the high-level table has extra entries.
225 #define X(tag, str) STATIC_ASSERT(_table1_##tag == _table2_##tag); 232 #define X(tag, str) \
233 static_assert( \
234 _table1_##tag == _table2_##tag, \
235 "Inconsistency between ICMPX8632_TABLE and ICEINSTICMP_TABLE");
226 ICEINSTICMP_TABLE; 236 ICEINSTICMP_TABLE;
227 #undef X 237 #undef X
228 } 238 }
229 239
230 // Validate the enum values in ICETYPEX8632_TABLE. 240 // Validate the enum values in ICETYPEX8632_TABLE.
231 { 241 {
232 // Define a temporary set of enum values based on low-level 242 // Define a temporary set of enum values based on low-level
233 // table entries. 243 // table entries.
234 enum _tmp_enum { 244 enum _tmp_enum {
235 #define X(tag, elementty, cvt, sdss, pack, width) _tmp_##tag, 245 #define X(tag, elementty, cvt, sdss, pack, width) _tmp_##tag,
236 ICETYPEX8632_TABLE 246 ICETYPEX8632_TABLE
237 #undef X 247 #undef X
238 _num 248 _num
239 }; 249 };
240 // Define a set of constants based on high-level table entries. 250 // Define a set of constants based on high-level table entries.
241 #define X(tag, size, align, elts, elty, str) \ 251 #define X(tag, size, align, elts, elty, str) \
242 static const int _table1_##tag = tag; 252 static const int _table1_##tag = tag;
243 ICETYPE_TABLE; 253 ICETYPE_TABLE;
244 #undef X 254 #undef X
245 // Define a set of constants based on low-level table entries, 255 // Define a set of constants based on low-level table entries,
246 // and ensure the table entry keys are consistent. 256 // and ensure the table entry keys are consistent.
247 #define X(tag, elementty, cvt, sdss, pack, width) \ 257 #define X(tag, elementty, cvt, sdss, pack, width) \
248 static const int _table2_##tag = _tmp_##tag; \ 258 static const int _table2_##tag = _tmp_##tag; \
249 STATIC_ASSERT(_table1_##tag == _table2_##tag); 259 static_assert(_table1_##tag == _table2_##tag, \
260 "Inconsistency between ICETYPEX8632_TABLE and ICETYPE_TABLE");
250 ICETYPEX8632_TABLE; 261 ICETYPEX8632_TABLE;
251 #undef X 262 #undef X
252 // Repeat the static asserts with respect to the high-level 263 // Repeat the static asserts with respect to the high-level
253 // table entries in case the high-level table has extra entries. 264 // table entries in case the high-level table has extra entries.
254 #define X(tag, size, align, elts, elty, str) \ 265 #define X(tag, size, align, elts, elty, str) \
255 STATIC_ASSERT(_table1_##tag == _table2_##tag); 266 static_assert(_table1_##tag == _table2_##tag, \
267 "Inconsistency between ICETYPEX8632_TABLE and ICETYPE_TABLE");
256 ICETYPE_TABLE; 268 ICETYPE_TABLE;
257 #undef X 269 #undef X
258 } 270 }
259 } 271 }
260 272
261 } // end of anonymous namespace 273 } // end of anonymous namespace
262 274
263 TargetX8632::TargetX8632(Cfg *Func) 275 TargetX8632::TargetX8632(Cfg *Func)
264 : TargetLowering(Func), InstructionSet(CLInstructionSet), 276 : TargetLowering(Func), InstructionSet(CLInstructionSet),
265 IsEbpBasedFrame(false), NeedsStackAlignment(false), FrameSizeLocals(0), 277 IsEbpBasedFrame(false), NeedsStackAlignment(false), FrameSizeLocals(0),
(...skipping 4260 matching lines...) Expand 10 before | Expand all | Expand 10 after
4526 Str << "\t.align\t" << Align << "\n"; 4538 Str << "\t.align\t" << Align << "\n";
4527 Str << MangledName << ":\n"; 4539 Str << MangledName << ":\n";
4528 for (SizeT i = 0; i < Size; ++i) { 4540 for (SizeT i = 0; i < Size; ++i) {
4529 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n"; 4541 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n";
4530 } 4542 }
4531 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; 4543 Str << "\t.size\t" << MangledName << ", " << Size << "\n";
4532 } 4544 }
4533 } 4545 }
4534 4546
4535 } // end of namespace Ice 4547 } // end of namespace Ice
OLDNEW
« src/IceIntrinsics.cpp ('K') | « src/IceIntrinsics.cpp ('k') | src/IceTypes.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698