[vectorInstrinsics] merge with upstream failed

Rukmannagari, Shravya shravya.rukmannagari at intel.com
Fri Jul 6 17:21:10 UTC 2018


Hi Vladimir,
The issues with FmaVF is known, I'll take a lot at the shift errors in Long. Thanks a lot for pointing these out.

Thanks,
Shravya.

-----Original Message-----
From: Vladimir Ivanov [mailto:vladimir.x.ivanov at oracle.com] 
Sent: Friday, July 6, 2018 8:46 AM
To: Paul Sandoz <paul.sandoz at oracle.com>; Maurizio Cimadamore <maurizio.cimadamore at oracle.com>; Rukmannagari, Shravya <shravya.rukmannagari at intel.com>
Cc: panama-dev at openjdk.java.net
Subject: Re: [vectorInstrinsics] merge with upstream failed

Pushed. The failures are not caused by the merge.

FAILED: jdk/incubator/vector/Float64VectorTests.java

Missing matcher rules for FmaVF on 2-element float vector:
   o230  FmaVF === _ o267 o534  [[o331  150 ]]  #vectord[2]:{float}


FAILED: jdk/incubator/vector/Long128VectorTests.java
FAILED: jdk/incubator/vector/Long256VectorTests.java
FAILED: jdk/incubator/vector/Long512VectorTests.java

Wrong instruction is issued on AVX2-capable CPU.

#  SIGILL (0x4) at pc=0x00000001160a0ab8, pid=95404, tid=8707

# J 801 c2
jdk.incubator.vector.Long256Vector.aShiftR(Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector;
jdk.incubator.vector at 11-internal (6 bytes) @ 0x00000001160a0ab8 [0x00000001160a09a0+0x0000000000000118]

According to the x86 architecture manual, only VPSRAVD is available in AVX2, but VPSRAVD is being used by vsrlv2L_reg. Moreover, vsrlv2L_reg and vsrlv2L_reg_evex differ only in predicates.

But there's another issue hidden by the crash - there are no rules for scalar shift on vectors (shift->Opcode() == Op_RShiftCntV).

instruct vsrlv2L_reg(vecX dst, vecX src, vecX shift) %{
   predicate(UseAVX > 1 && n->as_Vector()->length() == 2 && 
n->in(2)->Opcode() != Op_RShiftCntV);

Shravya, are those problems known?

Best regards,
Vladimir Ivanov

On 06/07/2018 03:12, Vladimir Ivanov wrote:
> I did the manual merge, but then noticed 3 test failures:
> 
> FAILED: jdk/incubator/vector/Float64VectorTests.java
> FAILED: jdk/incubator/vector/Long128VectorTests.java
> FAILED: jdk/incubator/vector/Long256VectorTests.java
> 
> Haven't checked whether they are new or not. Will push the merge tomorrow.
> 
> Best regards,
> Vladimir Ivanov
> 
> On 05/07/2018 21:12, Paul Sandoz wrote:
>> Thanks for the notice.
>>
>> I think most if not all of the conflict is associated with the base64 
>> intrinsic that was recently pushed:
>>
>>    https://bugs.openjdk.java.net/browse/JDK-8205528
>> <https://bugs.openjdk.java.net/browse/JDK-8205528>
>>    http://hg.openjdk.java.net/jdk/jdk/rev/480a96a43b62
>> <http://hg.openjdk.java.net/jdk/jdk/rev/480a96a43b62>
>>
>> I am not qualified to merge this and there might be some 
>> architectural issues that need to be resolved regarding the use of 
>> vector registers for indexing (re: rearrangement using a Shuffle).
>>
>> Paul.
>>
>>> On Jul 5, 2018, at 4:04 AM, Maurizio Cimadamore 
>>> <maurizio.cimadamore at oracle.com> wrote:
>>>
>>> Hi,
>>> the vectorIntrinsics branch failed to merge because of conflicts in 
>>> assembler_x86.cpp. I tried to look at these, but there seem to be 
>>> conflicting changes for vector instructions coming from upstream JDK 
>>> and I was unsure on how to resolve them. I think it's best if people 
>>> working on this branch take a look at this. To start a merge:
>>>
>>> $ hg update vectorIntrinsics
>>>
>>> $ hg merge -r default
>>>
>>> <do merge>
>>>
>>> $ hg commit -m 'manual merge with default'
>>>
>>> $ hg push
>>>
>>> Cheers
>>> Maurizio
>>>
>>


More information about the panama-dev mailing list