fixes from Nigel Hall
This commit is contained in:
		
							parent
							
								
									41007486bf
								
							
						
					
					
						commit
						304f03a836
					
				
					 2 changed files with 197 additions and 156 deletions
				
			
		|  | @ -9,8 +9,9 @@ | ||||||
| 
 | 
 | ||||||
| #define newilb(x)       fprintf(codefile,"%s:\n",x) | #define newilb(x)       fprintf(codefile,"%s:\n",x) | ||||||
| #define newdlb(x)       fprintf(codefile,"%s:\n",x) | #define newdlb(x)       fprintf(codefile,"%s:\n",x) | ||||||
|  | #define newplb(x)       fprintf(codefile,".align 2\n%s:\n",x) | ||||||
| #define dlbdlb(x,y)     fprintf(codefile,"%s = %s\n",x,y) | #define dlbdlb(x,y)     fprintf(codefile,"%s = %s\n",x,y) | ||||||
| #define newlbss(l,x)    fprintf(codefile,"%s:.space\t%ld\n",l,x); | #define newlbss(l,x)    fprintf(codefile,".comm\t%s,%ld\n",l,x) | ||||||
| 
 | 
 | ||||||
| #define cst_fmt         "%ld" | #define cst_fmt         "%ld" | ||||||
| #define off_fmt         "%ld" | #define off_fmt         "%ld" | ||||||
|  |  | ||||||
|  | @ -7,8 +7,23 @@ rcsid = "$Header$" | ||||||
|  *								 * |  *								 * | ||||||
|  *	Author: Annita Wilschut.				 * |  *	Author: Annita Wilschut.				 * | ||||||
|  *								 * |  *								 * | ||||||
|  |  *	Corrections: Nigel Hall					 * | ||||||
|  |  *								 * | ||||||
|  *****************************************************************/ |  *****************************************************************/ | ||||||
| 
 | 
 | ||||||
|  | /* The handling of arrays was not complete.  Tables extended | ||||||
|  |  * in order to handle access to other lexical levels between | ||||||
|  |  * local and global.  Corrections to ordering of tokens made. | ||||||
|  |  * | ||||||
|  |  * The token length was added to cope with the length field | ||||||
|  |  * of MOVMi instructions.  The lengths adjusted by division by 4. | ||||||
|  |  * | ||||||
|  |  * The compare procedures did not return a result.  Caused | ||||||
|  |  * an extra word to be popped off the stack. The "cmi txx ior" & | ||||||
|  |  * "txx and" sequences needed their branch criterion inverting. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
| /* | /* | ||||||
|  * Deze tabel implementeert, naast gewone, ook floating point |  * Deze tabel implementeert, naast gewone, ook floating point | ||||||
|  * instructies. Bij gebrek aan een floating point processor |  * instructies. Bij gebrek aan een floating point processor | ||||||
|  | @ -16,7 +31,7 @@ rcsid = "$Header$" | ||||||
|  * getest. Wanneer NOFLOAT "aan" is worden er zeker geen |  * getest. Wanneer NOFLOAT "aan" is worden er zeker geen | ||||||
|  * floating point instructies gegenereerd. Na verwijdering van |  * floating point instructies gegenereerd. Na verwijdering van | ||||||
|  * alle ifdef's worden er bij de vertaling van een programma dat |  * alle ifdef's worden er bij de vertaling van een programma dat | ||||||
|  * geen floating point gebruikt, hoogst waarschhijnlijk ook |  * geen floating point gebruikt, hoogst waarschijnlijk ook | ||||||
|  * geen floating point instructies gegenereerd. Dit is echter niet |  * geen floating point instructies gegenereerd. Dit is echter niet | ||||||
|  * uitgebreid getest. |  * uitgebreid getest. | ||||||
|  */ |  */ | ||||||
|  | @ -38,6 +53,7 @@ PROGRAMCOUNTER | ||||||
| STACKPOINTER | STACKPOINTER | ||||||
| STATICBASE | STATICBASE | ||||||
| LOCALBASE | LOCALBASE | ||||||
|  | PROCREG			/* processor register - used by LPRi & SPRi */ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| REGISTERS | REGISTERS | ||||||
|  | @ -50,10 +66,10 @@ f23("f2")=f2+f3, | ||||||
| f45("f4")=f4+f5, | f45("f4")=f4+f5, | ||||||
| f67("f6")=f6+f7			: DFREG. | f67("f6")=f6+f7			: DFREG. | ||||||
| r01("r0")=r0+r1,r23("r2")=r2+r3 : REGPAIR. | r01("r0")=r0+r1,r23("r2")=r2+r3 : REGPAIR. | ||||||
| sp				: STACKPOINTER, MEMREG. | sp				: STACKPOINTER, MEMREG, PROCREG. | ||||||
| pc				: PROGRAMCOUNTER. | pc				: PROGRAMCOUNTER. | ||||||
| fp				: LOCALBASE, MEMREG. | fp				: LOCALBASE, MEMREG, PROCREG. | ||||||
| sb				: STATICBASE, MEMREG. | sb				: STATICBASE, MEMREG, PROCREG. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| TOKENS | TOKENS | ||||||
|  | @ -94,6 +110,8 @@ memregrelcon4	= { MEMREG reg; ADDR disp1; ADDR disp2;} 4 . | ||||||
| 
 | 
 | ||||||
| label		= {ADDR disp; } 4 disp . | label		= {ADDR disp; } 4 disp . | ||||||
| 
 | 
 | ||||||
|  | regrelsid	= {INT ind; REG reg1; REG reg2; } 4 ind "(" reg1 | ||||||
|  | 			")[" reg2 ":d]" . | ||||||
| memregrelsid	= {INT ind; MEMREG reg1; REG reg2; } 4 ind "(" reg1 | memregrelsid	= {INT ind; MEMREG reg1; REG reg2; } 4 ind "(" reg1 | ||||||
| 			")[" reg2 ":d]" . | 			")[" reg2 ":d]" . | ||||||
| abssid		= {ADDR disp; REG reg; } 4 "@" disp "[" reg ":d]" . | abssid		= {ADDR disp; REG reg; } 4 "@" disp "[" reg ":d]" . | ||||||
|  | @ -107,7 +125,7 @@ SETS | ||||||
| src1		= regrel1 + memregrel1 + memrel1 + absolute1 . | src1		= regrel1 + memregrel1 + memrel1 + absolute1 . | ||||||
| src2		= regrel2 + memregrel2 + memrel2 + absolute2 . | src2		= regrel2 + memregrel2 + memrel2 + absolute2 . | ||||||
| src4		= REG + const4 + LOCAL + regrel4 + memrel4 + | src4		= REG + const4 + LOCAL + regrel4 + memrel4 + | ||||||
| 	       	  memregrel4 + memregrelsid + abssid + absolute4 +  | 		  memregrel4 + regrelsid + memregrelsid + abssid + absolute4 + | ||||||
| 		  addr_external. | 		  addr_external. | ||||||
| con4		= regcon4 + memregcon4 + memregrelcon4 . | con4		= regcon4 + memregcon4 + memregrelcon4 . | ||||||
| tossrc4		= TOS + src4 . | tossrc4		= TOS + src4 . | ||||||
|  | @ -123,17 +141,17 @@ tosdst1		= TOS + dst1 . | ||||||
| dst2		= src2 . | dst2		= src2 . | ||||||
| tosdst2		= TOS + dst2 . | tosdst2		= TOS + dst2 . | ||||||
| dst4		= REG + LOCAL + regrel4 + memregrel4 + memrel4 + | dst4		= REG + LOCAL + regrel4 + memregrel4 + memrel4 + | ||||||
| 		  absolute4 + memregrelsid + abssid . | 		  absolute4 + regrelsid + memregrelsid + abssid . | ||||||
| tosdst4		= TOS + dst4 . | tosdst4		= TOS + dst4 . | ||||||
| fdst4		= FREG + LOCAL + regrel4 + memregrel4 + memrel4 + | fdst4		= FREG + LOCAL + regrel4 + memregrel4 + memrel4 + | ||||||
| 		  absolute4 + memregrelsid + abssid . | 		  absolute4 + regrelsid + memregrelsid + abssid . | ||||||
| tosfdst4	= TOS + fdst4 . | tosfdst4	= TOS + fdst4 . | ||||||
| fdst8		= fsrc8 . | fdst8		= fsrc8 . | ||||||
| tosfdst8	= tosfsrc8 . | tosfdst8	= tosfsrc8 . | ||||||
| regrel		= regrel1 + regrel2 + regrel4 +regrel8 . | regrel		= regrel1 + regrel2 + regrel4 +regrel8 . | ||||||
| memregrel	= memregrel1 + memregrel2 + memregrel4 +memregrel8 . | memregrel	= memregrel1 + memregrel2 + memregrel4 +memregrel8 . | ||||||
| memrel		= memrel1 + memrel2 + memrel4 +memrel8 . | memrel		= memrel1 + memrel2 + memrel4 +memrel8 . | ||||||
| rel		= regrel + memregrel + memrel + memregrelsid  | rel		= regrel + memregrel + memrel + regrelsid + memregrelsid | ||||||
| 		   + fprelsid + sprelsid . | 		   + fprelsid + sprelsid . | ||||||
| absolute	= absolute1 + absolute2 + absolute4 + absolute8 + abssid . | absolute	= absolute1 + absolute2 + absolute4 + absolute8 + abssid . | ||||||
| regs		= REG + FREG + DFREG + MEMREG + REGPAIR . | regs		= REG + FREG + DFREG + MEMREG + REGPAIR . | ||||||
|  | @ -213,7 +231,7 @@ sfsd tosdst4:wo . | ||||||
| tbitd tossrc4:ro, tosdst4:ro . | tbitd tossrc4:ro, tosdst4:ro . | ||||||
| cbitd tossrc4:ro, tosdst4:rw . | cbitd tossrc4:ro, tosdst4:rw . | ||||||
| sbitd tossrc4:ro, tosdst4:rw . | sbitd tossrc4:ro, tosdst4:rw . | ||||||
| movmd tosdst4:ro, tosdst4:rw, const4 . | movmd tossrc4:ro, tosdst4:rw, const4 . | ||||||
| indexd REG, tossrc4:ro, tossrc4:ro . | indexd REG, tossrc4:ro, tossrc4:ro . | ||||||
| brxx label . | brxx label . | ||||||
| beq label . | beq label . | ||||||
|  | @ -234,7 +252,8 @@ jsr tosdst4+label . | ||||||
| ret const4:ro . | ret const4:ro . | ||||||
| adjspd tossrc4:ro . | adjspd tossrc4:ro . | ||||||
| exit label . | exit label . | ||||||
| sprd MEMREG:rw, tossrc4:ro . | lprd PROCREG:rw, tossrc4:ro . | ||||||
|  | sprd PROCREG:ro, tossrc4:rw . | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -1652,6 +1671,10 @@ with REG | ||||||
| 					leaving adi 2 | 					leaving adi 2 | ||||||
| 
 | 
 | ||||||
| pat lae aar $2==4 && rom($1,3)==4 && rom($1,1)==0 | pat lae aar $2==4 && rom($1,3)==4 && rom($1,1)==0 | ||||||
|  | with REG REG | ||||||
|  | uses REG | ||||||
|  |     gen addr {regrelsid, 0, %2, %1}, %a | ||||||
|  | 					yields %a | ||||||
| with REG addr_local | with REG addr_local | ||||||
| uses REG | uses REG | ||||||
|     gen addr {memregrelsid, %2.ind, fp, %1}, %a |     gen addr {memregrelsid, %2.ind, fp, %1}, %a | ||||||
|  | @ -1663,6 +1686,11 @@ uses REG | ||||||
| with					leaving lae $1 aar $2 | with					leaving lae $1 aar $2 | ||||||
| 
 | 
 | ||||||
| pat lae aar $2==4 && rom($1,3)==4 && rom($1,1)!=0 | pat lae aar $2==4 && rom($1,3)==4 && rom($1,1)!=0 | ||||||
|  | with REG REG | ||||||
|  | uses REG | ||||||
|  |     gen subd {const4, rom($1,1)}, %1 | ||||||
|  | 	addr {regrelsid, 0, %2, %1}, %a | ||||||
|  | 					yields %a | ||||||
| with REG addr_local | with REG addr_local | ||||||
| uses REG | uses REG | ||||||
|     gen subd {const4, rom($1,1)}, %1 |     gen subd {const4, rom($1,1)}, %1 | ||||||
|  | @ -1676,47 +1704,57 @@ uses REG | ||||||
| with					leaving lae $1 aar $2 | with					leaving lae $1 aar $2 | ||||||
| 
 | 
 | ||||||
| pat lae lar $2==4 && rom($1,3)==4 && rom($1,1)==0 | pat lae lar $2==4 && rom($1,3)==4 && rom($1,1)==0 | ||||||
|  | with REG REG				yields {regrelsid, 0, %2, %1} | ||||||
| with REG addr_local			yields {memregrelsid, %2.ind, fp, %1} | with REG addr_local			yields {memregrelsid, %2.ind, fp, %1} | ||||||
| with REG addr_external			yields {abssid, %2.disp, %1} | with REG addr_external			yields {abssid, %2.disp, %1} | ||||||
| with					leaving lae $1 lar $2 | with					leaving lae $1 lar $2 | ||||||
| 
 | 
 | ||||||
| pat lae lar $2==4 && rom($1,3)==4 && rom($1,1)!=0 | pat lae lar $2==4 && rom($1,3)==4 && rom($1,1)!=0 | ||||||
|  | with REG REG | ||||||
|  |     gen subd {const4, rom($1,1)}, %1	yields {regrelsid, 0, %2, %1} | ||||||
| with REG addr_local | with REG addr_local | ||||||
|     gen subd {const4, rom($1,1)}, %1 |     gen subd {const4, rom($1,1)}, %1	yields {memregrelsid, %2.ind, fp, %1} | ||||||
| 				yields {memregrelsid, %2.ind, fp, %1} |  | ||||||
| with REG addr_external | with REG addr_external | ||||||
|     gen subd {const4, rom($1,1)}, %1 |     gen subd {const4, rom($1,1)}, %1	yields {abssid, %2.disp, %1} | ||||||
| 				yields {abssid, %2.disp, %1} |  | ||||||
| with					leaving lae $1 lar $2 | with					leaving lae $1 lar $2 | ||||||
| 
 | 
 | ||||||
| pat lae sar $2==4 && rom($1,3)==4 && rom($1,1)==0 | pat lae sar $2==4 && rom($1,3)==4 && rom($1,1)==0 | ||||||
| with src4 REG addr_local | with REG REG src4 | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen move %1, {memregrelsid, %3.ind, fp, %2} |     gen movd %3, {regrelsid, 0, %2, %1} | ||||||
| with src4 REG addr_external | with REG addr_local src4 | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen move %1, {abssid, %3.disp, %2} |     gen move %3, {memregrelsid, %2.ind, fp, %1} | ||||||
|  | with REG addr_external src4 | ||||||
|  | kills allmincon | ||||||
|  |     gen move %3, {abssid, %2.disp, %1} | ||||||
| with					leaving lae $1 sar $2 | with					leaving lae $1 sar $2 | ||||||
| 
 | 
 | ||||||
| pat lae lar $2==4 && rom($1,3)==4 && rom($1,1)!=0 | pat lae sar $2==4 && rom($1,3)==4 && rom($1,1)!=0 | ||||||
| with src4 REG addr_local | with REG REG src4 | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen subd {const4, rom($1,1)}, %2 |     gen subd {const4, rom($1,1)}, %1 | ||||||
| 	move %1, {memregrelsid, %3.ind, fp, %2} | 	movd %3, {regrelsid, 0, %2, %1} | ||||||
| with src4 REG addr_external | with REG addr_local src4 | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen subd {const4, rom($1,1)}, %2 |     gen subd {const4, rom($1,1)}, %1 | ||||||
| 	move %1, {abssid, %3.disp, %2} | 	move %3, {memregrelsid, %2.ind, fp, %1} | ||||||
|  | with REG addr_external src4 | ||||||
|  | kills allmincon | ||||||
|  |     gen subd {const4, rom($1,1)}, %1 | ||||||
|  | 	move %3, {abssid, %2.disp, %1} | ||||||
| with					leaving lae $1 sar $2 | with					leaving lae $1 sar $2 | ||||||
| 
 | 
 | ||||||
| pat lae aar $2==4 && rom($1,1)==0 | pat lae aar $2==4 && rom($1,1)==0 | ||||||
| with src4 REG | with REG src4 | ||||||
|     gen indexd %2, {const4, rom($1,3)-1}, %1	yields %2 |     gen indexd %1, {const4, rom($1,3)-1}, %2 | ||||||
|  | 					yields %1 | ||||||
| 
 | 
 | ||||||
| pat lae aar $2==4 && rom($1,1)!=0 | pat lae aar $2==4 && rom($1,1)!=0 | ||||||
| with REG REG | with REG src4 | ||||||
|     gen subd {const4,rom($1,1)}, %1 |     gen subd {const4, rom($1,1)}, %1 | ||||||
| 	indexd %2, {const4, rom($1,3)-1}, %1	yields %2 | 	indexd %1, {const4, rom($1,3)-1}, %2 | ||||||
|  | 					yields %1 | ||||||
| 
 | 
 | ||||||
| pat lae sar defined(rom($1,3)) | pat lae sar defined(rom($1,3)) | ||||||
| 					leaving lae $1 | 					leaving lae $1 | ||||||
|  | @ -1761,45 +1799,45 @@ gen jsr {absolute4, ".sar"} | ||||||
| 
 | 
 | ||||||
| proc cmitxxand | proc cmitxxand | ||||||
| with src4 src4 REG | with src4 src4 REG | ||||||
| gen cmpd %2, %1 | gen cmpd %1, %2 | ||||||
|     brxx* {label, "1f"} |     brxx* {label, "1f"} | ||||||
|     xord %3, %3 |     movqd {const4, 0}, %3 | ||||||
|     1: |     1:					yields %3 | ||||||
| 
 | 
 | ||||||
| proc cmitxxior | proc cmitxxior | ||||||
| with src4 src4 REG | with src4 src4 REG | ||||||
| gen cmpd %2, %1 | gen cmpd %1, %2 | ||||||
|     brxx* {label, "1f"} |     brxx* {label, "1f"} | ||||||
|     sbitd {const4, 0}, %3 |     sbitd {const4, 0}, %3 | ||||||
|     1: |     1:					yields %3 | ||||||
| 
 | 
 | ||||||
| proc txxand | proc txxand | ||||||
| with src4 REG | with src4 REG | ||||||
| gen cmpd {const4, 0}, %1 | gen cmpqd {const4, 0}, %1 | ||||||
|     brxx* {label, "1f"} |     brxx* {label, "1f"} | ||||||
|     xord %2, %2 |     movqd {const4, 0}, %2 | ||||||
|     1: |     1:					yields %2 | ||||||
| 
 | 
 | ||||||
| proc txxior | proc txxior | ||||||
| with src4 REG | with src4 REG | ||||||
| gen cmpd {const4, 0}, %1 | gen cmpqd {const4, 0}, %1 | ||||||
|     brxx* {label, "1f"} |     brxx* {label, "1f"} | ||||||
|     sbitd {const4, 0}, %2 |     sbitd {const4, 0}, %2 | ||||||
|     1: |     1:					yields %2 | ||||||
| 
 | 
 | ||||||
| pat cmi tlt and $1==4 && $3==4	call cmitxxand("blt") | pat cmi tlt and $1==4 && $3==4	call cmitxxand("bgt") | ||||||
| pat cmi tle and $1==4 && $3==4	call cmitxxand("ble") | pat cmi tle and $1==4 && $3==4	call cmitxxand("bge") | ||||||
| pat cmi teq and $1==4 && $3==4	call cmitxxand("beq") | pat cmi teq and $1==4 && $3==4	call cmitxxand("beq") | ||||||
| pat cmi tne and $1==4 && $3==4	call cmitxxand("bne") | pat cmi tne and $1==4 && $3==4	call cmitxxand("bne") | ||||||
| pat cmi tge and $1==4 && $3==4	call cmitxxand("bge") | pat cmi tge and $1==4 && $3==4	call cmitxxand("ble") | ||||||
| pat cmi tgt and $1==4 && $3==4	call cmitxxand("bgt") | pat cmi tgt and $1==4 && $3==4	call cmitxxand("blt") | ||||||
| 
 | 
 | ||||||
| pat cmi tlt ior $1==4 && $3==4	call cmitxxior("blt") | pat cmi tlt ior $1==4 && $3==4	call cmitxxior("ble") | ||||||
| pat cmi tle ior $1==4 && $3==4	call cmitxxior("ble") | pat cmi tle ior $1==4 && $3==4	call cmitxxior("blt") | ||||||
| pat cmi teq ior $1==4 && $3==4	call cmitxxior("beq") | pat cmi teq ior $1==4 && $3==4	call cmitxxior("bne") | ||||||
| pat cmi tne ior $1==4 && $3==4	call cmitxxior("bne") | pat cmi tne ior $1==4 && $3==4	call cmitxxior("beq") | ||||||
| pat cmi tge ior $1==4 && $3==4	call cmitxxior("bge") | pat cmi tge ior $1==4 && $3==4	call cmitxxior("bgt") | ||||||
| pat cmi tgt ior $1==4 && $3==4	call cmitxxior("bgt") | pat cmi tgt ior $1==4 && $3==4	call cmitxxior("bge") | ||||||
| 
 | 
 | ||||||
| pat tlt and $2==4		call txxand("bgt") | pat tlt and $2==4		call txxand("bgt") | ||||||
| pat tle and $2==4		call txxand("bge") | pat tle and $2==4		call txxand("bge") | ||||||
|  | @ -1808,12 +1846,12 @@ pat tne and $2==4		call txxand("bne") | ||||||
| pat tge and $2==4		call txxand("ble") | pat tge and $2==4		call txxand("ble") | ||||||
| pat tgt and $2==4		call txxand("blt") | pat tgt and $2==4		call txxand("blt") | ||||||
| 
 | 
 | ||||||
| pat tlt ior $2==4		call txxior("bgt") | pat tlt ior $2==4		call txxior("ble") | ||||||
| pat tle ior $2==4		call txxior("bge") | pat tle ior $2==4		call txxior("blt") | ||||||
| pat teq ior $2==4		call txxior("beq") | pat teq ior $2==4		call txxior("bne") | ||||||
| pat tne ior $2==4		call txxior("bne") | pat tne ior $2==4		call txxior("beq") | ||||||
| pat tge ior $2==4		call txxior("ble") | pat tge ior $2==4		call txxior("bgt") | ||||||
| pat tgt ior $2==4		call txxior("blt") | pat tgt ior $2==4		call txxior("bge") | ||||||
| 
 | 
 | ||||||
| pat cmi $1==4 | pat cmi $1==4 | ||||||
| with src4 REG | with src4 REG | ||||||
|  | @ -1826,10 +1864,10 @@ uses REG = {const4, 0} | ||||||
|     gen cmpf %1, %2 |     gen cmpf %1, %2 | ||||||
| 	beq {label, "1f"} | 	beq {label, "1f"} | ||||||
| 	bgt {label, "2f"} | 	bgt {label, "2f"} | ||||||
| 	movd {const4, 1}, %a | 	movqd {const4, 1}, %a | ||||||
| 	br {label, "1f"} | 	br {label, "1f"} | ||||||
| 	2: | 	2: | ||||||
| 	movd {const4, 0-1}, %a | 	movqd {const4, 0-1}, %a | ||||||
| 	1:				yields %a | 	1:				yields %a | ||||||
| 
 | 
 | ||||||
| pat cmf $1==8 | pat cmf $1==8 | ||||||
|  | @ -1838,10 +1876,10 @@ uses REG = {const4, 0} | ||||||
|     gen cmpl %1, %2 |     gen cmpl %1, %2 | ||||||
| 	beq {label, "1f"} | 	beq {label, "1f"} | ||||||
| 	bgt {label, "2f"} | 	bgt {label, "2f"} | ||||||
| 	movd {const4, 1}, %a | 	movqd {const4, 1}, %a | ||||||
| 	br {label, "1f"} | 	br {label, "1f"} | ||||||
| 	2: | 	2: | ||||||
| 	movd {const4, 0-1}, %a | 	movqd {const4, 0-1}, %a | ||||||
| 	1:				yields %a | 	1:				yields %a | ||||||
| 
 | 
 | ||||||
| #else | #else | ||||||
|  | @ -2053,26 +2091,26 @@ with const4 STACK | ||||||
| pat blm $1==0 | pat blm $1==0 | ||||||
| 
 | 
 | ||||||
| pat blm $1==4 | pat blm $1==4 | ||||||
| with REG REG | with tosdst4 tossrc4 | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen move {regrel4, %2, 0}, {regrel4, %1, 0} |     gen movd %2, %1 | ||||||
| 
 | 
 | ||||||
| pat blm $1>4 && $1<=16 | pat blm $1>4 && $1<=16 | ||||||
| with REG REG | with REG REG | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen movmd %2, %1, {const4, $1} |     gen movmd {regrel4, %2, 0}, {regrel4, %1, 0}, {const4, $1/4} | ||||||
| with exact addr_external addr_external | with exact addr_external addr_external | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen movmd {absolute4, %2.disp}, {absolute4, %1.disp}, {const4, $1} |     gen movmd {absolute4, %2.disp}, {absolute4, %1.disp}, {const4, $1/4} | ||||||
| with exact addr_external addr_local | with exact addr_external addr_local | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen movmd {LOCAL, %2.ind}, {absolute4, %1.disp}, {const4, $1} |     gen movmd {LOCAL, %2.ind}, {absolute4, %1.disp}, {const4, $1/4} | ||||||
| with exact addr_local addr_external | with exact addr_local addr_external | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen movmd {absolute4, %2.disp}, {LOCAL, %1.ind}, {const4, $1} |     gen movmd {absolute4, %2.disp}, {LOCAL, %1.ind}, {const4, $1/4} | ||||||
| with exact addr_local addr_local | with exact addr_local addr_local | ||||||
| kills allmincon | kills allmincon | ||||||
|     gen movmd {LOCAL, %2.ind}, {LOCAL, %1.ind}, {const4, $1} |     gen movmd {LOCAL, %2.ind}, {LOCAL, %1.ind}, {const4, $1/4} | ||||||
| 
 | 
 | ||||||
| pat blm $1>16 | pat blm $1>16 | ||||||
| with REG REG | with REG REG | ||||||
|  | @ -2201,21 +2239,23 @@ uses REG | ||||||
| 
 | 
 | ||||||
| pat sim | pat sim | ||||||
| with src24 | with src24 | ||||||
|  | kills ALL | ||||||
|     gen movw %1, {absolute2, ".ignmask"} |     gen movw %1, {absolute2, ".ignmask"} | ||||||
| 
 | 
 | ||||||
| pat str $1==0 | pat str $1==0 | ||||||
| with src4 | with  src4 STACK | ||||||
| kills ALL |     gen lprd fp, %1 | ||||||
| gen sprd fp, %1 |  | ||||||
| 
 | 
 | ||||||
| pat str $1==1 | pat str $1==1 | ||||||
| with src4 | with src4 STACK | ||||||
| kills ALL |     gen lprd sp, %1 | ||||||
| gen sprd sp, %1 |  | ||||||
| 
 | 
 | ||||||
| pat str $1==2 | pat str $1==2 | ||||||
| with src4 | with src4 | ||||||
| gen move %1, {absolute4, ".reghp"} | kills ALL | ||||||
|  |     gen movd %1, {TOS} | ||||||
|  | 	jsr  {absolute4, ".strhp"} | ||||||
|  | 	adjspd {const4, 0-4} | ||||||
| 
 | 
 | ||||||
| pat trp | pat trp | ||||||
| kills ALL | kills ALL | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue