8179933: AArch64: Incorrect match rule for immL_255
The match rule fix will enable instructs like: SubExtL_uxtb_and and AddExtL_uxtb_and etc. Also rename immL_63 to the proper name: immI_63. Reviewed-by: aph
This commit is contained in:
parent
2614e75f50
commit
d9c1f52541
@ -5423,6 +5423,16 @@ operand immI_56()
|
|||||||
interface(CONST_INTER);
|
interface(CONST_INTER);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
operand immI_63()
|
||||||
|
%{
|
||||||
|
predicate(n->get_int() == 63);
|
||||||
|
match(ConI);
|
||||||
|
|
||||||
|
op_cost(0);
|
||||||
|
format %{ %}
|
||||||
|
interface(CONST_INTER);
|
||||||
|
%}
|
||||||
|
|
||||||
operand immI_64()
|
operand immI_64()
|
||||||
%{
|
%{
|
||||||
predicate(n->get_int() == 64);
|
predicate(n->get_int() == 64);
|
||||||
@ -5453,20 +5463,10 @@ operand immI_65535()
|
|||||||
interface(CONST_INTER);
|
interface(CONST_INTER);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
operand immL_63()
|
|
||||||
%{
|
|
||||||
predicate(n->get_int() == 63);
|
|
||||||
match(ConI);
|
|
||||||
|
|
||||||
op_cost(0);
|
|
||||||
format %{ %}
|
|
||||||
interface(CONST_INTER);
|
|
||||||
%}
|
|
||||||
|
|
||||||
operand immL_255()
|
operand immL_255()
|
||||||
%{
|
%{
|
||||||
predicate(n->get_int() == 255);
|
predicate(n->get_long() == 255L);
|
||||||
match(ConI);
|
match(ConL);
|
||||||
|
|
||||||
op_cost(0);
|
op_cost(0);
|
||||||
format %{ %}
|
format %{ %}
|
||||||
@ -11146,7 +11146,7 @@ instruct divL(iRegLNoSp dst, iRegL src1, iRegL src2) %{
|
|||||||
ins_pipe(ldiv_reg_reg);
|
ins_pipe(ldiv_reg_reg);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
instruct signExtractL(iRegLNoSp dst, iRegL src1, immL_63 div1, immL_63 div2) %{
|
instruct signExtractL(iRegLNoSp dst, iRegL src1, immI_63 div1, immI_63 div2) %{
|
||||||
match(Set dst (URShiftL (RShiftL src1 div1) div2));
|
match(Set dst (URShiftL (RShiftL src1 div1) div2));
|
||||||
ins_cost(INSN_COST);
|
ins_cost(INSN_COST);
|
||||||
format %{ "lsr $dst, $src1, $div1" %}
|
format %{ "lsr $dst, $src1, $div1" %}
|
||||||
@ -11156,7 +11156,7 @@ instruct signExtractL(iRegLNoSp dst, iRegL src1, immL_63 div1, immL_63 div2) %{
|
|||||||
ins_pipe(ialu_reg_shift);
|
ins_pipe(ialu_reg_shift);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
instruct div2RoundL(iRegLNoSp dst, iRegL src, immL_63 div1, immL_63 div2) %{
|
instruct div2RoundL(iRegLNoSp dst, iRegL src, immI_63 div1, immI_63 div2) %{
|
||||||
match(Set dst (AddL src (URShiftL (RShiftL src div1) div2)));
|
match(Set dst (AddL src (URShiftL (RShiftL src div1) div2)));
|
||||||
ins_cost(INSN_COST);
|
ins_cost(INSN_COST);
|
||||||
format %{ "add $dst, $src, $div1" %}
|
format %{ "add $dst, $src, $div1" %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user