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
 | 
						|
 |