8278584: compiler/vectorapi/VectorMaskLoadStoreTest.java failed with "Error: ShouldNotReachHere()"

Reviewed-by: kvn, psandoz
This commit is contained in:
Jie Fu 2021-12-14 22:49:04 +00:00
parent 98a8d446b6
commit 2def7e9132
2 changed files with 14 additions and 3 deletions
src/hotspot/cpu/x86
test/hotspot/jtreg/compiler/vectorapi

@ -9549,7 +9549,7 @@ instruct long_to_maskLE8_avx(vec dst, rRegL src, rRegL rtmp1, rRegL rtmp2, vec x
format %{ "long_to_mask_avx $dst, $src\t! using $rtmp1, $rtmp2, $xtmp as TEMP" %}
ins_encode %{
int mask_len = Matcher::vector_length(this);
int vec_enc = vector_length_encoding(mask_len*8);
int vec_enc = vector_length_encoding(mask_len);
__ vector_long_to_maskvec($dst$$XMMRegister, $src$$Register, $rtmp1$$Register,
$rtmp2$$Register, xnoreg, mask_len, vec_enc);
%}
@ -9565,7 +9565,7 @@ instruct long_to_maskGT8_avx(vec dst, rRegL src, rRegL rtmp1, rRegL rtmp2, vec x
ins_encode %{
int mask_len = Matcher::vector_length(this);
assert(mask_len <= 32, "invalid mask length");
int vec_enc = vector_length_encoding(mask_len*8);
int vec_enc = vector_length_encoding(mask_len);
__ vector_long_to_maskvec($dst$$XMMRegister, $src$$Register, $rtmp1$$Register,
$rtmp2$$Register, $xtmp1$$XMMRegister, mask_len, vec_enc);
%}
@ -9577,7 +9577,6 @@ instruct long_to_mask_evex(kReg dst, rRegL src) %{
match(Set dst (VectorLongToMask src));
format %{ "long_to_mask_evex $dst, $src\t!" %}
ins_encode %{
int mask_len = Matcher::vector_length(this);
__ kmov($dst$$KRegister, $src$$Register);
%}
ins_pipe( pipe_slow );

@ -49,6 +49,18 @@ import org.testng.annotations.Test;
* @run testng/othervm -XX:-TieredCompilation -XX:CompileThreshold=100 compiler.vectorapi.VectorMaskLoadStoreTest
*/
/**
* @test
* @bug 8278584
* @library /test/lib
* @summary Test the codegen for C2's VectorLongToMaskNode
* "-XX:DisableIntrinsic=_VectorMaskOp" is required to break "VectorMaskToLong (VectorLongToMask l) ==> l" opt.
* This is because when _VectorMaskOp is disabled, VectorMaskToLong won't be generated.
* @modules jdk.incubator.vector
*
* @run testng/othervm -XX:-TieredCompilation -XX:CompileThreshold=100 -XX:+UnlockDiagnosticVMOptions
* -XX:DisableIntrinsic=_VectorMaskOp compiler.vectorapi.VectorMaskLoadStoreTest
*/
public class VectorMaskLoadStoreTest{