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