[vector] Fix test failure with UseAVX=0 and UseAVX=1

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Fri May 18 20:09:05 UTC 2018


Razvan, can you elaborate why you

src/hotspot/cpu/x86/x86.ad:

-instruct pblendvb1L(vecD dst, vecD src, rxmm0 mask) %{
+instruct pblendvb1L(vecD dst, vecD src, vecD mask, rxmm0 xmm_0) %{
    predicate(UseAVX == 0 && UseSSE > 3 && n->as_Vector()->length() == 1 
&& n->bottom_type()->is_vect()->element_basic_type() == T_LONG);
    match(Set dst (VectorBlend (Binary dst src) mask));
+  effect(TEMP xmm_0);
    format %{ "pblendvb  $dst,$src,$mask\t! blend packed1L" %}
    ins_encode %{
+    if ($mask$$XMMRegister != $xmm_0$$XMMRegister) {
+      __ movdqu($xmm_0$$XMMRegister, $mask$$XMMRegister);
+    }
      __ pblendvb($dst$$XMMRegister, $src$$XMMRegister);
    %}
    ins_pipe( pipe_slow );
  %}

"$mask$$XMMRegister != $xmm_0$$XMMRegister" check looks redundant.
Is it possible for input & temp to be assigned the same register?


Also, can you, please, elaborate why you remove basic type erasure for 
masks? Is it because you adjusted ad rules to cover T_FLOAT & T_DOUBLE 
as well?

-instruct pblendvb16B(vecX dst, vecX src, rxmm0 mask) %{
+instruct pblendvb16B(vecX dst, vecX src, vecX mask, rxmm0 xmm_0) %{

-instruct pblendvb2L(vecX dst, vecX src, rxmm0 mask) %{
+instruct pblendvb2L(vecX dst, vecX src, vecX mask, rxmm0 xmm_0) %{

-instruct blendvpd2D(vecX dst, vecX src, rxmm0 mask) %{
+instruct blendvpd2D(vecX dst, vecX src, vecX mask, rxmm0 xmm_0) %{

  instruct loadmask4i(vecX dst, vecS src) %{
-  predicate(UseSSE >= 4 && n->as_Vector()->length() == 4 && 
n->bottom_type()->is_vect()->element_basic_type() == T_INT);
+  predicate(UseSSE >= 4 && n->as_Vector()->length() == 4 &&
+            (n->bottom_type()->is_vect()->element_basic_type() == T_INT ||
+             n->bottom_type()->is_vect()->element_basic_type() == 
T_FLOAT));

Best regards,
Vladimir Ivanov

On 5/18/18 12:28, Lupusoru, Razvan A wrote:
> Hi all,
> 
> The following patch fixes test failures when running tests with UseAVX=0 and UseAVX=1. Let me know if you have any comments. Thanks!
> http://cr.openjdk.java.net/~rlupusoru/panama/webrev_fixuseavx_01/index.html
> 
> --Razvan
> 


More information about the panama-dev mailing list