[aarch64-port-dev ] RFR: 8179933: aarch64: incorrect match rule for immL_63 and immL_255

Andrew Haley aph at redhat.com
Fri May 12 08:14:55 UTC 2017


On 12/05/17 09:10, Andrew Dinn wrote:

> 
> The patch looks good to me.

While we're looking at aarch64.ad, I see this patch and it looks really,
uh:

11149 instruct signExtractL(iRegLNoSp dst, iRegL src1, immI_63 div1, immI_63 div2) %{
11150   match(Set dst (URShiftL (RShiftL src1 div1) div2));
11151   ins_cost(INSN_COST);
11152   format %{ "lsr $dst, $src1, $div1" %}
11153   ins_encode %{
11154     __ lsr(as_Register($dst$$reg), as_Register($src1$$reg), 63);
11155   %}
11156   ins_pipe(ialu_reg_shift);
11157 %}

So it's

    ((aLong >> 63) >>> 63)

This is so weird I don't know what to think about it.

Andrew.



More information about the aarch64-port-dev mailing list