left_shift.pass.cpp revision 97ecd6491374d756bd9c6da9ef84ab173f5049d6
1760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org//===----------------------------------------------------------------------===// 2760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org// 3760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org// The LLVM Compiler Infrastructure 4760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org// 5760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org// This file is dual licensed under the MIT and the University of Illinois Open 6760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org// Source Licenses. See LICENSE.TXT for details. 7760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org// 8760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org//===----------------------------------------------------------------------===// 9760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 10760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org// test bitset<N> operator<<(size_t pos) const; 11760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 12760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include <bitset> 13760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include <cstdlib> 14760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#include <cassert> 15760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 16760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#pragma clang diagnostic ignored "-Wtautological-compare" 17760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 18760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgtemplate <std::size_t N> 19760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgstd::bitset<N> 20760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgmake_bitset() 21760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 22760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org std::bitset<N> v; 23760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org for (std::size_t i = 0; i < N; ++i) 24760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org v[i] = static_cast<bool>(std::rand() & 1); 25760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org return v; 26760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 27760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 28760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgtemplate <std::size_t N> 29760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgvoid test_left_shift() 30760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 31760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org for (std::size_t s = 0; s <= N+1; ++s) 32760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org { 33760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org std::bitset<N> v1 = make_bitset<N>(); 34760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org std::bitset<N> v2 = v1; 35760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org assert((v1 <<= s) == (v2 << s)); 36760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org } 37760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 38760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 39760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgint main() 40760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org{ 41760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<0>(); 42760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<1>(); 43760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<31>(); 44760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<32>(); 45760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<33>(); 46760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<63>(); 47760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<64>(); 48760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<65>(); 49760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org test_left_shift<1000>(); 50760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} 51760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org