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