pat lol loc xor stl inreg($1)==reg_any && inreg($4)==reg_any && $3==4
call lol_loc_op_stl("EOR")
+pat lol dup inreg($1)==reg_any && $2==4 leaving lol $1 lol $1
+
/* Procedure : load register, load register, op xx, store register */
proc lol_lol_op_stl example lol lol adi stl
kills local %ind==$4
gen STR_B %1, {regrelpi, regvar($1), $5}
/* code for *pp->p++ and *pp->p-- (integers) */
-pat lil lil adp sil loi $1==$2 && $2==$4 && $5==4 && inreg($1)==reg_any
+pat lil dup adp sil loi $1==$4 && $2==4 && $5==4 && inreg($1)==reg_any
kills GENREG
uses GENREG,GENREG
gen LDR %a, {regind, regvar($1)}
STR %b, {regind, regvar($1)}
LDR %b, {regind, %a} yields %b
-pat lil lil adp sil sti $1==$2 && $2==$4 && $5==4 && inreg($1)==reg_any
+pat lil dup adp sil sti $1==$4 && $2==4 && $5==4 && inreg($1)==reg_any
with GENREG
kills GENREG
uses GENREG,GENREG
STR %1, {regind, %a}
/* code for *pp->p++ and *pp->p-- (bytes) */
-pat lil lil adp sil loi $1==$2 && $2==$4 && $5==1 && inreg($1)==reg_any
+pat lil dup adp sil loi $1==$4 && $2==4 && $5==1 && inreg($1)==reg_any
kills GENREG
uses GENREG,GENREG
gen LDR %a, {regind, regvar($1)}
STR %b, {regind, regvar($1)}
LDR_B %b, {regind, %a} yields %b
-pat lil lil adp sil sti $1==$2 && $2==$4 && $5==1 && inreg($1)==reg_any
+pat lil dup adp sil sti $1==$4 && $2==4 && $5==1 && inreg($1)==reg_any
with GENREG
kills GENREG
uses GENREG,GENREG
/***********************************************************************/
/* code for *p++ and *p-- (integers)*/
-pat lol lol adp stl loi $1==$2 && $2==$4 && $5==4
+pat lol dup adp stl loi $1==$4 && $2==4 && $5==4
kills GENREG
uses GENREG, GENREG
gen move {lb_local, $1}, %a
LDR %b, {regrelpi, %a, $5}
STR %a, {lb_local, $1} yields %b
-pat lol lol adp stl sti $1==$2 && $2==$4 && $5==4
+pat lol dup adp stl sti $1==$4 && $2==4 && $5==4
with GENREG
kills GENREG
uses GENREG
STR %a, {lb_local, $1}
/* code for *p++ and *p-- (bytes)*/
-pat lol lol adp stl loi $1==$2 && $2==$4 && $5==1
+pat lol dup adp stl loi $1==$4 && $2==4 && $5==1
kills GENREG
uses GENREG, GENREG
gen move {lb_local, $1}, %a
LDR_B %b, {regrelpi, %a, $5}
STR %a, {lb_local, $1} yields %b
-pat lol lol adp stl sti $1==$2 && $2==$4 && $5==1
+pat lol dup adp stl sti $1==$4 && $2==4 && $5==1
with GENREG
kills GENREG
uses GENREG
STR %a, {lb_local, $1}
/* code for *pp->p++ and *pp->p-- (integers)*/
-pat lil lil adp sil loi $1==$2 && $2==$4 && $5==4
+pat lil dup adp sil loi $1==$4 && $2==4 && $5==4
kills GENREG
uses GENREG, GENREG, GENREG
gen move {lb_local, $1}, %a
STR %c, {regind, %a}
LDR %c, {regind, %b} yields %c
-pat lil lil adp sil sti $1==$2 && $2==$4 && $5==4
+pat lil dup adp sil sti $1==$4 && $2==4 && $5==4
with GENREG
kills GENREG
uses GENREG, GENREG, GENREG
STR %1, {regind, %b}
/* code for *pp->p++ and *pp->p-- (bytes)*/
-pat lil lil adp sil loi $1==$2 && $2==$4 && $5==1
+pat lil dup adp sil loi $1==$4 && $2==4 && $5==1
kills GENREG
uses GENREG, GENREG, GENREG
gen move {lb_local, $1}, %a
STR %c, {regind, %a}
LDR_B %c, {regind, %b} yields %c
-pat lil lil adp sil sti $1==$2 && $2==$4 && $5==1
+pat lil dup adp sil sti $1==$4 && $2==4 && $5==1
with GENREG
kills GENREG
uses GENREG, GENREG, GENREG