removed all calls to blm~ from table
duplicated some patterns for in[lc] to deal with de[lc] extra rule for adi 2 to deal with source1 cleverly
This commit is contained in:
		
							parent
							
								
									978dd0191a
								
							
						
					
					
						commit
						eebc753306
					
				
					 1 changed files with 39 additions and 11 deletions
				
			
		|  | @ -571,6 +571,9 @@ adi $1==2       | NC SCR_REG CONST2 | | {regconst2,%[1],tostring(%[2.num])} | | | |||
| 						| %[1] %[2]	| adi 2 | | ||||
| ...		| NC source2-REG CONST2+ADDR_EXTERNAL+ADDR_LOCAL | | ||||
| 			allocate(%[1],REG=%[1])	| %[2] %[a] | adi 2 | | ||||
| ...		| NC source1 CONST2+ADDR_EXTERNAL+ADDR_LOCAL | | ||||
| 			allocate(%[1],REG={CONST2, 0}) | ||||
| 			"bisb %[1],%[a]"	| %[2] %[a] | adi 2 | | ||||
| ...		| NC regconst2 CONST2 | | | ||||
| 					   {regconst2,%[1.reg], | ||||
| 					      tostring(%[2.num])+"+"+%[1.ind]} | | | ||||
|  | @ -1050,6 +1053,8 @@ lil ngi sil $1==$3 && $2==2 && inreg($1)==2 | | | |||
| 			"neg *%(regvar($1)%)" 		|	| | | ||||
| lil inc sil $1==$3 && inreg($1)==2 | | INDSTORE | ||||
| 			"inc *%(regvar($1)%)"		|	| | | ||||
| lil dec sil $1==$3 && inreg($1)==2 | | INDSTORE | ||||
| 			"dec *%(regvar($1)%)"		|	| | | ||||
| lol adi stl $2==2 && $1==$3 && inreg($1)==2 | source2 | | ||||
| 			remove(regvar($1)) | ||||
| 			"add %[1],%(regvar($1)%)" | ||||
|  | @ -1080,6 +1085,12 @@ lol inl $1==$2 && inreg($1)==2 | | | |||
| lol inl $1==$2 | | | ||||
| 			allocate(REG={LOCAL2, $1, 2})	| %[a]  | ||||
| 							| inl $2 | | ||||
| lol del $1==$2 && inreg($1)==2 | | | ||||
| 			allocate(REG=regvar($1))	| %[a]  | ||||
| 							| del $2 | | ||||
| lol del $1==$2 | | | ||||
| 			allocate(REG={LOCAL2, $1, 2})	| %[a]  | ||||
| 							| del $2 | | ||||
| lol adp dup stl $1==$4 && $3==2 && inreg($1)==2	| | | | ||||
| 					| lol $1 adp $2 stl $1 lol $1 | | ||||
| lol adp stl $1==$3 && $2==1 && inreg($1)==2 | | | ||||
|  | @ -1109,6 +1120,8 @@ lil ngi sil $1==$3 && $2==2 | | INDSTORE | |||
| 			"neg *$1(r5)"			|	| | | ||||
| lil inc sil $1==$3 | | INDSTORE | ||||
| 			"inc *$1(r5)"			|	| | | ||||
| lil dec sil $1==$3 | | INDSTORE | ||||
| 			"dec *$1(r5)"			|	| | | ||||
| lol adi stl $2==2 && $1==$3 | source2 | | ||||
| 			remove(indordef) | ||||
| 			remove(locals, %[ind] <= $1 && %[ind]+%[size] > $1) | ||||
|  | @ -2312,11 +2325,27 @@ cmf zge $1==8	| DBL_REG double8 | | |||
| 			"cmpf %[1],%[2]\ncfcc" | ||||
| 			"jle $2"				| | | | ||||
| 
 | ||||
| and zeq $1==2	| source2 source2 | | ||||
| and zeq $1==2	| source1 source1or2 | | ||||
| 			remove(all) | ||||
| 			"bitb %[1],%[2]" | ||||
| 			"jeq $2"				| | | | ||||
| ...		| source1or2 source1 | | ||||
| 			remove(all) | ||||
| 			"bitb %[1],%[2]" | ||||
| 			"jeq $2"				| | | | ||||
| ...		| source2 source2 | | ||||
| 			remove(all) | ||||
| 			"bit %[1],%[2]" | ||||
| 			"jeq $2"				| | | | ||||
| and zne $1==2	| source2 source2 | | ||||
| and zne $1==2	| source1 source1or2 | | ||||
| 			remove(all) | ||||
| 			"bitb %[1],%[2]" | ||||
| 			"jne $2"				| | | | ||||
| ...		| source1or2 source1 | | ||||
| 			remove(all) | ||||
| 			"bitb %[1],%[2]" | ||||
| 			"jne $2"				| | | | ||||
| ...		| source2 source2 | | ||||
| 			remove(all) | ||||
| 			"bit %[1],%[2]" | ||||
| 			"jne $2"				| | | | ||||
|  | @ -2414,19 +2443,18 @@ blm             | SCR_REG SCR_REG | | |||
| 			allocate(REG={CONST2,$1/2}) | ||||
| 			"1:mov (%[2])+,(%[1])+\nsob %[a],1b" | ||||
| 			erase(%[1]) erase (%[2]) erase(%[a])    |       | | | ||||
| bls $1==2       | source2 | | ||||
| 			remove(all) | ||||
| 			move(%[1],r0) | ||||
| 			"jsr pc,blm~" | ||||
| 			erase(r01)                              |       | | | ||||
| bls $1==2       | SCR_REG SCR_REG SCR_REG | | ||||
| 			"asr %[1]\nbeq 2f" | ||||
| 			"1:mov (%[3])+,(%[2])+\nsob %[1],1b\n2:" | ||||
| 			erase(%[1]) erase (%[2]) erase(%[3])    |       | | | ||||
| #ifdef UNTESTED | ||||
| bls !defined($1)| source2 source2 | | ||||
| bls !defined($1)| source2 SCR_REG SCR_REG SCR_REG | | ||||
| 			remove(all) | ||||
| 			"cmp %[1],$$2" | ||||
| 			"beq 1f;jmp unknown~;1:" | ||||
| 			move(%[2],r0) | ||||
| 			"jsr pc,blm~" | ||||
| 			erase(r01)                              |       | | | ||||
| 			"asr %[2]\nbeq 2f" | ||||
| 			"1:mov (%[4])+,(%[3])+\nsob %[2],1b\n2:" | ||||
| 			erase(%[2]) erase (%[3]) erase(%[4])    |       | | | ||||
| #endif | ||||
| lae csa $2==2 | source2 | | ||||
| 			remove(all) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue