From 874d68a96ce67caaf944dd25fbfb44eab965dfd3 Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Fri, 6 Dec 2024 09:19:55 +0000 Subject: [PATCH] 8343747: C2: TestReplicateAtConv.java crashes with -XX:MaxVectorSize=8 Reviewed-by: epeter, kvn --- src/hotspot/share/opto/vectornode.cpp | 3 +++ .../jtreg/compiler/vectorization/TestReplicateAtConv.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/hotspot/share/opto/vectornode.cpp b/src/hotspot/share/opto/vectornode.cpp index dedac80d102..03e1e7ef247 100644 --- a/src/hotspot/share/opto/vectornode.cpp +++ b/src/hotspot/share/opto/vectornode.cpp @@ -1466,6 +1466,9 @@ bool VectorCastNode::implemented(int opc, uint vlen, BasicType src_type, BasicTy if (is_java_primitive(dst_type) && is_java_primitive(src_type) && (vlen > 1) && is_power_of_2(vlen) && + // In rare case, the input to the VectorCast could be a Replicate node. We need to make sure creating is supported: + // check the src_type: + VectorNode::vector_size_supported_auto_vectorization(src_type, vlen) && VectorNode::vector_size_supported_auto_vectorization(dst_type, vlen)) { int vopc = VectorCastNode::opcode(opc, src_type); return vopc > 0 && Matcher::match_rule_supported_auto_vectorization(vopc, vlen, dst_type); diff --git a/test/hotspot/jtreg/compiler/vectorization/TestReplicateAtConv.java b/test/hotspot/jtreg/compiler/vectorization/TestReplicateAtConv.java index e77b474bf66..74ae97cc7ee 100644 --- a/test/hotspot/jtreg/compiler/vectorization/TestReplicateAtConv.java +++ b/test/hotspot/jtreg/compiler/vectorization/TestReplicateAtConv.java @@ -23,9 +23,10 @@ /** * @test - * @bug 8341834 - * @summary C2 compilation fails with "bad AD file" due to Replicate + * @bug 8341834 8343747 + * @summary Replicate node at a VectorCast (ConvL2I) causes superword to fail * @run main/othervm -XX:CompileCommand=compileonly,TestReplicateAtConv::test -Xcomp TestReplicateAtConv + * @run main/othervm -XX:CompileCommand=compileonly,TestReplicateAtConv::test -Xcomp -XX:MaxVectorSize=8 TestReplicateAtConv */ public class TestReplicateAtConv {