rem/div constant and conditional load constant added
authorcacao <none@none>
Mon, 12 Oct 1998 15:45:22 +0000 (15:45 +0000)
committercacao <none@none>
Mon, 12 Oct 1998 15:45:22 +0000 (15:45 +0000)
alpha/ngen.c
ncomp/nparse.c
ncomp/nreg.c
ncomp/nstack.c
tests/jctest.dec
tests/jctest.java

index 6f823f2751d93cfc67d4520e4cec48983f47b4b0..a9eb8da68e9971391203163f003382e836fbd644 100644 (file)
@@ -454,6 +454,8 @@ static void gen_mcode()
        for (bbs = block_count, bptr = block; --bbs >= 0; bptr++) {
                bptr -> mpc = (int)((u1*) mcodeptr - mcodebase);
 
+               if (bptr->flags >= BBREACHED) {
+
                /* branch resolving */
 
                {
@@ -881,6 +883,22 @@ static void gen_mcode()
                                }
                        store_reg_to_var_int(iptr->dst, d);
                        break;
+               case ICMD_IDIVPOW2:
+               case ICMD_LDIVPOW2:
+                       var_to_reg_int(s1, src, REG_ITMP1);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       if (iptr->val.i <= 15) {
+                               M_LDA(REG_ITMP2, s1, (1 << iptr->val.i) -1);
+                               M_CMOVGE(s1, s1, REG_ITMP2, 0);
+                               }
+                       else {
+                               M_SRA(s1, 63, REG_ITMP2, 1);
+                               M_SRL(REG_ITMP2, 64 - iptr->val.i, REG_ITMP2, 1);
+                               M_LADD(s1, REG_ITMP2, REG_ITMP2, 0);
+                               }
+                       M_SRA(REG_ITMP2, iptr->val.i, d, 1);
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
 
                    
                case ICMD_ISHL:
@@ -1820,7 +1838,7 @@ static void gen_mcode()
 
 
                case ICMD_PUTSTATIC:
-                       a = dseg_addaddress (iptr->val.a);
+                       a = dseg_addaddress (&(((fieldinfo *)(iptr->val.a))->value));
                        M_LLD(REG_ITMP1, REG_PV, a);
                        switch (iptr->op1) {
                                case TYPE_INT:
@@ -1845,7 +1863,7 @@ static void gen_mcode()
                        break;
 
                case ICMD_GETSTATIC:
-                       a = dseg_addaddress (iptr->val.a);
+                       a = dseg_addaddress (&(((fieldinfo *)(iptr->val.a))->value));
                        M_LLD(REG_ITMP1, REG_PV, a);
                        switch (iptr->op1) {
                                case TYPE_INT:
@@ -1875,43 +1893,45 @@ static void gen_mcode()
 
 
                case ICMD_PUTFIELD:
+                       a = ((fieldinfo *)(iptr->val.a))->offset;
                        switch (iptr->op1) {
                                case TYPE_INT:
                                        var_to_reg_int(s1, src->prev, REG_ITMP1);
                                        var_to_reg_int(s2, src, REG_ITMP2);
                                        gen_nullptr_check(s1);
-                                       M_IST(s2, s1, iptr->val.i);
+                                       M_IST(s2, s1, a);
                                        break;
                                case TYPE_LNG:
                                case TYPE_ADR:
                                        var_to_reg_int(s1, src->prev, REG_ITMP1);
                                        var_to_reg_int(s2, src, REG_ITMP2);
                                        gen_nullptr_check(s1);
-                                       M_LST(s2, s1, iptr->val.i);
+                                       M_LST(s2, s1, a);
                                        break;
                                case TYPE_FLT:
                                        var_to_reg_int(s1, src->prev, REG_ITMP1);
                                        var_to_reg_flt(s2, src, REG_FTMP2);
                                        gen_nullptr_check(s1);
-                                       M_FST(s2, s1, iptr->val.i);
+                                       M_FST(s2, s1, a);
                                        break;
                                case TYPE_DBL:
                                        var_to_reg_int(s1, src->prev, REG_ITMP1);
                                        var_to_reg_flt(s2, src, REG_FTMP2);
                                        gen_nullptr_check(s1);
-                                       M_DST(s2, s1, iptr->val.i);
+                                       M_DST(s2, s1, a);
                                        break;
                                default: panic ("internal error");
                                }
                        break;
 
                case ICMD_GETFIELD:
+                       a = ((fieldinfo *)(iptr->val.a))->offset;
                        switch (iptr->op1) {
                                case TYPE_INT:
                                        var_to_reg_int(s1, src, REG_ITMP1);
                                        d = reg_of_var(iptr->dst, REG_ITMP3);
                                        gen_nullptr_check(s1);
-                                       M_ILD(d, s1, iptr->val.i);
+                                       M_ILD(d, s1, a);
                                        store_reg_to_var_int(iptr->dst, d);
                                        break;
                                case TYPE_LNG:
@@ -1919,21 +1939,21 @@ static void gen_mcode()
                                        var_to_reg_int(s1, src, REG_ITMP1);
                                        d = reg_of_var(iptr->dst, REG_ITMP3);
                                        gen_nullptr_check(s1);
-                                       M_LLD(d, s1, iptr->val.i);
+                                       M_LLD(d, s1, a);
                                        store_reg_to_var_int(iptr->dst, d);
                                        break;
                                case TYPE_FLT:
                                        var_to_reg_int(s1, src, REG_ITMP1);
                                        d = reg_of_var(iptr->dst, REG_FTMP1);
                                        gen_nullptr_check(s1);
-                                       M_FLD(d, s1, iptr->val.i);
+                                       M_FLD(d, s1, a);
                                        store_reg_to_var_flt(iptr->dst, d);
                                        break;
                                case TYPE_DBL:                          
                                        var_to_reg_int(s1, src, REG_ITMP1);
                                        d = reg_of_var(iptr->dst, REG_FTMP1);
                                        gen_nullptr_check(s1);
-                                       M_DLD(d, s1, iptr->val.i);
+                                       M_DLD(d, s1, a);
                                        store_reg_to_var_flt(iptr->dst, d);
                                        break;
                                default: panic ("internal error");
@@ -2244,6 +2264,192 @@ static void gen_mcode()
                        mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
                        break;
 
+               case ICMD_ELSE_ICONST:
+                       break;
+               case ICMD_IFEQ_ICONST:
+                       var_to_reg_int(s1, src, REG_ITMP1);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       a = iptr->val.i;
+                       if (iptr[1].opc == ICMD_ELSE_ICONST) {
+                               if ((a == 1) && (iptr[1].val.i == 0)) {
+                                       M_CMPEQ(s1, REG_ZERO, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if ((a == 0) && (iptr[1].val.i == 1)) {
+                                       M_CMPEQ(s1, REG_ZERO, d,  0);
+                                       M_XOR(d, 1, d, 1);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if (s1 == d) {
+                                       M_OR(s1, s1 , REG_ITMP1, 0);
+                                       s1 = REG_ITMP1;
+                                       }
+                               ICONST(d, iptr[1].val.i);
+                               }
+                       if ((a >= 0) && (a <= 255)) {
+                               M_CMOVEQ(s1, a, d, 1);
+                               }
+                       else {
+                               ICONST(REG_ITMP2, a);
+                               M_CMOVEQ(s1, REG_ITMP2, d, 0);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+               case ICMD_IFNE_ICONST:
+                       var_to_reg_int(s1, src, REG_ITMP1);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       a = iptr->val.i;
+                       if (iptr[1].opc == ICMD_ELSE_ICONST) {
+                               if ((a == 0) && (iptr[1].val.i == 1)) {
+                                       M_CMPEQ(s1, REG_ZERO, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if ((a == 1) && (iptr[1].val.i == 0)) {
+                                       M_CMPEQ(s1, REG_ZERO, d,  0);
+                                       M_XOR(d, 1, d, 1);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if (s1 == d) {
+                                       M_OR(s1, s1 , REG_ITMP1, 0);
+                                       s1 = REG_ITMP1;
+                                       }
+                               ICONST(d, iptr[1].val.i);
+                               }
+                       if ((a >= 0) && (a <= 255)) {
+                               M_CMOVNE(s1, a, d, 1);
+                               }
+                       else {
+                               ICONST(REG_ITMP2, a);
+                               M_CMOVNE(s1, REG_ITMP2, d, 0);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+               case ICMD_IFLT_ICONST:
+                       var_to_reg_int(s1, src, REG_ITMP1);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       a = iptr->val.i;
+                       if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
+                               if ((a == 1) && (iptr[1].val.i == 0)) {
+                                       M_CMPLT(s1, REG_ZERO, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if ((a == 0) && (iptr[1].val.i == 1)) {
+                                       M_CMPLE(REG_ZERO, s1, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if (s1 == d) {
+                                       M_OR(s1, s1 , REG_ITMP1, 0);
+                                       s1 = REG_ITMP1;
+                                       }
+                               ICONST(d, iptr[1].val.i);
+                               }
+                       if ((a >= 0) && (a <= 255)) {
+                               M_CMOVLT(s1, a, d, 1);
+                               }
+                       else {
+                               ICONST(REG_ITMP2, a);
+                               M_CMOVLT(s1, REG_ITMP2, d, 0);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+               case ICMD_IFGE_ICONST:
+                       var_to_reg_int(s1, src, REG_ITMP1);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       a = iptr->val.i;
+                       if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
+                               if ((a == 1) && (iptr[1].val.i == 0)) {
+                                       M_CMPLE(REG_ZERO, s1, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if ((a == 0) && (iptr[1].val.i == 1)) {
+                                       M_CMPLT(s1, REG_ZERO, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if (s1 == d) {
+                                       M_OR(s1, s1 , REG_ITMP1, 0);
+                                       s1 = REG_ITMP1;
+                                       }
+                               ICONST(d, iptr[1].val.i);
+                               }
+                       if ((a >= 0) && (a <= 255)) {
+                               M_CMOVGE(s1, a, d, 1);
+                               }
+                       else {
+                               ICONST(REG_ITMP2, a);
+                               M_CMOVGE(s1, REG_ITMP2, d, 0);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+               case ICMD_IFGT_ICONST:
+                       var_to_reg_int(s1, src, REG_ITMP1);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       a = iptr->val.i;
+                       if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
+                               if ((a == 1) && (iptr[1].val.i == 0)) {
+                                       M_CMPLT(REG_ZERO, s1, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if ((a == 0) && (iptr[1].val.i == 1)) {
+                                       M_CMPLE(s1, REG_ZERO, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if (s1 == d) {
+                                       M_OR(s1, s1 , REG_ITMP1, 0);
+                                       s1 = REG_ITMP1;
+                                       }
+                               ICONST(d, iptr[1].val.i);
+                               }
+                       if ((a >= 0) && (a <= 255)) {
+                               M_CMOVGT(s1, a, d, 1);
+                               }
+                       else {
+                               ICONST(REG_ITMP2, a);
+                               M_CMOVGT(s1, REG_ITMP2, d, 0);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+               case ICMD_IFLE_ICONST:
+                       var_to_reg_int(s1, src, REG_ITMP1);
+                       d = reg_of_var(iptr->dst, REG_ITMP3);
+                       a = iptr->val.i;
+                       if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
+                               if ((a == 1) && (iptr[1].val.i == 0)) {
+                                       M_CMPLE(s1, REG_ZERO, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if ((a == 0) && (iptr[1].val.i == 1)) {
+                                       M_CMPLT(REG_ZERO, s1, d,  0);
+                                       store_reg_to_var_int(iptr->dst, d);
+                                       break;
+                                       }
+                               if (s1 == d) {
+                                       M_OR(s1, s1 , REG_ITMP1, 0);
+                                       s1 = REG_ITMP1;
+                                       }
+                               ICONST(d, iptr[1].val.i);
+                               }
+                       if ((a >= 0) && (a <= 255)) {
+                               M_CMOVLE(s1, a, d, 1);
+                               }
+                       else {
+                               ICONST(REG_ITMP2, a);
+                               M_CMOVLE(s1, REG_ITMP2, d, 0);
+                               }
+                       store_reg_to_var_int(iptr->dst, d);
+                       break;
+
+
 /*   branch if the unsigned value of s1 is greater that s2 (note, that s2 has
         to be >= 0) */
 
@@ -2621,7 +2827,7 @@ makeactualcall:
                if ((src->varkind != STACKVAR)) {
                        s2 = src->type;
                        if (IS_FLT_DBL_TYPE(s2)) {
-                               var_to_reg_int(s1, src, REG_ITMP1);
+                               var_to_reg_flt(s1, src, REG_FTMP1);
                                if (!(interfaces[len][s2].flags & INMEMORY)) {
                                        M_FLTMOVE(s1,interfaces[len][s2].regoff);
                                        }
@@ -2630,7 +2836,7 @@ makeactualcall:
                                        }
                                }
                        else {
-                               var_to_reg_flt(s1, src, REG_FTMP1);
+                               var_to_reg_int(s1, src, REG_ITMP1);
                                if (!(interfaces[len][s2].flags & INMEMORY)) {
                                        M_INTMOVE(s1,interfaces[len][s2].regoff);
                                        }
@@ -2641,6 +2847,7 @@ makeactualcall:
                        }
                src = src->prev;
                }
+       } /* if (bptr -> flags >= BBREACHED) */
        } /* for basic block */
 
        bptr -> mpc = (int)((u1*) mcodeptr - mcodebase);
index 393a25341260ed909e5e6db794e3fd86e12ccb4c..e510f3eddb1b8769f74f708e7563e7190f269716 100644 (file)
@@ -628,7 +628,7 @@ static void parse()
                                fr = class_getconstant (class, i, CONSTANT_Fieldref);
                                fi = class_findfield (fr->class, fr->name, fr->descriptor);
                                compiler_addinitclass (fr->class);
-                               OP2A(opcode, fi->type, &(fi->value));
+                               OP2A(opcode, fi->type, fi);
                                }
                                break;
                        case JAVA_PUTFIELD:
@@ -639,7 +639,7 @@ static void parse()
                                fieldinfo *fi;
                                fr = class_getconstant (class, i, CONSTANT_Fieldref);
                                fi = class_findfield (fr->class, fr->name, fr->descriptor);
-                               OP2I(opcode, fi->type, fi->offset);
+                               OP2A(opcode, fi->type, fi);
                                }
                                break;
 
@@ -766,12 +766,7 @@ static void parse()
                        /************** any other basic operation **********/
 
                        case JAVA_IDIV:
-                               if (SUPPORT_DIVISION) {
-                                       OP(opcode);
-                                       }
-                               else {
-                                       BUILTIN2((functionptr) new_builtin_idiv, TYPE_INT);
-                                       }
+                               OP(opcode);
                                break;
 
                        case JAVA_IREM:
@@ -779,12 +774,7 @@ static void parse()
                                break;
 
                        case JAVA_LDIV:
-                               if (SUPPORT_DIVISION && SUPPORT_LONG && SUPPORT_LONG_MULDIV) {
-                                       OP(opcode);
-                                       }
-                               else {
-                                       BUILTIN2((functionptr) new_builtin_ldiv, TYPE_LONG);
-                                       }
+                               OP(opcode);
                                break;
 
                        case JAVA_LREM:
@@ -940,6 +930,7 @@ static void parse()
                bptr->flags = -1;
                bptr->type = BBTYPE_STD;
                bptr->branchrefs = NULL;
+               bptr->pre_count = 0;
                bptr++;
                b_count++;
                }
@@ -954,6 +945,7 @@ static void parse()
                        bptr->type = BBTYPE_STD;
                        bptr->branchrefs = NULL;
                        block_index[p] = b_count;
+                       bptr->pre_count = 0;
                        bptr++;
                        b_count++;
                        }
@@ -965,5 +957,6 @@ static void parse()
        bptr->flags = -1;
        bptr->type = BBTYPE_STD;
        bptr->branchrefs = NULL;
+       bptr->pre_count = 0;
        }
 }
index 43c652832730aecf0f636afef875a7b0cb04a9b8..a2ac36eee4fb9715ea8f9514692f1dab792a0a8a 100644 (file)
@@ -599,6 +599,7 @@ static void allocate_scratch_registers()
                                        /* pop 0 push 0 */
 
                                        case ICMD_NOP:
+                                       case ICMD_ELSE_ICONST:
                                        case ICMD_CHECKASIZE:
                                        case ICMD_IINC:
                                        case ICMD_JSR:
@@ -865,6 +866,7 @@ static void allocate_scratch_registers()
                                        case ICMD_IADDCONST:
                                        case ICMD_ISUBCONST:
                                        case ICMD_IMULCONST:
+                                       case ICMD_IDIVPOW2:
                                        case ICMD_IREMPOW2:
                                        case ICMD_IREM0X10001:
                                        case ICMD_IANDCONST:
@@ -877,6 +879,7 @@ static void allocate_scratch_registers()
                                        case ICMD_LADDCONST:
                                        case ICMD_LSUBCONST:
                                        case ICMD_LMULCONST:
+                                       case ICMD_LDIVPOW2:
                                        case ICMD_LREMPOW2:
                                        case ICMD_LREM0X10001:
                                        case ICMD_LANDCONST:
@@ -886,6 +889,13 @@ static void allocate_scratch_registers()
                                        case ICMD_LSHRCONST:
                                        case ICMD_LUSHRCONST:
 
+                                       case ICMD_IFEQ_ICONST:
+                                       case ICMD_IFNE_ICONST:
+                                       case ICMD_IFLT_ICONST:
+                                       case ICMD_IFGE_ICONST:
+                                       case ICMD_IFGT_ICONST:
+                                       case ICMD_IFLE_ICONST:
+
                                        case ICMD_INEG:
                                        case ICMD_INT2BYTE:
                                        case ICMD_INT2CHAR:
index 67ae89f9f6872cc00c28c6657ea22bebf9228901..59da5f32e5f982a15871f84dc2556cbb20fcad18 100644 (file)
@@ -13,6 +13,7 @@
 
 *******************************************************************************/
 
+#define CONDITIONAL_LOADCONST
 
 #ifdef STATISTICS
 #define COUNT(cnt) cnt++
@@ -159,7 +160,7 @@ static void show_icmd_method();
 
 static void analyse_stack()
 {
-       int b_count;
+       int b_count, b_index;
        int stackdepth;
        stackptr curstack, new, copy;
        int opcode, i, len, loops;
@@ -181,10 +182,81 @@ static void analyse_stack()
                bptr->type = BBTYPE_EXH;
                bptr->instack = new;
                bptr->indepth = 1;
+               bptr->pre_count = 10000;
                STACKRESET;
                NEWXSTACK;
                }
 
+#ifdef CONDITIONAL_LOADCONST
+       b_count = block_count;
+       bptr = block;
+       while (--b_count >= 0) {
+               if (bptr[1].ipc > bptr[0].ipc) {
+                       iptr = instr + bptr[1].ipc - 1;
+                       switch (iptr->opc) {
+                               case ICMD_RET:
+                               case ICMD_RETURN:
+                               case ICMD_IRETURN:
+                               case ICMD_LRETURN:
+                               case ICMD_FRETURN:
+                               case ICMD_DRETURN:
+                               case ICMD_ARETURN:
+                               case ICMD_ATHROW:
+                                       break;
+
+                               case ICMD_IFEQ:
+                               case ICMD_IFNE:
+                               case ICMD_IFLT:
+                               case ICMD_IFGE:
+                               case ICMD_IFGT:
+                               case ICMD_IFLE:
+
+                               case ICMD_IFNULL:
+                               case ICMD_IFNONNULL:
+
+                               case ICMD_IF_ICMPEQ:
+                               case ICMD_IF_ICMPNE:
+                               case ICMD_IF_ICMPLT:
+                               case ICMD_IF_ICMPGE:
+                               case ICMD_IF_ICMPGT:
+                               case ICMD_IF_ICMPLE:
+
+                               case ICMD_IF_ACMPEQ:
+                               case ICMD_IF_ACMPNE:
+                                       bptr[1].pre_count++;
+                               case ICMD_GOTO:
+                                       block[block_index[iptr->op1]].pre_count++;
+                                       break;
+
+                               case ICMD_TABLESWITCH:
+                                       s4ptr = iptr->val.a;
+                                       block[block_index[*s4ptr++]].pre_count++;   /* default */
+                                       i = *s4ptr++;                               /* low     */
+                                       i = *s4ptr++ - i + 1;                       /* high    */
+                                       while (--i >= 0) {
+                                               block[block_index[*s4ptr++]].pre_count++;
+                                               }
+                                       break;
+                                       
+                               case ICMD_LOOKUPSWITCH:
+                                       s4ptr = iptr->val.a;
+                                       block[block_index[*s4ptr++]].pre_count++;   /* default */
+                                       i = *s4ptr++;                               /* count   */
+                                       while (--i >= 0) {
+                                               block[block_index[s4ptr[1]]].pre_count++;
+                                               s4ptr += 2;
+                                               }
+                                       break;
+                               default:
+                                       bptr[1].pre_count++;
+                                       break;
+                               }
+                       }
+               bptr++;
+               }
+#endif
+
+
        do {
                loops++;
                b_count = block_count;
@@ -194,7 +266,10 @@ static void analyse_stack()
                STACKRESET;
                deadcode = true;
                while (--b_count >= 0) {
-                       if (superblockend && (bptr->flags < BBREACHED))
+                       if (bptr->flags == BBDELETED) {
+                               /* do nothing */
+                               }
+                       else if (superblockend && (bptr->flags < BBREACHED))
                                repeat = true;
                        else if (bptr->flags <= BBREACHED) {
                                if (superblockend)
@@ -216,6 +291,7 @@ static void analyse_stack()
                                i = bptr[0].ipc;
                                len = bptr[1].ipc - i;
                                iptr = &instr[i];
+                               b_index = bptr - block;
                                while (--len >= 0)  {
                                        opcode = iptr->opc;
                                        switch (opcode) {
@@ -224,8 +300,17 @@ static void analyse_stack()
 
                                                case ICMD_NOP:
                                                case ICMD_CHECKASIZE:
+
+                                               case ICMD_IFEQ_ICONST:
+                                               case ICMD_IFNE_ICONST:
+                                               case ICMD_IFLT_ICONST:
+                                               case ICMD_IFGE_ICONST:
+                                               case ICMD_IFGT_ICONST:
+                                               case ICMD_IFLE_ICONST:
+                                               case ICMD_ELSE_ICONST:
                                                        SETDST;
                                                        break;
+
                                                case ICMD_RET:
                                                        locals[iptr->op1][TYPE_ADR].type = TYPE_ADR;
                                                case ICMD_RETURN:
@@ -253,6 +338,75 @@ icmd_iconst_tail:
                                                                        case ICMD_IMUL:
                                                                                iptr[0].opc = ICMD_IMULCONST;
                                                                                goto icmd_iconst_tail;
+                                                                       case ICMD_IDIV:
+                                                                               if (iptr[0].val.i == 0x00000002)
+                                                                                       iptr[0].val.i = 1;
+                                                                               else if (iptr[0].val.i == 0x00000004)
+                                                                                       iptr[0].val.i = 2;
+                                                                               else if (iptr[0].val.i == 0x00000008)
+                                                                                       iptr[0].val.i = 3;
+                                                                               else if (iptr[0].val.i == 0x00000010)
+                                                                                       iptr[0].val.i = 4;
+                                                                               else if (iptr[0].val.i == 0x00000020)
+                                                                                       iptr[0].val.i = 5;
+                                                                               else if (iptr[0].val.i == 0x00000040)
+                                                                                       iptr[0].val.i = 6;
+                                                                               else if (iptr[0].val.i == 0x00000080)
+                                                                                       iptr[0].val.i = 7;
+                                                                               else if (iptr[0].val.i == 0x00000100)
+                                                                                       iptr[0].val.i = 8;
+                                                                               else if (iptr[0].val.i == 0x00000200)
+                                                                                       iptr[0].val.i = 9;
+                                                                               else if (iptr[0].val.i == 0x00000400)
+                                                                                       iptr[0].val.i = 10;
+                                                                               else if (iptr[0].val.i == 0x00000800)
+                                                                                       iptr[0].val.i = 11;
+                                                                               else if (iptr[0].val.i == 0x00001000)
+                                                                                       iptr[0].val.i = 12;
+                                                                               else if (iptr[0].val.i == 0x00002000)
+                                                                                       iptr[0].val.i = 13;
+                                                                               else if (iptr[0].val.i == 0x00004000)
+                                                                                       iptr[0].val.i = 14;
+                                                                               else if (iptr[0].val.i == 0x00008000)
+                                                                                       iptr[0].val.i = 15;
+                                                                               else if (iptr[0].val.i == 0x00010000)
+                                                                                       iptr[0].val.i = 16;
+                                                                               else if (iptr[0].val.i == 0x00020000)
+                                                                                       iptr[0].val.i = 17;
+                                                                               else if (iptr[0].val.i == 0x00040000)
+                                                                                       iptr[0].val.i = 18;
+                                                                               else if (iptr[0].val.i == 0x00080000)
+                                                                                       iptr[0].val.i = 19;
+                                                                               else if (iptr[0].val.i == 0x00100000)
+                                                                                       iptr[0].val.i = 20;
+                                                                               else if (iptr[0].val.i == 0x00200000)
+                                                                                       iptr[0].val.i = 21;
+                                                                               else if (iptr[0].val.i == 0x00400000)
+                                                                                       iptr[0].val.i = 22;
+                                                                               else if (iptr[0].val.i == 0x00800000)
+                                                                                       iptr[0].val.i = 23;
+                                                                               else if (iptr[0].val.i == 0x01000000)
+                                                                                       iptr[0].val.i = 24;
+                                                                               else if (iptr[0].val.i == 0x02000000)
+                                                                                       iptr[0].val.i = 25;
+                                                                               else if (iptr[0].val.i == 0x04000000)
+                                                                                       iptr[0].val.i = 26;
+                                                                               else if (iptr[0].val.i == 0x08000000)
+                                                                                       iptr[0].val.i = 27;
+                                                                               else if (iptr[0].val.i == 0x10000000)
+                                                                                       iptr[0].val.i = 28;
+                                                                               else if (iptr[0].val.i == 0x20000000)
+                                                                                       iptr[0].val.i = 29;
+                                                                               else if (iptr[0].val.i == 0x40000000)
+                                                                                       iptr[0].val.i = 30;
+                                                                               else if (iptr[0].val.i == 0x80000000)
+                                                                                       iptr[0].val.i = 31;
+                                                                               else {
+                                                                                       CONST(TYPE_INT);
+                                                                                       break;
+                                                                                       }
+                                                                               iptr[0].opc = ICMD_IDIVPOW2;
+                                                                               goto icmd_iconst_tail;
                                                                        case ICMD_IREM:
                                                                                if (iptr[0].val.i == 0x10001) {
                                                                                        iptr[0].opc = ICMD_IREM0X10001;
@@ -362,6 +516,75 @@ icmd_lconst_tail:
                                                                        case ICMD_LMUL:
                                                                                iptr[0].opc = ICMD_LMULCONST;
                                                                                goto icmd_lconst_tail;
+                                                                       case ICMD_LDIV:
+                                                                               if (iptr[0].val.l == 0x00000002)
+                                                                                       iptr[0].val.l = 1;
+                                                                               else if (iptr[0].val.l == 0x00000004)
+                                                                                       iptr[0].val.l = 2;
+                                                                               else if (iptr[0].val.l == 0x00000008)
+                                                                                       iptr[0].val.l = 3;
+                                                                               else if (iptr[0].val.l == 0x00000010)
+                                                                                       iptr[0].val.l = 4;
+                                                                               else if (iptr[0].val.l == 0x00000020)
+                                                                                       iptr[0].val.l = 5;
+                                                                               else if (iptr[0].val.l == 0x00000040)
+                                                                                       iptr[0].val.l = 6;
+                                                                               else if (iptr[0].val.l == 0x00000080)
+                                                                                       iptr[0].val.l = 7;
+                                                                               else if (iptr[0].val.l == 0x00000100)
+                                                                                       iptr[0].val.l = 8;
+                                                                               else if (iptr[0].val.l == 0x00000200)
+                                                                                       iptr[0].val.l = 9;
+                                                                               else if (iptr[0].val.l == 0x00000400)
+                                                                                       iptr[0].val.l = 10;
+                                                                               else if (iptr[0].val.l == 0x00000800)
+                                                                                       iptr[0].val.l = 11;
+                                                                               else if (iptr[0].val.l == 0x00001000)
+                                                                                       iptr[0].val.l = 12;
+                                                                               else if (iptr[0].val.l == 0x00002000)
+                                                                                       iptr[0].val.l = 13;
+                                                                               else if (iptr[0].val.l == 0x00004000)
+                                                                                       iptr[0].val.l = 14;
+                                                                               else if (iptr[0].val.l == 0x00008000)
+                                                                                       iptr[0].val.l = 15;
+                                                                               else if (iptr[0].val.l == 0x00010000)
+                                                                                       iptr[0].val.l = 16;
+                                                                               else if (iptr[0].val.l == 0x00020000)
+                                                                                       iptr[0].val.l = 17;
+                                                                               else if (iptr[0].val.l == 0x00040000)
+                                                                                       iptr[0].val.l = 18;
+                                                                               else if (iptr[0].val.l == 0x00080000)
+                                                                                       iptr[0].val.l = 19;
+                                                                               else if (iptr[0].val.l == 0x00100000)
+                                                                                       iptr[0].val.l = 20;
+                                                                               else if (iptr[0].val.l == 0x00200000)
+                                                                                       iptr[0].val.l = 21;
+                                                                               else if (iptr[0].val.l == 0x00400000)
+                                                                                       iptr[0].val.l = 22;
+                                                                               else if (iptr[0].val.l == 0x00800000)
+                                                                                       iptr[0].val.l = 23;
+                                                                               else if (iptr[0].val.l == 0x01000000)
+                                                                                       iptr[0].val.l = 24;
+                                                                               else if (iptr[0].val.l == 0x02000000)
+                                                                                       iptr[0].val.l = 25;
+                                                                               else if (iptr[0].val.l == 0x04000000)
+                                                                                       iptr[0].val.l = 26;
+                                                                               else if (iptr[0].val.l == 0x08000000)
+                                                                                       iptr[0].val.l = 27;
+                                                                               else if (iptr[0].val.l == 0x10000000)
+                                                                                       iptr[0].val.l = 28;
+                                                                               else if (iptr[0].val.l == 0x20000000)
+                                                                                       iptr[0].val.l = 29;
+                                                                               else if (iptr[0].val.l == 0x40000000)
+                                                                                       iptr[0].val.l = 30;
+                                                                               else if (iptr[0].val.l == 0x80000000)
+                                                                                       iptr[0].val.l = 31;
+                                                                               else {
+                                                                                       CONST(TYPE_LNG);
+                                                                                       break;
+                                                                                       }
+                                                                               iptr[0].opc = ICMD_LDIVPOW2;
+                                                                               goto icmd_lconst_tail;
                                                                        case ICMD_LREM:
                                                                                if (iptr[0].val.l == 0x10001) {
                                                                                        iptr[0].opc = ICMD_LREM0X10001;
@@ -645,6 +868,60 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_IFGT:
                                                case ICMD_IFLE:
                                                        COUNT(count_pcmd_bra);
+#ifdef CONDITIONAL_LOADCONST
+                                                       {
+                                                       tbptr = block + b_index;
+                                                       if ((b_count >= 3) &&
+                                                           ((b_index + 2) == block_index[iptr[0].op1]) &&
+                                                           (tbptr[1].pre_count == 1) &&
+                                                           (iptr[1].opc == ICMD_ICONST) &&
+                                                           (iptr[2].opc == ICMD_GOTO)   &&
+                                                           ((b_index + 3) == block_index[iptr[2].op1]) &&
+                                                           (tbptr[2].pre_count == 1) &&
+                                                           (iptr[3].opc == ICMD_ICONST)) {
+                                                               OP1_1(TYPE_INT, TYPE_INT);
+                                                               switch (iptr[0].opc) {
+                                                                       case ICMD_IFEQ:
+                                                                               iptr[0].opc = ICMD_IFNE_ICONST;
+                                                                               break;
+                                                                       case ICMD_IFNE:
+                                                                               iptr[0].opc = ICMD_IFEQ_ICONST;
+                                                                               break;
+                                                                       case ICMD_IFLT:
+                                                                               iptr[0].opc = ICMD_IFGE_ICONST;
+                                                                               break;
+                                                                       case ICMD_IFGE:
+                                                                               iptr[0].opc = ICMD_IFLT_ICONST;
+                                                                               break;
+                                                                       case ICMD_IFGT:
+                                                                               iptr[0].opc = ICMD_IFLE_ICONST;
+                                                                               break;
+                                                                       case ICMD_IFLE:
+                                                                               iptr[0].opc = ICMD_IFGT_ICONST;
+                                                                               break;
+                                                                       }
+                                                               iptr[0].val.i = iptr[1].val.i;
+                                                               iptr[1].opc = ICMD_ELSE_ICONST;
+                                                               iptr[1].val.i = iptr[3].val.i;
+                                                               iptr[2].opc = ICMD_NOP;
+                                                               iptr[3].opc = ICMD_NOP;
+                                                               tbptr[1].flags = BBDELETED;
+                                                               tbptr[2].flags = BBDELETED;
+                                                               len += 3;
+                                                               if (tbptr[3].pre_count == 2) {
+                                                                       tbptr[3].flags = BBDELETED;
+                                                                       len += tbptr[4].ipc - tbptr[3].ipc;
+                                                                       tbptr[3].ipc = tbptr[4].ipc;
+                                                                       b_index ++;
+                                                                       }
+                                                               tbptr[1].ipc = tbptr[3].ipc;
+                                                               tbptr[2].ipc = tbptr[3].ipc;
+                                                               bptr[1].ipc = tbptr[3].ipc;
+                                                               b_index += 2;
+                                                               break;
+                                                               }
+                                                       }
+#endif
                                                        OP1_0(TYPE_INT);
                                                        tbptr = block + block_index[iptr->op1];
                                                        MARKREACHED(tbptr, copy);
@@ -822,6 +1099,24 @@ icmd_lconst_lcmp_tail:
 
                                                /* pop 2 push 1 */
                                                
+                                               case ICMD_IDIV:
+                                                       if (!(SUPPORT_DIVISION)) {
+                                                               iptr[0].opc = ICMD_BUILTIN2;
+                                                               iptr[0].op1 = TYPE_INT;
+                                                               iptr[0].val.a = (functionptr) new_builtin_idiv;
+                                                               isleafmethod = false;
+                                                               goto builtin2;
+                                                               }
+
+                                               case ICMD_LDIV:
+                                                       if (!(SUPPORT_DIVISION && SUPPORT_LONG && SUPPORT_LONG_MULDIV)) {
+                                                               iptr[0].opc = ICMD_BUILTIN2;
+                                                               iptr[0].op1 = TYPE_LNG;
+                                                               iptr[0].val.a = (functionptr) new_builtin_ldiv;
+                                                               isleafmethod = false;
+                                                               goto builtin2;
+                                                               }
+
                                                case ICMD_IREM:
                                                        if (!(SUPPORT_DIVISION)) {
                                                                iptr[0].opc = ICMD_BUILTIN2;
@@ -843,7 +1138,6 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_IADD:
                                                case ICMD_ISUB:
                                                case ICMD_IMUL:
-                                               case ICMD_IDIV:
 
                                                case ICMD_ISHL:
                                                case ICMD_ISHR:
@@ -858,7 +1152,6 @@ icmd_lconst_lcmp_tail:
                                                case ICMD_LADD:
                                                case ICMD_LSUB:
                                                case ICMD_LMUL:
-                                               case ICMD_LDIV:
 
                                                case ICMD_LOR:
                                                case ICMD_LAND:
@@ -1413,7 +1706,8 @@ static void show_icmd_method()
                printf("\n");
                }
 
-       for (b = 0; b < block_count; b++) {
+       for (b = 0; b < block_count; b++)
+               if (block[b].flags != BBDELETED) {
                deadcode = block[b].flags <= BBREACHED;
                printf("[");
                if (deadcode)
@@ -1421,7 +1715,7 @@ static void show_icmd_method()
                                printf(" ?  ");
                else
                        print_stack(block[b].instack);
-               printf("] L%03d:\n", b);
+               printf("] L%03d(%d):\n", b, block[b].pre_count);
                for (i = block[b].ipc; i < block[b + 1].ipc; i++) {
                        printf("[");
                        if (deadcode) {
@@ -1435,6 +1729,7 @@ static void show_icmd_method()
                                case ICMD_IADDCONST:
                                case ICMD_ISUBCONST:
                                case ICMD_IMULCONST:
+                               case ICMD_IDIVPOW2:
                                case ICMD_IREMPOW2:
                                case ICMD_IREM0X10001:
                                case ICMD_IANDCONST:
@@ -1444,13 +1739,19 @@ static void show_icmd_method()
                                case ICMD_ISHRCONST:
                                case ICMD_IUSHRCONST:
                                case ICMD_ICONST:
-                               case ICMD_GETFIELD:
-                               case ICMD_PUTFIELD:
+                               case ICMD_ELSE_ICONST:
+                               case ICMD_IFEQ_ICONST:
+                               case ICMD_IFNE_ICONST:
+                               case ICMD_IFLT_ICONST:
+                               case ICMD_IFGE_ICONST:
+                               case ICMD_IFGT_ICONST:
+                               case ICMD_IFLE_ICONST:
                                        printf(" %d", instr[i].val.i);
                                        break;
                                case ICMD_LADDCONST:
                                case ICMD_LSUBCONST:
                                case ICMD_LMULCONST:
+                               case ICMD_LDIVPOW2:
                                case ICMD_LREMPOW2:
                                case ICMD_LANDCONST:
                                case ICMD_LORCONST:
@@ -1468,9 +1769,16 @@ static void show_icmd_method()
                                        printf(" %f", instr[i].val.d);
                                        break;
                                case ICMD_ACONST:
+                                       printf(" %p", instr[i].val.a);
+                                       break;
+                               case ICMD_GETFIELD:
+                               case ICMD_PUTFIELD:
+                                       printf(" %d,", ((fieldinfo *) instr[i].val.a)->offset);
                                case ICMD_PUTSTATIC:
                                case ICMD_GETSTATIC:
-                                       printf(" %p", instr[i].val.a);
+                                       printf(" ");
+                                       unicode_fprint(stdout,
+                                                       ((fieldinfo *) instr[i].val.a)->name);
                                        break;
                                case ICMD_IINC:
                                        printf(" %d + %d", instr[i].op1, instr[i].val.i);
@@ -1609,7 +1917,7 @@ static void show_icmd_method()
                        printf("\n");
                        }
 
-               if (showdisassemble) {
+               if (showdisassemble && (!deadcode)) {
                        printf("\n");
                        i = block[b].mpc;
                        s4ptr = (s4 *) (method->mcode + dseglen + i);
index 1511e4d02f3c758b41c6fbed107f2b6101e62884..20e64abcf8b6e764361f973ff576222c7e7a94d7 100644 (file)
@@ -1788,1454 +1788,2338 @@ successful initialisation
 1786.    not IF_LCMPEQint: -32769
 1787.    not IF_LCMPGTint: -32769
 1788.    not IF_LCMPGEint: -32769
-1789.    ------------------- test rem consts
-1790.    IREMPOW2 (17 % 0x00000002):  int: 1
-1791.    IREMPOW2 (17 % 0x00000004):  int: 1
-1792.    IREMPOW2 (17 % 0x00000008):  int: 1
-1793.    IREMPOW2 (17 % 0x00000010):  int: 1
-1794.    IREMPOW2 (17 % 0x00000020):  int: 17
-1795.    IREMPOW2 (17 % 0x00000040):  int: 17
-1796.    IREMPOW2 (17 % 0x00000080):  int: 17
-1797.    IREMPOW2 (17 % 0x00000100):  int: 17
-1798.    IREMPOW2 (17 % 0x00000200):  int: 17
-1799.    IREMPOW2 (17 % 0x00000400):  int: 17
-1800.    IREMPOW2 (17 % 0x00000800):  int: 17
-1801.    IREMPOW2 (17 % 0x00001000):  int: 17
-1802.    IREMPOW2 (17 % 0x00002000):  int: 17
-1803.    IREMPOW2 (17 % 0x00004000):  int: 17
-1804.    IREMPOW2 (17 % 0x00008000):  int: 17
-1805.    IREMPOW2 (17 % 0x00010000):  int: 17
-1806.    IREMPOW2 (17 % 0x00020000):  int: 17
-1807.    IREMPOW2 (17 % 0x00040000):  int: 17
-1808.    IREMPOW2 (17 % 0x00080000):  int: 17
-1809.    IREMPOW2 (17 % 0x00100000):  int: 17
-1810.    IREMPOW2 (17 % 0x00200000):  int: 17
-1811.    IREMPOW2 (17 % 0x00400000):  int: 17
-1812.    IREMPOW2 (17 % 0x00800000):  int: 17
-1813.    IREMPOW2 (17 % 0x01000000):  int: 17
-1814.    IREMPOW2 (17 % 0x02000000):  int: 17
-1815.    IREMPOW2 (17 % 0x04000000):  int: 17
-1816.    IREMPOW2 (17 % 0x08000000):  int: 17
-1817.    IREMPOW2 (17 % 0x10000000):  int: 17
-1818.    IREMPOW2 (17 % 0x20000000):  int: 17
-1819.    IREMPOW2 (17 % 0x40000000):  int: 17
-1820.    IREMPOW2 (17 % 0x80000000):  int: 17
-1821.    IREMPOW2 (12347 % 0x00000002):  int: 1
-1822.    IREMPOW2 (12347 % 0x00000004):  int: 3
-1823.    IREMPOW2 (12347 % 0x00000008):  int: 3
-1824.    IREMPOW2 (12347 % 0x00000010):  int: 11
-1825.    IREMPOW2 (12347 % 0x00000020):  int: 27
-1826.    IREMPOW2 (12347 % 0x00000040):  int: 59
-1827.    IREMPOW2 (12347 % 0x00000080):  int: 59
-1828.    IREMPOW2 (12347 % 0x00000100):  int: 59
-1829.    IREMPOW2 (12347 % 0x00000200):  int: 59
-1830.    IREMPOW2 (12347 % 0x00000400):  int: 59
-1831.    IREMPOW2 (12347 % 0x00000800):  int: 59
-1832.    IREMPOW2 (12347 % 0x00001000):  int: 59
-1833.    IREMPOW2 (12347 % 0x00002000):  int: 4155
-1834.    IREMPOW2 (12347 % 0x00004000):  int: 12347
-1835.    IREMPOW2 (12347 % 0x00008000):  int: 12347
-1836.    IREMPOW2 (12347 % 0x00010000):  int: 12347
-1837.    IREMPOW2 (12347 % 0x00020000):  int: 12347
-1838.    IREMPOW2 (12347 % 0x00040000):  int: 12347
-1839.    IREMPOW2 (12347 % 0x00080000):  int: 12347
-1840.    IREMPOW2 (12347 % 0x00100000):  int: 12347
-1841.    IREMPOW2 (12347 % 0x00200000):  int: 12347
-1842.    IREMPOW2 (12347 % 0x00400000):  int: 12347
-1843.    IREMPOW2 (12347 % 0x00800000):  int: 12347
-1844.    IREMPOW2 (12347 % 0x01000000):  int: 12347
-1845.    IREMPOW2 (12347 % 0x02000000):  int: 12347
-1846.    IREMPOW2 (12347 % 0x04000000):  int: 12347
-1847.    IREMPOW2 (12347 % 0x08000000):  int: 12347
-1848.    IREMPOW2 (12347 % 0x10000000):  int: 12347
-1849.    IREMPOW2 (12347 % 0x20000000):  int: 12347
-1850.    IREMPOW2 (12347 % 0x40000000):  int: 12347
-1851.    IREMPOW2 (12347 % 0x80000000):  int: 12347
-1852.    IREMPOW2 (8893427 % 0x00000002):  int: 1
-1853.    IREMPOW2 (8893427 % 0x00000004):  int: 3
-1854.    IREMPOW2 (8893427 % 0x00000008):  int: 3
-1855.    IREMPOW2 (8893427 % 0x00000010):  int: 3
-1856.    IREMPOW2 (8893427 % 0x00000020):  int: 19
-1857.    IREMPOW2 (8893427 % 0x00000040):  int: 51
-1858.    IREMPOW2 (8893427 % 0x00000080):  int: 115
-1859.    IREMPOW2 (8893427 % 0x00000100):  int: 243
-1860.    IREMPOW2 (8893427 % 0x00000200):  int: 499
-1861.    IREMPOW2 (8893427 % 0x00000400):  int: 1011
-1862.    IREMPOW2 (8893427 % 0x00000800):  int: 1011
-1863.    IREMPOW2 (8893427 % 0x00001000):  int: 1011
-1864.    IREMPOW2 (8893427 % 0x00002000):  int: 5107
-1865.    IREMPOW2 (8893427 % 0x00004000):  int: 13299
-1866.    IREMPOW2 (8893427 % 0x00008000):  int: 13299
-1867.    IREMPOW2 (8893427 % 0x00010000):  int: 46067
-1868.    IREMPOW2 (8893427 % 0x00020000):  int: 111603
-1869.    IREMPOW2 (8893427 % 0x00040000):  int: 242675
-1870.    IREMPOW2 (8893427 % 0x00080000):  int: 504819
-1871.    IREMPOW2 (8893427 % 0x00100000):  int: 504819
-1872.    IREMPOW2 (8893427 % 0x00200000):  int: 504819
-1873.    IREMPOW2 (8893427 % 0x00400000):  int: 504819
-1874.    IREMPOW2 (8893427 % 0x00800000):  int: 504819
-1875.    IREMPOW2 (8893427 % 0x01000000):  int: 8893427
-1876.    IREMPOW2 (8893427 % 0x02000000):  int: 8893427
-1877.    IREMPOW2 (8893427 % 0x04000000):  int: 8893427
-1878.    IREMPOW2 (8893427 % 0x08000000):  int: 8893427
-1879.    IREMPOW2 (8893427 % 0x10000000):  int: 8893427
-1880.    IREMPOW2 (8893427 % 0x20000000):  int: 8893427
-1881.    IREMPOW2 (8893427 % 0x40000000):  int: 8893427
-1882.    IREMPOW2 (8893427 % 0x80000000):  int: 8893427
-1883.    IREMPOW2 (1005234562 % 0x00000002):  int: 0
-1884.    IREMPOW2 (1005234562 % 0x00000004):  int: 2
-1885.    IREMPOW2 (1005234562 % 0x00000008):  int: 2
-1886.    IREMPOW2 (1005234562 % 0x00000010):  int: 2
-1887.    IREMPOW2 (1005234562 % 0x00000020):  int: 2
-1888.    IREMPOW2 (1005234562 % 0x00000040):  int: 2
-1889.    IREMPOW2 (1005234562 % 0x00000080):  int: 2
-1890.    IREMPOW2 (1005234562 % 0x00000100):  int: 130
-1891.    IREMPOW2 (1005234562 % 0x00000200):  int: 386
-1892.    IREMPOW2 (1005234562 % 0x00000400):  int: 386
-1893.    IREMPOW2 (1005234562 % 0x00000800):  int: 386
-1894.    IREMPOW2 (1005234562 % 0x00001000):  int: 2434
-1895.    IREMPOW2 (1005234562 % 0x00002000):  int: 2434
-1896.    IREMPOW2 (1005234562 % 0x00004000):  int: 10626
-1897.    IREMPOW2 (1005234562 % 0x00008000):  int: 10626
-1898.    IREMPOW2 (1005234562 % 0x00010000):  int: 43394
-1899.    IREMPOW2 (1005234562 % 0x00020000):  int: 43394
-1900.    IREMPOW2 (1005234562 % 0x00040000):  int: 174466
-1901.    IREMPOW2 (1005234562 % 0x00080000):  int: 174466
-1902.    IREMPOW2 (1005234562 % 0x00100000):  int: 698754
-1903.    IREMPOW2 (1005234562 % 0x00200000):  int: 698754
-1904.    IREMPOW2 (1005234562 % 0x00400000):  int: 2795906
-1905.    IREMPOW2 (1005234562 % 0x00800000):  int: 6990210
-1906.    IREMPOW2 (1005234562 % 0x01000000):  int: 15378818
-1907.    IREMPOW2 (1005234562 % 0x02000000):  int: 32156034
-1908.    IREMPOW2 (1005234562 % 0x04000000):  int: 65710466
-1909.    IREMPOW2 (1005234562 % 0x08000000):  int: 65710466
-1910.    IREMPOW2 (1005234562 % 0x10000000):  int: 199928194
-1911.    IREMPOW2 (1005234562 % 0x20000000):  int: 468363650
-1912.    IREMPOW2 (1005234562 % 0x40000000):  int: 1005234562
-1913.    IREMPOW2 (1005234562 % 0x80000000):  int: 1005234562
-1914.    IREMPOW2 (-17 % 0x00000002):  int: -1
-1915.    IREMPOW2 (-17 % 0x00000004):  int: -1
-1916.    IREMPOW2 (-17 % 0x00000008):  int: -1
-1917.    IREMPOW2 (-17 % 0x00000010):  int: -1
-1918.    IREMPOW2 (-17 % 0x00000020):  int: -17
-1919.    IREMPOW2 (-17 % 0x00000040):  int: -17
-1920.    IREMPOW2 (-17 % 0x00000080):  int: -17
-1921.    IREMPOW2 (-17 % 0x00000100):  int: -17
-1922.    IREMPOW2 (-17 % 0x00000200):  int: -17
-1923.    IREMPOW2 (-17 % 0x00000400):  int: -17
-1924.    IREMPOW2 (-17 % 0x00000800):  int: -17
-1925.    IREMPOW2 (-17 % 0x00001000):  int: -17
-1926.    IREMPOW2 (-17 % 0x00002000):  int: -17
-1927.    IREMPOW2 (-17 % 0x00004000):  int: -17
-1928.    IREMPOW2 (-17 % 0x00008000):  int: -17
-1929.    IREMPOW2 (-17 % 0x00010000):  int: -17
-1930.    IREMPOW2 (-17 % 0x00020000):  int: -17
-1931.    IREMPOW2 (-17 % 0x00040000):  int: -17
-1932.    IREMPOW2 (-17 % 0x00080000):  int: -17
-1933.    IREMPOW2 (-17 % 0x00100000):  int: -17
-1934.    IREMPOW2 (-17 % 0x00200000):  int: -17
-1935.    IREMPOW2 (-17 % 0x00400000):  int: -17
-1936.    IREMPOW2 (-17 % 0x00800000):  int: -17
-1937.    IREMPOW2 (-17 % 0x01000000):  int: -17
-1938.    IREMPOW2 (-17 % 0x02000000):  int: -17
-1939.    IREMPOW2 (-17 % 0x04000000):  int: -17
-1940.    IREMPOW2 (-17 % 0x08000000):  int: -17
-1941.    IREMPOW2 (-17 % 0x10000000):  int: -17
-1942.    IREMPOW2 (-17 % 0x20000000):  int: -17
-1943.    IREMPOW2 (-17 % 0x40000000):  int: -17
-1944.    IREMPOW2 (-17 % 0x80000000):  int: -17
-1945.    IREMPOW2 (-12347 % 0x00000002):  int: -1
-1946.    IREMPOW2 (-12347 % 0x00000004):  int: -3
-1947.    IREMPOW2 (-12347 % 0x00000008):  int: -3
-1948.    IREMPOW2 (-12347 % 0x00000010):  int: -11
-1949.    IREMPOW2 (-12347 % 0x00000020):  int: -27
-1950.    IREMPOW2 (-12347 % 0x00000040):  int: -59
-1951.    IREMPOW2 (-12347 % 0x00000080):  int: -59
-1952.    IREMPOW2 (-12347 % 0x00000100):  int: -59
-1953.    IREMPOW2 (-12347 % 0x00000200):  int: -59
-1954.    IREMPOW2 (-12347 % 0x00000400):  int: -59
-1955.    IREMPOW2 (-12347 % 0x00000800):  int: -59
-1956.    IREMPOW2 (-12347 % 0x00001000):  int: -59
-1957.    IREMPOW2 (-12347 % 0x00002000):  int: -4155
-1958.    IREMPOW2 (-12347 % 0x00004000):  int: -12347
-1959.    IREMPOW2 (-12347 % 0x00008000):  int: -12347
-1960.    IREMPOW2 (-12347 % 0x00010000):  int: -12347
-1961.    IREMPOW2 (-12347 % 0x00020000):  int: -12347
-1962.    IREMPOW2 (-12347 % 0x00040000):  int: -12347
-1963.    IREMPOW2 (-12347 % 0x00080000):  int: -12347
-1964.    IREMPOW2 (-12347 % 0x00100000):  int: -12347
-1965.    IREMPOW2 (-12347 % 0x00200000):  int: -12347
-1966.    IREMPOW2 (-12347 % 0x00400000):  int: -12347
-1967.    IREMPOW2 (-12347 % 0x00800000):  int: -12347
-1968.    IREMPOW2 (-12347 % 0x01000000):  int: -12347
-1969.    IREMPOW2 (-12347 % 0x02000000):  int: -12347
-1970.    IREMPOW2 (-12347 % 0x04000000):  int: -12347
-1971.    IREMPOW2 (-12347 % 0x08000000):  int: -12347
-1972.    IREMPOW2 (-12347 % 0x10000000):  int: -12347
-1973.    IREMPOW2 (-12347 % 0x20000000):  int: -12347
-1974.    IREMPOW2 (-12347 % 0x40000000):  int: -12347
-1975.    IREMPOW2 (-12347 % 0x80000000):  int: -12347
-1976.    IREMPOW2 (-8893427 % 0x00000002):  int: -1
-1977.    IREMPOW2 (-8893427 % 0x00000004):  int: -3
-1978.    IREMPOW2 (-8893427 % 0x00000008):  int: -3
-1979.    IREMPOW2 (-8893427 % 0x00000010):  int: -3
-1980.    IREMPOW2 (-8893427 % 0x00000020):  int: -19
-1981.    IREMPOW2 (-8893427 % 0x00000040):  int: -51
-1982.    IREMPOW2 (-8893427 % 0x00000080):  int: -115
-1983.    IREMPOW2 (-8893427 % 0x00000100):  int: -243
-1984.    IREMPOW2 (-8893427 % 0x00000200):  int: -499
-1985.    IREMPOW2 (-8893427 % 0x00000400):  int: -1011
-1986.    IREMPOW2 (-8893427 % 0x00000800):  int: -1011
-1987.    IREMPOW2 (-8893427 % 0x00001000):  int: -1011
-1988.    IREMPOW2 (-8893427 % 0x00002000):  int: -5107
-1989.    IREMPOW2 (-8893427 % 0x00004000):  int: -13299
-1990.    IREMPOW2 (-8893427 % 0x00008000):  int: -13299
-1991.    IREMPOW2 (-8893427 % 0x00010000):  int: -46067
-1992.    IREMPOW2 (-8893427 % 0x00020000):  int: -111603
-1993.    IREMPOW2 (-8893427 % 0x00040000):  int: -242675
-1994.    IREMPOW2 (-8893427 % 0x00080000):  int: -504819
-1995.    IREMPOW2 (-8893427 % 0x00100000):  int: -504819
-1996.    IREMPOW2 (-8893427 % 0x00200000):  int: -504819
-1997.    IREMPOW2 (-8893427 % 0x00400000):  int: -504819
-1998.    IREMPOW2 (-8893427 % 0x00800000):  int: -504819
-1999.    IREMPOW2 (-8893427 % 0x01000000):  int: -8893427
-2000.    IREMPOW2 (-8893427 % 0x02000000):  int: -8893427
-2001.    IREMPOW2 (-8893427 % 0x04000000):  int: -8893427
-2002.    IREMPOW2 (-8893427 % 0x08000000):  int: -8893427
-2003.    IREMPOW2 (-8893427 % 0x10000000):  int: -8893427
-2004.    IREMPOW2 (-8893427 % 0x20000000):  int: -8893427
-2005.    IREMPOW2 (-8893427 % 0x40000000):  int: -8893427
-2006.    IREMPOW2 (-8893427 % 0x80000000):  int: -8893427
-2007.    IREMPOW2 (-1005234562 % 0x00000002):  int: 0
-2008.    IREMPOW2 (-1005234562 % 0x00000004):  int: -2
-2009.    IREMPOW2 (-1005234562 % 0x00000008):  int: -2
-2010.    IREMPOW2 (-1005234562 % 0x00000010):  int: -2
-2011.    IREMPOW2 (-1005234562 % 0x00000020):  int: -2
-2012.    IREMPOW2 (-1005234562 % 0x00000040):  int: -2
-2013.    IREMPOW2 (-1005234562 % 0x00000080):  int: -2
-2014.    IREMPOW2 (-1005234562 % 0x00000100):  int: -130
-2015.    IREMPOW2 (-1005234562 % 0x00000200):  int: -386
-2016.    IREMPOW2 (-1005234562 % 0x00000400):  int: -386
-2017.    IREMPOW2 (-1005234562 % 0x00000800):  int: -386
-2018.    IREMPOW2 (-1005234562 % 0x00001000):  int: -2434
-2019.    IREMPOW2 (-1005234562 % 0x00002000):  int: -2434
-2020.    IREMPOW2 (-1005234562 % 0x00004000):  int: -10626
-2021.    IREMPOW2 (-1005234562 % 0x00008000):  int: -10626
-2022.    IREMPOW2 (-1005234562 % 0x00010000):  int: -43394
-2023.    IREMPOW2 (-1005234562 % 0x00020000):  int: -43394
-2024.    IREMPOW2 (-1005234562 % 0x00040000):  int: -174466
-2025.    IREMPOW2 (-1005234562 % 0x00080000):  int: -174466
-2026.    IREMPOW2 (-1005234562 % 0x00100000):  int: -698754
-2027.    IREMPOW2 (-1005234562 % 0x00200000):  int: -698754
-2028.    IREMPOW2 (-1005234562 % 0x00400000):  int: -2795906
-2029.    IREMPOW2 (-1005234562 % 0x00800000):  int: -6990210
-2030.    IREMPOW2 (-1005234562 % 0x01000000):  int: -15378818
-2031.    IREMPOW2 (-1005234562 % 0x02000000):  int: -32156034
-2032.    IREMPOW2 (-1005234562 % 0x04000000):  int: -65710466
-2033.    IREMPOW2 (-1005234562 % 0x08000000):  int: -65710466
-2034.    IREMPOW2 (-1005234562 % 0x10000000):  int: -199928194
-2035.    IREMPOW2 (-1005234562 % 0x20000000):  int: -468363650
-2036.    IREMPOW2 (-1005234562 % 0x40000000):  int: -1005234562
-2037.    IREMPOW2 (-1005234562 % 0x80000000):  int: -1005234562
-2038.    LREMPOW2 (17 % 0x00000002):  long: 1
-2039.    LREMPOW2 (17 % 0x00000004):  long: 1
-2040.    LREMPOW2 (17 % 0x00000008):  long: 1
-2041.    LREMPOW2 (17 % 0x00000010):  long: 1
-2042.    LREMPOW2 (17 % 0x00000020):  long: 17
-2043.    LREMPOW2 (17 % 0x00000040):  long: 17
-2044.    LREMPOW2 (17 % 0x00000080):  long: 17
-2045.    LREMPOW2 (17 % 0x00000100):  long: 17
-2046.    LREMPOW2 (17 % 0x00000200):  long: 17
-2047.    LREMPOW2 (17 % 0x00000400):  long: 17
-2048.    LREMPOW2 (17 % 0x00000800):  long: 17
-2049.    LREMPOW2 (17 % 0x00001000):  long: 17
-2050.    LREMPOW2 (17 % 0x00002000):  long: 17
-2051.    LREMPOW2 (17 % 0x00004000):  long: 17
-2052.    LREMPOW2 (17 % 0x00008000):  long: 17
-2053.    LREMPOW2 (17 % 0x00010000):  long: 17
-2054.    LREMPOW2 (17 % 0x00020000):  long: 17
-2055.    LREMPOW2 (17 % 0x00040000):  long: 17
-2056.    LREMPOW2 (17 % 0x00080000):  long: 17
-2057.    LREMPOW2 (17 % 0x00100000):  long: 17
-2058.    LREMPOW2 (17 % 0x00200000):  long: 17
-2059.    LREMPOW2 (17 % 0x00400000):  long: 17
-2060.    LREMPOW2 (17 % 0x00800000):  long: 17
-2061.    LREMPOW2 (17 % 0x01000000):  long: 17
-2062.    LREMPOW2 (17 % 0x02000000):  long: 17
-2063.    LREMPOW2 (17 % 0x04000000):  long: 17
-2064.    LREMPOW2 (17 % 0x08000000):  long: 17
-2065.    LREMPOW2 (17 % 0x10000000):  long: 17
-2066.    LREMPOW2 (17 % 0x20000000):  long: 17
-2067.    LREMPOW2 (17 % 0x40000000):  long: 17
-2068.    LREMPOW2 (17 % 0x80000000):  long: 17
-2069.    LREMPOW2 (12347 % 0x00000002):  long: 1
-2070.    LREMPOW2 (12347 % 0x00000004):  long: 3
-2071.    LREMPOW2 (12347 % 0x00000008):  long: 3
-2072.    LREMPOW2 (12347 % 0x00000010):  long: 11
-2073.    LREMPOW2 (12347 % 0x00000020):  long: 27
-2074.    LREMPOW2 (12347 % 0x00000040):  long: 59
-2075.    LREMPOW2 (12347 % 0x00000080):  long: 59
-2076.    LREMPOW2 (12347 % 0x00000100):  long: 59
-2077.    LREMPOW2 (12347 % 0x00000200):  long: 59
-2078.    LREMPOW2 (12347 % 0x00000400):  long: 59
-2079.    LREMPOW2 (12347 % 0x00000800):  long: 59
-2080.    LREMPOW2 (12347 % 0x00001000):  long: 59
-2081.    LREMPOW2 (12347 % 0x00002000):  long: 4155
-2082.    LREMPOW2 (12347 % 0x00004000):  long: 12347
-2083.    LREMPOW2 (12347 % 0x00008000):  long: 12347
-2084.    LREMPOW2 (12347 % 0x00010000):  long: 12347
-2085.    LREMPOW2 (12347 % 0x00020000):  long: 12347
-2086.    LREMPOW2 (12347 % 0x00040000):  long: 12347
-2087.    LREMPOW2 (12347 % 0x00080000):  long: 12347
-2088.    LREMPOW2 (12347 % 0x00100000):  long: 12347
-2089.    LREMPOW2 (12347 % 0x00200000):  long: 12347
-2090.    LREMPOW2 (12347 % 0x00400000):  long: 12347
-2091.    LREMPOW2 (12347 % 0x00800000):  long: 12347
-2092.    LREMPOW2 (12347 % 0x01000000):  long: 12347
-2093.    LREMPOW2 (12347 % 0x02000000):  long: 12347
-2094.    LREMPOW2 (12347 % 0x04000000):  long: 12347
-2095.    LREMPOW2 (12347 % 0x08000000):  long: 12347
-2096.    LREMPOW2 (12347 % 0x10000000):  long: 12347
-2097.    LREMPOW2 (12347 % 0x20000000):  long: 12347
-2098.    LREMPOW2 (12347 % 0x40000000):  long: 12347
-2099.    LREMPOW2 (12347 % 0x80000000):  long: 12347
-2100.    LREMPOW2 (8893427 % 0x00000002):  long: 1
-2101.    LREMPOW2 (8893427 % 0x00000004):  long: 3
-2102.    LREMPOW2 (8893427 % 0x00000008):  long: 3
-2103.    LREMPOW2 (8893427 % 0x00000010):  long: 3
-2104.    LREMPOW2 (8893427 % 0x00000020):  long: 19
-2105.    LREMPOW2 (8893427 % 0x00000040):  long: 51
-2106.    LREMPOW2 (8893427 % 0x00000080):  long: 115
-2107.    LREMPOW2 (8893427 % 0x00000100):  long: 243
-2108.    LREMPOW2 (8893427 % 0x00000200):  long: 499
-2109.    LREMPOW2 (8893427 % 0x00000400):  long: 1011
-2110.    LREMPOW2 (8893427 % 0x00000800):  long: 1011
-2111.    LREMPOW2 (8893427 % 0x00001000):  long: 1011
-2112.    LREMPOW2 (8893427 % 0x00002000):  long: 5107
-2113.    LREMPOW2 (8893427 % 0x00004000):  long: 13299
-2114.    LREMPOW2 (8893427 % 0x00008000):  long: 13299
-2115.    LREMPOW2 (8893427 % 0x00010000):  long: 46067
-2116.    LREMPOW2 (8893427 % 0x00020000):  long: 111603
-2117.    LREMPOW2 (8893427 % 0x00040000):  long: 242675
-2118.    LREMPOW2 (8893427 % 0x00080000):  long: 504819
-2119.    LREMPOW2 (8893427 % 0x00100000):  long: 504819
-2120.    LREMPOW2 (8893427 % 0x00200000):  long: 504819
-2121.    LREMPOW2 (8893427 % 0x00400000):  long: 504819
-2122.    LREMPOW2 (8893427 % 0x00800000):  long: 504819
-2123.    LREMPOW2 (8893427 % 0x01000000):  long: 8893427
-2124.    LREMPOW2 (8893427 % 0x02000000):  long: 8893427
-2125.    LREMPOW2 (8893427 % 0x04000000):  long: 8893427
-2126.    LREMPOW2 (8893427 % 0x08000000):  long: 8893427
-2127.    LREMPOW2 (8893427 % 0x10000000):  long: 8893427
-2128.    LREMPOW2 (8893427 % 0x20000000):  long: 8893427
-2129.    LREMPOW2 (8893427 % 0x40000000):  long: 8893427
-2130.    LREMPOW2 (8893427 % 0x80000000):  long: 8893427
-2131.    LREMPOW2 (1005234562 % 0x00000002):  long: 0
-2132.    LREMPOW2 (1005234562 % 0x00000004):  long: 2
-2133.    LREMPOW2 (1005234562 % 0x00000008):  long: 2
-2134.    LREMPOW2 (1005234562 % 0x00000010):  long: 2
-2135.    LREMPOW2 (1005234562 % 0x00000020):  long: 2
-2136.    LREMPOW2 (1005234562 % 0x00000040):  long: 2
-2137.    LREMPOW2 (1005234562 % 0x00000080):  long: 2
-2138.    LREMPOW2 (1005234562 % 0x00000100):  long: 130
-2139.    LREMPOW2 (1005234562 % 0x00000200):  long: 386
-2140.    LREMPOW2 (1005234562 % 0x00000400):  long: 386
-2141.    LREMPOW2 (1005234562 % 0x00000800):  long: 386
-2142.    LREMPOW2 (1005234562 % 0x00001000):  long: 2434
-2143.    LREMPOW2 (1005234562 % 0x00002000):  long: 2434
-2144.    LREMPOW2 (1005234562 % 0x00004000):  long: 10626
-2145.    LREMPOW2 (1005234562 % 0x00008000):  long: 10626
-2146.    LREMPOW2 (1005234562 % 0x00010000):  long: 43394
-2147.    LREMPOW2 (1005234562 % 0x00020000):  long: 43394
-2148.    LREMPOW2 (1005234562 % 0x00040000):  long: 174466
-2149.    LREMPOW2 (1005234562 % 0x00080000):  long: 174466
-2150.    LREMPOW2 (1005234562 % 0x00100000):  long: 698754
-2151.    LREMPOW2 (1005234562 % 0x00200000):  long: 698754
-2152.    LREMPOW2 (1005234562 % 0x00400000):  long: 2795906
-2153.    LREMPOW2 (1005234562 % 0x00800000):  long: 6990210
-2154.    LREMPOW2 (1005234562 % 0x01000000):  long: 15378818
-2155.    LREMPOW2 (1005234562 % 0x02000000):  long: 32156034
-2156.    LREMPOW2 (1005234562 % 0x04000000):  long: 65710466
-2157.    LREMPOW2 (1005234562 % 0x08000000):  long: 65710466
-2158.    LREMPOW2 (1005234562 % 0x10000000):  long: 199928194
-2159.    LREMPOW2 (1005234562 % 0x20000000):  long: 468363650
-2160.    LREMPOW2 (1005234562 % 0x40000000):  long: 1005234562
-2161.    LREMPOW2 (1005234562 % 0x80000000):  long: 1005234562
-2162.    LREMPOW2 (12135005234562 % 0x00000002):  long: 0
-2163.    LREMPOW2 (12135005234562 % 0x00000004):  long: 2
-2164.    LREMPOW2 (12135005234562 % 0x00000008):  long: 2
-2165.    LREMPOW2 (12135005234562 % 0x00000010):  long: 2
-2166.    LREMPOW2 (12135005234562 % 0x00000020):  long: 2
-2167.    LREMPOW2 (12135005234562 % 0x00000040):  long: 2
-2168.    LREMPOW2 (12135005234562 % 0x00000080):  long: 2
-2169.    LREMPOW2 (12135005234562 % 0x00000100):  long: 130
-2170.    LREMPOW2 (12135005234562 % 0x00000200):  long: 386
-2171.    LREMPOW2 (12135005234562 % 0x00000400):  long: 386
-2172.    LREMPOW2 (12135005234562 % 0x00000800):  long: 1410
-2173.    LREMPOW2 (12135005234562 % 0x00001000):  long: 1410
-2174.    LREMPOW2 (12135005234562 % 0x00002000):  long: 1410
-2175.    LREMPOW2 (12135005234562 % 0x00004000):  long: 9602
-2176.    LREMPOW2 (12135005234562 % 0x00008000):  long: 9602
-2177.    LREMPOW2 (12135005234562 % 0x00010000):  long: 9602
-2178.    LREMPOW2 (12135005234562 % 0x00020000):  long: 75138
-2179.    LREMPOW2 (12135005234562 % 0x00040000):  long: 75138
-2180.    LREMPOW2 (12135005234562 % 0x00080000):  long: 337282
-2181.    LREMPOW2 (12135005234562 % 0x00100000):  long: 861570
-2182.    LREMPOW2 (12135005234562 % 0x00200000):  long: 861570
-2183.    LREMPOW2 (12135005234562 % 0x00400000):  long: 2958722
-2184.    LREMPOW2 (12135005234562 % 0x00800000):  long: 2958722
-2185.    LREMPOW2 (12135005234562 % 0x01000000):  long: 11347330
-2186.    LREMPOW2 (12135005234562 % 0x02000000):  long: 11347330
-2187.    LREMPOW2 (12135005234562 % 0x04000000):  long: 44901762
-2188.    LREMPOW2 (12135005234562 % 0x08000000):  long: 112010626
-2189.    LREMPOW2 (12135005234562 % 0x10000000):  long: 112010626
-2190.    LREMPOW2 (12135005234562 % 0x20000000):  long: 112010626
-2191.    LREMPOW2 (12135005234562 % 0x40000000):  long: 648881538
-2192.    LREMPOW2 (12135005234562 % 0x80000000):  long: 1722623362
-2193.    LREMPOW2 (2343552355623464626 % 0x00000002):  long: 0
-2194.    LREMPOW2 (2343552355623464626 % 0x00000004):  long: 2
-2195.    LREMPOW2 (2343552355623464626 % 0x00000008):  long: 2
-2196.    LREMPOW2 (2343552355623464626 % 0x00000010):  long: 2
-2197.    LREMPOW2 (2343552355623464626 % 0x00000020):  long: 18
-2198.    LREMPOW2 (2343552355623464626 % 0x00000040):  long: 50
-2199.    LREMPOW2 (2343552355623464626 % 0x00000080):  long: 50
-2200.    LREMPOW2 (2343552355623464626 % 0x00000100):  long: 178
-2201.    LREMPOW2 (2343552355623464626 % 0x00000200):  long: 178
-2202.    LREMPOW2 (2343552355623464626 % 0x00000400):  long: 690
-2203.    LREMPOW2 (2343552355623464626 % 0x00000800):  long: 1714
-2204.    LREMPOW2 (2343552355623464626 % 0x00001000):  long: 3762
-2205.    LREMPOW2 (2343552355623464626 % 0x00002000):  long: 3762
-2206.    LREMPOW2 (2343552355623464626 % 0x00004000):  long: 11954
-2207.    LREMPOW2 (2343552355623464626 % 0x00008000):  long: 28338
-2208.    LREMPOW2 (2343552355623464626 % 0x00010000):  long: 28338
-2209.    LREMPOW2 (2343552355623464626 % 0x00020000):  long: 93874
-2210.    LREMPOW2 (2343552355623464626 % 0x00040000):  long: 224946
-2211.    LREMPOW2 (2343552355623464626 % 0x00080000):  long: 487090
-2212.    LREMPOW2 (2343552355623464626 % 0x00100000):  long: 487090
-2213.    LREMPOW2 (2343552355623464626 % 0x00200000):  long: 1535666
-2214.    LREMPOW2 (2343552355623464626 % 0x00400000):  long: 3632818
-2215.    LREMPOW2 (2343552355623464626 % 0x00800000):  long: 7827122
-2216.    LREMPOW2 (2343552355623464626 % 0x01000000):  long: 7827122
-2217.    LREMPOW2 (2343552355623464626 % 0x02000000):  long: 24604338
-2218.    LREMPOW2 (2343552355623464626 % 0x04000000):  long: 24604338
-2219.    LREMPOW2 (2343552355623464626 % 0x08000000):  long: 91713202
-2220.    LREMPOW2 (2343552355623464626 % 0x10000000):  long: 91713202
-2221.    LREMPOW2 (2343552355623464626 % 0x20000000):  long: 91713202
-2222.    LREMPOW2 (2343552355623464626 % 0x40000000):  long: 628584114
-2223.    LREMPOW2 (2343552355623464626 % 0x80000000):  long: 1702325938
-2224.    LREMPOW2 (-17 % 0x00000002):  long: -1
-2225.    LREMPOW2 (-17 % 0x00000004):  long: -1
-2226.    LREMPOW2 (-17 % 0x00000008):  long: -1
-2227.    LREMPOW2 (-17 % 0x00000010):  long: -1
-2228.    LREMPOW2 (-17 % 0x00000020):  long: -17
-2229.    LREMPOW2 (-17 % 0x00000040):  long: -17
-2230.    LREMPOW2 (-17 % 0x00000080):  long: -17
-2231.    LREMPOW2 (-17 % 0x00000100):  long: -17
-2232.    LREMPOW2 (-17 % 0x00000200):  long: -17
-2233.    LREMPOW2 (-17 % 0x00000400):  long: -17
-2234.    LREMPOW2 (-17 % 0x00000800):  long: -17
-2235.    LREMPOW2 (-17 % 0x00001000):  long: -17
-2236.    LREMPOW2 (-17 % 0x00002000):  long: -17
-2237.    LREMPOW2 (-17 % 0x00004000):  long: -17
-2238.    LREMPOW2 (-17 % 0x00008000):  long: -17
-2239.    LREMPOW2 (-17 % 0x00010000):  long: -17
-2240.    LREMPOW2 (-17 % 0x00020000):  long: -17
-2241.    LREMPOW2 (-17 % 0x00040000):  long: -17
-2242.    LREMPOW2 (-17 % 0x00080000):  long: -17
-2243.    LREMPOW2 (-17 % 0x00100000):  long: -17
-2244.    LREMPOW2 (-17 % 0x00200000):  long: -17
-2245.    LREMPOW2 (-17 % 0x00400000):  long: -17
-2246.    LREMPOW2 (-17 % 0x00800000):  long: -17
-2247.    LREMPOW2 (-17 % 0x01000000):  long: -17
-2248.    LREMPOW2 (-17 % 0x02000000):  long: -17
-2249.    LREMPOW2 (-17 % 0x04000000):  long: -17
-2250.    LREMPOW2 (-17 % 0x08000000):  long: -17
-2251.    LREMPOW2 (-17 % 0x10000000):  long: -17
-2252.    LREMPOW2 (-17 % 0x20000000):  long: -17
-2253.    LREMPOW2 (-17 % 0x40000000):  long: -17
-2254.    LREMPOW2 (-17 % 0x80000000):  long: -17
-2255.    LREMPOW2 (-12347 % 0x00000002):  long: -1
-2256.    LREMPOW2 (-12347 % 0x00000004):  long: -3
-2257.    LREMPOW2 (-12347 % 0x00000008):  long: -3
-2258.    LREMPOW2 (-12347 % 0x00000010):  long: -11
-2259.    LREMPOW2 (-12347 % 0x00000020):  long: -27
-2260.    LREMPOW2 (-12347 % 0x00000040):  long: -59
-2261.    LREMPOW2 (-12347 % 0x00000080):  long: -59
-2262.    LREMPOW2 (-12347 % 0x00000100):  long: -59
-2263.    LREMPOW2 (-12347 % 0x00000200):  long: -59
-2264.    LREMPOW2 (-12347 % 0x00000400):  long: -59
-2265.    LREMPOW2 (-12347 % 0x00000800):  long: -59
-2266.    LREMPOW2 (-12347 % 0x00001000):  long: -59
-2267.    LREMPOW2 (-12347 % 0x00002000):  long: -4155
-2268.    LREMPOW2 (-12347 % 0x00004000):  long: -12347
-2269.    LREMPOW2 (-12347 % 0x00008000):  long: -12347
-2270.    LREMPOW2 (-12347 % 0x00010000):  long: -12347
-2271.    LREMPOW2 (-12347 % 0x00020000):  long: -12347
-2272.    LREMPOW2 (-12347 % 0x00040000):  long: -12347
-2273.    LREMPOW2 (-12347 % 0x00080000):  long: -12347
-2274.    LREMPOW2 (-12347 % 0x00100000):  long: -12347
-2275.    LREMPOW2 (-12347 % 0x00200000):  long: -12347
-2276.    LREMPOW2 (-12347 % 0x00400000):  long: -12347
-2277.    LREMPOW2 (-12347 % 0x00800000):  long: -12347
-2278.    LREMPOW2 (-12347 % 0x01000000):  long: -12347
-2279.    LREMPOW2 (-12347 % 0x02000000):  long: -12347
-2280.    LREMPOW2 (-12347 % 0x04000000):  long: -12347
-2281.    LREMPOW2 (-12347 % 0x08000000):  long: -12347
-2282.    LREMPOW2 (-12347 % 0x10000000):  long: -12347
-2283.    LREMPOW2 (-12347 % 0x20000000):  long: -12347
-2284.    LREMPOW2 (-12347 % 0x40000000):  long: -12347
-2285.    LREMPOW2 (-12347 % 0x80000000):  long: -12347
-2286.    LREMPOW2 (-8893427 % 0x00000002):  long: -1
-2287.    LREMPOW2 (-8893427 % 0x00000004):  long: -3
-2288.    LREMPOW2 (-8893427 % 0x00000008):  long: -3
-2289.    LREMPOW2 (-8893427 % 0x00000010):  long: -3
-2290.    LREMPOW2 (-8893427 % 0x00000020):  long: -19
-2291.    LREMPOW2 (-8893427 % 0x00000040):  long: -51
-2292.    LREMPOW2 (-8893427 % 0x00000080):  long: -115
-2293.    LREMPOW2 (-8893427 % 0x00000100):  long: -243
-2294.    LREMPOW2 (-8893427 % 0x00000200):  long: -499
-2295.    LREMPOW2 (-8893427 % 0x00000400):  long: -1011
-2296.    LREMPOW2 (-8893427 % 0x00000800):  long: -1011
-2297.    LREMPOW2 (-8893427 % 0x00001000):  long: -1011
-2298.    LREMPOW2 (-8893427 % 0x00002000):  long: -5107
-2299.    LREMPOW2 (-8893427 % 0x00004000):  long: -13299
-2300.    LREMPOW2 (-8893427 % 0x00008000):  long: -13299
-2301.    LREMPOW2 (-8893427 % 0x00010000):  long: -46067
-2302.    LREMPOW2 (-8893427 % 0x00020000):  long: -111603
-2303.    LREMPOW2 (-8893427 % 0x00040000):  long: -242675
-2304.    LREMPOW2 (-8893427 % 0x00080000):  long: -504819
-2305.    LREMPOW2 (-8893427 % 0x00100000):  long: -504819
-2306.    LREMPOW2 (-8893427 % 0x00200000):  long: -504819
-2307.    LREMPOW2 (-8893427 % 0x00400000):  long: -504819
-2308.    LREMPOW2 (-8893427 % 0x00800000):  long: -504819
-2309.    LREMPOW2 (-8893427 % 0x01000000):  long: -8893427
-2310.    LREMPOW2 (-8893427 % 0x02000000):  long: -8893427
-2311.    LREMPOW2 (-8893427 % 0x04000000):  long: -8893427
-2312.    LREMPOW2 (-8893427 % 0x08000000):  long: -8893427
-2313.    LREMPOW2 (-8893427 % 0x10000000):  long: -8893427
-2314.    LREMPOW2 (-8893427 % 0x20000000):  long: -8893427
-2315.    LREMPOW2 (-8893427 % 0x40000000):  long: -8893427
-2316.    LREMPOW2 (-8893427 % 0x80000000):  long: -8893427
-2317.    LREMPOW2 (-1005234562 % 0x00000002):  long: 0
-2318.    LREMPOW2 (-1005234562 % 0x00000004):  long: -2
-2319.    LREMPOW2 (-1005234562 % 0x00000008):  long: -2
-2320.    LREMPOW2 (-1005234562 % 0x00000010):  long: -2
-2321.    LREMPOW2 (-1005234562 % 0x00000020):  long: -2
-2322.    LREMPOW2 (-1005234562 % 0x00000040):  long: -2
-2323.    LREMPOW2 (-1005234562 % 0x00000080):  long: -2
-2324.    LREMPOW2 (-1005234562 % 0x00000100):  long: -130
-2325.    LREMPOW2 (-1005234562 % 0x00000200):  long: -386
-2326.    LREMPOW2 (-1005234562 % 0x00000400):  long: -386
-2327.    LREMPOW2 (-1005234562 % 0x00000800):  long: -386
-2328.    LREMPOW2 (-1005234562 % 0x00001000):  long: -2434
-2329.    LREMPOW2 (-1005234562 % 0x00002000):  long: -2434
-2330.    LREMPOW2 (-1005234562 % 0x00004000):  long: -10626
-2331.    LREMPOW2 (-1005234562 % 0x00008000):  long: -10626
-2332.    LREMPOW2 (-1005234562 % 0x00010000):  long: -43394
-2333.    LREMPOW2 (-1005234562 % 0x00020000):  long: -43394
-2334.    LREMPOW2 (-1005234562 % 0x00040000):  long: -174466
-2335.    LREMPOW2 (-1005234562 % 0x00080000):  long: -174466
-2336.    LREMPOW2 (-1005234562 % 0x00100000):  long: -698754
-2337.    LREMPOW2 (-1005234562 % 0x00200000):  long: -698754
-2338.    LREMPOW2 (-1005234562 % 0x00400000):  long: -2795906
-2339.    LREMPOW2 (-1005234562 % 0x00800000):  long: -6990210
-2340.    LREMPOW2 (-1005234562 % 0x01000000):  long: -15378818
-2341.    LREMPOW2 (-1005234562 % 0x02000000):  long: -32156034
-2342.    LREMPOW2 (-1005234562 % 0x04000000):  long: -65710466
-2343.    LREMPOW2 (-1005234562 % 0x08000000):  long: -65710466
-2344.    LREMPOW2 (-1005234562 % 0x10000000):  long: -199928194
-2345.    LREMPOW2 (-1005234562 % 0x20000000):  long: -468363650
-2346.    LREMPOW2 (-1005234562 % 0x40000000):  long: -1005234562
-2347.    LREMPOW2 (-1005234562 % 0x80000000):  long: -1005234562
-2348.    LREMPOW2 (-12135005234562 % 0x00000002):  long: 0
-2349.    LREMPOW2 (-12135005234562 % 0x00000004):  long: -2
-2350.    LREMPOW2 (-12135005234562 % 0x00000008):  long: -2
-2351.    LREMPOW2 (-12135005234562 % 0x00000010):  long: -2
-2352.    LREMPOW2 (-12135005234562 % 0x00000020):  long: -2
-2353.    LREMPOW2 (-12135005234562 % 0x00000040):  long: -2
-2354.    LREMPOW2 (-12135005234562 % 0x00000080):  long: -2
-2355.    LREMPOW2 (-12135005234562 % 0x00000100):  long: -130
-2356.    LREMPOW2 (-12135005234562 % 0x00000200):  long: -386
-2357.    LREMPOW2 (-12135005234562 % 0x00000400):  long: -386
-2358.    LREMPOW2 (-12135005234562 % 0x00000800):  long: -1410
-2359.    LREMPOW2 (-12135005234562 % 0x00001000):  long: -1410
-2360.    LREMPOW2 (-12135005234562 % 0x00002000):  long: -1410
-2361.    LREMPOW2 (-12135005234562 % 0x00004000):  long: -9602
-2362.    LREMPOW2 (-12135005234562 % 0x00008000):  long: -9602
-2363.    LREMPOW2 (-12135005234562 % 0x00010000):  long: -9602
-2364.    LREMPOW2 (-12135005234562 % 0x00020000):  long: -75138
-2365.    LREMPOW2 (-12135005234562 % 0x00040000):  long: -75138
-2366.    LREMPOW2 (-12135005234562 % 0x00080000):  long: -337282
-2367.    LREMPOW2 (-12135005234562 % 0x00100000):  long: -861570
-2368.    LREMPOW2 (-12135005234562 % 0x00200000):  long: -861570
-2369.    LREMPOW2 (-12135005234562 % 0x00400000):  long: -2958722
-2370.    LREMPOW2 (-12135005234562 % 0x00800000):  long: -2958722
-2371.    LREMPOW2 (-12135005234562 % 0x01000000):  long: -11347330
-2372.    LREMPOW2 (-12135005234562 % 0x02000000):  long: -11347330
-2373.    LREMPOW2 (-12135005234562 % 0x04000000):  long: -44901762
-2374.    LREMPOW2 (-12135005234562 % 0x08000000):  long: -112010626
-2375.    LREMPOW2 (-12135005234562 % 0x10000000):  long: -112010626
-2376.    LREMPOW2 (-12135005234562 % 0x20000000):  long: -112010626
-2377.    LREMPOW2 (-12135005234562 % 0x40000000):  long: -648881538
-2378.    LREMPOW2 (-12135005234562 % 0x80000000):  long: -1722623362
-2379.    LREMPOW2 (-2343552355623464626 % 0x00000002):  long: 0
-2380.    LREMPOW2 (-2343552355623464626 % 0x00000004):  long: -2
-2381.    LREMPOW2 (-2343552355623464626 % 0x00000008):  long: -2
-2382.    LREMPOW2 (-2343552355623464626 % 0x00000010):  long: -2
-2383.    LREMPOW2 (-2343552355623464626 % 0x00000020):  long: -18
-2384.    LREMPOW2 (-2343552355623464626 % 0x00000040):  long: -50
-2385.    LREMPOW2 (-2343552355623464626 % 0x00000080):  long: -50
-2386.    LREMPOW2 (-2343552355623464626 % 0x00000100):  long: -178
-2387.    LREMPOW2 (-2343552355623464626 % 0x00000200):  long: -178
-2388.    LREMPOW2 (-2343552355623464626 % 0x00000400):  long: -690
-2389.    LREMPOW2 (-2343552355623464626 % 0x00000800):  long: -1714
-2390.    LREMPOW2 (-2343552355623464626 % 0x00001000):  long: -3762
-2391.    LREMPOW2 (-2343552355623464626 % 0x00002000):  long: -3762
-2392.    LREMPOW2 (-2343552355623464626 % 0x00004000):  long: -11954
-2393.    LREMPOW2 (-2343552355623464626 % 0x00008000):  long: -28338
-2394.    LREMPOW2 (-2343552355623464626 % 0x00010000):  long: -28338
-2395.    LREMPOW2 (-2343552355623464626 % 0x00020000):  long: -93874
-2396.    LREMPOW2 (-2343552355623464626 % 0x00040000):  long: -224946
-2397.    LREMPOW2 (-2343552355623464626 % 0x00080000):  long: -487090
-2398.    LREMPOW2 (-2343552355623464626 % 0x00100000):  long: -487090
-2399.    LREMPOW2 (-2343552355623464626 % 0x00200000):  long: -1535666
-2400.    LREMPOW2 (-2343552355623464626 % 0x00400000):  long: -3632818
-2401.    LREMPOW2 (-2343552355623464626 % 0x00800000):  long: -7827122
-2402.    LREMPOW2 (-2343552355623464626 % 0x01000000):  long: -7827122
-2403.    LREMPOW2 (-2343552355623464626 % 0x02000000):  long: -24604338
-2404.    LREMPOW2 (-2343552355623464626 % 0x04000000):  long: -24604338
-2405.    LREMPOW2 (-2343552355623464626 % 0x08000000):  long: -91713202
-2406.    LREMPOW2 (-2343552355623464626 % 0x10000000):  long: -91713202
-2407.    LREMPOW2 (-2343552355623464626 % 0x20000000):  long: -91713202
-2408.    LREMPOW2 (-2343552355623464626 % 0x40000000):  long: -628584114
-2409.    LREMPOW2 (-2343552355623464626 % 0x80000000):  long: -1702325938
-2410.    ------------------- test rem 0x10001
-2411.    IREM0X10001 (0 % 0x10001):  int: 0
-2412.    IREM0X10001 (1 % 0x10001):  int: 1
-2413.    IREM0X10001 (17 % 0x10001):  int: 17
-2414.    IREM0X10001 (123 % 0x10001):  int: 123
-2415.    IREM0X10001 (1234 % 0x10001):  int: 1234
-2416.    IREM0X10001 (13247 % 0x10001):  int: 13247
-2417.    IREM0X10001 (563467 % 0x10001):  int: 39171
-2418.    IREM0X10001 (7456774 % 0x10001):  int: 51093
-2419.    IREM0X10001 (34523525 % 0x10001):  int: 51063
-2420.    IREM0X10001 (234523456 % 0x10001):  int: 32070
-2421.    IREM0X10001 (1005234562 % 0x10001):  int: 28056
-2422.    IREM0X10001 (2147483647 % 0x10001):  int: 32768
-2423.    IREM0X10001 (-1 % 0x10001):  int: -1
-2424.    IREM0X10001 (-17 % 0x10001):  int: -17
-2425.    IREM0X10001 (-123 % 0x10001):  int: -123
-2426.    IREM0X10001 (-1234 % 0x10001):  int: -1234
-2427.    IREM0X10001 (-13247 % 0x10001):  int: -13247
-2428.    IREM0X10001 (-563467 % 0x10001):  int: -39171
-2429.    IREM0X10001 (-7456774 % 0x10001):  int: -51093
-2430.    IREM0X10001 (-34523525 % 0x10001):  int: -51063
-2431.    IREM0X10001 (-234523456 % 0x10001):  int: -32070
-2432.    IREM0X10001 (-1005234562 % 0x10001):  int: -28056
-2433.    IREM0X10001 (-2147483647 % 0x10001):  int: -32768
-2434.    IREM0X10001 (-2147483648 % 0x10001):  int: -32769
-2435.    LREM0X10001 (0 % 0x10001):  long: 0
-2436.    LREM0X10001 (1 % 0x10001):  long: 1
-2437.    LREM0X10001 (17 % 0x10001):  long: 17
-2438.    LREM0X10001 (123 % 0x10001):  long: 123
-2439.    LREM0X10001 (1234 % 0x10001):  long: 1234
-2440.    LREM0X10001 (13247 % 0x10001):  long: 13247
-2441.    LREM0X10001 (563467 % 0x10001):  long: 39171
-2442.    LREM0X10001 (7456774 % 0x10001):  long: 51093
-2443.    LREM0X10001 (34523525 % 0x10001):  long: 51063
-2444.    LREM0X10001 (234523456 % 0x10001):  long: 32070
-2445.    LREM0X10001 (1005234562 % 0x10001):  long: 28056
-2446.    LREM0X10001 (1983223864 % 0x10001):  long: 8707
-2447.    LREM0X10001 (2147483646 % 0x10001):  long: 32767
-2448.    LREM0X10001 (2147483647 % 0x10001):  long: 32768
-2449.    LREM0X10001 (2147483648 % 0x10001):  long: 32769
-2450.    LREM0X10001 (10052234562 % 0x10001):  long: 38428
-2451.    LREM0X10001 (561005234562 % 0x10001):  long: 60289
-2452.    LREM0X10001 (2100527345962 % 0x10001):  long: 41444
-2453.    LREM0X10001 (34600523456287 % 0x10001):  long: 61103
-2454.    LREM0X10001 (546805234456882 % 0x10001):  long: 50879
-2455.    LREM0X10001 (1360052334734722 % 0x10001):  long: 42538
-2456.    LREM0X10001 (23456705569626354 % 0x10001):  long: 37707
-2457.    LREM0X10001 (9223372036854775807 % 0x10001):  long: 32768
-2458.    LREM0X10001 (-1 % 0x10001):  long: -1
-2459.    LREM0X10001 (-17 % 0x10001):  long: -17
-2460.    LREM0X10001 (-123 % 0x10001):  long: -123
-2461.    LREM0X10001 (-1234 % 0x10001):  long: -1234
-2462.    LREM0X10001 (-13247 % 0x10001):  long: -13247
-2463.    LREM0X10001 (-563467 % 0x10001):  long: -39171
-2464.    LREM0X10001 (-7456774 % 0x10001):  long: -51093
-2465.    LREM0X10001 (-34523525 % 0x10001):  long: -51063
-2466.    LREM0X10001 (-234523456 % 0x10001):  long: -32070
-2467.    LREM0X10001 (-1005234562 % 0x10001):  long: -28056
-2468.    LREM0X10001 (-1983223864 % 0x10001):  long: -8707
-2469.    LREM0X10001 (-2147483647 % 0x10001):  long: -32768
-2470.    LREM0X10001 (-2147483648 % 0x10001):  long: -32769
-2471.    LREM0X10001 (-10052234562 % 0x10001):  long: -38428
-2472.    LREM0X10001 (-561005234562 % 0x10001):  long: -60289
-2473.    LREM0X10001 (-2100527345962 % 0x10001):  long: -41444
-2474.    LREM0X10001 (-34600523456287 % 0x10001):  long: -61103
-2475.    LREM0X10001 (-546805234456882 % 0x10001):  long: -50879
-2476.    LREM0X10001 (-1360052334734722 % 0x10001):  long: -42538
-2477.    LREM0X10001 (-23456705569626354 % 0x10001):  long: -37707
-2478.    LREM0X10001 (-9223372036854775807 % 0x10001):  long: -32768
-2479.    LREM0X10001 (-9223372036854775808 % 0x10001):  long: -32769
-2480.    ------------------- test ints
-2481.    TESTINT CALLED WITH int: 1
-2482.                    AND int: 2
-2483.    IADD:  int: 3
-2484.    ISUB:  int: -1
-2485.    IMUL:  int: 2
-2486.    IDIV:  int: 0
-2487.    IREM:  int: 1
-2488.    INEG:  int: -1
-2489.    ISHL:  int: 4
-2490.    ISHR:  int: 0
-2491.    IUSHR: int: 0
-2492.    IAND:  int: 0
-2493.    IOR:   int: 3
-2494.    IXOR:  int: 3
-2495.    I2L:   long: 1
-2496.    I2F:   float: 1065353216
-2497.    I2D:   double: 4607182418800017408
-2498.    INT2BYTE: byte: 1
-2499.    INT2CHAR: char: 1
-2500.    INT2SHORT: short: 1
-2501.    not IFEQ
-2502.    not IFLT
-2503.    not IFLE
-2504.    not IF_ICMPEQ
-2505.    not IF_ICMPGT
-2506.    not IF_ICMPGE
-2507.    TESTINT CALLED WITH int: -1
-2508.                    AND int: 17
-2509.    IADD:  int: 16
-2510.    ISUB:  int: -18
-2511.    IMUL:  int: -17
-2512.    IDIV:  int: 0
-2513.    IREM:  int: -1
-2514.    INEG:  int: 1
-2515.    ISHL:  int: -131072
-2516.    ISHR:  int: -1
-2517.    IUSHR: int: 32767
-2518.    IAND:  int: 17
-2519.    IOR:   int: -1
-2520.    IXOR:  int: -18
-2521.    I2L:   long: -1
-2522.    I2F:   float: -1082130432
-2523.    I2D:   double: -4616189618054758400
-2524.    INT2BYTE: byte: -1
-2525.    INT2CHAR: char: 65535
-2526.    INT2SHORT: short: -1
-2527.    not IFEQ
-2528.    not IFGT
-2529.    not IFGE
-2530.    not IF_ICMPEQ
-2531.    not IF_ICMPGT
-2532.    not IF_ICMPGE
-2533.    TESTINT CALLED WITH int: -24351
-2534.                    AND int: 24123
-2535.    IADD:  int: -228
-2536.    ISUB:  int: -48474
-2537.    IMUL:  int: -587419173
-2538.    IDIV:  int: -1
-2539.    IREM:  int: -228
-2540.    INEG:  int: 24351
-2541.    ISHL:  int: 134217728
-2542.    ISHR:  int: -1
-2543.    IUSHR: int: 31
-2544.    IAND:  int: 33
-2545.    IOR:   int: -261
-2546.    IXOR:  int: -294
-2547.    I2L:   long: -24351
-2548.    I2F:   float: -960610816
-2549.    I2D:   double: -4550949270986948608
-2550.    INT2BYTE: byte: -31
-2551.    INT2CHAR: char: 41185
-2552.    INT2SHORT: short: -24351
-2553.    not IFEQ
-2554.    not IFGT
-2555.    not IFGE
-2556.    not IF_ICMPEQ
-2557.    not IF_ICMPGT
-2558.    not IF_ICMPGE
-2559.    TESTINT CALLED WITH int: 4918923
-2560.                    AND int: -441423
-2561.    IADD:  int: 4477500
-2562.    ISUB:  int: 5360346
-2563.    IMUL:  int: 1927704347
-2564.    IDIV:  int: -11
-2565.    IREM:  int: 63270
-2566.    INEG:  int: -4918923
-2567.    ISHL:  int: 487981056
-2568.    ISHR:  int: 37
-2569.    IUSHR: int: 37
-2570.    IAND:  int: 4784769
-2571.    IOR:   int: -307269
-2572.    IXOR:  int: -5092038
-2573.    I2L:   long: 4918923
-2574.    I2F:   float: 1251351830
-2575.    I2D:   double: 4707039664328933376
-2576.    INT2BYTE: byte: -117
-2577.    INT2CHAR: char: 3723
-2578.    INT2SHORT: short: 3723
-2579.    not IFEQ
-2580.    not IFLT
-2581.    not IFLE
-2582.    not IF_ICMPEQ
-2583.    not IF_ICMPLT
-2584.    not IF_ICMPLE
-2585.    TESTINT CALLED WITH int: 0
-2586.                    AND int: 0
-2587.    IADD:  int: 0
-2588.    ISUB:  int: 0
-2589.    IMUL:  int: 0
-2590.    divison by zero
-2591.    divison by zero
-2592.    INEG:  int: 0
-2593.    ISHL:  int: 0
-2594.    ISHR:  int: 0
-2595.    IUSHR: int: 0
-2596.    IAND:  int: 0
-2597.    IOR:   int: 0
-2598.    IXOR:  int: 0
-2599.    I2L:   long: 0
-2600.    I2F:   float: 0
-2601.    I2D:   double: 0
-2602.    INT2BYTE: byte: 0
-2603.    INT2CHAR: char: 0
-2604.    INT2SHORT: short: 0
-2605.    not IFNE
-2606.    not IFLT
-2607.    not IFGT
-2608.    not IF_ICMPNE
-2609.    not IF_ICMPLT
-2610.    not IF_ICMPGT
-2611.    TESTINT CALLED WITH int: -1
-2612.                    AND int: -1
-2613.    IADD:  int: -2
-2614.    ISUB:  int: 0
-2615.    IMUL:  int: 1
-2616.    IDIV:  int: 1
-2617.    IREM:  int: 0
-2618.    INEG:  int: 1
-2619.    ISHL:  int: -2147483648
-2620.    ISHR:  int: -1
-2621.    IUSHR: int: 1
-2622.    IAND:  int: -1
-2623.    IOR:   int: -1
-2624.    IXOR:  int: 0
-2625.    I2L:   long: -1
-2626.    I2F:   float: -1082130432
-2627.    I2D:   double: -4616189618054758400
-2628.    INT2BYTE: byte: -1
-2629.    INT2CHAR: char: 65535
-2630.    INT2SHORT: short: -1
-2631.    not IFEQ
-2632.    not IFGT
-2633.    not IFGE
-2634.    not IF_ICMPNE
-2635.    not IF_ICMPLT
-2636.    not IF_ICMPGT
-2637.    TESTINT CALLED WITH int: 1423487
-2638.                    AND int: 123444444
-2639.    IADD:  int: 124867931
-2640.    ISUB:  int: -122020957
-2641.    IMUL:  int: 1564274980
-2642.    IDIV:  int: 0
-2643.    IREM:  int: 1423487
-2644.    INEG:  int: -1423487
-2645.    ISHL:  int: -268435456
-2646.    ISHR:  int: 0
-2647.    IUSHR: int: 0
-2648.    IAND:  int: 1153116
-2649.    IOR:   int: 123714815
-2650.    IXOR:  int: 122561699
-2651.    I2L:   long: 1423487
-2652.    I2F:   float: 1236124664
-2653.    I2D:   double: 4698864641831337984
-2654.    INT2BYTE: byte: 127
-2655.    INT2CHAR: char: 47231
-2656.    INT2SHORT: short: -18305
-2657.    not IFEQ
-2658.    not IFLT
-2659.    not IFLE
-2660.    not IF_ICMPEQ
-2661.    not IF_ICMPGT
-2662.    not IF_ICMPGE
-2663.    TESTINT CALLED WITH int: 2147483647
-2664.                    AND int: 1
-2665.    IADD:  int: -2147483648
-2666.    ISUB:  int: 2147483646
-2667.    IMUL:  int: 2147483647
-2668.    IDIV:  int: 2147483647
-2669.    IREM:  int: 0
-2670.    INEG:  int: -2147483647
-2671.    ISHL:  int: -2
-2672.    ISHR:  int: 1073741823
-2673.    IUSHR: int: 1073741823
-2674.    IAND:  int: 1
-2675.    IOR:   int: 2147483647
-2676.    IXOR:  int: 2147483646
-2677.    I2L:   long: 2147483647
-2678.    I2F:   float: 1325400064
-2679.    I2D:   double: 4746794007244308480
-2680.    INT2BYTE: byte: -1
-2681.    INT2CHAR: char: 65535
-2682.    INT2SHORT: short: -1
-2683.    not IFEQ
-2684.    not IFLT
-2685.    not IFLE
-2686.    not IF_ICMPEQ
-2687.    not IF_ICMPLT
-2688.    not IF_ICMPLE
-2689.    TESTINT CALLED WITH int: 0
-2690.                    AND int: 2147483647
-2691.    IADD:  int: 2147483647
-2692.    ISUB:  int: -2147483647
-2693.    IMUL:  int: 0
-2694.    IDIV:  int: 0
-2695.    IREM:  int: 0
-2696.    INEG:  int: 0
-2697.    ISHL:  int: 0
-2698.    ISHR:  int: 0
-2699.    IUSHR: int: 0
-2700.    IAND:  int: 0
-2701.    IOR:   int: 2147483647
-2702.    IXOR:  int: 2147483647
-2703.    I2L:   long: 0
-2704.    I2F:   float: 0
-2705.    I2D:   double: 0
-2706.    INT2BYTE: byte: 0
-2707.    INT2CHAR: char: 0
-2708.    INT2SHORT: short: 0
-2709.    not IFNE
-2710.    not IFLT
-2711.    not IFGT
-2712.    not IF_ICMPEQ
-2713.    not IF_ICMPGT
-2714.    not IF_ICMPGE
-2715.    TESTINT CALLED WITH int: 13107
-2716.                    AND int: 143444
-2717.    IADD:  int: 156551
-2718.    ISUB:  int: -130337
-2719.    IMUL:  int: 1880120508
-2720.    IDIV:  int: 0
-2721.    IREM:  int: 13107
-2722.    INEG:  int: -13107
-2723.    ISHL:  int: 858783744
-2724.    ISHR:  int: 0
-2725.    IUSHR: int: 0
-2726.    IAND:  int: 12304
-2727.    IOR:   int: 144247
-2728.    IXOR:  int: 131943
-2729.    I2L:   long: 13107
-2730.    I2F:   float: 1179438080
-2731.    I2D:   double: 4668431263781093376
-2732.    INT2BYTE: byte: 51
-2733.    INT2CHAR: char: 13107
-2734.    INT2SHORT: short: 13107
-2735.    not IFEQ
-2736.    not IFLT
-2737.    not IFLE
-2738.    not IF_ICMPEQ
-2739.    not IF_ICMPGT
-2740.    not IF_ICMPGE
-2741.    TESTINT CALLED WITH int: 4444441
-2742.                    AND int: 12342
-2743.    IADD:  int: 4456783
-2744.    ISUB:  int: 4432099
-2745.    IMUL:  int: -981284026
-2746.    IDIV:  int: 360
-2747.    IREM:  int: 1321
-2748.    INEG:  int: -4444441
-2749.    ISHL:  int: 1178599424
-2750.    ISHR:  int: 1
-2751.    IUSHR: int: 1
-2752.    IAND:  int: 4112
-2753.    IOR:   int: 4452671
-2754.    IXOR:  int: 4448559
-2755.    I2L:   long: 4444441
-2756.    I2F:   float: 1250402866
-2757.    I2D:   double: 4706530193160798208
-2758.    INT2BYTE: byte: 25
-2759.    INT2CHAR: char: 53529
-2760.    INT2SHORT: short: -12007
-2761.    not IFEQ
-2762.    not IFLT
-2763.    not IFLE
-2764.    not IF_ICMPEQ
-2765.    not IF_ICMPLT
-2766.    not IF_ICMPLE
-2767.    ------------------- test longs
-2768.    TESTLONG called with long: 1
-2769.                     AND long: 2
-2770.    LADD:  long: 3
-2771.    LSUB:  long: -1
-2772.    LMUL:  long: 2
-2773.    LDIV:  long: 0
-2774.    LREM:  long: 1
-2775.    LNEG:  long: -1
-2776.    LSHL:  long: 4
-2777.    LSHR:  long: 0
-2778.    LUSHR: long: 0
-2779.    LAND:  long: 0
-2780.    LOR:   long: 3
-2781.    LXOR:  long: 3
-2782.    L2I:   int: 1
-2783.    L2F:   float: 1065353216
-2784.    L2D:   double: 4607182418800017408
-2785.    LCMP a == b : false
-2786.    LCMP a != b : true
-2787.    LCMP a <  b : true
-2788.    LCMP a <= b : true
-2789.    LCMP a >  b : false
-2790.    LCMP a >= b : false
-2791.    not IF_LCMPNE
-2792.    not IF_LCMPLT
-2793.    not IF_LCMPLE
-2794.    TESTLONG called with long: -1
-2795.                     AND long: 17
-2796.    LADD:  long: 16
-2797.    LSUB:  long: -18
-2798.    LMUL:  long: -17
-2799.    LDIV:  long: 0
-2800.    LREM:  long: -1
-2801.    LNEG:  long: 1
-2802.    LSHL:  long: -131072
-2803.    LSHR:  long: -1
-2804.    LUSHR: long: 140737488355327
-2805.    LAND:  long: 17
-2806.    LOR:   long: -1
-2807.    LXOR:  long: -18
-2808.    L2I:   int: -1
-2809.    L2F:   float: -1082130432
-2810.    L2D:   double: -4616189618054758400
-2811.    LCMP a == b : false
-2812.    LCMP a != b : true
-2813.    LCMP a <  b : true
-2814.    LCMP a <= b : true
-2815.    LCMP a >  b : false
-2816.    LCMP a >= b : false
-2817.    not IF_LCMPNE
-2818.    not IF_LCMPLT
-2819.    not IF_LCMPLE
-2820.    TESTLONG called with long: -24351
-2821.                     AND long: 24123
-2822.    LADD:  long: -228
-2823.    LSUB:  long: -48474
-2824.    LMUL:  long: -587419173
-2825.    LDIV:  long: -1
-2826.    LREM:  long: -228
-2827.    LNEG:  long: 24351
-2828.    LSHL:  long: 576460752303423488
-2829.    LSHR:  long: -1
-2830.    LUSHR: long: 31
-2831.    LAND:  long: 33
-2832.    LOR:   long: -261
-2833.    LXOR:  long: -294
-2834.    L2I:   int: -24351
-2835.    L2F:   float: -960610816
-2836.    L2D:   double: -4550949270986948608
-2837.    LCMP a == b : false
-2838.    LCMP a != b : true
-2839.    LCMP a <  b : true
-2840.    LCMP a <= b : true
-2841.    LCMP a >  b : false
-2842.    LCMP a >= b : false
-2843.    not IF_LCMPNE
-2844.    not IF_LCMPLT
-2845.    not IF_LCMPLE
-2846.    TESTLONG called with long: 4918923241323
-2847.                     AND long: -4423423234231423
-2848.    LADD:  long: -4418504310990100
-2849.    LSUB:  long: 4428342157472746
-2850.    LMUL:  long: -4222930371437023765
-2851.    LDIV:  long: 0
-2852.    LREM:  long: 4918923241323
-2853.    LNEG:  long: -4918923241323
-2854.    LSHL:  long: 9837846482646
-2855.    LSHR:  long: 2459461620661
-2856.    LUSHR: long: 2459461620661
-2857.    LAND:  long: 451041567489
-2858.    LOR:   long: -4418955352557589
-2859.    LXOR:  long: -4419406394125078
-2860.    L2I:   int: 1185687403
-2861.    L2F:   float: 1418668246
-2862.    L2D:   double: 4796866980921322496
-2863.    LCMP a == b : false
-2864.    LCMP a != b : true
-2865.    LCMP a <  b : false
-2866.    LCMP a <= b : false
-2867.    LCMP a >  b : true
-2868.    LCMP a >= b : true
-2869.    not IF_LCMPNE
-2870.    not IF_LCMPGT
-2871.    not IF_LCMPGE
-2872.    TESTLONG called with long: 0
-2873.                     AND long: 0
-2874.    LADD:  long: 0
-2875.    LSUB:  long: 0
-2876.    LMUL:  long: 0
-2877.    divison by zero
-2878.    divison by zero
-2879.    LNEG:  long: 0
-2880.    LSHL:  long: 0
-2881.    LSHR:  long: 0
-2882.    LUSHR: long: 0
-2883.    LAND:  long: 0
-2884.    LOR:   long: 0
-2885.    LXOR:  long: 0
-2886.    L2I:   int: 0
-2887.    L2F:   float: 0
-2888.    L2D:   double: 0
-2889.    LCMP a == b : true
-2890.    LCMP a != b : false
-2891.    LCMP a <  b : false
-2892.    LCMP a <= b : true
-2893.    LCMP a >  b : false
-2894.    LCMP a >= b : true
-2895.    not IF_LCMPEQ
-2896.    not IF_LCMPLE
-2897.    not IF_LCMPGE
-2898.    TESTLONG called with long: -1
-2899.                     AND long: -1
-2900.    LADD:  long: -2
-2901.    LSUB:  long: 0
-2902.    LMUL:  long: 1
-2903.    LDIV:  long: 1
-2904.    LREM:  long: 0
-2905.    LNEG:  long: 1
-2906.    LSHL:  long: -9223372036854775808
-2907.    LSHR:  long: -1
-2908.    LUSHR: long: 1
-2909.    LAND:  long: -1
-2910.    LOR:   long: -1
-2911.    LXOR:  long: 0
-2912.    L2I:   int: -1
-2913.    L2F:   float: -1082130432
-2914.    L2D:   double: -4616189618054758400
-2915.    LCMP a == b : true
-2916.    LCMP a != b : false
-2917.    LCMP a <  b : false
-2918.    LCMP a <= b : true
-2919.    LCMP a >  b : false
-2920.    LCMP a >= b : true
-2921.    not IF_LCMPEQ
-2922.    not IF_LCMPLE
-2923.    not IF_LCMPGE
-2924.    TESTLONG called with long: 1423487
-2925.                     AND long: 123444442344
-2926.    LADD:  long: 123445865831
-2927.    LSUB:  long: -123443018857
-2928.    LMUL:  long: 175721558898933528
-2929.    LDIV:  long: 0
-2930.    LREM:  long: 1423487
-2931.    LNEG:  long: -1423487
-2932.    LSHL:  long: 1565140508487974912
-2933.    LSHR:  long: 0
-2934.    LUSHR: long: 0
-2935.    LAND:  long: 1355880
-2936.    LOR:   long: 123444509951
-2937.    LXOR:  long: 123443154071
-2938.    L2I:   int: 1423487
-2939.    L2F:   float: 1236124664
-2940.    L2D:   double: 4698864641831337984
-2941.    LCMP a == b : false
-2942.    LCMP a != b : true
-2943.    LCMP a <  b : true
-2944.    LCMP a <= b : true
-2945.    LCMP a >  b : false
-2946.    LCMP a >= b : false
-2947.    not IF_LCMPNE
-2948.    not IF_LCMPLT
-2949.    not IF_LCMPLE
-2950.    TESTLONG called with long: 9223372036854775807
-2951.                     AND long: 1
-2952.    LADD:  long: -9223372036854775808
-2953.    LSUB:  long: 9223372036854775806
-2954.    LMUL:  long: 9223372036854775807
-2955.    LDIV:  long: 9223372036854775807
-2956.    LREM:  long: 0
-2957.    LNEG:  long: -9223372036854775807
-2958.    LSHL:  long: -2
-2959.    LSHR:  long: 4611686018427387903
-2960.    LUSHR: long: 4611686018427387903
-2961.    LAND:  long: 1
-2962.    LOR:   long: 9223372036854775807
-2963.    LXOR:  long: 9223372036854775806
-2964.    L2I:   int: -1
-2965.    L2F:   float: 1593835520
-2966.    L2D:   double: 4890909195324358656
-2967.    LCMP a == b : false
-2968.    LCMP a != b : true
-2969.    LCMP a <  b : false
-2970.    LCMP a <= b : false
-2971.    LCMP a >  b : true
-2972.    LCMP a >= b : true
-2973.    not IF_LCMPNE
-2974.    not IF_LCMPGT
-2975.    not IF_LCMPGE
-2976.    TESTLONG called with long: 0
-2977.                     AND long: 9223372036854775807
-2978.    LADD:  long: 9223372036854775807
-2979.    LSUB:  long: -9223372036854775807
-2980.    LMUL:  long: 0
-2981.    LDIV:  long: 0
-2982.    LREM:  long: 0
-2983.    LNEG:  long: 0
-2984.    LSHL:  long: 0
-2985.    LSHR:  long: 0
-2986.    LUSHR: long: 0
-2987.    LAND:  long: 0
-2988.    LOR:   long: 9223372036854775807
-2989.    LXOR:  long: 9223372036854775807
-2990.    L2I:   int: 0
-2991.    L2F:   float: 0
-2992.    L2D:   double: 0
-2993.    LCMP a == b : false
-2994.    LCMP a != b : true
-2995.    LCMP a <  b : true
-2996.    LCMP a <= b : true
-2997.    LCMP a >  b : false
-2998.    LCMP a >= b : false
-2999.    not IF_LCMPNE
-3000.    not IF_LCMPLT
-3001.    not IF_LCMPLE
-3002.    TESTLONG called with long: 13107
-3003.                     AND long: 143444
-3004.    LADD:  long: 156551
-3005.    LSUB:  long: -130337
-3006.    LMUL:  long: 1880120508
-3007.    LDIV:  long: 0
-3008.    LREM:  long: 13107
-3009.    LNEG:  long: -13107
-3010.    LSHL:  long: 13743685632
-3011.    LSHR:  long: 0
-3012.    LUSHR: long: 0
-3013.    LAND:  long: 12304
-3014.    LOR:   long: 144247
-3015.    LXOR:  long: 131943
-3016.    L2I:   int: 13107
-3017.    L2F:   float: 1179438080
-3018.    L2D:   double: 4668431263781093376
-3019.    LCMP a == b : false
-3020.    LCMP a != b : true
-3021.    LCMP a <  b : true
-3022.    LCMP a <= b : true
-3023.    LCMP a >  b : false
-3024.    LCMP a >= b : false
-3025.    not IF_LCMPNE
-3026.    not IF_LCMPLT
-3027.    not IF_LCMPLE
-3028.    TESTLONG called with long: 4444441
-3029.                     AND long: 12342
-3030.    LADD:  long: 4456783
-3031.    LSUB:  long: 4432099
-3032.    LMUL:  long: 54853290822
-3033.    LDIV:  long: 360
-3034.    LREM:  long: 1321
-3035.    LNEG:  long: -4444441
-3036.    LSHL:  long: 5062045981164437504
-3037.    LSHR:  long: 0
-3038.    LUSHR: long: 0
-3039.    LAND:  long: 4112
-3040.    LOR:   long: 4452671
-3041.    LXOR:  long: 4448559
-3042.    L2I:   int: 4444441
-3043.    L2F:   float: 1250402866
-3044.    L2D:   double: 4706530193160798208
-3045.    LCMP a == b : false
-3046.    LCMP a != b : true
-3047.    LCMP a <  b : false
-3048.    LCMP a <= b : false
-3049.    LCMP a >  b : true
-3050.    LCMP a >= b : true
-3051.    not IF_LCMPNE
-3052.    not IF_LCMPGT
-3053.    not IF_LCMPGE
-3054.    ------------------- test floats
-3055.    TESTFLOAT called with float: 1065353216
-3056.                      AND float: 1073917985
-3057.    FADD:  float: 1078112289
-3058.    FSUB:  float: -1081778110
-3059.    FMUL:  float: 1073917985
-3060.    FDIV:  float: 1056619533
-3061.    FREM:  float: 1065353216
-3062.    F2I:   int: 1
-3063.    F2L:   long: 1
-3064.    F2D:   double: 4607182418800017408
-3065.    FCMP a!=b
-3066.    FCMP a<b
-3067.    FCMP a<=b
-3068.    TESTFLOAT called with float: -1080167498
-3069.                      AND float: 1099662623
-3070.    FADD:  float: 1099015652
-3071.    FSUB:  float: -1047174054
-3072.    FMUL:  float: -1045681427
-3073.    FDIV:  float: -1114576645
-3074.    FREM:  float: -1080167498
-3075.    F2I:   int: -1
-3076.    F2L:   long: -1
-3077.    F2D:   double: -4615135775887982592
-3078.    FCMP a!=b
-3079.    FCMP a<b
-3080.    FCMP a<=b
-3081.    TESTFLOAT called with float: -960610816
-3082.                      AND float: 1186756096
-3083.    FADD:  float: -1016856576
-3084.    FSUB:  float: -952280576
-3085.    FMUL:  float: -838070983
-3086.    FDIV:  float: -1082051147
-3087.    FREM:  float: -1016856576
-3088.    F2I:   int: -24351
-3089.    F2L:   long: -24351
-3090.    F2D:   double: -4550949270986948608
-3091.    FCMP a!=b
-3092.    FCMP a<b
-3093.    FCMP a<=b
-3094.    TESTFLOAT called with float: 1036831949
-3095.                      AND float: 1151033344
-3096.    FADD:  float: 1151034163
-3097.    FSUB:  float: -996451123
-3098.    FMUL:  float: 1123588506
-3099.    FDIV:  float: 950581132
-3100.    FREM:  float: 1036831949
-3101.    F2I:   int: 0
-3102.    F2L:   long: 0
-3103.    F2D:   double: 4591870180174331904
-3104.    FCMP a!=b
-3105.    FCMP a<b
-3106.    FCMP a<=b
-3107.    TESTFLOAT called with float: 0
-3108.                      AND float: -1005921678
-3109.    FADD:  float: -1005921678
-3110.    FSUB:  float: 1141561970
-3111.    FMUL:  float: -2147483648
-3112.    FDIV:  float: -2147483648
-3113.    FREM:  float: 0
-3114.    F2I:   int: 0
-3115.    F2L:   long: 0
-3116.    F2D:   double: 0
-3117.    FCMP a!=b
-3118.    FCMP a>b
-3119.    FCMP a>=b
-3120.    TESTFLOAT called with float: 1117388800
-3121.                      AND float: -1005928448
-3122.    FADD:  float: -1007747072
-3123.    FSUB:  float: 1142816768
-3124.    FMUL:  float: -953749760
-3125.    FDIV:  float: -1106374265
-3126.    FREM:  float: 1117388800
-3127.    F2I:   int: 77
-3128.    F2L:   long: 77
-3129.    F2D:   double: 4635118810238550016
-3130.    FCMP a!=b
-3131.    FCMP a>b
-3132.    FCMP a>=b
-3133.    TESTFLOAT called with float: 1325400059
-3134.                      AND float: -922251744
-3135.    FADD:  float: 1325395721
-3136.    FSUB:  float: 1325402230
-3137.    FMUL:  float: -662204899
-3138.    FDIV:  float: -982402220
-3139.    FREM:  float: 1220539712
-3140.    F2I:   int: 2147483008
-3141.    F2L:   long: 2147483008
-3142.    F2D:   double: 4746794004564148224
-3143.    FCMP a!=b
-3144.    FCMP a>b
-3145.    FCMP a>=b
-3146.    ------------------- test doubles
-3147.    TESTDOUBLE called with double: 4607182418800017408
-3148.                       AND double: 4611780594144116736
-3149.    DADD:  double: 4614032393957801984
-3150.    DSUB:  double: -4616000466621300736
-3151.    DMUL:  double: 4611780594144116736
-3152.    DDIV:  double: 4602493558224229689
-3153.    DREM:  double: 4607182418800017408
-3154.    D2I:   int: 1
-3155.    D2L:   long: 1
-3156.    D2F:   float: 1065353216
-3157.    DCMP a!=b
-3158.    DCMP a<b
-3159.    DCMP a<=b
-3160.    TESTDOUBLE called with double: -4615135775887982592
-3161.                       AND double: 4625602141426286592
-3162.    DADD:  double: 4625254801314152448
-3163.    DSUB:  double: -4597422555316355072
-3164.    DMUL:  double: -4596621207431527808
-3165.    DDIV:  double: -4633609045894396972
-3166.    DREM:  double: -4615135775887982592
-3167.    D2I:   int: -1
-3168.    D2L:   long: -1
-3169.    D2F:   float: -1080167498
-3170.    DCMP a!=b
-3171.    DCMP a<b
-3172.    DCMP a<=b
-3173.    TESTDOUBLE called with double: -4550949270986948608
-3174.                       AND double: 4672360093705043968
-3175.    DADD:  double: -4581145983454281728
-3176.    DSUB:  double: -4546477007440969728
-3177.    DMUL:  double: -4485161199314403328
-3178.    DDIV:  double: -4616147052009281450
-3179.    DREM:  double: -4581145983454281728
-3180.    D2I:   int: -24351
-3181.    D2L:   long: -24351
-3182.    D2F:   float: -960610816
-3183.    DCMP a!=b
-3184.    DCMP a<b
-3185.    DCMP a<=b
-3186.    TESTDOUBLE called with double: 4591870180174331904
-3187.                       AND double: 4653181587259654144
-3188.    DADD:  double: 4653182027064311808
-3189.    DSUB:  double: -4570190889399779328
-3190.    DMUL:  double: 4638447251968491520
-3191.    DDIV:  double: 4545564625306141371
-3192.    DREM:  double: 4591870180174331904
-3193.    D2I:   int: 0
-3194.    D2L:   long: 0
-3195.    D2F:   float: 1036831949
-3196.    DCMP a!=b
-3197.    DCMP a<b
-3198.    DCMP a<=b
-3199.    TESTDOUBLE called with double: 0
-3200.                       AND double: -4575275354792394752
-3201.    DADD:  double: -4575275354792394752
-3202.    DSUB:  double: 4648096682062381056
-3203.    DMUL:  double: -9223372036854775808
-3204.    DDIV:  double: -9223372036854775808
-3205.    DREM:  double: 0
-3206.    D2I:   int: 0
-3207.    D2L:   long: 0
-3208.    D2F:   float: 0
-3209.    DCMP a!=b
-3210.    DCMP a>b
-3211.    DCMP a>=b
-3212.    TESTDOUBLE called with double: 4635118810238550016
-3213.                       AND double: -4575278989408468992
-3214.    DADD:  double: -4576255355733934080
-3215.    DSUB:  double: 4648770346609016832
-3216.    DMUL:  double: -4547265769594945536
-3217.    DDIV:  double: -4629205426707555293
-3218.    DREM:  double: 4635118810238550016
-3219.    D2I:   int: 77
-3220.    D2L:   long: 77
-3221.    D2F:   float: 1117388800
-3222.    DCMP a!=b
-3223.    DCMP a>b
-3224.    DCMP a>=b
-3225.    TESTDOUBLE called with double: 4746794004564148224
-3226.                       AND double: -4530355401018834944
-3227.    DADD:  double: 4746791675743961088
-3228.    DSUB:  double: 4746795170316419072
-3229.    DMUL:  double: -4390743813991748608
-3230.    DDIV:  double: -4562648441847017049
-3231.    DREM:  double: 4690497534437621760
-3232.    D2I:   int: 2147483008
-3233.    D2L:   long: 2147483008
-3234.    D2F:   float: 1325400059
-3235.    DCMP a!=b
-3236.    DCMP a>b
-3237.    DCMP a>=b
-3238.    =================== end of test =========================
-3239.    
\ No newline at end of file
+1789.    ------------------- test div and rem consts
+1790.    IDIVPOW2 (17 / 0x00000002):  int: 8
+1791.    IDIVPOW2 (17 / 0x00000004):  int: 4
+1792.    IDIVPOW2 (17 / 0x00000008):  int: 2
+1793.    IDIVPOW2 (17 / 0x00000010):  int: 1
+1794.    IDIVPOW2 (17 / 0x00000020):  int: 0
+1795.    IDIVPOW2 (17 / 0x00000040):  int: 0
+1796.    IDIVPOW2 (17 / 0x00000080):  int: 0
+1797.    IDIVPOW2 (17 / 0x00000100):  int: 0
+1798.    IDIVPOW2 (17 / 0x00000200):  int: 0
+1799.    IDIVPOW2 (17 / 0x00000400):  int: 0
+1800.    IDIVPOW2 (17 / 0x00000800):  int: 0
+1801.    IDIVPOW2 (17 / 0x00001000):  int: 0
+1802.    IDIVPOW2 (17 / 0x00002000):  int: 0
+1803.    IDIVPOW2 (17 / 0x00004000):  int: 0
+1804.    IDIVPOW2 (17 / 0x00008000):  int: 0
+1805.    IDIVPOW2 (17 / 0x00010000):  int: 0
+1806.    IDIVPOW2 (17 / 0x00020000):  int: 0
+1807.    IDIVPOW2 (17 / 0x00040000):  int: 0
+1808.    IDIVPOW2 (17 / 0x00080000):  int: 0
+1809.    IDIVPOW2 (17 / 0x00100000):  int: 0
+1810.    IDIVPOW2 (17 / 0x00200000):  int: 0
+1811.    IDIVPOW2 (17 / 0x00400000):  int: 0
+1812.    IDIVPOW2 (17 / 0x00800000):  int: 0
+1813.    IDIVPOW2 (17 / 0x01000000):  int: 0
+1814.    IDIVPOW2 (17 / 0x02000000):  int: 0
+1815.    IDIVPOW2 (17 / 0x04000000):  int: 0
+1816.    IDIVPOW2 (17 / 0x08000000):  int: 0
+1817.    IDIVPOW2 (17 / 0x10000000):  int: 0
+1818.    IDIVPOW2 (17 / 0x20000000):  int: 0
+1819.    IDIVPOW2 (17 / 0x40000000):  int: 0
+1820.    IDIVPOW2 (17 / 0x80000000):  int: 0
+1821.    IREMPOW2 (17 % 0x00000002):  int: 1
+1822.    IREMPOW2 (17 % 0x00000004):  int: 1
+1823.    IREMPOW2 (17 % 0x00000008):  int: 1
+1824.    IREMPOW2 (17 % 0x00000010):  int: 1
+1825.    IREMPOW2 (17 % 0x00000020):  int: 17
+1826.    IREMPOW2 (17 % 0x00000040):  int: 17
+1827.    IREMPOW2 (17 % 0x00000080):  int: 17
+1828.    IREMPOW2 (17 % 0x00000100):  int: 17
+1829.    IREMPOW2 (17 % 0x00000200):  int: 17
+1830.    IREMPOW2 (17 % 0x00000400):  int: 17
+1831.    IREMPOW2 (17 % 0x00000800):  int: 17
+1832.    IREMPOW2 (17 % 0x00001000):  int: 17
+1833.    IREMPOW2 (17 % 0x00002000):  int: 17
+1834.    IREMPOW2 (17 % 0x00004000):  int: 17
+1835.    IREMPOW2 (17 % 0x00008000):  int: 17
+1836.    IREMPOW2 (17 % 0x00010000):  int: 17
+1837.    IREMPOW2 (17 % 0x00020000):  int: 17
+1838.    IREMPOW2 (17 % 0x00040000):  int: 17
+1839.    IREMPOW2 (17 % 0x00080000):  int: 17
+1840.    IREMPOW2 (17 % 0x00100000):  int: 17
+1841.    IREMPOW2 (17 % 0x00200000):  int: 17
+1842.    IREMPOW2 (17 % 0x00400000):  int: 17
+1843.    IREMPOW2 (17 % 0x00800000):  int: 17
+1844.    IREMPOW2 (17 % 0x01000000):  int: 17
+1845.    IREMPOW2 (17 % 0x02000000):  int: 17
+1846.    IREMPOW2 (17 % 0x04000000):  int: 17
+1847.    IREMPOW2 (17 % 0x08000000):  int: 17
+1848.    IREMPOW2 (17 % 0x10000000):  int: 17
+1849.    IREMPOW2 (17 % 0x20000000):  int: 17
+1850.    IREMPOW2 (17 % 0x40000000):  int: 17
+1851.    IREMPOW2 (17 % 0x80000000):  int: 17
+1852.    IDIVPOW2 (12347 / 0x00000002):  int: 6173
+1853.    IDIVPOW2 (12347 / 0x00000004):  int: 3086
+1854.    IDIVPOW2 (12347 / 0x00000008):  int: 1543
+1855.    IDIVPOW2 (12347 / 0x00000010):  int: 771
+1856.    IDIVPOW2 (12347 / 0x00000020):  int: 385
+1857.    IDIVPOW2 (12347 / 0x00000040):  int: 192
+1858.    IDIVPOW2 (12347 / 0x00000080):  int: 96
+1859.    IDIVPOW2 (12347 / 0x00000100):  int: 48
+1860.    IDIVPOW2 (12347 / 0x00000200):  int: 24
+1861.    IDIVPOW2 (12347 / 0x00000400):  int: 12
+1862.    IDIVPOW2 (12347 / 0x00000800):  int: 6
+1863.    IDIVPOW2 (12347 / 0x00001000):  int: 3
+1864.    IDIVPOW2 (12347 / 0x00002000):  int: 1
+1865.    IDIVPOW2 (12347 / 0x00004000):  int: 0
+1866.    IDIVPOW2 (12347 / 0x00008000):  int: 0
+1867.    IDIVPOW2 (12347 / 0x00010000):  int: 0
+1868.    IDIVPOW2 (12347 / 0x00020000):  int: 0
+1869.    IDIVPOW2 (12347 / 0x00040000):  int: 0
+1870.    IDIVPOW2 (12347 / 0x00080000):  int: 0
+1871.    IDIVPOW2 (12347 / 0x00100000):  int: 0
+1872.    IDIVPOW2 (12347 / 0x00200000):  int: 0
+1873.    IDIVPOW2 (12347 / 0x00400000):  int: 0
+1874.    IDIVPOW2 (12347 / 0x00800000):  int: 0
+1875.    IDIVPOW2 (12347 / 0x01000000):  int: 0
+1876.    IDIVPOW2 (12347 / 0x02000000):  int: 0
+1877.    IDIVPOW2 (12347 / 0x04000000):  int: 0
+1878.    IDIVPOW2 (12347 / 0x08000000):  int: 0
+1879.    IDIVPOW2 (12347 / 0x10000000):  int: 0
+1880.    IDIVPOW2 (12347 / 0x20000000):  int: 0
+1881.    IDIVPOW2 (12347 / 0x40000000):  int: 0
+1882.    IDIVPOW2 (12347 / 0x80000000):  int: 0
+1883.    IREMPOW2 (12347 % 0x00000002):  int: 1
+1884.    IREMPOW2 (12347 % 0x00000004):  int: 3
+1885.    IREMPOW2 (12347 % 0x00000008):  int: 3
+1886.    IREMPOW2 (12347 % 0x00000010):  int: 11
+1887.    IREMPOW2 (12347 % 0x00000020):  int: 27
+1888.    IREMPOW2 (12347 % 0x00000040):  int: 59
+1889.    IREMPOW2 (12347 % 0x00000080):  int: 59
+1890.    IREMPOW2 (12347 % 0x00000100):  int: 59
+1891.    IREMPOW2 (12347 % 0x00000200):  int: 59
+1892.    IREMPOW2 (12347 % 0x00000400):  int: 59
+1893.    IREMPOW2 (12347 % 0x00000800):  int: 59
+1894.    IREMPOW2 (12347 % 0x00001000):  int: 59
+1895.    IREMPOW2 (12347 % 0x00002000):  int: 4155
+1896.    IREMPOW2 (12347 % 0x00004000):  int: 12347
+1897.    IREMPOW2 (12347 % 0x00008000):  int: 12347
+1898.    IREMPOW2 (12347 % 0x00010000):  int: 12347
+1899.    IREMPOW2 (12347 % 0x00020000):  int: 12347
+1900.    IREMPOW2 (12347 % 0x00040000):  int: 12347
+1901.    IREMPOW2 (12347 % 0x00080000):  int: 12347
+1902.    IREMPOW2 (12347 % 0x00100000):  int: 12347
+1903.    IREMPOW2 (12347 % 0x00200000):  int: 12347
+1904.    IREMPOW2 (12347 % 0x00400000):  int: 12347
+1905.    IREMPOW2 (12347 % 0x00800000):  int: 12347
+1906.    IREMPOW2 (12347 % 0x01000000):  int: 12347
+1907.    IREMPOW2 (12347 % 0x02000000):  int: 12347
+1908.    IREMPOW2 (12347 % 0x04000000):  int: 12347
+1909.    IREMPOW2 (12347 % 0x08000000):  int: 12347
+1910.    IREMPOW2 (12347 % 0x10000000):  int: 12347
+1911.    IREMPOW2 (12347 % 0x20000000):  int: 12347
+1912.    IREMPOW2 (12347 % 0x40000000):  int: 12347
+1913.    IREMPOW2 (12347 % 0x80000000):  int: 12347
+1914.    IDIVPOW2 (8893427 / 0x00000002):  int: 4446713
+1915.    IDIVPOW2 (8893427 / 0x00000004):  int: 2223356
+1916.    IDIVPOW2 (8893427 / 0x00000008):  int: 1111678
+1917.    IDIVPOW2 (8893427 / 0x00000010):  int: 555839
+1918.    IDIVPOW2 (8893427 / 0x00000020):  int: 277919
+1919.    IDIVPOW2 (8893427 / 0x00000040):  int: 138959
+1920.    IDIVPOW2 (8893427 / 0x00000080):  int: 69479
+1921.    IDIVPOW2 (8893427 / 0x00000100):  int: 34739
+1922.    IDIVPOW2 (8893427 / 0x00000200):  int: 17369
+1923.    IDIVPOW2 (8893427 / 0x00000400):  int: 8684
+1924.    IDIVPOW2 (8893427 / 0x00000800):  int: 4342
+1925.    IDIVPOW2 (8893427 / 0x00001000):  int: 2171
+1926.    IDIVPOW2 (8893427 / 0x00002000):  int: 1085
+1927.    IDIVPOW2 (8893427 / 0x00004000):  int: 542
+1928.    IDIVPOW2 (8893427 / 0x00008000):  int: 271
+1929.    IDIVPOW2 (8893427 / 0x00010000):  int: 135
+1930.    IDIVPOW2 (8893427 / 0x00020000):  int: 67
+1931.    IDIVPOW2 (8893427 / 0x00040000):  int: 33
+1932.    IDIVPOW2 (8893427 / 0x00080000):  int: 16
+1933.    IDIVPOW2 (8893427 / 0x00100000):  int: 8
+1934.    IDIVPOW2 (8893427 / 0x00200000):  int: 4
+1935.    IDIVPOW2 (8893427 / 0x00400000):  int: 2
+1936.    IDIVPOW2 (8893427 / 0x00800000):  int: 1
+1937.    IDIVPOW2 (8893427 / 0x01000000):  int: 0
+1938.    IDIVPOW2 (8893427 / 0x02000000):  int: 0
+1939.    IDIVPOW2 (8893427 / 0x04000000):  int: 0
+1940.    IDIVPOW2 (8893427 / 0x08000000):  int: 0
+1941.    IDIVPOW2 (8893427 / 0x10000000):  int: 0
+1942.    IDIVPOW2 (8893427 / 0x20000000):  int: 0
+1943.    IDIVPOW2 (8893427 / 0x40000000):  int: 0
+1944.    IDIVPOW2 (8893427 / 0x80000000):  int: 0
+1945.    IREMPOW2 (8893427 % 0x00000002):  int: 1
+1946.    IREMPOW2 (8893427 % 0x00000004):  int: 3
+1947.    IREMPOW2 (8893427 % 0x00000008):  int: 3
+1948.    IREMPOW2 (8893427 % 0x00000010):  int: 3
+1949.    IREMPOW2 (8893427 % 0x00000020):  int: 19
+1950.    IREMPOW2 (8893427 % 0x00000040):  int: 51
+1951.    IREMPOW2 (8893427 % 0x00000080):  int: 115
+1952.    IREMPOW2 (8893427 % 0x00000100):  int: 243
+1953.    IREMPOW2 (8893427 % 0x00000200):  int: 499
+1954.    IREMPOW2 (8893427 % 0x00000400):  int: 1011
+1955.    IREMPOW2 (8893427 % 0x00000800):  int: 1011
+1956.    IREMPOW2 (8893427 % 0x00001000):  int: 1011
+1957.    IREMPOW2 (8893427 % 0x00002000):  int: 5107
+1958.    IREMPOW2 (8893427 % 0x00004000):  int: 13299
+1959.    IREMPOW2 (8893427 % 0x00008000):  int: 13299
+1960.    IREMPOW2 (8893427 % 0x00010000):  int: 46067
+1961.    IREMPOW2 (8893427 % 0x00020000):  int: 111603
+1962.    IREMPOW2 (8893427 % 0x00040000):  int: 242675
+1963.    IREMPOW2 (8893427 % 0x00080000):  int: 504819
+1964.    IREMPOW2 (8893427 % 0x00100000):  int: 504819
+1965.    IREMPOW2 (8893427 % 0x00200000):  int: 504819
+1966.    IREMPOW2 (8893427 % 0x00400000):  int: 504819
+1967.    IREMPOW2 (8893427 % 0x00800000):  int: 504819
+1968.    IREMPOW2 (8893427 % 0x01000000):  int: 8893427
+1969.    IREMPOW2 (8893427 % 0x02000000):  int: 8893427
+1970.    IREMPOW2 (8893427 % 0x04000000):  int: 8893427
+1971.    IREMPOW2 (8893427 % 0x08000000):  int: 8893427
+1972.    IREMPOW2 (8893427 % 0x10000000):  int: 8893427
+1973.    IREMPOW2 (8893427 % 0x20000000):  int: 8893427
+1974.    IREMPOW2 (8893427 % 0x40000000):  int: 8893427
+1975.    IREMPOW2 (8893427 % 0x80000000):  int: 8893427
+1976.    IDIVPOW2 (1005234562 / 0x00000002):  int: 502617281
+1977.    IDIVPOW2 (1005234562 / 0x00000004):  int: 251308640
+1978.    IDIVPOW2 (1005234562 / 0x00000008):  int: 125654320
+1979.    IDIVPOW2 (1005234562 / 0x00000010):  int: 62827160
+1980.    IDIVPOW2 (1005234562 / 0x00000020):  int: 31413580
+1981.    IDIVPOW2 (1005234562 / 0x00000040):  int: 15706790
+1982.    IDIVPOW2 (1005234562 / 0x00000080):  int: 7853395
+1983.    IDIVPOW2 (1005234562 / 0x00000100):  int: 3926697
+1984.    IDIVPOW2 (1005234562 / 0x00000200):  int: 1963348
+1985.    IDIVPOW2 (1005234562 / 0x00000400):  int: 981674
+1986.    IDIVPOW2 (1005234562 / 0x00000800):  int: 490837
+1987.    IDIVPOW2 (1005234562 / 0x00001000):  int: 245418
+1988.    IDIVPOW2 (1005234562 / 0x00002000):  int: 122709
+1989.    IDIVPOW2 (1005234562 / 0x00004000):  int: 61354
+1990.    IDIVPOW2 (1005234562 / 0x00008000):  int: 30677
+1991.    IDIVPOW2 (1005234562 / 0x00010000):  int: 15338
+1992.    IDIVPOW2 (1005234562 / 0x00020000):  int: 7669
+1993.    IDIVPOW2 (1005234562 / 0x00040000):  int: 3834
+1994.    IDIVPOW2 (1005234562 / 0x00080000):  int: 1917
+1995.    IDIVPOW2 (1005234562 / 0x00100000):  int: 958
+1996.    IDIVPOW2 (1005234562 / 0x00200000):  int: 479
+1997.    IDIVPOW2 (1005234562 / 0x00400000):  int: 239
+1998.    IDIVPOW2 (1005234562 / 0x00800000):  int: 119
+1999.    IDIVPOW2 (1005234562 / 0x01000000):  int: 59
+2000.    IDIVPOW2 (1005234562 / 0x02000000):  int: 29
+2001.    IDIVPOW2 (1005234562 / 0x04000000):  int: 14
+2002.    IDIVPOW2 (1005234562 / 0x08000000):  int: 7
+2003.    IDIVPOW2 (1005234562 / 0x10000000):  int: 3
+2004.    IDIVPOW2 (1005234562 / 0x20000000):  int: 1
+2005.    IDIVPOW2 (1005234562 / 0x40000000):  int: 0
+2006.    IDIVPOW2 (1005234562 / 0x80000000):  int: 0
+2007.    IREMPOW2 (1005234562 % 0x00000002):  int: 0
+2008.    IREMPOW2 (1005234562 % 0x00000004):  int: 2
+2009.    IREMPOW2 (1005234562 % 0x00000008):  int: 2
+2010.    IREMPOW2 (1005234562 % 0x00000010):  int: 2
+2011.    IREMPOW2 (1005234562 % 0x00000020):  int: 2
+2012.    IREMPOW2 (1005234562 % 0x00000040):  int: 2
+2013.    IREMPOW2 (1005234562 % 0x00000080):  int: 2
+2014.    IREMPOW2 (1005234562 % 0x00000100):  int: 130
+2015.    IREMPOW2 (1005234562 % 0x00000200):  int: 386
+2016.    IREMPOW2 (1005234562 % 0x00000400):  int: 386
+2017.    IREMPOW2 (1005234562 % 0x00000800):  int: 386
+2018.    IREMPOW2 (1005234562 % 0x00001000):  int: 2434
+2019.    IREMPOW2 (1005234562 % 0x00002000):  int: 2434
+2020.    IREMPOW2 (1005234562 % 0x00004000):  int: 10626
+2021.    IREMPOW2 (1005234562 % 0x00008000):  int: 10626
+2022.    IREMPOW2 (1005234562 % 0x00010000):  int: 43394
+2023.    IREMPOW2 (1005234562 % 0x00020000):  int: 43394
+2024.    IREMPOW2 (1005234562 % 0x00040000):  int: 174466
+2025.    IREMPOW2 (1005234562 % 0x00080000):  int: 174466
+2026.    IREMPOW2 (1005234562 % 0x00100000):  int: 698754
+2027.    IREMPOW2 (1005234562 % 0x00200000):  int: 698754
+2028.    IREMPOW2 (1005234562 % 0x00400000):  int: 2795906
+2029.    IREMPOW2 (1005234562 % 0x00800000):  int: 6990210
+2030.    IREMPOW2 (1005234562 % 0x01000000):  int: 15378818
+2031.    IREMPOW2 (1005234562 % 0x02000000):  int: 32156034
+2032.    IREMPOW2 (1005234562 % 0x04000000):  int: 65710466
+2033.    IREMPOW2 (1005234562 % 0x08000000):  int: 65710466
+2034.    IREMPOW2 (1005234562 % 0x10000000):  int: 199928194
+2035.    IREMPOW2 (1005234562 % 0x20000000):  int: 468363650
+2036.    IREMPOW2 (1005234562 % 0x40000000):  int: 1005234562
+2037.    IREMPOW2 (1005234562 % 0x80000000):  int: 1005234562
+2038.    IDIVPOW2 (-17 / 0x00000002):  int: -8
+2039.    IDIVPOW2 (-17 / 0x00000004):  int: -4
+2040.    IDIVPOW2 (-17 / 0x00000008):  int: -2
+2041.    IDIVPOW2 (-17 / 0x00000010):  int: -1
+2042.    IDIVPOW2 (-17 / 0x00000020):  int: 0
+2043.    IDIVPOW2 (-17 / 0x00000040):  int: 0
+2044.    IDIVPOW2 (-17 / 0x00000080):  int: 0
+2045.    IDIVPOW2 (-17 / 0x00000100):  int: 0
+2046.    IDIVPOW2 (-17 / 0x00000200):  int: 0
+2047.    IDIVPOW2 (-17 / 0x00000400):  int: 0
+2048.    IDIVPOW2 (-17 / 0x00000800):  int: 0
+2049.    IDIVPOW2 (-17 / 0x00001000):  int: 0
+2050.    IDIVPOW2 (-17 / 0x00002000):  int: 0
+2051.    IDIVPOW2 (-17 / 0x00004000):  int: 0
+2052.    IDIVPOW2 (-17 / 0x00008000):  int: 0
+2053.    IDIVPOW2 (-17 / 0x00010000):  int: 0
+2054.    IDIVPOW2 (-17 / 0x00020000):  int: 0
+2055.    IDIVPOW2 (-17 / 0x00040000):  int: 0
+2056.    IDIVPOW2 (-17 / 0x00080000):  int: 0
+2057.    IDIVPOW2 (-17 / 0x00100000):  int: 0
+2058.    IDIVPOW2 (-17 / 0x00200000):  int: 0
+2059.    IDIVPOW2 (-17 / 0x00400000):  int: 0
+2060.    IDIVPOW2 (-17 / 0x00800000):  int: 0
+2061.    IDIVPOW2 (-17 / 0x01000000):  int: 0
+2062.    IDIVPOW2 (-17 / 0x02000000):  int: 0
+2063.    IDIVPOW2 (-17 / 0x04000000):  int: 0
+2064.    IDIVPOW2 (-17 / 0x08000000):  int: 0
+2065.    IDIVPOW2 (-17 / 0x10000000):  int: 0
+2066.    IDIVPOW2 (-17 / 0x20000000):  int: 0
+2067.    IDIVPOW2 (-17 / 0x40000000):  int: 0
+2068.    IDIVPOW2 (-17 / 0x80000000):  int: 0
+2069.    IREMPOW2 (-17 % 0x00000002):  int: -1
+2070.    IREMPOW2 (-17 % 0x00000004):  int: -1
+2071.    IREMPOW2 (-17 % 0x00000008):  int: -1
+2072.    IREMPOW2 (-17 % 0x00000010):  int: -1
+2073.    IREMPOW2 (-17 % 0x00000020):  int: -17
+2074.    IREMPOW2 (-17 % 0x00000040):  int: -17
+2075.    IREMPOW2 (-17 % 0x00000080):  int: -17
+2076.    IREMPOW2 (-17 % 0x00000100):  int: -17
+2077.    IREMPOW2 (-17 % 0x00000200):  int: -17
+2078.    IREMPOW2 (-17 % 0x00000400):  int: -17
+2079.    IREMPOW2 (-17 % 0x00000800):  int: -17
+2080.    IREMPOW2 (-17 % 0x00001000):  int: -17
+2081.    IREMPOW2 (-17 % 0x00002000):  int: -17
+2082.    IREMPOW2 (-17 % 0x00004000):  int: -17
+2083.    IREMPOW2 (-17 % 0x00008000):  int: -17
+2084.    IREMPOW2 (-17 % 0x00010000):  int: -17
+2085.    IREMPOW2 (-17 % 0x00020000):  int: -17
+2086.    IREMPOW2 (-17 % 0x00040000):  int: -17
+2087.    IREMPOW2 (-17 % 0x00080000):  int: -17
+2088.    IREMPOW2 (-17 % 0x00100000):  int: -17
+2089.    IREMPOW2 (-17 % 0x00200000):  int: -17
+2090.    IREMPOW2 (-17 % 0x00400000):  int: -17
+2091.    IREMPOW2 (-17 % 0x00800000):  int: -17
+2092.    IREMPOW2 (-17 % 0x01000000):  int: -17
+2093.    IREMPOW2 (-17 % 0x02000000):  int: -17
+2094.    IREMPOW2 (-17 % 0x04000000):  int: -17
+2095.    IREMPOW2 (-17 % 0x08000000):  int: -17
+2096.    IREMPOW2 (-17 % 0x10000000):  int: -17
+2097.    IREMPOW2 (-17 % 0x20000000):  int: -17
+2098.    IREMPOW2 (-17 % 0x40000000):  int: -17
+2099.    IREMPOW2 (-17 % 0x80000000):  int: -17
+2100.    IDIVPOW2 (-12347 / 0x00000002):  int: -6173
+2101.    IDIVPOW2 (-12347 / 0x00000004):  int: -3086
+2102.    IDIVPOW2 (-12347 / 0x00000008):  int: -1543
+2103.    IDIVPOW2 (-12347 / 0x00000010):  int: -771
+2104.    IDIVPOW2 (-12347 / 0x00000020):  int: -385
+2105.    IDIVPOW2 (-12347 / 0x00000040):  int: -192
+2106.    IDIVPOW2 (-12347 / 0x00000080):  int: -96
+2107.    IDIVPOW2 (-12347 / 0x00000100):  int: -48
+2108.    IDIVPOW2 (-12347 / 0x00000200):  int: -24
+2109.    IDIVPOW2 (-12347 / 0x00000400):  int: -12
+2110.    IDIVPOW2 (-12347 / 0x00000800):  int: -6
+2111.    IDIVPOW2 (-12347 / 0x00001000):  int: -3
+2112.    IDIVPOW2 (-12347 / 0x00002000):  int: -1
+2113.    IDIVPOW2 (-12347 / 0x00004000):  int: 0
+2114.    IDIVPOW2 (-12347 / 0x00008000):  int: 0
+2115.    IDIVPOW2 (-12347 / 0x00010000):  int: 0
+2116.    IDIVPOW2 (-12347 / 0x00020000):  int: 0
+2117.    IDIVPOW2 (-12347 / 0x00040000):  int: 0
+2118.    IDIVPOW2 (-12347 / 0x00080000):  int: 0
+2119.    IDIVPOW2 (-12347 / 0x00100000):  int: 0
+2120.    IDIVPOW2 (-12347 / 0x00200000):  int: 0
+2121.    IDIVPOW2 (-12347 / 0x00400000):  int: 0
+2122.    IDIVPOW2 (-12347 / 0x00800000):  int: 0
+2123.    IDIVPOW2 (-12347 / 0x01000000):  int: 0
+2124.    IDIVPOW2 (-12347 / 0x02000000):  int: 0
+2125.    IDIVPOW2 (-12347 / 0x04000000):  int: 0
+2126.    IDIVPOW2 (-12347 / 0x08000000):  int: 0
+2127.    IDIVPOW2 (-12347 / 0x10000000):  int: 0
+2128.    IDIVPOW2 (-12347 / 0x20000000):  int: 0
+2129.    IDIVPOW2 (-12347 / 0x40000000):  int: 0
+2130.    IDIVPOW2 (-12347 / 0x80000000):  int: 0
+2131.    IREMPOW2 (-12347 % 0x00000002):  int: -1
+2132.    IREMPOW2 (-12347 % 0x00000004):  int: -3
+2133.    IREMPOW2 (-12347 % 0x00000008):  int: -3
+2134.    IREMPOW2 (-12347 % 0x00000010):  int: -11
+2135.    IREMPOW2 (-12347 % 0x00000020):  int: -27
+2136.    IREMPOW2 (-12347 % 0x00000040):  int: -59
+2137.    IREMPOW2 (-12347 % 0x00000080):  int: -59
+2138.    IREMPOW2 (-12347 % 0x00000100):  int: -59
+2139.    IREMPOW2 (-12347 % 0x00000200):  int: -59
+2140.    IREMPOW2 (-12347 % 0x00000400):  int: -59
+2141.    IREMPOW2 (-12347 % 0x00000800):  int: -59
+2142.    IREMPOW2 (-12347 % 0x00001000):  int: -59
+2143.    IREMPOW2 (-12347 % 0x00002000):  int: -4155
+2144.    IREMPOW2 (-12347 % 0x00004000):  int: -12347
+2145.    IREMPOW2 (-12347 % 0x00008000):  int: -12347
+2146.    IREMPOW2 (-12347 % 0x00010000):  int: -12347
+2147.    IREMPOW2 (-12347 % 0x00020000):  int: -12347
+2148.    IREMPOW2 (-12347 % 0x00040000):  int: -12347
+2149.    IREMPOW2 (-12347 % 0x00080000):  int: -12347
+2150.    IREMPOW2 (-12347 % 0x00100000):  int: -12347
+2151.    IREMPOW2 (-12347 % 0x00200000):  int: -12347
+2152.    IREMPOW2 (-12347 % 0x00400000):  int: -12347
+2153.    IREMPOW2 (-12347 % 0x00800000):  int: -12347
+2154.    IREMPOW2 (-12347 % 0x01000000):  int: -12347
+2155.    IREMPOW2 (-12347 % 0x02000000):  int: -12347
+2156.    IREMPOW2 (-12347 % 0x04000000):  int: -12347
+2157.    IREMPOW2 (-12347 % 0x08000000):  int: -12347
+2158.    IREMPOW2 (-12347 % 0x10000000):  int: -12347
+2159.    IREMPOW2 (-12347 % 0x20000000):  int: -12347
+2160.    IREMPOW2 (-12347 % 0x40000000):  int: -12347
+2161.    IREMPOW2 (-12347 % 0x80000000):  int: -12347
+2162.    IDIVPOW2 (-8893427 / 0x00000002):  int: -4446713
+2163.    IDIVPOW2 (-8893427 / 0x00000004):  int: -2223356
+2164.    IDIVPOW2 (-8893427 / 0x00000008):  int: -1111678
+2165.    IDIVPOW2 (-8893427 / 0x00000010):  int: -555839
+2166.    IDIVPOW2 (-8893427 / 0x00000020):  int: -277919
+2167.    IDIVPOW2 (-8893427 / 0x00000040):  int: -138959
+2168.    IDIVPOW2 (-8893427 / 0x00000080):  int: -69479
+2169.    IDIVPOW2 (-8893427 / 0x00000100):  int: -34739
+2170.    IDIVPOW2 (-8893427 / 0x00000200):  int: -17369
+2171.    IDIVPOW2 (-8893427 / 0x00000400):  int: -8684
+2172.    IDIVPOW2 (-8893427 / 0x00000800):  int: -4342
+2173.    IDIVPOW2 (-8893427 / 0x00001000):  int: -2171
+2174.    IDIVPOW2 (-8893427 / 0x00002000):  int: -1085
+2175.    IDIVPOW2 (-8893427 / 0x00004000):  int: -542
+2176.    IDIVPOW2 (-8893427 / 0x00008000):  int: -271
+2177.    IDIVPOW2 (-8893427 / 0x00010000):  int: -135
+2178.    IDIVPOW2 (-8893427 / 0x00020000):  int: -67
+2179.    IDIVPOW2 (-8893427 / 0x00040000):  int: -33
+2180.    IDIVPOW2 (-8893427 / 0x00080000):  int: -16
+2181.    IDIVPOW2 (-8893427 / 0x00100000):  int: -8
+2182.    IDIVPOW2 (-8893427 / 0x00200000):  int: -4
+2183.    IDIVPOW2 (-8893427 / 0x00400000):  int: -2
+2184.    IDIVPOW2 (-8893427 / 0x00800000):  int: -1
+2185.    IDIVPOW2 (-8893427 / 0x01000000):  int: 0
+2186.    IDIVPOW2 (-8893427 / 0x02000000):  int: 0
+2187.    IDIVPOW2 (-8893427 / 0x04000000):  int: 0
+2188.    IDIVPOW2 (-8893427 / 0x08000000):  int: 0
+2189.    IDIVPOW2 (-8893427 / 0x10000000):  int: 0
+2190.    IDIVPOW2 (-8893427 / 0x20000000):  int: 0
+2191.    IDIVPOW2 (-8893427 / 0x40000000):  int: 0
+2192.    IDIVPOW2 (-8893427 / 0x80000000):  int: 0
+2193.    IREMPOW2 (-8893427 % 0x00000002):  int: -1
+2194.    IREMPOW2 (-8893427 % 0x00000004):  int: -3
+2195.    IREMPOW2 (-8893427 % 0x00000008):  int: -3
+2196.    IREMPOW2 (-8893427 % 0x00000010):  int: -3
+2197.    IREMPOW2 (-8893427 % 0x00000020):  int: -19
+2198.    IREMPOW2 (-8893427 % 0x00000040):  int: -51
+2199.    IREMPOW2 (-8893427 % 0x00000080):  int: -115
+2200.    IREMPOW2 (-8893427 % 0x00000100):  int: -243
+2201.    IREMPOW2 (-8893427 % 0x00000200):  int: -499
+2202.    IREMPOW2 (-8893427 % 0x00000400):  int: -1011
+2203.    IREMPOW2 (-8893427 % 0x00000800):  int: -1011
+2204.    IREMPOW2 (-8893427 % 0x00001000):  int: -1011
+2205.    IREMPOW2 (-8893427 % 0x00002000):  int: -5107
+2206.    IREMPOW2 (-8893427 % 0x00004000):  int: -13299
+2207.    IREMPOW2 (-8893427 % 0x00008000):  int: -13299
+2208.    IREMPOW2 (-8893427 % 0x00010000):  int: -46067
+2209.    IREMPOW2 (-8893427 % 0x00020000):  int: -111603
+2210.    IREMPOW2 (-8893427 % 0x00040000):  int: -242675
+2211.    IREMPOW2 (-8893427 % 0x00080000):  int: -504819
+2212.    IREMPOW2 (-8893427 % 0x00100000):  int: -504819
+2213.    IREMPOW2 (-8893427 % 0x00200000):  int: -504819
+2214.    IREMPOW2 (-8893427 % 0x00400000):  int: -504819
+2215.    IREMPOW2 (-8893427 % 0x00800000):  int: -504819
+2216.    IREMPOW2 (-8893427 % 0x01000000):  int: -8893427
+2217.    IREMPOW2 (-8893427 % 0x02000000):  int: -8893427
+2218.    IREMPOW2 (-8893427 % 0x04000000):  int: -8893427
+2219.    IREMPOW2 (-8893427 % 0x08000000):  int: -8893427
+2220.    IREMPOW2 (-8893427 % 0x10000000):  int: -8893427
+2221.    IREMPOW2 (-8893427 % 0x20000000):  int: -8893427
+2222.    IREMPOW2 (-8893427 % 0x40000000):  int: -8893427
+2223.    IREMPOW2 (-8893427 % 0x80000000):  int: -8893427
+2224.    IDIVPOW2 (-1005234562 / 0x00000002):  int: -502617281
+2225.    IDIVPOW2 (-1005234562 / 0x00000004):  int: -251308640
+2226.    IDIVPOW2 (-1005234562 / 0x00000008):  int: -125654320
+2227.    IDIVPOW2 (-1005234562 / 0x00000010):  int: -62827160
+2228.    IDIVPOW2 (-1005234562 / 0x00000020):  int: -31413580
+2229.    IDIVPOW2 (-1005234562 / 0x00000040):  int: -15706790
+2230.    IDIVPOW2 (-1005234562 / 0x00000080):  int: -7853395
+2231.    IDIVPOW2 (-1005234562 / 0x00000100):  int: -3926697
+2232.    IDIVPOW2 (-1005234562 / 0x00000200):  int: -1963348
+2233.    IDIVPOW2 (-1005234562 / 0x00000400):  int: -981674
+2234.    IDIVPOW2 (-1005234562 / 0x00000800):  int: -490837
+2235.    IDIVPOW2 (-1005234562 / 0x00001000):  int: -245418
+2236.    IDIVPOW2 (-1005234562 / 0x00002000):  int: -122709
+2237.    IDIVPOW2 (-1005234562 / 0x00004000):  int: -61354
+2238.    IDIVPOW2 (-1005234562 / 0x00008000):  int: -30677
+2239.    IDIVPOW2 (-1005234562 / 0x00010000):  int: -15338
+2240.    IDIVPOW2 (-1005234562 / 0x00020000):  int: -7669
+2241.    IDIVPOW2 (-1005234562 / 0x00040000):  int: -3834
+2242.    IDIVPOW2 (-1005234562 / 0x00080000):  int: -1917
+2243.    IDIVPOW2 (-1005234562 / 0x00100000):  int: -958
+2244.    IDIVPOW2 (-1005234562 / 0x00200000):  int: -479
+2245.    IDIVPOW2 (-1005234562 / 0x00400000):  int: -239
+2246.    IDIVPOW2 (-1005234562 / 0x00800000):  int: -119
+2247.    IDIVPOW2 (-1005234562 / 0x01000000):  int: -59
+2248.    IDIVPOW2 (-1005234562 / 0x02000000):  int: -29
+2249.    IDIVPOW2 (-1005234562 / 0x04000000):  int: -14
+2250.    IDIVPOW2 (-1005234562 / 0x08000000):  int: -7
+2251.    IDIVPOW2 (-1005234562 / 0x10000000):  int: -3
+2252.    IDIVPOW2 (-1005234562 / 0x20000000):  int: -1
+2253.    IDIVPOW2 (-1005234562 / 0x40000000):  int: 0
+2254.    IDIVPOW2 (-1005234562 / 0x80000000):  int: 0
+2255.    IREMPOW2 (-1005234562 % 0x00000002):  int: 0
+2256.    IREMPOW2 (-1005234562 % 0x00000004):  int: -2
+2257.    IREMPOW2 (-1005234562 % 0x00000008):  int: -2
+2258.    IREMPOW2 (-1005234562 % 0x00000010):  int: -2
+2259.    IREMPOW2 (-1005234562 % 0x00000020):  int: -2
+2260.    IREMPOW2 (-1005234562 % 0x00000040):  int: -2
+2261.    IREMPOW2 (-1005234562 % 0x00000080):  int: -2
+2262.    IREMPOW2 (-1005234562 % 0x00000100):  int: -130
+2263.    IREMPOW2 (-1005234562 % 0x00000200):  int: -386
+2264.    IREMPOW2 (-1005234562 % 0x00000400):  int: -386
+2265.    IREMPOW2 (-1005234562 % 0x00000800):  int: -386
+2266.    IREMPOW2 (-1005234562 % 0x00001000):  int: -2434
+2267.    IREMPOW2 (-1005234562 % 0x00002000):  int: -2434
+2268.    IREMPOW2 (-1005234562 % 0x00004000):  int: -10626
+2269.    IREMPOW2 (-1005234562 % 0x00008000):  int: -10626
+2270.    IREMPOW2 (-1005234562 % 0x00010000):  int: -43394
+2271.    IREMPOW2 (-1005234562 % 0x00020000):  int: -43394
+2272.    IREMPOW2 (-1005234562 % 0x00040000):  int: -174466
+2273.    IREMPOW2 (-1005234562 % 0x00080000):  int: -174466
+2274.    IREMPOW2 (-1005234562 % 0x00100000):  int: -698754
+2275.    IREMPOW2 (-1005234562 % 0x00200000):  int: -698754
+2276.    IREMPOW2 (-1005234562 % 0x00400000):  int: -2795906
+2277.    IREMPOW2 (-1005234562 % 0x00800000):  int: -6990210
+2278.    IREMPOW2 (-1005234562 % 0x01000000):  int: -15378818
+2279.    IREMPOW2 (-1005234562 % 0x02000000):  int: -32156034
+2280.    IREMPOW2 (-1005234562 % 0x04000000):  int: -65710466
+2281.    IREMPOW2 (-1005234562 % 0x08000000):  int: -65710466
+2282.    IREMPOW2 (-1005234562 % 0x10000000):  int: -199928194
+2283.    IREMPOW2 (-1005234562 % 0x20000000):  int: -468363650
+2284.    IREMPOW2 (-1005234562 % 0x40000000):  int: -1005234562
+2285.    IREMPOW2 (-1005234562 % 0x80000000):  int: -1005234562
+2286.    LDIVPOW2 (17 / 0x00000002):  long: 8
+2287.    LDIVPOW2 (17 / 0x00000004):  long: 4
+2288.    LDIVPOW2 (17 / 0x00000008):  long: 2
+2289.    LDIVPOW2 (17 / 0x00000010):  long: 1
+2290.    LDIVPOW2 (17 / 0x00000020):  long: 0
+2291.    LDIVPOW2 (17 / 0x00000040):  long: 0
+2292.    LDIVPOW2 (17 / 0x00000080):  long: 0
+2293.    LDIVPOW2 (17 / 0x00000100):  long: 0
+2294.    LDIVPOW2 (17 / 0x00000200):  long: 0
+2295.    LDIVPOW2 (17 / 0x00000400):  long: 0
+2296.    LDIVPOW2 (17 / 0x00000800):  long: 0
+2297.    LDIVPOW2 (17 / 0x00001000):  long: 0
+2298.    LDIVPOW2 (17 / 0x00002000):  long: 0
+2299.    LDIVPOW2 (17 / 0x00004000):  long: 0
+2300.    LDIVPOW2 (17 / 0x00008000):  long: 0
+2301.    LDIVPOW2 (17 / 0x00010000):  long: 0
+2302.    LDIVPOW2 (17 / 0x00020000):  long: 0
+2303.    LDIVPOW2 (17 / 0x00040000):  long: 0
+2304.    LDIVPOW2 (17 / 0x00080000):  long: 0
+2305.    LDIVPOW2 (17 / 0x00100000):  long: 0
+2306.    LDIVPOW2 (17 / 0x00200000):  long: 0
+2307.    LDIVPOW2 (17 / 0x00400000):  long: 0
+2308.    LDIVPOW2 (17 / 0x00800000):  long: 0
+2309.    LDIVPOW2 (17 / 0x01000000):  long: 0
+2310.    LDIVPOW2 (17 / 0x02000000):  long: 0
+2311.    LDIVPOW2 (17 / 0x04000000):  long: 0
+2312.    LDIVPOW2 (17 / 0x08000000):  long: 0
+2313.    LDIVPOW2 (17 / 0x10000000):  long: 0
+2314.    LDIVPOW2 (17 / 0x20000000):  long: 0
+2315.    LDIVPOW2 (17 / 0x40000000):  long: 0
+2316.    LDIVPOW2 (17 / 0x80000000):  long: 0
+2317.    LREMPOW2 (17 % 0x00000002):  long: 1
+2318.    LREMPOW2 (17 % 0x00000004):  long: 1
+2319.    LREMPOW2 (17 % 0x00000008):  long: 1
+2320.    LREMPOW2 (17 % 0x00000010):  long: 1
+2321.    LREMPOW2 (17 % 0x00000020):  long: 17
+2322.    LREMPOW2 (17 % 0x00000040):  long: 17
+2323.    LREMPOW2 (17 % 0x00000080):  long: 17
+2324.    LREMPOW2 (17 % 0x00000100):  long: 17
+2325.    LREMPOW2 (17 % 0x00000200):  long: 17
+2326.    LREMPOW2 (17 % 0x00000400):  long: 17
+2327.    LREMPOW2 (17 % 0x00000800):  long: 17
+2328.    LREMPOW2 (17 % 0x00001000):  long: 17
+2329.    LREMPOW2 (17 % 0x00002000):  long: 17
+2330.    LREMPOW2 (17 % 0x00004000):  long: 17
+2331.    LREMPOW2 (17 % 0x00008000):  long: 17
+2332.    LREMPOW2 (17 % 0x00010000):  long: 17
+2333.    LREMPOW2 (17 % 0x00020000):  long: 17
+2334.    LREMPOW2 (17 % 0x00040000):  long: 17
+2335.    LREMPOW2 (17 % 0x00080000):  long: 17
+2336.    LREMPOW2 (17 % 0x00100000):  long: 17
+2337.    LREMPOW2 (17 % 0x00200000):  long: 17
+2338.    LREMPOW2 (17 % 0x00400000):  long: 17
+2339.    LREMPOW2 (17 % 0x00800000):  long: 17
+2340.    LREMPOW2 (17 % 0x01000000):  long: 17
+2341.    LREMPOW2 (17 % 0x02000000):  long: 17
+2342.    LREMPOW2 (17 % 0x04000000):  long: 17
+2343.    LREMPOW2 (17 % 0x08000000):  long: 17
+2344.    LREMPOW2 (17 % 0x10000000):  long: 17
+2345.    LREMPOW2 (17 % 0x20000000):  long: 17
+2346.    LREMPOW2 (17 % 0x40000000):  long: 17
+2347.    LREMPOW2 (17 % 0x80000000):  long: 17
+2348.    LDIVPOW2 (12347 / 0x00000002):  long: 6173
+2349.    LDIVPOW2 (12347 / 0x00000004):  long: 3086
+2350.    LDIVPOW2 (12347 / 0x00000008):  long: 1543
+2351.    LDIVPOW2 (12347 / 0x00000010):  long: 771
+2352.    LDIVPOW2 (12347 / 0x00000020):  long: 385
+2353.    LDIVPOW2 (12347 / 0x00000040):  long: 192
+2354.    LDIVPOW2 (12347 / 0x00000080):  long: 96
+2355.    LDIVPOW2 (12347 / 0x00000100):  long: 48
+2356.    LDIVPOW2 (12347 / 0x00000200):  long: 24
+2357.    LDIVPOW2 (12347 / 0x00000400):  long: 12
+2358.    LDIVPOW2 (12347 / 0x00000800):  long: 6
+2359.    LDIVPOW2 (12347 / 0x00001000):  long: 3
+2360.    LDIVPOW2 (12347 / 0x00002000):  long: 1
+2361.    LDIVPOW2 (12347 / 0x00004000):  long: 0
+2362.    LDIVPOW2 (12347 / 0x00008000):  long: 0
+2363.    LDIVPOW2 (12347 / 0x00010000):  long: 0
+2364.    LDIVPOW2 (12347 / 0x00020000):  long: 0
+2365.    LDIVPOW2 (12347 / 0x00040000):  long: 0
+2366.    LDIVPOW2 (12347 / 0x00080000):  long: 0
+2367.    LDIVPOW2 (12347 / 0x00100000):  long: 0
+2368.    LDIVPOW2 (12347 / 0x00200000):  long: 0
+2369.    LDIVPOW2 (12347 / 0x00400000):  long: 0
+2370.    LDIVPOW2 (12347 / 0x00800000):  long: 0
+2371.    LDIVPOW2 (12347 / 0x01000000):  long: 0
+2372.    LDIVPOW2 (12347 / 0x02000000):  long: 0
+2373.    LDIVPOW2 (12347 / 0x04000000):  long: 0
+2374.    LDIVPOW2 (12347 / 0x08000000):  long: 0
+2375.    LDIVPOW2 (12347 / 0x10000000):  long: 0
+2376.    LDIVPOW2 (12347 / 0x20000000):  long: 0
+2377.    LDIVPOW2 (12347 / 0x40000000):  long: 0
+2378.    LDIVPOW2 (12347 / 0x80000000):  long: 0
+2379.    LREMPOW2 (12347 % 0x00000002):  long: 1
+2380.    LREMPOW2 (12347 % 0x00000004):  long: 3
+2381.    LREMPOW2 (12347 % 0x00000008):  long: 3
+2382.    LREMPOW2 (12347 % 0x00000010):  long: 11
+2383.    LREMPOW2 (12347 % 0x00000020):  long: 27
+2384.    LREMPOW2 (12347 % 0x00000040):  long: 59
+2385.    LREMPOW2 (12347 % 0x00000080):  long: 59
+2386.    LREMPOW2 (12347 % 0x00000100):  long: 59
+2387.    LREMPOW2 (12347 % 0x00000200):  long: 59
+2388.    LREMPOW2 (12347 % 0x00000400):  long: 59
+2389.    LREMPOW2 (12347 % 0x00000800):  long: 59
+2390.    LREMPOW2 (12347 % 0x00001000):  long: 59
+2391.    LREMPOW2 (12347 % 0x00002000):  long: 4155
+2392.    LREMPOW2 (12347 % 0x00004000):  long: 12347
+2393.    LREMPOW2 (12347 % 0x00008000):  long: 12347
+2394.    LREMPOW2 (12347 % 0x00010000):  long: 12347
+2395.    LREMPOW2 (12347 % 0x00020000):  long: 12347
+2396.    LREMPOW2 (12347 % 0x00040000):  long: 12347
+2397.    LREMPOW2 (12347 % 0x00080000):  long: 12347
+2398.    LREMPOW2 (12347 % 0x00100000):  long: 12347
+2399.    LREMPOW2 (12347 % 0x00200000):  long: 12347
+2400.    LREMPOW2 (12347 % 0x00400000):  long: 12347
+2401.    LREMPOW2 (12347 % 0x00800000):  long: 12347
+2402.    LREMPOW2 (12347 % 0x01000000):  long: 12347
+2403.    LREMPOW2 (12347 % 0x02000000):  long: 12347
+2404.    LREMPOW2 (12347 % 0x04000000):  long: 12347
+2405.    LREMPOW2 (12347 % 0x08000000):  long: 12347
+2406.    LREMPOW2 (12347 % 0x10000000):  long: 12347
+2407.    LREMPOW2 (12347 % 0x20000000):  long: 12347
+2408.    LREMPOW2 (12347 % 0x40000000):  long: 12347
+2409.    LREMPOW2 (12347 % 0x80000000):  long: 12347
+2410.    LDIVPOW2 (8893427 / 0x00000002):  long: 4446713
+2411.    LDIVPOW2 (8893427 / 0x00000004):  long: 2223356
+2412.    LDIVPOW2 (8893427 / 0x00000008):  long: 1111678
+2413.    LDIVPOW2 (8893427 / 0x00000010):  long: 555839
+2414.    LDIVPOW2 (8893427 / 0x00000020):  long: 277919
+2415.    LDIVPOW2 (8893427 / 0x00000040):  long: 138959
+2416.    LDIVPOW2 (8893427 / 0x00000080):  long: 69479
+2417.    LDIVPOW2 (8893427 / 0x00000100):  long: 34739
+2418.    LDIVPOW2 (8893427 / 0x00000200):  long: 17369
+2419.    LDIVPOW2 (8893427 / 0x00000400):  long: 8684
+2420.    LDIVPOW2 (8893427 / 0x00000800):  long: 4342
+2421.    LDIVPOW2 (8893427 / 0x00001000):  long: 2171
+2422.    LDIVPOW2 (8893427 / 0x00002000):  long: 1085
+2423.    LDIVPOW2 (8893427 / 0x00004000):  long: 542
+2424.    LDIVPOW2 (8893427 / 0x00008000):  long: 271
+2425.    LDIVPOW2 (8893427 / 0x00010000):  long: 135
+2426.    LDIVPOW2 (8893427 / 0x00020000):  long: 67
+2427.    LDIVPOW2 (8893427 / 0x00040000):  long: 33
+2428.    LDIVPOW2 (8893427 / 0x00080000):  long: 16
+2429.    LDIVPOW2 (8893427 / 0x00100000):  long: 8
+2430.    LDIVPOW2 (8893427 / 0x00200000):  long: 4
+2431.    LDIVPOW2 (8893427 / 0x00400000):  long: 2
+2432.    LDIVPOW2 (8893427 / 0x00800000):  long: 1
+2433.    LDIVPOW2 (8893427 / 0x01000000):  long: 0
+2434.    LDIVPOW2 (8893427 / 0x02000000):  long: 0
+2435.    LDIVPOW2 (8893427 / 0x04000000):  long: 0
+2436.    LDIVPOW2 (8893427 / 0x08000000):  long: 0
+2437.    LDIVPOW2 (8893427 / 0x10000000):  long: 0
+2438.    LDIVPOW2 (8893427 / 0x20000000):  long: 0
+2439.    LDIVPOW2 (8893427 / 0x40000000):  long: 0
+2440.    LDIVPOW2 (8893427 / 0x80000000):  long: 0
+2441.    LREMPOW2 (8893427 % 0x00000002):  long: 1
+2442.    LREMPOW2 (8893427 % 0x00000004):  long: 3
+2443.    LREMPOW2 (8893427 % 0x00000008):  long: 3
+2444.    LREMPOW2 (8893427 % 0x00000010):  long: 3
+2445.    LREMPOW2 (8893427 % 0x00000020):  long: 19
+2446.    LREMPOW2 (8893427 % 0x00000040):  long: 51
+2447.    LREMPOW2 (8893427 % 0x00000080):  long: 115
+2448.    LREMPOW2 (8893427 % 0x00000100):  long: 243
+2449.    LREMPOW2 (8893427 % 0x00000200):  long: 499
+2450.    LREMPOW2 (8893427 % 0x00000400):  long: 1011
+2451.    LREMPOW2 (8893427 % 0x00000800):  long: 1011
+2452.    LREMPOW2 (8893427 % 0x00001000):  long: 1011
+2453.    LREMPOW2 (8893427 % 0x00002000):  long: 5107
+2454.    LREMPOW2 (8893427 % 0x00004000):  long: 13299
+2455.    LREMPOW2 (8893427 % 0x00008000):  long: 13299
+2456.    LREMPOW2 (8893427 % 0x00010000):  long: 46067
+2457.    LREMPOW2 (8893427 % 0x00020000):  long: 111603
+2458.    LREMPOW2 (8893427 % 0x00040000):  long: 242675
+2459.    LREMPOW2 (8893427 % 0x00080000):  long: 504819
+2460.    LREMPOW2 (8893427 % 0x00100000):  long: 504819
+2461.    LREMPOW2 (8893427 % 0x00200000):  long: 504819
+2462.    LREMPOW2 (8893427 % 0x00400000):  long: 504819
+2463.    LREMPOW2 (8893427 % 0x00800000):  long: 504819
+2464.    LREMPOW2 (8893427 % 0x01000000):  long: 8893427
+2465.    LREMPOW2 (8893427 % 0x02000000):  long: 8893427
+2466.    LREMPOW2 (8893427 % 0x04000000):  long: 8893427
+2467.    LREMPOW2 (8893427 % 0x08000000):  long: 8893427
+2468.    LREMPOW2 (8893427 % 0x10000000):  long: 8893427
+2469.    LREMPOW2 (8893427 % 0x20000000):  long: 8893427
+2470.    LREMPOW2 (8893427 % 0x40000000):  long: 8893427
+2471.    LREMPOW2 (8893427 % 0x80000000):  long: 8893427
+2472.    LDIVPOW2 (1005234562 / 0x00000002):  long: 502617281
+2473.    LDIVPOW2 (1005234562 / 0x00000004):  long: 251308640
+2474.    LDIVPOW2 (1005234562 / 0x00000008):  long: 125654320
+2475.    LDIVPOW2 (1005234562 / 0x00000010):  long: 62827160
+2476.    LDIVPOW2 (1005234562 / 0x00000020):  long: 31413580
+2477.    LDIVPOW2 (1005234562 / 0x00000040):  long: 15706790
+2478.    LDIVPOW2 (1005234562 / 0x00000080):  long: 7853395
+2479.    LDIVPOW2 (1005234562 / 0x00000100):  long: 3926697
+2480.    LDIVPOW2 (1005234562 / 0x00000200):  long: 1963348
+2481.    LDIVPOW2 (1005234562 / 0x00000400):  long: 981674
+2482.    LDIVPOW2 (1005234562 / 0x00000800):  long: 490837
+2483.    LDIVPOW2 (1005234562 / 0x00001000):  long: 245418
+2484.    LDIVPOW2 (1005234562 / 0x00002000):  long: 122709
+2485.    LDIVPOW2 (1005234562 / 0x00004000):  long: 61354
+2486.    LDIVPOW2 (1005234562 / 0x00008000):  long: 30677
+2487.    LDIVPOW2 (1005234562 / 0x00010000):  long: 15338
+2488.    LDIVPOW2 (1005234562 / 0x00020000):  long: 7669
+2489.    LDIVPOW2 (1005234562 / 0x00040000):  long: 3834
+2490.    LDIVPOW2 (1005234562 / 0x00080000):  long: 1917
+2491.    LDIVPOW2 (1005234562 / 0x00100000):  long: 958
+2492.    LDIVPOW2 (1005234562 / 0x00200000):  long: 479
+2493.    LDIVPOW2 (1005234562 / 0x00400000):  long: 239
+2494.    LDIVPOW2 (1005234562 / 0x00800000):  long: 119
+2495.    LDIVPOW2 (1005234562 / 0x01000000):  long: 59
+2496.    LDIVPOW2 (1005234562 / 0x02000000):  long: 29
+2497.    LDIVPOW2 (1005234562 / 0x04000000):  long: 14
+2498.    LDIVPOW2 (1005234562 / 0x08000000):  long: 7
+2499.    LDIVPOW2 (1005234562 / 0x10000000):  long: 3
+2500.    LDIVPOW2 (1005234562 / 0x20000000):  long: 1
+2501.    LDIVPOW2 (1005234562 / 0x40000000):  long: 0
+2502.    LDIVPOW2 (1005234562 / 0x80000000):  long: 0
+2503.    LREMPOW2 (1005234562 % 0x00000002):  long: 0
+2504.    LREMPOW2 (1005234562 % 0x00000004):  long: 2
+2505.    LREMPOW2 (1005234562 % 0x00000008):  long: 2
+2506.    LREMPOW2 (1005234562 % 0x00000010):  long: 2
+2507.    LREMPOW2 (1005234562 % 0x00000020):  long: 2
+2508.    LREMPOW2 (1005234562 % 0x00000040):  long: 2
+2509.    LREMPOW2 (1005234562 % 0x00000080):  long: 2
+2510.    LREMPOW2 (1005234562 % 0x00000100):  long: 130
+2511.    LREMPOW2 (1005234562 % 0x00000200):  long: 386
+2512.    LREMPOW2 (1005234562 % 0x00000400):  long: 386
+2513.    LREMPOW2 (1005234562 % 0x00000800):  long: 386
+2514.    LREMPOW2 (1005234562 % 0x00001000):  long: 2434
+2515.    LREMPOW2 (1005234562 % 0x00002000):  long: 2434
+2516.    LREMPOW2 (1005234562 % 0x00004000):  long: 10626
+2517.    LREMPOW2 (1005234562 % 0x00008000):  long: 10626
+2518.    LREMPOW2 (1005234562 % 0x00010000):  long: 43394
+2519.    LREMPOW2 (1005234562 % 0x00020000):  long: 43394
+2520.    LREMPOW2 (1005234562 % 0x00040000):  long: 174466
+2521.    LREMPOW2 (1005234562 % 0x00080000):  long: 174466
+2522.    LREMPOW2 (1005234562 % 0x00100000):  long: 698754
+2523.    LREMPOW2 (1005234562 % 0x00200000):  long: 698754
+2524.    LREMPOW2 (1005234562 % 0x00400000):  long: 2795906
+2525.    LREMPOW2 (1005234562 % 0x00800000):  long: 6990210
+2526.    LREMPOW2 (1005234562 % 0x01000000):  long: 15378818
+2527.    LREMPOW2 (1005234562 % 0x02000000):  long: 32156034
+2528.    LREMPOW2 (1005234562 % 0x04000000):  long: 65710466
+2529.    LREMPOW2 (1005234562 % 0x08000000):  long: 65710466
+2530.    LREMPOW2 (1005234562 % 0x10000000):  long: 199928194
+2531.    LREMPOW2 (1005234562 % 0x20000000):  long: 468363650
+2532.    LREMPOW2 (1005234562 % 0x40000000):  long: 1005234562
+2533.    LREMPOW2 (1005234562 % 0x80000000):  long: 1005234562
+2534.    LDIVPOW2 (12135005234562 / 0x00000002):  long: 6067502617281
+2535.    LDIVPOW2 (12135005234562 / 0x00000004):  long: 3033751308640
+2536.    LDIVPOW2 (12135005234562 / 0x00000008):  long: 1516875654320
+2537.    LDIVPOW2 (12135005234562 / 0x00000010):  long: 758437827160
+2538.    LDIVPOW2 (12135005234562 / 0x00000020):  long: 379218913580
+2539.    LDIVPOW2 (12135005234562 / 0x00000040):  long: 189609456790
+2540.    LDIVPOW2 (12135005234562 / 0x00000080):  long: 94804728395
+2541.    LDIVPOW2 (12135005234562 / 0x00000100):  long: 47402364197
+2542.    LDIVPOW2 (12135005234562 / 0x00000200):  long: 23701182098
+2543.    LDIVPOW2 (12135005234562 / 0x00000400):  long: 11850591049
+2544.    LDIVPOW2 (12135005234562 / 0x00000800):  long: 5925295524
+2545.    LDIVPOW2 (12135005234562 / 0x00001000):  long: 2962647762
+2546.    LDIVPOW2 (12135005234562 / 0x00002000):  long: 1481323881
+2547.    LDIVPOW2 (12135005234562 / 0x00004000):  long: 740661940
+2548.    LDIVPOW2 (12135005234562 / 0x00008000):  long: 370330970
+2549.    LDIVPOW2 (12135005234562 / 0x00010000):  long: 185165485
+2550.    LDIVPOW2 (12135005234562 / 0x00020000):  long: 92582742
+2551.    LDIVPOW2 (12135005234562 / 0x00040000):  long: 46291371
+2552.    LDIVPOW2 (12135005234562 / 0x00080000):  long: 23145685
+2553.    LDIVPOW2 (12135005234562 / 0x00100000):  long: 11572842
+2554.    LDIVPOW2 (12135005234562 / 0x00200000):  long: 5786421
+2555.    LDIVPOW2 (12135005234562 / 0x00400000):  long: 2893210
+2556.    LDIVPOW2 (12135005234562 / 0x00800000):  long: 1446605
+2557.    LDIVPOW2 (12135005234562 / 0x01000000):  long: 723302
+2558.    LDIVPOW2 (12135005234562 / 0x02000000):  long: 361651
+2559.    LDIVPOW2 (12135005234562 / 0x04000000):  long: 180825
+2560.    LDIVPOW2 (12135005234562 / 0x08000000):  long: 90412
+2561.    LDIVPOW2 (12135005234562 / 0x10000000):  long: 45206
+2562.    LDIVPOW2 (12135005234562 / 0x20000000):  long: 22603
+2563.    LDIVPOW2 (12135005234562 / 0x40000000):  long: 11301
+2564.    LDIVPOW2 (12135005234562 / 0x80000000):  long: -5650
+2565.    LREMPOW2 (12135005234562 % 0x00000002):  long: 0
+2566.    LREMPOW2 (12135005234562 % 0x00000004):  long: 2
+2567.    LREMPOW2 (12135005234562 % 0x00000008):  long: 2
+2568.    LREMPOW2 (12135005234562 % 0x00000010):  long: 2
+2569.    LREMPOW2 (12135005234562 % 0x00000020):  long: 2
+2570.    LREMPOW2 (12135005234562 % 0x00000040):  long: 2
+2571.    LREMPOW2 (12135005234562 % 0x00000080):  long: 2
+2572.    LREMPOW2 (12135005234562 % 0x00000100):  long: 130
+2573.    LREMPOW2 (12135005234562 % 0x00000200):  long: 386
+2574.    LREMPOW2 (12135005234562 % 0x00000400):  long: 386
+2575.    LREMPOW2 (12135005234562 % 0x00000800):  long: 1410
+2576.    LREMPOW2 (12135005234562 % 0x00001000):  long: 1410
+2577.    LREMPOW2 (12135005234562 % 0x00002000):  long: 1410
+2578.    LREMPOW2 (12135005234562 % 0x00004000):  long: 9602
+2579.    LREMPOW2 (12135005234562 % 0x00008000):  long: 9602
+2580.    LREMPOW2 (12135005234562 % 0x00010000):  long: 9602
+2581.    LREMPOW2 (12135005234562 % 0x00020000):  long: 75138
+2582.    LREMPOW2 (12135005234562 % 0x00040000):  long: 75138
+2583.    LREMPOW2 (12135005234562 % 0x00080000):  long: 337282
+2584.    LREMPOW2 (12135005234562 % 0x00100000):  long: 861570
+2585.    LREMPOW2 (12135005234562 % 0x00200000):  long: 861570
+2586.    LREMPOW2 (12135005234562 % 0x00400000):  long: 2958722
+2587.    LREMPOW2 (12135005234562 % 0x00800000):  long: 2958722
+2588.    LREMPOW2 (12135005234562 % 0x01000000):  long: 11347330
+2589.    LREMPOW2 (12135005234562 % 0x02000000):  long: 11347330
+2590.    LREMPOW2 (12135005234562 % 0x04000000):  long: 44901762
+2591.    LREMPOW2 (12135005234562 % 0x08000000):  long: 112010626
+2592.    LREMPOW2 (12135005234562 % 0x10000000):  long: 112010626
+2593.    LREMPOW2 (12135005234562 % 0x20000000):  long: 112010626
+2594.    LREMPOW2 (12135005234562 % 0x40000000):  long: 648881538
+2595.    LREMPOW2 (12135005234562 % 0x80000000):  long: 1722623362
+2596.    LDIVPOW2 (2343552355623464626 / 0x00000002):  long: 1171776177811732313
+2597.    LDIVPOW2 (2343552355623464626 / 0x00000004):  long: 585888088905866156
+2598.    LDIVPOW2 (2343552355623464626 / 0x00000008):  long: 292944044452933078
+2599.    LDIVPOW2 (2343552355623464626 / 0x00000010):  long: 146472022226466539
+2600.    LDIVPOW2 (2343552355623464626 / 0x00000020):  long: 73236011113233269
+2601.    LDIVPOW2 (2343552355623464626 / 0x00000040):  long: 36618005556616634
+2602.    LDIVPOW2 (2343552355623464626 / 0x00000080):  long: 18309002778308317
+2603.    LDIVPOW2 (2343552355623464626 / 0x00000100):  long: 9154501389154158
+2604.    LDIVPOW2 (2343552355623464626 / 0x00000200):  long: 4577250694577079
+2605.    LDIVPOW2 (2343552355623464626 / 0x00000400):  long: 2288625347288539
+2606.    LDIVPOW2 (2343552355623464626 / 0x00000800):  long: 1144312673644269
+2607.    LDIVPOW2 (2343552355623464626 / 0x00001000):  long: 572156336822134
+2608.    LDIVPOW2 (2343552355623464626 / 0x00002000):  long: 286078168411067
+2609.    LDIVPOW2 (2343552355623464626 / 0x00004000):  long: 143039084205533
+2610.    LDIVPOW2 (2343552355623464626 / 0x00008000):  long: 71519542102766
+2611.    LDIVPOW2 (2343552355623464626 / 0x00010000):  long: 35759771051383
+2612.    LDIVPOW2 (2343552355623464626 / 0x00020000):  long: 17879885525691
+2613.    LDIVPOW2 (2343552355623464626 / 0x00040000):  long: 8939942762845
+2614.    LDIVPOW2 (2343552355623464626 / 0x00080000):  long: 4469971381422
+2615.    LDIVPOW2 (2343552355623464626 / 0x00100000):  long: 2234985690711
+2616.    LDIVPOW2 (2343552355623464626 / 0x00200000):  long: 1117492845355
+2617.    LDIVPOW2 (2343552355623464626 / 0x00400000):  long: 558746422677
+2618.    LDIVPOW2 (2343552355623464626 / 0x00800000):  long: 279373211338
+2619.    LDIVPOW2 (2343552355623464626 / 0x01000000):  long: 139686605669
+2620.    LDIVPOW2 (2343552355623464626 / 0x02000000):  long: 69843302834
+2621.    LDIVPOW2 (2343552355623464626 / 0x04000000):  long: 34921651417
+2622.    LDIVPOW2 (2343552355623464626 / 0x08000000):  long: 17460825708
+2623.    LDIVPOW2 (2343552355623464626 / 0x10000000):  long: 8730412854
+2624.    LDIVPOW2 (2343552355623464626 / 0x20000000):  long: 4365206427
+2625.    LDIVPOW2 (2343552355623464626 / 0x40000000):  long: 2182603213
+2626.    LDIVPOW2 (2343552355623464626 / 0x80000000):  long: -1091301606
+2627.    LREMPOW2 (2343552355623464626 % 0x00000002):  long: 0
+2628.    LREMPOW2 (2343552355623464626 % 0x00000004):  long: 2
+2629.    LREMPOW2 (2343552355623464626 % 0x00000008):  long: 2
+2630.    LREMPOW2 (2343552355623464626 % 0x00000010):  long: 2
+2631.    LREMPOW2 (2343552355623464626 % 0x00000020):  long: 18
+2632.    LREMPOW2 (2343552355623464626 % 0x00000040):  long: 50
+2633.    LREMPOW2 (2343552355623464626 % 0x00000080):  long: 50
+2634.    LREMPOW2 (2343552355623464626 % 0x00000100):  long: 178
+2635.    LREMPOW2 (2343552355623464626 % 0x00000200):  long: 178
+2636.    LREMPOW2 (2343552355623464626 % 0x00000400):  long: 690
+2637.    LREMPOW2 (2343552355623464626 % 0x00000800):  long: 1714
+2638.    LREMPOW2 (2343552355623464626 % 0x00001000):  long: 3762
+2639.    LREMPOW2 (2343552355623464626 % 0x00002000):  long: 3762
+2640.    LREMPOW2 (2343552355623464626 % 0x00004000):  long: 11954
+2641.    LREMPOW2 (2343552355623464626 % 0x00008000):  long: 28338
+2642.    LREMPOW2 (2343552355623464626 % 0x00010000):  long: 28338
+2643.    LREMPOW2 (2343552355623464626 % 0x00020000):  long: 93874
+2644.    LREMPOW2 (2343552355623464626 % 0x00040000):  long: 224946
+2645.    LREMPOW2 (2343552355623464626 % 0x00080000):  long: 487090
+2646.    LREMPOW2 (2343552355623464626 % 0x00100000):  long: 487090
+2647.    LREMPOW2 (2343552355623464626 % 0x00200000):  long: 1535666
+2648.    LREMPOW2 (2343552355623464626 % 0x00400000):  long: 3632818
+2649.    LREMPOW2 (2343552355623464626 % 0x00800000):  long: 7827122
+2650.    LREMPOW2 (2343552355623464626 % 0x01000000):  long: 7827122
+2651.    LREMPOW2 (2343552355623464626 % 0x02000000):  long: 24604338
+2652.    LREMPOW2 (2343552355623464626 % 0x04000000):  long: 24604338
+2653.    LREMPOW2 (2343552355623464626 % 0x08000000):  long: 91713202
+2654.    LREMPOW2 (2343552355623464626 % 0x10000000):  long: 91713202
+2655.    LREMPOW2 (2343552355623464626 % 0x20000000):  long: 91713202
+2656.    LREMPOW2 (2343552355623464626 % 0x40000000):  long: 628584114
+2657.    LREMPOW2 (2343552355623464626 % 0x80000000):  long: 1702325938
+2658.    LDIVPOW2 (-17 / 0x00000002):  long: -8
+2659.    LDIVPOW2 (-17 / 0x00000004):  long: -4
+2660.    LDIVPOW2 (-17 / 0x00000008):  long: -2
+2661.    LDIVPOW2 (-17 / 0x00000010):  long: -1
+2662.    LDIVPOW2 (-17 / 0x00000020):  long: 0
+2663.    LDIVPOW2 (-17 / 0x00000040):  long: 0
+2664.    LDIVPOW2 (-17 / 0x00000080):  long: 0
+2665.    LDIVPOW2 (-17 / 0x00000100):  long: 0
+2666.    LDIVPOW2 (-17 / 0x00000200):  long: 0
+2667.    LDIVPOW2 (-17 / 0x00000400):  long: 0
+2668.    LDIVPOW2 (-17 / 0x00000800):  long: 0
+2669.    LDIVPOW2 (-17 / 0x00001000):  long: 0
+2670.    LDIVPOW2 (-17 / 0x00002000):  long: 0
+2671.    LDIVPOW2 (-17 / 0x00004000):  long: 0
+2672.    LDIVPOW2 (-17 / 0x00008000):  long: 0
+2673.    LDIVPOW2 (-17 / 0x00010000):  long: 0
+2674.    LDIVPOW2 (-17 / 0x00020000):  long: 0
+2675.    LDIVPOW2 (-17 / 0x00040000):  long: 0
+2676.    LDIVPOW2 (-17 / 0x00080000):  long: 0
+2677.    LDIVPOW2 (-17 / 0x00100000):  long: 0
+2678.    LDIVPOW2 (-17 / 0x00200000):  long: 0
+2679.    LDIVPOW2 (-17 / 0x00400000):  long: 0
+2680.    LDIVPOW2 (-17 / 0x00800000):  long: 0
+2681.    LDIVPOW2 (-17 / 0x01000000):  long: 0
+2682.    LDIVPOW2 (-17 / 0x02000000):  long: 0
+2683.    LDIVPOW2 (-17 / 0x04000000):  long: 0
+2684.    LDIVPOW2 (-17 / 0x08000000):  long: 0
+2685.    LDIVPOW2 (-17 / 0x10000000):  long: 0
+2686.    LDIVPOW2 (-17 / 0x20000000):  long: 0
+2687.    LDIVPOW2 (-17 / 0x40000000):  long: 0
+2688.    LDIVPOW2 (-17 / 0x80000000):  long: 0
+2689.    LREMPOW2 (-17 % 0x00000002):  long: -1
+2690.    LREMPOW2 (-17 % 0x00000004):  long: -1
+2691.    LREMPOW2 (-17 % 0x00000008):  long: -1
+2692.    LREMPOW2 (-17 % 0x00000010):  long: -1
+2693.    LREMPOW2 (-17 % 0x00000020):  long: -17
+2694.    LREMPOW2 (-17 % 0x00000040):  long: -17
+2695.    LREMPOW2 (-17 % 0x00000080):  long: -17
+2696.    LREMPOW2 (-17 % 0x00000100):  long: -17
+2697.    LREMPOW2 (-17 % 0x00000200):  long: -17
+2698.    LREMPOW2 (-17 % 0x00000400):  long: -17
+2699.    LREMPOW2 (-17 % 0x00000800):  long: -17
+2700.    LREMPOW2 (-17 % 0x00001000):  long: -17
+2701.    LREMPOW2 (-17 % 0x00002000):  long: -17
+2702.    LREMPOW2 (-17 % 0x00004000):  long: -17
+2703.    LREMPOW2 (-17 % 0x00008000):  long: -17
+2704.    LREMPOW2 (-17 % 0x00010000):  long: -17
+2705.    LREMPOW2 (-17 % 0x00020000):  long: -17
+2706.    LREMPOW2 (-17 % 0x00040000):  long: -17
+2707.    LREMPOW2 (-17 % 0x00080000):  long: -17
+2708.    LREMPOW2 (-17 % 0x00100000):  long: -17
+2709.    LREMPOW2 (-17 % 0x00200000):  long: -17
+2710.    LREMPOW2 (-17 % 0x00400000):  long: -17
+2711.    LREMPOW2 (-17 % 0x00800000):  long: -17
+2712.    LREMPOW2 (-17 % 0x01000000):  long: -17
+2713.    LREMPOW2 (-17 % 0x02000000):  long: -17
+2714.    LREMPOW2 (-17 % 0x04000000):  long: -17
+2715.    LREMPOW2 (-17 % 0x08000000):  long: -17
+2716.    LREMPOW2 (-17 % 0x10000000):  long: -17
+2717.    LREMPOW2 (-17 % 0x20000000):  long: -17
+2718.    LREMPOW2 (-17 % 0x40000000):  long: -17
+2719.    LREMPOW2 (-17 % 0x80000000):  long: -17
+2720.    LDIVPOW2 (-12347 / 0x00000002):  long: -6173
+2721.    LDIVPOW2 (-12347 / 0x00000004):  long: -3086
+2722.    LDIVPOW2 (-12347 / 0x00000008):  long: -1543
+2723.    LDIVPOW2 (-12347 / 0x00000010):  long: -771
+2724.    LDIVPOW2 (-12347 / 0x00000020):  long: -385
+2725.    LDIVPOW2 (-12347 / 0x00000040):  long: -192
+2726.    LDIVPOW2 (-12347 / 0x00000080):  long: -96
+2727.    LDIVPOW2 (-12347 / 0x00000100):  long: -48
+2728.    LDIVPOW2 (-12347 / 0x00000200):  long: -24
+2729.    LDIVPOW2 (-12347 / 0x00000400):  long: -12
+2730.    LDIVPOW2 (-12347 / 0x00000800):  long: -6
+2731.    LDIVPOW2 (-12347 / 0x00001000):  long: -3
+2732.    LDIVPOW2 (-12347 / 0x00002000):  long: -1
+2733.    LDIVPOW2 (-12347 / 0x00004000):  long: 0
+2734.    LDIVPOW2 (-12347 / 0x00008000):  long: 0
+2735.    LDIVPOW2 (-12347 / 0x00010000):  long: 0
+2736.    LDIVPOW2 (-12347 / 0x00020000):  long: 0
+2737.    LDIVPOW2 (-12347 / 0x00040000):  long: 0
+2738.    LDIVPOW2 (-12347 / 0x00080000):  long: 0
+2739.    LDIVPOW2 (-12347 / 0x00100000):  long: 0
+2740.    LDIVPOW2 (-12347 / 0x00200000):  long: 0
+2741.    LDIVPOW2 (-12347 / 0x00400000):  long: 0
+2742.    LDIVPOW2 (-12347 / 0x00800000):  long: 0
+2743.    LDIVPOW2 (-12347 / 0x01000000):  long: 0
+2744.    LDIVPOW2 (-12347 / 0x02000000):  long: 0
+2745.    LDIVPOW2 (-12347 / 0x04000000):  long: 0
+2746.    LDIVPOW2 (-12347 / 0x08000000):  long: 0
+2747.    LDIVPOW2 (-12347 / 0x10000000):  long: 0
+2748.    LDIVPOW2 (-12347 / 0x20000000):  long: 0
+2749.    LDIVPOW2 (-12347 / 0x40000000):  long: 0
+2750.    LDIVPOW2 (-12347 / 0x80000000):  long: 0
+2751.    LREMPOW2 (-12347 % 0x00000002):  long: -1
+2752.    LREMPOW2 (-12347 % 0x00000004):  long: -3
+2753.    LREMPOW2 (-12347 % 0x00000008):  long: -3
+2754.    LREMPOW2 (-12347 % 0x00000010):  long: -11
+2755.    LREMPOW2 (-12347 % 0x00000020):  long: -27
+2756.    LREMPOW2 (-12347 % 0x00000040):  long: -59
+2757.    LREMPOW2 (-12347 % 0x00000080):  long: -59
+2758.    LREMPOW2 (-12347 % 0x00000100):  long: -59
+2759.    LREMPOW2 (-12347 % 0x00000200):  long: -59
+2760.    LREMPOW2 (-12347 % 0x00000400):  long: -59
+2761.    LREMPOW2 (-12347 % 0x00000800):  long: -59
+2762.    LREMPOW2 (-12347 % 0x00001000):  long: -59
+2763.    LREMPOW2 (-12347 % 0x00002000):  long: -4155
+2764.    LREMPOW2 (-12347 % 0x00004000):  long: -12347
+2765.    LREMPOW2 (-12347 % 0x00008000):  long: -12347
+2766.    LREMPOW2 (-12347 % 0x00010000):  long: -12347
+2767.    LREMPOW2 (-12347 % 0x00020000):  long: -12347
+2768.    LREMPOW2 (-12347 % 0x00040000):  long: -12347
+2769.    LREMPOW2 (-12347 % 0x00080000):  long: -12347
+2770.    LREMPOW2 (-12347 % 0x00100000):  long: -12347
+2771.    LREMPOW2 (-12347 % 0x00200000):  long: -12347
+2772.    LREMPOW2 (-12347 % 0x00400000):  long: -12347
+2773.    LREMPOW2 (-12347 % 0x00800000):  long: -12347
+2774.    LREMPOW2 (-12347 % 0x01000000):  long: -12347
+2775.    LREMPOW2 (-12347 % 0x02000000):  long: -12347
+2776.    LREMPOW2 (-12347 % 0x04000000):  long: -12347
+2777.    LREMPOW2 (-12347 % 0x08000000):  long: -12347
+2778.    LREMPOW2 (-12347 % 0x10000000):  long: -12347
+2779.    LREMPOW2 (-12347 % 0x20000000):  long: -12347
+2780.    LREMPOW2 (-12347 % 0x40000000):  long: -12347
+2781.    LREMPOW2 (-12347 % 0x80000000):  long: -12347
+2782.    LDIVPOW2 (-8893427 / 0x00000002):  long: -4446713
+2783.    LDIVPOW2 (-8893427 / 0x00000004):  long: -2223356
+2784.    LDIVPOW2 (-8893427 / 0x00000008):  long: -1111678
+2785.    LDIVPOW2 (-8893427 / 0x00000010):  long: -555839
+2786.    LDIVPOW2 (-8893427 / 0x00000020):  long: -277919
+2787.    LDIVPOW2 (-8893427 / 0x00000040):  long: -138959
+2788.    LDIVPOW2 (-8893427 / 0x00000080):  long: -69479
+2789.    LDIVPOW2 (-8893427 / 0x00000100):  long: -34739
+2790.    LDIVPOW2 (-8893427 / 0x00000200):  long: -17369
+2791.    LDIVPOW2 (-8893427 / 0x00000400):  long: -8684
+2792.    LDIVPOW2 (-8893427 / 0x00000800):  long: -4342
+2793.    LDIVPOW2 (-8893427 / 0x00001000):  long: -2171
+2794.    LDIVPOW2 (-8893427 / 0x00002000):  long: -1085
+2795.    LDIVPOW2 (-8893427 / 0x00004000):  long: -542
+2796.    LDIVPOW2 (-8893427 / 0x00008000):  long: -271
+2797.    LDIVPOW2 (-8893427 / 0x00010000):  long: -135
+2798.    LDIVPOW2 (-8893427 / 0x00020000):  long: -67
+2799.    LDIVPOW2 (-8893427 / 0x00040000):  long: -33
+2800.    LDIVPOW2 (-8893427 / 0x00080000):  long: -16
+2801.    LDIVPOW2 (-8893427 / 0x00100000):  long: -8
+2802.    LDIVPOW2 (-8893427 / 0x00200000):  long: -4
+2803.    LDIVPOW2 (-8893427 / 0x00400000):  long: -2
+2804.    LDIVPOW2 (-8893427 / 0x00800000):  long: -1
+2805.    LDIVPOW2 (-8893427 / 0x01000000):  long: 0
+2806.    LDIVPOW2 (-8893427 / 0x02000000):  long: 0
+2807.    LDIVPOW2 (-8893427 / 0x04000000):  long: 0
+2808.    LDIVPOW2 (-8893427 / 0x08000000):  long: 0
+2809.    LDIVPOW2 (-8893427 / 0x10000000):  long: 0
+2810.    LDIVPOW2 (-8893427 / 0x20000000):  long: 0
+2811.    LDIVPOW2 (-8893427 / 0x40000000):  long: 0
+2812.    LDIVPOW2 (-8893427 / 0x80000000):  long: 0
+2813.    LREMPOW2 (-8893427 % 0x00000002):  long: -1
+2814.    LREMPOW2 (-8893427 % 0x00000004):  long: -3
+2815.    LREMPOW2 (-8893427 % 0x00000008):  long: -3
+2816.    LREMPOW2 (-8893427 % 0x00000010):  long: -3
+2817.    LREMPOW2 (-8893427 % 0x00000020):  long: -19
+2818.    LREMPOW2 (-8893427 % 0x00000040):  long: -51
+2819.    LREMPOW2 (-8893427 % 0x00000080):  long: -115
+2820.    LREMPOW2 (-8893427 % 0x00000100):  long: -243
+2821.    LREMPOW2 (-8893427 % 0x00000200):  long: -499
+2822.    LREMPOW2 (-8893427 % 0x00000400):  long: -1011
+2823.    LREMPOW2 (-8893427 % 0x00000800):  long: -1011
+2824.    LREMPOW2 (-8893427 % 0x00001000):  long: -1011
+2825.    LREMPOW2 (-8893427 % 0x00002000):  long: -5107
+2826.    LREMPOW2 (-8893427 % 0x00004000):  long: -13299
+2827.    LREMPOW2 (-8893427 % 0x00008000):  long: -13299
+2828.    LREMPOW2 (-8893427 % 0x00010000):  long: -46067
+2829.    LREMPOW2 (-8893427 % 0x00020000):  long: -111603
+2830.    LREMPOW2 (-8893427 % 0x00040000):  long: -242675
+2831.    LREMPOW2 (-8893427 % 0x00080000):  long: -504819
+2832.    LREMPOW2 (-8893427 % 0x00100000):  long: -504819
+2833.    LREMPOW2 (-8893427 % 0x00200000):  long: -504819
+2834.    LREMPOW2 (-8893427 % 0x00400000):  long: -504819
+2835.    LREMPOW2 (-8893427 % 0x00800000):  long: -504819
+2836.    LREMPOW2 (-8893427 % 0x01000000):  long: -8893427
+2837.    LREMPOW2 (-8893427 % 0x02000000):  long: -8893427
+2838.    LREMPOW2 (-8893427 % 0x04000000):  long: -8893427
+2839.    LREMPOW2 (-8893427 % 0x08000000):  long: -8893427
+2840.    LREMPOW2 (-8893427 % 0x10000000):  long: -8893427
+2841.    LREMPOW2 (-8893427 % 0x20000000):  long: -8893427
+2842.    LREMPOW2 (-8893427 % 0x40000000):  long: -8893427
+2843.    LREMPOW2 (-8893427 % 0x80000000):  long: -8893427
+2844.    LDIVPOW2 (-1005234562 / 0x00000002):  long: -502617281
+2845.    LDIVPOW2 (-1005234562 / 0x00000004):  long: -251308640
+2846.    LDIVPOW2 (-1005234562 / 0x00000008):  long: -125654320
+2847.    LDIVPOW2 (-1005234562 / 0x00000010):  long: -62827160
+2848.    LDIVPOW2 (-1005234562 / 0x00000020):  long: -31413580
+2849.    LDIVPOW2 (-1005234562 / 0x00000040):  long: -15706790
+2850.    LDIVPOW2 (-1005234562 / 0x00000080):  long: -7853395
+2851.    LDIVPOW2 (-1005234562 / 0x00000100):  long: -3926697
+2852.    LDIVPOW2 (-1005234562 / 0x00000200):  long: -1963348
+2853.    LDIVPOW2 (-1005234562 / 0x00000400):  long: -981674
+2854.    LDIVPOW2 (-1005234562 / 0x00000800):  long: -490837
+2855.    LDIVPOW2 (-1005234562 / 0x00001000):  long: -245418
+2856.    LDIVPOW2 (-1005234562 / 0x00002000):  long: -122709
+2857.    LDIVPOW2 (-1005234562 / 0x00004000):  long: -61354
+2858.    LDIVPOW2 (-1005234562 / 0x00008000):  long: -30677
+2859.    LDIVPOW2 (-1005234562 / 0x00010000):  long: -15338
+2860.    LDIVPOW2 (-1005234562 / 0x00020000):  long: -7669
+2861.    LDIVPOW2 (-1005234562 / 0x00040000):  long: -3834
+2862.    LDIVPOW2 (-1005234562 / 0x00080000):  long: -1917
+2863.    LDIVPOW2 (-1005234562 / 0x00100000):  long: -958
+2864.    LDIVPOW2 (-1005234562 / 0x00200000):  long: -479
+2865.    LDIVPOW2 (-1005234562 / 0x00400000):  long: -239
+2866.    LDIVPOW2 (-1005234562 / 0x00800000):  long: -119
+2867.    LDIVPOW2 (-1005234562 / 0x01000000):  long: -59
+2868.    LDIVPOW2 (-1005234562 / 0x02000000):  long: -29
+2869.    LDIVPOW2 (-1005234562 / 0x04000000):  long: -14
+2870.    LDIVPOW2 (-1005234562 / 0x08000000):  long: -7
+2871.    LDIVPOW2 (-1005234562 / 0x10000000):  long: -3
+2872.    LDIVPOW2 (-1005234562 / 0x20000000):  long: -1
+2873.    LDIVPOW2 (-1005234562 / 0x40000000):  long: 0
+2874.    LDIVPOW2 (-1005234562 / 0x80000000):  long: 0
+2875.    LREMPOW2 (-1005234562 % 0x00000002):  long: 0
+2876.    LREMPOW2 (-1005234562 % 0x00000004):  long: -2
+2877.    LREMPOW2 (-1005234562 % 0x00000008):  long: -2
+2878.    LREMPOW2 (-1005234562 % 0x00000010):  long: -2
+2879.    LREMPOW2 (-1005234562 % 0x00000020):  long: -2
+2880.    LREMPOW2 (-1005234562 % 0x00000040):  long: -2
+2881.    LREMPOW2 (-1005234562 % 0x00000080):  long: -2
+2882.    LREMPOW2 (-1005234562 % 0x00000100):  long: -130
+2883.    LREMPOW2 (-1005234562 % 0x00000200):  long: -386
+2884.    LREMPOW2 (-1005234562 % 0x00000400):  long: -386
+2885.    LREMPOW2 (-1005234562 % 0x00000800):  long: -386
+2886.    LREMPOW2 (-1005234562 % 0x00001000):  long: -2434
+2887.    LREMPOW2 (-1005234562 % 0x00002000):  long: -2434
+2888.    LREMPOW2 (-1005234562 % 0x00004000):  long: -10626
+2889.    LREMPOW2 (-1005234562 % 0x00008000):  long: -10626
+2890.    LREMPOW2 (-1005234562 % 0x00010000):  long: -43394
+2891.    LREMPOW2 (-1005234562 % 0x00020000):  long: -43394
+2892.    LREMPOW2 (-1005234562 % 0x00040000):  long: -174466
+2893.    LREMPOW2 (-1005234562 % 0x00080000):  long: -174466
+2894.    LREMPOW2 (-1005234562 % 0x00100000):  long: -698754
+2895.    LREMPOW2 (-1005234562 % 0x00200000):  long: -698754
+2896.    LREMPOW2 (-1005234562 % 0x00400000):  long: -2795906
+2897.    LREMPOW2 (-1005234562 % 0x00800000):  long: -6990210
+2898.    LREMPOW2 (-1005234562 % 0x01000000):  long: -15378818
+2899.    LREMPOW2 (-1005234562 % 0x02000000):  long: -32156034
+2900.    LREMPOW2 (-1005234562 % 0x04000000):  long: -65710466
+2901.    LREMPOW2 (-1005234562 % 0x08000000):  long: -65710466
+2902.    LREMPOW2 (-1005234562 % 0x10000000):  long: -199928194
+2903.    LREMPOW2 (-1005234562 % 0x20000000):  long: -468363650
+2904.    LREMPOW2 (-1005234562 % 0x40000000):  long: -1005234562
+2905.    LREMPOW2 (-1005234562 % 0x80000000):  long: -1005234562
+2906.    LDIVPOW2 (-12135005234562 / 0x00000002):  long: -6067502617281
+2907.    LDIVPOW2 (-12135005234562 / 0x00000004):  long: -3033751308640
+2908.    LDIVPOW2 (-12135005234562 / 0x00000008):  long: -1516875654320
+2909.    LDIVPOW2 (-12135005234562 / 0x00000010):  long: -758437827160
+2910.    LDIVPOW2 (-12135005234562 / 0x00000020):  long: -379218913580
+2911.    LDIVPOW2 (-12135005234562 / 0x00000040):  long: -189609456790
+2912.    LDIVPOW2 (-12135005234562 / 0x00000080):  long: -94804728395
+2913.    LDIVPOW2 (-12135005234562 / 0x00000100):  long: -47402364197
+2914.    LDIVPOW2 (-12135005234562 / 0x00000200):  long: -23701182098
+2915.    LDIVPOW2 (-12135005234562 / 0x00000400):  long: -11850591049
+2916.    LDIVPOW2 (-12135005234562 / 0x00000800):  long: -5925295524
+2917.    LDIVPOW2 (-12135005234562 / 0x00001000):  long: -2962647762
+2918.    LDIVPOW2 (-12135005234562 / 0x00002000):  long: -1481323881
+2919.    LDIVPOW2 (-12135005234562 / 0x00004000):  long: -740661940
+2920.    LDIVPOW2 (-12135005234562 / 0x00008000):  long: -370330970
+2921.    LDIVPOW2 (-12135005234562 / 0x00010000):  long: -185165485
+2922.    LDIVPOW2 (-12135005234562 / 0x00020000):  long: -92582742
+2923.    LDIVPOW2 (-12135005234562 / 0x00040000):  long: -46291371
+2924.    LDIVPOW2 (-12135005234562 / 0x00080000):  long: -23145685
+2925.    LDIVPOW2 (-12135005234562 / 0x00100000):  long: -11572842
+2926.    LDIVPOW2 (-12135005234562 / 0x00200000):  long: -5786421
+2927.    LDIVPOW2 (-12135005234562 / 0x00400000):  long: -2893210
+2928.    LDIVPOW2 (-12135005234562 / 0x00800000):  long: -1446605
+2929.    LDIVPOW2 (-12135005234562 / 0x01000000):  long: -723302
+2930.    LDIVPOW2 (-12135005234562 / 0x02000000):  long: -361651
+2931.    LDIVPOW2 (-12135005234562 / 0x04000000):  long: -180825
+2932.    LDIVPOW2 (-12135005234562 / 0x08000000):  long: -90412
+2933.    LDIVPOW2 (-12135005234562 / 0x10000000):  long: -45206
+2934.    LDIVPOW2 (-12135005234562 / 0x20000000):  long: -22603
+2935.    LDIVPOW2 (-12135005234562 / 0x40000000):  long: -11301
+2936.    LDIVPOW2 (-12135005234562 / 0x80000000):  long: 5650
+2937.    LREMPOW2 (-12135005234562 % 0x00000002):  long: 0
+2938.    LREMPOW2 (-12135005234562 % 0x00000004):  long: -2
+2939.    LREMPOW2 (-12135005234562 % 0x00000008):  long: -2
+2940.    LREMPOW2 (-12135005234562 % 0x00000010):  long: -2
+2941.    LREMPOW2 (-12135005234562 % 0x00000020):  long: -2
+2942.    LREMPOW2 (-12135005234562 % 0x00000040):  long: -2
+2943.    LREMPOW2 (-12135005234562 % 0x00000080):  long: -2
+2944.    LREMPOW2 (-12135005234562 % 0x00000100):  long: -130
+2945.    LREMPOW2 (-12135005234562 % 0x00000200):  long: -386
+2946.    LREMPOW2 (-12135005234562 % 0x00000400):  long: -386
+2947.    LREMPOW2 (-12135005234562 % 0x00000800):  long: -1410
+2948.    LREMPOW2 (-12135005234562 % 0x00001000):  long: -1410
+2949.    LREMPOW2 (-12135005234562 % 0x00002000):  long: -1410
+2950.    LREMPOW2 (-12135005234562 % 0x00004000):  long: -9602
+2951.    LREMPOW2 (-12135005234562 % 0x00008000):  long: -9602
+2952.    LREMPOW2 (-12135005234562 % 0x00010000):  long: -9602
+2953.    LREMPOW2 (-12135005234562 % 0x00020000):  long: -75138
+2954.    LREMPOW2 (-12135005234562 % 0x00040000):  long: -75138
+2955.    LREMPOW2 (-12135005234562 % 0x00080000):  long: -337282
+2956.    LREMPOW2 (-12135005234562 % 0x00100000):  long: -861570
+2957.    LREMPOW2 (-12135005234562 % 0x00200000):  long: -861570
+2958.    LREMPOW2 (-12135005234562 % 0x00400000):  long: -2958722
+2959.    LREMPOW2 (-12135005234562 % 0x00800000):  long: -2958722
+2960.    LREMPOW2 (-12135005234562 % 0x01000000):  long: -11347330
+2961.    LREMPOW2 (-12135005234562 % 0x02000000):  long: -11347330
+2962.    LREMPOW2 (-12135005234562 % 0x04000000):  long: -44901762
+2963.    LREMPOW2 (-12135005234562 % 0x08000000):  long: -112010626
+2964.    LREMPOW2 (-12135005234562 % 0x10000000):  long: -112010626
+2965.    LREMPOW2 (-12135005234562 % 0x20000000):  long: -112010626
+2966.    LREMPOW2 (-12135005234562 % 0x40000000):  long: -648881538
+2967.    LREMPOW2 (-12135005234562 % 0x80000000):  long: -1722623362
+2968.    LDIVPOW2 (-2343552355623464626 / 0x00000002):  long: -1171776177811732313
+2969.    LDIVPOW2 (-2343552355623464626 / 0x00000004):  long: -585888088905866156
+2970.    LDIVPOW2 (-2343552355623464626 / 0x00000008):  long: -292944044452933078
+2971.    LDIVPOW2 (-2343552355623464626 / 0x00000010):  long: -146472022226466539
+2972.    LDIVPOW2 (-2343552355623464626 / 0x00000020):  long: -73236011113233269
+2973.    LDIVPOW2 (-2343552355623464626 / 0x00000040):  long: -36618005556616634
+2974.    LDIVPOW2 (-2343552355623464626 / 0x00000080):  long: -18309002778308317
+2975.    LDIVPOW2 (-2343552355623464626 / 0x00000100):  long: -9154501389154158
+2976.    LDIVPOW2 (-2343552355623464626 / 0x00000200):  long: -4577250694577079
+2977.    LDIVPOW2 (-2343552355623464626 / 0x00000400):  long: -2288625347288539
+2978.    LDIVPOW2 (-2343552355623464626 / 0x00000800):  long: -1144312673644269
+2979.    LDIVPOW2 (-2343552355623464626 / 0x00001000):  long: -572156336822134
+2980.    LDIVPOW2 (-2343552355623464626 / 0x00002000):  long: -286078168411067
+2981.    LDIVPOW2 (-2343552355623464626 / 0x00004000):  long: -143039084205533
+2982.    LDIVPOW2 (-2343552355623464626 / 0x00008000):  long: -71519542102766
+2983.    LDIVPOW2 (-2343552355623464626 / 0x00010000):  long: -35759771051383
+2984.    LDIVPOW2 (-2343552355623464626 / 0x00020000):  long: -17879885525691
+2985.    LDIVPOW2 (-2343552355623464626 / 0x00040000):  long: -8939942762845
+2986.    LDIVPOW2 (-2343552355623464626 / 0x00080000):  long: -4469971381422
+2987.    LDIVPOW2 (-2343552355623464626 / 0x00100000):  long: -2234985690711
+2988.    LDIVPOW2 (-2343552355623464626 / 0x00200000):  long: -1117492845355
+2989.    LDIVPOW2 (-2343552355623464626 / 0x00400000):  long: -558746422677
+2990.    LDIVPOW2 (-2343552355623464626 / 0x00800000):  long: -279373211338
+2991.    LDIVPOW2 (-2343552355623464626 / 0x01000000):  long: -139686605669
+2992.    LDIVPOW2 (-2343552355623464626 / 0x02000000):  long: -69843302834
+2993.    LDIVPOW2 (-2343552355623464626 / 0x04000000):  long: -34921651417
+2994.    LDIVPOW2 (-2343552355623464626 / 0x08000000):  long: -17460825708
+2995.    LDIVPOW2 (-2343552355623464626 / 0x10000000):  long: -8730412854
+2996.    LDIVPOW2 (-2343552355623464626 / 0x20000000):  long: -4365206427
+2997.    LDIVPOW2 (-2343552355623464626 / 0x40000000):  long: -2182603213
+2998.    LDIVPOW2 (-2343552355623464626 / 0x80000000):  long: 1091301606
+2999.    LREMPOW2 (-2343552355623464626 % 0x00000002):  long: 0
+3000.    LREMPOW2 (-2343552355623464626 % 0x00000004):  long: -2
+3001.    LREMPOW2 (-2343552355623464626 % 0x00000008):  long: -2
+3002.    LREMPOW2 (-2343552355623464626 % 0x00000010):  long: -2
+3003.    LREMPOW2 (-2343552355623464626 % 0x00000020):  long: -18
+3004.    LREMPOW2 (-2343552355623464626 % 0x00000040):  long: -50
+3005.    LREMPOW2 (-2343552355623464626 % 0x00000080):  long: -50
+3006.    LREMPOW2 (-2343552355623464626 % 0x00000100):  long: -178
+3007.    LREMPOW2 (-2343552355623464626 % 0x00000200):  long: -178
+3008.    LREMPOW2 (-2343552355623464626 % 0x00000400):  long: -690
+3009.    LREMPOW2 (-2343552355623464626 % 0x00000800):  long: -1714
+3010.    LREMPOW2 (-2343552355623464626 % 0x00001000):  long: -3762
+3011.    LREMPOW2 (-2343552355623464626 % 0x00002000):  long: -3762
+3012.    LREMPOW2 (-2343552355623464626 % 0x00004000):  long: -11954
+3013.    LREMPOW2 (-2343552355623464626 % 0x00008000):  long: -28338
+3014.    LREMPOW2 (-2343552355623464626 % 0x00010000):  long: -28338
+3015.    LREMPOW2 (-2343552355623464626 % 0x00020000):  long: -93874
+3016.    LREMPOW2 (-2343552355623464626 % 0x00040000):  long: -224946
+3017.    LREMPOW2 (-2343552355623464626 % 0x00080000):  long: -487090
+3018.    LREMPOW2 (-2343552355623464626 % 0x00100000):  long: -487090
+3019.    LREMPOW2 (-2343552355623464626 % 0x00200000):  long: -1535666
+3020.    LREMPOW2 (-2343552355623464626 % 0x00400000):  long: -3632818
+3021.    LREMPOW2 (-2343552355623464626 % 0x00800000):  long: -7827122
+3022.    LREMPOW2 (-2343552355623464626 % 0x01000000):  long: -7827122
+3023.    LREMPOW2 (-2343552355623464626 % 0x02000000):  long: -24604338
+3024.    LREMPOW2 (-2343552355623464626 % 0x04000000):  long: -24604338
+3025.    LREMPOW2 (-2343552355623464626 % 0x08000000):  long: -91713202
+3026.    LREMPOW2 (-2343552355623464626 % 0x10000000):  long: -91713202
+3027.    LREMPOW2 (-2343552355623464626 % 0x20000000):  long: -91713202
+3028.    LREMPOW2 (-2343552355623464626 % 0x40000000):  long: -628584114
+3029.    LREMPOW2 (-2343552355623464626 % 0x80000000):  long: -1702325938
+3030.    ------------------- test rem 0x10001
+3031.    IREM0X10001 (0 % 0x10001):  int: 0
+3032.    IREM0X10001 (1 % 0x10001):  int: 1
+3033.    IREM0X10001 (17 % 0x10001):  int: 17
+3034.    IREM0X10001 (123 % 0x10001):  int: 123
+3035.    IREM0X10001 (1234 % 0x10001):  int: 1234
+3036.    IREM0X10001 (13247 % 0x10001):  int: 13247
+3037.    IREM0X10001 (563467 % 0x10001):  int: 39171
+3038.    IREM0X10001 (7456774 % 0x10001):  int: 51093
+3039.    IREM0X10001 (34523525 % 0x10001):  int: 51063
+3040.    IREM0X10001 (234523456 % 0x10001):  int: 32070
+3041.    IREM0X10001 (1005234562 % 0x10001):  int: 28056
+3042.    IREM0X10001 (2147483647 % 0x10001):  int: 32768
+3043.    IREM0X10001 (-1 % 0x10001):  int: -1
+3044.    IREM0X10001 (-17 % 0x10001):  int: -17
+3045.    IREM0X10001 (-123 % 0x10001):  int: -123
+3046.    IREM0X10001 (-1234 % 0x10001):  int: -1234
+3047.    IREM0X10001 (-13247 % 0x10001):  int: -13247
+3048.    IREM0X10001 (-563467 % 0x10001):  int: -39171
+3049.    IREM0X10001 (-7456774 % 0x10001):  int: -51093
+3050.    IREM0X10001 (-34523525 % 0x10001):  int: -51063
+3051.    IREM0X10001 (-234523456 % 0x10001):  int: -32070
+3052.    IREM0X10001 (-1005234562 % 0x10001):  int: -28056
+3053.    IREM0X10001 (-2147483647 % 0x10001):  int: -32768
+3054.    IREM0X10001 (-2147483648 % 0x10001):  int: -32769
+3055.    LREM0X10001 (0 % 0x10001):  long: 0
+3056.    LREM0X10001 (1 % 0x10001):  long: 1
+3057.    LREM0X10001 (17 % 0x10001):  long: 17
+3058.    LREM0X10001 (123 % 0x10001):  long: 123
+3059.    LREM0X10001 (1234 % 0x10001):  long: 1234
+3060.    LREM0X10001 (13247 % 0x10001):  long: 13247
+3061.    LREM0X10001 (563467 % 0x10001):  long: 39171
+3062.    LREM0X10001 (7456774 % 0x10001):  long: 51093
+3063.    LREM0X10001 (34523525 % 0x10001):  long: 51063
+3064.    LREM0X10001 (234523456 % 0x10001):  long: 32070
+3065.    LREM0X10001 (1005234562 % 0x10001):  long: 28056
+3066.    LREM0X10001 (1983223864 % 0x10001):  long: 8707
+3067.    LREM0X10001 (2147483646 % 0x10001):  long: 32767
+3068.    LREM0X10001 (2147483647 % 0x10001):  long: 32768
+3069.    LREM0X10001 (2147483648 % 0x10001):  long: 32769
+3070.    LREM0X10001 (10052234562 % 0x10001):  long: 38428
+3071.    LREM0X10001 (561005234562 % 0x10001):  long: 60289
+3072.    LREM0X10001 (2100527345962 % 0x10001):  long: 41444
+3073.    LREM0X10001 (34600523456287 % 0x10001):  long: 61103
+3074.    LREM0X10001 (546805234456882 % 0x10001):  long: 50879
+3075.    LREM0X10001 (1360052334734722 % 0x10001):  long: 42538
+3076.    LREM0X10001 (23456705569626354 % 0x10001):  long: 37707
+3077.    LREM0X10001 (9223372036854775807 % 0x10001):  long: 32768
+3078.    LREM0X10001 (-1 % 0x10001):  long: -1
+3079.    LREM0X10001 (-17 % 0x10001):  long: -17
+3080.    LREM0X10001 (-123 % 0x10001):  long: -123
+3081.    LREM0X10001 (-1234 % 0x10001):  long: -1234
+3082.    LREM0X10001 (-13247 % 0x10001):  long: -13247
+3083.    LREM0X10001 (-563467 % 0x10001):  long: -39171
+3084.    LREM0X10001 (-7456774 % 0x10001):  long: -51093
+3085.    LREM0X10001 (-34523525 % 0x10001):  long: -51063
+3086.    LREM0X10001 (-234523456 % 0x10001):  long: -32070
+3087.    LREM0X10001 (-1005234562 % 0x10001):  long: -28056
+3088.    LREM0X10001 (-1983223864 % 0x10001):  long: -8707
+3089.    LREM0X10001 (-2147483647 % 0x10001):  long: -32768
+3090.    LREM0X10001 (-2147483648 % 0x10001):  long: -32769
+3091.    LREM0X10001 (-10052234562 % 0x10001):  long: -38428
+3092.    LREM0X10001 (-561005234562 % 0x10001):  long: -60289
+3093.    LREM0X10001 (-2100527345962 % 0x10001):  long: -41444
+3094.    LREM0X10001 (-34600523456287 % 0x10001):  long: -61103
+3095.    LREM0X10001 (-546805234456882 % 0x10001):  long: -50879
+3096.    LREM0X10001 (-1360052334734722 % 0x10001):  long: -42538
+3097.    LREM0X10001 (-23456705569626354 % 0x10001):  long: -37707
+3098.    LREM0X10001 (-9223372036854775807 % 0x10001):  long: -32768
+3099.    LREM0X10001 (-9223372036854775808 % 0x10001):  long: -32769
+3100.    ------------------- test ints
+3101.    TESTINT CALLED WITH int: 1
+3102.                    AND int: 2
+3103.    IADD:  int: 3
+3104.    ISUB:  int: -1
+3105.    IMUL:  int: 2
+3106.    IDIV:  int: 0
+3107.    IREM:  int: 1
+3108.    INEG:  int: -1
+3109.    ISHL:  int: 4
+3110.    ISHR:  int: 0
+3111.    IUSHR: int: 0
+3112.    IAND:  int: 0
+3113.    IOR:   int: 3
+3114.    IXOR:  int: 3
+3115.    I2L:   long: 1
+3116.    I2F:   float: 1065353216
+3117.    I2D:   double: 4607182418800017408
+3118.    INT2BYTE: byte: 1
+3119.    INT2CHAR: char: 1
+3120.    INT2SHORT: short: 1
+3121.    not IFEQ
+3122.    not IFLT
+3123.    not IFLE
+3124.    not IF_ICMPEQ
+3125.    not IF_ICMPGT
+3126.    not IF_ICMPGE
+3127.    COND_ICMPEQ 1 == 0: 1
+3128.    COND_ICMPNE 1 != 0: 0
+3129.    COND_ICMPLT 1 <  0: 1
+3130.    COND_ICMPLE 1 <= 0: 1
+3131.    COND_ICMPGT 1 >  0: 0
+3132.    COND_ICMPGE 1 >= 0: 0
+3133.    COND_ICMPEQ 1 == 0: 0
+3134.    COND_ICMPNE 1 != 0: 1
+3135.    COND_ICMPLT 1 <  0: 0
+3136.    COND_ICMPLE 1 <= 0: 0
+3137.    COND_ICMPGT 1 >  0: 1
+3138.    COND_ICMPGE 1 >= 0: 1
+3139.    COND_ICMPEQ 1 == 0: 3
+3140.    COND_ICMPNE 1 != 0: 2
+3141.    COND_ICMPLT 1 <  0: 3
+3142.    COND_ICMPLE 1 <= 0: 3
+3143.    COND_ICMPGT 1 >  0: 2
+3144.    COND_ICMPGE 1 >= 0: 2
+3145.    COND_ICMPEQ 1 == 2: false
+3146.    COND_ICMPNE 1 != 2: true
+3147.    COND_ICMPLT 1 <  2: true
+3148.    COND_ICMPLE 1 <= 2: true
+3149.    COND_ICMPGT 1 >  2: false
+3150.    COND_ICMPGE 1 >= 2: false
+3151.    TESTINT CALLED WITH int: -1
+3152.                    AND int: 17
+3153.    IADD:  int: 16
+3154.    ISUB:  int: -18
+3155.    IMUL:  int: -17
+3156.    IDIV:  int: 0
+3157.    IREM:  int: -1
+3158.    INEG:  int: 1
+3159.    ISHL:  int: -131072
+3160.    ISHR:  int: -1
+3161.    IUSHR: int: 32767
+3162.    IAND:  int: 17
+3163.    IOR:   int: -1
+3164.    IXOR:  int: -18
+3165.    I2L:   long: -1
+3166.    I2F:   float: -1082130432
+3167.    I2D:   double: -4616189618054758400
+3168.    INT2BYTE: byte: -1
+3169.    INT2CHAR: char: 65535
+3170.    INT2SHORT: short: -1
+3171.    not IFEQ
+3172.    not IFGT
+3173.    not IFGE
+3174.    not IF_ICMPEQ
+3175.    not IF_ICMPGT
+3176.    not IF_ICMPGE
+3177.    COND_ICMPEQ -1 == 0: 1
+3178.    COND_ICMPNE -1 != 0: 0
+3179.    COND_ICMPLT -1 <  0: 0
+3180.    COND_ICMPLE -1 <= 0: 0
+3181.    COND_ICMPGT -1 >  0: 1
+3182.    COND_ICMPGE -1 >= 0: 1
+3183.    COND_ICMPEQ -1 == 0: 0
+3184.    COND_ICMPNE -1 != 0: 1
+3185.    COND_ICMPLT -1 <  0: 1
+3186.    COND_ICMPLE -1 <= 0: 1
+3187.    COND_ICMPGT -1 >  0: 0
+3188.    COND_ICMPGE -1 >= 0: 0
+3189.    COND_ICMPEQ -1 == 0: 3
+3190.    COND_ICMPNE -1 != 0: 2
+3191.    COND_ICMPLT -1 <  0: 2
+3192.    COND_ICMPLE -1 <= 0: 2
+3193.    COND_ICMPGT -1 >  0: 3
+3194.    COND_ICMPGE -1 >= 0: 3
+3195.    COND_ICMPEQ -1 == 17: false
+3196.    COND_ICMPNE -1 != 17: true
+3197.    COND_ICMPLT -1 <  17: true
+3198.    COND_ICMPLE -1 <= 17: true
+3199.    COND_ICMPGT -1 >  17: false
+3200.    COND_ICMPGE -1 >= 17: false
+3201.    TESTINT CALLED WITH int: -24351
+3202.                    AND int: 24123
+3203.    IADD:  int: -228
+3204.    ISUB:  int: -48474
+3205.    IMUL:  int: -587419173
+3206.    IDIV:  int: -1
+3207.    IREM:  int: -228
+3208.    INEG:  int: 24351
+3209.    ISHL:  int: 134217728
+3210.    ISHR:  int: -1
+3211.    IUSHR: int: 31
+3212.    IAND:  int: 33
+3213.    IOR:   int: -261
+3214.    IXOR:  int: -294
+3215.    I2L:   long: -24351
+3216.    I2F:   float: -960610816
+3217.    I2D:   double: -4550949270986948608
+3218.    INT2BYTE: byte: -31
+3219.    INT2CHAR: char: 41185
+3220.    INT2SHORT: short: -24351
+3221.    not IFEQ
+3222.    not IFGT
+3223.    not IFGE
+3224.    not IF_ICMPEQ
+3225.    not IF_ICMPGT
+3226.    not IF_ICMPGE
+3227.    COND_ICMPEQ -24351 == 0: 1
+3228.    COND_ICMPNE -24351 != 0: 0
+3229.    COND_ICMPLT -24351 <  0: 0
+3230.    COND_ICMPLE -24351 <= 0: 0
+3231.    COND_ICMPGT -24351 >  0: 1
+3232.    COND_ICMPGE -24351 >= 0: 1
+3233.    COND_ICMPEQ -24351 == 0: 0
+3234.    COND_ICMPNE -24351 != 0: 1
+3235.    COND_ICMPLT -24351 <  0: 1
+3236.    COND_ICMPLE -24351 <= 0: 1
+3237.    COND_ICMPGT -24351 >  0: 0
+3238.    COND_ICMPGE -24351 >= 0: 0
+3239.    COND_ICMPEQ -24351 == 0: 3
+3240.    COND_ICMPNE -24351 != 0: 2
+3241.    COND_ICMPLT -24351 <  0: 2
+3242.    COND_ICMPLE -24351 <= 0: 2
+3243.    COND_ICMPGT -24351 >  0: 3
+3244.    COND_ICMPGE -24351 >= 0: 3
+3245.    COND_ICMPEQ -24351 == 24123: false
+3246.    COND_ICMPNE -24351 != 24123: true
+3247.    COND_ICMPLT -24351 <  24123: true
+3248.    COND_ICMPLE -24351 <= 24123: true
+3249.    COND_ICMPGT -24351 >  24123: false
+3250.    COND_ICMPGE -24351 >= 24123: false
+3251.    TESTINT CALLED WITH int: 4918923
+3252.                    AND int: -441423
+3253.    IADD:  int: 4477500
+3254.    ISUB:  int: 5360346
+3255.    IMUL:  int: 1927704347
+3256.    IDIV:  int: -11
+3257.    IREM:  int: 63270
+3258.    INEG:  int: -4918923
+3259.    ISHL:  int: 487981056
+3260.    ISHR:  int: 37
+3261.    IUSHR: int: 37
+3262.    IAND:  int: 4784769
+3263.    IOR:   int: -307269
+3264.    IXOR:  int: -5092038
+3265.    I2L:   long: 4918923
+3266.    I2F:   float: 1251351830
+3267.    I2D:   double: 4707039664328933376
+3268.    INT2BYTE: byte: -117
+3269.    INT2CHAR: char: 3723
+3270.    INT2SHORT: short: 3723
+3271.    not IFEQ
+3272.    not IFLT
+3273.    not IFLE
+3274.    not IF_ICMPEQ
+3275.    not IF_ICMPLT
+3276.    not IF_ICMPLE
+3277.    COND_ICMPEQ 4918923 == 0: 1
+3278.    COND_ICMPNE 4918923 != 0: 0
+3279.    COND_ICMPLT 4918923 <  0: 1
+3280.    COND_ICMPLE 4918923 <= 0: 1
+3281.    COND_ICMPGT 4918923 >  0: 0
+3282.    COND_ICMPGE 4918923 >= 0: 0
+3283.    COND_ICMPEQ 4918923 == 0: 0
+3284.    COND_ICMPNE 4918923 != 0: 1
+3285.    COND_ICMPLT 4918923 <  0: 0
+3286.    COND_ICMPLE 4918923 <= 0: 0
+3287.    COND_ICMPGT 4918923 >  0: 1
+3288.    COND_ICMPGE 4918923 >= 0: 1
+3289.    COND_ICMPEQ 4918923 == 0: 3
+3290.    COND_ICMPNE 4918923 != 0: 2
+3291.    COND_ICMPLT 4918923 <  0: 3
+3292.    COND_ICMPLE 4918923 <= 0: 3
+3293.    COND_ICMPGT 4918923 >  0: 2
+3294.    COND_ICMPGE 4918923 >= 0: 2
+3295.    COND_ICMPEQ 4918923 == -441423: false
+3296.    COND_ICMPNE 4918923 != -441423: true
+3297.    COND_ICMPLT 4918923 <  -441423: false
+3298.    COND_ICMPLE 4918923 <= -441423: false
+3299.    COND_ICMPGT 4918923 >  -441423: true
+3300.    COND_ICMPGE 4918923 >= -441423: true
+3301.    TESTINT CALLED WITH int: 0
+3302.                    AND int: 0
+3303.    IADD:  int: 0
+3304.    ISUB:  int: 0
+3305.    IMUL:  int: 0
+3306.    divison by zero
+3307.    divison by zero
+3308.    INEG:  int: 0
+3309.    ISHL:  int: 0
+3310.    ISHR:  int: 0
+3311.    IUSHR: int: 0
+3312.    IAND:  int: 0
+3313.    IOR:   int: 0
+3314.    IXOR:  int: 0
+3315.    I2L:   long: 0
+3316.    I2F:   float: 0
+3317.    I2D:   double: 0
+3318.    INT2BYTE: byte: 0
+3319.    INT2CHAR: char: 0
+3320.    INT2SHORT: short: 0
+3321.    not IFNE
+3322.    not IFLT
+3323.    not IFGT
+3324.    not IF_ICMPNE
+3325.    not IF_ICMPLT
+3326.    not IF_ICMPGT
+3327.    COND_ICMPEQ 0 == 0: 0
+3328.    COND_ICMPNE 0 != 0: 1
+3329.    COND_ICMPLT 0 <  0: 1
+3330.    COND_ICMPLE 0 <= 0: 0
+3331.    COND_ICMPGT 0 >  0: 1
+3332.    COND_ICMPGE 0 >= 0: 0
+3333.    COND_ICMPEQ 0 == 0: 1
+3334.    COND_ICMPNE 0 != 0: 0
+3335.    COND_ICMPLT 0 <  0: 0
+3336.    COND_ICMPLE 0 <= 0: 1
+3337.    COND_ICMPGT 0 >  0: 0
+3338.    COND_ICMPGE 0 >= 0: 1
+3339.    COND_ICMPEQ 0 == 0: 2
+3340.    COND_ICMPNE 0 != 0: 3
+3341.    COND_ICMPLT 0 <  0: 3
+3342.    COND_ICMPLE 0 <= 0: 2
+3343.    COND_ICMPGT 0 >  0: 3
+3344.    COND_ICMPGE 0 >= 0: 2
+3345.    COND_ICMPEQ 0 == 0: true
+3346.    COND_ICMPNE 0 != 0: false
+3347.    COND_ICMPLT 0 <  0: false
+3348.    COND_ICMPLE 0 <= 0: true
+3349.    COND_ICMPGT 0 >  0: false
+3350.    COND_ICMPGE 0 >= 0: true
+3351.    TESTINT CALLED WITH int: -1
+3352.                    AND int: -1
+3353.    IADD:  int: -2
+3354.    ISUB:  int: 0
+3355.    IMUL:  int: 1
+3356.    IDIV:  int: 1
+3357.    IREM:  int: 0
+3358.    INEG:  int: 1
+3359.    ISHL:  int: -2147483648
+3360.    ISHR:  int: -1
+3361.    IUSHR: int: 1
+3362.    IAND:  int: -1
+3363.    IOR:   int: -1
+3364.    IXOR:  int: 0
+3365.    I2L:   long: -1
+3366.    I2F:   float: -1082130432
+3367.    I2D:   double: -4616189618054758400
+3368.    INT2BYTE: byte: -1
+3369.    INT2CHAR: char: 65535
+3370.    INT2SHORT: short: -1
+3371.    not IFEQ
+3372.    not IFGT
+3373.    not IFGE
+3374.    not IF_ICMPNE
+3375.    not IF_ICMPLT
+3376.    not IF_ICMPGT
+3377.    COND_ICMPEQ -1 == 0: 1
+3378.    COND_ICMPNE -1 != 0: 0
+3379.    COND_ICMPLT -1 <  0: 0
+3380.    COND_ICMPLE -1 <= 0: 0
+3381.    COND_ICMPGT -1 >  0: 1
+3382.    COND_ICMPGE -1 >= 0: 1
+3383.    COND_ICMPEQ -1 == 0: 0
+3384.    COND_ICMPNE -1 != 0: 1
+3385.    COND_ICMPLT -1 <  0: 1
+3386.    COND_ICMPLE -1 <= 0: 1
+3387.    COND_ICMPGT -1 >  0: 0
+3388.    COND_ICMPGE -1 >= 0: 0
+3389.    COND_ICMPEQ -1 == 0: 3
+3390.    COND_ICMPNE -1 != 0: 2
+3391.    COND_ICMPLT -1 <  0: 2
+3392.    COND_ICMPLE -1 <= 0: 2
+3393.    COND_ICMPGT -1 >  0: 3
+3394.    COND_ICMPGE -1 >= 0: 3
+3395.    COND_ICMPEQ -1 == -1: true
+3396.    COND_ICMPNE -1 != -1: false
+3397.    COND_ICMPLT -1 <  -1: false
+3398.    COND_ICMPLE -1 <= -1: true
+3399.    COND_ICMPGT -1 >  -1: false
+3400.    COND_ICMPGE -1 >= -1: true
+3401.    TESTINT CALLED WITH int: 1423487
+3402.                    AND int: 123444444
+3403.    IADD:  int: 124867931
+3404.    ISUB:  int: -122020957
+3405.    IMUL:  int: 1564274980
+3406.    IDIV:  int: 0
+3407.    IREM:  int: 1423487
+3408.    INEG:  int: -1423487
+3409.    ISHL:  int: -268435456
+3410.    ISHR:  int: 0
+3411.    IUSHR: int: 0
+3412.    IAND:  int: 1153116
+3413.    IOR:   int: 123714815
+3414.    IXOR:  int: 122561699
+3415.    I2L:   long: 1423487
+3416.    I2F:   float: 1236124664
+3417.    I2D:   double: 4698864641831337984
+3418.    INT2BYTE: byte: 127
+3419.    INT2CHAR: char: 47231
+3420.    INT2SHORT: short: -18305
+3421.    not IFEQ
+3422.    not IFLT
+3423.    not IFLE
+3424.    not IF_ICMPEQ
+3425.    not IF_ICMPGT
+3426.    not IF_ICMPGE
+3427.    COND_ICMPEQ 1423487 == 0: 1
+3428.    COND_ICMPNE 1423487 != 0: 0
+3429.    COND_ICMPLT 1423487 <  0: 1
+3430.    COND_ICMPLE 1423487 <= 0: 1
+3431.    COND_ICMPGT 1423487 >  0: 0
+3432.    COND_ICMPGE 1423487 >= 0: 0
+3433.    COND_ICMPEQ 1423487 == 0: 0
+3434.    COND_ICMPNE 1423487 != 0: 1
+3435.    COND_ICMPLT 1423487 <  0: 0
+3436.    COND_ICMPLE 1423487 <= 0: 0
+3437.    COND_ICMPGT 1423487 >  0: 1
+3438.    COND_ICMPGE 1423487 >= 0: 1
+3439.    COND_ICMPEQ 1423487 == 0: 3
+3440.    COND_ICMPNE 1423487 != 0: 2
+3441.    COND_ICMPLT 1423487 <  0: 3
+3442.    COND_ICMPLE 1423487 <= 0: 3
+3443.    COND_ICMPGT 1423487 >  0: 2
+3444.    COND_ICMPGE 1423487 >= 0: 2
+3445.    COND_ICMPEQ 1423487 == 123444444: false
+3446.    COND_ICMPNE 1423487 != 123444444: true
+3447.    COND_ICMPLT 1423487 <  123444444: true
+3448.    COND_ICMPLE 1423487 <= 123444444: true
+3449.    COND_ICMPGT 1423487 >  123444444: false
+3450.    COND_ICMPGE 1423487 >= 123444444: false
+3451.    TESTINT CALLED WITH int: 2147483647
+3452.                    AND int: 1
+3453.    IADD:  int: -2147483648
+3454.    ISUB:  int: 2147483646
+3455.    IMUL:  int: 2147483647
+3456.    IDIV:  int: 2147483647
+3457.    IREM:  int: 0
+3458.    INEG:  int: -2147483647
+3459.    ISHL:  int: -2
+3460.    ISHR:  int: 1073741823
+3461.    IUSHR: int: 1073741823
+3462.    IAND:  int: 1
+3463.    IOR:   int: 2147483647
+3464.    IXOR:  int: 2147483646
+3465.    I2L:   long: 2147483647
+3466.    I2F:   float: 1325400064
+3467.    I2D:   double: 4746794007244308480
+3468.    INT2BYTE: byte: -1
+3469.    INT2CHAR: char: 65535
+3470.    INT2SHORT: short: -1
+3471.    not IFEQ
+3472.    not IFLT
+3473.    not IFLE
+3474.    not IF_ICMPEQ
+3475.    not IF_ICMPLT
+3476.    not IF_ICMPLE
+3477.    COND_ICMPEQ 2147483647 == 0: 1
+3478.    COND_ICMPNE 2147483647 != 0: 0
+3479.    COND_ICMPLT 2147483647 <  0: 1
+3480.    COND_ICMPLE 2147483647 <= 0: 1
+3481.    COND_ICMPGT 2147483647 >  0: 0
+3482.    COND_ICMPGE 2147483647 >= 0: 0
+3483.    COND_ICMPEQ 2147483647 == 0: 0
+3484.    COND_ICMPNE 2147483647 != 0: 1
+3485.    COND_ICMPLT 2147483647 <  0: 0
+3486.    COND_ICMPLE 2147483647 <= 0: 0
+3487.    COND_ICMPGT 2147483647 >  0: 1
+3488.    COND_ICMPGE 2147483647 >= 0: 1
+3489.    COND_ICMPEQ 2147483647 == 0: 3
+3490.    COND_ICMPNE 2147483647 != 0: 2
+3491.    COND_ICMPLT 2147483647 <  0: 3
+3492.    COND_ICMPLE 2147483647 <= 0: 3
+3493.    COND_ICMPGT 2147483647 >  0: 2
+3494.    COND_ICMPGE 2147483647 >= 0: 2
+3495.    COND_ICMPEQ 2147483647 == 1: false
+3496.    COND_ICMPNE 2147483647 != 1: true
+3497.    COND_ICMPLT 2147483647 <  1: false
+3498.    COND_ICMPLE 2147483647 <= 1: false
+3499.    COND_ICMPGT 2147483647 >  1: true
+3500.    COND_ICMPGE 2147483647 >= 1: true
+3501.    TESTINT CALLED WITH int: 0
+3502.                    AND int: 2147483647
+3503.    IADD:  int: 2147483647
+3504.    ISUB:  int: -2147483647
+3505.    IMUL:  int: 0
+3506.    IDIV:  int: 0
+3507.    IREM:  int: 0
+3508.    INEG:  int: 0
+3509.    ISHL:  int: 0
+3510.    ISHR:  int: 0
+3511.    IUSHR: int: 0
+3512.    IAND:  int: 0
+3513.    IOR:   int: 2147483647
+3514.    IXOR:  int: 2147483647
+3515.    I2L:   long: 0
+3516.    I2F:   float: 0
+3517.    I2D:   double: 0
+3518.    INT2BYTE: byte: 0
+3519.    INT2CHAR: char: 0
+3520.    INT2SHORT: short: 0
+3521.    not IFNE
+3522.    not IFLT
+3523.    not IFGT
+3524.    not IF_ICMPEQ
+3525.    not IF_ICMPGT
+3526.    not IF_ICMPGE
+3527.    COND_ICMPEQ 0 == 0: 0
+3528.    COND_ICMPNE 0 != 0: 1
+3529.    COND_ICMPLT 0 <  0: 1
+3530.    COND_ICMPLE 0 <= 0: 0
+3531.    COND_ICMPGT 0 >  0: 1
+3532.    COND_ICMPGE 0 >= 0: 0
+3533.    COND_ICMPEQ 0 == 0: 1
+3534.    COND_ICMPNE 0 != 0: 0
+3535.    COND_ICMPLT 0 <  0: 0
+3536.    COND_ICMPLE 0 <= 0: 1
+3537.    COND_ICMPGT 0 >  0: 0
+3538.    COND_ICMPGE 0 >= 0: 1
+3539.    COND_ICMPEQ 0 == 0: 2
+3540.    COND_ICMPNE 0 != 0: 3
+3541.    COND_ICMPLT 0 <  0: 3
+3542.    COND_ICMPLE 0 <= 0: 2
+3543.    COND_ICMPGT 0 >  0: 3
+3544.    COND_ICMPGE 0 >= 0: 2
+3545.    COND_ICMPEQ 0 == 2147483647: false
+3546.    COND_ICMPNE 0 != 2147483647: true
+3547.    COND_ICMPLT 0 <  2147483647: true
+3548.    COND_ICMPLE 0 <= 2147483647: true
+3549.    COND_ICMPGT 0 >  2147483647: false
+3550.    COND_ICMPGE 0 >= 2147483647: false
+3551.    TESTINT CALLED WITH int: 13107
+3552.                    AND int: 143444
+3553.    IADD:  int: 156551
+3554.    ISUB:  int: -130337
+3555.    IMUL:  int: 1880120508
+3556.    IDIV:  int: 0
+3557.    IREM:  int: 13107
+3558.    INEG:  int: -13107
+3559.    ISHL:  int: 858783744
+3560.    ISHR:  int: 0
+3561.    IUSHR: int: 0
+3562.    IAND:  int: 12304
+3563.    IOR:   int: 144247
+3564.    IXOR:  int: 131943
+3565.    I2L:   long: 13107
+3566.    I2F:   float: 1179438080
+3567.    I2D:   double: 4668431263781093376
+3568.    INT2BYTE: byte: 51
+3569.    INT2CHAR: char: 13107
+3570.    INT2SHORT: short: 13107
+3571.    not IFEQ
+3572.    not IFLT
+3573.    not IFLE
+3574.    not IF_ICMPEQ
+3575.    not IF_ICMPGT
+3576.    not IF_ICMPGE
+3577.    COND_ICMPEQ 13107 == 0: 1
+3578.    COND_ICMPNE 13107 != 0: 0
+3579.    COND_ICMPLT 13107 <  0: 1
+3580.    COND_ICMPLE 13107 <= 0: 1
+3581.    COND_ICMPGT 13107 >  0: 0
+3582.    COND_ICMPGE 13107 >= 0: 0
+3583.    COND_ICMPEQ 13107 == 0: 0
+3584.    COND_ICMPNE 13107 != 0: 1
+3585.    COND_ICMPLT 13107 <  0: 0
+3586.    COND_ICMPLE 13107 <= 0: 0
+3587.    COND_ICMPGT 13107 >  0: 1
+3588.    COND_ICMPGE 13107 >= 0: 1
+3589.    COND_ICMPEQ 13107 == 0: 3
+3590.    COND_ICMPNE 13107 != 0: 2
+3591.    COND_ICMPLT 13107 <  0: 3
+3592.    COND_ICMPLE 13107 <= 0: 3
+3593.    COND_ICMPGT 13107 >  0: 2
+3594.    COND_ICMPGE 13107 >= 0: 2
+3595.    COND_ICMPEQ 13107 == 143444: false
+3596.    COND_ICMPNE 13107 != 143444: true
+3597.    COND_ICMPLT 13107 <  143444: true
+3598.    COND_ICMPLE 13107 <= 143444: true
+3599.    COND_ICMPGT 13107 >  143444: false
+3600.    COND_ICMPGE 13107 >= 143444: false
+3601.    TESTINT CALLED WITH int: 4444441
+3602.                    AND int: 12342
+3603.    IADD:  int: 4456783
+3604.    ISUB:  int: 4432099
+3605.    IMUL:  int: -981284026
+3606.    IDIV:  int: 360
+3607.    IREM:  int: 1321
+3608.    INEG:  int: -4444441
+3609.    ISHL:  int: 1178599424
+3610.    ISHR:  int: 1
+3611.    IUSHR: int: 1
+3612.    IAND:  int: 4112
+3613.    IOR:   int: 4452671
+3614.    IXOR:  int: 4448559
+3615.    I2L:   long: 4444441
+3616.    I2F:   float: 1250402866
+3617.    I2D:   double: 4706530193160798208
+3618.    INT2BYTE: byte: 25
+3619.    INT2CHAR: char: 53529
+3620.    INT2SHORT: short: -12007
+3621.    not IFEQ
+3622.    not IFLT
+3623.    not IFLE
+3624.    not IF_ICMPEQ
+3625.    not IF_ICMPLT
+3626.    not IF_ICMPLE
+3627.    COND_ICMPEQ 4444441 == 0: 1
+3628.    COND_ICMPNE 4444441 != 0: 0
+3629.    COND_ICMPLT 4444441 <  0: 1
+3630.    COND_ICMPLE 4444441 <= 0: 1
+3631.    COND_ICMPGT 4444441 >  0: 0
+3632.    COND_ICMPGE 4444441 >= 0: 0
+3633.    COND_ICMPEQ 4444441 == 0: 0
+3634.    COND_ICMPNE 4444441 != 0: 1
+3635.    COND_ICMPLT 4444441 <  0: 0
+3636.    COND_ICMPLE 4444441 <= 0: 0
+3637.    COND_ICMPGT 4444441 >  0: 1
+3638.    COND_ICMPGE 4444441 >= 0: 1
+3639.    COND_ICMPEQ 4444441 == 0: 3
+3640.    COND_ICMPNE 4444441 != 0: 2
+3641.    COND_ICMPLT 4444441 <  0: 3
+3642.    COND_ICMPLE 4444441 <= 0: 3
+3643.    COND_ICMPGT 4444441 >  0: 2
+3644.    COND_ICMPGE 4444441 >= 0: 2
+3645.    COND_ICMPEQ 4444441 == 12342: false
+3646.    COND_ICMPNE 4444441 != 12342: true
+3647.    COND_ICMPLT 4444441 <  12342: false
+3648.    COND_ICMPLE 4444441 <= 12342: false
+3649.    COND_ICMPGT 4444441 >  12342: true
+3650.    COND_ICMPGE 4444441 >= 12342: true
+3651.    ------------------- test longs
+3652.    TESTLONG called with long: 1
+3653.                     AND long: 2
+3654.    LADD:  long: 3
+3655.    LSUB:  long: -1
+3656.    LMUL:  long: 2
+3657.    LDIV:  long: 0
+3658.    LREM:  long: 1
+3659.    LNEG:  long: -1
+3660.    LSHL:  long: 4
+3661.    LSHR:  long: 0
+3662.    LUSHR: long: 0
+3663.    LAND:  long: 0
+3664.    LOR:   long: 3
+3665.    LXOR:  long: 3
+3666.    L2I:   int: 1
+3667.    L2F:   float: 1065353216
+3668.    L2D:   double: 4607182418800017408
+3669.    LCMP a == b : false
+3670.    LCMP a != b : true
+3671.    LCMP a <  b : true
+3672.    LCMP a <= b : true
+3673.    LCMP a >  b : false
+3674.    LCMP a >= b : false
+3675.    not IF_LCMPNE
+3676.    not IF_LCMPLT
+3677.    not IF_LCMPLE
+3678.    TESTLONG called with long: -1
+3679.                     AND long: 17
+3680.    LADD:  long: 16
+3681.    LSUB:  long: -18
+3682.    LMUL:  long: -17
+3683.    LDIV:  long: 0
+3684.    LREM:  long: -1
+3685.    LNEG:  long: 1
+3686.    LSHL:  long: -131072
+3687.    LSHR:  long: -1
+3688.    LUSHR: long: 140737488355327
+3689.    LAND:  long: 17
+3690.    LOR:   long: -1
+3691.    LXOR:  long: -18
+3692.    L2I:   int: -1
+3693.    L2F:   float: -1082130432
+3694.    L2D:   double: -4616189618054758400
+3695.    LCMP a == b : false
+3696.    LCMP a != b : true
+3697.    LCMP a <  b : true
+3698.    LCMP a <= b : true
+3699.    LCMP a >  b : false
+3700.    LCMP a >= b : false
+3701.    not IF_LCMPNE
+3702.    not IF_LCMPLT
+3703.    not IF_LCMPLE
+3704.    TESTLONG called with long: -24351
+3705.                     AND long: 24123
+3706.    LADD:  long: -228
+3707.    LSUB:  long: -48474
+3708.    LMUL:  long: -587419173
+3709.    LDIV:  long: -1
+3710.    LREM:  long: -228
+3711.    LNEG:  long: 24351
+3712.    LSHL:  long: 576460752303423488
+3713.    LSHR:  long: -1
+3714.    LUSHR: long: 31
+3715.    LAND:  long: 33
+3716.    LOR:   long: -261
+3717.    LXOR:  long: -294
+3718.    L2I:   int: -24351
+3719.    L2F:   float: -960610816
+3720.    L2D:   double: -4550949270986948608
+3721.    LCMP a == b : false
+3722.    LCMP a != b : true
+3723.    LCMP a <  b : true
+3724.    LCMP a <= b : true
+3725.    LCMP a >  b : false
+3726.    LCMP a >= b : false
+3727.    not IF_LCMPNE
+3728.    not IF_LCMPLT
+3729.    not IF_LCMPLE
+3730.    TESTLONG called with long: 4918923241323
+3731.                     AND long: -4423423234231423
+3732.    LADD:  long: -4418504310990100
+3733.    LSUB:  long: 4428342157472746
+3734.    LMUL:  long: -4222930371437023765
+3735.    LDIV:  long: 0
+3736.    LREM:  long: 4918923241323
+3737.    LNEG:  long: -4918923241323
+3738.    LSHL:  long: 9837846482646
+3739.    LSHR:  long: 2459461620661
+3740.    LUSHR: long: 2459461620661
+3741.    LAND:  long: 451041567489
+3742.    LOR:   long: -4418955352557589
+3743.    LXOR:  long: -4419406394125078
+3744.    L2I:   int: 1185687403
+3745.    L2F:   float: 1418668246
+3746.    L2D:   double: 4796866980921322496
+3747.    LCMP a == b : false
+3748.    LCMP a != b : true
+3749.    LCMP a <  b : false
+3750.    LCMP a <= b : false
+3751.    LCMP a >  b : true
+3752.    LCMP a >= b : true
+3753.    not IF_LCMPNE
+3754.    not IF_LCMPGT
+3755.    not IF_LCMPGE
+3756.    TESTLONG called with long: 0
+3757.                     AND long: 0
+3758.    LADD:  long: 0
+3759.    LSUB:  long: 0
+3760.    LMUL:  long: 0
+3761.    divison by zero
+3762.    divison by zero
+3763.    LNEG:  long: 0
+3764.    LSHL:  long: 0
+3765.    LSHR:  long: 0
+3766.    LUSHR: long: 0
+3767.    LAND:  long: 0
+3768.    LOR:   long: 0
+3769.    LXOR:  long: 0
+3770.    L2I:   int: 0
+3771.    L2F:   float: 0
+3772.    L2D:   double: 0
+3773.    LCMP a == b : true
+3774.    LCMP a != b : false
+3775.    LCMP a <  b : false
+3776.    LCMP a <= b : true
+3777.    LCMP a >  b : false
+3778.    LCMP a >= b : true
+3779.    not IF_LCMPEQ
+3780.    not IF_LCMPLE
+3781.    not IF_LCMPGE
+3782.    TESTLONG called with long: -1
+3783.                     AND long: -1
+3784.    LADD:  long: -2
+3785.    LSUB:  long: 0
+3786.    LMUL:  long: 1
+3787.    LDIV:  long: 1
+3788.    LREM:  long: 0
+3789.    LNEG:  long: 1
+3790.    LSHL:  long: -9223372036854775808
+3791.    LSHR:  long: -1
+3792.    LUSHR: long: 1
+3793.    LAND:  long: -1
+3794.    LOR:   long: -1
+3795.    LXOR:  long: 0
+3796.    L2I:   int: -1
+3797.    L2F:   float: -1082130432
+3798.    L2D:   double: -4616189618054758400
+3799.    LCMP a == b : true
+3800.    LCMP a != b : false
+3801.    LCMP a <  b : false
+3802.    LCMP a <= b : true
+3803.    LCMP a >  b : false
+3804.    LCMP a >= b : true
+3805.    not IF_LCMPEQ
+3806.    not IF_LCMPLE
+3807.    not IF_LCMPGE
+3808.    TESTLONG called with long: 1423487
+3809.                     AND long: 123444442344
+3810.    LADD:  long: 123445865831
+3811.    LSUB:  long: -123443018857
+3812.    LMUL:  long: 175721558898933528
+3813.    LDIV:  long: 0
+3814.    LREM:  long: 1423487
+3815.    LNEG:  long: -1423487
+3816.    LSHL:  long: 1565140508487974912
+3817.    LSHR:  long: 0
+3818.    LUSHR: long: 0
+3819.    LAND:  long: 1355880
+3820.    LOR:   long: 123444509951
+3821.    LXOR:  long: 123443154071
+3822.    L2I:   int: 1423487
+3823.    L2F:   float: 1236124664
+3824.    L2D:   double: 4698864641831337984
+3825.    LCMP a == b : false
+3826.    LCMP a != b : true
+3827.    LCMP a <  b : true
+3828.    LCMP a <= b : true
+3829.    LCMP a >  b : false
+3830.    LCMP a >= b : false
+3831.    not IF_LCMPNE
+3832.    not IF_LCMPLT
+3833.    not IF_LCMPLE
+3834.    TESTLONG called with long: 9223372036854775807
+3835.                     AND long: 1
+3836.    LADD:  long: -9223372036854775808
+3837.    LSUB:  long: 9223372036854775806
+3838.    LMUL:  long: 9223372036854775807
+3839.    LDIV:  long: 9223372036854775807
+3840.    LREM:  long: 0
+3841.    LNEG:  long: -9223372036854775807
+3842.    LSHL:  long: -2
+3843.    LSHR:  long: 4611686018427387903
+3844.    LUSHR: long: 4611686018427387903
+3845.    LAND:  long: 1
+3846.    LOR:   long: 9223372036854775807
+3847.    LXOR:  long: 9223372036854775806
+3848.    L2I:   int: -1
+3849.    L2F:   float: 1593835520
+3850.    L2D:   double: 4890909195324358656
+3851.    LCMP a == b : false
+3852.    LCMP a != b : true
+3853.    LCMP a <  b : false
+3854.    LCMP a <= b : false
+3855.    LCMP a >  b : true
+3856.    LCMP a >= b : true
+3857.    not IF_LCMPNE
+3858.    not IF_LCMPGT
+3859.    not IF_LCMPGE
+3860.    TESTLONG called with long: 0
+3861.                     AND long: 9223372036854775807
+3862.    LADD:  long: 9223372036854775807
+3863.    LSUB:  long: -9223372036854775807
+3864.    LMUL:  long: 0
+3865.    LDIV:  long: 0
+3866.    LREM:  long: 0
+3867.    LNEG:  long: 0
+3868.    LSHL:  long: 0
+3869.    LSHR:  long: 0
+3870.    LUSHR: long: 0
+3871.    LAND:  long: 0
+3872.    LOR:   long: 9223372036854775807
+3873.    LXOR:  long: 9223372036854775807
+3874.    L2I:   int: 0
+3875.    L2F:   float: 0
+3876.    L2D:   double: 0
+3877.    LCMP a == b : false
+3878.    LCMP a != b : true
+3879.    LCMP a <  b : true
+3880.    LCMP a <= b : true
+3881.    LCMP a >  b : false
+3882.    LCMP a >= b : false
+3883.    not IF_LCMPNE
+3884.    not IF_LCMPLT
+3885.    not IF_LCMPLE
+3886.    TESTLONG called with long: 13107
+3887.                     AND long: 143444
+3888.    LADD:  long: 156551
+3889.    LSUB:  long: -130337
+3890.    LMUL:  long: 1880120508
+3891.    LDIV:  long: 0
+3892.    LREM:  long: 13107
+3893.    LNEG:  long: -13107
+3894.    LSHL:  long: 13743685632
+3895.    LSHR:  long: 0
+3896.    LUSHR: long: 0
+3897.    LAND:  long: 12304
+3898.    LOR:   long: 144247
+3899.    LXOR:  long: 131943
+3900.    L2I:   int: 13107
+3901.    L2F:   float: 1179438080
+3902.    L2D:   double: 4668431263781093376
+3903.    LCMP a == b : false
+3904.    LCMP a != b : true
+3905.    LCMP a <  b : true
+3906.    LCMP a <= b : true
+3907.    LCMP a >  b : false
+3908.    LCMP a >= b : false
+3909.    not IF_LCMPNE
+3910.    not IF_LCMPLT
+3911.    not IF_LCMPLE
+3912.    TESTLONG called with long: 4444441
+3913.                     AND long: 12342
+3914.    LADD:  long: 4456783
+3915.    LSUB:  long: 4432099
+3916.    LMUL:  long: 54853290822
+3917.    LDIV:  long: 360
+3918.    LREM:  long: 1321
+3919.    LNEG:  long: -4444441
+3920.    LSHL:  long: 5062045981164437504
+3921.    LSHR:  long: 0
+3922.    LUSHR: long: 0
+3923.    LAND:  long: 4112
+3924.    LOR:   long: 4452671
+3925.    LXOR:  long: 4448559
+3926.    L2I:   int: 4444441
+3927.    L2F:   float: 1250402866
+3928.    L2D:   double: 4706530193160798208
+3929.    LCMP a == b : false
+3930.    LCMP a != b : true
+3931.    LCMP a <  b : false
+3932.    LCMP a <= b : false
+3933.    LCMP a >  b : true
+3934.    LCMP a >= b : true
+3935.    not IF_LCMPNE
+3936.    not IF_LCMPGT
+3937.    not IF_LCMPGE
+3938.    ------------------- test floats
+3939.    TESTFLOAT called with float: 1065353216
+3940.                      AND float: 1073917985
+3941.    FADD:  float: 1078112289
+3942.    FSUB:  float: -1081778110
+3943.    FMUL:  float: 1073917985
+3944.    FDIV:  float: 1056619533
+3945.    FREM:  float: 1065353216
+3946.    F2I:   int: 1
+3947.    F2L:   long: 1
+3948.    F2D:   double: 4607182418800017408
+3949.    FCMP a!=b
+3950.    FCMP a<b
+3951.    FCMP a<=b
+3952.    TESTFLOAT called with float: -1080167498
+3953.                      AND float: 1099662623
+3954.    FADD:  float: 1099015652
+3955.    FSUB:  float: -1047174054
+3956.    FMUL:  float: -1045681427
+3957.    FDIV:  float: -1114576645
+3958.    FREM:  float: -1080167498
+3959.    F2I:   int: -1
+3960.    F2L:   long: -1
+3961.    F2D:   double: -4615135775887982592
+3962.    FCMP a!=b
+3963.    FCMP a<b
+3964.    FCMP a<=b
+3965.    TESTFLOAT called with float: -960610816
+3966.                      AND float: 1186756096
+3967.    FADD:  float: -1016856576
+3968.    FSUB:  float: -952280576
+3969.    FMUL:  float: -838070983
+3970.    FDIV:  float: -1082051147
+3971.    FREM:  float: -1016856576
+3972.    F2I:   int: -24351
+3973.    F2L:   long: -24351
+3974.    F2D:   double: -4550949270986948608
+3975.    FCMP a!=b
+3976.    FCMP a<b
+3977.    FCMP a<=b
+3978.    TESTFLOAT called with float: 1036831949
+3979.                      AND float: 1151033344
+3980.    FADD:  float: 1151034163
+3981.    FSUB:  float: -996451123
+3982.    FMUL:  float: 1123588506
+3983.    FDIV:  float: 950581132
+3984.    FREM:  float: 1036831949
+3985.    F2I:   int: 0
+3986.    F2L:   long: 0
+3987.    F2D:   double: 4591870180174331904
+3988.    FCMP a!=b
+3989.    FCMP a<b
+3990.    FCMP a<=b
+3991.    TESTFLOAT called with float: 0
+3992.                      AND float: -1005921678
+3993.    FADD:  float: -1005921678
+3994.    FSUB:  float: 1141561970
+3995.    FMUL:  float: -2147483648
+3996.    FDIV:  float: -2147483648
+3997.    FREM:  float: 0
+3998.    F2I:   int: 0
+3999.    F2L:   long: 0
+4000.    F2D:   double: 0
+4001.    FCMP a!=b
+4002.    FCMP a>b
+4003.    FCMP a>=b
+4004.    TESTFLOAT called with float: 1117388800
+4005.                      AND float: -1005928448
+4006.    FADD:  float: -1007747072
+4007.    FSUB:  float: 1142816768
+4008.    FMUL:  float: -953749760
+4009.    FDIV:  float: -1106374265
+4010.    FREM:  float: 1117388800
+4011.    F2I:   int: 77
+4012.    F2L:   long: 77
+4013.    F2D:   double: 4635118810238550016
+4014.    FCMP a!=b
+4015.    FCMP a>b
+4016.    FCMP a>=b
+4017.    TESTFLOAT called with float: 1325400059
+4018.                      AND float: -922251744
+4019.    FADD:  float: 1325395721
+4020.    FSUB:  float: 1325402230
+4021.    FMUL:  float: -662204899
+4022.    FDIV:  float: -982402220
+4023.    FREM:  float: 1220539712
+4024.    F2I:   int: 2147483008
+4025.    F2L:   long: 2147483008
+4026.    F2D:   double: 4746794004564148224
+4027.    FCMP a!=b
+4028.    FCMP a>b
+4029.    FCMP a>=b
+4030.    ------------------- test doubles
+4031.    TESTDOUBLE called with double: 4607182418800017408
+4032.                       AND double: 4611780594144116736
+4033.    DADD:  double: 4614032393957801984
+4034.    DSUB:  double: -4616000466621300736
+4035.    DMUL:  double: 4611780594144116736
+4036.    DDIV:  double: 4602493558224229689
+4037.    DREM:  double: 4607182418800017408
+4038.    D2I:   int: 1
+4039.    D2L:   long: 1
+4040.    D2F:   float: 1065353216
+4041.    DCMP a!=b
+4042.    DCMP a<b
+4043.    DCMP a<=b
+4044.    TESTDOUBLE called with double: -4615135775887982592
+4045.                       AND double: 4625602141426286592
+4046.    DADD:  double: 4625254801314152448
+4047.    DSUB:  double: -4597422555316355072
+4048.    DMUL:  double: -4596621207431527808
+4049.    DDIV:  double: -4633609045894396972
+4050.    DREM:  double: -4615135775887982592
+4051.    D2I:   int: -1
+4052.    D2L:   long: -1
+4053.    D2F:   float: -1080167498
+4054.    DCMP a!=b
+4055.    DCMP a<b
+4056.    DCMP a<=b
+4057.    TESTDOUBLE called with double: -4550949270986948608
+4058.                       AND double: 4672360093705043968
+4059.    DADD:  double: -4581145983454281728
+4060.    DSUB:  double: -4546477007440969728
+4061.    DMUL:  double: -4485161199314403328
+4062.    DDIV:  double: -4616147052009281450
+4063.    DREM:  double: -4581145983454281728
+4064.    D2I:   int: -24351
+4065.    D2L:   long: -24351
+4066.    D2F:   float: -960610816
+4067.    DCMP a!=b
+4068.    DCMP a<b
+4069.    DCMP a<=b
+4070.    TESTDOUBLE called with double: 4591870180174331904
+4071.                       AND double: 4653181587259654144
+4072.    DADD:  double: 4653182027064311808
+4073.    DSUB:  double: -4570190889399779328
+4074.    DMUL:  double: 4638447251968491520
+4075.    DDIV:  double: 4545564625306141371
+4076.    DREM:  double: 4591870180174331904
+4077.    D2I:   int: 0
+4078.    D2L:   long: 0
+4079.    D2F:   float: 1036831949
+4080.    DCMP a!=b
+4081.    DCMP a<b
+4082.    DCMP a<=b
+4083.    TESTDOUBLE called with double: 0
+4084.                       AND double: -4575275354792394752
+4085.    DADD:  double: -4575275354792394752
+4086.    DSUB:  double: 4648096682062381056
+4087.    DMUL:  double: -9223372036854775808
+4088.    DDIV:  double: -9223372036854775808
+4089.    DREM:  double: 0
+4090.    D2I:   int: 0
+4091.    D2L:   long: 0
+4092.    D2F:   float: 0
+4093.    DCMP a!=b
+4094.    DCMP a>b
+4095.    DCMP a>=b
+4096.    TESTDOUBLE called with double: 4635118810238550016
+4097.                       AND double: -4575278989408468992
+4098.    DADD:  double: -4576255355733934080
+4099.    DSUB:  double: 4648770346609016832
+4100.    DMUL:  double: -4547265769594945536
+4101.    DDIV:  double: -4629205426707555293
+4102.    DREM:  double: 4635118810238550016
+4103.    D2I:   int: 77
+4104.    D2L:   long: 77
+4105.    D2F:   float: 1117388800
+4106.    DCMP a!=b
+4107.    DCMP a>b
+4108.    DCMP a>=b
+4109.    TESTDOUBLE called with double: 4746794004564148224
+4110.                       AND double: -4530355401018834944
+4111.    DADD:  double: 4746791675743961088
+4112.    DSUB:  double: 4746795170316419072
+4113.    DMUL:  double: -4390743813991748608
+4114.    DDIV:  double: -4562648441847017049
+4115.    DREM:  double: 4690497534437621760
+4116.    D2I:   int: 2147483008
+4117.    D2L:   long: 2147483008
+4118.    D2F:   float: 1325400059
+4119.    DCMP a!=b
+4120.    DCMP a>b
+4121.    DCMP a>=b
+4122.    =================== end of test =========================
+4123.    
\ No newline at end of file
index 4720376a43cf6404b78f57a3070968f027cf68b5..00bfbf7ffcf4b593d185b904f4044fcd6ab7f37c 100644 (file)
@@ -55,28 +55,28 @@ public class jctest implements jcinterface {
                testconst (0x7fffffff, 0x7fffffffffffffffL);
                testconst (0x80000000, 0x8000000000000000L);
 
-               p ("------------------- test rem consts");
-               testremconst(17);
-               testremconst(12347);
-               testremconst(8893427);
-               testremconst(1005234562);
-               testremconst(-17);
-               testremconst(-12347);
-               testremconst(-8893427);
-               testremconst(-1005234562);
-
-               testremconst(17L);
-               testremconst(12347L);
-               testremconst(8893427L);
-               testremconst(1005234562L);
-               testremconst(12135005234562L);
-               testremconst(2343552355623464626L);
-               testremconst(-17L);
-               testremconst(-12347L);
-               testremconst(-8893427L);
-               testremconst(-1005234562L);
-               testremconst(-12135005234562L);
-               testremconst(-2343552355623464626L);
+               p ("------------------- test div and rem consts");
+               testdivremconst(17);
+               testdivremconst(12347);
+               testdivremconst(8893427);
+               testdivremconst(1005234562);
+               testdivremconst(-17);
+               testdivremconst(-12347);
+               testdivremconst(-8893427);
+               testdivremconst(-1005234562);
+
+               testdivremconst(17L);
+               testdivremconst(12347L);
+               testdivremconst(8893427L);
+               testdivremconst(1005234562L);
+               testdivremconst(12135005234562L);
+               testdivremconst(2343552355623464626L);
+               testdivremconst(-17L);
+               testdivremconst(-12347L);
+               testdivremconst(-8893427L);
+               testdivremconst(-1005234562L);
+               testdivremconst(-12135005234562L);
+               testdivremconst(-2343552355623464626L);
 
                p ("------------------- test rem 0x10001");
                testrem0x10001(0);
@@ -1102,7 +1102,39 @@ public class jctest implements jcinterface {
                p("LREM0X10001 (" + a + " % 0x10001):  ", a % 0x10001L);
                }
 
-       static public void testremconst(int a) {
+       static public void testdivremconst(int a) {
+               p("IDIVPOW2 (" + a + " / 0x00000002):  ", a / 0x00000002);
+               p("IDIVPOW2 (" + a + " / 0x00000004):  ", a / 0x00000004);
+               p("IDIVPOW2 (" + a + " / 0x00000008):  ", a / 0x00000008);
+               p("IDIVPOW2 (" + a + " / 0x00000010):  ", a / 0x00000010);
+               p("IDIVPOW2 (" + a + " / 0x00000020):  ", a / 0x00000020);
+               p("IDIVPOW2 (" + a + " / 0x00000040):  ", a / 0x00000040);
+               p("IDIVPOW2 (" + a + " / 0x00000080):  ", a / 0x00000080);
+               p("IDIVPOW2 (" + a + " / 0x00000100):  ", a / 0x00000100);
+               p("IDIVPOW2 (" + a + " / 0x00000200):  ", a / 0x00000200);
+               p("IDIVPOW2 (" + a + " / 0x00000400):  ", a / 0x00000400);
+               p("IDIVPOW2 (" + a + " / 0x00000800):  ", a / 0x00000800);
+               p("IDIVPOW2 (" + a + " / 0x00001000):  ", a / 0x00001000);
+               p("IDIVPOW2 (" + a + " / 0x00002000):  ", a / 0x00002000);
+               p("IDIVPOW2 (" + a + " / 0x00004000):  ", a / 0x00004000);
+               p("IDIVPOW2 (" + a + " / 0x00008000):  ", a / 0x00008000);
+               p("IDIVPOW2 (" + a + " / 0x00010000):  ", a / 0x00010000);
+               p("IDIVPOW2 (" + a + " / 0x00020000):  ", a / 0x00020000);
+               p("IDIVPOW2 (" + a + " / 0x00040000):  ", a / 0x00040000);
+               p("IDIVPOW2 (" + a + " / 0x00080000):  ", a / 0x00080000);
+               p("IDIVPOW2 (" + a + " / 0x00100000):  ", a / 0x00100000);
+               p("IDIVPOW2 (" + a + " / 0x00200000):  ", a / 0x00200000);
+               p("IDIVPOW2 (" + a + " / 0x00400000):  ", a / 0x00400000);
+               p("IDIVPOW2 (" + a + " / 0x00800000):  ", a / 0x00800000);
+               p("IDIVPOW2 (" + a + " / 0x01000000):  ", a / 0x01000000);
+               p("IDIVPOW2 (" + a + " / 0x02000000):  ", a / 0x02000000);
+               p("IDIVPOW2 (" + a + " / 0x04000000):  ", a / 0x04000000);
+               p("IDIVPOW2 (" + a + " / 0x08000000):  ", a / 0x08000000);
+               p("IDIVPOW2 (" + a + " / 0x10000000):  ", a / 0x10000000);
+               p("IDIVPOW2 (" + a + " / 0x20000000):  ", a / 0x20000000);
+               p("IDIVPOW2 (" + a + " / 0x40000000):  ", a / 0x40000000);
+               p("IDIVPOW2 (" + a + " / 0x80000000):  ", a / 0x80000000);
+
                p("IREMPOW2 (" + a + " % 0x00000002):  ", a % 0x00000002);
                p("IREMPOW2 (" + a + " % 0x00000004):  ", a % 0x00000004);
                p("IREMPOW2 (" + a + " % 0x00000008):  ", a % 0x00000008);
@@ -1136,7 +1168,39 @@ public class jctest implements jcinterface {
                p("IREMPOW2 (" + a + " % 0x80000000):  ", a % 0x80000000);
                }
 
-       static public void testremconst(long a) {
+       static public void testdivremconst(long a) {
+               p("LDIVPOW2 (" + a + " / 0x00000002):  ", a / 0x00000002);
+               p("LDIVPOW2 (" + a + " / 0x00000004):  ", a / 0x00000004);
+               p("LDIVPOW2 (" + a + " / 0x00000008):  ", a / 0x00000008);
+               p("LDIVPOW2 (" + a + " / 0x00000010):  ", a / 0x00000010);
+               p("LDIVPOW2 (" + a + " / 0x00000020):  ", a / 0x00000020);
+               p("LDIVPOW2 (" + a + " / 0x00000040):  ", a / 0x00000040);
+               p("LDIVPOW2 (" + a + " / 0x00000080):  ", a / 0x00000080);
+               p("LDIVPOW2 (" + a + " / 0x00000100):  ", a / 0x00000100);
+               p("LDIVPOW2 (" + a + " / 0x00000200):  ", a / 0x00000200);
+               p("LDIVPOW2 (" + a + " / 0x00000400):  ", a / 0x00000400);
+               p("LDIVPOW2 (" + a + " / 0x00000800):  ", a / 0x00000800);
+               p("LDIVPOW2 (" + a + " / 0x00001000):  ", a / 0x00001000);
+               p("LDIVPOW2 (" + a + " / 0x00002000):  ", a / 0x00002000);
+               p("LDIVPOW2 (" + a + " / 0x00004000):  ", a / 0x00004000);
+               p("LDIVPOW2 (" + a + " / 0x00008000):  ", a / 0x00008000);
+               p("LDIVPOW2 (" + a + " / 0x00010000):  ", a / 0x00010000);
+               p("LDIVPOW2 (" + a + " / 0x00020000):  ", a / 0x00020000);
+               p("LDIVPOW2 (" + a + " / 0x00040000):  ", a / 0x00040000);
+               p("LDIVPOW2 (" + a + " / 0x00080000):  ", a / 0x00080000);
+               p("LDIVPOW2 (" + a + " / 0x00100000):  ", a / 0x00100000);
+               p("LDIVPOW2 (" + a + " / 0x00200000):  ", a / 0x00200000);
+               p("LDIVPOW2 (" + a + " / 0x00400000):  ", a / 0x00400000);
+               p("LDIVPOW2 (" + a + " / 0x00800000):  ", a / 0x00800000);
+               p("LDIVPOW2 (" + a + " / 0x01000000):  ", a / 0x01000000);
+               p("LDIVPOW2 (" + a + " / 0x02000000):  ", a / 0x02000000);
+               p("LDIVPOW2 (" + a + " / 0x04000000):  ", a / 0x04000000);
+               p("LDIVPOW2 (" + a + " / 0x08000000):  ", a / 0x08000000);
+               p("LDIVPOW2 (" + a + " / 0x10000000):  ", a / 0x10000000);
+               p("LDIVPOW2 (" + a + " / 0x20000000):  ", a / 0x20000000);
+               p("LDIVPOW2 (" + a + " / 0x40000000):  ", a / 0x40000000);
+               p("LDIVPOW2 (" + a + " / 0x80000000):  ", a / 0x80000000);
+
                p("LREMPOW2 (" + a + " % 0x00000002):  ", a % 0x00000002L);
                p("LREMPOW2 (" + a + " % 0x00000004):  ", a % 0x00000004L);
                p("LREMPOW2 (" + a + " % 0x00000008):  ", a % 0x00000008L);
@@ -1211,6 +1275,34 @@ public class jctest implements jcinterface {
                if (!(a>b))  p("not IF_ICMPGT");
                if (!(a>=b)) p("not IF_ICMPGE");
                
+               p("COND_ICMPEQ " + a + " == 0: " + ((a == 0) ? 0 : 1));
+               p("COND_ICMPNE " + a + " != 0: " + ((a != 0) ? 0 : 1));
+               p("COND_ICMPLT " + a + " <  0: " + ((a <  0) ? 0 : 1));
+               p("COND_ICMPLE " + a + " <= 0: " + ((a <= 0) ? 0 : 1));
+               p("COND_ICMPGT " + a + " >  0: " + ((a >  0) ? 0 : 1));
+               p("COND_ICMPGE " + a + " >= 0: " + ((a >= 0) ? 0 : 1));
+               
+               p("COND_ICMPEQ " + a + " == 0: " + ((a == 0) ? 1 : 0));
+               p("COND_ICMPNE " + a + " != 0: " + ((a != 0) ? 1 : 0));
+               p("COND_ICMPLT " + a + " <  0: " + ((a <  0) ? 1 : 0));
+               p("COND_ICMPLE " + a + " <= 0: " + ((a <= 0) ? 1 : 0));
+               p("COND_ICMPGT " + a + " >  0: " + ((a >  0) ? 1 : 0));
+               p("COND_ICMPGE " + a + " >= 0: " + ((a >= 0) ? 1 : 0));
+               
+               p("COND_ICMPEQ " + a + " == 0: " + ((a == 0) ? 2 : 3));
+               p("COND_ICMPNE " + a + " != 0: " + ((a != 0) ? 2 : 3));
+               p("COND_ICMPLT " + a + " <  0: " + ((a <  0) ? 2 : 3));
+               p("COND_ICMPLE " + a + " <= 0: " + ((a <= 0) ? 2 : 3));
+               p("COND_ICMPGT " + a + " >  0: " + ((a >  0) ? 2 : 3));
+               p("COND_ICMPGE " + a + " >= 0: " + ((a >= 0) ? 2 : 3));
+               
+               p("COND_ICMPEQ " + a + " == " + b + ": " + (a == b));
+               p("COND_ICMPNE " + a + " != " + b + ": " + (a != b));
+               p("COND_ICMPLT " + a + " <  " + b + ": " + (a <  b));
+               p("COND_ICMPLE " + a + " <= " + b + ": " + (a <= b));
+               p("COND_ICMPGT " + a + " >  " + b + ": " + (a >  b));
+               p("COND_ICMPGE " + a + " >= " + b + ": " + (a >= b));
+               
        }
 
        static public void testlong(long a, long b) {