FRF: 8250675: Vector API crashes on AVX512 machines with assert(eval_map.contains(n)) failed: absent

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Tue Jul 28 16:53:24 UTC 2020


Good catch, Jie!

I suggest the following variant of the fix:

static void eval_operands(Node* n,
                           uint& func1, uint& func2, uint& func3,
                           ResourceHashtable<Node*,uint>& eval_map) {
   assert(is_vector_bitwise_op(n), "");

   if (is_vector_unary_bitwise_op(n)) {
     Node* opnd = n->in(1);
     if (VectorNode::is_vector_bitwise_not_pattern(n) && 
is_all_ones_vector(opnd)) {
       opnd = n->in(2);
     }
     func1 = eval_operand(opnd, eval_map);
   } else if (is_vector_binary_bitwise_op(n)) {
     func1 = eval_operand(n->in(1), eval_map);
     func2 = eval_operand(n->in(2), eval_map);
   } else {
     assert(is_vector_ternary_bitwise_op(n), "unknown operation");
     func1 = eval_operand(n->in(1), eval_map);
     func2 = eval_operand(n->in(2), eval_map);
     func3 = eval_operand(n->in(3), eval_map);
   }
}

Strictly speaking, the bug is not Vector API-specific, but 
auto-vectorizer doesn't generate such IR shape (scalar bitwise not 
pattern is normalized by GVN). So, I'm fine to push the fix along with 
Vector API.

But feel free to post it for review on hotspot-compiler-dev at ojn separately.

Best regards,
Vladimir Ivanov

On 28.07.2020 16:35, jiefu(傅杰) wrote:
> Hi all,
> 
> Please review the following patch which fixes some Vector API crashes on AVX512 machines.
> 
> JBS:    https://bugs.openjdk.java.net/browse/JDK-8250675
> Webrev: http://cr.openjdk.java.net/~jiefu/8250675/webrev.00/
> 
> Testing:
>    - jdk/incubator/vector all passed on AVX512 machines
>    - tier1 on Linux/x64
> 
> Thanks a lot.
> Best regards,
> Jie
> 


More information about the panama-dev mailing list