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

Side by Side Diff: test/base-unittests/bits-unittest.cc

Issue 494633002: Fix implementation of bit count functions. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/mips64/simulator-mips64.cc ('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 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/base/bits.h" 5 #include "src/base/bits.h"
6 #include "src/base/macros.h" 6 #include "src/base/macros.h"
7 #include "testing/gtest-support.h" 7 #include "testing/gtest-support.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace base { 10 namespace base {
11 namespace bits { 11 namespace bits {
12 12
13 TEST(BitsTest, CountSetBits32) {
14 EXPECT_EQ(0u, CountSetBits32(0));
15 EXPECT_EQ(1u, CountSetBits32(1));
16 EXPECT_EQ(8u, CountSetBits32(0x11111111));
17 EXPECT_EQ(16u, CountSetBits32(0xf0f0f0f0));
18 EXPECT_EQ(24u, CountSetBits32(0xfff0f0ff));
19 EXPECT_EQ(32u, CountSetBits32(0xffffffff));
20 }
21
22
23 TEST(BitsTest, CountLeadingZeros32) {
24 EXPECT_EQ(32u, CountLeadingZeros32(0));
25 EXPECT_EQ(31u, CountLeadingZeros32(1));
26 TRACED_FORRANGE(uint32_t, shift, 0, 31) {
27 EXPECT_EQ(31u - shift, CountLeadingZeros32(1u << shift));
28 }
29 EXPECT_EQ(4u, CountLeadingZeros32(0x0f0f0f0f));
30 }
31
32
33 TEST(BitsTest, CountTrailingZeros32) {
34 EXPECT_EQ(32u, CountTrailingZeros32(0));
35 EXPECT_EQ(31u, CountTrailingZeros32(0x80000000));
36 TRACED_FORRANGE(uint32_t, shift, 0, 31) {
37 EXPECT_EQ(shift, CountTrailingZeros32(1u << shift));
38 }
39 EXPECT_EQ(4u, CountTrailingZeros32(0xf0f0f0f0));
40 }
41
42
13 TEST(BitsTest, RotateRight32) { 43 TEST(BitsTest, RotateRight32) {
14 TRACED_FORRANGE(uint32_t, shift, 0, 31) { 44 TRACED_FORRANGE(uint32_t, shift, 0, 31) {
15 EXPECT_EQ(0u, RotateRight32(0u, shift)); 45 EXPECT_EQ(0u, RotateRight32(0u, shift));
16 } 46 }
17 EXPECT_EQ(1u, RotateRight32(1, 0)); 47 EXPECT_EQ(1u, RotateRight32(1, 0));
18 EXPECT_EQ(1u, RotateRight32(2, 1)); 48 EXPECT_EQ(1u, RotateRight32(2, 1));
19 EXPECT_EQ(0x80000000u, RotateRight32(1, 1)); 49 EXPECT_EQ(0x80000000u, RotateRight32(1, 1));
20 } 50 }
21 51
22 52
23 TEST(BitsTest, RotateRight64) { 53 TEST(BitsTest, RotateRight64) {
24 TRACED_FORRANGE(uint64_t, shift, 0, 63) { 54 TRACED_FORRANGE(uint64_t, shift, 0, 63) {
25 EXPECT_EQ(0u, RotateRight64(0u, shift)); 55 EXPECT_EQ(0u, RotateRight64(0u, shift));
26 } 56 }
27 EXPECT_EQ(1u, RotateRight64(1, 0)); 57 EXPECT_EQ(1u, RotateRight64(1, 0));
28 EXPECT_EQ(1u, RotateRight64(2, 1)); 58 EXPECT_EQ(1u, RotateRight64(2, 1));
29 EXPECT_EQ(V8_UINT64_C(0x8000000000000000), RotateRight64(1, 1)); 59 EXPECT_EQ(V8_UINT64_C(0x8000000000000000), RotateRight64(1, 1));
30 } 60 }
31 61
32 } // namespace bits 62 } // namespace bits
33 } // namespace base 63 } // namespace base
34 } // namespace v8 64 } // namespace v8
OLDNEW
« no previous file with comments | « src/mips64/simulator-mips64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698