op_not.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ��������������������The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// test bitset<N> operator^(const bitset<N>& lhs, const bitset<N>& rhs);
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include <bitset>
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <cstdlib>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert>
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <std::size_t N>
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::bitset<N>
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make_bitset()
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::bitset<N> v;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for (std::size_t i = 0; i < N; ++i)
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        v[i] = static_cast<bool>(std::rand() & 1);
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return v;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <std::size_t N>
27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void test_op_not()
28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles){
29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    std::bitset<N> v1 = make_bitset<N>();
30868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    std::bitset<N> v2 = make_bitset<N>();
31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    std::bitset<N> v3 = v1;
32868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    assert((v1 ^ v2) == (v3 ^= v2));;
33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)int main()
36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles){
37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    test_op_not<0>();
38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    test_op_not<1>();
39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    test_op_not<31>();
40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    test_op_not<32>();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_op_not<33>();
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_op_not<63>();
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_op_not<64>();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_op_not<65>();
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    test_op_not<1000>();
46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)