Skip to content
This repository was archived by the owner on Sep 2, 2022. It is now read-only.

Commit 6f0e8e7

Browse files
author
Sandhya Viswanathan
committed
8269775: compiler/codegen/ClearArrayTest.java failed with "assert(false) failed: bad AD file"
Reviewed-by: kvn, dlong
1 parent c4ea13e commit 6f0e8e7

File tree

2 files changed

+14
-18
lines changed

2 files changed

+14
-18
lines changed

src/hotspot/cpu/x86/x86_32.ad

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11470,8 +11470,7 @@ instruct MoveL2D_reg_reg_sse(regD dst, eRegL src, regD tmp) %{
1147011470
// fast clearing of an array
1147111471
// Small ClearArray non-AVX512.
1147211472
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));
1147511474
match(Set dummy (ClearArray cnt base));
1147611475
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, KILL zero, KILL cr);
1147711476

@@ -11531,10 +11530,9 @@ instruct rep_stos(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Universe du
1153111530

1153211531
// Small ClearArray AVX512 non-constant length.
1153311532
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));
1153711534
match(Set dummy (ClearArray cnt base));
11535+
ins_cost(125);
1153811536
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, TEMP ktmp, KILL zero, KILL cr);
1153911537

1154011538
format %{ $$template
@@ -11593,7 +11591,7 @@ instruct rep_stos_evex(eCXRegI cnt, eDIRegP base, regD tmp, kReg ktmp, eAXRegI z
1159311591

1159411592
// Large ClearArray non-AVX512.
1159511593
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());
1159711595
match(Set dummy (ClearArray cnt base));
1159811596
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, KILL zero, KILL cr);
1159911597
format %{ $$template
@@ -11643,7 +11641,7 @@ instruct rep_stos_large(eCXRegI cnt, eDIRegP base, regD tmp, eAXRegI zero, Unive
1164311641

1164411642
// Large ClearArray AVX512.
1164511643
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());
1164711645
match(Set dummy (ClearArray cnt base));
1164811646
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, TEMP ktmp, KILL zero, KILL cr);
1164911647
format %{ $$template
@@ -11695,9 +11693,9 @@ instruct rep_stos_large_evex(eCXRegI cnt, eDIRegP base, regD tmp, kReg ktmp, eAX
1169511693
instruct rep_stos_im(immI cnt, kReg ktmp, eRegP base, regD tmp, rRegI zero, Universe dummy, eFlagsReg cr)
1169611694
%{
1169711695
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()));
1170011697
match(Set dummy (ClearArray cnt base));
11698+
ins_cost(100);
1170111699
effect(TEMP tmp, TEMP zero, TEMP ktmp, KILL cr);
1170211700
format %{ "clear_mem_imm $base , $cnt \n\t" %}
1170311701
ins_encode %{

src/hotspot/cpu/x86/x86_64.ad

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11023,8 +11023,7 @@ instruct MoveL2D_reg_reg(regD dst, rRegL src) %{
1102311023
instruct rep_stos(rcx_RegL cnt, rdi_RegP base, regD tmp, rax_RegI zero,
1102411024
Universe dummy, rFlagsReg cr)
1102511025
%{
11026-
predicate(!((ClearArrayNode*)n)->is_large() &&
11027-
(UseAVX <= 2));
11026+
predicate(!((ClearArrayNode*)n)->is_large() && (UseAVX <= 2));
1102811027
match(Set dummy (ClearArray cnt base));
1102911028
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, KILL zero, KILL cr);
1103011029

@@ -11084,10 +11083,9 @@ instruct rep_stos(rcx_RegL cnt, rdi_RegP base, regD tmp, rax_RegI zero,
1108411083
instruct rep_stos_evex(rcx_RegL cnt, rdi_RegP base, regD tmp, kReg ktmp, rax_RegI zero,
1108511084
Universe dummy, rFlagsReg cr)
1108611085
%{
11087-
predicate(!((ClearArrayNode*)n)->is_large() &&
11088-
UseAVX > 2 &&
11089-
!n->in(2)->bottom_type()->is_long()->is_con());
11086+
predicate(!((ClearArrayNode*)n)->is_large() && (UseAVX > 2));
1109011087
match(Set dummy (ClearArray cnt base));
11088+
ins_cost(125);
1109111089
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, TEMP ktmp, KILL zero, KILL cr);
1109211090

1109311091
format %{ $$template
@@ -11146,7 +11144,7 @@ instruct rep_stos_evex(rcx_RegL cnt, rdi_RegP base, regD tmp, kReg ktmp, rax_Reg
1114611144
instruct rep_stos_large(rcx_RegL cnt, rdi_RegP base, regD tmp, rax_RegI zero,
1114711145
Universe dummy, rFlagsReg cr)
1114811146
%{
11149-
predicate(UseAVX <=2 && ((ClearArrayNode*)n)->is_large());
11147+
predicate((UseAVX <=2) && ((ClearArrayNode*)n)->is_large());
1115011148
match(Set dummy (ClearArray cnt base));
1115111149
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, KILL zero, KILL cr);
1115211150

@@ -11197,7 +11195,7 @@ instruct rep_stos_large(rcx_RegL cnt, rdi_RegP base, regD tmp, rax_RegI zero,
1119711195
instruct rep_stos_large_evex(rcx_RegL cnt, rdi_RegP base, regD tmp, kReg ktmp, rax_RegI zero,
1119811196
Universe dummy, rFlagsReg cr)
1119911197
%{
11200-
predicate(UseAVX > 2 && ((ClearArrayNode*)n)->is_large());
11198+
predicate((UseAVX > 2) && ((ClearArrayNode*)n)->is_large());
1120111199
match(Set dummy (ClearArray cnt base));
1120211200
effect(USE_KILL cnt, USE_KILL base, TEMP tmp, TEMP ktmp, KILL zero, KILL cr);
1120311201

@@ -11248,9 +11246,9 @@ instruct rep_stos_large_evex(rcx_RegL cnt, rdi_RegP base, regD tmp, kReg ktmp, r
1124811246
instruct rep_stos_im(immL cnt, rRegP base, regD tmp, rRegI zero, kReg ktmp, Universe dummy, rFlagsReg cr)
1124911247
%{
1125011248
predicate(!((ClearArrayNode*)n)->is_large() &&
11251-
(UseAVX > 2 && VM_Version::supports_avx512vlbw() &&
11252-
n->in(2)->bottom_type()->is_long()->is_con()));
11249+
((UseAVX > 2) && VM_Version::supports_avx512vlbw()));
1125311250
match(Set dummy (ClearArray cnt base));
11251+
ins_cost(100);
1125411252
effect(TEMP tmp, TEMP zero, TEMP ktmp, KILL cr);
1125511253
format %{ "clear_mem_imm $base , $cnt \n\t" %}
1125611254
ins_encode %{

0 commit comments

Comments
 (0)