Skip to content

Commit fe74f3c

Browse files
committedOct 23, 2020
8255224: x86_32 tests fail with "bad AD file" after JDK-8223051
Reviewed-by: shade, kvn
1 parent 64dc4b1 commit fe74f3c

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed
 

‎src/hotspot/cpu/x86/x86_32.ad

+22
Original file line numberDiff line numberDiff line change
@@ -13097,6 +13097,28 @@ instruct cmovLL_mem_LEGT(cmpOp_commute cmp, flagsReg_long_LEGT flags, eRegL dst,
1309713097
ins_pipe( pipe_cmov_reg_long );
1309813098
%}
1309913099

13100+
instruct cmovLL_reg_LEGT_U(cmpOpU_commute cmp, flagsReg_ulong_LEGT flags, eRegL dst, eRegL src) %{
13101+
match(Set dst (CMoveL (Binary cmp flags) (Binary dst src)));
13102+
predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::le || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::gt ));
13103+
ins_cost(400);
13104+
format %{ "CMOV$cmp $dst.lo,$src.lo\n\t"
13105+
"CMOV$cmp $dst.hi,$src.hi" %}
13106+
opcode(0x0F,0x40);
13107+
ins_encode( enc_cmov(cmp), RegReg_Lo2( dst, src ), enc_cmov(cmp), RegReg_Hi2( dst, src ) );
13108+
ins_pipe( pipe_cmov_reg_long );
13109+
%}
13110+
13111+
instruct cmovLL_mem_LEGT_U(cmpOpU_commute cmp, flagsReg_ulong_LEGT flags, eRegL dst, load_long_memory src) %{
13112+
match(Set dst (CMoveL (Binary cmp flags) (Binary dst (LoadL src))));
13113+
predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::le || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::gt ));
13114+
ins_cost(500);
13115+
format %{ "CMOV$cmp $dst.lo,$src.lo\n\t"
13116+
"CMOV$cmp $dst.hi,$src.hi+4" %}
13117+
opcode(0x0F,0x40);
13118+
ins_encode( enc_cmov(cmp), RegMem(dst, src), enc_cmov(cmp), RegMem_Hi(dst, src) );
13119+
ins_pipe( pipe_cmov_reg_long );
13120+
%}
13121+
1310013122
// Compare 2 longs and CMOVE ints.
1310113123
instruct cmovII_reg_LEGT(cmpOp_commute cmp, flagsReg_long_LEGT flags, rRegI dst, rRegI src) %{
1310213124
predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::le || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::gt ));

0 commit comments

Comments
 (0)
Please sign in to comment.