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

Side by Side Diff: unittest/IceParseInstsTest.cpp

Issue 877003003: Subzero: Use a "known" version of clang-format. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Add a clang-format blacklist. Fix formatting "errors". Created 5 years, 10 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 | « unittest/BitcodeMunge.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- unittest/IceParseInstsTest.cpp - test instruction errors -----------===// 1 //===- unittest/IceParseInstsTest.cpp - test instruction errors -----------===//
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 #include "llvm/ADT/STLExtras.h" 10 #include "llvm/ADT/STLExtras.h"
(...skipping 23 matching lines...) Expand all
34 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, 34 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator,
35 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, 35 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator,
36 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, 36 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator,
37 3, naclbitc::TYPE_CODE_VOID, Terminator, 37 3, naclbitc::TYPE_CODE_VOID, Terminator,
38 3, naclbitc::TYPE_CODE_FUNCTION, 0, 1, 0, 0, Terminator, 38 3, naclbitc::TYPE_CODE_FUNCTION, 0, 1, 0, 0, Terminator,
39 0, naclbitc::BLK_CODE_EXIT, Terminator, 39 0, naclbitc::BLK_CODE_EXIT, Terminator,
40 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 1, 0, Terminator, 40 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 1, 0, Terminator,
41 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 0, Terminator, 41 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 0, Terminator,
42 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, 42 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator,
43 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, 43 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator,
44 // Note: 100 is a bad value index in next line. 44 // Note: 100 is a bad value index in next line.
45 3, naclbitc::FUNC_CODE_INST_CALL, 0, 4, 2, 100, Terminator, 45 3, naclbitc::FUNC_CODE_INST_CALL, 0, 4, 2, 100, Terminator,
46 3, naclbitc::FUNC_CODE_INST_RET, Terminator, 46 3, naclbitc::FUNC_CODE_INST_RET, Terminator,
47 0, naclbitc::BLK_CODE_EXIT, Terminator, 47 0, naclbitc::BLK_CODE_EXIT, Terminator,
48 0, naclbitc::BLK_CODE_EXIT, Terminator 48 0, naclbitc::BLK_CODE_EXIT, Terminator
49 }; 49 };
50 50
51 // Show bitcode objdump for BitcodeRecords. 51 // Show bitcode objdump for BitcodeRecords.
52 NaClObjDumpMunger DumpMunger(BitcodeRecords, 52 NaClObjDumpMunger DumpMunger(BitcodeRecords,
53 array_lengthof(BitcodeRecords), Terminator); 53 array_lengthof(BitcodeRecords), Terminator);
54 EXPECT_FALSE(DumpMunger.runTestForAssembly("Nonexistent call arg")); 54 EXPECT_FALSE(DumpMunger.runTestForAssembly("Nonexistent call arg"));
55 EXPECT_EQ( 55 EXPECT_EQ(
56 "module { // BlockID = 8\n" 56 "module { // BlockID = 8\n"
57 " types { // BlockID = 17\n" 57 " types { // BlockID = 17\n"
58 " count 3;\n" 58 " count 3;\n"
59 " @t0 = i32;\n" 59 " @t0 = i32;\n"
60 " @t1 = void;\n" 60 " @t1 = void;\n"
61 " @t2 = void (i32, i32);\n" 61 " @t2 = void (i32, i32);\n"
62 " }\n" 62 " }\n"
63 " declare external void @f0(i32, i32);\n" 63 " declare external void @f0(i32, i32);\n"
64 " define external void @f1(i32, i32);\n" 64 " define external void @f1(i32, i32);\n"
65 " function void @f1(i32 %p0, i32 %p1) { // BlockID = 12\n" 65 " function void @f1(i32 %p0, i32 %p1) { // BlockID = 12\n"
66 " blocks 1;\n" 66 " blocks 1;\n"
67 " %b0:\n" 67 " %b0:\n"
68 " call void @f0(i32 %p0, i32 @f0);\n" 68 " call void @f0(i32 %p0, i32 @f0);\n"
69 "Error(66:4): Invalid relative value id: 100 (Must be <= 4)\n" 69 "Error(66:4): Invalid relative value id: 100 (Must be <= 4)\n"
70 " ret void;\n" 70 " ret void;\n"
71 " }\n" 71 " }\n"
72 "}\n", 72 "}\n",
73 DumpMunger.getTestResults()); 73 DumpMunger.getTestResults());
74 74
75 // Show that we get appropriate error when parsing in Subzero. 75 // Show that we get appropriate error when parsing in Subzero.
76 IceTest::SubzeroBitcodeMunger Munger( 76 IceTest::SubzeroBitcodeMunger Munger(
77 BitcodeRecords, array_lengthof(BitcodeRecords), Terminator); 77 BitcodeRecords, array_lengthof(BitcodeRecords), Terminator);
78 EXPECT_FALSE(Munger.runTest("Nonexistent call arg")); 78 EXPECT_FALSE(Munger.runTest("Nonexistent call arg"));
79 EXPECT_EQ( 79 EXPECT_EQ(
80 "Error: (66:4) Invalid function record: <34 0 4 2 100>\n", 80 "Error: (66:4) Invalid function record: <34 0 4 2 100>\n",
81 Munger.getTestResults()); 81 Munger.getTestResults());
82 } 82 }
83 83
84 /// Test how we recognize alignments in alloca instructions. 84 /// Test how we recognize alignments in alloca instructions.
85 TEST(IceParseInstsTests, AllocaAlignment) { 85 TEST(IceParseInstsTests, AllocaAlignment) {
86 const uint64_t BitcodeRecords[] = { 86 const uint64_t BitcodeRecords[] = {
87 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, 87 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator,
88 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, 88 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator,
89 3, naclbitc::TYPE_CODE_NUMENTRY, 4, Terminator, 89 3, naclbitc::TYPE_CODE_NUMENTRY, 4, Terminator,
90 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, 90 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator,
91 3, naclbitc::TYPE_CODE_VOID, Terminator, 91 3, naclbitc::TYPE_CODE_VOID, Terminator,
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignZero(), 0, Terminator, 325 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignZero(), 0, Terminator,
326 }; 326 };
327 EXPECT_FALSE(Munger.runTest("Bad load float alignment 0", Align0, 327 EXPECT_FALSE(Munger.runTest("Bad load float alignment 0", Align0,
328 array_lengthof(Align0))); 328 array_lengthof(Align0)));
329 EXPECT_EQ("Error: (58:4) Invalid function record: <20 1 0 0>\n", 329 EXPECT_EQ("Error: (58:4) Invalid function record: <20 1 0 0>\n",
330 Munger.getTestResults()); 330 Munger.getTestResults());
331 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad load float alignment 0", 331 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad load float alignment 0",
332 Align0, array_lengthof(Align0))); 332 Align0, array_lengthof(Align0)));
333 EXPECT_EQ( 333 EXPECT_EQ(
334 " %v0 = load float* %p0, align 0;\n" 334 " %v0 = load float* %p0, align 0;\n"
335 "Error(58:4): load: Illegal alignment for float. Expects: 1 or 4\n", 335 "Error(58:4): load: Illegal alignment for float. Expects: 1 or 4\n",
336 DumpMunger.getLinesWithSubstring("load")); 336 DumpMunger.getLinesWithSubstring("load"));
337 337
338 // Show what happens when changing alignment to 4. 338 // Show what happens when changing alignment to 4.
339 const uint64_t Align4[] = { 339 const uint64_t Align4[] = {
340 ReplaceIndex, NaClBitcodeMunger::Replace, 340 ReplaceIndex, NaClBitcodeMunger::Replace,
341 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(2), 0, Terminator, 341 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(2), 0, Terminator,
342 }; 342 };
343 EXPECT_TRUE(Munger.runTest("Good load float alignment 4", Align4, 343 EXPECT_TRUE(Munger.runTest("Good load float alignment 4", Align4,
344 array_lengthof(Align4))); 344 array_lengthof(Align4)));
345 EXPECT_TRUE(DumpMunger.runTestForAssembly("Good load float alignment 4", 345 EXPECT_TRUE(DumpMunger.runTestForAssembly("Good load float alignment 4",
346 Align4, array_lengthof(Align4))); 346 Align4, array_lengthof(Align4)));
347 EXPECT_EQ(" %v0 = load float* %p0, align 4;\n", 347 EXPECT_EQ(" %v0 = load float* %p0, align 4;\n",
348 DumpMunger.getLinesWithSubstring("load")); 348 DumpMunger.getLinesWithSubstring("load"));
349 349
350 const uint64_t Align29[] = { 350 const uint64_t Align29[] = {
351 ReplaceIndex, NaClBitcodeMunger::Replace, 351 ReplaceIndex, NaClBitcodeMunger::Replace,
352 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(29), 0, Terminator, 352 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(29), 0, Terminator,
353 }; 353 };
354 EXPECT_FALSE(Munger.runTest("Bad load float alignment 29", Align29, 354 EXPECT_FALSE(Munger.runTest("Bad load float alignment 29", Align29,
355 array_lengthof(Align29))); 355 array_lengthof(Align29)));
356 EXPECT_EQ("Error: (58:4) Invalid function record: <20 1 30 0>\n", 356 EXPECT_EQ("Error: (58:4) Invalid function record: <20 1 30 0>\n",
357 Munger.getTestResults()); 357 Munger.getTestResults());
358 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad load float alignment 29", 358 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad load float alignment 29",
359 Align29, array_lengthof(Align29))); 359 Align29, array_lengthof(Align29)));
360 EXPECT_EQ( 360 EXPECT_EQ(
361 " %v0 = load float* %p0, align 536870912;\n" 361 " %v0 = load float* %p0, align 536870912;\n"
362 "Error(58:4): load: Illegal alignment for float. Expects: 1 or 4\n", 362 "Error(58:4): load: Illegal alignment for float. Expects: 1 or 4\n",
363 DumpMunger.getLinesWithSubstring("load")); 363 DumpMunger.getLinesWithSubstring("load"));
364 364
365 // Show what happens when changing alignment to 2**30. 365 // Show what happens when changing alignment to 2**30.
366 const uint64_t Align30[] = { 366 const uint64_t Align30[] = {
367 ReplaceIndex, NaClBitcodeMunger::Replace, 367 ReplaceIndex, NaClBitcodeMunger::Replace,
368 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(30), 0, Terminator, 368 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(30), 0, Terminator,
369 }; 369 };
370 EXPECT_FALSE(Munger.runTest("Bad load float alignment 30", Align30, 370 EXPECT_FALSE(Munger.runTest("Bad load float alignment 30", Align30,
371 array_lengthof(Align30))); 371 array_lengthof(Align30)));
372 EXPECT_EQ("Error: (58:4) Invalid function record: <20 1 31 0>\n", 372 EXPECT_EQ("Error: (58:4) Invalid function record: <20 1 31 0>\n",
373 Munger.getTestResults()); 373 Munger.getTestResults());
374 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad load float alignment 30", 374 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad load float alignment 30",
375 Align30, array_lengthof(Align30))); 375 Align30, array_lengthof(Align30)));
376 EXPECT_EQ( 376 EXPECT_EQ(
377 " %v0 = load float* %p0, align 0;\n" 377 " %v0 = load float* %p0, align 0;\n"
378 "Error(58:4): load: Illegal alignment for float. Expects: 1 or 4\n", 378 "Error(58:4): load: Illegal alignment for float. Expects: 1 or 4\n",
379 DumpMunger.getLinesWithSubstring("load")); 379 DumpMunger.getLinesWithSubstring("load"));
380 } 380 }
381 381
382 // Test how we recognize alignments in store instructions. 382 // Test how we recognize alignments in store instructions.
383 TEST(NaClParseInstsTests, StoreAlignment) { 383 TEST(NaClParseInstsTests, StoreAlignment) {
384 const uint64_t BitcodeRecords[] = { 384 const uint64_t BitcodeRecords[] = {
385 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, 385 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator,
386 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, 386 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator,
387 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, 387 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator,
388 3, naclbitc::TYPE_CODE_FLOAT, Terminator, 388 3, naclbitc::TYPE_CODE_FLOAT, Terminator,
389 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, 389 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator,
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 Munger.getTestResults()); 492 Munger.getTestResults());
493 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad Store alignment 30", Align30, 493 EXPECT_FALSE(DumpMunger.runTestForAssembly("Bad Store alignment 30", Align30,
494 array_lengthof(Align30))); 494 array_lengthof(Align30)));
495 EXPECT_EQ( 495 EXPECT_EQ(
496 " store float %p1, float* %p0, align 0;\n" 496 " store float %p1, float* %p0, align 0;\n"
497 "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n", 497 "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n",
498 DumpMunger.getLinesWithSubstring("store")); 498 DumpMunger.getLinesWithSubstring("store"));
499 } 499 }
500 500
501 } // end of anonymous namespace 501 } // end of anonymous namespace
OLDNEW
« no previous file with comments | « unittest/BitcodeMunge.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698