mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103219 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			31 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| From: Chris Lattner [mailto:sabre@nondot.org]
 | |
| Sent: Wednesday, December 06, 2000 6:41 PM
 | |
| To: Vikram S. Adve
 | |
| Subject: Additional idea with respect to encoding
 | |
| 
 | |
| Here's another idea with respect to keeping the common case instruction
 | |
| size down (less than 32 bits ideally):
 | |
| 
 | |
| Instead of encoding an instruction to operate on two register numbers,
 | |
| have it operate on two negative offsets based on the current register
 | |
| number.  Therefore, instead of using:
 | |
| 
 | |
| r57 = add r55, r56  (r57 is the implicit dest register, of course)
 | |
| 
 | |
| We could use:
 | |
| 
 | |
| r57 = add -2, -1
 | |
| 
 | |
| My guess is that most SSA references are to recent values (especially if
 | |
| they correspond to expressions like (x+y*z+p*q/ ...), so the negative
 | |
| numbers would tend to stay small, even at the end of the procedure (where
 | |
| the implicit register destination number could be quite large).  Of course
 | |
| the negative sign is reduntant, so you would be storing small integers
 | |
| almost all of the time, and 5-6 bits worth of register number would be
 | |
| plenty for most cases...
 | |
| 
 | |
| What do you think?
 | |
| 
 | |
| -Chris
 | |
| 
 |