[llvm-commits] [patch] Refactor getCalleeSavedRegClasses and getCalleeSavedRegs
espindola at google.com
Tue Jun 1 13:34:49 PDT 2010
Currently every target needs to implement both
getCalleeSavedRegClasses and getCalleeSavedRegs. They must both return
an array with corresponding elements. This is fairly brittle. The
attached patch simplifies things by replacing getCalleeSavedRegClasses
with a getCalleeSavedRegClass that returns the class for a single
The patch already simplifies the code a bit. If we drop the new extra
asserts, it will simplify a lot more. The only case where there is no
trivial mapping from register to register class is R4 to R7 in thumb1
This patch does introduce more virtual function calls. Is there any
particular benchmark you would like me to try it in? Some
*) Implement getCalleeSavedRegClasses by returning a array that is
computed at runtime using getCalleeSavedRegClass. This would be
computed only once.
*) Merge both functions and have the merged function return an array
of pairs (Reg, RegClass).
*) Produce both in tablegen. Not sure how to represent the special
case in thumb1.
Rafael Ávila de Espíndola
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 46858 bytes
Desc: not available
More information about the llvm-commits