Tsigas' queue: replaced alignment option with padding one
[libcds.git] / tests / test-hdr / queue / hdr_moirqueue_dhp.cpp
1 /*
2     This file is a part of libcds - Concurrent Data Structures library
3
4     (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
5
6     Source code repo: http://github.com/khizmax/libcds/
7     Download: http://sourceforge.net/projects/libcds/files/
8     
9     Redistribution and use in source and binary forms, with or without
10     modification, are permitted provided that the following conditions are met:
11
12     * Redistributions of source code must retain the above copyright notice, this
13       list of conditions and the following disclaimer.
14
15     * Redistributions in binary form must reproduce the above copyright notice,
16       this list of conditions and the following disclaimer in the documentation
17       and/or other materials provided with the distribution.
18
19     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23     FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24     DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27     OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.     
29 */
30
31 #include <cds/gc/dhp.h>
32 #include <cds/container/moir_queue.h>
33 #include "queue/hdr_queue.h"
34
35 namespace queue {
36
37     void HdrTestQueue::MoirQueue_DHP()
38     {
39         typedef cds::container::MoirQueue< cds::gc::DHP, int > test_queue;
40         test_no_ic< test_queue >();
41     }
42
43     void HdrTestQueue::MoirQueue_DHP_Counted()
44     {
45         typedef cds::container::MoirQueue < cds::gc::DHP, int,
46             typename cds::container::msqueue::make_traits <
47                 cds::opt::item_counter < cds::atomicity::item_counter >
48             > ::type
49         > test_queue;
50
51         test_ic< test_queue >();
52     }
53
54     void HdrTestQueue::MoirQueue_DHP_relax()
55     {
56         typedef cds::container::MoirQueue < cds::gc::DHP, int,
57             typename cds::container::msqueue::make_traits <
58                 cds::opt::memory_model < cds::opt::v::relaxed_ordering >
59             > ::type
60         > test_queue;
61
62         test_no_ic< test_queue >();
63     }
64
65     void HdrTestQueue::MoirQueue_DHP_Counted_relax()
66     {
67         typedef cds::container::MoirQueue < cds::gc::DHP, int,
68             typename cds::container::msqueue::make_traits <
69                 cds::opt::item_counter< cds::atomicity::item_counter >
70                 , cds::opt::memory_model < cds::opt::v::relaxed_ordering >
71             > ::type
72         > test_queue;
73
74         test_ic< test_queue >();
75     }
76
77     void HdrTestQueue::MoirQueue_DHP_seqcst()
78     {
79         typedef cds::container::MoirQueue < cds::gc::DHP, int,
80             typename cds::container::msqueue::make_traits <
81                 cds::opt::memory_model < cds::opt::v::sequential_consistent >
82             > ::type
83         > test_queue;
84
85         test_no_ic< test_queue >();
86     }
87
88     void HdrTestQueue::MoirQueue_DHP_Counted_seqcst()
89     {
90         typedef cds::container::MoirQueue < cds::gc::DHP, int,
91             typename cds::container::msqueue::make_traits <
92                 cds::opt::item_counter< cds::atomicity::item_counter >
93                 , cds::opt::memory_model < cds::opt::v::sequential_consistent >
94             > ::type
95         > test_queue;
96
97         test_ic< test_queue >();
98     }
99
100     void HdrTestQueue::MoirQueue_DHP_relax_align()
101     {
102         typedef cds::container::MoirQueue < cds::gc::DHP, int,
103             typename cds::container::msqueue::make_traits <
104                 cds::opt::memory_model< cds::opt::v::relaxed_ordering>
105                 , cds::opt::padding < 16 >
106             > ::type
107         > test_queue;
108
109         test_no_ic< test_queue >();
110     }
111
112     void HdrTestQueue::MoirQueue_DHP_Counted_relax_align()
113     {
114         typedef cds::container::MoirQueue < cds::gc::DHP, int,
115             typename cds::container::msqueue::make_traits <
116                 cds::opt::item_counter< cds::atomicity::item_counter >
117                 , cds::opt::memory_model< cds::opt::v::relaxed_ordering>
118                 , cds::opt::padding < 32 >
119             >::type
120         > test_queue;
121
122         test_ic< test_queue >();
123     }
124
125     void HdrTestQueue::MoirQueue_DHP_seqcst_align()
126     {
127         typedef cds::container::MoirQueue < cds::gc::DHP, int,
128             typename cds::container::msqueue::make_traits <
129                 cds::opt::memory_model< cds::opt::v::sequential_consistent>
130                 ,cds::opt::padding < cds::opt::no_special_padding >
131             > ::type
132         > test_queue;
133
134         test_no_ic< test_queue >();
135     }
136
137     void HdrTestQueue::MoirQueue_DHP_Counted_seqcst_align()
138     {
139         typedef cds::container::MoirQueue < cds::gc::DHP, int,
140             typename cds::container::msqueue::make_traits <
141                 cds::opt::item_counter< cds::atomicity::item_counter >
142                 , cds::opt::memory_model< cds::opt::v::sequential_consistent>
143                 , cds::opt::padding < cds::opt::cache_line_padding >
144             > ::type
145         > test_queue;
146         test_ic< test_queue >();
147     }
148 }   // namespace queue