OpenJDK / jdk / hs
changeset 46548:2d4e14c79154
8179933: AArch64: Incorrect match rule for immL_255
Summary: 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
Contributed-by: zhongwei.yao@linaro.org
author | njian |
---|---|
date | Fri, 12 May 2017 14:59:35 +0800 |
parents | e1b926a0b23f |
children | 34a17324cd65 |
files | hotspot/src/cpu/aarch64/vm/aarch64.ad |
diffstat | 1 files changed, 14 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/cpu/aarch64/vm/aarch64.ad Mon Jun 19 01:23:58 2017 -0700 +++ b/hotspot/src/cpu/aarch64/vm/aarch64.ad Fri May 12 14:59:35 2017 +0800 @@ -5423,6 +5423,16 @@ interface(CONST_INTER); %} +operand immI_63() +%{ + predicate(n->get_int() == 63); + match(ConI); + + op_cost(0); + format %{ %} + interface(CONST_INTER); +%} + operand immI_64() %{ predicate(n->get_int() == 64); @@ -5453,20 +5463,10 @@ interface(CONST_INTER); %} -operand immL_63() -%{ - predicate(n->get_int() == 63); - match(ConI); - - op_cost(0); - format %{ %} - interface(CONST_INTER); -%} - operand immL_255() %{ - predicate(n->get_int() == 255); - match(ConI); + predicate(n->get_long() == 255L); + match(ConL); op_cost(0); format %{ %} @@ -11146,7 +11146,7 @@ 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)); ins_cost(INSN_COST); format %{ "lsr $dst, $src1, $div1" %} @@ -11156,7 +11156,7 @@ 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))); ins_cost(INSN_COST); format %{ "add $dst, $src, $div1" %}