| OLD | NEW |
| 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 <string> | 10 #include <string> |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 /// Test how we report a call arg that refers to nonexistent call argument | 37 /// Test how we report a call arg that refers to nonexistent call argument |
| 38 TEST(IceParseInstsTest, NonexistentCallArg) { | 38 TEST(IceParseInstsTest, NonexistentCallArg) { |
| 39 const uint64_t BitcodeRecords[] = { | 39 const uint64_t BitcodeRecords[] = { |
| 40 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, | 40 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, |
| 41 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, | 41 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, |
| 42 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, | 42 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, |
| 43 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, | 43 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, |
| 44 3, naclbitc::TYPE_CODE_VOID, Terminator, | 44 3, naclbitc::TYPE_CODE_VOID, Terminator, |
| 45 3, naclbitc::TYPE_CODE_FUNCTION, 0, 1, 0, 0, Terminator, | 45 3, naclbitc::TYPE_CODE_FUNCTION, 0, 1, 0, 0, Terminator, |
| 46 0, naclbitc::BLK_CODE_EXIT, Terminator, | 46 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 47 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 1, 0, Terminator, | 47 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 1, 3, Terminator, |
| 48 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 0, Terminator, | 48 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 3, Terminator, |
| 49 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, | 49 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, |
| 50 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, | 50 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, |
| 51 // Note: 100 is a bad value index in next line. | 51 // Note: 100 is a bad value index in next line. |
| 52 3, naclbitc::FUNC_CODE_INST_CALL, 0, 4, 2, 100, Terminator, | 52 3, naclbitc::FUNC_CODE_INST_CALL, 0, 4, 2, 100, Terminator, |
| 53 3, naclbitc::FUNC_CODE_INST_RET, Terminator, | 53 3, naclbitc::FUNC_CODE_INST_RET, Terminator, |
| 54 0, naclbitc::BLK_CODE_EXIT, Terminator, | 54 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 55 0, naclbitc::BLK_CODE_EXIT, Terminator | 55 0, naclbitc::BLK_CODE_EXIT, Terminator |
| 56 }; | 56 }; |
| 57 | 57 |
| 58 // Show bitcode objdump for BitcodeRecords. | 58 // Show bitcode objdump for BitcodeRecords. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 78 TEST(IceParseInstsTests, AllocaAlignment) { | 78 TEST(IceParseInstsTests, AllocaAlignment) { |
| 79 const uint64_t BitcodeRecords[] = { | 79 const uint64_t BitcodeRecords[] = { |
| 80 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, | 80 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, |
| 81 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, | 81 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, |
| 82 3, naclbitc::TYPE_CODE_NUMENTRY, 4, Terminator, | 82 3, naclbitc::TYPE_CODE_NUMENTRY, 4, Terminator, |
| 83 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, | 83 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, |
| 84 3, naclbitc::TYPE_CODE_VOID, Terminator, | 84 3, naclbitc::TYPE_CODE_VOID, Terminator, |
| 85 3, naclbitc::TYPE_CODE_FUNCTION, 0, 1, 0, Terminator, | 85 3, naclbitc::TYPE_CODE_FUNCTION, 0, 1, 0, Terminator, |
| 86 3, naclbitc::TYPE_CODE_INTEGER, 8, Terminator, | 86 3, naclbitc::TYPE_CODE_INTEGER, 8, Terminator, |
| 87 0, naclbitc::BLK_CODE_EXIT, Terminator, | 87 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 88 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 0, Terminator, | 88 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 3, Terminator, |
| 89 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, | 89 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, |
| 90 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, | 90 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, |
| 91 3, naclbitc::FUNC_CODE_INST_ALLOCA, 1, getEncAlignPower(0), Terminator, | 91 3, naclbitc::FUNC_CODE_INST_ALLOCA, 1, getEncAlignPower(0), Terminator, |
| 92 3, naclbitc::FUNC_CODE_INST_RET, Terminator, | 92 3, naclbitc::FUNC_CODE_INST_RET, Terminator, |
| 93 0, naclbitc::BLK_CODE_EXIT, Terminator, | 93 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 94 0, naclbitc::BLK_CODE_EXIT, Terminator}; | 94 0, naclbitc::BLK_CODE_EXIT, Terminator}; |
| 95 | 95 |
| 96 const uint64_t ReplaceIndex = 11; // index for FUNC_CODE_INST_ALLOCA | 96 const uint64_t ReplaceIndex = 11; // index for FUNC_CODE_INST_ALLOCA |
| 97 | 97 |
| 98 // Show text when alignment is 1. | 98 // Show text when alignment is 1. |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 | 145 |
| 146 // Test how we recognize alignments in load i32 instructions. | 146 // Test how we recognize alignments in load i32 instructions. |
| 147 TEST(IceParseInstsTests, LoadI32Alignment) { | 147 TEST(IceParseInstsTests, LoadI32Alignment) { |
| 148 const uint64_t BitcodeRecords[] = { | 148 const uint64_t BitcodeRecords[] = { |
| 149 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, | 149 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, |
| 150 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, | 150 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, |
| 151 3, naclbitc::TYPE_CODE_NUMENTRY, 2, Terminator, | 151 3, naclbitc::TYPE_CODE_NUMENTRY, 2, Terminator, |
| 152 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, | 152 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, |
| 153 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, 0, Terminator, | 153 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, 0, Terminator, |
| 154 0, naclbitc::BLK_CODE_EXIT, Terminator, | 154 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 155 3, naclbitc::MODULE_CODE_FUNCTION, 1, 0, 0, 0, Terminator, | 155 3, naclbitc::MODULE_CODE_FUNCTION, 1, 0, 0, 3, Terminator, |
| 156 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, | 156 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, |
| 157 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, | 157 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, |
| 158 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(0), 0, Terminator, | 158 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(0), 0, Terminator, |
| 159 3, naclbitc::FUNC_CODE_INST_RET, 1, Terminator, | 159 3, naclbitc::FUNC_CODE_INST_RET, 1, Terminator, |
| 160 0, naclbitc::BLK_CODE_EXIT, Terminator, | 160 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 161 0, naclbitc::BLK_CODE_EXIT, Terminator}; | 161 0, naclbitc::BLK_CODE_EXIT, Terminator}; |
| 162 | 162 |
| 163 const uint64_t ReplaceIndex = 9; // index for FUNC_CODE_INST_LOAD | 163 const uint64_t ReplaceIndex = 9; // index for FUNC_CODE_INST_LOAD |
| 164 | 164 |
| 165 // Show text when alignment is 1. | 165 // Show text when alignment is 1. |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 // Test how we recognize alignments in load float instructions. | 227 // Test how we recognize alignments in load float instructions. |
| 228 TEST(IceParseInstsTests, LoadFloatAlignment) { | 228 TEST(IceParseInstsTests, LoadFloatAlignment) { |
| 229 const uint64_t BitcodeRecords[] = { | 229 const uint64_t BitcodeRecords[] = { |
| 230 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, | 230 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, |
| 231 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, | 231 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, |
| 232 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, | 232 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, |
| 233 3, naclbitc::TYPE_CODE_FLOAT, Terminator, | 233 3, naclbitc::TYPE_CODE_FLOAT, Terminator, |
| 234 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, | 234 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, |
| 235 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, 1, Terminator, | 235 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, 1, Terminator, |
| 236 0, naclbitc::BLK_CODE_EXIT, Terminator, | 236 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 237 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 0, Terminator, | 237 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 3, Terminator, |
| 238 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, | 238 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, |
| 239 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, | 239 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, |
| 240 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(0), 0, Terminator, | 240 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(0), 0, Terminator, |
| 241 3, naclbitc::FUNC_CODE_INST_RET, 1, Terminator, | 241 3, naclbitc::FUNC_CODE_INST_RET, 1, Terminator, |
| 242 0, naclbitc::BLK_CODE_EXIT, Terminator, | 242 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 243 0, naclbitc::BLK_CODE_EXIT, Terminator}; | 243 0, naclbitc::BLK_CODE_EXIT, Terminator}; |
| 244 | 244 |
| 245 const uint64_t ReplaceIndex = 10; // index for FUNC_CODE_INST_LOAD | 245 const uint64_t ReplaceIndex = 10; // index for FUNC_CODE_INST_LOAD |
| 246 | 246 |
| 247 // Show text when alignment is 1. | 247 // Show text when alignment is 1. |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 // Test how we recognize alignments in store instructions. | 308 // Test how we recognize alignments in store instructions. |
| 309 TEST(NaClParseInstsTests, StoreAlignment) { | 309 TEST(NaClParseInstsTests, StoreAlignment) { |
| 310 const uint64_t BitcodeRecords[] = { | 310 const uint64_t BitcodeRecords[] = { |
| 311 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, | 311 1, naclbitc::BLK_CODE_ENTER, naclbitc::MODULE_BLOCK_ID, 2, Terminator, |
| 312 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, | 312 1, naclbitc::BLK_CODE_ENTER, naclbitc::TYPE_BLOCK_ID_NEW, 2, Terminator, |
| 313 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, | 313 3, naclbitc::TYPE_CODE_NUMENTRY, 3, Terminator, |
| 314 3, naclbitc::TYPE_CODE_FLOAT, Terminator, | 314 3, naclbitc::TYPE_CODE_FLOAT, Terminator, |
| 315 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, | 315 3, naclbitc::TYPE_CODE_INTEGER, 32, Terminator, |
| 316 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, 1, 0, Terminator, | 316 3, naclbitc::TYPE_CODE_FUNCTION, 0, 0, 1, 0, Terminator, |
| 317 0, naclbitc::BLK_CODE_EXIT, Terminator, | 317 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 318 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 0, Terminator, | 318 3, naclbitc::MODULE_CODE_FUNCTION, 2, 0, 0, 3, Terminator, |
| 319 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, | 319 1, naclbitc::BLK_CODE_ENTER, naclbitc::FUNCTION_BLOCK_ID, 2, Terminator, |
| 320 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, | 320 3, naclbitc::FUNC_CODE_DECLAREBLOCKS, 1, Terminator, |
| 321 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(0), Terminator, | 321 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(0), Terminator, |
| 322 3, naclbitc::FUNC_CODE_INST_RET, 1, Terminator, | 322 3, naclbitc::FUNC_CODE_INST_RET, 1, Terminator, |
| 323 0, naclbitc::BLK_CODE_EXIT, Terminator, | 323 0, naclbitc::BLK_CODE_EXIT, Terminator, |
| 324 0, naclbitc::BLK_CODE_EXIT, Terminator}; | 324 0, naclbitc::BLK_CODE_EXIT, Terminator}; |
| 325 | 325 |
| 326 const uint64_t ReplaceIndex = 10; // index for FUNC_CODE_INST_STORE | 326 const uint64_t ReplaceIndex = 10; // index for FUNC_CODE_INST_STORE |
| 327 | 327 |
| 328 // Show text when alignment is 1. | 328 // Show text when alignment is 1. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 31>\n", | 395 EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 31>\n", |
| 396 Munger.getTestResults()); | 396 Munger.getTestResults()); |
| 397 EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30))); | 397 EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30))); |
| 398 EXPECT_EQ( | 398 EXPECT_EQ( |
| 399 " store float %p1, float* %p0, align 0;\n" | 399 " store float %p1, float* %p0, align 0;\n" |
| 400 "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n", | 400 "Error(62:4): store: Illegal alignment for float. Expects: 1 or 4\n", |
| 401 DumpMunger.getLinesWithSubstring("store")); | 401 DumpMunger.getLinesWithSubstring("store")); |
| 402 } | 402 } |
| 403 | 403 |
| 404 } // end of anonymous namespace | 404 } // end of anonymous namespace |
| OLD | NEW |