Request for reviews (XL): 7119644: Increase superword's vector size up to 256 bits

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Jun 4 19:19:28 PDT 2012


I found an other problem. My new regression test TestShortVect failed in the 
overlapping case (load and store from the same array with offset). Superword 
code thinks store into short[] array is char store and different from short load 
from short[] so it allows overlapping. It happened because C2 has only one 
StoreC node for 2 bytes stores but different LoadS and LoadUS nodes for loads. 
And these load nodes has different memory type: T_SHORT and T_CHAR.

The simplest change is to add new StoreS node with memory type T_SHORT. I like 
this approach and will go with it if nobody object.

An other solution is to extract element type from address type instead of 
memory_type() for memory nodes. But it is duplication of parser code.

Note, memory_type() is called in other C2 places only to determine element size. 
But in Superword it is used to construct the vectors type table.

Thanks,
Vladimir

Vladimir Kozlov wrote:
> Most changes after latest Tom's review were done in superword.cpp and 
> added regression tests. I think I nailed down latest issues I had with 
> superword code. The changes pass all testing I did. Please, review it 
> (same web link).
> 
> Thanks,
> Vladimir
> 
> On 4/3/12 10:03 AM, Vladimir Kozlov wrote:
>> http://cr.openjdk.java.net/~kvn/7119644/webrev
>>
>> 7119644: Increase superword's vector size up to 256 bits
>>
>> Increase superword's vector size up to 256-bits for YMM AVX registers 
>> on x86. Added generation of different vector sizes
>> for different types of arrays in the same loop. Allow to generate 
>> small (4 bytes) vectors for loops which were unrolled
>> small number of iterations.
>> Add new C2 types for vectors and rework VectorNode implementation. 
>> Used MachTypeNode as base node for vector mach nodes
>> to keep vector type.
>> Moved XMM registers definition and vector instructions into one file 
>> x86.ad (have to rename eRegI to rRegI in x86_32.ad).
>>
>> Tested with full CTW, NSK, C2 regression tests, JPRT and added new test.
>>
>> Thanks,
>> Vladimir


More information about the hotspot-compiler-dev mailing list