diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-10-04 16:32:59 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-10-04 16:32:59 +0000 |
commit | 7605687eaa20647c063fd6486332bcab8c97ddde (patch) | |
tree | 1849a1f1f47484bb1423d8b9ee1ac99a16bdc3bc | |
parent | 499f3af4d68e2d88c87c9e0834dcaa6c7c642d7a (diff) |
Set limit for addressable elements to 1T values per size class.
Allow sizeclass up to 4095 to be represented compact.
-rw-r--r-- | searchlib/src/tests/attribute/multivaluemapping/multivaluemapping_test.cpp | 15 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/attribute/multivaluemapping.h | 4 |
2 files changed, 14 insertions, 5 deletions
diff --git a/searchlib/src/tests/attribute/multivaluemapping/multivaluemapping_test.cpp b/searchlib/src/tests/attribute/multivaluemapping/multivaluemapping_test.cpp index 886e457bebe..7be95e0d403 100644 --- a/searchlib/src/tests/attribute/multivaluemapping/multivaluemapping_test.cpp +++ b/searchlib/src/tests/attribute/multivaluemapping/multivaluemapping_test.cpp @@ -115,7 +115,7 @@ MultiValueMappingTest::testIndex64() EXPECT_EQUAL(idx.alternative(), 0u); EXPECT_EQUAL(idx.vectorIdx(), 6u); EXPECT_EQUAL(idx.offset(), 1000u); - EXPECT_EQUAL(idx.idx(), 0x3000003e8ull); + EXPECT_EQUAL(idx.idx(), 0x600000003e8ul); } { Index64 idx(15, 1, 134217727); @@ -123,11 +123,20 @@ MultiValueMappingTest::testIndex64() EXPECT_EQUAL(idx.alternative(), 1u); EXPECT_EQUAL(idx.vectorIdx(), 31u); EXPECT_EQUAL(idx.offset(), 134217727u); - EXPECT_EQUAL(idx.idx(), 0xf87ffffffull); + EXPECT_EQUAL(idx.idx(), 0x1f0007fffffful); } { - EXPECT_EQUAL(Index64::maxValues(), 1023u); + Index64 idx(3087, 1, 911134217727ul); + EXPECT_EQUAL(idx.values(), 3087u); + EXPECT_EQUAL(idx.alternative(), 1u); + EXPECT_EQUAL(idx.vectorIdx(), (3087u << 1) + 1); + EXPECT_EQUAL(idx.offset(), 911134217727ul); + EXPECT_EQUAL(idx.idx(), 0x181fd423d4d5fful); + } + { + EXPECT_EQUAL(Index64::maxValues(), 4095u); EXPECT_EQUAL(Index64::alternativeSize(), 2u); + EXPECT_EQUAL(Index64::offsetSize(), 0x1ul << 40); } } diff --git a/searchlib/src/vespa/searchlib/attribute/multivaluemapping.h b/searchlib/src/vespa/searchlib/attribute/multivaluemapping.h index 3606e94cf6b..fe3c40c8bf3 100644 --- a/searchlib/src/vespa/searchlib/attribute/multivaluemapping.h +++ b/searchlib/src/vespa/searchlib/attribute/multivaluemapping.h @@ -80,12 +80,12 @@ public: static uint64_t offsetSize(void) { - return 1 << (NUM_OFFSET_BITS); + return 1ul << (NUM_OFFSET_BITS); } }; typedef Index<uint32_t, 27,4,1> Index32; -typedef Index<uint64_t, 31,10,1> Index64; +typedef Index<uint64_t, 40,12,1> Index64; template <typename T, typename I> struct MVMTemplateArg { |