| OLD | NEW |
| 1 /* crosstest.py --test=mem_intrin.cpp --driver=mem_intrin_main.cpp \ | 1 /* crosstest.py --test=mem_intrin.cpp --driver=mem_intrin_main.cpp \ |
| 2 --prefix=Subzero_ --output=mem_intrin */ | 2 --prefix=Subzero_ --output=mem_intrin */ |
| 3 | 3 |
| 4 #include <stdint.h> /* cstdint requires -std=c++0x or higher */ | 4 #include <stdint.h> /* cstdint requires -std=c++0x or higher */ |
| 5 #include <cstdio> | 5 #include <cstdio> |
| 6 | 6 |
| 7 #include "mem_intrin.h" | 7 #include "mem_intrin.h" |
| 8 namespace Subzero_ { | 8 namespace Subzero_ { |
| 9 #include "mem_intrin.h" | 9 #include "mem_intrin.h" |
| 10 } | 10 } |
| 11 | 11 |
| 12 #define XSTR(s) STR(s) | 12 #define XSTR(s) STR(s) |
| 13 #define STR(s) #s | 13 #define STR(s) #s |
| 14 | 14 |
| 15 void testFixedLen(size_t &TotalTests, size_t &Passes, size_t &Failures) { | |
| 16 #define do_test_fixed(test_func) \ | |
| 17 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \ | |
| 18 ++TotalTests; \ | |
| 19 int llc_result = test_func(init_val); \ | |
| 20 int sz_result = Subzero_::test_func(init_val); \ | |
| 21 if (llc_result == sz_result) { \ | |
| 22 ++Passes; \ | |
| 23 } else { \ | |
| 24 ++Failures; \ | |
| 25 printf("Failure (%s): init_val=%d, llc=%d, sz=%d\n", STR(test_func), \ | |
| 26 init_val, llc_result, sz_result); \ | |
| 27 } \ | |
| 28 } | |
| 29 | |
| 30 do_test_fixed(memcpy_test_fixed_len); | |
| 31 do_test_fixed(memmove_test_fixed_len); | |
| 32 do_test_fixed(memset_test_fixed_len) | |
| 33 #undef do_test_fixed | |
| 34 } | |
| 35 | |
| 36 void testVariableLen(size_t &TotalTests, size_t &Passes, size_t &Failures) { | 15 void testVariableLen(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
| 37 uint8_t buf[256]; | 16 uint8_t buf[256]; |
| 38 uint8_t buf2[256]; | 17 uint8_t buf2[256]; |
| 39 #define do_test_variable(test_func) \ | 18 #define do_test_variable(test_func) \ |
| 40 for (size_t len = 4; len < 128; ++len) { \ | 19 for (size_t len = 4; len < 128; ++len) { \ |
| 41 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \ | 20 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \ |
| 42 ++TotalTests; \ | 21 ++TotalTests; \ |
| 43 int llc_result = test_func(buf, buf2, init_val, len); \ | 22 int llc_result = test_func(buf, buf2, init_val, len); \ |
| 44 int sz_result = Subzero_::test_func(buf, buf2, init_val, len); \ | 23 int sz_result = Subzero_::test_func(buf, buf2, init_val, len); \ |
| 45 if (llc_result == sz_result) { \ | 24 if (llc_result == sz_result) { \ |
| 46 ++Passes; \ | 25 ++Passes; \ |
| 47 } else { \ | 26 } else { \ |
| 48 ++Failures; \ | 27 ++Failures; \ |
| 49 printf("Failure (%s): init_val=%d, len=%d, llc=%d, sz=%d\n", \ | 28 printf("Failure (%s): init_val=%d, len=%d, llc=%d, sz=%d\n", \ |
| 50 STR(test_func), init_val, len, llc_result, sz_result); \ | 29 STR(test_func), init_val, len, llc_result, sz_result); \ |
| 51 } \ | 30 } \ |
| 52 } \ | 31 } \ |
| 53 } | 32 } |
| 54 | 33 |
| 55 do_test_variable(memcpy_test); | 34 do_test_variable(memcpy_test); |
| 56 do_test_variable(memmove_test); | 35 do_test_variable(memmove_test); |
| 57 do_test_variable(memset_test) | 36 do_test_variable(memset_test) |
| 58 #undef do_test_variable | 37 #undef do_test_variable |
| 59 } | 38 } |
| 60 | 39 |
| 40 void testFixedLen(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
| 41 #define do_test_fixed(test_func, NBYTES) \ |
| 42 for (uint8_t init_val = 0; init_val < 100; ++init_val) { \ |
| 43 ++TotalTests; \ |
| 44 int llc_result = test_func##_##NBYTES(init_val); \ |
| 45 int sz_result = Subzero_::test_func##_##NBYTES(init_val); \ |
| 46 if (llc_result == sz_result) { \ |
| 47 ++Passes; \ |
| 48 } else { \ |
| 49 ++Failures; \ |
| 50 printf("Failure (%s): init_val=%d, len=%d, llc=%d, sz=%d\n", \ |
| 51 STR(test_func), init_val, NBYTES, llc_result, sz_result); \ |
| 52 } \ |
| 53 } |
| 54 |
| 55 #define do_all_test_fixed(NBYTES) \ |
| 56 do_test_fixed(memcpy_test_fixed_len, NBYTES); \ |
| 57 do_test_fixed(memmove_test_fixed_len, NBYTES); \ |
| 58 do_test_fixed(memset_test_fixed_len, NBYTES); |
| 59 |
| 60 do_all_test_fixed(1); |
| 61 do_all_test_fixed(2); |
| 62 do_all_test_fixed(3); |
| 63 do_all_test_fixed(4); |
| 64 do_all_test_fixed(5); |
| 65 do_all_test_fixed(6); |
| 66 do_all_test_fixed(7); |
| 67 do_all_test_fixed(8); |
| 68 do_all_test_fixed(9); |
| 69 do_all_test_fixed(10); |
| 70 do_all_test_fixed(11); |
| 71 do_all_test_fixed(12); |
| 72 do_all_test_fixed(13); |
| 73 do_all_test_fixed(14); |
| 74 do_all_test_fixed(15); |
| 75 do_all_test_fixed(16); |
| 76 do_all_test_fixed(17); |
| 77 do_all_test_fixed(18); |
| 78 do_all_test_fixed(19); |
| 79 do_all_test_fixed(20); |
| 80 do_all_test_fixed(21); |
| 81 do_all_test_fixed(22); |
| 82 do_all_test_fixed(23); |
| 83 do_all_test_fixed(24); |
| 84 do_all_test_fixed(25); |
| 85 do_all_test_fixed(26); |
| 86 do_all_test_fixed(27); |
| 87 do_all_test_fixed(28); |
| 88 do_all_test_fixed(29); |
| 89 do_all_test_fixed(30); |
| 90 do_all_test_fixed(31); |
| 91 do_all_test_fixed(32); |
| 92 do_all_test_fixed(33); |
| 93 do_all_test_fixed(34); |
| 94 do_all_test_fixed(35); |
| 95 do_all_test_fixed(36); |
| 96 do_all_test_fixed(37); |
| 97 do_all_test_fixed(38); |
| 98 do_all_test_fixed(39); |
| 99 do_all_test_fixed(40); |
| 100 do_all_test_fixed(41); |
| 101 do_all_test_fixed(42); |
| 102 do_all_test_fixed(43); |
| 103 do_all_test_fixed(44); |
| 104 do_all_test_fixed(45); |
| 105 do_all_test_fixed(46); |
| 106 do_all_test_fixed(47); |
| 107 do_all_test_fixed(48); |
| 108 do_all_test_fixed(49); |
| 109 do_all_test_fixed(50); |
| 110 do_all_test_fixed(51); |
| 111 do_all_test_fixed(52); |
| 112 do_all_test_fixed(53); |
| 113 do_all_test_fixed(54); |
| 114 do_all_test_fixed(55); |
| 115 do_all_test_fixed(56); |
| 116 do_all_test_fixed(57); |
| 117 do_all_test_fixed(58); |
| 118 do_all_test_fixed(59); |
| 119 do_all_test_fixed(60); |
| 120 do_all_test_fixed(61); |
| 121 do_all_test_fixed(62); |
| 122 do_all_test_fixed(63); |
| 123 do_all_test_fixed(64); |
| 124 do_all_test_fixed(65); |
| 125 do_all_test_fixed(66); |
| 126 do_all_test_fixed(67); |
| 127 do_all_test_fixed(68); |
| 128 do_all_test_fixed(69); |
| 129 do_all_test_fixed(70); |
| 130 do_all_test_fixed(71); |
| 131 do_all_test_fixed(72); |
| 132 do_all_test_fixed(73); |
| 133 do_all_test_fixed(74); |
| 134 do_all_test_fixed(75); |
| 135 do_all_test_fixed(76); |
| 136 do_all_test_fixed(77); |
| 137 do_all_test_fixed(78); |
| 138 do_all_test_fixed(79); |
| 139 do_all_test_fixed(80); |
| 140 do_all_test_fixed(81); |
| 141 do_all_test_fixed(82); |
| 142 do_all_test_fixed(83); |
| 143 do_all_test_fixed(84); |
| 144 do_all_test_fixed(85); |
| 145 do_all_test_fixed(86); |
| 146 do_all_test_fixed(87); |
| 147 do_all_test_fixed(88); |
| 148 do_all_test_fixed(89); |
| 149 do_all_test_fixed(90); |
| 150 do_all_test_fixed(91); |
| 151 do_all_test_fixed(92); |
| 152 do_all_test_fixed(93); |
| 153 do_all_test_fixed(94); |
| 154 do_all_test_fixed(95); |
| 155 do_all_test_fixed(96); |
| 156 do_all_test_fixed(97); |
| 157 do_all_test_fixed(98); |
| 158 do_all_test_fixed(99); |
| 159 do_all_test_fixed(100); |
| 160 do_all_test_fixed(101); |
| 161 do_all_test_fixed(102); |
| 162 do_all_test_fixed(103); |
| 163 do_all_test_fixed(104); |
| 164 do_all_test_fixed(105); |
| 165 do_all_test_fixed(106); |
| 166 do_all_test_fixed(107); |
| 167 do_all_test_fixed(108); |
| 168 do_all_test_fixed(109); |
| 169 do_all_test_fixed(110); |
| 170 do_all_test_fixed(111); |
| 171 do_all_test_fixed(112); |
| 172 do_all_test_fixed(113); |
| 173 do_all_test_fixed(114); |
| 174 do_all_test_fixed(115); |
| 175 do_all_test_fixed(116); |
| 176 do_all_test_fixed(117); |
| 177 do_all_test_fixed(118); |
| 178 do_all_test_fixed(119); |
| 179 do_all_test_fixed(120); |
| 180 do_all_test_fixed(121); |
| 181 do_all_test_fixed(122); |
| 182 do_all_test_fixed(123); |
| 183 do_all_test_fixed(124); |
| 184 do_all_test_fixed(125); |
| 185 do_all_test_fixed(126); |
| 186 do_all_test_fixed(127); |
| 187 do_all_test_fixed(128); |
| 188 do_all_test_fixed(129); |
| 189 do_all_test_fixed(130); |
| 190 do_all_test_fixed(131); |
| 191 do_all_test_fixed(132); |
| 192 do_all_test_fixed(133); |
| 193 do_all_test_fixed(134); |
| 194 do_all_test_fixed(135); |
| 195 do_all_test_fixed(136); |
| 196 do_all_test_fixed(137); |
| 197 do_all_test_fixed(138); |
| 198 do_all_test_fixed(139); |
| 199 do_all_test_fixed(140); |
| 200 do_all_test_fixed(141); |
| 201 do_all_test_fixed(142); |
| 202 do_all_test_fixed(143); |
| 203 do_all_test_fixed(144); |
| 204 do_all_test_fixed(145); |
| 205 do_all_test_fixed(146); |
| 206 do_all_test_fixed(147); |
| 207 do_all_test_fixed(148); |
| 208 do_all_test_fixed(149); |
| 209 do_all_test_fixed(150); |
| 210 do_all_test_fixed(151); |
| 211 do_all_test_fixed(152); |
| 212 do_all_test_fixed(153); |
| 213 do_all_test_fixed(154); |
| 214 do_all_test_fixed(155); |
| 215 do_all_test_fixed(156); |
| 216 do_all_test_fixed(157); |
| 217 do_all_test_fixed(158); |
| 218 do_all_test_fixed(159); |
| 219 do_all_test_fixed(160); |
| 220 do_all_test_fixed(161); |
| 221 do_all_test_fixed(162); |
| 222 do_all_test_fixed(163); |
| 223 do_all_test_fixed(164); |
| 224 do_all_test_fixed(165); |
| 225 do_all_test_fixed(166); |
| 226 do_all_test_fixed(167); |
| 227 do_all_test_fixed(168); |
| 228 do_all_test_fixed(169); |
| 229 do_all_test_fixed(170); |
| 230 do_all_test_fixed(171); |
| 231 do_all_test_fixed(172); |
| 232 do_all_test_fixed(173); |
| 233 do_all_test_fixed(174); |
| 234 do_all_test_fixed(175); |
| 235 do_all_test_fixed(176); |
| 236 do_all_test_fixed(177); |
| 237 do_all_test_fixed(178); |
| 238 do_all_test_fixed(179); |
| 239 do_all_test_fixed(180); |
| 240 do_all_test_fixed(181); |
| 241 do_all_test_fixed(182); |
| 242 do_all_test_fixed(183); |
| 243 do_all_test_fixed(184); |
| 244 do_all_test_fixed(185); |
| 245 do_all_test_fixed(186); |
| 246 do_all_test_fixed(187); |
| 247 do_all_test_fixed(188); |
| 248 do_all_test_fixed(189); |
| 249 do_all_test_fixed(190); |
| 250 do_all_test_fixed(191); |
| 251 do_all_test_fixed(192); |
| 252 do_all_test_fixed(193); |
| 253 do_all_test_fixed(194); |
| 254 do_all_test_fixed(195); |
| 255 do_all_test_fixed(196); |
| 256 do_all_test_fixed(197); |
| 257 do_all_test_fixed(198); |
| 258 do_all_test_fixed(199); |
| 259 do_all_test_fixed(200); |
| 260 do_all_test_fixed(201); |
| 261 do_all_test_fixed(202); |
| 262 do_all_test_fixed(203); |
| 263 do_all_test_fixed(204); |
| 264 do_all_test_fixed(205); |
| 265 do_all_test_fixed(206); |
| 266 do_all_test_fixed(207); |
| 267 do_all_test_fixed(208); |
| 268 do_all_test_fixed(209); |
| 269 do_all_test_fixed(210); |
| 270 do_all_test_fixed(211); |
| 271 do_all_test_fixed(212); |
| 272 do_all_test_fixed(213); |
| 273 do_all_test_fixed(214); |
| 274 do_all_test_fixed(215); |
| 275 do_all_test_fixed(216); |
| 276 do_all_test_fixed(217); |
| 277 do_all_test_fixed(218); |
| 278 do_all_test_fixed(219); |
| 279 do_all_test_fixed(220); |
| 280 do_all_test_fixed(221); |
| 281 do_all_test_fixed(222); |
| 282 do_all_test_fixed(223); |
| 283 do_all_test_fixed(224); |
| 284 do_all_test_fixed(225); |
| 285 do_all_test_fixed(226); |
| 286 do_all_test_fixed(227); |
| 287 do_all_test_fixed(228); |
| 288 do_all_test_fixed(229); |
| 289 do_all_test_fixed(230); |
| 290 do_all_test_fixed(231); |
| 291 do_all_test_fixed(232); |
| 292 do_all_test_fixed(233); |
| 293 do_all_test_fixed(234); |
| 294 do_all_test_fixed(235); |
| 295 do_all_test_fixed(236); |
| 296 do_all_test_fixed(237); |
| 297 do_all_test_fixed(238); |
| 298 do_all_test_fixed(239); |
| 299 do_all_test_fixed(240); |
| 300 do_all_test_fixed(241); |
| 301 do_all_test_fixed(242); |
| 302 do_all_test_fixed(243); |
| 303 do_all_test_fixed(244); |
| 304 do_all_test_fixed(245); |
| 305 do_all_test_fixed(246); |
| 306 do_all_test_fixed(247); |
| 307 do_all_test_fixed(248); |
| 308 do_all_test_fixed(249); |
| 309 do_all_test_fixed(250); |
| 310 do_all_test_fixed(251); |
| 311 do_all_test_fixed(252); |
| 312 do_all_test_fixed(253); |
| 313 do_all_test_fixed(254); |
| 314 do_all_test_fixed(255); |
| 315 do_all_test_fixed(256); |
| 316 |
| 317 #undef do_test_fixed |
| 318 #undef do_all_test_fixed |
| 319 } |
| 320 |
| 61 int main(int argc, char **argv) { | 321 int main(int argc, char **argv) { |
| 62 unsigned TotalTests = 0; | 322 unsigned TotalTests = 0; |
| 63 unsigned Passes = 0; | 323 unsigned Passes = 0; |
| 64 unsigned Failures = 0; | 324 unsigned Failures = 0; |
| 65 testFixedLen(TotalTests, Passes, Failures); | 325 testFixedLen(TotalTests, Passes, Failures); |
| 66 testVariableLen(TotalTests, Passes, Failures); | 326 testVariableLen(TotalTests, Passes, Failures); |
| 67 printf("TotalTests=%u Passes=%u Failures=%u\n", TotalTests, Passes, Failures); | 327 printf("TotalTests=%u Passes=%u Failures=%u\n", TotalTests, Passes, Failures); |
| 68 return Failures; | 328 return Failures; |
| 69 } | 329 } |
| OLD | NEW |