On 01/26/2011 11:01 AM, Alexander Graf wrote: >> As far as I know, it does not happen at random. Which seems to be >> what you are suggesting. > > It happens on load/store and potentially helpers. The main difference > IIUC between globals and temps is that globals are kept in registers as > long as possible (read: until load/store or helper or tb end gets > emitted) while temporaries are not stored back to any memory, so they > are lost on load/store. > > So what you are suggesting is basically to use a different set of > globals for regs32 and to keep track of their usage throughout the TB, > so we can convert on demand. We can't use temporaries for that unless we > manually store them off on load/store/helper/tb end which means we'd > rewrite the globals treatment in target code :).
No, what I'm suggesting is manually storing the reg32 temporaries back to their reg64 origins in the translator immediately before issuing the load/store/helper/tbend, at which point the generic TCG bits write back the reg64 globals to their env origin. Do you have a pointer to your s390x tree? r~