@@ -3726,6 +3726,10 @@ instruct ReplB_reg(vec dst, rRegI src) %{
3726
3726
assert(VM_Version::supports_avx512bw(), "required"); // 512-bit byte vectors assume AVX512BW
3727
3727
int vlen_enc = vector_length_encoding(this);
3728
3728
__ evpbroadcastb($dst$$XMMRegister, $src$$Register, vlen_enc);
3729
+ } else if (VM_Version::supports_avx2()) {
3730
+ int vlen_enc = vector_length_encoding(this);
3731
+ __ movdl($dst$$XMMRegister, $src$$Register);
3732
+ __ vpbroadcastb($dst$$XMMRegister, $dst$$XMMRegister, vlen_enc);
3729
3733
} else {
3730
3734
__ movdl($dst$$XMMRegister, $src$$Register);
3731
3735
__ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
@@ -3805,6 +3809,10 @@ instruct ReplS_reg(vec dst, rRegI src) %{
3805
3809
assert(VM_Version::supports_avx512bw(), "required"); // 512-bit short vectors assume AVX512BW
3806
3810
int vlen_enc = vector_length_encoding(this);
3807
3811
__ evpbroadcastw($dst$$XMMRegister, $src$$Register, vlen_enc);
3812
+ } else if (VM_Version::supports_avx2()) {
3813
+ int vlen_enc = vector_length_encoding(this);
3814
+ __ movdl($dst$$XMMRegister, $src$$Register);
3815
+ __ vpbroadcastw($dst$$XMMRegister, $dst$$XMMRegister, vlen_enc);
3808
3816
} else {
3809
3817
__ movdl($dst$$XMMRegister, $src$$Register);
3810
3818
__ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
@@ -3880,6 +3888,10 @@ instruct ReplI_reg(vec dst, rRegI src) %{
3880
3888
if (vlen == 16 || VM_Version::supports_avx512vl()) { // AVX512VL for <512bit operands
3881
3889
int vlen_enc = vector_length_encoding(this);
3882
3890
__ evpbroadcastd($dst$$XMMRegister, $src$$Register, vlen_enc);
3891
+ } else if (VM_Version::supports_avx2()) {
3892
+ int vlen_enc = vector_length_encoding(this);
3893
+ __ movdl($dst$$XMMRegister, $src$$Register);
3894
+ __ vpbroadcastd($dst$$XMMRegister, $dst$$XMMRegister, vlen_enc);
3883
3895
} else {
3884
3896
__ movdl($dst$$XMMRegister, $src$$Register);
3885
3897
__ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
@@ -3975,6 +3987,11 @@ instruct ReplL_reg(vec dst, rRegL src) %{
3975
3987
} else if (vlen == 8 || VM_Version::supports_avx512vl()) { // AVX512VL for <512bit operands
3976
3988
int vlen_enc = vector_length_encoding(this);
3977
3989
__ evpbroadcastq($dst$$XMMRegister, $src$$Register, vlen_enc);
3990
+ } else if (VM_Version::supports_avx2()) {
3991
+ assert(vlen == 4, "sanity");
3992
+ int vlen_enc = vector_length_encoding(this);
3993
+ __ movdq($dst$$XMMRegister, $src$$Register);
3994
+ __ vpbroadcastq($dst$$XMMRegister, $dst$$XMMRegister, vlen_enc);
3978
3995
} else {
3979
3996
assert(vlen == 4, "sanity");
3980
3997
__ movdq($dst$$XMMRegister, $src$$Register);
0 commit comments