diff interps/c-intercal/oilout04.c @ 996:859f9b4339e6

<Gregor> tar xf egobot.tar.xz
author HackBot
date Sun, 09 Dec 2012 19:30:08 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/interps/c-intercal/oilout04.c	Sun Dec 09 19:30:08 2012 +0000
@@ -0,0 +1,707 @@
+/* Automatically generated output, edit source and recompile to change */
+#include "oil.h"
+int optimize_pass1_4(node *np)
+{  int opted=0;
+  unsigned long c,c1,c2,c3,c4,c5,c6,c7,c8,c9;
+  unsigned long x,x1,x2,x3,x4,x5,x6,x7,x8,x9,r;
+  int tempw;
+  node *tp;
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->rval->opcode==MESH || np->lval->lval->rval->opcode==MESH32) &&
+     np->lval->lval->rval->constant==1431655765LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->rval->opcode==MESH || np->rval->lval->rval->opcode==MESH32) &&
+     np->rval->lval->rval->constant==715827882LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->lval,np->rval->lval->lval)) break;
+    x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->lval;
+    np->rval->lval->lval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->lval->opcode==MESH || np->lval->lval->lval->opcode==MESH32) &&
+     np->lval->lval->lval->constant==1431655765LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->rval->opcode==MESH || np->rval->lval->rval->opcode==MESH32) &&
+     np->rval->lval->rval->constant==715827882LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->rval,np->rval->lval->lval)) break;
+    x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->lval;
+    np->rval->lval->lval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->rval->opcode==MESH || np->lval->lval->rval->opcode==MESH32) &&
+     np->lval->lval->rval->constant==1431655765LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->lval->opcode==MESH || np->rval->lval->lval->opcode==MESH32) &&
+     np->rval->lval->lval->constant==715827882LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->lval,np->rval->lval->rval)) break;
+    x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->rval;
+    np->rval->lval->rval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->lval->opcode==MESH || np->lval->lval->lval->opcode==MESH32) &&
+     np->lval->lval->lval->constant==1431655765LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->lval->opcode==MESH || np->rval->lval->lval->opcode==MESH32) &&
+     np->rval->lval->lval->constant==715827882LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->rval,np->rval->lval->rval)) break;
+    x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->rval;
+    np->rval->lval->rval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->rval->opcode==MESH || np->lval->lval->rval->opcode==MESH32) &&
+     np->lval->lval->rval->constant==715827882LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->rval->opcode==MESH || np->rval->lval->rval->opcode==MESH32) &&
+     np->rval->lval->rval->constant==1431655765LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->lval,np->rval->lval->lval)) break;
+    x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->lval;
+    np->rval->lval->lval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->rval->opcode==MESH || np->lval->lval->rval->opcode==MESH32) &&
+     np->lval->lval->rval->constant==715827882LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->lval->opcode==MESH || np->rval->lval->lval->opcode==MESH32) &&
+     np->rval->lval->lval->constant==1431655765LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->lval,np->rval->lval->rval)) break;
+    x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->rval;
+    np->rval->lval->rval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->lval->opcode==MESH || np->lval->lval->lval->opcode==MESH32) &&
+     np->lval->lval->lval->constant==715827882LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->rval->opcode==MESH || np->rval->lval->rval->opcode==MESH32) &&
+     np->rval->lval->rval->constant==1431655765LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->rval,np->rval->lval->lval)) break;
+    x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->lval;
+    np->rval->lval->lval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_OR &&
+     np->lval->opcode==C_LSHIFTBY &&
+     np->lval->lval->opcode==C_AND &&
+     (np->lval->lval->lval->opcode==MESH || np->lval->lval->lval->opcode==MESH32) &&
+     np->lval->lval->lval->constant==715827882LU &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     np->lval->rval->constant==1LU &&
+     np->rval->opcode==C_LSHIFTBY &&
+     np->rval->lval->opcode==C_AND &&
+     (np->rval->lval->lval->opcode==MESH || np->rval->lval->lval->opcode==MESH32) &&
+     np->rval->lval->lval->constant==1431655765LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==1LU)
+  do
+  {
+    if(!nodessame(np->lval->lval->rval,np->rval->lval->rval)) break;
+    x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
+    OPTING(lshift32by1);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->rval;
+    np->rval->lval->rval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2147483647LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==MINGLE &&
+     (np->lval->opcode==MESH || np->lval->opcode==MESH32) &&
+     np->lval->constant==0LU &&
+     np->rval->opcode==SELECT &&
+     np->rval->lval->opcode==C_AND &&
+     np->rval->lval->lval->width==32 &&
+     (np->rval->lval->rval->opcode==MESH || np->rval->lval->rval->opcode==MESH32) &&
+     np->rval->lval->rval->constant==2863311530LU &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) &&
+     np->rval->rval->constant==715827883LU)
+  do
+  {
+    x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
+    OPTING(lshift32half);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->rval->lval->lval;
+    np->rval->lval->lval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(2863311530LU);
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(1LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_NOT &&
+     np->width==16 &&
+     np->rval->opcode==C_RSHIFTBY &&
+     np->rval->lval->width==16 &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32))
+  do
+  {
+    x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
+    x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
+    OPTING(rshiftoutofneg);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_OR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_RSHIFTBY;
+    tp->lval->width=32;
+    MAYBENEWNODE(tp->lval->lval);
+    tp->lval->lval->opcode=C_NOT;
+    tp->lval->lval->width=16;
+    tp->lval->lval->rval=np->rval->lval;
+    np->rval->lval=0;
+    tp->lval->rval=np->rval->rval;
+    np->rval->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(32768LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_NOT &&
+     np->width==32 &&
+     np->rval->opcode==C_RSHIFTBY &&
+     np->rval->lval->width==32 &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32))
+  do
+  {
+    x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
+    x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
+    OPTING(rshiftoutofneg);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_OR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_RSHIFTBY;
+    tp->lval->width=32;
+    MAYBENEWNODE(tp->lval->lval);
+    tp->lval->lval->opcode=C_NOT;
+    tp->lval->lval->width=32;
+    tp->lval->lval->rval=np->rval->lval;
+    np->rval->lval=0;
+    tp->lval->rval=np->rval->rval;
+    np->rval->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(2147483648LU);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_NOT &&
+     np->width==16 &&
+     np->rval->opcode==C_AND &&
+     np->rval->lval->width==16 &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32))
+  do
+  {
+    x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
+    x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
+    OPTING(andoutofneg);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_OR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    MAYBENEWNODE(tp->lval->lval);
+    tp->lval->lval->opcode=C_NOT;
+    tp->lval->lval->width=16;
+    tp->lval->lval->rval=np->rval->lval;
+    np->rval->lval=0;
+    tp->lval->rval=np->rval->rval;
+    np->rval->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=((~x2)&65535);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_NOT &&
+     np->width==32 &&
+     np->rval->opcode==C_AND &&
+     np->rval->lval->width==32 &&
+     (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32))
+  do
+  {
+    x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
+    x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
+    OPTING(andoutofneg);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_OR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    MAYBENEWNODE(tp->lval->lval);
+    tp->lval->lval->opcode=C_NOT;
+    tp->lval->lval->width=32;
+    tp->lval->lval->rval=np->rval->lval;
+    np->rval->lval=0;
+    tp->lval->rval=np->rval->rval;
+    np->rval->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(~x2);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_AND &&
+     np->lval->opcode==C_LSHIFTBY &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     (np->rval->opcode==MESH || np->rval->opcode==MESH32))
+  do
+  {
+    x3=np->rval->constant; c3=np->rval->optdata;
+    x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
+    x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
+    OPTING(andintoshift);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->lval->lval;
+    np->lval->lval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(x3>>x2);
+    tp->rval=np->lval->rval;
+    np->lval->rval=0;
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_AND &&
+     np->lval->opcode==C_RSHIFTBY &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     (np->rval->opcode==MESH || np->rval->opcode==MESH32))
+  do
+  {
+    x3=np->rval->constant; c3=np->rval->optdata;
+    x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
+    x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
+    OPTING(andintoshift);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_RSHIFTBY;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_AND;
+    tp->lval->width=32;
+    tp->lval->lval=np->lval->lval;
+    np->lval->lval=0;
+    MAYBENEWNODE(tp->lval->rval);
+    tp->lval->rval->opcode=MESH32;
+    tp->lval->rval->width=32;
+    tp->lval->rval->constant=(x3<<x2);
+    tp->rval=np->lval->rval;
+    np->lval->rval=0;
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_LSHIFTBY &&
+     np->lval->opcode==C_OR &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     (np->rval->opcode==MESH || np->rval->opcode==MESH32))
+  do
+  {
+    x3=np->rval->constant; c3=np->rval->optdata;
+    x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
+    x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
+    OPTING(oroutofshift);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_OR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_LSHIFTBY;
+    tp->lval->width=32;
+    tp->lval->lval=np->lval->lval;
+    np->lval->lval=0;
+    tp->lval->rval=np->rval;
+    np->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(x2<<x3);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_RSHIFTBY &&
+     np->lval->opcode==C_OR &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     (np->rval->opcode==MESH || np->rval->opcode==MESH32))
+  do
+  {
+    x3=np->rval->constant; c3=np->rval->optdata;
+    x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
+    x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
+    OPTING(oroutofshift);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_OR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_RSHIFTBY;
+    tp->lval->width=32;
+    tp->lval->lval=np->lval->lval;
+    np->lval->lval=0;
+    tp->lval->rval=np->rval;
+    np->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(x2>>x3);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_LSHIFTBY &&
+     np->lval->opcode==C_XOR &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     (np->rval->opcode==MESH || np->rval->opcode==MESH32))
+  do
+  {
+    x3=np->rval->constant; c3=np->rval->optdata;
+    x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
+    x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
+    OPTING(xoroutofshift);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_XOR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_LSHIFTBY;
+    tp->lval->width=32;
+    tp->lval->lval=np->lval->lval;
+    np->lval->lval=0;
+    tp->lval->rval=np->rval;
+    np->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(x2<<x3);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_RSHIFTBY &&
+     np->lval->opcode==C_XOR &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     (np->rval->opcode==MESH || np->rval->opcode==MESH32))
+  do
+  {
+    x3=np->rval->constant; c3=np->rval->optdata;
+    x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
+    x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
+    OPTING(xoroutofshift);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_XOR;
+    tp->width=32;
+    MAYBENEWNODE(tp->lval);
+    tp->lval->opcode=C_RSHIFTBY;
+    tp->lval->width=32;
+    tp->lval->lval=np->lval->lval;
+    np->lval->lval=0;
+    tp->lval->rval=np->rval;
+    np->rval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(x2>>x3);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  checknodeactbits(np);
+  if(np->opcode==C_LSHIFTBY &&
+     np->lval->opcode==C_LSHIFTBY &&
+     (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
+     (np->rval->opcode==MESH || np->rval->opcode==MESH32))
+  do
+  {
+    x3=np->rval->constant; c3=np->rval->optdata;
+    x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
+    x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
+    OPTING(combinellshift);
+    tp=newnode();
+    MAYBENEWNODE(tp);
+    tp->opcode=C_LSHIFTBY;
+    tp->width=32;
+    tp->lval=np->lval->lval;
+    np->lval->lval=0;
+    MAYBENEWNODE(tp->rval);
+    tp->rval->opcode=MESH32;
+    tp->rval->width=32;
+    tp->rval->constant=(x2+x3);
+    nodefree(np->lval); nodefree(np->rval);
+    tempw=np->width; *np=*tp; np->width=tempw; free(tp);
+  } while(0);
+
+  c=c1=c2=c3=c4=c5=c6=c7=c8=c9=0;
+  x=x1=x2=x3=x4=x5=x6=x7=x8=x9=r=0;
+  if(c+c1+c2+c3+c4+c5+c6+c7+c8+c9+r+
+     x+x1+x2+x3+x4+x5+x6+x7+x8+x9) raise(SIGSEGV);
+  return opted;
+}