@@ -11470,8 +11470,7 @@ instruct MoveL2D_reg_reg_sse(regD dst, eRegL src, regD tmp) %{
11470
11470
// fast clearing of an array
11471
11471
// Small ClearArray non-AVX512.
11472
11472
instruct rep_stos(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
11473
- predicate(!((ClearArrayNode*)n)->is_large() &&
11474
- (UseAVX <= 2));
11473
+ predicate(!((ClearArrayNode*)n)->is_large() && (UseAVX <= 2));
11475
11474
match(Set dummy (ClearArray cnt base));
11476
11475
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, KILL zero, KILL cr);
11477
11476
@@ -11531,10 +11530,9 @@ instruct rep_stos(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Universe du
11531
11530
11532
11531
// Small ClearArray AVX512 non-constant length.
11533
11532
instruct rep_stos_evex(eCXRegI cnt, eDIRegP base, regD tmp, kReg ktmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
11534
- predicate(!((ClearArrayNode*)n)->is_large() &&
11535
- UseAVX > 2 &&
11536
- !n->in(2)->bottom_type()->is_int()->is_con());
11533
+ predicate(!((ClearArrayNode*)n)->is_large() && (UseAVX > 2));
11537
11534
match(Set dummy (ClearArray cnt base));
11535
+ ins_cost(125);
11538
11536
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, TEMP ktmp, KILL zero, KILL cr);
11539
11537
11540
11538
format %{ $$template
@@ -11593,7 +11591,7 @@ instruct rep_stos_evex(eCXRegI cnt, eDIRegP base, regD tmp, kReg ktmp, eAXRegI z
11593
11591
11594
11592
// Large ClearArray non-AVX512.
11595
11593
instruct rep_stos_large(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
11596
- predicate(UseAVX <= 2 && ((ClearArrayNode*)n)->is_large());
11594
+ predicate(( UseAVX <= 2) && ((ClearArrayNode*)n)->is_large());
11597
11595
match(Set dummy (ClearArray cnt base));
11598
11596
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, KILL zero, KILL cr);
11599
11597
format %{ $$template
@@ -11643,7 +11641,7 @@ instruct rep_stos_large(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Unive
11643
11641
11644
11642
// Large ClearArray AVX512.
11645
11643
instruct rep_stos_large_evex(eCXRegI cnt, eDIRegP base, regD tmp, kReg ktmp, eAXRegI zero, Universe dummy, eFlagsReg cr) %{
11646
- predicate(UseAVX > 2 && ((ClearArrayNode*)n)->is_large());
11644
+ predicate(( UseAVX > 2) && ((ClearArrayNode*)n)->is_large());
11647
11645
match(Set dummy (ClearArray cnt base));
11648
11646
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, TEMP ktmp, KILL zero, KILL cr);
11649
11647
format %{ $$template
@@ -11695,9 +11693,9 @@ instruct rep_stos_large_evex(eCXRegI cnt, eDIRegP base, regD tmp, kReg ktmp, eAX
11695
11693
instruct rep_stos_im(immI cnt, kReg ktmp, eRegP base, regD tmp, rRegI zero, Universe dummy, eFlagsReg cr)
11696
11694
%{
11697
11695
predicate(!((ClearArrayNode*)n)->is_large() &&
11698
- (UseAVX > 2 && VM_Version::supports_avx512vlbw() &&
11699
- n->in(2)->bottom_type()->is_int()->is_con()));
11696
+ ((UseAVX > 2) && VM_Version::supports_avx512vlbw()));
11700
11697
match(Set dummy (ClearArray cnt base));
11698
+ ins_cost(100);
11701
11699
effect(TEMP tmp, TEMP zero, TEMP ktmp, KILL cr);
11702
11700
format %{ "clear_mem_imm $base , $cnt \n\t" %}
11703
11701
ins_encode %{
0 commit comments