1cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman//===- llvm/unittest/ADT/BitVectorTest.cpp - BitVector tests --------------===// 2cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman// 3cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman// The LLVM Compiler Infrastructure 4cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman// 5cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman// This file is distributed under the University of Illinois Open Source 6cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman// License. See LICENSE.TXT for details. 7cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman// 8cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman//===----------------------------------------------------------------------===// 9cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 103f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman// Some of these tests fail on PowerPC for unknown reasons. 113f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman#ifndef __ppc__ 123f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman 13cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman#include "llvm/ADT/BitVector.h" 14cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman#include "gtest/gtest.h" 15cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 16cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohmanusing namespace llvm; 17cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 18cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohmannamespace { 19cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 20cb89afc965c66029ae38712d1c52f5bbe4dee942Dan GohmanTEST(BitVectorTest, TrivialOperation) { 21cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman BitVector Vec; 22cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(0U, Vec.count()); 23cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(0U, Vec.size()); 24cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.any()); 25fab4c9e9df1aeb33b55cfcfa174fac8d61df96fdDan Gohman EXPECT_TRUE(Vec.all()); 26cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.none()); 27cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.empty()); 28cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 29cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(5, true); 30cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(5U, Vec.count()); 31cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(5U, Vec.size()); 32cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.any()); 33fab4c9e9df1aeb33b55cfcfa174fac8d61df96fdDan Gohman EXPECT_TRUE(Vec.all()); 34cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.none()); 35cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.empty()); 36cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 37cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(11); 38cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(5U, Vec.count()); 39cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(11U, Vec.size()); 40cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.any()); 41fab4c9e9df1aeb33b55cfcfa174fac8d61df96fdDan Gohman EXPECT_FALSE(Vec.all()); 42cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.none()); 43cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.empty()); 44cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 45cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman BitVector Inv = ~Vec; 46cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(6U, Inv.count()); 47cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(11U, Inv.size()); 48cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Inv.any()); 49fab4c9e9df1aeb33b55cfcfa174fac8d61df96fdDan Gohman EXPECT_FALSE(Inv.all()); 50cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Inv.none()); 51cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Inv.empty()); 52cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 53cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Inv == Vec); 54cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Inv != Vec); 55cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec = ~Vec; 56cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Inv == Vec); 57cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Inv != Vec); 58cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 59cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman // Add some "interesting" data to Vec. 60cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(23, true); 61cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(25, false); 62cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(26, true); 63cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(29, false); 64cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(33, true); 653f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman Vec.resize(57, false); 66cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman unsigned Count = 0; 67cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman for (unsigned i = Vec.find_first(); i != -1u; i = Vec.find_next(i)) { 68cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman ++Count; 69cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec[i]); 70cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.test(i)); 71cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman } 72cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count, Vec.count()); 73cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count, 23u); 74cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec[0]); 75cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec[32]); 763f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman EXPECT_FALSE(Vec[56]); 773f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman Vec.resize(61, false); 78cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 79cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman BitVector Copy = Vec; 80cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman BitVector Alt(3, false); 81cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Alt.resize(6, true); 82cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman std::swap(Alt, Vec); 83cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Copy == Alt); 84cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.size() == 6); 85cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.count() == 3); 86cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.find_first() == 3); 87cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman std::swap(Copy, Vec); 88cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 89cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman // Add some more "interesting" data. 90cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(68, true); 91cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(78, false); 92cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(89, true); 93cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(90, false); 94cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(91, true); 95cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.resize(130, false); 96cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Count = 0; 97cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman for (unsigned i = Vec.find_first(); i != -1u; i = Vec.find_next(i)) { 98cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman ++Count; 99cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec[i]); 100cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.test(i)); 101cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman } 102cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count, Vec.count()); 103cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count, 42u); 104cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec[0]); 105cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec[32]); 106cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec[60]); 107cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec[129]); 108cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 109cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.flip(60); 110cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec[60]); 111cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count + 1, Vec.count()); 112cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.flip(60); 113cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec[60]); 114cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count, Vec.count()); 115cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 116cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.reset(32); 117cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec[32]); 118cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count - 1, Vec.count()); 119cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.set(32); 120cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec[32]); 121cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Count, Vec.count()); 122cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 123cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.flip(); 124cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(Vec.size() - Count, Vec.count()); 125cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 126cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.reset(); 127cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(0U, Vec.count()); 128cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(130U, Vec.size()); 129cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.any()); 130fab4c9e9df1aeb33b55cfcfa174fac8d61df96fdDan Gohman EXPECT_FALSE(Vec.all()); 131cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.none()); 132cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.empty()); 133cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 134cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Inv = ~BitVector(); 135cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(0U, Inv.count()); 136cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(0U, Inv.size()); 137cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Inv.any()); 138fab4c9e9df1aeb33b55cfcfa174fac8d61df96fdDan Gohman EXPECT_TRUE(Inv.all()); 139cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Inv.none()); 140cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Inv.empty()); 141cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 142cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman Vec.clear(); 143cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(0U, Vec.count()); 144cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_EQ(0U, Vec.size()); 145cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_FALSE(Vec.any()); 146fab4c9e9df1aeb33b55cfcfa174fac8d61df96fdDan Gohman EXPECT_TRUE(Vec.all()); 147cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.none()); 148cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman EXPECT_TRUE(Vec.empty()); 149cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman} 150cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman 151e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan GohmanTEST(BitVectorTest, CompoundAssignment) { 152e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman BitVector A; 153e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman A.resize(10); 154e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman A.set(4); 155e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman A.set(7); 156e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman 157e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman BitVector B; 158e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.resize(50); 159e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.set(5); 160e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.set(18); 161e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman 162e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman A |= B; 163e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_TRUE(A.test(4)); 164e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_TRUE(A.test(5)); 165e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_TRUE(A.test(7)); 166e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_TRUE(A.test(18)); 167c9e31cc8232892b30dac38f97c90ebc41428f59aBenjamin Kramer EXPECT_EQ(4U, A.count()); 168c9e31cc8232892b30dac38f97c90ebc41428f59aBenjamin Kramer EXPECT_EQ(50U, A.size()); 169e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman 170e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.resize(10); 171e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.set(); 172e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.reset(2); 173e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.reset(7); 174e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman A &= B; 175e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_FALSE(A.test(2)); 176e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_FALSE(A.test(7)); 177c9e31cc8232892b30dac38f97c90ebc41428f59aBenjamin Kramer EXPECT_EQ(2U, A.count()); 178c9e31cc8232892b30dac38f97c90ebc41428f59aBenjamin Kramer EXPECT_EQ(50U, A.size()); 179e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman 180e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.resize(100); 181e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman B.set(); 182e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman 183e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman A ^= B; 184e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_TRUE(A.test(2)); 185e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman EXPECT_TRUE(A.test(7)); 186c9e31cc8232892b30dac38f97c90ebc41428f59aBenjamin Kramer EXPECT_EQ(98U, A.count()); 187c9e31cc8232892b30dac38f97c90ebc41428f59aBenjamin Kramer EXPECT_EQ(100U, A.size()); 188cb89afc965c66029ae38712d1c52f5bbe4dee942Dan Gohman} 189e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman 1903f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan GohmanTEST(BitVectorTest, ProxyIndex) { 1913f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman BitVector Vec(3); 1923f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman EXPECT_TRUE(Vec.none()); 1933f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman Vec[0] = Vec[1] = Vec[2] = true; 1943f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman EXPECT_EQ(Vec.size(), Vec.count()); 1953f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman Vec[2] = Vec[1] = Vec[0] = false; 1963f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman EXPECT_TRUE(Vec.none()); 1973f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman} 1983f5e91565273e3f4639d37ee5a5b856699e8c9e5Dan Gohman 199ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund OlesenTEST(BitVectorTest, PortableBitMask) { 200ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen BitVector A; 201ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen const uint32_t Mask1[] = { 0x80000000, 6, 5 }; 202ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 203ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.resize(10); 204ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsInMask(Mask1, 3); 205ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(10u, A.size()); 206ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_FALSE(A.test(0)); 207ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 208ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.resize(32); 209ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsInMask(Mask1, 3); 210ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_FALSE(A.test(0)); 211ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_TRUE(A.test(31)); 212ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(1u, A.count()); 213ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 214ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.resize(33); 215ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsInMask(Mask1, 1); 216ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(1u, A.count()); 217ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsInMask(Mask1, 2); 218ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(1u, A.count()); 219ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 220ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.resize(34); 221ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsInMask(Mask1, 2); 222ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(2u, A.count()); 223ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 224ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.resize(65); 225ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsInMask(Mask1, 3); 226ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(4u, A.count()); 227ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 228ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsNotInMask(Mask1, 1); 229ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(32u+3u, A.count()); 230ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 231ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsNotInMask(Mask1, 3); 232ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(65u, A.count()); 233ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 234ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.resize(96); 235ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(65u, A.count()); 236ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 237ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.clear(); 238ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.resize(128); 239ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.setBitsNotInMask(Mask1, 3); 240ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(96u-5u, A.count()); 241ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen 242ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen A.clearBitsNotInMask(Mask1, 1); 243ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen EXPECT_EQ(64-4u, A.count()); 244ff5bad078782b6472d6cd0974bf08fe3473050e6Jakob Stoklund Olesen} 245e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman} 246e7962c9897cf3ac5fc731702d5e5d8963fc5c723Dan Gohman 247ce97b75c1d507808abcb67635cfcdce2f48e53c9Dale Johannesen#endif 248