@@ -11470,8 +11470,8 @@ instruct expandBitsL_reg(eADXRegL dst, eBCXRegL src, eBDPRegL mask, eSIRegI rtmp
1147011470%}
1147111471
1147211472// =======================================================================
11473- // fast clearing of an array
11474- // Small ClearArray non-AVX512.
11473+ // Fast clearing of an array
11474+ // Small non-constant length ClearArray for non-AVX512 targets .
1147511475instruct rep_stos(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
1147611476 predicate(!((ClearArrayNode*)n)->is_large() && (UseAVX <= 2));
1147711477 match(Set dummy (ClearArray cnt base));
@@ -11531,7 +11531,7 @@ instruct rep_stos(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Universe du
1153111531 ins_pipe( pipe_slow );
1153211532%}
1153311533
11534- // Small ClearArray AVX512 non-constant length.
11534+ // Small non-constant length ClearArray for AVX512 targets .
1153511535instruct rep_stos_evex(eCXRegI cnt, eDIRegP base, legRegD tmp, kReg ktmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
1153611536 predicate(!((ClearArrayNode*)n)->is_large() && (UseAVX > 2));
1153711537 match(Set dummy (ClearArray cnt base));
@@ -11592,7 +11592,7 @@ instruct rep_stos_evex(eCXRegI cnt, eDIRegP base, legRegD tmp, kReg ktmp, eAXReg
1159211592 ins_pipe( pipe_slow );
1159311593%}
1159411594
11595- // Large ClearArray non-AVX512.
11595+ // Large non-constant length ClearArray for non-AVX512 targets .
1159611596instruct rep_stos_large(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
1159711597 predicate((UseAVX <= 2) && ((ClearArrayNode*)n)->is_large());
1159811598 match(Set dummy (ClearArray cnt base));
@@ -11642,7 +11642,7 @@ instruct rep_stos_large(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Unive
1164211642 ins_pipe( pipe_slow );
1164311643%}
1164411644
11645- // Large ClearArray AVX512.
11645+ // Large non-constant length ClearArray for AVX512 targets .
1164611646instruct rep_stos_large_evex(eCXRegI cnt, eDIRegP base, legRegD tmp, kReg ktmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
1164711647 predicate((UseAVX > 2) && ((ClearArrayNode*)n)->is_large());
1164811648 match(Set dummy (ClearArray cnt base));
@@ -11692,11 +11692,10 @@ instruct rep_stos_large_evex(eCXRegI cnt, eDIRegP base, legRegD tmp, kReg ktmp,
1169211692 ins_pipe( pipe_slow );
1169311693%}
1169411694
11695- // Small ClearArray AVX512 constant length .
11695+ // Small constant length ClearArray for AVX512 targets .
1169611696instruct rep_stos_im(immI cnt, kReg ktmp, eRegP base, regD tmp, rRegI zero, Universe dummy, eFlagsReg cr)
1169711697%{
11698- predicate(!((ClearArrayNode*)n)->is_large() &&
11699- ((UseAVX > 2) && VM_Version::supports_avx512vlbw()));
11698+ predicate(!((ClearArrayNode*)n)->is_large() && (MaxVectorSize >= 32) && VM_Version::supports_avx512vl());
1170011699 match(Set dummy (ClearArray cnt base));
1170111700 ins_cost(100);
1170211701 effect(TEMP tmp, TEMP zero, TEMP ktmp, KILL cr);
0 commit comments