changeset 436:d92786033042 loprtc-div

loprtc
author kono
date Sun, 14 Nov 2004 15:41:05 +0900
parents d3e6359f8501
children 49d4483d5110
files Changes mc-code-arm.c mc-code-ia32.c mc-code-mips.c mc-code-powerpc.c mc-codegen.c mc-parse.c test/code-gen.c
diffstat 8 files changed, 443 insertions(+), 240 deletions(-) [+]
line wrap: on
line diff
--- a/Changes	Thu Nov 11 00:39:37 2004 +0900
+++ b/Changes	Sun Nov 14 15:41:05 2004 +0900
@@ -6556,3 +6556,60 @@
 Thu Nov  4 10:15:29 JST 2004
 
 あ、なんか long long の定数シフトで > 32 の場合を忘れているね。
+
+Fri Nov 12 15:37:42 JST 2004
+
+やっぱり、record (taged union) は欲しいよね。
+
+    struct {
+       enum {hoge0,hoge1,hoge2} i;
+       switch(i) {
+       case hoge0: struct {...} b;
+       case hoge1: struct {...} c;
+       case hoge2: struct {...} d;
+       }
+    } a;
+
+    assert(a.i==hoge0);
+    a.b.j = 3;
+    assert(a.i==hoge0);
+    printf("%d\n",a.b.j);
+
+うーん、あんまり良くないなぁ。これだったら、いらないよね。
+
+Fri Nov 12 15:59:32 JST 2004
+
+Template あるいは型変数は入れたくないよね。入れるとしても、
+上位言語だろうなぁ。
+
+Sat Nov 13 11:05:06 JST 2004
+
+main() { printf("%d,%d\n", -555>>3,-555/8); }
+-70,-69
+
+なるほどね。
+
+なんか arm-linux-gcc がバグっているな...
+
+    ltosop_register()
+    {
+    register long long i1,i2,i; 
+    register unsigned long long u1,u2,u; 
+    u1 = 632423423; u2= 32394234;
+    u = 0;
+        ....
+    u = u1 & u2;
+    printf("#2052:ltosop r u 6 %llu\n",u);
+
+        sub     r6, fp, #48
+        ldmia   r6, {r2-r3}
+        sub     r7, fp, #48   <---?!
+        ldmdb   r7, {r6-r7}
+        and     r2, r2, r6
+        and     r3, r3, r7
+        sub     r7, fp, #64
+        stmia   r7, {r2-r3}
+        ldr     r0, .L640+92
+
+なんでかね。
+
--- a/mc-code-arm.c	Thu Nov 11 00:39:37 2004 +0900
+++ b/mc-code-arm.c	Sun Nov 14 15:41:05 2004 +0900
@@ -5172,10 +5172,10 @@
     } else return 0;
     
     switch(op) {
-    case LMUL: case LUMUL: case LDIV: case LUDIV:
+    case LMUL: case LUMUL: /* case LDIV: */ case LUDIV:
 	return ilog(v);
     case LLSHIFT: case LULSHIFT: case LRSHIFT: case LURSHIFT:
-	return 0<v&&v<=32;
+	return 0<v&&v<=64;
     case LADD:
     case LSUB:
     case LBOR:
@@ -5212,6 +5212,16 @@
         v=ilog(v);
     case LLSHIFT:
     case LULSHIFT:
+        if (v==0) return;
+        if (v==32) {
+            code_register(regv_l(creg),regv_h(creg));
+            code_const(0,regv_l(creg));
+            return;
+        } else if (v>31) {
+            printf("\tmov\t%s, %s, lsl #%d\n",crn_h,crn_l,v-32);
+            code_const(0,regv_l(creg));
+            return;
+        }
 	greg = get_register();
 	grn = register_name(greg);
 	inc_inst(4);
@@ -5224,6 +5234,16 @@
     case LDIV:
         v=ilog(v);
     case LRSHIFT:
+        if (v==0) return;
+        if (v==32) {
+            code_register(regv_h(creg),regv_l(creg));
+            printf("\tmov\t%s, %s asr #31\n",crn_h,crn_l);
+            return;
+        } else if (v>31) {
+            printf("\tmov\t%s, %s, asr #%d\n",crn_l,crn_h,v-32);
+            printf("\tmov\t%s, %s, asr #31\n",crn_h,crn_l);
+            return;
+        }
 	greg = get_register();
 	grn = register_name(greg);
 	inc_inst(4);
@@ -5236,6 +5256,16 @@
     case LUDIV:
         v=ilog(v);
     case LURSHIFT:
+        if (v==0) return;
+        if (v==32) {
+            code_register(regv_h(creg),regv_l(creg));
+            code_const(0,regv_h(creg));
+            return;
+        } else if (v>31) {
+            printf("\tmov\t%s, %s, lsr #%d\n",crn_l,crn_h,v-32);
+            code_const(0,regv_h(creg));
+            return;
+        }
 	greg = get_register();
 	grn = register_name(greg);
 	inc_inst(4);
--- a/mc-code-ia32.c	Thu Nov 11 00:39:37 2004 +0900
+++ b/mc-code-ia32.c	Sun Nov 14 15:41:05 2004 +0900
@@ -2923,6 +2923,11 @@
     case LRSHIFT:
     case LURSHIFT:
 	return (0<=l&&l<=63);
+    case LMUL:
+    case LUMUL:
+    case LUDIV:
+    /* case LDIV: */
+	return -0x10000000LL<l&&l<0x10000000LL && ilog(l);
     case LADD:
     case LSUB:
     case LBAND:
@@ -2952,6 +2957,8 @@
     opl = 0;
 
     switch(op) {
+    case LMUL: case LUMUL:
+        vl=il=ilog(il);
     case LLSHIFT:
     case LULSHIFT:
 	if (il==0) return;
@@ -2983,6 +2990,8 @@
         printf("\tshrdl $%d,%s,%s\n",(int)il,l_edx(reg),l_eax(reg));
         printf("\tsarl $%d,%s\n",(int)il,l_edx(reg));
 	return;
+    case LUDIV:
+        il=ilog(il);
     case LURSHIFT:
 	if (il==0) return;
 	else if (il==32) {
--- a/mc-code-mips.c	Thu Nov 11 00:39:37 2004 +0900
+++ b/mc-code-mips.c	Sun Nov 14 15:41:05 2004 +0900
@@ -4799,6 +4799,11 @@
 	return 1;
     case LBOR:
 	return  (v>0);
+    case LMUL:
+    case LUMUL:
+    case LUDIV:
+    /* case LDIV: */
+        return ilog(v);
     default:
 	return 0;
     }
@@ -4821,8 +4826,20 @@
     else if (car(e)==CONST) v = cadr(e);
 
     switch(op) {
+    case LMUL: case LUMUL:
+        v=ilog(v);
     case LLSHIFT:
     case LULSHIFT:
+        if (v==0) return;
+        if (v==32) {
+            code_register(regv_l(creg),regv_h(creg));
+            code_const(0,regv_l(creg));
+            return;
+        } else if (v>31) {
+            printf("\tsll %s,%s,%d\n",crn_h,crn_l,v-32);
+            code_const(0,regv_l(creg));
+            return;
+        }
 	greg = get_register();
 	grn = register_name(greg);
 	printf("\tsll %s,%s,%d\n",crn_h,crn_h,v);
@@ -4832,6 +4849,16 @@
 	free_register(greg);
 	return;
     case LRSHIFT:
+        if (v==0) return;
+        if (v==32) {
+            code_register(regv_h(creg),regv_l(creg));
+            printf("\tsra %s,%s,31\n",crn_h,crn_l);
+            return;
+        } else if (v>31) {
+            printf("\tsra %s,%s,%d\n",crn_l,crn_h,v-32);
+            printf("\tsra %s,%s,31\n",crn_h,crn_l);
+            return;
+        }
 	greg = get_register();
 	grn = register_name(greg);
 	printf("\tsrl %s,%s,%d\n",crn_l,crn_l,v);
@@ -4840,7 +4867,19 @@
 	printf("\tsra %s,%s,%d\n",crn_h,crn_h,v);
 	free_register(greg);
 	return;
+    case LUDIV:
+        v=ilog(v);
     case LURSHIFT:
+        if (v==0) return;
+        if (v==32) {
+            code_register(regv_h(creg),regv_l(creg));
+            code_const(0,regv_h(creg));
+            return;
+        } else if (v>31) {
+            printf("\tsrl %s,%s,%d\n",crn_l,crn_h,v-32);
+            code_const(0,regv_h(creg));
+            return;
+        }
 	greg = get_register();
 	grn = register_name(greg);
 	printf("\tsll %s,%s,%d\n",grn,crn_h,32-v);
--- a/mc-code-powerpc.c	Thu Nov 11 00:39:37 2004 +0900
+++ b/mc-code-powerpc.c	Sun Nov 14 15:41:05 2004 +0900
@@ -4528,6 +4528,9 @@
     } else return 0;
     
     switch(op) {
+    case LMUL: case LUMUL: case LUDIV:
+// case LDIV: 
+        return ilog(v);
     case LLSHIFT:
     case LULSHIFT:
     case LRSHIFT:
@@ -4560,6 +4563,8 @@
     else if (car(e)==CONST) v = cadr(e);
 
     switch(op) {
+    case LMUL: case LUMUL:
+        v=ilog(v);
     case LLSHIFT:
     case LULSHIFT:
 	if (v==0) return;
@@ -4581,6 +4586,8 @@
 	printf("\tslwi %s,%s,%d\n",crn_l,crn_l,v);
 	free_register(greg);
 	return;
+    case LDIV:
+        v=ilog(v);
     case LRSHIFT:
 	if (v==0) return;
 	if (v==32) {
@@ -4601,6 +4608,8 @@
 	printf("\tmr %s,%s\n",crn_l,grn);
 	free_register(greg);
 	return;
+    case LUDIV:
+        v=ilog(v);
     case LURSHIFT:
 	if (v==0) return;
 	if (v==32) {
--- a/mc-codegen.c	Thu Nov 11 00:39:37 2004 +0900
+++ b/mc-codegen.c	Sun Nov 14 15:41:05 2004 +0900
@@ -3215,7 +3215,7 @@
     int e=0;
     long long le1, le2;
     long long le = 0;
-    int us = (t1==ULONGLONG&&t2==ULONGLONG);
+    int us = ((t1==ULONGLONG||t1==UNSIGNED)&&(t2==ULONGLONG||t2==UNSIGNED));
 
     if (us||(t1==ULONGLONG&&(op==LSHIFT||op==RSHIFT))) {
 	type=t1; e1=ulonglong_value(e1);
@@ -3237,7 +3237,7 @@
 	case ADD:
 	    le=le1+le2;break;
 	case SUB:
-	    le=le1-le2;break;
+	    le=le1-le2; type=LONGLONG; break;
 	case MUL:
 	    le=le1*le2;break;
 	case DIV:
@@ -3287,6 +3287,7 @@
     } else if(op==GT||op==GE||op==LT||op==LE) {
 	type = INT; return(list3(op+LOP+us,e1,e2));
     }
+    if(op==SUB) { us = 0; type=LONGLONG; }
     if(op==SUB&&car(e2)==LCONST) { op=ADD; lcadr(e2)=-lcadr(e2); }
     if((op==ADD||op==MUL||op==BOR||op==EOR||op==BAND)&&
 	(car(e1)!=LCONST) && (
@@ -3365,7 +3366,7 @@
 	    break;
 	case SUB:
 	    if(integral(t1)) {
-		e=e1-e2;
+		e=e1-e2; type=INT;
 	    } else {
 		if(car(t1)!=POINTER) error(TYERR);
 		e=e1-size(cadr(t1))*e2;
@@ -3460,6 +3461,7 @@
 	if(integral(t1)) {
 	    if(!integral(t2)) error(TYERR);
 	    if(t1==INT) type=t2;else type=t1;
+	    if (type==UNSIGNED) type=INT;
 	    return(list3(SUB,e1,e2));
 	}
 	if(car(t1)!=POINTER) error(TYERR);
@@ -3478,7 +3480,8 @@
 	return e;
     }
     if(!integral(t1)||!integral(t2)) error(TYERR);
-    if(t1==INT) type=t2; else type=t1;  /* ??? */
+    // if(t1==INT) type=t2; else type=t1;  /* ??? */
+    if (us) type=UNSIGNED; else type=INT;
     if((op==MUL||op==DIV)&&car(e2)==CONST&&cadr(e2)==1) return e1;
     if(op==BOR||op==EOR||op==BAND) return(list3(op,e1,e2));
     if(op==LSHIFT||op==RSHIFT) return(list3(op+(t1==UNSIGNED?US:0),e1,e2));
--- a/mc-parse.c	Thu Nov 11 00:39:37 2004 +0900
+++ b/mc-parse.c	Sun Nov 14 15:41:05 2004 +0900
@@ -2569,12 +2569,24 @@
 #if LONGLONG_CODE
 	if(type==LONGLONG||type==ULONGLONG) {
 	    // return list2(LMINUS,e);
-	    return(car(e)==LCONST?llist2(LCONST,-lcadr(e)):list2(LMINUS,e));
+	    if (car(e)==LCONST) {
+		if (lcadr(e)>0 && type==ULONGLONG) { type=LONGLONG;
+		} else if (lcadr(e)<=0 && type==LONGLONG) { type=ULONGLONG;
+		}
+		return llist2(LCONST,-lcadr(e));
+	    }
+	    return list2(LMINUS,e);
 	}
 #endif
 	if(!integral(type))
 	    error(TYERR);
-	return(car(e)==CONST?list2(CONST,-cadr(e)):list2(MINUS,e));
+	if (car(e)==CONST) {
+	    if (cadr(e)>0 && type==UNSIGNED) { type=INT;
+	    } if (cadr(e)<=0 && type==INT) { type=UNSIGNED;
+	    } 
+	    return list2(CONST,-cadr(e));
+	}
+	return list2(MINUS,e);
     case BNOT: /* ~p */
 	conv->prefix_(sym);
 	getsym(0);
@@ -2801,7 +2813,7 @@
 	break;
     case CONST:
 	conv-> const_(symval);
-	type= INT;
+	type= symval>=0?UNSIGNED:INT;
 	e1=list2(CONST,symval);
 	getsym(0);
 	break;
@@ -2822,7 +2834,7 @@
 #if LONGLONG_CODE
     case LCONST:
 	conv-> const_(symval);
-	type= LONGLONG;
+	type= ULONGLONG;
 	e1=llist2(LCONST,lsymval);
 	getsym(0);
 	break;
--- a/test/code-gen.c	Thu Nov 11 00:39:37 2004 +0900
+++ b/test/code-gen.c	Sun Nov 14 15:41:05 2004 +0900
@@ -1947,31 +1947,59 @@
     printf("#1946:loprtc 9 %lld\n",i);
     i = i1 % 5;
     printf("#1948:loprtc 10 %lld\n",i);
+    i = i1 / 8;
+    printf("#1950:loprtc 3 %lld\n",i);
+    i = i1 / 256;
+    printf("#1952:loprtc 3 %lld\n",i);
+    i = i1 % 8;
+    printf("#1954:loprtc 3 %lld\n",i);
+    i = i1 % 256;
+    printf("#1956:loprtc 3 %lld\n",i);
+    i = i1 * 8;
+    printf("#1958:loprtc 3 %lld\n",i);
+    i = i1 * 256;
+    printf("#1960:loprtc 3 %lld\n",i);
 
     u = u1 + 3;
-    printf("#1951:loprtc 1 u %llu\n",u);
+    printf("#1963:loprtc 1 u %llu\n",u);
     u = u1 - 3;
-    printf("#1953:loprtc 2 u %llu\n",u);
+    printf("#1965:loprtc 2 u %llu\n",u);
     u = u1 / 32342342344234LL;
-    printf("#1955:loprtc 3 u %llu\n",u);
+    printf("#1967:loprtc 3 u %llu\n",u);
     u = u1 * 243234234232324LL;
-    printf("#1957:loprtc 4 u %llu\n",u);
+    printf("#1969:loprtc 4 u %llu\n",u);
     u = u1 | 234234234;
-    printf("#1959:loprtc 5 u %llu\n",u);
+    printf("#1971:loprtc 5 u %llu\n",u);
     u = u1 & 234234234;
-    printf("#1961:loprtc 6 u %llu\n",u);
+    printf("#1973:loprtc 6 u %llu\n",u);
     u = u1 ^ 234234234;
-    printf("#1963:loprtc 7 u %llu\n",u);
+    printf("#1975:loprtc 7 u %llu\n",u);
     u = u1 << 5;
-    printf("#1965:loprtc 8 u %llu\n",u);
+    printf("#1977:loprtc 8 u %llu\n",u);
     u = u1 >> 5;
-    printf("#1967:loprtc 9 u %llu\n",u);
+    printf("#1979:loprtc 9 u %llu\n",u);
     u = u1 << 38;
-    printf("#1969:loprtc 8 u %llu\n",u);
+    printf("#1981:loprtc 8 u %llu\n",u);
     u = u1 >> 38;
-    printf("#1971:loprtc 9 u %llu\n",u);
+    printf("#1983:loprtc 9 u %llu\n",u);
     u = u1 % 5;
-    printf("#1973:loprtc 10 u %llu\n",u);
+    printf("#1985:loprtc 10 u %llu\n",u);
+    u = u1 / 8;
+    printf("#1987:loprtc 3 %lld\n",i);
+    u = u1 / 256;
+    printf("#1989:loprtc 3 %lld\n",i);
+    u = u1 / 8;
+    printf("#1991:loprtc 3 %lld\n",i);
+    u = u1 / 256;
+    printf("#1993:loprtc 3 %lld\n",i);
+    u = u1 % 8;
+    printf("#1995:loprtc 3 %lld\n",i);
+    u = u1 % 256;
+    printf("#1997:loprtc 3 %lld\n",i);
+    u = u1 * 8;
+    printf("#1999:loprtc 3 %lld\n",i);
+    u = u1 * 256;
+    printf("#2001:loprtc 3 %lld\n",i);
 }
 
 
@@ -1990,92 +2018,92 @@
     u = 0;
 
     i = i1 + i2;
-    printf("#1992:ltosop r 1 %lld\n",i);
+    printf("#2020:ltosop r 1 %lld\n",i);
     i = i1 - i2;
-    printf("#1994:ltosop r 2 %lld\n",i);
+    printf("#2022:ltosop r 2 %lld\n",i);
     i = i1 / i2;
-    printf("#1996:ltosop r 3 %lld\n",i);
+    printf("#2024:ltosop r 3 %lld\n",i);
     i = i1 * i2;
-    printf("#1998:ltosop r 4 %lld\n",i);
+    printf("#2026:ltosop r 4 %lld\n",i);
     i = i1 | i2;
-    printf("#2000:ltosop r 5 %lld\n",i);
+    printf("#2028:ltosop r 5 %lld\n",i);
     i = i1 & i2;
-    printf("#2002:ltosop r 6 %lld\n",i);
+    printf("#2030:ltosop r 6 %lld\n",i);
     i = i1 ^ i2;
-    printf("#2004:ltosop r 7 %lld\n",i);
+    printf("#2032:ltosop r 7 %lld\n",i);
     i2 = 3;
     i = i1 << i2;
-    printf("#2007:ltosop r 8 %lld\n",i);
+    printf("#2035:ltosop r 8 %lld\n",i);
     i = i1 >> i2;
-    printf("#2009:ltosop r 9 %lld\n",i);
+    printf("#2037:ltosop r 9 %lld\n",i);
     i = i1 % i2;
-    printf("#2011:ltosop r 10 %lld\n",i);
+    printf("#2039:ltosop r 10 %lld\n",i);
 
     u = u1 + u2;
-    printf("#2014:ltosop r u 1 %llu\n",u);
+    printf("#2042:ltosop r u 1 %llu\n",u);
     u = u1 - u2;
-    printf("#2016:ltosop r u 2 %llu\n",u);
+    printf("#2044:ltosop r u 2 %llu\n",u);
     u = u1 / u2;
-    printf("#2018:ltosop r u 3 %llu\n",u);
+    printf("#2046:ltosop r u 3 %llu\n",u);
     u = u1 * u2;
-    printf("#2020:ltosop r u 4 %llu\n",u);
+    printf("#2048:ltosop r u 4 %llu\n",u);
     u = u1 | u2;
-    printf("#2022:ltosop r u 5 %llu\n",u);
+    printf("#2050:ltosop r u 5 %llu\n",u);
     u = u1 & u2;
-    printf("#2024:ltosop r u 6 %llu\n",u);
+    printf("#2052:ltosop r u 6 %llu\n",u);
     u = u1 ^ u2;
-    printf("#2026:ltosop r u 7 %llu\n",u);
+    printf("#2054:ltosop r u 7 %llu\n",u);
     u2 = 3;
     u = u1 << u2;
-    printf("#2029:ltosop r u 8 %llu\n",u);
+    printf("#2057:ltosop r u 8 %llu\n",u);
     u = u1 >> u2;
-    printf("#2031:ltosop r u 9 %llu\n",u);
+    printf("#2059:ltosop r u 9 %llu\n",u);
     u = u1 % u2;
-    printf("#2033:ltosop r u 10 %llu\n",u);
+    printf("#2061:ltosop r u 10 %llu\n",u);
 
     i = i1 + ii2;
-    printf("#2036:litosop r 1 %lld\n",i);
+    printf("#2064:litosop r 1 %lld\n",i);
     i = i1 - ii2;
-    printf("#2038:litosop r 2 %lld\n",i);
+    printf("#2066:litosop r 2 %lld\n",i);
     i = i1 / ii2;
-    printf("#2040:litosop r 3 %lld\n",i);
+    printf("#2068:litosop r 3 %lld\n",i);
     i = i1 * ii2;
-    printf("#2042:litosop r 4 %lld\n",i);
+    printf("#2070:litosop r 4 %lld\n",i);
     i = i1 | ii2;
-    printf("#2044:litosop r 5 %lld\n",i);
+    printf("#2072:litosop r 5 %lld\n",i);
     i = i1 & ii2;
-    printf("#2046:litosop r 6 %lld\n",i);
+    printf("#2074:litosop r 6 %lld\n",i);
     i = i1 ^ ii2;
-    printf("#2048:litosop r 7 %lld\n",i);
+    printf("#2076:litosop r 7 %lld\n",i);
     ii2 = 3;
     i = i1 << ii2;
-    printf("#2051:litosop r 8 %lld\n",i);
+    printf("#2079:litosop r 8 %lld\n",i);
     i = i1 >> ii2;
-    printf("#2053:litosop r 9 %lld\n",i);
+    printf("#2081:litosop r 9 %lld\n",i);
     i = i1 % ii2;
-    printf("#2055:litosop r 10 %lld\n",i);
+    printf("#2083:litosop r 10 %lld\n",i);
 
     u = u1 + uu2;
-    printf("#2058:litosop r u 1 %llu\n",u);
+    printf("#2086:litosop r u 1 %llu\n",u);
     u = u1 - uu2;
-    printf("#2060:litosop r u 2 %llu\n",u);
+    printf("#2088:litosop r u 2 %llu\n",u);
     u = u1 / uu2;
-    printf("#2062:litosop r u 3 %llu\n",u);
+    printf("#2090:litosop r u 3 %llu\n",u);
     u = u1 * uu2;
-    printf("#2064:litosop r u 4 %llu\n",u);
+    printf("#2092:litosop r u 4 %llu\n",u);
     u = u1 | uu2;
-    printf("#2066:litosop r u 5 %llu\n",u);
+    printf("#2094:litosop r u 5 %llu\n",u);
     u = u1 & uu2;
-    printf("#2068:litosop r u 6 %llu\n",u);
+    printf("#2096:litosop r u 6 %llu\n",u);
     u = u1 ^ uu2;
-    printf("#2070:litosop r u 7 %llu\n",u);
+    printf("#2098:litosop r u 7 %llu\n",u);
     uu2 = 3;
     u = u1 << uu2;
-    printf("#2073:litosop r u 8 %llu\n",u);
+    printf("#2101:litosop r u 8 %llu\n",u);
     u = u1 >> uu2;
-    printf("#2075:litosop r u 9 %llu\n",u);
+    printf("#2103:litosop r u 9 %llu\n",u);
     u = u1 % uu2;
-    printf("#2077:litosop r u 10 %llu\n",u);
+    printf("#2105:litosop r u 10 %llu\n",u);
 }
 
 // loprtc(int op,int v)
@@ -2088,54 +2116,70 @@
     u1 = 632423423; 
 
     i = i1 + 3;
-    printf("#2090:loprtc r 1 %lld\n",i);
+    printf("#2118:loprtc r 1 %lld\n",i);
     i = i1 - 3;
-    printf("#2092:loprtc r 2 %lld\n",i);
+    printf("#2120:loprtc r 2 %lld\n",i);
     i = i1 / 32323423423LL;
-    printf("#2094:loprtc r 3 %lld\n",i);
+    printf("#2122:loprtc r 3 %lld\n",i);
     i = i1 * 323423423423LL;
-    printf("#2096:loprtc r 4 %lld\n",i);
+    printf("#2124:loprtc r 4 %lld\n",i);
     i = i1 | 234234234;
-    printf("#2098:loprtc r 5 %lld\n",i);
+    printf("#2126:loprtc r 5 %lld\n",i);
     i = i1 & 23234234;
-    printf("#2100:loprtc r 6 %lld\n",i);
+    printf("#2128:loprtc r 6 %lld\n",i);
     i = i1 ^ 23234234;
-    printf("#2102:loprtc r 7 %lld\n",i);
+    printf("#2130:loprtc r 7 %lld\n",i);
     i = i1 << 5;
-    printf("#2104:loprtc r 8 %lld\n",i);
+    printf("#2132:loprtc r 8 %lld\n",i);
     i = i1 >> 5;
-    printf("#2106:loprtc r 9 %lld\n",i);
+    printf("#2134:loprtc r 9 %lld\n",i);
     i = i1 << 38;
-    printf("#2108:loprtc r 8 %lld\n",i);
+    printf("#2136:loprtc r 8 %lld\n",i);
     i = i1 >> 38;
-    printf("#2110:loprtc r 9 %lld\n",i);
+    printf("#2138:loprtc r 9 %lld\n",i);
     i = i1 % 5;
-    printf("#2112:loprtc r 10 %lld\n",i);
+    printf("#2140:loprtc r 10 %lld\n",i);
+    i = i1 / 8;
+    printf("#2142:loprtc r 10 %lld\n",i);
+    i = i1 / 256;
+    printf("#2144:loprtc r 10 %lld\n",i);
+    i = i1 * 8;
+    printf("#2146:loprtc r 10 %lld\n",i);
+    i = i1 * 256;
+    printf("#2148:loprtc r 10 %lld\n",i);
 
     u = u1 + 3;
-    printf("#2115:loprtc r 1 u %llu\n",u);
+    printf("#2151:loprtc r 1 u %llu\n",u);
     u = u1 - 3;
-    printf("#2117:loprtc r 2 u %llu\n",u);
+    printf("#2153:loprtc r 2 u %llu\n",u);
     u = u1 / 32342342344234LL;
-    printf("#2119:loprtc r 3 u %llu\n",u);
+    printf("#2155:loprtc r 3 u %llu\n",u);
     u = u1 * 243234234232324LL;
-    printf("#2121:loprtc r 4 u %llu\n",u);
+    printf("#2157:loprtc r 4 u %llu\n",u);
     u = u1 | 234234234;
-    printf("#2123:loprtc r 5 u %llu\n",u);
+    printf("#2159:loprtc r 5 u %llu\n",u);
     u = u1 & 234234234;
-    printf("#2125:loprtc r 6 u %llu\n",u);
+    printf("#2161:loprtc r 6 u %llu\n",u);
     u = u1 ^ 234234234;
-    printf("#2127:loprtc r 7 u %llu\n",u);
+    printf("#2163:loprtc r 7 u %llu\n",u);
     u = u1 << 5;
-    printf("#2129:loprtc r 8 u %llu\n",u);
+    printf("#2165:loprtc r 8 u %llu\n",u);
     u = u1 >> 5;
-    printf("#2131:loprtc r 9 u %llu\n",u);
+    printf("#2167:loprtc r 9 u %llu\n",u);
     u = u1 << 38;
-    printf("#2133:loprtc r 8 u %llu\n",u);
+    printf("#2169:loprtc r 8 u %llu\n",u);
     u = u1 >> 38;
-    printf("#2135:loprtc r 9 u %llu\n",u);
+    printf("#2171:loprtc r 9 u %llu\n",u);
     u = u1 % 5;
-    printf("#2137:loprtc r 10 u %llu\n",u);
+    printf("#2173:loprtc r 10 u %llu\n",u);
+    u = u1 / 8;
+    printf("#2175:loprtc r 10 u %lld\n",u);
+    u = u1 / 256;
+    printf("#2177:loprtc r 10 u %lld\n",u);
+    u = u1 * 8;
+    printf("#2179:loprtc r 10 u %lld\n",u);
+    u = u1 * 256;
+    printf("#2181:loprtc r 10 u %lld\n",u);
 }
 
 
@@ -2147,7 +2191,7 @@
     int i;
     i = 23442342;
     d = i;
-    printf("#2149:code_i2ll %lld\n",d);
+    printf("#2193:code_i2ll %lld\n",d);
 }
 // code_i2ull(int creg)
 void
@@ -2157,7 +2201,7 @@
     int i;
     i = 23442342;
     d = i;
-    printf("#2159:code_i2ull %lld\n",d);
+    printf("#2203:code_i2ull %lld\n",d);
 }
 // code_u2ll(int creg)
 void
@@ -2167,7 +2211,7 @@
     unsigned int i;
     i = 23442342;
     d = i;
-    printf("#2169:code_u2ll %lld\n",d);
+    printf("#2213:code_u2ll %lld\n",d);
 }
 // code_u2ull(int creg)
 void
@@ -2177,7 +2221,7 @@
     unsigned int i;
     i = 23342342;
     d = i;
-    printf("#2179:code_u2ull %llu\n",d);
+    printf("#2223:code_u2ull %llu\n",d);
 }
 // code_ll2i(int creg)
 void
@@ -2187,7 +2231,7 @@
     int i;
     d = 2342342342LL;
     i = d;
-    printf("#2189:code_ll2i %d\n",i);
+    printf("#2233:code_ll2i %d\n",i);
 }
 // code_ll2u(int creg)
 void
@@ -2197,7 +2241,7 @@
     unsigned int i;
     d = 2342342342LL;
     i = d;
-    printf("#2199:code_ll2i %ud\n",i);
+    printf("#2243:code_ll2i %ud\n",i);
 }
 // code_ull2i(int creg)
 void
@@ -2207,7 +2251,7 @@
     int i;
     d = 2342342342LL;
     i = d;
-    printf("#2209:code_ull2i %d\n",i);
+    printf("#2253:code_ull2i %d\n",i);
 }
 // code_ull2u(int creg)
 void
@@ -2217,7 +2261,7 @@
     unsigned int i;
     d = 2342342342LL;
     i = d;
-    printf("#2219:code_ll2i %ud\n",i);
+    printf("#2263:code_ll2i %ud\n",i);
 }
 #if FLOAT_CODE
 // code_d2ll(int creg)
@@ -2228,7 +2272,7 @@
     double i;
     i = 2342342342LL;
     d = i;
-    printf("#2230:code_d2ll %lld\n",d);
+    printf("#2274:code_d2ll %lld\n",d);
 }
 // code_d2ull(int creg)
 void
@@ -2238,7 +2282,7 @@
     double i;
     i = 2342342342LL;
     d = i;
-    printf("#2240:code_d2ll %llu\n",d);
+    printf("#2284:code_d2ll %llu\n",d);
 }
 // code_f2ll(int creg)
 void
@@ -2248,7 +2292,7 @@
     float i;
     i = 2342342342LL;
     d = i;
-    printf("#2250:code_f2ll %lld\n",d);
+    printf("#2294:code_f2ll %lld\n",d);
 }
 // code_f2ull(int creg)
 void
@@ -2258,7 +2302,7 @@
     float i;
     i = 2342342342LL;
     d = i;
-    printf("#2260:code_f2ull %llu\n",d);
+    printf("#2304:code_f2ull %llu\n",d);
 }
 // code_ll2d(int creg)
 void
@@ -2268,7 +2312,7 @@
     double i;
     d = 2342342342LL;
     i = d;
-    printf("#2270:code_ll2d %g\n",i);
+    printf("#2314:code_ll2d %g\n",i);
 }
 // code_ll2f(int creg)
 void
@@ -2278,7 +2322,7 @@
     float i;
     d = 2342342342LL;
     i = d;
-    printf("#2280:code_ll2f %g\n",i);
+    printf("#2324:code_ll2f %g\n",i);
 }
 // code_ull2d(int creg)
 void
@@ -2288,7 +2332,7 @@
     double i;
     d = 2342342342LL;
     i = d;
-    printf("#2290:code_ull2f %g\n",i);
+    printf("#2334:code_ull2f %g\n",i);
 }
 // code_ull2f(int creg)
 void
@@ -2298,7 +2342,7 @@
     float i;
     d = 2342342342LL;
     i = d;
-    printf("#2300:code_ull2f %g\n",i);
+    printf("#2344:code_ull2f %g\n",i);
 }
 #endif
 
@@ -2308,8 +2352,8 @@
 {
     long long i,j;
     i = 123123123;j = 0;
-    printf("#2310:code_preinc l %lld %lld",++i,--j);
-    printf("#2311: %lld %lld\n",i,j);
+    printf("#2354:code_preinc l %lld %lld",++i,--j);
+    printf("#2355: %lld %lld\n",i,j);
 }
 
 // code_lpostinc(int e1,int e2,int reg)
@@ -2318,8 +2362,8 @@
 {
     long long i,j;
     i = 123123123;j = 0;
-    printf("#2320:code_postinc l %lld %lld",i++,j--);
-    printf("#2321: %lld %lld\n",i,j);
+    printf("#2364:code_postinc l %lld %lld",i++,j--);
+    printf("#2365: %lld %lld\n",i,j);
 }
 
 // code_lpreinc(int e1,int e2,int reg)
@@ -2328,8 +2372,8 @@
 {
     register unsigned long long i,j;
     i = 123123123;j = 0;
-    printf("#2330:code_preinc l %llu %llu",++i,--j);
-    printf("#2331: %lld %lld\n",i,j);
+    printf("#2374:code_preinc l %llu %llu",++i,--j);
+    printf("#2375: %lld %lld\n",i,j);
 }
 
 // code_lpostinc(int e1,int e2,int reg)
@@ -2338,8 +2382,8 @@
 {
     register unsigned long long i,j;
     i = 123123123;j = 0;
-    printf("#2340:code_postinc lu %llu %llu",i++,j--);
-    printf("#2341: %lld %lld\n",i,j);
+    printf("#2384:code_postinc lu %llu %llu",i++,j--);
+    printf("#2385: %lld %lld\n",i,j);
 }
 
 // code_lpreinc(int e1,int e2,int reg)
@@ -2348,8 +2392,8 @@
 {
     register long long i,j;
     i = 123123123;j = 0;
-    printf("#2350:code_preinc l r %lld %lld",++i,--j);
-    printf("#2351: %lld %lld\n",i,j);
+    printf("#2394:code_preinc l r %lld %lld",++i,--j);
+    printf("#2395: %lld %lld\n",i,j);
 }
 
 // code_lpostinc(int e1,int e2,int reg)
@@ -2358,8 +2402,8 @@
 {
     register long long i,j;
     i = 123123123;j = 0;
-    printf("#2360:code_postinc l r %lld %lld",i++,j--);
-    printf("#2361: %lld %lld\n",i,j);
+    printf("#2404:code_postinc l r %lld %lld",i++,j--);
+    printf("#2405: %lld %lld\n",i,j);
 }
 
 // code_lpreinc(int e1,int e2,int reg)
@@ -2368,8 +2412,8 @@
 {
     register unsigned long long i,j;
     i = 123123123;j = 0;
-    printf("#2370:code_preinc l r %llu %llu",++i,--j);
-    printf("#2371: %lld %lld\n",i,j);
+    printf("#2414:code_preinc l r %llu %llu",++i,--j);
+    printf("#2415: %lld %lld\n",i,j);
 }
 
 // code_lpostinc(int e1,int e2,int reg)
@@ -2378,8 +2422,8 @@
 {
     register unsigned long long i,j;
     i = 123123123;j = 0;
-    printf("#2380:code_postinc lu r %llu %llu",i++,j--);
-    printf("#2381: %lld %lld\n",i,j);
+    printf("#2424:code_postinc lu r %llu %llu",i++,j--);
+    printf("#2425: %lld %lld\n",i,j);
 }
 
 // code_lassop(int op)
@@ -2395,42 +2439,42 @@
     ui1 = 632423423;
 
     i1 += a;
-    printf("#2397:code_register_lassop 1 %lld\n",i1);
+    printf("#2441:code_register_lassop 1 %lld\n",i1);
     i1 -= a;
-    printf("#2399:code_register_lassop 2 %lld\n",i1);
+    printf("#2443:code_register_lassop 2 %lld\n",i1);
     i1 /= a;
-    printf("#2401:code_register_lassop 3 %lld\n",i1);
+    printf("#2445:code_register_lassop 3 %lld\n",i1);
     i1 *= a;
-    printf("#2403:code_register_lassop 4 %lld\n",i1);
+    printf("#2447:code_register_lassop 4 %lld\n",i1);
     i1 |= a;
-    printf("#2405:code_register_lassop 5 %lld\n",i1);
+    printf("#2449:code_register_lassop 5 %lld\n",i1);
     i1 &= a;
-    printf("#2407:code_register_lassop 6 %lld\n",i1);
+    printf("#2451:code_register_lassop 6 %lld\n",i1);
     i1 ^= a;
-    printf("#2409:code_register_lassop 7 %lld\n",i1);
+    printf("#2453:code_register_lassop 7 %lld\n",i1);
     i1 <<= a;
-    printf("#2411:code_register_lassop 8 %lld\n",i1);
+    printf("#2455:code_register_lassop 8 %lld\n",i1);
     i1 >>= a;
-    printf("#2413:code_register_lassop 9 %lld\n",i1);
+    printf("#2457:code_register_lassop 9 %lld\n",i1);
 
     ui1 += a;
-    printf("#2416:code_register_lassop 1 %llu\n",ui1);
+    printf("#2460:code_register_lassop 1 %llu\n",ui1);
     ui1 -= a;
-    printf("#2418:code_register_lassop 2 %llu\n",ui1);
+    printf("#2462:code_register_lassop 2 %llu\n",ui1);
     ui1 /= a;
-    printf("#2420:code_register_lassop 3 %llu\n",ui1);
+    printf("#2464:code_register_lassop 3 %llu\n",ui1);
     ui1 *= a;
-    printf("#2422:code_register_lassop 4 %llu\n",ui1);
+    printf("#2466:code_register_lassop 4 %llu\n",ui1);
     ui1 |= a;
-    printf("#2424:code_register_lassop 5 %llu\n",ui1);
+    printf("#2468:code_register_lassop 5 %llu\n",ui1);
     ui1 &= a;
-    printf("#2426:code_register_lassop 6 %llu\n",ui1);
+    printf("#2470:code_register_lassop 6 %llu\n",ui1);
     ui1 ^= a;
-    printf("#2428:code_register_lassop 7 %llu\n",ui1);
+    printf("#2472:code_register_lassop 7 %llu\n",ui1);
     ui1 <<= a;
-    printf("#2430:code_register_lassop 8 %llu\n",ui1);
+    printf("#2474:code_register_lassop 8 %llu\n",ui1);
     ui1 >>= a;
-    printf("#2432:code_register_lassop 9 %llu\n",ui1);
+    printf("#2476:code_register_lassop 9 %llu\n",ui1);
 }
 
 // code_lassop(int op,int byte,int sign) 
@@ -2444,42 +2488,42 @@
     ui1 = 632423423; ui2= 32394234;
 
     i1 += a;
-    printf("#2446:code_lassop 1 %lld\n",i1);
+    printf("#2490:code_lassop 1 %lld\n",i1);
     i1 -= a;
-    printf("#2448:code_lassop 2 %lld\n",i1);
+    printf("#2492:code_lassop 2 %lld\n",i1);
     i1 /= a;
-    printf("#2450:code_lassop 3 %lld\n",i1);
+    printf("#2494:code_lassop 3 %lld\n",i1);
     i1 *= a;
-    printf("#2452:code_lassop 4 %lld\n",i1);
+    printf("#2496:code_lassop 4 %lld\n",i1);
     i1 |= a;
-    printf("#2454:code_lassop 5 %lld\n",i1);
+    printf("#2498:code_lassop 5 %lld\n",i1);
     i1 &= a;
-    printf("#2456:code_lassop 6 %lld\n",i1);
+    printf("#2500:code_lassop 6 %lld\n",i1);
     i1 ^= a;
-    printf("#2458:code_lassop 7 %lld\n",i1);
+    printf("#2502:code_lassop 7 %lld\n",i1);
     i1 <<= a;
-    printf("#2460:code_lassop 8 %lld\n",i1);
+    printf("#2504:code_lassop 8 %lld\n",i1);
     i1 >>= a;
-    printf("#2462:code_lassop 9 %lld\n",i1);
+    printf("#2506:code_lassop 9 %lld\n",i1);
 
     ui1 += a;
-    printf("#2465:code_lassop 1 %llu\n",ui1);
+    printf("#2509:code_lassop 1 %llu\n",ui1);
     ui1 -= a;
-    printf("#2467:code_lassop 2 %llu\n",ui1);
+    printf("#2511:code_lassop 2 %llu\n",ui1);
     ui1 /= a;
-    printf("#2469:code_lassop 3 %llu\n",ui1);
+    printf("#2513:code_lassop 3 %llu\n",ui1);
     ui1 *= a;
-    printf("#2471:code_lassop 4 %llu\n",ui1);
+    printf("#2515:code_lassop 4 %llu\n",ui1);
     ui1 |= a;
-    printf("#2473:code_lassop 5 %llu\n",ui1);
+    printf("#2517:code_lassop 5 %llu\n",ui1);
     ui1 &= a;
-    printf("#2475:code_lassop 6 %llu\n",ui1);
+    printf("#2519:code_lassop 6 %llu\n",ui1);
     ui1 ^= a;
-    printf("#2477:code_lassop 7 %llu\n",ui1);
+    printf("#2521:code_lassop 7 %llu\n",ui1);
     ui1 <<= a;
-    printf("#2479:code_lassop 8 %llu\n",ui1);
+    printf("#2523:code_lassop 8 %llu\n",ui1);
     ui1 >>= a;
-    printf("#2481:code_lassop 9 %llu\n",ui1);
+    printf("#2525:code_lassop 9 %llu\n",ui1);
 }
 
 // code_register_assop(int e2,int op,int byte) 
@@ -2492,42 +2536,42 @@
     ui1 = 632423423;
 
     i1 += 3;
-    printf("#2494:code_register_lassop c 1 %lld\n",i1);
+    printf("#2538:code_register_lassop c 1 %lld\n",i1);
     i1 -= 3;
-    printf("#2496:code_register_lassop c 2 %lld\n",i1);
+    printf("#2540:code_register_lassop c 2 %lld\n",i1);
     i1 /= 3;
-    printf("#2498:code_register_lassop c 3 %lld\n",i1);
+    printf("#2542:code_register_lassop c 3 %lld\n",i1);
     i1 *= 3;
-    printf("#2500:code_register_lassop c 4 %lld\n",i1);
+    printf("#2544:code_register_lassop c 4 %lld\n",i1);
     i1 |= 234;
-    printf("#2502:code_register_lassop c 5 %lld\n",i1);
+    printf("#2546:code_register_lassop c 5 %lld\n",i1);
     i1 &= 2324234234234234LL;
-    printf("#2504:code_register_lassop c 6 %lld\n",i1);
+    printf("#2548:code_register_lassop c 6 %lld\n",i1);
     i1 ^= 5523234234234234LL;
-    printf("#2506:code_register_lassop c 7 %lld\n",i1);
+    printf("#2550:code_register_lassop c 7 %lld\n",i1);
     i1 <<= 3;
-    printf("#2508:code_register_lassop c 8 %lld\n",i1);
+    printf("#2552:code_register_lassop c 8 %lld\n",i1);
     i1 >>= 3;
-    printf("#2510:code_register_lassop c 9 %lld\n",i1);
+    printf("#2554:code_register_lassop c 9 %lld\n",i1);
 
     ui1 += 3;
-    printf("#2513:code_register_lassop c 1 %llu\n",ui1);
+    printf("#2557:code_register_lassop c 1 %llu\n",ui1);
     ui1 -= 3;
-    printf("#2515:code_register_lassop c 2 %llu\n",ui1);
+    printf("#2559:code_register_lassop c 2 %llu\n",ui1);
     ui1 /= 3;
-    printf("#2517:code_register_lassop c 3 %llu\n",ui1);
+    printf("#2561:code_register_lassop c 3 %llu\n",ui1);
     ui1 *= 3;
-    printf("#2519:code_register_lassop c 4 %llu\n",ui1);
+    printf("#2563:code_register_lassop c 4 %llu\n",ui1);
     ui1 |= 234;
-    printf("#2521:code_register_lassop c 5 %llu\n",ui1);
+    printf("#2565:code_register_lassop c 5 %llu\n",ui1);
     ui1 &= 2324234234234234LL;
-    printf("#2523:code_register_lassop c 6 %llu\n",ui1);
+    printf("#2567:code_register_lassop c 6 %llu\n",ui1);
     ui1 ^= 5523234234234234LL;
-    printf("#2525:code_register_lassop c 7 %llu\n",ui1);
+    printf("#2569:code_register_lassop c 7 %llu\n",ui1);
     ui1 <<= 3;
-    printf("#2527:code_register_lassop c 8 %llu\n",ui1);
+    printf("#2571:code_register_lassop c 8 %llu\n",ui1);
     ui1 >>= 3;
-    printf("#2529:code_register_lassop c 9 %llu\n",ui1);
+    printf("#2573:code_register_lassop c 9 %llu\n",ui1);
 }
 
 // code_lassop(int op,int byte,int sign) 
@@ -2540,42 +2584,42 @@
     ui1 = 632423423; ui2= 32394234;
 
     i1 += 3;
-    printf("#2542:code_lassop c 1 %lld\n",i1);
+    printf("#2586:code_lassop c 1 %lld\n",i1);
     i1 -= 3;
-    printf("#2544:code_lassop c 2 %lld\n",i1);
+    printf("#2588:code_lassop c 2 %lld\n",i1);
     i1 /= 3;
-    printf("#2546:code_lassop c 3 %lld\n",i1);
+    printf("#2590:code_lassop c 3 %lld\n",i1);
     i1 *= 3;
-    printf("#2548:code_lassop c 4 %lld\n",i1);
+    printf("#2592:code_lassop c 4 %lld\n",i1);
     i1 |= 234;
-    printf("#2550:code_lassop c 5 %lld\n",i1);
+    printf("#2594:code_lassop c 5 %lld\n",i1);
     i1 &= 2324234234234234LL;
-    printf("#2552:code_lassop c 6 %lld\n",i1);
+    printf("#2596:code_lassop c 6 %lld\n",i1);
     i1 ^= 5523234234234234LL;
-    printf("#2554:code_lassop c 7 %lld\n",i1);
+    printf("#2598:code_lassop c 7 %lld\n",i1);
     i1 <<= 3;
-    printf("#2556:code_lassop c 8 %lld\n",i1);
+    printf("#2600:code_lassop c 8 %lld\n",i1);
     i1 >>= 3;
-    printf("#2558:code_lassop c 9 %lld\n",i1);
+    printf("#2602:code_lassop c 9 %lld\n",i1);
 
     ui1 += 3;
-    printf("#2561:code_lassop c 1 %llu\n",ui1);
+    printf("#2605:code_lassop c 1 %llu\n",ui1);
     ui1 -= 3;
-    printf("#2563:code_lassop c 2 %llu\n",ui1);
+    printf("#2607:code_lassop c 2 %llu\n",ui1);
     ui1 /= 3;
-    printf("#2565:code_lassop c 3 %llu\n",ui1);
+    printf("#2609:code_lassop c 3 %llu\n",ui1);
     ui1 *= 3;
-    printf("#2567:code_lassop c 4 %llu\n",ui1);
+    printf("#2611:code_lassop c 4 %llu\n",ui1);
     ui1 |= 234;
-    printf("#2569:code_lassop c 5 %llu\n",ui1);
+    printf("#2613:code_lassop c 5 %llu\n",ui1);
     ui1 &= 2324234234234234LL;
-    printf("#2571:code_lassop c 6 %llu\n",ui1);
+    printf("#2615:code_lassop c 6 %llu\n",ui1);
     ui1 ^= 5523234234234234LL;
-    printf("#2573:code_lassop c 7 %llu\n",ui1);
+    printf("#2617:code_lassop c 7 %llu\n",ui1);
     ui1 <<= 3;
-    printf("#2575:code_lassop c 8 %llu\n",ui1);
+    printf("#2619:code_lassop c 8 %llu\n",ui1);
     ui1 >>= 3;
-    printf("#2577:code_lassop c 9 %llu\n",ui1);
+    printf("#2621:code_lassop c 9 %llu\n",ui1);
 }
 
 // code_lgt(int cond) 
@@ -2585,16 +2629,16 @@
 {
     long long reg;
     if (l0>l1)
-	printf("#2587:code_lgt 1\n");
+	printf("#2631:code_lgt 1\n");
     else
-	printf("#2589:code_lgt 0\n");
+	printf("#2633:code_lgt 0\n");
     for (reg=-3;reg<7;reg++) {
         if (0<reg && reg<3)
-	   printf("#2592:reg=%lld code_lgt  0<reg && reg <3\n",reg);
+	   printf("#2636:reg=%lld code_lgt  0<reg && reg <3\n",reg);
     }
     for (reg=-3;reg<7;reg++) {
         if (-2<reg && reg<0)
-	   printf("#2596:reg=%lld code_lgt -2<reg && reg <0\n",reg);
+	   printf("#2640:reg=%lld code_lgt -2<reg && reg <0\n",reg);
     }
 }
 
@@ -2604,16 +2648,16 @@
 {
     unsigned long long reg;
     if (ul0>ul1)
-	printf("#2606:code_lugt 1\n");
+	printf("#2650:code_lugt 1\n");
     else
-	printf("#2608:code_lugt 0\n");
+	printf("#2652:code_lugt 0\n");
     for (reg=0;reg<7;reg++) {
         if (2<reg && reg<4)
-	   printf("#2611:reg=%llu code_lugt  2<reg && reg <4\n",reg);
+	   printf("#2655:reg=%llu code_lugt  2<reg && reg <4\n",reg);
     }
     for (reg=0;reg<7;reg++) {
         if (2<reg && reg<4)
-	   printf("#2615:reg=%llu code_lugt  2<reg && reg <4\n",reg);
+	   printf("#2659:reg=%llu code_lugt  2<reg && reg <4\n",reg);
     }
 }
 
@@ -2623,16 +2667,16 @@
 {
     long long reg;
     if (l0>=l1)
-	printf("#2625:code_lge 1\n");
+	printf("#2669:code_lge 1\n");
     else
-	printf("#2627:code_lge 0\n");
+	printf("#2671:code_lge 0\n");
     for (reg=-3;reg<7;reg++) {
         if (0<=reg && reg<=3)
-	   printf("#2630:reg=%lld code_lge  0<=reg && reg <=3\n",reg);
+	   printf("#2674:reg=%lld code_lge  0<=reg && reg <=3\n",reg);
     }
     for (reg=-3;reg<7;reg++) {
         if (-2<=reg && reg<=0)
-	   printf("#2634:reg=%lld code_lge -2<=reg && reg <=0\n",reg);
+	   printf("#2678:reg=%lld code_lge -2<=reg && reg <=0\n",reg);
     }
 }
 
@@ -2642,16 +2686,16 @@
 {
     unsigned long long reg;
     if (ul0>=ul1)
-	printf("#2644:code_luge 1\n");
+	printf("#2688:code_luge 1\n");
     else
-	printf("#2646:code_luge 0\n");
+	printf("#2690:code_luge 0\n");
     for (reg=0;reg<7;reg++) {
         if (2<reg && reg<4)
-	   printf("#2649:reg=%llu code_luge  2<reg && reg <4\n",reg);
+	   printf("#2693:reg=%llu code_luge  2<reg && reg <4\n",reg);
     }
     for (reg=0;reg<7;reg++) {
         if (2<reg && reg<4)
-	   printf("#2653:reg=%llu code_luge  2<reg && reg <4\n",reg);
+	   printf("#2697:reg=%llu code_luge  2<reg && reg <4\n",reg);
     }
 }
 
@@ -2660,13 +2704,13 @@
 code_leq()
 {
     if (ul0==ul1)
-	printf("#2662:code_leq 1\n");
+	printf("#2706:code_leq 1\n");
     else
-	printf("#2664:code_leq 0\n");
+	printf("#2708:code_leq 0\n");
     if (l0!=l1)
-	printf("#2666:code_lneq 1\n");
+	printf("#2710:code_lneq 1\n");
     else
-	printf("#2668:code_lneq 0\n");
+	printf("#2712:code_lneq 0\n");
 }
 
 #if 0
@@ -2676,11 +2720,11 @@
     long long i;
     for(i=0;i<6;i++) {
 	switch(i) {
-	case 1: printf("#2678:code_lswitch 1 %d\n",i); break;
-	case 2: printf("#2679:code_lswitch 2 %d\n",i); break;
-	case 3: printf("#2680:code_lswitch 3 %d\n",i);
-	case 4: printf("#2681:code_lswitch 4 %d\n",i); break;
-	default: printf("#2682:code_lswitch d %d\n",i);
+	case 1: printf("#2722:code_lswitch 1 %d\n",i); break;
+	case 2: printf("#2723:code_lswitch 2 %d\n",i); break;
+	case 3: printf("#2724:code_lswitch 3 %d\n",i);
+	case 4: printf("#2725:code_lswitch 4 %d\n",i); break;
+	default: printf("#2726:code_lswitch d %d\n",i);
 	}
     }
 }
@@ -2695,48 +2739,48 @@
     int i;
     for(i=0;i<10;i++) {
 	switch(i) {
-	case 1: printf("#2697:code_switch 1 %d\n",i); break;
-	case 2: printf("#2698:code_switch 2 %d\n",i); break;
-	case 3: printf("#2699:code_switch 3 %d\n",i);
-	case 4: printf("#2700:code_switch 4 %d\n",i); break;
+	case 1: printf("#2741:code_switch 1 %d\n",i); break;
+	case 2: printf("#2742:code_switch 2 %d\n",i); break;
+	case 3: printf("#2743:code_switch 3 %d\n",i);
+	case 4: printf("#2744:code_switch 4 %d\n",i); break;
         case 7:
-	case 5: printf("#2702:code_switch 5 %d\n",i); break;
-	case 6: printf("#2703:code_switch 6 %d\n",i); break;
-	default: printf("#2704:code_switch d %d\n",i);
+	case 5: printf("#2746:code_switch 5 %d\n",i); break;
+	case 6: printf("#2747:code_switch 6 %d\n",i); break;
+	default: printf("#2748:code_switch d %d\n",i);
 	}
     }
     for(i=0;i<10;i++) {
 	switch(i) {
-	case 1: printf("#2709:code_switch 1 %d\n",i); break;
+	case 1: printf("#2753:code_switch 1 %d\n",i); break;
 	case 2: 
 	    i = i* 100;
 	    switch(i) {
-	    case 100: printf("#2713:code_switch n 1 %d\n",i); break;
+	    case 100: printf("#2757:code_switch n 1 %d\n",i); break;
 	    case 200: 
     for(i=-100;i<10;i++) {
 	switch(i) {
-	case 1234: printf("#2717:code_switch 1 nn %d\n",i); break;
-	case 2233: printf("#2718:code_switch 2 nn %d\n",i); break;
-	case 3333: printf("#2719:code_switch 3 nn %d\n",i);
-	case -4: printf("#2720:code_switch 4 nn %d\n",i); break;
+	case 1234: printf("#2761:code_switch 1 nn %d\n",i); break;
+	case 2233: printf("#2762:code_switch 2 nn %d\n",i); break;
+	case 3333: printf("#2763:code_switch 3 nn %d\n",i);
+	case -4: printf("#2764:code_switch 4 nn %d\n",i); break;
         case 733:
-	case -5: printf("#2722:code_switch 5 nn %d\n",i); break;
-	case -326: printf("#2723:code_switch 6 nn %d\n",i); 
+	case -5: printf("#2766:code_switch 5 nn %d\n",i); break;
+	case -326: printf("#2767:code_switch 6 nn %d\n",i); 
 	}
     }
-	    case 300: printf("#2726:code_switch n 3 %d\n",i);
-	    case 400: printf("#2727:code_switch n 4 %d\n",i); break;
+	    case 300: printf("#2770:code_switch n 3 %d\n",i);
+	    case 400: printf("#2771:code_switch n 4 %d\n",i); break;
 	    case 700:
-	    case 500: printf("#2729:code_switch n 5 %d\n",i); break;
-	    case 600: printf("#2730:code_switch n 6 %d\n",i); break;
-	    default: printf("#2731:code_switch n d %d\n",i);
+	    case 500: printf("#2773:code_switch n 5 %d\n",i); break;
+	    case 600: printf("#2774:code_switch n 6 %d\n",i); break;
+	    default: printf("#2775:code_switch n d %d\n",i);
 	    }
-	case 3: printf("#2733:code_switch 3 %d\n",i);
-	case 4: printf("#2734:code_switch 4 %d\n",i); break;
+	case 3: printf("#2777:code_switch 3 %d\n",i);
+	case 4: printf("#2778:code_switch 4 %d\n",i); break;
         case 7:
-	case 5: printf("#2736:code_switch 5 %d\n",i); break;
-	case 6: printf("#2737:code_switch 6 %d\n",i); break;
-	default: printf("#2738:code_switch d %d\n",i);
+	case 5: printf("#2780:code_switch 5 %d\n",i); break;
+	case 6: printf("#2781:code_switch 6 %d\n",i); break;
+	default: printf("#2782:code_switch d %d\n",i);
 	}
     }
 }