Superword - Aligning arrays

John Rose John.Rose at Sun.COM
Tue Feb 10 19:21:36 PST 2009

It's been a while since I lasted worked on the register allocator.  My  
advice to you is mainly a warning:  The allocator handles single 32- 
bit registers (of course) and is also special-cased for one additional  
thing, an adjacent aligned pair (even/odd) of 32-bit registers  
allocated as a unit.  Look for names like "bound2" in the system, and  
for pairs of registers in various APIs.  Some deep and cautious  
generalization may be required in order to support (let me guess)  
adjacent mod-4 aligned quadruples of registers allocated as unit.

-- John

On Feb 10, 2009, at 4:26 PM, James Walsh wrote:

> I've been using a really simple test program while working on this.   
> I tried a test program that was a little more complex this weekend  
> and ran into a new problem.  It looks like  
> PhaseChaitin::gather_lrg_masks is trying to use the same XMM virtual  
> register for a Op_RegF and a Op_RegQ which causes a assert when  
> lrg.set_num_regs(4) is called.  I noticed that another virtual  
> register was assigned Op_RegQ twice but since the registers are teh  
> same size it didn't assert.  Obviously since double and floats  
> coexist nicely I must be missing something.  I went through looking  
> at any code that checked the size of the register via  
> LRG::num_regs() and the bug wasn't readily apparent to me.  Any idea  
> where I should look to fix this?

More information about the hotspot-dev mailing list