88
99#include < catch2/catch_test_macros.hpp>
1010
11+ #include < cstddef>
1112#include < cstdint>
1213
1314namespace {
@@ -45,58 +46,61 @@ TEST_CASE("subword write optimization", "[mmio_bus]") {
4546 iface::num_loads = {};
4647
4748 SECTION (" write the whole register" ) {
48- bus::write<0xffff'ffffu , 0u , 0u >(addr32, 0xc001'd00du ) |
49- async::sync_wait ();
49+ CHECK ( bus::write<0xffff'ffffu , 0u , 0u >(addr32, 0xc001'd00du ) |
50+ async::sync_wait () );
5051
5152 CHECK (iface::num_stores == 1 );
5253 CHECK (iface::num_loads == 0 );
5354 CHECK (reg32 == 0xc001'd00du );
5455 }
5556
5657 SECTION (" write byte 0" ) {
57- bus::write<0xffu , 0u , 0u >(addr32, 0x38u ) | async::sync_wait ();
58+ CHECK ( bus::write<0xffu , 0u , 0u >(addr32, 0x38u ) | async::sync_wait () );
5859
5960 CHECK (iface::num_stores == 1 );
6061 CHECK (iface::num_loads == 0 );
6162 CHECK (reg32 == 0x8765'4338u );
6263 }
6364
6465 SECTION (" write byte 1" ) {
65- bus::write<0xff00u , 0u , 0u >(addr32, 0x4200u ) | async::sync_wait ();
66+ CHECK (bus::write<0xff00u , 0u , 0u >(addr32, 0x4200u ) |
67+ async::sync_wait ());
6668
6769 CHECK (iface::num_stores == 1 );
6870 CHECK (iface::num_loads == 0 );
6971 CHECK (reg32 == 0x8765'4221u );
7072 }
7173
7274 SECTION (" write byte 2" ) {
73- bus::write<0xff'0000u , 0u , 0u >(addr32, 0x55'0000u ) | async::sync_wait ();
75+ CHECK (bus::write<0xff'0000u , 0u , 0u >(addr32, 0x55'0000u ) |
76+ async::sync_wait ());
7477
7578 CHECK (iface::num_stores == 1 );
7679 CHECK (iface::num_loads == 0 );
7780 CHECK (reg32 == 0x8755'4321u );
7881 }
7982
8083 SECTION (" write byte 3" ) {
81- bus::write<0xff00'0000u , 0u , 0u >(addr32, 0x1300'0000u ) |
82- async::sync_wait ();
84+ CHECK ( bus::write<0xff00'0000u , 0u , 0u >(addr32, 0x1300'0000u ) |
85+ async::sync_wait () );
8386
8487 CHECK (iface::num_stores == 1 );
8588 CHECK (iface::num_loads == 0 );
8689 CHECK (reg32 == 0x1365'4321u );
8790 }
8891
8992 SECTION (" write word at offset 0" ) {
90- bus::write<0xffffu , 0u , 0u >(addr32, 0xd00du ) | async::sync_wait ();
93+ CHECK (bus::write<0xffffu , 0u , 0u >(addr32, 0xd00du ) |
94+ async::sync_wait ());
9195
9296 CHECK (iface::num_stores == 1 );
9397 CHECK (iface::num_loads == 0 );
9498 CHECK (reg32 == 0x8765'd00du );
9599 }
96100
97101 SECTION (" write word at offset 2" ) {
98- bus::write<0xffff'0000u , 0u , 0u >(addr32, 0x6502'0000u ) |
99- async::sync_wait ();
102+ CHECK ( bus::write<0xffff'0000u , 0u , 0u >(addr32, 0x6502'0000u ) |
103+ async::sync_wait () );
100104
101105 CHECK (iface::num_stores == 1 );
102106 CHECK (iface::num_loads == 0 );
@@ -110,15 +114,16 @@ TEST_CASE("read-modify-write", "[mmio_bus]") {
110114 iface::num_loads = {};
111115
112116 SECTION (" write a single bit" ) {
113- bus::write<0x1u , 0u , 0u >(addr32, 0u ) | async::sync_wait ();
117+ CHECK ( bus::write<0x1u , 0u , 0u >(addr32, 0u ) | async::sync_wait () );
114118
115119 CHECK (iface::num_stores == 1 );
116120 CHECK (iface::num_loads == 1 );
117121 CHECK (reg32 == 0xffff'fffeu );
118122 }
119123
120124 SECTION (" write a nibble" ) {
121- bus::write<0xf000u , 0u , 0u >(addr32, 0x7000u ) | async::sync_wait ();
125+ CHECK (bus::write<0xf000u , 0u , 0u >(addr32, 0x7000u ) |
126+ async::sync_wait ());
122127
123128 CHECK (iface::num_stores == 1 );
124129 CHECK (iface::num_loads == 1 );
@@ -132,89 +137,91 @@ TEST_CASE("idmask write optimization", "[mmio_bus]") {
132137 iface::num_loads = {};
133138
134139 SECTION (" write bit in byte 0" ) {
135- bus::write<0x1u , 0xffff'fffeu , 0xffff'fffeu >(addr32, 0u ) |
136- async::sync_wait ();
140+ CHECK ( bus::write<0x1u , 0xffff'fffeu , 0xffff'fffeu >(addr32, 0u ) |
141+ async::sync_wait () );
137142
138143 CHECK (iface::num_stores == 1 );
139144 CHECK (iface::num_loads == 0 );
140145 CHECK (reg32 == 0xffff'fffeu );
141146 }
142147 SECTION (" write bit in byte 0 - requires subword write" ) {
143- bus::write<0x1u , 0xfeu , 0xfeu >(addr32, 0u ) | async::sync_wait ();
148+ CHECK ( bus::write<0x1u , 0xfeu , 0xfeu >(addr32, 0u ) | async::sync_wait () );
144149
145150 CHECK (iface::num_stores == 1 );
146151 CHECK (iface::num_loads == 0 );
147152 CHECK (reg32 == 0xffff'fffeu );
148153 }
149154
150155 SECTION (" write nibble in byte 1" ) {
151- bus::write<0x0f00u , 0xffff'f0ffu , 0xffff'f0ffu >(addr32, 0x0300u ) |
152- async::sync_wait ();
156+ CHECK ( bus::write<0x0f00u , 0xffff'f0ffu , 0xffff'f0ffu >(addr32, 0x0300u ) |
157+ async::sync_wait () );
153158
154159 CHECK (iface::num_stores == 1 );
155160 CHECK (iface::num_loads == 0 );
156161 CHECK (reg32 == 0xffff'f3ffu );
157162 }
158163
159164 SECTION (" write nibble in byte 1 - requires subword write" ) {
160- bus::write<0x0f00u , 0xf0ffu , 0xf0ffu >(addr32, 0x0300u ) |
161- async::sync_wait ();
165+ CHECK ( bus::write<0x0f00u , 0xf0ffu , 0xf0ffu >(addr32, 0x0300u ) |
166+ async::sync_wait () );
162167
163168 CHECK (iface::num_stores == 1 );
164169 CHECK (iface::num_loads == 0 );
165170 CHECK (reg32 == 0xffff'f3ffu );
166171 }
167172
168173 SECTION (" write across two bytes - requires subword write" ) {
169- bus::write<0x0ff0u , 0xf00fu , 0xf00fu >(addr32, 0x0340u ) |
170- async::sync_wait ();
174+ CHECK ( bus::write<0x0ff0u , 0xf00fu , 0xf00fu >(addr32, 0x0340u ) |
175+ async::sync_wait () );
171176
172177 CHECK (iface::num_stores == 1 );
173178 CHECK (iface::num_loads == 0 );
174179 CHECK (reg32 == 0xffff'f34fu );
175180 }
176181
177182 SECTION (" write nibble in byte 2" ) {
178- bus::write<0xf0'0000u , 0xff0f'ffffu , 0xff0f'ffffu >(addr32, 0x40'0000u ) |
179- async::sync_wait ();
183+ CHECK (bus::write<0xf0'0000u , 0xff0f'ffffu , 0xff0f'ffffu >(addr32,
184+ 0x40'0000u ) |
185+ async::sync_wait ());
180186
181187 CHECK (iface::num_stores == 1 );
182188 CHECK (iface::num_loads == 0 );
183189 CHECK (reg32 == 0xff4f'ffffu );
184190 }
185191
186192 SECTION (" write nibble in byte 3" ) {
187- bus::write<0x0f00'0000u , 0xf0ff'ffffu , 0xf0ff'ffffu >(addr32,
188- 0x1300'0000u ) |
189- async::sync_wait ();
193+ CHECK ( bus::write<0x0f00'0000u , 0xf0ff'ffffu , 0xf0ff'ffffu >(
194+ addr32, 0x1300'0000u ) |
195+ async::sync_wait () );
190196
191197 CHECK (iface::num_stores == 1 );
192198 CHECK (iface::num_loads == 0 );
193199 CHECK (reg32 == 0xf3ff'ffffu );
194200 }
195201
196202 SECTION (" write across three bytes" ) {
197- bus::write<0xff'ffffu , 0xff00'0000u , 0xff00'0000u >(addr32, 0x41'd00du ) |
198- async::sync_wait ();
203+ CHECK (bus::write<0xff'ffffu , 0xff00'0000u , 0xff00'0000u >(addr32,
204+ 0x41'd00du ) |
205+ async::sync_wait ());
199206
200207 CHECK (iface::num_stores == 1 );
201208 CHECK (iface::num_loads == 0 );
202209 CHECK (reg32 == 0xff41'd00du );
203210 }
204211
205212 SECTION (" write across three bytes - check id bit write" ) {
206- bus::write<0x00ff'ffffu , 0xff00'0000u , 0u >(addr32, 0x41'd00du ) |
207- async::sync_wait ();
213+ CHECK ( bus::write<0x00ff'ffffu , 0xff00'0000u , 0u >(addr32, 0x41'd00du ) |
214+ async::sync_wait () );
208215
209216 CHECK (iface::num_stores == 1 );
210217 CHECK (iface::num_loads == 0 );
211218 CHECK (reg32 == 0x0041'd00du );
212219 }
213220
214221 SECTION (" write across three bytes - start at byte 1" ) {
215- bus::write<0xffff'ff00u , 0x0000'00ffu , 0x0000'00ffu >(addr32,
216- 0x41d0'0d00u ) |
217- async::sync_wait ();
222+ CHECK ( bus::write<0xffff'ff00u , 0x0000'00ffu , 0x0000'00ffu >(
223+ addr32, 0x41d0'0d00u ) |
224+ async::sync_wait () );
218225
219226 CHECK (iface::num_stores == 1 );
220227 CHECK (iface::num_loads == 0 );
0 commit comments