Skip to content

Commit c130d04

Browse files
author
duke
committed
Automatic merge of jdk:master into master
2 parents 89ecd19 + 3dcde55 commit c130d04

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

src/hotspot/cpu/arm/arm.ad

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8448,6 +8448,21 @@ instruct cmovLL_reg_LTGE(cmpOpL cmp, flagsRegL_LTGE xcc, iRegL dst, iRegL src) %
84488448
ins_pipe(ialu_reg);
84498449
%}
84508450

8451+
instruct cmovLL_reg_LTGE_U(cmpOpL cmp, flagsRegUL_LTGE xcc, iRegL dst, iRegL src) %{
8452+
match(Set dst (CMoveL (Binary cmp xcc) (Binary dst src)));
8453+
predicate(_kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::lt || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ge );
8454+
8455+
ins_cost(150);
8456+
size(8);
8457+
format %{ "MOV$cmp $dst.lo,$src.lo\t! long\n\t"
8458+
"MOV$cmp $dst,$src.hi" %}
8459+
ins_encode %{
8460+
__ mov($dst$$Register, $src$$Register, (AsmCondition)($cmp$$cmpcode));
8461+
__ mov($dst$$Register->successor(), $src$$Register->successor(), (AsmCondition)($cmp$$cmpcode));
8462+
%}
8463+
ins_pipe(ialu_reg);
8464+
%}
8465+
84518466
instruct cmovLL_reg_EQNE(cmpOpL cmp, flagsRegL_EQNE xcc, iRegL dst, iRegL src) %{
84528467
match(Set dst (CMoveL (Binary cmp xcc) (Binary dst src)));
84538468
predicate(_kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::eq || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ne );
@@ -8478,6 +8493,21 @@ instruct cmovLL_reg_LEGT(cmpOpL_commute cmp, flagsRegL_LEGT xcc, iRegL dst, iReg
84788493
ins_pipe(ialu_reg);
84798494
%}
84808495

8496+
instruct cmovLL_reg_LEGT_U(cmpOpL_commute cmp, flagsRegUL_LEGT xcc, iRegL dst, iRegL src) %{
8497+
match(Set dst (CMoveL (Binary cmp xcc) (Binary dst src)));
8498+
predicate(_kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::le || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::gt );
8499+
8500+
ins_cost(150);
8501+
size(8);
8502+
format %{ "MOV$cmp $dst.lo,$src.lo\t! long\n\t"
8503+
"MOV$cmp $dst,$src.hi" %}
8504+
ins_encode %{
8505+
__ mov($dst$$Register, $src$$Register, (AsmCondition)($cmp$$cmpcode));
8506+
__ mov($dst$$Register->successor(), $src$$Register->successor(), (AsmCondition)($cmp$$cmpcode));
8507+
%}
8508+
ins_pipe(ialu_reg);
8509+
%}
8510+
84818511
instruct cmovLL_imm_LTGE(cmpOpL cmp, flagsRegL_LTGE xcc, iRegL dst, immL0 src) %{
84828512
match(Set dst (CMoveL (Binary cmp xcc) (Binary dst src)));
84838513
predicate(_kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::lt || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ge );
@@ -8492,6 +8522,20 @@ instruct cmovLL_imm_LTGE(cmpOpL cmp, flagsRegL_LTGE xcc, iRegL dst, immL0 src) %
84928522
ins_pipe(ialu_imm);
84938523
%}
84948524

8525+
instruct cmovLL_imm_LTGE_U(cmpOpL cmp, flagsRegUL_LTGE xcc, iRegL dst, immL0 src) %{
8526+
match(Set dst (CMoveL (Binary cmp xcc) (Binary dst src)));
8527+
predicate(_kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::lt || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ge );
8528+
ins_cost(140);
8529+
size(8);
8530+
format %{ "MOV$cmp $dst.lo,0\t! long\n\t"
8531+
"MOV$cmp $dst,0" %}
8532+
ins_encode %{
8533+
__ mov($dst$$Register, 0, (AsmCondition)($cmp$$cmpcode));
8534+
__ mov($dst$$Register->successor(), 0, (AsmCondition)($cmp$$cmpcode));
8535+
%}
8536+
ins_pipe(ialu_imm);
8537+
%}
8538+
84958539
instruct cmovLL_imm_EQNE(cmpOpL cmp, flagsRegL_EQNE xcc, iRegL dst, immL0 src) %{
84968540
match(Set dst (CMoveL (Binary cmp xcc) (Binary dst src)));
84978541
predicate(_kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::eq || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ne );

0 commit comments

Comments
 (0)