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