00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 static char USMID[] = "\n@(#)5.0_pl/sources/utils.c 5.9 10/14/99 12:53:57\n";
00042
00043 # include "defines.h"
00044
00045 # include "host.m"
00046 # include "host.h"
00047 # include "target.m"
00048 # include "target.h"
00049
00050 # ifdef _ARITH_H
00051 # include "arith.h"
00052 # endif
00053
00054 # include "globals.m"
00055 # include "tokens.m"
00056 # include "sytb.m"
00057 # include "debug.m"
00058 # include "globals.h"
00059 # include "tokens.h"
00060 # include "sytb.h"
00061
00062 # if defined(_HOST32) && defined(_TARGET64)
00063
00064 # define OCT_FMT "%llo"
00065 # define HEX_FMT "%llx"
00066 # define DEC_FMT "%lld"
00067
00068 # else
00069
00070 # define OCT_FMT "%o"
00071 # define HEX_FMT "%x"
00072 # define DEC_FMT "%d"
00073
00074 # endif
00075
00076 # define LLOCT_FMT "%llo"
00077 # define LLHEX_FMT "%llx"
00078 # define LLDEC_FMT "%lld"
00079
00080
00081 # define STR_FMT "\"%s\""
00082
00083 # if defined(_HOST_OS_LINUX) || defined(_HOST_OS_DARWIN)
00084 # define DBL_FMT "%Le"
00085 # elif defined(_HOST_OS_SOLARIS) || (defined(_HOST_OS_IRIX) || defined(_HOST_OS_LINUX))
00086 # define DBL_FMT "%e"
00087 # else
00088 # define DBL_FMT "%Le"
00089 # endif
00090
00091 # define FLT_FMT "%e"
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 char * convert_to_string (long_type *the_constant,
00120 int type_idx,
00121 char *result)
00122
00123 {
00124
00125 int i;
00126 int inc;
00127 int base;
00128 int stat;
00129 char str1[50];
00130 char str2[50];
00131 long_type value[4];
00132 long_type value2[4];
00133 char *fmt1;
00134
00135
00136 TRACE (Func_Entry, "convert_to_string", NULL);
00137
00138 switch(TYP_LINEAR(type_idx)) {
00139
00140 # ifdef _ARITH_INPUT_CONV
00141
00142 case Integer_1 :
00143 case Integer_2 :
00144 case Integer_4 :
00145 case Integer_8 :
00146 for (i = 0; i < num_host_wds[TYP_LINEAR(type_idx)]; i++) {
00147 value[i] = the_constant[i];
00148 }
00149
00150 SHIFT_ARITH_ARG(value, TYP_LINEAR(type_idx));
00151 base = 10;
00152 stat = AR_convert_int_to_str(result,
00153 (const int *)&base,
00154 (const AR_DATA *)value,
00155 (const AR_TYPE *)&linear_to_arith[TYP_LINEAR(type_idx)]);
00156 break;
00157
00158 case Real_4 :
00159 case Real_8 :
00160 case Real_16 :
00161 for (i = 0; i < num_host_wds[TYP_LINEAR(type_idx)]; i++) {
00162 value[i] = the_constant[i];
00163 }
00164
00165 SHIFT_ARITH_ARG(value, TYP_LINEAR(type_idx));
00166
00167 stat = AR_convert_float_to_str(result,
00168 (const AR_DATA *)value,
00169 (const AR_TYPE *)&linear_to_arith[TYP_LINEAR(type_idx)]);
00170
00171 break;
00172
00173 case Complex_4 :
00174 value[0] = *the_constant;
00175 value2[0] = *(the_constant + 1);
00176
00177 SHIFT_ARITH_ARG(value, Real_4);
00178 SHIFT_ARITH_ARG(value2, Real_4);
00179
00180 stat = AR_convert_float_to_str(str1,
00181 (const AR_DATA *)value,
00182 (const AR_TYPE *)&linear_to_arith[Real_4]);
00183
00184 stat = AR_convert_float_to_str(str2,
00185 (const AR_DATA *)value2,
00186 (const AR_TYPE *)&linear_to_arith[Real_4]);
00187
00188 sprintf(result, "(%s,%s)", str1, str2);
00189 break;
00190
00191 case Complex_8 :
00192 # ifdef _TARGET64
00193 inc = 1;
00194 # else
00195 inc = 2;
00196 # endif
00197 stat = AR_convert_float_to_str(str1,
00198 (const AR_DATA *)the_constant,
00199 (const AR_TYPE *)&linear_to_arith[Real_8]);
00200
00201 stat = AR_convert_float_to_str(str2,
00202 (const AR_DATA *)(the_constant + inc),
00203 (const AR_TYPE *)&linear_to_arith[Real_8]);
00204
00205 sprintf(result, "(%s,%s)", str1, str2);
00206 break;
00207
00208 case Complex_16 :
00209 stat = AR_convert_float_to_str(str1,
00210 (const AR_DATA *)the_constant,
00211 (const AR_TYPE *)&linear_to_arith[Real_16]);
00212
00213 stat = AR_convert_float_to_str(str2,
00214 (const AR_DATA *)(the_constant + 2),
00215 (const AR_TYPE *)&linear_to_arith[Real_16]);
00216
00217 sprintf(result, "(%s,%s)", str1, str2);
00218 break;
00219
00220 # else
00221
00222 # ifdef _TARGET32
00223 case Integer_1 :
00224 case Integer_2 :
00225 case Integer_4 :
00226 switch (convert_to_string_fmt) {
00227
00228 case Octal_Fmt:
00229 fmt1 = OCT_FMT;
00230 break;
00231
00232 case Character_Fmt:
00233 case Binary_Fmt:
00234 case Hex_Fmt:
00235 fmt1 = HEX_FMT;
00236 break;
00237
00238 case Dont_Care:
00239 default:
00240 fmt1 = DEC_FMT;
00241 break;
00242 }
00243
00244 sprintf(result, fmt1, *the_constant);
00245 break;
00246
00247 case Integer_8 :
00248 switch (convert_to_string_fmt) {
00249
00250 case Octal_Fmt:
00251 fmt1 = LLOCT_FMT;
00252 break;
00253
00254 case Character_Fmt:
00255 case Binary_Fmt:
00256 case Hex_Fmt:
00257 fmt1 = LLHEX_FMT;
00258 break;
00259
00260 case Dont_Care:
00261 default:
00262 fmt1 = LLDEC_FMT;
00263 break;
00264 }
00265
00266 sprintf(result, fmt1, *(long long *)the_constant);
00267 break;
00268
00269 # else
00270 case Integer_1 :
00271 case Integer_2 :
00272 case Integer_4 :
00273 case Integer_8 :
00274 switch (convert_to_string_fmt) {
00275
00276 case Octal_Fmt:
00277 fmt1 = OCT_FMT;
00278 break;
00279
00280 case Character_Fmt:
00281 case Binary_Fmt:
00282 case Hex_Fmt:
00283 fmt1 = HEX_FMT;
00284 break;
00285
00286 case Dont_Care:
00287 default:
00288 fmt1 = DEC_FMT;
00289 break;
00290 }
00291
00292 sprintf(result, fmt1, *the_constant);
00293 break;
00294 # endif
00295
00296 # ifdef _TARGET64
00297 case Real_4 :
00298 case Real_8 :
00299 if (sizeof(float_type) > sizeof(float)) {
00300 #if defined(_HOST32)
00301 sprintf(result, FLT_FMT, *(float_type *)the_constant);
00302 #else
00303 sprintf(result, DBL_FMT, *(ldouble *)the_constant);
00304 #endif
00305 }
00306 else {
00307 sprintf(result, FLT_FMT, *(float_type *)the_constant);
00308 }
00309 break;
00310
00311 case Real_16 :
00312 sprintf(result, DBL_FMT, *(ldouble *)the_constant);
00313 break;
00314
00315 case Complex_4 :
00316 case Complex_8 :
00317 inc = (TYP_LINEAR(type_idx) > COMPLEX_DEFAULT_TYPE) ? 2 : 1;
00318
00319 if (sizeof(float_type) > sizeof(float)) {
00320 #if defined(_HOST32)
00321 sprintf(result, "(" FLT_FMT ", " FLT_FMT ")",
00322 *(float_type *)the_constant,
00323 *(float_type *)(the_constant + inc));
00324 #else
00325 sprintf(result, "(" DBL_FMT ", " DBL_FMT ")",
00326 *(ldouble *)the_constant,
00327 *(ldouble *)(the_constant + inc));
00328 #endif
00329 }
00330 else {
00331 sprintf(result, "(" FLT_FMT ", " FLT_FMT ")",
00332 *(float_type *)the_constant,
00333 *(float_type *)(the_constant + inc));
00334 }
00335 break;
00336
00337 case Complex_16 :
00338 inc = (TYP_LINEAR(type_idx) > COMPLEX_DEFAULT_TYPE) ? 2 : 1;
00339
00340 sprintf(result, "(" DBL_FMT ", " DBL_FMT ")",
00341 *(ldouble *)the_constant,
00342 *(ldouble *)(the_constant + inc));
00343 break;
00344
00345 # else
00346 case Real_4 :
00347 sprintf(result, FLT_FMT, *(float *)the_constant);
00348 break;
00349
00350 case Real_8 :
00351 # if defined(_HOST_OS_LINUX) || defined(_HOST_OS_DARWIN)
00352 sprintf(result, FLT_FMT, *(double *)the_constant);
00353 break;
00354 # endif
00355
00356 case Real_16 :
00357 if (sizeof(ldouble) > sizeof(float)) {
00358 sprintf(result, DBL_FMT, *(ldouble *)the_constant);
00359 }
00360 else {
00361 sprintf(result, FLT_FMT, *(float_type *)the_constant);
00362 }
00363 break;
00364
00365 case Complex_4 :
00366 inc = (TYP_LINEAR(type_idx) > COMPLEX_DEFAULT_TYPE) ? 2 : 1;
00367
00368 sprintf(result, "(" FLT_FMT ", " FLT_FMT ")",
00369 *(float_type *)the_constant,
00370 *(float_type *)(the_constant + inc));
00371 break;
00372
00373 case Complex_8 :
00374 case Complex_16 :
00375 inc = (TYP_LINEAR(type_idx) > COMPLEX_DEFAULT_TYPE) ? 2 : 1;
00376
00377 if (sizeof(ldouble) > sizeof(float)) {
00378 sprintf(result, "(" DBL_FMT ", " DBL_FMT ")",
00379 *(ldouble *)the_constant,
00380 *(ldouble *)(the_constant + inc));
00381 }
00382 break;
00383 # endif
00384 # endif
00385
00386 case Typeless_4:
00387 case Typeless_8:
00388 case Short_Typeless_Const:
00389 case Long_Typeless:
00390 if (convert_to_string_fmt == Hex_Fmt) {
00391 fmt1 = HEX_FMT;
00392 }
00393 else {
00394 fmt1 = OCT_FMT;
00395 }
00396
00397
00398
00399 sprintf(result, fmt1, *the_constant);
00400 break;
00401
00402 case Character_1:
00403 *result = (char) *the_constant;
00404 break;
00405
00406 case Logical_1:
00407 case Logical_2:
00408 case Logical_4:
00409 case Logical_8:
00410 if (THIS_IS_TRUE(the_constant, type_idx)) {
00411 sprintf(result, ".T.");
00412 }
00413 else {
00414 sprintf(result, ".F.");
00415 }
00416 break;
00417
00418 default :
00419 PRINTMSG(stmt_start_line, 626, Internal, stmt_start_col,
00420 "valid type", "convert_to_string");
00421
00422 }
00423
00424 convert_to_string_fmt = Dont_Care;
00425
00426 TRACE (Func_Exit, "convert_to_string", NULL);
00427
00428 return(result);
00429
00430 }
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469 boolean get_temp_file(char *open_status,
00470 FILE **file_ptr,
00471 char *file_name)
00472 {
00473 boolean result;
00474 char *tmp_file_name;
00475
00476
00477
00478 TRACE (Func_Entry, "get_temp_file", NULL);
00479
00480 result = FALSE;
00481
00482 #ifdef KEY // bug 1383
00483 int fd;
00484 char buf[32];
00485 strcpy(buf, "/tmp/pathf90XXXXXX");
00486 if ((fd = mkstemp(buf)) != -1) {
00487 if (file_name != NULL) {
00488 strcpy(file_name, buf);
00489 }
00490 if ((*file_ptr = fdopen(fd, open_status)) != NULL) {
00491 result = TRUE;
00492 }
00493 }
00494 #else
00495 tmp_file_name = (char *) tempnam(NULL, NULL);
00496
00497
00498 if (tmp_file_name != NULL) {
00499
00500 if (file_name != NULL) {
00501 strcpy(file_name, tmp_file_name);
00502 }
00503
00504 if ((*file_ptr = fopen(tmp_file_name, open_status)) != NULL) {
00505 result = TRUE;
00506 }
00507 }
00508 #endif
00509
00510 TRACE (Func_Exit, "get_temp_file", NULL);
00511
00512 return(result);
00513
00514 }
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589 int srch_name_tbl(char *name_str,
00590 int name_len,
00591 int *name_idx,
00592 name_tbl_type *table,
00593 name_pool_type *pool,
00594 int first_entry,
00595 int last_entry)
00596
00597 {
00598 register int first;
00599 register long *id ;
00600 register int id_len;
00601 register int idx;
00602 register int last;
00603 register long mask;
00604 register int seg_len;
00605 register int stride;
00606 register long tst_val;
00607
00608 # if defined(_HOST64) && !defined(_WHIRL_HOST64_TARGET64)
00609 register long *name_tbl_base;
00610 # endif
00611
00612
00613
00614
00615
00616
00617
00618
00619 # if defined(_HOST64) && !defined(_WHIRL_HOST64_TARGET64)
00620 # define NAME_IDX(IDX) (name_tbl_base[IDX] & MSK_NAME_IDX)
00621 # else
00622 # define NAME_IDX(IDX) (table[IDX].name_idx)
00623 # endif
00624
00625 # if defined(_HOST_LITTLE_ENDIAN)
00626 # define DIFF(I) compare_names(&pool[NAME_IDX(idx)+(I)-1].name_long, \
00627 HOST_BYTES_PER_WORD-1, \
00628 &id[(I) - 1], \
00629 HOST_BYTES_PER_WORD-1 )
00630 # else
00631 # define DIFF(I) (pool[NAME_IDX(idx) + (I) - 1].name_long - id[(I) - 1])
00632 # endif
00633
00634 # define MASK(I) -(RIGHT_JUSTIFY_SIGN_BIT(DIFF((I)) | -DIFF((I))))| mask
00635
00636 # define RUNNING_DIFF(I) tst_val | ((~mask) & DIFF(I))
00637
00638
00639
00640
00641
00642 TRACE (Func_Entry, "srch_name_tbl", name_str);
00643
00644
00645
00646 # if defined(_HOST64) && !defined(_WHIRL_HOST64_TARGET64)
00647 name_tbl_base = (long *) table;
00648 # endif
00649 id = (long *) name_str;
00650 first = first_entry;
00651 last = last_entry;
00652 seg_len = last - first + 1;
00653 id_len = WORD_LEN(name_len);
00654 stride = STRIDE_CALC(seg_len);
00655 tst_val = -1;
00656 mask = 0;
00657
00658 switch (id_len) {
00659 case 1:
00660 while (seg_len > 32) {
00661 # pragma _CRI ivdep
00662 # pragma _CRI shortloop
00663 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00664 tst_val = DIFF(1);
00665 if (tst_val >= 0) {
00666 break;
00667 }
00668 }
00669 if (tst_val == 0) {
00670 goto EXIT;
00671 }
00672 else if (tst_val > 0) {
00673 last = idx;
00674 }
00675 first = idx - stride + 1;
00676 seg_len = last - first + 1;
00677 stride = STRIDE_CALC(seg_len);
00678 }
00679
00680 # pragma _CRI ivdep
00681 # pragma _CRI shortloop
00682 for (idx = first; idx <= last; idx += 1) {
00683
00684
00685
00686
00687
00688 tst_val = DIFF(1);
00689 if (tst_val >= 0) {
00690 break;
00691 }
00692 }
00693 break;
00694
00695 case 2:
00696 while (seg_len > 32) {
00697 # pragma _CRI ivdep
00698 # pragma _CRI shortloop
00699 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00700 tst_val = DIFF(1);
00701 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00702 tst_val = RUNNING_DIFF(2);
00703 if (tst_val >= 0) {
00704 break;
00705 }
00706 }
00707 if (tst_val == 0) {
00708 goto EXIT;
00709 }
00710 else if (tst_val > 0) {
00711 last = idx;
00712 }
00713 first = idx - stride + 1;
00714 seg_len = last - first + 1;
00715 stride = STRIDE_CALC(seg_len);
00716 }
00717
00718 # pragma _CRI ivdep
00719 # pragma _CRI shortloop
00720 for (idx = first; idx <= last; idx += 1) {
00721 tst_val = DIFF(1);
00722 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00723 tst_val = RUNNING_DIFF(2);
00724 if (tst_val >= 0) {
00725 break;
00726 }
00727 }
00728 break;
00729
00730 case 3:
00731 while (seg_len > 32) {
00732 # pragma _CRI ivdep
00733 # pragma _CRI shortloop
00734 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00735 tst_val = DIFF(1);
00736 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00737 tst_val = RUNNING_DIFF(2);
00738 mask = MASK(2);
00739 tst_val = RUNNING_DIFF(3);
00740 if (tst_val >= 0) {
00741 break;
00742 }
00743 }
00744 if (tst_val == 0) {
00745 goto EXIT;
00746 }
00747 else if (tst_val > 0) {
00748 last = idx;
00749 }
00750 first = idx - stride + 1;
00751 seg_len = last - first + 1;
00752 stride = STRIDE_CALC(seg_len);
00753 }
00754
00755 # pragma _CRI ivdep
00756 # pragma _CRI shortloop
00757 for (idx = first; idx <= last; idx += 1) {
00758 tst_val = DIFF(1);
00759 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00760 tst_val = RUNNING_DIFF(2);
00761 mask = MASK(2);
00762 tst_val = RUNNING_DIFF(3);
00763 if (tst_val >= 0) {
00764 break;
00765 }
00766 }
00767 break;
00768
00769 case 4:
00770 while (seg_len > 32) {
00771 # pragma _CRI ivdep
00772 # pragma _CRI shortloop
00773 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00774 tst_val = DIFF(1);
00775 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00776 tst_val = RUNNING_DIFF(2);
00777 mask = MASK(2);
00778 tst_val = RUNNING_DIFF(3);
00779 mask = MASK(3);
00780 tst_val = RUNNING_DIFF(4);
00781 if (tst_val >= 0) {
00782 break;
00783 }
00784 }
00785 if (tst_val == 0) {
00786 goto EXIT;
00787 }
00788 else if (tst_val > 0) {
00789 last = idx;
00790 }
00791 first = idx - stride + 1;
00792 seg_len = last - first + 1;
00793 stride = STRIDE_CALC(seg_len);
00794 }
00795
00796 # pragma _CRI ivdep
00797 # pragma _CRI shortloop
00798 for (idx = first; idx <= last; idx += 1) {
00799 tst_val = DIFF(1);
00800 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00801 tst_val = RUNNING_DIFF(2);
00802 mask = MASK(2);
00803 tst_val = RUNNING_DIFF(3);
00804 mask = MASK(3);
00805 tst_val = RUNNING_DIFF(4);
00806 if (tst_val >= 0) {
00807 break;
00808 }
00809 }
00810 break;
00811
00812 case 5:
00813 while (seg_len > 32) {
00814 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00815 tst_val = DIFF(1);
00816 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00817 tst_val = RUNNING_DIFF(2);
00818 mask = MASK(2);
00819 tst_val = RUNNING_DIFF(3);
00820 mask = MASK(3);
00821 tst_val = RUNNING_DIFF(4);
00822 mask = MASK(4);
00823 tst_val = RUNNING_DIFF(5);
00824 if (tst_val >= 0) {
00825 break;
00826 }
00827 }
00828 if (tst_val == 0) {
00829 goto EXIT;
00830 }
00831 else if (tst_val > 0) {
00832 last = idx;
00833 }
00834 first = idx - stride + 1;
00835 seg_len = last - first + 1;
00836 stride = STRIDE_CALC(seg_len);
00837 }
00838
00839 for (idx = first; idx <= last; idx += 1) {
00840 tst_val = DIFF(1);
00841 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00842 tst_val = RUNNING_DIFF(2);
00843 mask = MASK(2);
00844 tst_val = RUNNING_DIFF(3);
00845 mask = MASK(3);
00846 tst_val = RUNNING_DIFF(4);
00847 mask = MASK(4);
00848 tst_val = RUNNING_DIFF(5);
00849 if (tst_val >= 0) {
00850 break;
00851 }
00852 }
00853 break;
00854
00855 case 6:
00856 while (seg_len > 32) {
00857 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00858 tst_val = DIFF(1);
00859 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00860 tst_val = RUNNING_DIFF(2);
00861 mask = MASK(2);
00862 tst_val = RUNNING_DIFF(3);
00863 mask = MASK(3);
00864 tst_val = RUNNING_DIFF(4);
00865 mask = MASK(4);
00866 tst_val = RUNNING_DIFF(5);
00867 mask = MASK(5);
00868 tst_val = RUNNING_DIFF(6);
00869 if (tst_val >= 0) {
00870 break;
00871 }
00872 }
00873 if (tst_val == 0) {
00874 goto EXIT;
00875 }
00876 else if (tst_val > 0) {
00877 last = idx;
00878 }
00879 first = idx - stride + 1;
00880 seg_len = last - first + 1;
00881 stride = STRIDE_CALC(seg_len);
00882 }
00883
00884 for (idx = first; idx <= last; idx += 1) {
00885 tst_val = DIFF(1);
00886 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00887 tst_val = RUNNING_DIFF(2);
00888 mask = MASK(2);
00889 tst_val = RUNNING_DIFF(3);
00890 mask = MASK(3);
00891 tst_val = RUNNING_DIFF(4);
00892 mask = MASK(4);
00893 tst_val = RUNNING_DIFF(5);
00894 mask = MASK(5);
00895 tst_val = RUNNING_DIFF(6);
00896 if (tst_val >= 0) {
00897 break;
00898 }
00899 }
00900 break;
00901
00902 case 7:
00903 while (seg_len > 32) {
00904 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00905 tst_val = DIFF(1);
00906 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00907 tst_val = RUNNING_DIFF(2);
00908 mask = MASK(2);
00909 tst_val = RUNNING_DIFF(3);
00910 mask = MASK(3);
00911 tst_val = RUNNING_DIFF(4);
00912 mask = MASK(4);
00913 tst_val = RUNNING_DIFF(5);
00914 mask = MASK(5);
00915 tst_val = RUNNING_DIFF(6);
00916 mask = MASK(6);
00917 tst_val = RUNNING_DIFF(7);
00918 if (tst_val >= 0) {
00919 break;
00920 }
00921 }
00922 if (tst_val == 0) {
00923 goto EXIT;
00924 }
00925 else if (tst_val > 0) {
00926 last = idx;
00927 }
00928 first = idx - stride + 1;
00929 seg_len = last - first + 1;
00930 stride = STRIDE_CALC(seg_len);
00931 }
00932
00933 for (idx = first; idx <= last; idx += 1) {
00934 tst_val = DIFF(1);
00935 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00936 tst_val = RUNNING_DIFF(2);
00937 mask = MASK(2);
00938 tst_val = RUNNING_DIFF(3);
00939 mask = MASK(3);
00940 tst_val = RUNNING_DIFF(4);
00941 mask = MASK(4);
00942 tst_val = RUNNING_DIFF(5);
00943 mask = MASK(5);
00944 tst_val = RUNNING_DIFF(6);
00945 mask = MASK(6);
00946 tst_val = RUNNING_DIFF(7);
00947 if (tst_val >= 0) {
00948 break;
00949 }
00950 }
00951 break;
00952
00953 case 8:
00954 while (seg_len > 32) {
00955 for (idx = first + stride -1 ; idx <= last; idx += stride) {
00956 tst_val = DIFF(1);
00957 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00958 tst_val = RUNNING_DIFF(2);
00959 mask = MASK(2);
00960 tst_val = RUNNING_DIFF(3);
00961 mask = MASK(3);
00962 tst_val = RUNNING_DIFF(4);
00963 mask = MASK(4);
00964 tst_val = RUNNING_DIFF(5);
00965 mask = MASK(5);
00966 tst_val = RUNNING_DIFF(6);
00967 mask = MASK(6);
00968 tst_val = RUNNING_DIFF(7);
00969 mask = MASK(7);
00970 tst_val = RUNNING_DIFF(8);
00971 if (tst_val >= 0) {
00972 break;
00973 }
00974 }
00975 if (tst_val == 0) {
00976 goto EXIT;
00977 }
00978 else if (tst_val > 0) {
00979 last = idx;
00980 }
00981 first = idx - stride + 1;
00982 seg_len = last - first + 1;
00983 stride = STRIDE_CALC(seg_len);
00984 }
00985
00986 for (idx = first; idx <= last; idx += 1) {
00987 tst_val = DIFF(1);
00988 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
00989 tst_val = RUNNING_DIFF(2);
00990 mask = MASK(2);
00991 tst_val = RUNNING_DIFF(3);
00992 mask = MASK(3);
00993 tst_val = RUNNING_DIFF(4);
00994 mask = MASK(4);
00995 tst_val = RUNNING_DIFF(5);
00996 mask = MASK(5);
00997 tst_val = RUNNING_DIFF(6);
00998 mask = MASK(6);
00999 tst_val = RUNNING_DIFF(7);
01000 mask = MASK(7);
01001 tst_val = RUNNING_DIFF(8);
01002 if (tst_val >= 0) {
01003 break;
01004 }
01005 }
01006 break;
01007
01008 case 9:
01009 while (seg_len > 32) {
01010 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01011 tst_val = DIFF(1);
01012 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01013 tst_val = RUNNING_DIFF(2);
01014 mask = MASK(2);
01015 tst_val = RUNNING_DIFF(3);
01016 mask = MASK(3);
01017 tst_val = RUNNING_DIFF(4);
01018 mask = MASK(4);
01019 tst_val = RUNNING_DIFF(5);
01020 mask = MASK(5);
01021 tst_val = RUNNING_DIFF(6);
01022 mask = MASK(6);
01023 tst_val = RUNNING_DIFF(7);
01024 mask = MASK(7);
01025 tst_val = RUNNING_DIFF(8);
01026 mask = MASK(8);
01027 tst_val = RUNNING_DIFF(9);
01028 if (tst_val >= 0) {
01029 break;
01030 }
01031 }
01032 if (tst_val == 0) {
01033 goto EXIT;
01034 }
01035 else if (tst_val > 0) {
01036 last = idx;
01037 }
01038 first = idx - stride + 1;
01039 seg_len = last - first + 1;
01040 stride = STRIDE_CALC(seg_len);
01041 }
01042
01043 for (idx = first; idx <= last; idx += 1) {
01044 tst_val = DIFF(1);
01045 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01046 tst_val = RUNNING_DIFF(2);
01047 mask = MASK(2);
01048 tst_val = RUNNING_DIFF(3);
01049 mask = MASK(3);
01050 tst_val = RUNNING_DIFF(4);
01051 mask = MASK(4);
01052 tst_val = RUNNING_DIFF(5);
01053 mask = MASK(5);
01054 tst_val = RUNNING_DIFF(6);
01055 mask = MASK(6);
01056 tst_val = RUNNING_DIFF(7);
01057 mask = MASK(7);
01058 tst_val = RUNNING_DIFF(8);
01059 mask = MASK(8);
01060 tst_val = RUNNING_DIFF(9);
01061 if (tst_val >= 0) {
01062 break;
01063 }
01064 }
01065 break;
01066
01067 case 10:
01068 while (seg_len > 32) {
01069 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01070 tst_val = DIFF(1);
01071 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01072 tst_val = RUNNING_DIFF(2);
01073 mask = MASK(2);
01074 tst_val = RUNNING_DIFF(3);
01075 mask = MASK(3);
01076 tst_val = RUNNING_DIFF(4);
01077 mask = MASK(4);
01078 tst_val = RUNNING_DIFF(5);
01079 mask = MASK(5);
01080 tst_val = RUNNING_DIFF(6);
01081 mask = MASK(6);
01082 tst_val = RUNNING_DIFF(7);
01083 mask = MASK(7);
01084 tst_val = RUNNING_DIFF(8);
01085 mask = MASK(8);
01086 tst_val = RUNNING_DIFF(9);
01087 mask = MASK(9);
01088 tst_val = RUNNING_DIFF(10);
01089 if (tst_val >= 0) {
01090 break;
01091 }
01092 }
01093 if (tst_val == 0) {
01094 goto EXIT;
01095 }
01096 else if (tst_val > 0) {
01097 last = idx;
01098 }
01099 first = idx - stride + 1;
01100 seg_len = last - first + 1;
01101 stride = STRIDE_CALC(seg_len);
01102 }
01103
01104 for (idx = first; idx <= last; idx += 1) {
01105 tst_val = DIFF(1);
01106 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01107 tst_val = RUNNING_DIFF(2);
01108 mask = MASK(2);
01109 tst_val = RUNNING_DIFF(3);
01110 mask = MASK(3);
01111 tst_val = RUNNING_DIFF(4);
01112 mask = MASK(4);
01113 tst_val = RUNNING_DIFF(5);
01114 mask = MASK(5);
01115 tst_val = RUNNING_DIFF(6);
01116 mask = MASK(6);
01117 tst_val = RUNNING_DIFF(7);
01118 mask = MASK(7);
01119 tst_val = RUNNING_DIFF(8);
01120 mask = MASK(8);
01121 tst_val = RUNNING_DIFF(9);
01122 mask = MASK(9);
01123 tst_val = RUNNING_DIFF(10);
01124 if (tst_val >= 0) {
01125 break;
01126 }
01127 }
01128 break;
01129
01130 case 11:
01131 while (seg_len > 32) {
01132 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01133 tst_val = DIFF(1);
01134 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01135 tst_val = RUNNING_DIFF(2);
01136 mask = MASK(2);
01137 tst_val = RUNNING_DIFF(3);
01138 mask = MASK(3);
01139 tst_val = RUNNING_DIFF(4);
01140 mask = MASK(4);
01141 tst_val = RUNNING_DIFF(5);
01142 mask = MASK(5);
01143 tst_val = RUNNING_DIFF(6);
01144 mask = MASK(6);
01145 tst_val = RUNNING_DIFF(7);
01146 mask = MASK(7);
01147 tst_val = RUNNING_DIFF(8);
01148 mask = MASK(8);
01149 tst_val = RUNNING_DIFF(9);
01150 mask = MASK(9);
01151 tst_val = RUNNING_DIFF(10);
01152 mask = MASK(10);
01153 tst_val = RUNNING_DIFF(11);
01154 if (tst_val >= 0) {
01155 break;
01156 }
01157 }
01158 if (tst_val == 0) {
01159 goto EXIT;
01160 }
01161 else if (tst_val > 0) {
01162 last = idx;
01163 }
01164 first = idx - stride + 1;
01165 seg_len = last - first + 1;
01166 stride = STRIDE_CALC(seg_len);
01167 }
01168
01169 for (idx = first; idx <= last; idx += 1) {
01170 tst_val = DIFF(1);
01171 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01172 tst_val = RUNNING_DIFF(2);
01173 mask = MASK(2);
01174 tst_val = RUNNING_DIFF(3);
01175 mask = MASK(3);
01176 tst_val = RUNNING_DIFF(4);
01177 mask = MASK(4);
01178 tst_val = RUNNING_DIFF(5);
01179 mask = MASK(5);
01180 tst_val = RUNNING_DIFF(6);
01181 mask = MASK(6);
01182 tst_val = RUNNING_DIFF(7);
01183 mask = MASK(7);
01184 tst_val = RUNNING_DIFF(8);
01185 mask = MASK(8);
01186 tst_val = RUNNING_DIFF(9);
01187 mask = MASK(9);
01188 tst_val = RUNNING_DIFF(10);
01189 mask = MASK(10);
01190 tst_val = RUNNING_DIFF(11);
01191 if (tst_val >= 0) {
01192 break;
01193 }
01194 }
01195 break;
01196
01197 case 12:
01198 while (seg_len > 32) {
01199 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01200 tst_val = DIFF(1);
01201 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01202 tst_val = RUNNING_DIFF(2);
01203 mask = MASK(2);
01204 tst_val = RUNNING_DIFF(3);
01205 mask = MASK(3);
01206 tst_val = RUNNING_DIFF(4);
01207 mask = MASK(4);
01208 tst_val = RUNNING_DIFF(5);
01209 mask = MASK(5);
01210 tst_val = RUNNING_DIFF(6);
01211 mask = MASK(6);
01212 tst_val = RUNNING_DIFF(7);
01213 mask = MASK(7);
01214 tst_val = RUNNING_DIFF(8);
01215 mask = MASK(8);
01216 tst_val = RUNNING_DIFF(9);
01217 mask = MASK(9);
01218 tst_val = RUNNING_DIFF(10);
01219 mask = MASK(10);
01220 tst_val = RUNNING_DIFF(11);
01221 mask = MASK(11);
01222 tst_val = RUNNING_DIFF(12);
01223 if (tst_val >= 0) {
01224 break;
01225 }
01226 }
01227 if (tst_val == 0) {
01228 goto EXIT;
01229 }
01230 else if (tst_val > 0) {
01231 last = idx;
01232 }
01233 first = idx - stride + 1;
01234 seg_len = last - first + 1;
01235 stride = STRIDE_CALC(seg_len);
01236 }
01237
01238 for (idx = first; idx <= last; idx += 1) {
01239 tst_val = DIFF(1);
01240 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01241 tst_val = RUNNING_DIFF(2);
01242 mask = MASK(2);
01243 tst_val = RUNNING_DIFF(3);
01244 mask = MASK(3);
01245 tst_val = RUNNING_DIFF(4);
01246 mask = MASK(4);
01247 tst_val = RUNNING_DIFF(5);
01248 mask = MASK(5);
01249 tst_val = RUNNING_DIFF(6);
01250 mask = MASK(6);
01251 tst_val = RUNNING_DIFF(7);
01252 mask = MASK(7);
01253 tst_val = RUNNING_DIFF(8);
01254 mask = MASK(8);
01255 tst_val = RUNNING_DIFF(9);
01256 mask = MASK(9);
01257 tst_val = RUNNING_DIFF(10);
01258 mask = MASK(10);
01259 tst_val = RUNNING_DIFF(11);
01260 mask = MASK(11);
01261 tst_val = RUNNING_DIFF(12);
01262 if (tst_val >= 0) {
01263 break;
01264 }
01265 }
01266 break;
01267
01268 case 13:
01269 while (seg_len > 32) {
01270 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01271 tst_val = DIFF(1);
01272 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01273 tst_val = RUNNING_DIFF(2);
01274 mask = MASK(2);
01275 tst_val = RUNNING_DIFF(3);
01276 mask = MASK(3);
01277 tst_val = RUNNING_DIFF(4);
01278 mask = MASK(4);
01279 tst_val = RUNNING_DIFF(5);
01280 mask = MASK(5);
01281 tst_val = RUNNING_DIFF(6);
01282 mask = MASK(6);
01283 tst_val = RUNNING_DIFF(7);
01284 mask = MASK(7);
01285 tst_val = RUNNING_DIFF(8);
01286 mask = MASK(8);
01287 tst_val = RUNNING_DIFF(9);
01288 mask = MASK(9);
01289 tst_val = RUNNING_DIFF(10);
01290 mask = MASK(10);
01291 tst_val = RUNNING_DIFF(11);
01292 mask = MASK(11);
01293 tst_val = RUNNING_DIFF(12);
01294 mask = MASK(12);
01295 tst_val = RUNNING_DIFF(13);
01296 if (tst_val >= 0) {
01297 break;
01298 }
01299 }
01300 if (tst_val == 0) {
01301 goto EXIT;
01302 }
01303 else if (tst_val > 0) {
01304 last = idx;
01305 }
01306 first = idx - stride + 1;
01307 seg_len = last - first + 1;
01308 stride = STRIDE_CALC(seg_len);
01309 }
01310
01311 for (idx = first; idx <= last; idx += 1) {
01312 tst_val = DIFF(1);
01313 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01314 tst_val = RUNNING_DIFF(2);
01315 mask = MASK(2);
01316 tst_val = RUNNING_DIFF(3);
01317 mask = MASK(3);
01318 tst_val = RUNNING_DIFF(4);
01319 mask = MASK(4);
01320 tst_val = RUNNING_DIFF(5);
01321 mask = MASK(5);
01322 tst_val = RUNNING_DIFF(6);
01323 mask = MASK(6);
01324 tst_val = RUNNING_DIFF(7);
01325 mask = MASK(7);
01326 tst_val = RUNNING_DIFF(8);
01327 mask = MASK(8);
01328 tst_val = RUNNING_DIFF(9);
01329 mask = MASK(9);
01330 tst_val = RUNNING_DIFF(10);
01331 mask = MASK(10);
01332 tst_val = RUNNING_DIFF(11);
01333 mask = MASK(11);
01334 tst_val = RUNNING_DIFF(12);
01335 mask = MASK(12);
01336 tst_val = RUNNING_DIFF(13);
01337 if (tst_val >= 0) {
01338 break;
01339 }
01340 }
01341 break;
01342
01343 case 14:
01344 while (seg_len > 32) {
01345 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01346 tst_val = DIFF(1);
01347 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01348 tst_val = RUNNING_DIFF(2);
01349 mask = MASK(2);
01350 tst_val = RUNNING_DIFF(3);
01351 mask = MASK(3);
01352 tst_val = RUNNING_DIFF(4);
01353 mask = MASK(4);
01354 tst_val = RUNNING_DIFF(5);
01355 mask = MASK(5);
01356 tst_val = RUNNING_DIFF(6);
01357 mask = MASK(6);
01358 tst_val = RUNNING_DIFF(7);
01359 mask = MASK(7);
01360 tst_val = RUNNING_DIFF(8);
01361 mask = MASK(8);
01362 tst_val = RUNNING_DIFF(9);
01363 mask = MASK(9);
01364 tst_val = RUNNING_DIFF(10);
01365 mask = MASK(10);
01366 tst_val = RUNNING_DIFF(11);
01367 mask = MASK(11);
01368 tst_val = RUNNING_DIFF(12);
01369 mask = MASK(12);
01370 tst_val = RUNNING_DIFF(13);
01371 mask = MASK(13);
01372 tst_val = RUNNING_DIFF(14);
01373 if (tst_val >= 0) {
01374 break;
01375 }
01376 }
01377 if (tst_val == 0) {
01378 goto EXIT;
01379 }
01380 else if (tst_val > 0) {
01381 last = idx;
01382 }
01383 first = idx - stride + 1;
01384 seg_len = last - first + 1;
01385 stride = STRIDE_CALC(seg_len);
01386 }
01387
01388 for (idx = first; idx <= last; idx += 1) {
01389 tst_val = DIFF(1);
01390 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01391 tst_val = RUNNING_DIFF(2);
01392 mask = MASK(2);
01393 tst_val = RUNNING_DIFF(3);
01394 mask = MASK(3);
01395 tst_val = RUNNING_DIFF(4);
01396 mask = MASK(4);
01397 tst_val = RUNNING_DIFF(5);
01398 mask = MASK(5);
01399 tst_val = RUNNING_DIFF(6);
01400 mask = MASK(6);
01401 tst_val = RUNNING_DIFF(7);
01402 mask = MASK(7);
01403 tst_val = RUNNING_DIFF(8);
01404 mask = MASK(8);
01405 tst_val = RUNNING_DIFF(9);
01406 mask = MASK(9);
01407 tst_val = RUNNING_DIFF(10);
01408 mask = MASK(10);
01409 tst_val = RUNNING_DIFF(11);
01410 mask = MASK(11);
01411 tst_val = RUNNING_DIFF(12);
01412 mask = MASK(12);
01413 tst_val = RUNNING_DIFF(13);
01414 mask = MASK(13);
01415 tst_val = RUNNING_DIFF(14);
01416 if (tst_val >= 0) {
01417 break;
01418 }
01419 }
01420 break;
01421
01422 case 15:
01423 while (seg_len > 32) {
01424 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01425 tst_val = DIFF(1);
01426 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01427 tst_val = RUNNING_DIFF(2);
01428 mask = MASK(2);
01429 tst_val = RUNNING_DIFF(3);
01430 mask = MASK(3);
01431 tst_val = RUNNING_DIFF(4);
01432 mask = MASK(4);
01433 tst_val = RUNNING_DIFF(5);
01434 mask = MASK(5);
01435 tst_val = RUNNING_DIFF(6);
01436 mask = MASK(6);
01437 tst_val = RUNNING_DIFF(7);
01438 mask = MASK(7);
01439 tst_val = RUNNING_DIFF(8);
01440 mask = MASK(8);
01441 tst_val = RUNNING_DIFF(9);
01442 mask = MASK(9);
01443 tst_val = RUNNING_DIFF(10);
01444 mask = MASK(10);
01445 tst_val = RUNNING_DIFF(11);
01446 mask = MASK(11);
01447 tst_val = RUNNING_DIFF(12);
01448 mask = MASK(12);
01449 tst_val = RUNNING_DIFF(13);
01450 mask = MASK(13);
01451 tst_val = RUNNING_DIFF(14);
01452 mask = MASK(14);
01453 tst_val = RUNNING_DIFF(15);
01454 if (tst_val >= 0) {
01455 break;
01456 }
01457 }
01458 if (tst_val == 0) {
01459 goto EXIT;
01460 }
01461 else if (tst_val > 0) {
01462 last = idx;
01463 }
01464 first = idx - stride + 1;
01465 seg_len = last - first + 1;
01466 stride = STRIDE_CALC(seg_len);
01467 }
01468
01469 for (idx = first; idx <= last; idx += 1) {
01470 tst_val = DIFF(1);
01471 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01472 tst_val = RUNNING_DIFF(2);
01473 mask = MASK(2);
01474 tst_val = RUNNING_DIFF(3);
01475 mask = MASK(3);
01476 tst_val = RUNNING_DIFF(4);
01477 mask = MASK(4);
01478 tst_val = RUNNING_DIFF(5);
01479 mask = MASK(5);
01480 tst_val = RUNNING_DIFF(6);
01481 mask = MASK(6);
01482 tst_val = RUNNING_DIFF(7);
01483 mask = MASK(7);
01484 tst_val = RUNNING_DIFF(8);
01485 mask = MASK(8);
01486 tst_val = RUNNING_DIFF(9);
01487 mask = MASK(9);
01488 tst_val = RUNNING_DIFF(10);
01489 mask = MASK(10);
01490 tst_val = RUNNING_DIFF(11);
01491 mask = MASK(11);
01492 tst_val = RUNNING_DIFF(12);
01493 mask = MASK(12);
01494 tst_val = RUNNING_DIFF(13);
01495 mask = MASK(13);
01496 tst_val = RUNNING_DIFF(14);
01497 mask = MASK(14);
01498 tst_val = RUNNING_DIFF(15);
01499 if (tst_val >= 0) {
01500 break;
01501 }
01502 }
01503 break;
01504
01505 case 16:
01506 while (seg_len > 32) {
01507 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01508 tst_val = DIFF(1);
01509 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01510 tst_val = RUNNING_DIFF(2);
01511 mask = MASK(2);
01512 tst_val = RUNNING_DIFF(3);
01513 mask = MASK(3);
01514 tst_val = RUNNING_DIFF(4);
01515 mask = MASK(4);
01516 tst_val = RUNNING_DIFF(5);
01517 mask = MASK(5);
01518 tst_val = RUNNING_DIFF(6);
01519 mask = MASK(6);
01520 tst_val = RUNNING_DIFF(7);
01521 mask = MASK(7);
01522 tst_val = RUNNING_DIFF(8);
01523 mask = MASK(8);
01524 tst_val = RUNNING_DIFF(9);
01525 mask = MASK(9);
01526 tst_val = RUNNING_DIFF(10);
01527 mask = MASK(10);
01528 tst_val = RUNNING_DIFF(11);
01529 mask = MASK(11);
01530 tst_val = RUNNING_DIFF(12);
01531 mask = MASK(12);
01532 tst_val = RUNNING_DIFF(13);
01533 mask = MASK(13);
01534 tst_val = RUNNING_DIFF(14);
01535 mask = MASK(14);
01536 tst_val = RUNNING_DIFF(15);
01537 mask = MASK(15);
01538 tst_val = RUNNING_DIFF(16);
01539 if (tst_val >= 0) {
01540 break;
01541 }
01542 }
01543 if (tst_val == 0) {
01544 goto EXIT;
01545 }
01546 else if (tst_val > 0) {
01547 last = idx;
01548 }
01549 first = idx - stride + 1;
01550 seg_len = last - first + 1;
01551 stride = STRIDE_CALC(seg_len);
01552 }
01553
01554 for (idx = first; idx <= last; idx += 1) {
01555 tst_val = DIFF(1);
01556 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01557 tst_val = RUNNING_DIFF(2);
01558 mask = MASK(2);
01559 tst_val = RUNNING_DIFF(3);
01560 mask = MASK(3);
01561 tst_val = RUNNING_DIFF(4);
01562 mask = MASK(4);
01563 tst_val = RUNNING_DIFF(5);
01564 mask = MASK(5);
01565 tst_val = RUNNING_DIFF(6);
01566 mask = MASK(6);
01567 tst_val = RUNNING_DIFF(7);
01568 mask = MASK(7);
01569 tst_val = RUNNING_DIFF(8);
01570 mask = MASK(8);
01571 tst_val = RUNNING_DIFF(9);
01572 mask = MASK(9);
01573 tst_val = RUNNING_DIFF(10);
01574 mask = MASK(10);
01575 tst_val = RUNNING_DIFF(11);
01576 mask = MASK(11);
01577 tst_val = RUNNING_DIFF(12);
01578 mask = MASK(12);
01579 tst_val = RUNNING_DIFF(13);
01580 mask = MASK(13);
01581 tst_val = RUNNING_DIFF(14);
01582 mask = MASK(14);
01583 tst_val = RUNNING_DIFF(15);
01584 mask = MASK(15);
01585 tst_val = RUNNING_DIFF(16);
01586 if (tst_val >= 0) {
01587 break;
01588 }
01589 }
01590 break;
01591
01592
01593 case 17:
01594 while (seg_len > 32) {
01595 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01596 tst_val = DIFF(1);
01597 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01598 tst_val = RUNNING_DIFF(2);
01599 mask = MASK(2);
01600 tst_val = RUNNING_DIFF(3);
01601 mask = MASK(3);
01602 tst_val = RUNNING_DIFF(4);
01603 mask = MASK(4);
01604 tst_val = RUNNING_DIFF(5);
01605 mask = MASK(5);
01606 tst_val = RUNNING_DIFF(6);
01607 mask = MASK(6);
01608 tst_val = RUNNING_DIFF(7);
01609 mask = MASK(7);
01610 tst_val = RUNNING_DIFF(8);
01611 mask = MASK(8);
01612 tst_val = RUNNING_DIFF(9);
01613 mask = MASK(9);
01614 tst_val = RUNNING_DIFF(10);
01615 mask = MASK(10);
01616 tst_val = RUNNING_DIFF(11);
01617 mask = MASK(11);
01618 tst_val = RUNNING_DIFF(12);
01619 mask = MASK(12);
01620 tst_val = RUNNING_DIFF(13);
01621 mask = MASK(13);
01622 tst_val = RUNNING_DIFF(14);
01623 mask = MASK(14);
01624 tst_val = RUNNING_DIFF(15);
01625 mask = MASK(15);
01626 tst_val = RUNNING_DIFF(16);
01627 mask = MASK(16);
01628 tst_val = RUNNING_DIFF(17);
01629 if (tst_val >= 0) {
01630 break;
01631 }
01632 }
01633 if (tst_val == 0) {
01634 goto EXIT;
01635 }
01636 else if (tst_val > 0) {
01637 last = idx;
01638 }
01639 first = idx - stride + 1;
01640 seg_len = last - first + 1;
01641 stride = STRIDE_CALC(seg_len);
01642 }
01643
01644 for (idx = first; idx <= last; idx += 1) {
01645 tst_val = DIFF(1);
01646 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01647 tst_val = RUNNING_DIFF(2);
01648 mask = MASK(2);
01649 tst_val = RUNNING_DIFF(3);
01650 mask = MASK(3);
01651 tst_val = RUNNING_DIFF(4);
01652 mask = MASK(4);
01653 tst_val = RUNNING_DIFF(5);
01654 mask = MASK(5);
01655 tst_val = RUNNING_DIFF(6);
01656 mask = MASK(6);
01657 tst_val = RUNNING_DIFF(7);
01658 mask = MASK(7);
01659 tst_val = RUNNING_DIFF(8);
01660 mask = MASK(8);
01661 tst_val = RUNNING_DIFF(9);
01662 mask = MASK(9);
01663 tst_val = RUNNING_DIFF(10);
01664 mask = MASK(10);
01665 tst_val = RUNNING_DIFF(11);
01666 mask = MASK(11);
01667 tst_val = RUNNING_DIFF(12);
01668 mask = MASK(12);
01669 tst_val = RUNNING_DIFF(13);
01670 mask = MASK(13);
01671 tst_val = RUNNING_DIFF(14);
01672 mask = MASK(14);
01673 tst_val = RUNNING_DIFF(15);
01674 mask = MASK(15);
01675 tst_val = RUNNING_DIFF(16);
01676 mask = MASK(16);
01677 tst_val = RUNNING_DIFF(17);
01678 if (tst_val >= 0) {
01679 break;
01680 }
01681 }
01682 break;
01683
01684 # ifdef _HOST32
01685
01686 case 18:
01687 while (seg_len > 32) {
01688 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01689 tst_val = DIFF(1);
01690 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01691 tst_val = RUNNING_DIFF(2);
01692 mask = MASK(2);
01693 tst_val = RUNNING_DIFF(3);
01694 mask = MASK(3);
01695 tst_val = RUNNING_DIFF(4);
01696 mask = MASK(4);
01697 tst_val = RUNNING_DIFF(5);
01698 mask = MASK(5);
01699 tst_val = RUNNING_DIFF(6);
01700 mask = MASK(6);
01701 tst_val = RUNNING_DIFF(7);
01702 mask = MASK(7);
01703 tst_val = RUNNING_DIFF(8);
01704 mask = MASK(8);
01705 tst_val = RUNNING_DIFF(9);
01706 mask = MASK(9);
01707 tst_val = RUNNING_DIFF(10);
01708 mask = MASK(10);
01709 tst_val = RUNNING_DIFF(11);
01710 mask = MASK(11);
01711 tst_val = RUNNING_DIFF(12);
01712 mask = MASK(12);
01713 tst_val = RUNNING_DIFF(13);
01714 mask = MASK(13);
01715 tst_val = RUNNING_DIFF(14);
01716 mask = MASK(14);
01717 tst_val = RUNNING_DIFF(15);
01718 mask = MASK(15);
01719 tst_val = RUNNING_DIFF(16);
01720 mask = MASK(16);
01721 tst_val = RUNNING_DIFF(17);
01722 mask = MASK(17);
01723 tst_val = RUNNING_DIFF(18);
01724 if (tst_val >= 0) {
01725 break;
01726 }
01727 }
01728 if (tst_val == 0) {
01729 goto EXIT;
01730 }
01731 else if (tst_val > 0) {
01732 last = idx;
01733 }
01734 first = idx - stride + 1;
01735 seg_len = last - first + 1;
01736 stride = STRIDE_CALC(seg_len);
01737 }
01738
01739 for (idx = first; idx <= last; idx += 1) {
01740 tst_val = DIFF(1);
01741 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01742 tst_val = RUNNING_DIFF(2);
01743 mask = MASK(2);
01744 tst_val = RUNNING_DIFF(3);
01745 mask = MASK(3);
01746 tst_val = RUNNING_DIFF(4);
01747 mask = MASK(4);
01748 tst_val = RUNNING_DIFF(5);
01749 mask = MASK(5);
01750 tst_val = RUNNING_DIFF(6);
01751 mask = MASK(6);
01752 tst_val = RUNNING_DIFF(7);
01753 mask = MASK(7);
01754 tst_val = RUNNING_DIFF(8);
01755 mask = MASK(8);
01756 tst_val = RUNNING_DIFF(9);
01757 mask = MASK(9);
01758 tst_val = RUNNING_DIFF(10);
01759 mask = MASK(10);
01760 tst_val = RUNNING_DIFF(11);
01761 mask = MASK(11);
01762 tst_val = RUNNING_DIFF(12);
01763 mask = MASK(12);
01764 tst_val = RUNNING_DIFF(13);
01765 mask = MASK(13);
01766 tst_val = RUNNING_DIFF(14);
01767 mask = MASK(14);
01768 tst_val = RUNNING_DIFF(15);
01769 mask = MASK(15);
01770 tst_val = RUNNING_DIFF(16);
01771 mask = MASK(16);
01772 tst_val = RUNNING_DIFF(17);
01773 mask = MASK(17);
01774 tst_val = RUNNING_DIFF(18);
01775 if (tst_val >= 0) {
01776 break;
01777 }
01778 }
01779 break;
01780
01781 case 19:
01782 while (seg_len > 32) {
01783 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01784 tst_val = DIFF(1);
01785 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01786 tst_val = RUNNING_DIFF(2);
01787 mask = MASK(2);
01788 tst_val = RUNNING_DIFF(3);
01789 mask = MASK(3);
01790 tst_val = RUNNING_DIFF(4);
01791 mask = MASK(4);
01792 tst_val = RUNNING_DIFF(5);
01793 mask = MASK(5);
01794 tst_val = RUNNING_DIFF(6);
01795 mask = MASK(6);
01796 tst_val = RUNNING_DIFF(7);
01797 mask = MASK(7);
01798 tst_val = RUNNING_DIFF(8);
01799 mask = MASK(8);
01800 tst_val = RUNNING_DIFF(9);
01801 mask = MASK(9);
01802 tst_val = RUNNING_DIFF(10);
01803 mask = MASK(10);
01804 tst_val = RUNNING_DIFF(11);
01805 mask = MASK(11);
01806 tst_val = RUNNING_DIFF(12);
01807 mask = MASK(12);
01808 tst_val = RUNNING_DIFF(13);
01809 mask = MASK(13);
01810 tst_val = RUNNING_DIFF(14);
01811 mask = MASK(14);
01812 tst_val = RUNNING_DIFF(15);
01813 mask = MASK(15);
01814 tst_val = RUNNING_DIFF(16);
01815 mask = MASK(16);
01816 tst_val = RUNNING_DIFF(17);
01817 mask = MASK(17);
01818 tst_val = RUNNING_DIFF(18);
01819 mask = MASK(18);
01820 tst_val = RUNNING_DIFF(19);
01821 if (tst_val >= 0) {
01822 break;
01823 }
01824 }
01825 if (tst_val == 0) {
01826 goto EXIT;
01827 }
01828 else if (tst_val > 0) {
01829 last = idx;
01830 }
01831 first = idx - stride + 1;
01832 seg_len = last - first + 1;
01833 stride = STRIDE_CALC(seg_len);
01834 }
01835
01836 for (idx = first; idx <= last; idx += 1) {
01837 tst_val = DIFF(1);
01838 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01839 tst_val = RUNNING_DIFF(2);
01840 mask = MASK(2);
01841 tst_val = RUNNING_DIFF(3);
01842 mask = MASK(3);
01843 tst_val = RUNNING_DIFF(4);
01844 mask = MASK(4);
01845 tst_val = RUNNING_DIFF(5);
01846 mask = MASK(5);
01847 tst_val = RUNNING_DIFF(6);
01848 mask = MASK(6);
01849 tst_val = RUNNING_DIFF(7);
01850 mask = MASK(7);
01851 tst_val = RUNNING_DIFF(8);
01852 mask = MASK(8);
01853 tst_val = RUNNING_DIFF(9);
01854 mask = MASK(9);
01855 tst_val = RUNNING_DIFF(10);
01856 mask = MASK(10);
01857 tst_val = RUNNING_DIFF(11);
01858 mask = MASK(11);
01859 tst_val = RUNNING_DIFF(12);
01860 mask = MASK(12);
01861 tst_val = RUNNING_DIFF(13);
01862 mask = MASK(13);
01863 tst_val = RUNNING_DIFF(14);
01864 mask = MASK(14);
01865 tst_val = RUNNING_DIFF(15);
01866 mask = MASK(15);
01867 tst_val = RUNNING_DIFF(16);
01868 mask = MASK(16);
01869 tst_val = RUNNING_DIFF(17);
01870 mask = MASK(17);
01871 tst_val = RUNNING_DIFF(18);
01872 mask = MASK(18);
01873 tst_val = RUNNING_DIFF(19);
01874 if (tst_val >= 0) {
01875 break;
01876 }
01877 }
01878 break;
01879
01880 case 20:
01881 while (seg_len > 32) {
01882 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01883 tst_val = DIFF(1);
01884 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01885 tst_val = RUNNING_DIFF(2);
01886 mask = MASK(2);
01887 tst_val = RUNNING_DIFF(3);
01888 mask = MASK(3);
01889 tst_val = RUNNING_DIFF(4);
01890 mask = MASK(4);
01891 tst_val = RUNNING_DIFF(5);
01892 mask = MASK(5);
01893 tst_val = RUNNING_DIFF(6);
01894 mask = MASK(6);
01895 tst_val = RUNNING_DIFF(7);
01896 mask = MASK(7);
01897 tst_val = RUNNING_DIFF(8);
01898 mask = MASK(8);
01899 tst_val = RUNNING_DIFF(9);
01900 mask = MASK(9);
01901 tst_val = RUNNING_DIFF(10);
01902 mask = MASK(10);
01903 tst_val = RUNNING_DIFF(11);
01904 mask = MASK(11);
01905 tst_val = RUNNING_DIFF(12);
01906 mask = MASK(12);
01907 tst_val = RUNNING_DIFF(13);
01908 mask = MASK(13);
01909 tst_val = RUNNING_DIFF(14);
01910 mask = MASK(14);
01911 tst_val = RUNNING_DIFF(15);
01912 mask = MASK(15);
01913 tst_val = RUNNING_DIFF(16);
01914 mask = MASK(16);
01915 tst_val = RUNNING_DIFF(17);
01916 mask = MASK(17);
01917 tst_val = RUNNING_DIFF(18);
01918 mask = MASK(18);
01919 tst_val = RUNNING_DIFF(19);
01920 mask = MASK(19);
01921 tst_val = RUNNING_DIFF(20);
01922 if (tst_val >= 0) {
01923 break;
01924 }
01925 }
01926 if (tst_val == 0) {
01927 goto EXIT;
01928 }
01929 else if (tst_val > 0) {
01930 last = idx;
01931 }
01932 first = idx - stride + 1;
01933 seg_len = last - first + 1;
01934 stride = STRIDE_CALC(seg_len);
01935 }
01936
01937 for (idx = first; idx <= last; idx += 1) {
01938 tst_val = DIFF(1);
01939 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01940 tst_val = RUNNING_DIFF(2);
01941 mask = MASK(2);
01942 tst_val = RUNNING_DIFF(3);
01943 mask = MASK(3);
01944 tst_val = RUNNING_DIFF(4);
01945 mask = MASK(4);
01946 tst_val = RUNNING_DIFF(5);
01947 mask = MASK(5);
01948 tst_val = RUNNING_DIFF(6);
01949 mask = MASK(6);
01950 tst_val = RUNNING_DIFF(7);
01951 mask = MASK(7);
01952 tst_val = RUNNING_DIFF(8);
01953 mask = MASK(8);
01954 tst_val = RUNNING_DIFF(9);
01955 mask = MASK(9);
01956 tst_val = RUNNING_DIFF(10);
01957 mask = MASK(10);
01958 tst_val = RUNNING_DIFF(11);
01959 mask = MASK(11);
01960 tst_val = RUNNING_DIFF(12);
01961 mask = MASK(12);
01962 tst_val = RUNNING_DIFF(13);
01963 mask = MASK(13);
01964 tst_val = RUNNING_DIFF(14);
01965 mask = MASK(14);
01966 tst_val = RUNNING_DIFF(15);
01967 mask = MASK(15);
01968 tst_val = RUNNING_DIFF(16);
01969 mask = MASK(16);
01970 tst_val = RUNNING_DIFF(17);
01971 mask = MASK(17);
01972 tst_val = RUNNING_DIFF(18);
01973 mask = MASK(18);
01974 tst_val = RUNNING_DIFF(19);
01975 mask = MASK(19);
01976 tst_val = RUNNING_DIFF(20);
01977 if (tst_val >= 0) {
01978 break;
01979 }
01980 }
01981 break;
01982
01983 case 21:
01984 while (seg_len > 32) {
01985 for (idx = first + stride -1 ; idx <= last; idx += stride) {
01986 tst_val = DIFF(1);
01987 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
01988 tst_val = RUNNING_DIFF(2);
01989 mask = MASK(2);
01990 tst_val = RUNNING_DIFF(3);
01991 mask = MASK(3);
01992 tst_val = RUNNING_DIFF(4);
01993 mask = MASK(4);
01994 tst_val = RUNNING_DIFF(5);
01995 mask = MASK(5);
01996 tst_val = RUNNING_DIFF(6);
01997 mask = MASK(6);
01998 tst_val = RUNNING_DIFF(7);
01999 mask = MASK(7);
02000 tst_val = RUNNING_DIFF(8);
02001 mask = MASK(8);
02002 tst_val = RUNNING_DIFF(9);
02003 mask = MASK(9);
02004 tst_val = RUNNING_DIFF(10);
02005 mask = MASK(10);
02006 tst_val = RUNNING_DIFF(11);
02007 mask = MASK(11);
02008 tst_val = RUNNING_DIFF(12);
02009 mask = MASK(12);
02010 tst_val = RUNNING_DIFF(13);
02011 mask = MASK(13);
02012 tst_val = RUNNING_DIFF(14);
02013 mask = MASK(14);
02014 tst_val = RUNNING_DIFF(15);
02015 mask = MASK(15);
02016 tst_val = RUNNING_DIFF(16);
02017 mask = MASK(16);
02018 tst_val = RUNNING_DIFF(17);
02019 mask = MASK(17);
02020 tst_val = RUNNING_DIFF(18);
02021 mask = MASK(18);
02022 tst_val = RUNNING_DIFF(19);
02023 mask = MASK(19);
02024 tst_val = RUNNING_DIFF(20);
02025 mask = MASK(20);
02026 tst_val = RUNNING_DIFF(21);
02027 if (tst_val >= 0) {
02028 break;
02029 }
02030 }
02031 if (tst_val == 0) {
02032 goto EXIT;
02033 }
02034 else if (tst_val > 0) {
02035 last = idx;
02036 }
02037 first = idx - stride + 1;
02038 seg_len = last - first + 1;
02039 stride = STRIDE_CALC(seg_len);
02040 }
02041
02042 for (idx = first; idx <= last; idx += 1) {
02043 tst_val = DIFF(1);
02044 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02045 tst_val = RUNNING_DIFF(2);
02046 mask = MASK(2);
02047 tst_val = RUNNING_DIFF(3);
02048 mask = MASK(3);
02049 tst_val = RUNNING_DIFF(4);
02050 mask = MASK(4);
02051 tst_val = RUNNING_DIFF(5);
02052 mask = MASK(5);
02053 tst_val = RUNNING_DIFF(6);
02054 mask = MASK(6);
02055 tst_val = RUNNING_DIFF(7);
02056 mask = MASK(7);
02057 tst_val = RUNNING_DIFF(8);
02058 mask = MASK(8);
02059 tst_val = RUNNING_DIFF(9);
02060 mask = MASK(9);
02061 tst_val = RUNNING_DIFF(10);
02062 mask = MASK(10);
02063 tst_val = RUNNING_DIFF(11);
02064 mask = MASK(11);
02065 tst_val = RUNNING_DIFF(12);
02066 mask = MASK(12);
02067 tst_val = RUNNING_DIFF(13);
02068 mask = MASK(13);
02069 tst_val = RUNNING_DIFF(14);
02070 mask = MASK(14);
02071 tst_val = RUNNING_DIFF(15);
02072 mask = MASK(15);
02073 tst_val = RUNNING_DIFF(16);
02074 mask = MASK(16);
02075 tst_val = RUNNING_DIFF(17);
02076 mask = MASK(17);
02077 tst_val = RUNNING_DIFF(18);
02078 mask = MASK(18);
02079 tst_val = RUNNING_DIFF(19);
02080 mask = MASK(19);
02081 tst_val = RUNNING_DIFF(20);
02082 mask = MASK(20);
02083 tst_val = RUNNING_DIFF(21);
02084 if (tst_val >= 0) {
02085 break;
02086 }
02087 }
02088 break;
02089
02090 case 22:
02091 while (seg_len > 32) {
02092 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02093 tst_val = DIFF(1);
02094 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02095 tst_val = RUNNING_DIFF(2);
02096 mask = MASK(2);
02097 tst_val = RUNNING_DIFF(3);
02098 mask = MASK(3);
02099 tst_val = RUNNING_DIFF(4);
02100 mask = MASK(4);
02101 tst_val = RUNNING_DIFF(5);
02102 mask = MASK(5);
02103 tst_val = RUNNING_DIFF(6);
02104 mask = MASK(6);
02105 tst_val = RUNNING_DIFF(7);
02106 mask = MASK(7);
02107 tst_val = RUNNING_DIFF(8);
02108 mask = MASK(8);
02109 tst_val = RUNNING_DIFF(9);
02110 mask = MASK(9);
02111 tst_val = RUNNING_DIFF(10);
02112 mask = MASK(10);
02113 tst_val = RUNNING_DIFF(11);
02114 mask = MASK(11);
02115 tst_val = RUNNING_DIFF(12);
02116 mask = MASK(12);
02117 tst_val = RUNNING_DIFF(13);
02118 mask = MASK(13);
02119 tst_val = RUNNING_DIFF(14);
02120 mask = MASK(14);
02121 tst_val = RUNNING_DIFF(15);
02122 mask = MASK(15);
02123 tst_val = RUNNING_DIFF(16);
02124 mask = MASK(16);
02125 tst_val = RUNNING_DIFF(17);
02126 mask = MASK(17);
02127 tst_val = RUNNING_DIFF(18);
02128 mask = MASK(18);
02129 tst_val = RUNNING_DIFF(19);
02130 mask = MASK(19);
02131 tst_val = RUNNING_DIFF(20);
02132 mask = MASK(20);
02133 tst_val = RUNNING_DIFF(21);
02134 mask = MASK(21);
02135 tst_val = RUNNING_DIFF(22);
02136 if (tst_val >= 0) {
02137 break;
02138 }
02139 }
02140 if (tst_val == 0) {
02141 goto EXIT;
02142 }
02143 else if (tst_val > 0) {
02144 last = idx;
02145 }
02146 first = idx - stride + 1;
02147 seg_len = last - first + 1;
02148 stride = STRIDE_CALC(seg_len);
02149 }
02150
02151 for (idx = first; idx <= last; idx += 1) {
02152 tst_val = DIFF(1);
02153 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02154 tst_val = RUNNING_DIFF(2);
02155 mask = MASK(2);
02156 tst_val = RUNNING_DIFF(3);
02157 mask = MASK(3);
02158 tst_val = RUNNING_DIFF(4);
02159 mask = MASK(4);
02160 tst_val = RUNNING_DIFF(5);
02161 mask = MASK(5);
02162 tst_val = RUNNING_DIFF(6);
02163 mask = MASK(6);
02164 tst_val = RUNNING_DIFF(7);
02165 mask = MASK(7);
02166 tst_val = RUNNING_DIFF(8);
02167 mask = MASK(8);
02168 tst_val = RUNNING_DIFF(9);
02169 mask = MASK(9);
02170 tst_val = RUNNING_DIFF(10);
02171 mask = MASK(10);
02172 tst_val = RUNNING_DIFF(11);
02173 mask = MASK(11);
02174 tst_val = RUNNING_DIFF(12);
02175 mask = MASK(12);
02176 tst_val = RUNNING_DIFF(13);
02177 mask = MASK(13);
02178 tst_val = RUNNING_DIFF(14);
02179 mask = MASK(14);
02180 tst_val = RUNNING_DIFF(15);
02181 mask = MASK(15);
02182 tst_val = RUNNING_DIFF(16);
02183 mask = MASK(16);
02184 tst_val = RUNNING_DIFF(17);
02185 mask = MASK(17);
02186 tst_val = RUNNING_DIFF(18);
02187 mask = MASK(18);
02188 tst_val = RUNNING_DIFF(19);
02189 mask = MASK(19);
02190 tst_val = RUNNING_DIFF(20);
02191 mask = MASK(20);
02192 tst_val = RUNNING_DIFF(21);
02193 mask = MASK(21);
02194 tst_val = RUNNING_DIFF(22);
02195 if (tst_val >= 0) {
02196 break;
02197 }
02198 }
02199 break;
02200
02201 case 23:
02202 while (seg_len > 32) {
02203 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02204 tst_val = DIFF(1);
02205 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02206 tst_val = RUNNING_DIFF(2);
02207 mask = MASK(2);
02208 tst_val = RUNNING_DIFF(3);
02209 mask = MASK(3);
02210 tst_val = RUNNING_DIFF(4);
02211 mask = MASK(4);
02212 tst_val = RUNNING_DIFF(5);
02213 mask = MASK(5);
02214 tst_val = RUNNING_DIFF(6);
02215 mask = MASK(6);
02216 tst_val = RUNNING_DIFF(7);
02217 mask = MASK(7);
02218 tst_val = RUNNING_DIFF(8);
02219 mask = MASK(8);
02220 tst_val = RUNNING_DIFF(9);
02221 mask = MASK(9);
02222 tst_val = RUNNING_DIFF(10);
02223 mask = MASK(10);
02224 tst_val = RUNNING_DIFF(11);
02225 mask = MASK(11);
02226 tst_val = RUNNING_DIFF(12);
02227 mask = MASK(12);
02228 tst_val = RUNNING_DIFF(13);
02229 mask = MASK(13);
02230 tst_val = RUNNING_DIFF(14);
02231 mask = MASK(14);
02232 tst_val = RUNNING_DIFF(15);
02233 mask = MASK(15);
02234 tst_val = RUNNING_DIFF(16);
02235 mask = MASK(16);
02236 tst_val = RUNNING_DIFF(17);
02237 mask = MASK(17);
02238 tst_val = RUNNING_DIFF(18);
02239 mask = MASK(18);
02240 tst_val = RUNNING_DIFF(19);
02241 mask = MASK(19);
02242 tst_val = RUNNING_DIFF(20);
02243 mask = MASK(20);
02244 tst_val = RUNNING_DIFF(21);
02245 mask = MASK(21);
02246 tst_val = RUNNING_DIFF(22);
02247 mask = MASK(22);
02248 tst_val = RUNNING_DIFF(23);
02249 if (tst_val >= 0) {
02250 break;
02251 }
02252 }
02253 if (tst_val == 0) {
02254 goto EXIT;
02255 }
02256 else if (tst_val > 0) {
02257 last = idx;
02258 }
02259 first = idx - stride + 1;
02260 seg_len = last - first + 1;
02261 stride = STRIDE_CALC(seg_len);
02262 }
02263
02264 for (idx = first; idx <= last; idx += 1) {
02265 tst_val = DIFF(1);
02266 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02267 tst_val = RUNNING_DIFF(2);
02268 mask = MASK(2);
02269 tst_val = RUNNING_DIFF(3);
02270 mask = MASK(3);
02271 tst_val = RUNNING_DIFF(4);
02272 mask = MASK(4);
02273 tst_val = RUNNING_DIFF(5);
02274 mask = MASK(5);
02275 tst_val = RUNNING_DIFF(6);
02276 mask = MASK(6);
02277 tst_val = RUNNING_DIFF(7);
02278 mask = MASK(7);
02279 tst_val = RUNNING_DIFF(8);
02280 mask = MASK(8);
02281 tst_val = RUNNING_DIFF(9);
02282 mask = MASK(9);
02283 tst_val = RUNNING_DIFF(10);
02284 mask = MASK(10);
02285 tst_val = RUNNING_DIFF(11);
02286 mask = MASK(11);
02287 tst_val = RUNNING_DIFF(12);
02288 mask = MASK(12);
02289 tst_val = RUNNING_DIFF(13);
02290 mask = MASK(13);
02291 tst_val = RUNNING_DIFF(14);
02292 mask = MASK(14);
02293 tst_val = RUNNING_DIFF(15);
02294 mask = MASK(15);
02295 tst_val = RUNNING_DIFF(16);
02296 mask = MASK(16);
02297 tst_val = RUNNING_DIFF(17);
02298 mask = MASK(17);
02299 tst_val = RUNNING_DIFF(18);
02300 mask = MASK(18);
02301 tst_val = RUNNING_DIFF(19);
02302 mask = MASK(19);
02303 tst_val = RUNNING_DIFF(20);
02304 mask = MASK(20);
02305 tst_val = RUNNING_DIFF(21);
02306 mask = MASK(21);
02307 tst_val = RUNNING_DIFF(22);
02308 mask = MASK(22);
02309 tst_val = RUNNING_DIFF(23);
02310 if (tst_val >= 0) {
02311 break;
02312 }
02313 }
02314 break;
02315
02316 case 24:
02317 while (seg_len > 32) {
02318 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02319 tst_val = DIFF(1);
02320 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02321 tst_val = RUNNING_DIFF(2);
02322 mask = MASK(2);
02323 tst_val = RUNNING_DIFF(3);
02324 mask = MASK(3);
02325 tst_val = RUNNING_DIFF(4);
02326 mask = MASK(4);
02327 tst_val = RUNNING_DIFF(5);
02328 mask = MASK(5);
02329 tst_val = RUNNING_DIFF(6);
02330 mask = MASK(6);
02331 tst_val = RUNNING_DIFF(7);
02332 mask = MASK(7);
02333 tst_val = RUNNING_DIFF(8);
02334 mask = MASK(8);
02335 tst_val = RUNNING_DIFF(9);
02336 mask = MASK(9);
02337 tst_val = RUNNING_DIFF(10);
02338 mask = MASK(10);
02339 tst_val = RUNNING_DIFF(11);
02340 mask = MASK(11);
02341 tst_val = RUNNING_DIFF(12);
02342 mask = MASK(12);
02343 tst_val = RUNNING_DIFF(13);
02344 mask = MASK(13);
02345 tst_val = RUNNING_DIFF(14);
02346 mask = MASK(14);
02347 tst_val = RUNNING_DIFF(15);
02348 mask = MASK(15);
02349 tst_val = RUNNING_DIFF(16);
02350 mask = MASK(16);
02351 tst_val = RUNNING_DIFF(17);
02352 mask = MASK(17);
02353 tst_val = RUNNING_DIFF(18);
02354 mask = MASK(18);
02355 tst_val = RUNNING_DIFF(19);
02356 mask = MASK(19);
02357 tst_val = RUNNING_DIFF(20);
02358 mask = MASK(20);
02359 tst_val = RUNNING_DIFF(21);
02360 mask = MASK(21);
02361 tst_val = RUNNING_DIFF(22);
02362 mask = MASK(22);
02363 tst_val = RUNNING_DIFF(23);
02364 mask = MASK(23);
02365 tst_val = RUNNING_DIFF(24);
02366 if (tst_val >= 0) {
02367 break;
02368 }
02369 }
02370 if (tst_val == 0) {
02371 goto EXIT;
02372 }
02373 else if (tst_val > 0) {
02374 last = idx;
02375 }
02376 first = idx - stride + 1;
02377 seg_len = last - first + 1;
02378 stride = STRIDE_CALC(seg_len);
02379 }
02380
02381 for (idx = first; idx <= last; idx += 1) {
02382 tst_val = DIFF(1);
02383 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02384 tst_val = RUNNING_DIFF(2);
02385 mask = MASK(2);
02386 tst_val = RUNNING_DIFF(3);
02387 mask = MASK(3);
02388 tst_val = RUNNING_DIFF(4);
02389 mask = MASK(4);
02390 tst_val = RUNNING_DIFF(5);
02391 mask = MASK(5);
02392 tst_val = RUNNING_DIFF(6);
02393 mask = MASK(6);
02394 tst_val = RUNNING_DIFF(7);
02395 mask = MASK(7);
02396 tst_val = RUNNING_DIFF(8);
02397 mask = MASK(8);
02398 tst_val = RUNNING_DIFF(9);
02399 mask = MASK(9);
02400 tst_val = RUNNING_DIFF(10);
02401 mask = MASK(10);
02402 tst_val = RUNNING_DIFF(11);
02403 mask = MASK(11);
02404 tst_val = RUNNING_DIFF(12);
02405 mask = MASK(12);
02406 tst_val = RUNNING_DIFF(13);
02407 mask = MASK(13);
02408 tst_val = RUNNING_DIFF(14);
02409 mask = MASK(14);
02410 tst_val = RUNNING_DIFF(15);
02411 mask = MASK(15);
02412 tst_val = RUNNING_DIFF(16);
02413 mask = MASK(16);
02414 tst_val = RUNNING_DIFF(17);
02415 mask = MASK(17);
02416 tst_val = RUNNING_DIFF(18);
02417 mask = MASK(18);
02418 tst_val = RUNNING_DIFF(19);
02419 mask = MASK(19);
02420 tst_val = RUNNING_DIFF(20);
02421 mask = MASK(20);
02422 tst_val = RUNNING_DIFF(21);
02423 mask = MASK(21);
02424 tst_val = RUNNING_DIFF(22);
02425 mask = MASK(22);
02426 tst_val = RUNNING_DIFF(23);
02427 mask = MASK(23);
02428 tst_val = RUNNING_DIFF(24);
02429 if (tst_val >= 0) {
02430 break;
02431 }
02432 }
02433 break;
02434
02435 case 25:
02436 while (seg_len > 32) {
02437 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02438 tst_val = DIFF(1);
02439 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02440 tst_val = RUNNING_DIFF(2);
02441 mask = MASK(2);
02442 tst_val = RUNNING_DIFF(3);
02443 mask = MASK(3);
02444 tst_val = RUNNING_DIFF(4);
02445 mask = MASK(4);
02446 tst_val = RUNNING_DIFF(5);
02447 mask = MASK(5);
02448 tst_val = RUNNING_DIFF(6);
02449 mask = MASK(6);
02450 tst_val = RUNNING_DIFF(7);
02451 mask = MASK(7);
02452 tst_val = RUNNING_DIFF(8);
02453 mask = MASK(8);
02454 tst_val = RUNNING_DIFF(9);
02455 mask = MASK(9);
02456 tst_val = RUNNING_DIFF(10);
02457 mask = MASK(10);
02458 tst_val = RUNNING_DIFF(11);
02459 mask = MASK(11);
02460 tst_val = RUNNING_DIFF(12);
02461 mask = MASK(12);
02462 tst_val = RUNNING_DIFF(13);
02463 mask = MASK(13);
02464 tst_val = RUNNING_DIFF(14);
02465 mask = MASK(14);
02466 tst_val = RUNNING_DIFF(15);
02467 mask = MASK(15);
02468 tst_val = RUNNING_DIFF(16);
02469 mask = MASK(16);
02470 tst_val = RUNNING_DIFF(17);
02471 mask = MASK(17);
02472 tst_val = RUNNING_DIFF(18);
02473 mask = MASK(18);
02474 tst_val = RUNNING_DIFF(19);
02475 mask = MASK(19);
02476 tst_val = RUNNING_DIFF(20);
02477 mask = MASK(20);
02478 tst_val = RUNNING_DIFF(21);
02479 mask = MASK(21);
02480 tst_val = RUNNING_DIFF(22);
02481 mask = MASK(22);
02482 tst_val = RUNNING_DIFF(23);
02483 mask = MASK(23);
02484 tst_val = RUNNING_DIFF(24);
02485 mask = MASK(24);
02486 tst_val = RUNNING_DIFF(25);
02487 if (tst_val >= 0) {
02488 break;
02489 }
02490 }
02491 if (tst_val == 0) {
02492 goto EXIT;
02493 }
02494 else if (tst_val > 0) {
02495 last = idx;
02496 }
02497 first = idx - stride + 1;
02498 seg_len = last - first + 1;
02499 stride = STRIDE_CALC(seg_len);
02500 }
02501
02502 for (idx = first; idx <= last; idx += 1) {
02503 tst_val = DIFF(1);
02504 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02505 tst_val = RUNNING_DIFF(2);
02506 mask = MASK(2);
02507 tst_val = RUNNING_DIFF(3);
02508 mask = MASK(3);
02509 tst_val = RUNNING_DIFF(4);
02510 mask = MASK(4);
02511 tst_val = RUNNING_DIFF(5);
02512 mask = MASK(5);
02513 tst_val = RUNNING_DIFF(6);
02514 mask = MASK(6);
02515 tst_val = RUNNING_DIFF(7);
02516 mask = MASK(7);
02517 tst_val = RUNNING_DIFF(8);
02518 mask = MASK(8);
02519 tst_val = RUNNING_DIFF(9);
02520 mask = MASK(9);
02521 tst_val = RUNNING_DIFF(10);
02522 mask = MASK(10);
02523 tst_val = RUNNING_DIFF(11);
02524 mask = MASK(11);
02525 tst_val = RUNNING_DIFF(12);
02526 mask = MASK(12);
02527 tst_val = RUNNING_DIFF(13);
02528 mask = MASK(13);
02529 tst_val = RUNNING_DIFF(14);
02530 mask = MASK(14);
02531 tst_val = RUNNING_DIFF(15);
02532 mask = MASK(15);
02533 tst_val = RUNNING_DIFF(16);
02534 mask = MASK(16);
02535 tst_val = RUNNING_DIFF(17);
02536 mask = MASK(17);
02537 tst_val = RUNNING_DIFF(18);
02538 mask = MASK(18);
02539 tst_val = RUNNING_DIFF(19);
02540 mask = MASK(19);
02541 tst_val = RUNNING_DIFF(20);
02542 mask = MASK(20);
02543 tst_val = RUNNING_DIFF(21);
02544 mask = MASK(21);
02545 tst_val = RUNNING_DIFF(22);
02546 mask = MASK(22);
02547 tst_val = RUNNING_DIFF(23);
02548 mask = MASK(23);
02549 tst_val = RUNNING_DIFF(24);
02550 mask = MASK(24);
02551 tst_val = RUNNING_DIFF(25);
02552 if (tst_val >= 0) {
02553 break;
02554 }
02555 }
02556 break;
02557
02558 case 26:
02559 while (seg_len > 32) {
02560 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02561 tst_val = DIFF(1);
02562 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02563 tst_val = RUNNING_DIFF(2);
02564 mask = MASK(2);
02565 tst_val = RUNNING_DIFF(3);
02566 mask = MASK(3);
02567 tst_val = RUNNING_DIFF(4);
02568 mask = MASK(4);
02569 tst_val = RUNNING_DIFF(5);
02570 mask = MASK(5);
02571 tst_val = RUNNING_DIFF(6);
02572 mask = MASK(6);
02573 tst_val = RUNNING_DIFF(7);
02574 mask = MASK(7);
02575 tst_val = RUNNING_DIFF(8);
02576 mask = MASK(8);
02577 tst_val = RUNNING_DIFF(9);
02578 mask = MASK(9);
02579 tst_val = RUNNING_DIFF(10);
02580 mask = MASK(10);
02581 tst_val = RUNNING_DIFF(11);
02582 mask = MASK(11);
02583 tst_val = RUNNING_DIFF(12);
02584 mask = MASK(12);
02585 tst_val = RUNNING_DIFF(13);
02586 mask = MASK(13);
02587 tst_val = RUNNING_DIFF(14);
02588 mask = MASK(14);
02589 tst_val = RUNNING_DIFF(15);
02590 mask = MASK(15);
02591 tst_val = RUNNING_DIFF(16);
02592 mask = MASK(16);
02593 tst_val = RUNNING_DIFF(17);
02594 mask = MASK(17);
02595 tst_val = RUNNING_DIFF(18);
02596 mask = MASK(18);
02597 tst_val = RUNNING_DIFF(19);
02598 mask = MASK(19);
02599 tst_val = RUNNING_DIFF(20);
02600 mask = MASK(20);
02601 tst_val = RUNNING_DIFF(21);
02602 mask = MASK(21);
02603 tst_val = RUNNING_DIFF(22);
02604 mask = MASK(22);
02605 tst_val = RUNNING_DIFF(23);
02606 mask = MASK(23);
02607 tst_val = RUNNING_DIFF(24);
02608 mask = MASK(24);
02609 tst_val = RUNNING_DIFF(25);
02610 mask = MASK(25);
02611 tst_val = RUNNING_DIFF(26);
02612 if (tst_val >= 0) {
02613 break;
02614 }
02615 }
02616 if (tst_val == 0) {
02617 goto EXIT;
02618 }
02619 else if (tst_val > 0) {
02620 last = idx;
02621 }
02622 first = idx - stride + 1;
02623 seg_len = last - first + 1;
02624 stride = STRIDE_CALC(seg_len);
02625 }
02626
02627 for (idx = first; idx <= last; idx += 1) {
02628 tst_val = DIFF(1);
02629 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02630 tst_val = RUNNING_DIFF(2);
02631 mask = MASK(2);
02632 tst_val = RUNNING_DIFF(3);
02633 mask = MASK(3);
02634 tst_val = RUNNING_DIFF(4);
02635 mask = MASK(4);
02636 tst_val = RUNNING_DIFF(5);
02637 mask = MASK(5);
02638 tst_val = RUNNING_DIFF(6);
02639 mask = MASK(6);
02640 tst_val = RUNNING_DIFF(7);
02641 mask = MASK(7);
02642 tst_val = RUNNING_DIFF(8);
02643 mask = MASK(8);
02644 tst_val = RUNNING_DIFF(9);
02645 mask = MASK(9);
02646 tst_val = RUNNING_DIFF(10);
02647 mask = MASK(10);
02648 tst_val = RUNNING_DIFF(11);
02649 mask = MASK(11);
02650 tst_val = RUNNING_DIFF(12);
02651 mask = MASK(12);
02652 tst_val = RUNNING_DIFF(13);
02653 mask = MASK(13);
02654 tst_val = RUNNING_DIFF(14);
02655 mask = MASK(14);
02656 tst_val = RUNNING_DIFF(15);
02657 mask = MASK(15);
02658 tst_val = RUNNING_DIFF(16);
02659 mask = MASK(16);
02660 tst_val = RUNNING_DIFF(17);
02661 mask = MASK(17);
02662 tst_val = RUNNING_DIFF(18);
02663 mask = MASK(18);
02664 tst_val = RUNNING_DIFF(19);
02665 mask = MASK(19);
02666 tst_val = RUNNING_DIFF(20);
02667 mask = MASK(20);
02668 tst_val = RUNNING_DIFF(21);
02669 mask = MASK(21);
02670 tst_val = RUNNING_DIFF(22);
02671 mask = MASK(22);
02672 tst_val = RUNNING_DIFF(23);
02673 mask = MASK(23);
02674 tst_val = RUNNING_DIFF(24);
02675 mask = MASK(24);
02676 tst_val = RUNNING_DIFF(25);
02677 mask = MASK(25);
02678 tst_val = RUNNING_DIFF(26);
02679 if (tst_val >= 0) {
02680 break;
02681 }
02682 }
02683 break;
02684
02685 case 27:
02686 while (seg_len > 32) {
02687 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02688 tst_val = DIFF(1);
02689 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02690 tst_val = RUNNING_DIFF(2);
02691 mask = MASK(2);
02692 tst_val = RUNNING_DIFF(3);
02693 mask = MASK(3);
02694 tst_val = RUNNING_DIFF(4);
02695 mask = MASK(4);
02696 tst_val = RUNNING_DIFF(5);
02697 mask = MASK(5);
02698 tst_val = RUNNING_DIFF(6);
02699 mask = MASK(6);
02700 tst_val = RUNNING_DIFF(7);
02701 mask = MASK(7);
02702 tst_val = RUNNING_DIFF(8);
02703 mask = MASK(8);
02704 tst_val = RUNNING_DIFF(9);
02705 mask = MASK(9);
02706 tst_val = RUNNING_DIFF(10);
02707 mask = MASK(10);
02708 tst_val = RUNNING_DIFF(11);
02709 mask = MASK(11);
02710 tst_val = RUNNING_DIFF(12);
02711 mask = MASK(12);
02712 tst_val = RUNNING_DIFF(13);
02713 mask = MASK(13);
02714 tst_val = RUNNING_DIFF(14);
02715 mask = MASK(14);
02716 tst_val = RUNNING_DIFF(15);
02717 mask = MASK(15);
02718 tst_val = RUNNING_DIFF(16);
02719 mask = MASK(16);
02720 tst_val = RUNNING_DIFF(17);
02721 mask = MASK(17);
02722 tst_val = RUNNING_DIFF(18);
02723 mask = MASK(18);
02724 tst_val = RUNNING_DIFF(19);
02725 mask = MASK(19);
02726 tst_val = RUNNING_DIFF(20);
02727 mask = MASK(20);
02728 tst_val = RUNNING_DIFF(21);
02729 mask = MASK(21);
02730 tst_val = RUNNING_DIFF(22);
02731 mask = MASK(22);
02732 tst_val = RUNNING_DIFF(23);
02733 mask = MASK(23);
02734 tst_val = RUNNING_DIFF(24);
02735 mask = MASK(24);
02736 tst_val = RUNNING_DIFF(25);
02737 mask = MASK(25);
02738 tst_val = RUNNING_DIFF(26);
02739 mask = MASK(26);
02740 tst_val = RUNNING_DIFF(27);
02741 if (tst_val >= 0) {
02742 break;
02743 }
02744 }
02745 if (tst_val == 0) {
02746 goto EXIT;
02747 }
02748 else if (tst_val > 0) {
02749 last = idx;
02750 }
02751 first = idx - stride + 1;
02752 seg_len = last - first + 1;
02753 stride = STRIDE_CALC(seg_len);
02754 }
02755
02756 for (idx = first; idx <= last; idx += 1) {
02757 tst_val = DIFF(1);
02758 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02759 tst_val = RUNNING_DIFF(2);
02760 mask = MASK(2);
02761 tst_val = RUNNING_DIFF(3);
02762 mask = MASK(3);
02763 tst_val = RUNNING_DIFF(4);
02764 mask = MASK(4);
02765 tst_val = RUNNING_DIFF(5);
02766 mask = MASK(5);
02767 tst_val = RUNNING_DIFF(6);
02768 mask = MASK(6);
02769 tst_val = RUNNING_DIFF(7);
02770 mask = MASK(7);
02771 tst_val = RUNNING_DIFF(8);
02772 mask = MASK(8);
02773 tst_val = RUNNING_DIFF(9);
02774 mask = MASK(9);
02775 tst_val = RUNNING_DIFF(10);
02776 mask = MASK(10);
02777 tst_val = RUNNING_DIFF(11);
02778 mask = MASK(11);
02779 tst_val = RUNNING_DIFF(12);
02780 mask = MASK(12);
02781 tst_val = RUNNING_DIFF(13);
02782 mask = MASK(13);
02783 tst_val = RUNNING_DIFF(14);
02784 mask = MASK(14);
02785 tst_val = RUNNING_DIFF(15);
02786 mask = MASK(15);
02787 tst_val = RUNNING_DIFF(16);
02788 mask = MASK(16);
02789 tst_val = RUNNING_DIFF(17);
02790 mask = MASK(17);
02791 tst_val = RUNNING_DIFF(18);
02792 mask = MASK(18);
02793 tst_val = RUNNING_DIFF(19);
02794 mask = MASK(19);
02795 tst_val = RUNNING_DIFF(20);
02796 mask = MASK(20);
02797 tst_val = RUNNING_DIFF(21);
02798 mask = MASK(21);
02799 tst_val = RUNNING_DIFF(22);
02800 mask = MASK(22);
02801 tst_val = RUNNING_DIFF(23);
02802 mask = MASK(23);
02803 tst_val = RUNNING_DIFF(24);
02804 mask = MASK(24);
02805 tst_val = RUNNING_DIFF(25);
02806 mask = MASK(25);
02807 tst_val = RUNNING_DIFF(26);
02808 mask = MASK(26);
02809 tst_val = RUNNING_DIFF(27);
02810 if (tst_val >= 0) {
02811 break;
02812 }
02813 }
02814 break;
02815
02816 case 28:
02817 while (seg_len > 32) {
02818 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02819 tst_val = DIFF(1);
02820 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02821 tst_val = RUNNING_DIFF(2);
02822 mask = MASK(2);
02823 tst_val = RUNNING_DIFF(3);
02824 mask = MASK(3);
02825 tst_val = RUNNING_DIFF(4);
02826 mask = MASK(4);
02827 tst_val = RUNNING_DIFF(5);
02828 mask = MASK(5);
02829 tst_val = RUNNING_DIFF(6);
02830 mask = MASK(6);
02831 tst_val = RUNNING_DIFF(7);
02832 mask = MASK(7);
02833 tst_val = RUNNING_DIFF(8);
02834 mask = MASK(8);
02835 tst_val = RUNNING_DIFF(9);
02836 mask = MASK(9);
02837 tst_val = RUNNING_DIFF(10);
02838 mask = MASK(10);
02839 tst_val = RUNNING_DIFF(11);
02840 mask = MASK(11);
02841 tst_val = RUNNING_DIFF(12);
02842 mask = MASK(12);
02843 tst_val = RUNNING_DIFF(13);
02844 mask = MASK(13);
02845 tst_val = RUNNING_DIFF(14);
02846 mask = MASK(14);
02847 tst_val = RUNNING_DIFF(15);
02848 mask = MASK(15);
02849 tst_val = RUNNING_DIFF(16);
02850 mask = MASK(16);
02851 tst_val = RUNNING_DIFF(17);
02852 mask = MASK(17);
02853 tst_val = RUNNING_DIFF(18);
02854 mask = MASK(18);
02855 tst_val = RUNNING_DIFF(19);
02856 mask = MASK(19);
02857 tst_val = RUNNING_DIFF(20);
02858 mask = MASK(20);
02859 tst_val = RUNNING_DIFF(21);
02860 mask = MASK(21);
02861 tst_val = RUNNING_DIFF(22);
02862 mask = MASK(22);
02863 tst_val = RUNNING_DIFF(23);
02864 mask = MASK(23);
02865 tst_val = RUNNING_DIFF(24);
02866 mask = MASK(24);
02867 tst_val = RUNNING_DIFF(25);
02868 mask = MASK(25);
02869 tst_val = RUNNING_DIFF(26);
02870 mask = MASK(26);
02871 tst_val = RUNNING_DIFF(27);
02872 mask = MASK(27);
02873 tst_val = RUNNING_DIFF(28);
02874 if (tst_val >= 0) {
02875 break;
02876 }
02877 }
02878 if (tst_val == 0) {
02879 goto EXIT;
02880 }
02881 else if (tst_val > 0) {
02882 last = idx;
02883 }
02884 first = idx - stride + 1;
02885 seg_len = last - first + 1;
02886 stride = STRIDE_CALC(seg_len);
02887 }
02888
02889 for (idx = first; idx <= last; idx += 1) {
02890 tst_val = DIFF(1);
02891 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02892 tst_val = RUNNING_DIFF(2);
02893 mask = MASK(2);
02894 tst_val = RUNNING_DIFF(3);
02895 mask = MASK(3);
02896 tst_val = RUNNING_DIFF(4);
02897 mask = MASK(4);
02898 tst_val = RUNNING_DIFF(5);
02899 mask = MASK(5);
02900 tst_val = RUNNING_DIFF(6);
02901 mask = MASK(6);
02902 tst_val = RUNNING_DIFF(7);
02903 mask = MASK(7);
02904 tst_val = RUNNING_DIFF(8);
02905 mask = MASK(8);
02906 tst_val = RUNNING_DIFF(9);
02907 mask = MASK(9);
02908 tst_val = RUNNING_DIFF(10);
02909 mask = MASK(10);
02910 tst_val = RUNNING_DIFF(11);
02911 mask = MASK(11);
02912 tst_val = RUNNING_DIFF(12);
02913 mask = MASK(12);
02914 tst_val = RUNNING_DIFF(13);
02915 mask = MASK(13);
02916 tst_val = RUNNING_DIFF(14);
02917 mask = MASK(14);
02918 tst_val = RUNNING_DIFF(15);
02919 mask = MASK(15);
02920 tst_val = RUNNING_DIFF(16);
02921 mask = MASK(16);
02922 tst_val = RUNNING_DIFF(17);
02923 mask = MASK(17);
02924 tst_val = RUNNING_DIFF(18);
02925 mask = MASK(18);
02926 tst_val = RUNNING_DIFF(19);
02927 mask = MASK(19);
02928 tst_val = RUNNING_DIFF(20);
02929 mask = MASK(20);
02930 tst_val = RUNNING_DIFF(21);
02931 mask = MASK(21);
02932 tst_val = RUNNING_DIFF(22);
02933 mask = MASK(22);
02934 tst_val = RUNNING_DIFF(23);
02935 mask = MASK(23);
02936 tst_val = RUNNING_DIFF(24);
02937 mask = MASK(24);
02938 tst_val = RUNNING_DIFF(25);
02939 mask = MASK(25);
02940 tst_val = RUNNING_DIFF(26);
02941 mask = MASK(26);
02942 tst_val = RUNNING_DIFF(27);
02943 mask = MASK(27);
02944 tst_val = RUNNING_DIFF(28);
02945 if (tst_val >= 0) {
02946 break;
02947 }
02948 }
02949 break;
02950
02951 case 29:
02952 while (seg_len > 32) {
02953 for (idx = first + stride -1 ; idx <= last; idx += stride) {
02954 tst_val = DIFF(1);
02955 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
02956 tst_val = RUNNING_DIFF(2);
02957 mask = MASK(2);
02958 tst_val = RUNNING_DIFF(3);
02959 mask = MASK(3);
02960 tst_val = RUNNING_DIFF(4);
02961 mask = MASK(4);
02962 tst_val = RUNNING_DIFF(5);
02963 mask = MASK(5);
02964 tst_val = RUNNING_DIFF(6);
02965 mask = MASK(6);
02966 tst_val = RUNNING_DIFF(7);
02967 mask = MASK(7);
02968 tst_val = RUNNING_DIFF(8);
02969 mask = MASK(8);
02970 tst_val = RUNNING_DIFF(9);
02971 mask = MASK(9);
02972 tst_val = RUNNING_DIFF(10);
02973 mask = MASK(10);
02974 tst_val = RUNNING_DIFF(11);
02975 mask = MASK(11);
02976 tst_val = RUNNING_DIFF(12);
02977 mask = MASK(12);
02978 tst_val = RUNNING_DIFF(13);
02979 mask = MASK(13);
02980 tst_val = RUNNING_DIFF(14);
02981 mask = MASK(14);
02982 tst_val = RUNNING_DIFF(15);
02983 mask = MASK(15);
02984 tst_val = RUNNING_DIFF(16);
02985 mask = MASK(16);
02986 tst_val = RUNNING_DIFF(17);
02987 mask = MASK(17);
02988 tst_val = RUNNING_DIFF(18);
02989 mask = MASK(18);
02990 tst_val = RUNNING_DIFF(19);
02991 mask = MASK(19);
02992 tst_val = RUNNING_DIFF(20);
02993 mask = MASK(20);
02994 tst_val = RUNNING_DIFF(21);
02995 mask = MASK(21);
02996 tst_val = RUNNING_DIFF(22);
02997 mask = MASK(22);
02998 tst_val = RUNNING_DIFF(23);
02999 mask = MASK(23);
03000 tst_val = RUNNING_DIFF(24);
03001 mask = MASK(24);
03002 tst_val = RUNNING_DIFF(25);
03003 mask = MASK(25);
03004 tst_val = RUNNING_DIFF(26);
03005 mask = MASK(26);
03006 tst_val = RUNNING_DIFF(27);
03007 mask = MASK(27);
03008 tst_val = RUNNING_DIFF(28);
03009 mask = MASK(28);
03010 tst_val = RUNNING_DIFF(29);
03011 if (tst_val >= 0) {
03012 break;
03013 }
03014 }
03015 if (tst_val == 0) {
03016 goto EXIT;
03017 }
03018 else if (tst_val > 0) {
03019 last = idx;
03020 }
03021 first = idx - stride + 1;
03022 seg_len = last - first + 1;
03023 stride = STRIDE_CALC(seg_len);
03024 }
03025
03026 for (idx = first; idx <= last; idx += 1) {
03027 tst_val = DIFF(1);
03028 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03029 tst_val = RUNNING_DIFF(2);
03030 mask = MASK(2);
03031 tst_val = RUNNING_DIFF(3);
03032 mask = MASK(3);
03033 tst_val = RUNNING_DIFF(4);
03034 mask = MASK(4);
03035 tst_val = RUNNING_DIFF(5);
03036 mask = MASK(5);
03037 tst_val = RUNNING_DIFF(6);
03038 mask = MASK(6);
03039 tst_val = RUNNING_DIFF(7);
03040 mask = MASK(7);
03041 tst_val = RUNNING_DIFF(8);
03042 mask = MASK(8);
03043 tst_val = RUNNING_DIFF(9);
03044 mask = MASK(9);
03045 tst_val = RUNNING_DIFF(10);
03046 mask = MASK(10);
03047 tst_val = RUNNING_DIFF(11);
03048 mask = MASK(11);
03049 tst_val = RUNNING_DIFF(12);
03050 mask = MASK(12);
03051 tst_val = RUNNING_DIFF(13);
03052 mask = MASK(13);
03053 tst_val = RUNNING_DIFF(14);
03054 mask = MASK(14);
03055 tst_val = RUNNING_DIFF(15);
03056 mask = MASK(15);
03057 tst_val = RUNNING_DIFF(16);
03058 mask = MASK(16);
03059 tst_val = RUNNING_DIFF(17);
03060 mask = MASK(17);
03061 tst_val = RUNNING_DIFF(18);
03062 mask = MASK(18);
03063 tst_val = RUNNING_DIFF(19);
03064 mask = MASK(19);
03065 tst_val = RUNNING_DIFF(20);
03066 mask = MASK(20);
03067 tst_val = RUNNING_DIFF(21);
03068 mask = MASK(21);
03069 tst_val = RUNNING_DIFF(22);
03070 mask = MASK(22);
03071 tst_val = RUNNING_DIFF(23);
03072 mask = MASK(23);
03073 tst_val = RUNNING_DIFF(24);
03074 mask = MASK(24);
03075 tst_val = RUNNING_DIFF(25);
03076 mask = MASK(25);
03077 tst_val = RUNNING_DIFF(26);
03078 mask = MASK(26);
03079 tst_val = RUNNING_DIFF(27);
03080 mask = MASK(27);
03081 tst_val = RUNNING_DIFF(28);
03082 mask = MASK(28);
03083 tst_val = RUNNING_DIFF(29);
03084 if (tst_val >= 0) {
03085 break;
03086 }
03087 }
03088 break;
03089
03090 case 30:
03091 while (seg_len > 32) {
03092 for (idx = first + stride -1 ; idx <= last; idx += stride) {
03093 tst_val = DIFF(1);
03094 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03095 tst_val = RUNNING_DIFF(2);
03096 mask = MASK(2);
03097 tst_val = RUNNING_DIFF(3);
03098 mask = MASK(3);
03099 tst_val = RUNNING_DIFF(4);
03100 mask = MASK(4);
03101 tst_val = RUNNING_DIFF(5);
03102 mask = MASK(5);
03103 tst_val = RUNNING_DIFF(6);
03104 mask = MASK(6);
03105 tst_val = RUNNING_DIFF(7);
03106 mask = MASK(7);
03107 tst_val = RUNNING_DIFF(8);
03108 mask = MASK(8);
03109 tst_val = RUNNING_DIFF(9);
03110 mask = MASK(9);
03111 tst_val = RUNNING_DIFF(10);
03112 mask = MASK(10);
03113 tst_val = RUNNING_DIFF(11);
03114 mask = MASK(11);
03115 tst_val = RUNNING_DIFF(12);
03116 mask = MASK(12);
03117 tst_val = RUNNING_DIFF(13);
03118 mask = MASK(13);
03119 tst_val = RUNNING_DIFF(14);
03120 mask = MASK(14);
03121 tst_val = RUNNING_DIFF(15);
03122 mask = MASK(15);
03123 tst_val = RUNNING_DIFF(16);
03124 mask = MASK(16);
03125 tst_val = RUNNING_DIFF(17);
03126 mask = MASK(17);
03127 tst_val = RUNNING_DIFF(18);
03128 mask = MASK(18);
03129 tst_val = RUNNING_DIFF(19);
03130 mask = MASK(19);
03131 tst_val = RUNNING_DIFF(20);
03132 mask = MASK(20);
03133 tst_val = RUNNING_DIFF(21);
03134 mask = MASK(21);
03135 tst_val = RUNNING_DIFF(22);
03136 mask = MASK(22);
03137 tst_val = RUNNING_DIFF(23);
03138 mask = MASK(23);
03139 tst_val = RUNNING_DIFF(24);
03140 mask = MASK(24);
03141 tst_val = RUNNING_DIFF(25);
03142 mask = MASK(25);
03143 tst_val = RUNNING_DIFF(26);
03144 mask = MASK(26);
03145 tst_val = RUNNING_DIFF(27);
03146 mask = MASK(27);
03147 tst_val = RUNNING_DIFF(28);
03148 mask = MASK(28);
03149 tst_val = RUNNING_DIFF(29);
03150 mask = MASK(29);
03151 tst_val = RUNNING_DIFF(30);
03152 if (tst_val >= 0) {
03153 break;
03154 }
03155 }
03156 if (tst_val == 0) {
03157 goto EXIT;
03158 }
03159 else if (tst_val > 0) {
03160 last = idx;
03161 }
03162 first = idx - stride + 1;
03163 seg_len = last - first + 1;
03164 stride = STRIDE_CALC(seg_len);
03165 }
03166
03167 for (idx = first; idx <= last; idx += 1) {
03168 tst_val = DIFF(1);
03169 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03170 tst_val = RUNNING_DIFF(2);
03171 mask = MASK(2);
03172 tst_val = RUNNING_DIFF(3);
03173 mask = MASK(3);
03174 tst_val = RUNNING_DIFF(4);
03175 mask = MASK(4);
03176 tst_val = RUNNING_DIFF(5);
03177 mask = MASK(5);
03178 tst_val = RUNNING_DIFF(6);
03179 mask = MASK(6);
03180 tst_val = RUNNING_DIFF(7);
03181 mask = MASK(7);
03182 tst_val = RUNNING_DIFF(8);
03183 mask = MASK(8);
03184 tst_val = RUNNING_DIFF(9);
03185 mask = MASK(9);
03186 tst_val = RUNNING_DIFF(10);
03187 mask = MASK(10);
03188 tst_val = RUNNING_DIFF(11);
03189 mask = MASK(11);
03190 tst_val = RUNNING_DIFF(12);
03191 mask = MASK(12);
03192 tst_val = RUNNING_DIFF(13);
03193 mask = MASK(13);
03194 tst_val = RUNNING_DIFF(14);
03195 mask = MASK(14);
03196 tst_val = RUNNING_DIFF(15);
03197 mask = MASK(15);
03198 tst_val = RUNNING_DIFF(16);
03199 mask = MASK(16);
03200 tst_val = RUNNING_DIFF(17);
03201 mask = MASK(17);
03202 tst_val = RUNNING_DIFF(18);
03203 mask = MASK(18);
03204 tst_val = RUNNING_DIFF(19);
03205 mask = MASK(19);
03206 tst_val = RUNNING_DIFF(20);
03207 mask = MASK(20);
03208 tst_val = RUNNING_DIFF(21);
03209 mask = MASK(21);
03210 tst_val = RUNNING_DIFF(22);
03211 mask = MASK(22);
03212 tst_val = RUNNING_DIFF(23);
03213 mask = MASK(23);
03214 tst_val = RUNNING_DIFF(24);
03215 mask = MASK(24);
03216 tst_val = RUNNING_DIFF(25);
03217 mask = MASK(25);
03218 tst_val = RUNNING_DIFF(26);
03219 mask = MASK(26);
03220 tst_val = RUNNING_DIFF(27);
03221 mask = MASK(27);
03222 tst_val = RUNNING_DIFF(28);
03223 mask = MASK(28);
03224 tst_val = RUNNING_DIFF(29);
03225 mask = MASK(29);
03226 tst_val = RUNNING_DIFF(30);
03227 if (tst_val >= 0) {
03228 break;
03229 }
03230 }
03231 break;
03232
03233 case 31:
03234 while (seg_len > 32) {
03235 for (idx = first + stride -1 ; idx <= last; idx += stride) {
03236 tst_val = DIFF(1);
03237 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03238 tst_val = RUNNING_DIFF(2);
03239 mask = MASK(2);
03240 tst_val = RUNNING_DIFF(3);
03241 mask = MASK(3);
03242 tst_val = RUNNING_DIFF(4);
03243 mask = MASK(4);
03244 tst_val = RUNNING_DIFF(5);
03245 mask = MASK(5);
03246 tst_val = RUNNING_DIFF(6);
03247 mask = MASK(6);
03248 tst_val = RUNNING_DIFF(7);
03249 mask = MASK(7);
03250 tst_val = RUNNING_DIFF(8);
03251 mask = MASK(8);
03252 tst_val = RUNNING_DIFF(9);
03253 mask = MASK(9);
03254 tst_val = RUNNING_DIFF(10);
03255 mask = MASK(10);
03256 tst_val = RUNNING_DIFF(11);
03257 mask = MASK(11);
03258 tst_val = RUNNING_DIFF(12);
03259 mask = MASK(12);
03260 tst_val = RUNNING_DIFF(13);
03261 mask = MASK(13);
03262 tst_val = RUNNING_DIFF(14);
03263 mask = MASK(14);
03264 tst_val = RUNNING_DIFF(15);
03265 mask = MASK(15);
03266 tst_val = RUNNING_DIFF(16);
03267 mask = MASK(16);
03268 tst_val = RUNNING_DIFF(17);
03269 mask = MASK(17);
03270 tst_val = RUNNING_DIFF(18);
03271 mask = MASK(18);
03272 tst_val = RUNNING_DIFF(19);
03273 mask = MASK(19);
03274 tst_val = RUNNING_DIFF(20);
03275 mask = MASK(20);
03276 tst_val = RUNNING_DIFF(21);
03277 mask = MASK(21);
03278 tst_val = RUNNING_DIFF(22);
03279 mask = MASK(22);
03280 tst_val = RUNNING_DIFF(23);
03281 mask = MASK(23);
03282 tst_val = RUNNING_DIFF(24);
03283 mask = MASK(24);
03284 tst_val = RUNNING_DIFF(25);
03285 mask = MASK(25);
03286 tst_val = RUNNING_DIFF(26);
03287 mask = MASK(26);
03288 tst_val = RUNNING_DIFF(27);
03289 mask = MASK(27);
03290 tst_val = RUNNING_DIFF(28);
03291 mask = MASK(28);
03292 tst_val = RUNNING_DIFF(29);
03293 mask = MASK(29);
03294 tst_val = RUNNING_DIFF(30);
03295 mask = MASK(30);
03296 tst_val = RUNNING_DIFF(31);
03297 if (tst_val >= 0) {
03298 break;
03299 }
03300 }
03301 if (tst_val == 0) {
03302 goto EXIT;
03303 }
03304 else if (tst_val > 0) {
03305 last = idx;
03306 }
03307 first = idx - stride + 1;
03308 seg_len = last - first + 1;
03309 stride = STRIDE_CALC(seg_len);
03310 }
03311
03312 for (idx = first; idx <= last; idx += 1) {
03313 tst_val = DIFF(1);
03314 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03315 tst_val = RUNNING_DIFF(2);
03316 mask = MASK(2);
03317 tst_val = RUNNING_DIFF(3);
03318 mask = MASK(3);
03319 tst_val = RUNNING_DIFF(4);
03320 mask = MASK(4);
03321 tst_val = RUNNING_DIFF(5);
03322 mask = MASK(5);
03323 tst_val = RUNNING_DIFF(6);
03324 mask = MASK(6);
03325 tst_val = RUNNING_DIFF(7);
03326 mask = MASK(7);
03327 tst_val = RUNNING_DIFF(8);
03328 mask = MASK(8);
03329 tst_val = RUNNING_DIFF(9);
03330 mask = MASK(9);
03331 tst_val = RUNNING_DIFF(10);
03332 mask = MASK(10);
03333 tst_val = RUNNING_DIFF(11);
03334 mask = MASK(11);
03335 tst_val = RUNNING_DIFF(12);
03336 mask = MASK(12);
03337 tst_val = RUNNING_DIFF(13);
03338 mask = MASK(13);
03339 tst_val = RUNNING_DIFF(14);
03340 mask = MASK(14);
03341 tst_val = RUNNING_DIFF(15);
03342 mask = MASK(15);
03343 tst_val = RUNNING_DIFF(16);
03344 mask = MASK(16);
03345 tst_val = RUNNING_DIFF(17);
03346 mask = MASK(17);
03347 tst_val = RUNNING_DIFF(18);
03348 mask = MASK(18);
03349 tst_val = RUNNING_DIFF(19);
03350 mask = MASK(19);
03351 tst_val = RUNNING_DIFF(20);
03352 mask = MASK(20);
03353 tst_val = RUNNING_DIFF(21);
03354 mask = MASK(21);
03355 tst_val = RUNNING_DIFF(22);
03356 mask = MASK(22);
03357 tst_val = RUNNING_DIFF(23);
03358 mask = MASK(23);
03359 tst_val = RUNNING_DIFF(24);
03360 mask = MASK(24);
03361 tst_val = RUNNING_DIFF(25);
03362 mask = MASK(25);
03363 tst_val = RUNNING_DIFF(26);
03364 mask = MASK(26);
03365 tst_val = RUNNING_DIFF(27);
03366 mask = MASK(27);
03367 tst_val = RUNNING_DIFF(28);
03368 mask = MASK(28);
03369 tst_val = RUNNING_DIFF(29);
03370 mask = MASK(29);
03371 tst_val = RUNNING_DIFF(30);
03372 mask = MASK(30);
03373 tst_val = RUNNING_DIFF(31);
03374 if (tst_val >= 0) {
03375 break;
03376 }
03377 }
03378 break;
03379
03380 case 32:
03381 while (seg_len > 32) {
03382 for (idx = first + stride -1 ; idx <= last; idx += stride) {
03383 tst_val = DIFF(1);
03384 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03385 tst_val = RUNNING_DIFF(2);
03386 mask = MASK(2);
03387 tst_val = RUNNING_DIFF(3);
03388 mask = MASK(3);
03389 tst_val = RUNNING_DIFF(4);
03390 mask = MASK(4);
03391 tst_val = RUNNING_DIFF(5);
03392 mask = MASK(5);
03393 tst_val = RUNNING_DIFF(6);
03394 mask = MASK(6);
03395 tst_val = RUNNING_DIFF(7);
03396 mask = MASK(7);
03397 tst_val = RUNNING_DIFF(8);
03398 mask = MASK(8);
03399 tst_val = RUNNING_DIFF(9);
03400 mask = MASK(9);
03401 tst_val = RUNNING_DIFF(10);
03402 mask = MASK(10);
03403 tst_val = RUNNING_DIFF(11);
03404 mask = MASK(11);
03405 tst_val = RUNNING_DIFF(12);
03406 mask = MASK(12);
03407 tst_val = RUNNING_DIFF(13);
03408 mask = MASK(13);
03409 tst_val = RUNNING_DIFF(14);
03410 mask = MASK(14);
03411 tst_val = RUNNING_DIFF(15);
03412 mask = MASK(15);
03413 tst_val = RUNNING_DIFF(16);
03414 mask = MASK(16);
03415 tst_val = RUNNING_DIFF(17);
03416 mask = MASK(17);
03417 tst_val = RUNNING_DIFF(18);
03418 mask = MASK(18);
03419 tst_val = RUNNING_DIFF(19);
03420 mask = MASK(19);
03421 tst_val = RUNNING_DIFF(20);
03422 mask = MASK(20);
03423 tst_val = RUNNING_DIFF(21);
03424 mask = MASK(21);
03425 tst_val = RUNNING_DIFF(22);
03426 mask = MASK(22);
03427 tst_val = RUNNING_DIFF(23);
03428 mask = MASK(23);
03429 tst_val = RUNNING_DIFF(24);
03430 mask = MASK(24);
03431 tst_val = RUNNING_DIFF(25);
03432 mask = MASK(25);
03433 tst_val = RUNNING_DIFF(26);
03434 mask = MASK(26);
03435 tst_val = RUNNING_DIFF(27);
03436 mask = MASK(27);
03437 tst_val = RUNNING_DIFF(28);
03438 mask = MASK(28);
03439 tst_val = RUNNING_DIFF(29);
03440 mask = MASK(29);
03441 tst_val = RUNNING_DIFF(30);
03442 mask = MASK(30);
03443 tst_val = RUNNING_DIFF(31);
03444 mask = MASK(31);
03445 tst_val = RUNNING_DIFF(32);
03446 if (tst_val >= 0) {
03447 break;
03448 }
03449 }
03450 if (tst_val == 0) {
03451 goto EXIT;
03452 }
03453 else if (tst_val > 0) {
03454 last = idx;
03455 }
03456 first = idx - stride + 1;
03457 seg_len = last - first + 1;
03458 stride = STRIDE_CALC(seg_len);
03459 }
03460
03461 for (idx = first; idx <= last; idx += 1) {
03462 tst_val = DIFF(1);
03463 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03464 tst_val = RUNNING_DIFF(2);
03465 mask = MASK(2);
03466 tst_val = RUNNING_DIFF(3);
03467 mask = MASK(3);
03468 tst_val = RUNNING_DIFF(4);
03469 mask = MASK(4);
03470 tst_val = RUNNING_DIFF(5);
03471 mask = MASK(5);
03472 tst_val = RUNNING_DIFF(6);
03473 mask = MASK(6);
03474 tst_val = RUNNING_DIFF(7);
03475 mask = MASK(7);
03476 tst_val = RUNNING_DIFF(8);
03477 mask = MASK(8);
03478 tst_val = RUNNING_DIFF(9);
03479 mask = MASK(9);
03480 tst_val = RUNNING_DIFF(10);
03481 mask = MASK(10);
03482 tst_val = RUNNING_DIFF(11);
03483 mask = MASK(11);
03484 tst_val = RUNNING_DIFF(12);
03485 mask = MASK(12);
03486 tst_val = RUNNING_DIFF(13);
03487 mask = MASK(13);
03488 tst_val = RUNNING_DIFF(14);
03489 mask = MASK(14);
03490 tst_val = RUNNING_DIFF(15);
03491 mask = MASK(15);
03492 tst_val = RUNNING_DIFF(16);
03493 mask = MASK(16);
03494 tst_val = RUNNING_DIFF(17);
03495 mask = MASK(17);
03496 tst_val = RUNNING_DIFF(18);
03497 mask = MASK(18);
03498 tst_val = RUNNING_DIFF(19);
03499 mask = MASK(19);
03500 tst_val = RUNNING_DIFF(20);
03501 mask = MASK(20);
03502 tst_val = RUNNING_DIFF(21);
03503 mask = MASK(21);
03504 tst_val = RUNNING_DIFF(22);
03505 mask = MASK(22);
03506 tst_val = RUNNING_DIFF(23);
03507 mask = MASK(23);
03508 tst_val = RUNNING_DIFF(24);
03509 mask = MASK(24);
03510 tst_val = RUNNING_DIFF(25);
03511 mask = MASK(25);
03512 tst_val = RUNNING_DIFF(26);
03513 mask = MASK(26);
03514 tst_val = RUNNING_DIFF(27);
03515 mask = MASK(27);
03516 tst_val = RUNNING_DIFF(28);
03517 mask = MASK(28);
03518 tst_val = RUNNING_DIFF(29);
03519 mask = MASK(29);
03520 tst_val = RUNNING_DIFF(30);
03521 mask = MASK(30);
03522 tst_val = RUNNING_DIFF(31);
03523 mask = MASK(31);
03524 tst_val = RUNNING_DIFF(32);
03525 if (tst_val >= 0) {
03526 break;
03527 }
03528 }
03529 break;
03530
03531 case 33:
03532 while (seg_len > 32) {
03533 for (idx = first + stride -1 ; idx <= last; idx += stride) {
03534 tst_val = DIFF(1);
03535 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03536 tst_val = RUNNING_DIFF(2);
03537 mask = MASK(2);
03538 tst_val = RUNNING_DIFF(3);
03539 mask = MASK(3);
03540 tst_val = RUNNING_DIFF(4);
03541 mask = MASK(4);
03542 tst_val = RUNNING_DIFF(5);
03543 mask = MASK(5);
03544 tst_val = RUNNING_DIFF(6);
03545 mask = MASK(6);
03546 tst_val = RUNNING_DIFF(7);
03547 mask = MASK(7);
03548 tst_val = RUNNING_DIFF(8);
03549 mask = MASK(8);
03550 tst_val = RUNNING_DIFF(9);
03551 mask = MASK(9);
03552 tst_val = RUNNING_DIFF(10);
03553 mask = MASK(10);
03554 tst_val = RUNNING_DIFF(11);
03555 mask = MASK(11);
03556 tst_val = RUNNING_DIFF(12);
03557 mask = MASK(12);
03558 tst_val = RUNNING_DIFF(13);
03559 mask = MASK(13);
03560 tst_val = RUNNING_DIFF(14);
03561 mask = MASK(14);
03562 tst_val = RUNNING_DIFF(15);
03563 mask = MASK(15);
03564 tst_val = RUNNING_DIFF(16);
03565 mask = MASK(16);
03566 tst_val = RUNNING_DIFF(17);
03567 mask = MASK(17);
03568 tst_val = RUNNING_DIFF(18);
03569 mask = MASK(18);
03570 tst_val = RUNNING_DIFF(19);
03571 mask = MASK(19);
03572 tst_val = RUNNING_DIFF(20);
03573 mask = MASK(20);
03574 tst_val = RUNNING_DIFF(21);
03575 mask = MASK(21);
03576 tst_val = RUNNING_DIFF(22);
03577 mask = MASK(22);
03578 tst_val = RUNNING_DIFF(23);
03579 mask = MASK(23);
03580 tst_val = RUNNING_DIFF(24);
03581 mask = MASK(24);
03582 tst_val = RUNNING_DIFF(25);
03583 mask = MASK(25);
03584 tst_val = RUNNING_DIFF(26);
03585 mask = MASK(26);
03586 tst_val = RUNNING_DIFF(27);
03587 mask = MASK(27);
03588 tst_val = RUNNING_DIFF(28);
03589 mask = MASK(28);
03590 tst_val = RUNNING_DIFF(29);
03591 mask = MASK(29);
03592 tst_val = RUNNING_DIFF(30);
03593 mask = MASK(30);
03594 tst_val = RUNNING_DIFF(31);
03595 mask = MASK(31);
03596 tst_val = RUNNING_DIFF(32);
03597 mask = MASK(32);
03598 tst_val = RUNNING_DIFF(33);
03599 if (tst_val >= 0) {
03600 break;
03601 }
03602 }
03603 if (tst_val == 0) {
03604 goto EXIT;
03605 }
03606 else if (tst_val > 0) {
03607 last = idx;
03608 }
03609 first = idx - stride + 1;
03610 seg_len = last - first + 1;
03611 stride = STRIDE_CALC(seg_len);
03612 }
03613
03614 for (idx = first; idx <= last; idx += 1) {
03615 tst_val = DIFF(1);
03616 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03617 tst_val = RUNNING_DIFF(2);
03618 mask = MASK(2);
03619 tst_val = RUNNING_DIFF(3);
03620 mask = MASK(3);
03621 tst_val = RUNNING_DIFF(4);
03622 mask = MASK(4);
03623 tst_val = RUNNING_DIFF(5);
03624 mask = MASK(5);
03625 tst_val = RUNNING_DIFF(6);
03626 mask = MASK(6);
03627 tst_val = RUNNING_DIFF(7);
03628 mask = MASK(7);
03629 tst_val = RUNNING_DIFF(8);
03630 mask = MASK(8);
03631 tst_val = RUNNING_DIFF(9);
03632 mask = MASK(9);
03633 tst_val = RUNNING_DIFF(10);
03634 mask = MASK(10);
03635 tst_val = RUNNING_DIFF(11);
03636 mask = MASK(11);
03637 tst_val = RUNNING_DIFF(12);
03638 mask = MASK(12);
03639 tst_val = RUNNING_DIFF(13);
03640 mask = MASK(13);
03641 tst_val = RUNNING_DIFF(14);
03642 mask = MASK(14);
03643 tst_val = RUNNING_DIFF(15);
03644 mask = MASK(15);
03645 tst_val = RUNNING_DIFF(16);
03646 mask = MASK(16);
03647 tst_val = RUNNING_DIFF(17);
03648 mask = MASK(17);
03649 tst_val = RUNNING_DIFF(18);
03650 mask = MASK(18);
03651 tst_val = RUNNING_DIFF(19);
03652 mask = MASK(19);
03653 tst_val = RUNNING_DIFF(20);
03654 mask = MASK(20);
03655 tst_val = RUNNING_DIFF(21);
03656 mask = MASK(21);
03657 tst_val = RUNNING_DIFF(22);
03658 mask = MASK(22);
03659 tst_val = RUNNING_DIFF(23);
03660 mask = MASK(23);
03661 tst_val = RUNNING_DIFF(24);
03662 mask = MASK(24);
03663 tst_val = RUNNING_DIFF(25);
03664 mask = MASK(25);
03665 tst_val = RUNNING_DIFF(26);
03666 mask = MASK(26);
03667 tst_val = RUNNING_DIFF(27);
03668 mask = MASK(27);
03669 tst_val = RUNNING_DIFF(28);
03670 mask = MASK(28);
03671 tst_val = RUNNING_DIFF(29);
03672 mask = MASK(29);
03673 tst_val = RUNNING_DIFF(30);
03674 mask = MASK(30);
03675 tst_val = RUNNING_DIFF(31);
03676 mask = MASK(31);
03677 tst_val = RUNNING_DIFF(32);
03678 mask = MASK(32);
03679 tst_val = RUNNING_DIFF(33);
03680 if (tst_val >= 0) {
03681 break;
03682 }
03683 }
03684 break;
03685
03686 case 34:
03687 while (seg_len > 32) {
03688 for (idx = first + stride -1 ; idx <= last; idx += stride) {
03689 tst_val = DIFF(1);
03690 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03691 tst_val = RUNNING_DIFF(2);
03692 mask = MASK(2);
03693 tst_val = RUNNING_DIFF(3);
03694 mask = MASK(3);
03695 tst_val = RUNNING_DIFF(4);
03696 mask = MASK(4);
03697 tst_val = RUNNING_DIFF(5);
03698 mask = MASK(5);
03699 tst_val = RUNNING_DIFF(6);
03700 mask = MASK(6);
03701 tst_val = RUNNING_DIFF(7);
03702 mask = MASK(7);
03703 tst_val = RUNNING_DIFF(8);
03704 mask = MASK(8);
03705 tst_val = RUNNING_DIFF(9);
03706 mask = MASK(9);
03707 tst_val = RUNNING_DIFF(10);
03708 mask = MASK(10);
03709 tst_val = RUNNING_DIFF(11);
03710 mask = MASK(11);
03711 tst_val = RUNNING_DIFF(12);
03712 mask = MASK(12);
03713 tst_val = RUNNING_DIFF(13);
03714 mask = MASK(13);
03715 tst_val = RUNNING_DIFF(14);
03716 mask = MASK(14);
03717 tst_val = RUNNING_DIFF(15);
03718 mask = MASK(15);
03719 tst_val = RUNNING_DIFF(16);
03720 mask = MASK(16);
03721 tst_val = RUNNING_DIFF(17);
03722 mask = MASK(17);
03723 tst_val = RUNNING_DIFF(18);
03724 mask = MASK(18);
03725 tst_val = RUNNING_DIFF(19);
03726 mask = MASK(19);
03727 tst_val = RUNNING_DIFF(20);
03728 mask = MASK(20);
03729 tst_val = RUNNING_DIFF(21);
03730 mask = MASK(21);
03731 tst_val = RUNNING_DIFF(22);
03732 mask = MASK(22);
03733 tst_val = RUNNING_DIFF(23);
03734 mask = MASK(23);
03735 tst_val = RUNNING_DIFF(24);
03736 mask = MASK(24);
03737 tst_val = RUNNING_DIFF(25);
03738 mask = MASK(25);
03739 tst_val = RUNNING_DIFF(26);
03740 mask = MASK(26);
03741 tst_val = RUNNING_DIFF(27);
03742 mask = MASK(27);
03743 tst_val = RUNNING_DIFF(28);
03744 mask = MASK(28);
03745 tst_val = RUNNING_DIFF(29);
03746 mask = MASK(29);
03747 tst_val = RUNNING_DIFF(30);
03748 mask = MASK(30);
03749 tst_val = RUNNING_DIFF(31);
03750 mask = MASK(31);
03751 tst_val = RUNNING_DIFF(32);
03752 mask = MASK(32);
03753 tst_val = RUNNING_DIFF(33);
03754 mask = MASK(33);
03755 tst_val = RUNNING_DIFF(34);
03756 if (tst_val >= 0) {
03757 break;
03758 }
03759 }
03760 if (tst_val == 0) {
03761 goto EXIT;
03762 }
03763 else if (tst_val > 0) {
03764 last = idx;
03765 }
03766 first = idx - stride + 1;
03767 seg_len = last - first + 1;
03768 stride = STRIDE_CALC(seg_len);
03769 }
03770
03771 for (idx = first; idx <= last; idx += 1) {
03772 tst_val = DIFF(1);
03773 mask = -(RIGHT_JUSTIFY_SIGN_BIT(DIFF(1) | -DIFF(1)));
03774 tst_val = RUNNING_DIFF(2);
03775 mask = MASK(2);
03776 tst_val = RUNNING_DIFF(3);
03777 mask = MASK(3);
03778 tst_val = RUNNING_DIFF(4);
03779 mask = MASK(4);
03780 tst_val = RUNNING_DIFF(5);
03781 mask = MASK(5);
03782 tst_val = RUNNING_DIFF(6);
03783 mask = MASK(6);
03784 tst_val = RUNNING_DIFF(7);
03785 mask = MASK(7);
03786 tst_val = RUNNING_DIFF(8);
03787 mask = MASK(8);
03788 tst_val = RUNNING_DIFF(9);
03789 mask = MASK(9);
03790 tst_val = RUNNING_DIFF(10);
03791 mask = MASK(10);
03792 tst_val = RUNNING_DIFF(11);
03793 mask = MASK(11);
03794 tst_val = RUNNING_DIFF(12);
03795 mask = MASK(12);
03796 tst_val = RUNNING_DIFF(13);
03797 mask = MASK(13);
03798 tst_val = RUNNING_DIFF(14);
03799 mask = MASK(14);
03800 tst_val = RUNNING_DIFF(15);
03801 mask = MASK(15);
03802 tst_val = RUNNING_DIFF(16);
03803 mask = MASK(16);
03804 tst_val = RUNNING_DIFF(17);
03805 mask = MASK(17);
03806 tst_val = RUNNING_DIFF(18);
03807 mask = MASK(18);
03808 tst_val = RUNNING_DIFF(19);
03809 mask = MASK(19);
03810 tst_val = RUNNING_DIFF(20);
03811 mask = MASK(20);
03812 tst_val = RUNNING_DIFF(21);
03813 mask = MASK(21);
03814 tst_val = RUNNING_DIFF(22);
03815 mask = MASK(22);
03816 tst_val = RUNNING_DIFF(23);
03817 mask = MASK(23);
03818 tst_val = RUNNING_DIFF(24);
03819 mask = MASK(24);
03820 tst_val = RUNNING_DIFF(25);
03821 mask = MASK(25);
03822 tst_val = RUNNING_DIFF(26);
03823 mask = MASK(26);
03824 tst_val = RUNNING_DIFF(27);
03825 mask = MASK(27);
03826 tst_val = RUNNING_DIFF(28);
03827 mask = MASK(28);
03828 tst_val = RUNNING_DIFF(29);
03829 mask = MASK(29);
03830 tst_val = RUNNING_DIFF(30);
03831 mask = MASK(30);
03832 tst_val = RUNNING_DIFF(31);
03833 mask = MASK(31);
03834 tst_val = RUNNING_DIFF(32);
03835 mask = MASK(32);
03836 tst_val = RUNNING_DIFF(33);
03837 mask = MASK(33);
03838 tst_val = RUNNING_DIFF(34);
03839 if (tst_val >= 0) {
03840 break;
03841 }
03842 }
03843 break;
03844 # endif
03845
03846 default:
03847 PRINTMSG(stmt_start_line, 196, Internal, 1,
03848 "srch_name_tbl", 256);
03849 break;
03850 }
03851
03852 EXIT:
03853
03854 *name_idx = idx;
03855
03856 TRACE (Func_Exit, "srch_name_tbl", NULL);
03857
03858 return (tst_val);
03859
03860 }
03861
03862
03863
03864
03865
03866
03867
03868
03869
03870
03871
03872
03873
03874
03875
03876
03877
03878
03879
03880 char * convert_cval_to_string (long64 *the_constant,
03881 int type_idx,
03882 char *result)
03883
03884 {
03885 long_type cn_val[MAX_WORDS_FOR_INTEGER];
03886
03887
03888 TRACE (Func_Entry, "convert_cval_to_string", NULL);
03889
03890 C_TO_F_INT(cn_val, *the_constant, TYP_LINEAR(type_idx));
03891
03892 result = convert_to_string(cn_val,
03893 type_idx,
03894 result);
03895
03896 TRACE (Func_Exit, "convert_cval_to_string", NULL);
03897
03898 return(result);
03899
03900 }