diff options
author | Vladimir Marko <vmarko@google.com> | 2015-02-13 19:47:13 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2015-02-13 19:47:13 +0000 |
commit | d532f006f621b65d2a390f9fd946acb39dfd2e8d (patch) | |
tree | 415f9183a6da44d159562814f542713cf530007d /compiler | |
parent | bce889940f10319bf67bdc5630c84dd7f6e5c246 (diff) | |
download | art-d532f006f621b65d2a390f9fd946acb39dfd2e8d.zip art-d532f006f621b65d2a390f9fd946acb39dfd2e8d.tar.gz art-d532f006f621b65d2a390f9fd946acb39dfd2e8d.tar.bz2 |
Add tests for wide constants in LVN.
Follow up to
https://android-review.googlesource.com/132210
Change-Id: I4e29483fb9931ae5670539954b69cdb078843e72
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/dex/local_value_numbering_test.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/compiler/dex/local_value_numbering_test.cc b/compiler/dex/local_value_numbering_test.cc index 9f18a3e..a5cbb5f 100644 --- a/compiler/dex/local_value_numbering_test.cc +++ b/compiler/dex/local_value_numbering_test.cc @@ -772,4 +772,38 @@ TEST_F(LocalValueNumberingTest, DivZeroCheck) { } } +TEST_F(LocalValueNumberingTest, ConstWide) { + static const MIRDef mirs[] = { + DEF_CONST(Instruction::CONST_WIDE_16, 0u, 0), + DEF_CONST(Instruction::CONST_WIDE_16, 1u, 1), + DEF_CONST(Instruction::CONST_WIDE_16, 2u, -1), + DEF_CONST(Instruction::CONST_WIDE_32, 3u, 1 << 16), + DEF_CONST(Instruction::CONST_WIDE_32, 4u, -1 << 16), + DEF_CONST(Instruction::CONST_WIDE_32, 5u, (1 << 16) + 1), + DEF_CONST(Instruction::CONST_WIDE_32, 6u, (1 << 16) - 1), + DEF_CONST(Instruction::CONST_WIDE_32, 7u, -(1 << 16) + 1), + DEF_CONST(Instruction::CONST_WIDE_32, 8u, -(1 << 16) - 1), + DEF_CONST(Instruction::CONST_WIDE, 9u, INT64_C(1) << 32), + DEF_CONST(Instruction::CONST_WIDE, 10u, INT64_C(-1) << 32), + DEF_CONST(Instruction::CONST_WIDE, 11u, (INT64_C(1) << 32) + 1), + DEF_CONST(Instruction::CONST_WIDE, 12u, (INT64_C(1) << 32) - 1), + DEF_CONST(Instruction::CONST_WIDE, 13u, (INT64_C(-1) << 32) + 1), + DEF_CONST(Instruction::CONST_WIDE, 14u, (INT64_C(-1) << 32) - 1), + DEF_CONST(Instruction::CONST_WIDE_HIGH16, 15u, 1), // Effectively 1 << 48. + DEF_CONST(Instruction::CONST_WIDE_HIGH16, 16u, 0xffff), // Effectively -1 << 48. + DEF_CONST(Instruction::CONST_WIDE, 17u, (INT64_C(1) << 48) + 1), + DEF_CONST(Instruction::CONST_WIDE, 18u, (INT64_C(1) << 48) - 1), + DEF_CONST(Instruction::CONST_WIDE, 19u, (INT64_C(-1) << 48) + 1), + DEF_CONST(Instruction::CONST_WIDE, 20u, (INT64_C(-1) << 48) - 1), + }; + + PrepareMIRs(mirs); + PerformLVN(); + for (size_t i = 0u; i != mir_count_; ++i) { + for (size_t j = i + 1u; j != mir_count_; ++j) { + EXPECT_NE(value_names_[i], value_names_[j]) << i << " " << j; + } + } +} + } // namespace art |