[741] | 1 | #include <string.h> |
---|
| 2 | #include <stdio.h> |
---|
| 3 | #include <stdlib.h> |
---|
| 4 | #include <errno.h> |
---|
| 5 | #include <sys/types.h> |
---|
| 6 | #include <sys/stat.h> |
---|
| 7 | |
---|
| 8 | #include "../lib/lib_simd.h" |
---|
| 9 | #include "../lib/block_carry.h" |
---|
| 10 | #include "../lib/perflib/perfsec.h" |
---|
| 11 | #include "../lib/s2p.h" |
---|
| 12 | |
---|
| 13 | typedef SIMD_type BytePack; |
---|
| 14 | typedef SIMD_type BitBlock; |
---|
| 15 | |
---|
| 16 | #define BLOCK_SIZE (sizeof(SIMD_type) * 8) /* BLOCK_SIZE - SIMD register in bits */ |
---|
| 17 | #define BUFFER_SIZE (BLOCK_SIZE * 16) /* BUFFER_SIZE - multiple of BLOCK_SIZE */ |
---|
[744] | 18 | #define OVERLAP_BUFSIZE BLOCK_SIZE /* OVERLAP_BUFSIZE - SIMD register width in bytes overlap */ |
---|
[741] | 19 | |
---|
| 20 | #ifdef BUFFER_PROFILING |
---|
| 21 | BOM_Table * perf_timer; |
---|
| 22 | #elif CODE_CLOCKER |
---|
| 23 | #define NUM_EVENTS 1 |
---|
| 24 | int Events[NUM_EVENTS] = {PAPI_TOT_CYC}; |
---|
| 25 | //int Events[NUM_EVENTS] = {PAPI_L2_DCM}; |
---|
| 26 | //int Events[NUM_EVENTS] = {PAPI_TOT_CYC, PAPI_BR_MSP}; |
---|
| 27 | int cal_size = 20; |
---|
| 28 | CC * perf_timer = new CC(Events,NUM_EVENTS,cal_size); |
---|
| 29 | #else |
---|
| 30 | void * perf_timer; |
---|
| 31 | #endif |
---|
| 32 | |
---|
| 33 | void do_process(FILE *infile, FILE *outfile) { |
---|
| 34 | |
---|
| 35 | /* Compiler generated stream variable declarations. */ |
---|
| 36 | BitBlock temp40; |
---|
| 37 | BitBlock temp41; |
---|
| 38 | BitBlock strct_Lex__RSquareBracket_; |
---|
| 39 | BitBlock strct_Lex__Ee_; |
---|
| 40 | BitBlock temp44; |
---|
| 41 | BitBlock temp45; |
---|
| 42 | BitBlock temp46; |
---|
| 43 | BitBlock temp47; |
---|
| 44 | BitBlock temp48; |
---|
| 45 | BitBlock temp49; |
---|
| 46 | BitBlock temp42; |
---|
| 47 | BitBlock strct_u8__xF4_; |
---|
| 48 | BitBlock temp43; |
---|
[744] | 49 | BitBlock strct_Lex__True_; |
---|
[741] | 50 | BitBlock strct_Lex__Null_; |
---|
| 51 | BitBlock temp10; |
---|
| 52 | BitBlock array_bit__2_; |
---|
| 53 | BitBlock strct_u8__suffix_; |
---|
| 54 | BitBlock strct_u8__xE0_; |
---|
| 55 | BitBlock temp59; |
---|
| 56 | BitBlock temp58; |
---|
| 57 | BitBlock temp57; |
---|
| 58 | BitBlock temp56; |
---|
| 59 | BitBlock temp55; |
---|
| 60 | BitBlock temp54; |
---|
| 61 | BitBlock strct_Lex__LSquareBracket_; |
---|
| 62 | BitBlock temp52; |
---|
| 63 | BitBlock temp51; |
---|
| 64 | BitBlock temp50; |
---|
| 65 | BitBlock strct_Ctrl__CR_; |
---|
| 66 | BitBlock strct_Lex__f_; |
---|
[744] | 67 | BitBlock UnescapedDQuotes; |
---|
| 68 | BitBlock OddFinal; |
---|
[741] | 69 | BitBlock strct_u8__unibyte_; |
---|
| 70 | BitBlock array_bit__3_; |
---|
| 71 | BitBlock strct_u8__xED_; |
---|
| 72 | BitBlock strct_Ctrl__HT_; |
---|
| 73 | BitBlock temp28; |
---|
| 74 | BitBlock temp29; |
---|
| 75 | BitBlock temp22; |
---|
[744] | 76 | BitBlock EvenStart; |
---|
[741] | 77 | BitBlock temp20; |
---|
| 78 | BitBlock temp21; |
---|
| 79 | BitBlock temp26; |
---|
| 80 | BitBlock temp27; |
---|
| 81 | BitBlock temp24; |
---|
| 82 | BitBlock temp25; |
---|
| 83 | BitBlock temp3; |
---|
| 84 | BitBlock temp2; |
---|
| 85 | BitBlock temp1; |
---|
[744] | 86 | BitBlock OddEscape; |
---|
[741] | 87 | BitBlock temp7; |
---|
| 88 | BitBlock temp6; |
---|
| 89 | BitBlock temp5; |
---|
| 90 | BitBlock temp4; |
---|
| 91 | BitBlock temp9; |
---|
| 92 | BitBlock temp8; |
---|
| 93 | BitBlock strct_Lex__a_; |
---|
| 94 | BitBlock strct_u8__x80_x8F_; |
---|
[744] | 95 | BitBlock StringMask; |
---|
[741] | 96 | BitBlock strct_u8__prefix2_; |
---|
| 97 | BitBlock array_bit__0_; |
---|
| 98 | BitBlock temp39; |
---|
| 99 | BitBlock temp38; |
---|
| 100 | BitBlock strct_Lex__Minus_; |
---|
| 101 | BitBlock strct_u8__prefix4_; |
---|
| 102 | BitBlock temp31; |
---|
| 103 | BitBlock temp30; |
---|
| 104 | BitBlock temp33; |
---|
| 105 | BitBlock temp32; |
---|
| 106 | BitBlock strct_Lex__LCurlyBrace_; |
---|
| 107 | BitBlock temp34; |
---|
| 108 | BitBlock temp37; |
---|
| 109 | BitBlock temp36; |
---|
[744] | 110 | BitBlock ParityMask; |
---|
[741] | 111 | BitBlock AllZero = simd_const_1(0); |
---|
| 112 | BitBlock temp35; |
---|
[744] | 113 | BitBlock EvenFinal; |
---|
[741] | 114 | BitBlock strct_Lex__DQuote_; |
---|
[744] | 115 | BitBlock EvenEscape; |
---|
[741] | 116 | BitBlock strct_Lex__RSolidus_; |
---|
[744] | 117 | BitBlock Escape; |
---|
[741] | 118 | BitBlock array_bit__1_; |
---|
[744] | 119 | BitBlock Even; |
---|
[741] | 120 | BitBlock array_bit__6_; |
---|
| 121 | BitBlock strct_Lex__r_; |
---|
[744] | 122 | BitBlock Start; |
---|
[741] | 123 | BitBlock strct_u8__xF0_; |
---|
[744] | 124 | BitBlock strct_Ctrl__x00_x1F_; |
---|
[741] | 125 | BitBlock strct_u8__x90_xBF_; |
---|
[744] | 126 | BitBlock strct_u8__badprefix_; |
---|
| 127 | BitBlock strct_Ctrl__SP_; |
---|
[741] | 128 | BitBlock strct_Lex__False_; |
---|
| 129 | BitBlock temp23; |
---|
| 130 | BitBlock strct_Lex__Digit0_9_; |
---|
| 131 | BitBlock strct_Lex__Comma_; |
---|
| 132 | BitBlock array_bit__7_; |
---|
| 133 | BitBlock strct_Lex__Colon_; |
---|
[744] | 134 | BitBlock OddStart; |
---|
[741] | 135 | BitBlock temp53; |
---|
| 136 | BitBlock strct_Lex__DecimalPoint_; |
---|
[744] | 137 | BitBlock EscapeChars; |
---|
[741] | 138 | BitBlock temp88; |
---|
| 139 | BitBlock temp89; |
---|
| 140 | BitBlock temp84; |
---|
| 141 | BitBlock temp85; |
---|
| 142 | BitBlock temp86; |
---|
| 143 | BitBlock temp87; |
---|
| 144 | BitBlock temp80; |
---|
| 145 | BitBlock temp81; |
---|
| 146 | BitBlock temp82; |
---|
| 147 | BitBlock temp83; |
---|
| 148 | BitBlock strct_u8__xA0_xBF_; |
---|
| 149 | BitBlock strct_u8__prefix3_; |
---|
[744] | 150 | BitBlock Odd; |
---|
[741] | 151 | BitBlock temp66; |
---|
| 152 | BitBlock temp67; |
---|
| 153 | BitBlock temp64; |
---|
| 154 | BitBlock temp65; |
---|
| 155 | BitBlock temp62; |
---|
| 156 | BitBlock temp63; |
---|
| 157 | BitBlock temp60; |
---|
| 158 | BitBlock temp61; |
---|
| 159 | BitBlock temp68; |
---|
| 160 | BitBlock temp69; |
---|
| 161 | BitBlock strct_Lex__e_; |
---|
| 162 | BitBlock strct_Lex__PlusMinus_; |
---|
| 163 | BitBlock strct_Lex__u_; |
---|
| 164 | BitBlock strct_u8__x80_x9F_; |
---|
| 165 | BitBlock strct_Lex__Zero_; |
---|
| 166 | BitBlock temp13; |
---|
| 167 | BitBlock temp12; |
---|
| 168 | BitBlock temp11; |
---|
| 169 | BitBlock array_bit__4_; |
---|
| 170 | BitBlock temp17; |
---|
| 171 | BitBlock temp16; |
---|
| 172 | BitBlock temp15; |
---|
| 173 | BitBlock temp14; |
---|
| 174 | BitBlock temp19; |
---|
| 175 | BitBlock temp18; |
---|
| 176 | BitBlock temp75; |
---|
| 177 | BitBlock temp74; |
---|
| 178 | BitBlock temp77; |
---|
| 179 | BitBlock temp76; |
---|
| 180 | BitBlock temp71; |
---|
| 181 | BitBlock temp70; |
---|
| 182 | BitBlock temp73; |
---|
| 183 | BitBlock temp72; |
---|
| 184 | BitBlock strct_Lex__Number_; |
---|
| 185 | BitBlock strct_Lex__n_; |
---|
| 186 | BitBlock strct_Lex__l_; |
---|
| 187 | BitBlock temp79; |
---|
| 188 | BitBlock temp78; |
---|
| 189 | BitBlock strct_u8__prefix_; |
---|
| 190 | BitBlock strct_Lex__s_; |
---|
| 191 | BitBlock strct_Lex__WS_; |
---|
| 192 | BitBlock array_bit__5_; |
---|
| 193 | BitBlock AllOne = simd_const_1(1); |
---|
| 194 | BitBlock strct_Lex__t_; |
---|
| 195 | BitBlock strct_Ctrl__LF_; |
---|
[744] | 196 | BitBlock StringSpans; |
---|
[741] | 197 | BitBlock strct_Lex__Escape_; |
---|
| 198 | BitBlock Temp3; |
---|
| 199 | BitBlock Temp2; |
---|
| 200 | BitBlock Temp1; |
---|
[744] | 201 | BitBlock Temp7; |
---|
| 202 | BitBlock Temp6; |
---|
| 203 | BitBlock Temp5; |
---|
[741] | 204 | BitBlock Temp4; |
---|
| 205 | BitBlock strct_Lex__HexDigit_; |
---|
| 206 | BitBlock strct_Lex__RCurlyBrace_; |
---|
[744] | 207 | BitBlock Temp8; |
---|
[741] | 208 | BitBlock strct_Lex__Digit1_9_; |
---|
[744] | 209 | CarryType carry1 = Carry0; |
---|
| 210 | CarryType carry0 = Carry0; |
---|
| 211 | CarryType carry3 = Carry0; |
---|
| 212 | CarryType carry2 = Carry0; |
---|
[741] | 213 | |
---|
| 214 | |
---|
| 215 | BitBlock error_mask; |
---|
| 216 | BitBlock EOF_mask = simd_const_1(1); |
---|
| 217 | |
---|
| 218 | /*extra*/ |
---|
[744] | 219 | /* parse_escape, do not declare, since the PyBit compiler does so by default*/ |
---|
| 220 | Odd = simd_const_2(1); |
---|
| 221 | Even = simd_const_2(2); |
---|
| 222 | |
---|
[741] | 223 | BitBlock high_bit_mask = sisd_high_bit_mask; |
---|
| 224 | BitBlock high_bit_is_set; |
---|
[744] | 225 | // BitBlock ParityMask = simd_const_1(0); // ParityMask declaration via PyBit |
---|
[741] | 226 | BitBlock bitblock_parity_mask; |
---|
| 227 | |
---|
| 228 | /* 8 * sizeof(SIMD_type) bytes. */ |
---|
| 229 | BytePack U8[8]; |
---|
| 230 | |
---|
| 231 | /* Source file data is broken into buffers, buffers are broken into blocks, blocks are SIMD register width. */ |
---|
| 232 | int src_pos = 0; |
---|
| 233 | int buf_pos = 0; |
---|
| 234 | int err_pos = 0; |
---|
| 235 | |
---|
| 236 | BytePack buf[(OVERLAP_BUFSIZE+BUFFER_SIZE+OVERLAP_BUFSIZE)/sizeof(SIMD_type)]; |
---|
| 237 | char * srcbuf = ((char *) buf) + OVERLAP_BUFSIZE; |
---|
| 238 | memset((unsigned char *)srcbuf,0,16); |
---|
| 239 | memset(((unsigned char *)srcbuf)+BUFFER_SIZE,0,16); /* Zero out first and last sizeof(SIMD_type) bytes. */ |
---|
| 240 | |
---|
| 241 | /* File IO */ |
---|
| 242 | int chars_avail = 0; |
---|
| 243 | int chars_read = 0; |
---|
| 244 | |
---|
| 245 | chars_read = fread((void *)srcbuf, 1, BUFFER_SIZE, infile); |
---|
| 246 | chars_avail = chars_read; |
---|
| 247 | if(ferror(infile)) { fprintf(stderr, "Error: Failed to read input file.\n"); return; } |
---|
| 248 | if(chars_avail==0 && feof(infile)) { return; } |
---|
| 249 | |
---|
| 250 | |
---|
| 251 | |
---|
| 252 | while(1) { |
---|
| 253 | |
---|
| 254 | PERF_SEC_START(perf_timer); |
---|
| 255 | |
---|
| 256 | while (chars_avail >= BLOCK_SIZE) { /* process full blocks */ |
---|
| 257 | |
---|
| 258 | BytePack * U8 = (BytePack *) &srcbuf[buf_pos]; |
---|
| 259 | |
---|
| 260 | s2p(U8[0], U8[1], U8[2], U8[3], U8[4], U8[5], U8[6], U8[7], |
---|
| 261 | array_bit__0_,array_bit__1_,array_bit__2_,array_bit__3_,array_bit__4_,array_bit__5_,array_bit__6_,array_bit__7_); |
---|
| 262 | |
---|
| 263 | strct_u8__unibyte_ = simd_andc(AllOne,array_bit__0_); |
---|
| 264 | strct_u8__prefix_ = simd_and(array_bit__0_,array_bit__1_); |
---|
| 265 | strct_u8__prefix2_ = simd_andc(strct_u8__prefix_,array_bit__2_); |
---|
| 266 | temp1 = simd_andc(array_bit__2_,array_bit__3_); |
---|
| 267 | strct_u8__prefix3_ = simd_and(strct_u8__prefix_,temp1); |
---|
| 268 | temp2 = simd_and(array_bit__2_,array_bit__3_); |
---|
| 269 | strct_u8__prefix4_ = simd_and(strct_u8__prefix_,temp2); |
---|
| 270 | strct_u8__suffix_ = simd_andc(array_bit__0_,array_bit__1_); |
---|
| 271 | temp3 = simd_or(array_bit__2_,array_bit__3_); |
---|
| 272 | temp4 = simd_andc(strct_u8__prefix_,temp3); |
---|
| 273 | temp5 = simd_or(array_bit__4_,array_bit__5_); |
---|
| 274 | temp6 = simd_or(temp5,array_bit__6_); |
---|
| 275 | temp7 = simd_andc(temp4,temp6); |
---|
| 276 | temp8 = simd_or(array_bit__6_,array_bit__7_); |
---|
| 277 | temp9 = simd_and(array_bit__5_,temp8); |
---|
| 278 | temp10 = simd_or(array_bit__4_,temp9); |
---|
| 279 | temp11 = simd_and(strct_u8__prefix4_,temp10); |
---|
| 280 | strct_u8__badprefix_ = simd_or(temp7,temp11); |
---|
| 281 | temp12 = simd_or(temp5,temp8); |
---|
| 282 | strct_u8__xE0_ = simd_andc(strct_u8__prefix3_,temp12); |
---|
| 283 | temp13 = simd_and(array_bit__4_,array_bit__5_); |
---|
| 284 | temp14 = simd_andc(array_bit__7_,array_bit__6_); |
---|
| 285 | temp15 = simd_and(temp13,temp14); |
---|
| 286 | strct_u8__xED_ = simd_and(strct_u8__prefix3_,temp15); |
---|
| 287 | strct_u8__xF0_ = simd_andc(strct_u8__prefix4_,temp12); |
---|
| 288 | temp16 = simd_andc(array_bit__5_,array_bit__4_); |
---|
| 289 | temp17 = simd_andc(temp16,temp8); |
---|
| 290 | strct_u8__xF4_ = simd_and(strct_u8__prefix4_,temp17); |
---|
| 291 | strct_u8__xA0_xBF_ = simd_and(strct_u8__suffix_,array_bit__2_); |
---|
| 292 | strct_u8__x80_x9F_ = simd_andc(strct_u8__suffix_,array_bit__2_); |
---|
| 293 | strct_u8__x90_xBF_ = simd_and(strct_u8__suffix_,temp3); |
---|
| 294 | strct_u8__x80_x8F_ = simd_andc(strct_u8__suffix_,temp3); |
---|
| 295 | temp18 = simd_or(array_bit__0_,array_bit__1_); |
---|
| 296 | temp19 = simd_or(temp18,array_bit__2_); |
---|
| 297 | strct_Ctrl__x00_x1F_ = simd_andc(AllOne,temp19); |
---|
| 298 | temp20 = simd_or(temp18,temp3); |
---|
| 299 | strct_Ctrl__CR_ = simd_andc(temp15,temp20); |
---|
| 300 | temp21 = simd_andc(array_bit__4_,array_bit__5_); |
---|
| 301 | temp22 = simd_andc(array_bit__6_,array_bit__7_); |
---|
| 302 | temp23 = simd_and(temp21,temp22); |
---|
| 303 | strct_Ctrl__LF_ = simd_andc(temp23,temp20); |
---|
| 304 | temp24 = simd_and(temp21,temp14); |
---|
| 305 | strct_Ctrl__HT_ = simd_andc(temp24,temp20); |
---|
| 306 | temp25 = simd_andc(temp1,temp18); |
---|
| 307 | strct_Ctrl__SP_ = simd_andc(temp25,temp12); |
---|
| 308 | temp26 = simd_andc(array_bit__1_,array_bit__0_); |
---|
| 309 | temp27 = simd_and(temp26,temp2); |
---|
| 310 | temp28 = simd_and(array_bit__6_,array_bit__7_); |
---|
| 311 | temp29 = simd_and(temp21,temp28); |
---|
| 312 | strct_Lex__LCurlyBrace_ = simd_and(temp27,temp29); |
---|
| 313 | temp30 = simd_andc(temp2,temp18); |
---|
| 314 | strct_Lex__Colon_ = simd_and(temp30,temp23); |
---|
| 315 | temp31 = simd_andc(temp13,temp8); |
---|
| 316 | strct_Lex__Comma_ = simd_and(temp25,temp31); |
---|
| 317 | strct_Lex__RCurlyBrace_ = simd_and(temp27,temp15); |
---|
| 318 | temp32 = simd_andc(array_bit__3_,array_bit__2_); |
---|
| 319 | temp33 = simd_and(temp26,temp32); |
---|
| 320 | strct_Lex__LSquareBracket_ = simd_and(temp33,temp29); |
---|
| 321 | strct_Lex__RSquareBracket_ = simd_and(temp33,temp15); |
---|
| 322 | strct_Lex__Minus_ = simd_and(temp25,temp15); |
---|
| 323 | strct_Lex__Zero_ = simd_andc(temp30,temp12); |
---|
| 324 | temp34 = simd_or(array_bit__5_,array_bit__6_); |
---|
| 325 | temp35 = simd_andc(AllOne,temp34); |
---|
| 326 | temp36 = simd_or(array_bit__5_,temp8); |
---|
| 327 | Temp1 = simd_and(array_bit__4_,temp35); |
---|
| 328 | Temp2 = simd_andc(temp36,array_bit__4_); |
---|
| 329 | temp37 = simd_or(Temp1,Temp2); |
---|
| 330 | strct_Lex__Digit1_9_ = simd_and(temp30,temp37); |
---|
| 331 | temp38 = simd_and(array_bit__4_,temp34); |
---|
| 332 | strct_Lex__Digit0_9_ = simd_andc(temp30,temp38); |
---|
| 333 | temp39 = simd_and(temp13,temp22); |
---|
| 334 | strct_Lex__DecimalPoint_ = simd_and(temp25,temp39); |
---|
| 335 | temp40 = simd_and(temp16,temp14); |
---|
| 336 | temp41 = simd_andc(temp3,temp1); |
---|
| 337 | temp42 = simd_andc(temp26,temp41); |
---|
| 338 | strct_Lex__Ee_ = simd_and(temp40,temp42); |
---|
| 339 | temp43 = simd_or(temp29,temp15); |
---|
| 340 | strct_Lex__PlusMinus_ = simd_and(temp25,temp43); |
---|
| 341 | temp44 = simd_or(strct_Lex__Minus_,strct_Lex__Digit0_9_); |
---|
| 342 | temp45 = simd_or(temp44,strct_Lex__DecimalPoint_); |
---|
| 343 | temp46 = simd_andc(temp26,temp3); |
---|
| 344 | temp47 = simd_and(temp46,temp40); |
---|
| 345 | temp48 = simd_or(temp45,temp47); |
---|
| 346 | temp49 = simd_and(temp26,temp1); |
---|
| 347 | temp50 = simd_and(temp49,temp40); |
---|
| 348 | temp51 = simd_or(temp48,temp50); |
---|
| 349 | temp52 = simd_and(temp25,temp29); |
---|
| 350 | temp53 = simd_or(temp51,temp52); |
---|
| 351 | strct_Lex__Number_ = simd_or(temp53,strct_Lex__Minus_); |
---|
| 352 | temp54 = simd_andc(temp22,temp5); |
---|
| 353 | strct_Lex__DQuote_ = simd_and(temp25,temp54); |
---|
| 354 | strct_Lex__RSolidus_ = simd_and(temp33,temp31); |
---|
| 355 | strct_Lex__u_ = simd_and(temp27,temp40); |
---|
| 356 | temp55 = simd_or(strct_Lex__DQuote_,strct_Lex__RSolidus_); |
---|
| 357 | temp56 = simd_and(temp13,temp28); |
---|
| 358 | temp57 = simd_and(temp25,temp56); |
---|
| 359 | temp58 = simd_or(temp55,temp57); |
---|
| 360 | temp59 = simd_and(temp49,temp54); |
---|
| 361 | temp60 = simd_or(temp58,temp59); |
---|
| 362 | temp61 = simd_and(temp16,temp22); |
---|
| 363 | temp62 = simd_and(temp49,temp61); |
---|
| 364 | temp63 = simd_or(temp60,temp62); |
---|
| 365 | temp64 = simd_and(temp49,temp39); |
---|
| 366 | temp65 = simd_or(temp63,temp64); |
---|
| 367 | temp66 = simd_and(temp27,temp54); |
---|
| 368 | temp67 = simd_or(temp65,temp66); |
---|
| 369 | temp68 = simd_and(temp27,temp17); |
---|
| 370 | temp69 = simd_or(temp67,temp68); |
---|
| 371 | strct_Lex__Escape_ = simd_or(temp69,strct_Lex__u_); |
---|
| 372 | temp70 = simd_andc(temp49,array_bit__4_); |
---|
| 373 | temp71 = simd_andc(AllOne,temp28); |
---|
| 374 | Temp3 = simd_and(array_bit__5_,temp71); |
---|
| 375 | Temp4 = simd_andc(temp8,array_bit__5_); |
---|
| 376 | temp72 = simd_or(Temp3,Temp4); |
---|
| 377 | temp73 = simd_and(temp70,temp72); |
---|
| 378 | temp74 = simd_or(strct_Lex__Digit0_9_,temp73); |
---|
| 379 | temp75 = simd_andc(temp46,array_bit__4_); |
---|
| 380 | temp76 = simd_and(temp75,temp72); |
---|
| 381 | strct_Lex__HexDigit_ = simd_or(temp74,temp76); |
---|
| 382 | temp77 = simd_or(temp15,temp23); |
---|
| 383 | temp78 = simd_or(temp77,temp24); |
---|
| 384 | temp79 = simd_andc(temp78,temp20); |
---|
| 385 | strct_Lex__WS_ = simd_or(temp79,strct_Ctrl__SP_); |
---|
| 386 | strct_Lex__t_ = temp68; |
---|
| 387 | strct_Lex__r_ = temp66; |
---|
| 388 | strct_Lex__e_ = temp50; |
---|
| 389 | temp80 = simd_or(temp17,temp54); |
---|
| 390 | temp81 = simd_or(temp80,temp40); |
---|
| 391 | temp82 = simd_and(temp27,temp81); |
---|
| 392 | strct_Lex__True_ = simd_or(temp82,temp50); |
---|
| 393 | strct_Lex__f_ = temp62; |
---|
| 394 | temp83 = simd_andc(temp14,temp5); |
---|
| 395 | strct_Lex__a_ = simd_and(temp49,temp83); |
---|
| 396 | strct_Lex__l_ = simd_and(temp49,temp31); |
---|
| 397 | temp84 = simd_andc(temp28,temp5); |
---|
| 398 | strct_Lex__s_ = simd_and(temp27,temp84); |
---|
| 399 | temp85 = simd_or(temp61,temp83); |
---|
| 400 | temp86 = simd_or(temp85,temp31); |
---|
| 401 | temp87 = simd_and(temp49,temp86); |
---|
| 402 | temp88 = simd_or(temp87,strct_Lex__s_); |
---|
| 403 | strct_Lex__False_ = simd_or(temp88,temp50); |
---|
| 404 | strct_Lex__n_ = temp64; |
---|
| 405 | temp89 = simd_or(temp64,strct_Lex__u_); |
---|
| 406 | strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); |
---|
[744] | 407 | advance_with_carry(strct_Lex__RSolidus_, carry0, Temp5); |
---|
| 408 | Start = simd_andc(strct_Lex__RSolidus_,Temp5); |
---|
| 409 | EvenStart = simd_and(Start,Even); |
---|
| 410 | adc128(EvenStart, strct_Lex__RSolidus_, carry1, Temp6); |
---|
| 411 | EvenFinal = simd_andc(Temp6,strct_Lex__RSolidus_); |
---|
| 412 | EvenEscape = simd_and(EvenFinal,Odd); |
---|
| 413 | OddStart = simd_and(Start,Odd); |
---|
| 414 | adc128(OddStart, strct_Lex__RSolidus_, carry2, Temp7); |
---|
| 415 | OddFinal = simd_andc(Temp7,strct_Lex__RSolidus_); |
---|
| 416 | OddEscape = simd_and(OddFinal,Even); |
---|
| 417 | Escape = simd_or(EvenEscape,OddEscape); |
---|
| 418 | UnescapedDQuotes = simd_andc(strct_Lex__DQuote_,EscapeChars); |
---|
[741] | 419 | |
---|
[744] | 420 | /* Generate Parity Mask */ |
---|
| 421 | high_bit_mask = sisd_high_bit_mask; |
---|
| 422 | high_bit_is_set = simd_and(high_bit_mask, bitblock_parity_mask); |
---|
| 423 | bitblock_parity_mask = sisd_add( simd_not(sisd_srl(high_bit_is_set, sisd_from_int(BLOCK_SIZE-1))) , sisd_low_bit_mask); |
---|
| 424 | ParityMask = bitblock_parallel_prefix_parity(UnescapedDQuotes, bitblock_parity_mask); |
---|
[741] | 425 | |
---|
[744] | 426 | advance_with_carry(ParityMask, carry3, Temp8); |
---|
| 427 | StringMask = simd_and(ParityMask,Temp8); |
---|
| 428 | StringSpans = simd_or(StringMask,UnescapedDQuotes); |
---|
| 429 | |
---|
| 430 | |
---|
[741] | 431 | /* strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); */ |
---|
[744] | 432 | print_array_le("Data", &srcbuf[buf_pos],BLOCK_SIZE); |
---|
| 433 | print_simd_register("Escape", Escape); |
---|
[741] | 434 | |
---|
[744] | 435 | |
---|
| 436 | |
---|
| 437 | print_simd_register("Unescaped DQuote",UnescapedDQuotes); |
---|
| 438 | /* |
---|
[741] | 439 | print_simd_register("high_bit_is_set", high_bit_is_set); |
---|
| 440 | print_simd_register("high_bit_mask", high_bit_mask); |
---|
[744] | 441 | */ |
---|
| 442 | print_simd_register("ParityMask", ParityMask); |
---|
| 443 | print_simd_register("StringMask", StringMask); |
---|
| 444 | print_simd_register("StringSpans", StringSpans); |
---|
| 445 | |
---|
[741] | 446 | if (bitblock_has_bit(error_mask)){ |
---|
| 447 | err_pos = src_pos + buf_pos + count_forward_zeroes(error_mask); |
---|
| 448 | fprintf(stderr, "Error at position %i\n.", err_pos); |
---|
| 449 | exit(-1); |
---|
| 450 | } |
---|
| 451 | |
---|
| 452 | chars_avail -= BLOCK_SIZE; |
---|
| 453 | buf_pos += BLOCK_SIZE; |
---|
| 454 | } |
---|
| 455 | |
---|
| 456 | if(chars_avail > 0 /* || any_carry */) { /* process final partial block */ |
---|
| 457 | /* extra */ |
---|
| 458 | EOF_mask = sisd_srl(simd_const_1(1),sisd_from_int(BLOCK_SIZE-chars_avail)); |
---|
[744] | 459 | |
---|
[741] | 460 | BytePack * U8 = (BytePack *) &srcbuf[buf_pos]; |
---|
| 461 | |
---|
| 462 | s2p(U8[0], U8[1], U8[2], U8[3], U8[4], U8[5], U8[6], U8[7], |
---|
| 463 | array_bit__0_,array_bit__1_,array_bit__2_,array_bit__3_,array_bit__4_,array_bit__5_,array_bit__6_,array_bit__7_); |
---|
| 464 | |
---|
| 465 | array_bit__0_ = simd_and(array_bit__0_, EOF_mask); |
---|
| 466 | array_bit__1_ = simd_and(array_bit__1_, EOF_mask); |
---|
| 467 | array_bit__2_ = simd_and(array_bit__2_, EOF_mask); |
---|
| 468 | array_bit__3_ = simd_and(array_bit__3_, EOF_mask); |
---|
| 469 | array_bit__4_ = simd_and(array_bit__4_, EOF_mask); |
---|
| 470 | array_bit__5_ = simd_and(array_bit__5_, EOF_mask); |
---|
| 471 | array_bit__6_ = simd_and(array_bit__6_, EOF_mask); |
---|
| 472 | array_bit__7_ = simd_and(array_bit__7_, EOF_mask); |
---|
| 473 | |
---|
| 474 | strct_u8__unibyte_ = simd_andc(AllOne,array_bit__0_); |
---|
| 475 | strct_u8__prefix_ = simd_and(array_bit__0_,array_bit__1_); |
---|
| 476 | strct_u8__prefix2_ = simd_andc(strct_u8__prefix_,array_bit__2_); |
---|
| 477 | temp1 = simd_andc(array_bit__2_,array_bit__3_); |
---|
| 478 | strct_u8__prefix3_ = simd_and(strct_u8__prefix_,temp1); |
---|
| 479 | temp2 = simd_and(array_bit__2_,array_bit__3_); |
---|
| 480 | strct_u8__prefix4_ = simd_and(strct_u8__prefix_,temp2); |
---|
| 481 | strct_u8__suffix_ = simd_andc(array_bit__0_,array_bit__1_); |
---|
| 482 | temp3 = simd_or(array_bit__2_,array_bit__3_); |
---|
| 483 | temp4 = simd_andc(strct_u8__prefix_,temp3); |
---|
| 484 | temp5 = simd_or(array_bit__4_,array_bit__5_); |
---|
| 485 | temp6 = simd_or(temp5,array_bit__6_); |
---|
| 486 | temp7 = simd_andc(temp4,temp6); |
---|
| 487 | temp8 = simd_or(array_bit__6_,array_bit__7_); |
---|
| 488 | temp9 = simd_and(array_bit__5_,temp8); |
---|
| 489 | temp10 = simd_or(array_bit__4_,temp9); |
---|
| 490 | temp11 = simd_and(strct_u8__prefix4_,temp10); |
---|
| 491 | strct_u8__badprefix_ = simd_or(temp7,temp11); |
---|
| 492 | temp12 = simd_or(temp5,temp8); |
---|
| 493 | strct_u8__xE0_ = simd_andc(strct_u8__prefix3_,temp12); |
---|
| 494 | temp13 = simd_and(array_bit__4_,array_bit__5_); |
---|
| 495 | temp14 = simd_andc(array_bit__7_,array_bit__6_); |
---|
| 496 | temp15 = simd_and(temp13,temp14); |
---|
| 497 | strct_u8__xED_ = simd_and(strct_u8__prefix3_,temp15); |
---|
| 498 | strct_u8__xF0_ = simd_andc(strct_u8__prefix4_,temp12); |
---|
| 499 | temp16 = simd_andc(array_bit__5_,array_bit__4_); |
---|
| 500 | temp17 = simd_andc(temp16,temp8); |
---|
| 501 | strct_u8__xF4_ = simd_and(strct_u8__prefix4_,temp17); |
---|
| 502 | strct_u8__xA0_xBF_ = simd_and(strct_u8__suffix_,array_bit__2_); |
---|
| 503 | strct_u8__x80_x9F_ = simd_andc(strct_u8__suffix_,array_bit__2_); |
---|
| 504 | strct_u8__x90_xBF_ = simd_and(strct_u8__suffix_,temp3); |
---|
| 505 | strct_u8__x80_x8F_ = simd_andc(strct_u8__suffix_,temp3); |
---|
| 506 | temp18 = simd_or(array_bit__0_,array_bit__1_); |
---|
| 507 | temp19 = simd_or(temp18,array_bit__2_); |
---|
| 508 | strct_Ctrl__x00_x1F_ = simd_andc(AllOne,temp19); |
---|
| 509 | temp20 = simd_or(temp18,temp3); |
---|
| 510 | strct_Ctrl__CR_ = simd_andc(temp15,temp20); |
---|
| 511 | temp21 = simd_andc(array_bit__4_,array_bit__5_); |
---|
| 512 | temp22 = simd_andc(array_bit__6_,array_bit__7_); |
---|
| 513 | temp23 = simd_and(temp21,temp22); |
---|
| 514 | strct_Ctrl__LF_ = simd_andc(temp23,temp20); |
---|
| 515 | temp24 = simd_and(temp21,temp14); |
---|
| 516 | strct_Ctrl__HT_ = simd_andc(temp24,temp20); |
---|
| 517 | temp25 = simd_andc(temp1,temp18); |
---|
| 518 | strct_Ctrl__SP_ = simd_andc(temp25,temp12); |
---|
| 519 | temp26 = simd_andc(array_bit__1_,array_bit__0_); |
---|
| 520 | temp27 = simd_and(temp26,temp2); |
---|
| 521 | temp28 = simd_and(array_bit__6_,array_bit__7_); |
---|
| 522 | temp29 = simd_and(temp21,temp28); |
---|
| 523 | strct_Lex__LCurlyBrace_ = simd_and(temp27,temp29); |
---|
| 524 | temp30 = simd_andc(temp2,temp18); |
---|
| 525 | strct_Lex__Colon_ = simd_and(temp30,temp23); |
---|
| 526 | temp31 = simd_andc(temp13,temp8); |
---|
| 527 | strct_Lex__Comma_ = simd_and(temp25,temp31); |
---|
| 528 | strct_Lex__RCurlyBrace_ = simd_and(temp27,temp15); |
---|
| 529 | temp32 = simd_andc(array_bit__3_,array_bit__2_); |
---|
| 530 | temp33 = simd_and(temp26,temp32); |
---|
| 531 | strct_Lex__LSquareBracket_ = simd_and(temp33,temp29); |
---|
| 532 | strct_Lex__RSquareBracket_ = simd_and(temp33,temp15); |
---|
| 533 | strct_Lex__Minus_ = simd_and(temp25,temp15); |
---|
| 534 | strct_Lex__Zero_ = simd_andc(temp30,temp12); |
---|
| 535 | temp34 = simd_or(array_bit__5_,array_bit__6_); |
---|
| 536 | temp35 = simd_andc(AllOne,temp34); |
---|
| 537 | temp36 = simd_or(array_bit__5_,temp8); |
---|
| 538 | Temp1 = simd_and(array_bit__4_,temp35); |
---|
| 539 | Temp2 = simd_andc(temp36,array_bit__4_); |
---|
| 540 | temp37 = simd_or(Temp1,Temp2); |
---|
| 541 | strct_Lex__Digit1_9_ = simd_and(temp30,temp37); |
---|
| 542 | temp38 = simd_and(array_bit__4_,temp34); |
---|
| 543 | strct_Lex__Digit0_9_ = simd_andc(temp30,temp38); |
---|
| 544 | temp39 = simd_and(temp13,temp22); |
---|
| 545 | strct_Lex__DecimalPoint_ = simd_and(temp25,temp39); |
---|
| 546 | temp40 = simd_and(temp16,temp14); |
---|
| 547 | temp41 = simd_andc(temp3,temp1); |
---|
| 548 | temp42 = simd_andc(temp26,temp41); |
---|
| 549 | strct_Lex__Ee_ = simd_and(temp40,temp42); |
---|
| 550 | temp43 = simd_or(temp29,temp15); |
---|
| 551 | strct_Lex__PlusMinus_ = simd_and(temp25,temp43); |
---|
| 552 | temp44 = simd_or(strct_Lex__Minus_,strct_Lex__Digit0_9_); |
---|
| 553 | temp45 = simd_or(temp44,strct_Lex__DecimalPoint_); |
---|
| 554 | temp46 = simd_andc(temp26,temp3); |
---|
| 555 | temp47 = simd_and(temp46,temp40); |
---|
| 556 | temp48 = simd_or(temp45,temp47); |
---|
| 557 | temp49 = simd_and(temp26,temp1); |
---|
| 558 | temp50 = simd_and(temp49,temp40); |
---|
| 559 | temp51 = simd_or(temp48,temp50); |
---|
| 560 | temp52 = simd_and(temp25,temp29); |
---|
| 561 | temp53 = simd_or(temp51,temp52); |
---|
| 562 | strct_Lex__Number_ = simd_or(temp53,strct_Lex__Minus_); |
---|
| 563 | temp54 = simd_andc(temp22,temp5); |
---|
| 564 | strct_Lex__DQuote_ = simd_and(temp25,temp54); |
---|
| 565 | strct_Lex__RSolidus_ = simd_and(temp33,temp31); |
---|
| 566 | strct_Lex__u_ = simd_and(temp27,temp40); |
---|
| 567 | temp55 = simd_or(strct_Lex__DQuote_,strct_Lex__RSolidus_); |
---|
| 568 | temp56 = simd_and(temp13,temp28); |
---|
| 569 | temp57 = simd_and(temp25,temp56); |
---|
| 570 | temp58 = simd_or(temp55,temp57); |
---|
| 571 | temp59 = simd_and(temp49,temp54); |
---|
| 572 | temp60 = simd_or(temp58,temp59); |
---|
| 573 | temp61 = simd_and(temp16,temp22); |
---|
| 574 | temp62 = simd_and(temp49,temp61); |
---|
| 575 | temp63 = simd_or(temp60,temp62); |
---|
| 576 | temp64 = simd_and(temp49,temp39); |
---|
| 577 | temp65 = simd_or(temp63,temp64); |
---|
| 578 | temp66 = simd_and(temp27,temp54); |
---|
| 579 | temp67 = simd_or(temp65,temp66); |
---|
| 580 | temp68 = simd_and(temp27,temp17); |
---|
| 581 | temp69 = simd_or(temp67,temp68); |
---|
| 582 | strct_Lex__Escape_ = simd_or(temp69,strct_Lex__u_); |
---|
| 583 | temp70 = simd_andc(temp49,array_bit__4_); |
---|
| 584 | temp71 = simd_andc(AllOne,temp28); |
---|
| 585 | Temp3 = simd_and(array_bit__5_,temp71); |
---|
| 586 | Temp4 = simd_andc(temp8,array_bit__5_); |
---|
| 587 | temp72 = simd_or(Temp3,Temp4); |
---|
| 588 | temp73 = simd_and(temp70,temp72); |
---|
| 589 | temp74 = simd_or(strct_Lex__Digit0_9_,temp73); |
---|
| 590 | temp75 = simd_andc(temp46,array_bit__4_); |
---|
| 591 | temp76 = simd_and(temp75,temp72); |
---|
| 592 | strct_Lex__HexDigit_ = simd_or(temp74,temp76); |
---|
| 593 | temp77 = simd_or(temp15,temp23); |
---|
| 594 | temp78 = simd_or(temp77,temp24); |
---|
| 595 | temp79 = simd_andc(temp78,temp20); |
---|
| 596 | strct_Lex__WS_ = simd_or(temp79,strct_Ctrl__SP_); |
---|
| 597 | strct_Lex__t_ = temp68; |
---|
| 598 | strct_Lex__r_ = temp66; |
---|
| 599 | strct_Lex__e_ = temp50; |
---|
| 600 | temp80 = simd_or(temp17,temp54); |
---|
| 601 | temp81 = simd_or(temp80,temp40); |
---|
| 602 | temp82 = simd_and(temp27,temp81); |
---|
| 603 | strct_Lex__True_ = simd_or(temp82,temp50); |
---|
| 604 | strct_Lex__f_ = temp62; |
---|
| 605 | temp83 = simd_andc(temp14,temp5); |
---|
| 606 | strct_Lex__a_ = simd_and(temp49,temp83); |
---|
| 607 | strct_Lex__l_ = simd_and(temp49,temp31); |
---|
| 608 | temp84 = simd_andc(temp28,temp5); |
---|
| 609 | strct_Lex__s_ = simd_and(temp27,temp84); |
---|
| 610 | temp85 = simd_or(temp61,temp83); |
---|
| 611 | temp86 = simd_or(temp85,temp31); |
---|
| 612 | temp87 = simd_and(temp49,temp86); |
---|
| 613 | temp88 = simd_or(temp87,strct_Lex__s_); |
---|
| 614 | strct_Lex__False_ = simd_or(temp88,temp50); |
---|
| 615 | strct_Lex__n_ = temp64; |
---|
| 616 | temp89 = simd_or(temp64,strct_Lex__u_); |
---|
| 617 | strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); |
---|
[744] | 618 | advance_with_carry(strct_Lex__RSolidus_, carry0, Temp5); |
---|
| 619 | Start = simd_andc(strct_Lex__RSolidus_,Temp5); |
---|
| 620 | EvenStart = simd_and(Start,Even); |
---|
| 621 | adc128(EvenStart, strct_Lex__RSolidus_, carry1, Temp6); |
---|
| 622 | EvenFinal = simd_andc(Temp6,strct_Lex__RSolidus_); |
---|
| 623 | EvenEscape = simd_and(EvenFinal,Odd); |
---|
| 624 | OddStart = simd_and(Start,Odd); |
---|
| 625 | adc128(OddStart, strct_Lex__RSolidus_, carry2, Temp7); |
---|
| 626 | OddFinal = simd_andc(Temp7,strct_Lex__RSolidus_); |
---|
| 627 | OddEscape = simd_and(OddFinal,Even); |
---|
| 628 | Escape = simd_or(EvenEscape,OddEscape); |
---|
| 629 | UnescapedDQuotes = simd_andc(strct_Lex__DQuote_,EscapeChars); |
---|
| 630 | advance_with_carry(ParityMask, carry3, Temp8); |
---|
[741] | 631 | |
---|
[744] | 632 | /* Generate Parity Mask */ |
---|
| 633 | high_bit_mask = sisd_srl(sisd_high_bit_mask, sisd_from_int(BLOCK_SIZE-chars_avail)); |
---|
| 634 | high_bit_is_set = simd_and(high_bit_mask, bitblock_parity_mask); |
---|
| 635 | bitblock_parity_mask = sisd_add(simd_not(sisd_srl(high_bit_is_set, sisd_from_int(chars_avail-1))) , sisd_low_bit_mask); |
---|
| 636 | ParityMask = bitblock_parallel_prefix_parity(UnescapedDQuotes, bitblock_parity_mask); |
---|
| 637 | ParityMask = simd_and(bitblock_parity_mask, EOF_mask); |
---|
[741] | 638 | |
---|
[744] | 639 | |
---|
| 640 | StringMask = simd_and(ParityMask,Temp8); |
---|
| 641 | StringSpans = simd_or(StringMask,UnescapedDQuotes); |
---|
| 642 | |
---|
| 643 | |
---|
[741] | 644 | /* strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); */ |
---|
[744] | 645 | print_array_le("Data", &srcbuf[buf_pos],BLOCK_SIZE); |
---|
| 646 | print_simd_register("Escape", Escape); |
---|
[741] | 647 | |
---|
[744] | 648 | |
---|
| 649 | |
---|
| 650 | |
---|
| 651 | print_simd_register("Unescaped DQuote",UnescapedDQuotes); |
---|
| 652 | /* |
---|
[741] | 653 | print_simd_register("high_bit_is_set", high_bit_is_set); |
---|
| 654 | print_simd_register("high_bit_mask", high_bit_mask); |
---|
[744] | 655 | */ |
---|
| 656 | print_simd_register("ParityMask", ParityMask); |
---|
| 657 | print_simd_register("StringMask", StringMask); |
---|
| 658 | print_simd_register("StringSpans", StringSpans); |
---|
[741] | 659 | |
---|
| 660 | if(bitblock_has_bit(error_mask)) { |
---|
| 661 | err_pos = src_pos + buf_pos + count_forward_zeroes(error_mask); |
---|
| 662 | fprintf(stderr, "Error at position %i\n.", err_pos); |
---|
| 663 | exit(-1); |
---|
| 664 | } |
---|
| 665 | } |
---|
| 666 | |
---|
| 667 | PERF_SEC_END(perf_timer, chars_avail); |
---|
| 668 | |
---|
| 669 | src_pos += chars_read; |
---|
| 670 | buf_pos = 0; |
---|
| 671 | |
---|
| 672 | chars_read = fread((void *)srcbuf, 1, BUFFER_SIZE, infile); |
---|
| 673 | chars_avail = chars_read; |
---|
| 674 | if(ferror(infile)) { fprintf(stderr, "Failed to read input file.\n"); return; } |
---|
| 675 | if(chars_avail==0 && feof(infile)) { return; } |
---|
| 676 | } |
---|
| 677 | } |
---|
| 678 | |
---|
| 679 | int main(int argc, char * argv[]) { |
---|
| 680 | char * infilename, * outfilename; |
---|
| 681 | FILE *infile, *outfile; |
---|
| 682 | struct stat fileinfo; |
---|
| 683 | |
---|
| 684 | if (argc < 2) { |
---|
| 685 | printf("Usage: %s <filename> [<outputfile>]\n", argv[0]); |
---|
| 686 | exit(-1); |
---|
| 687 | } |
---|
| 688 | |
---|
| 689 | infilename = argv[1]; |
---|
| 690 | stat(infilename, &fileinfo); |
---|
| 691 | infile = fopen(infilename, "rb"); |
---|
| 692 | if (!infile) { |
---|
| 693 | fprintf(stderr, "Error: Cannot open %s for reading.\n", infilename); |
---|
| 694 | exit(-1); |
---|
| 695 | } |
---|
| 696 | |
---|
| 697 | if (argc < 3) { |
---|
| 698 | outfile = stdout; |
---|
| 699 | } else { |
---|
| 700 | outfilename = argv[2]; |
---|
| 701 | outfile = fopen(outfilename, "wb"); |
---|
| 702 | if (!outfile) { |
---|
| 703 | fprintf(stderr, "Error: Cannot open %s for writing.\n", outfilename); |
---|
| 704 | exit(-1); |
---|
| 705 | } |
---|
| 706 | } |
---|
| 707 | |
---|
| 708 | // PERF_SEC_BIND(1); |
---|
| 709 | |
---|
| 710 | PERF_SEC_INIT(perf_timer); |
---|
| 711 | |
---|
| 712 | do_process(infile, outfile); |
---|
| 713 | |
---|
| 714 | PERF_SEC_DUMP(perf_timer); |
---|
| 715 | |
---|
| 716 | PERF_SEC_DESTROY(perf_timer); |
---|
| 717 | |
---|
| 718 | fclose(infile); |
---|
| 719 | fclose(outfile); |
---|
| 720 | |
---|
| 721 | return(0); |
---|
| 722 | } |
---|