RFR: C1 fixes to matrix barriers

Roman Kennke rkennke at redhat.com
Fri Mar 24 08:29:06 UTC 2017


Am 24.03.2017 um 09:20 schrieb Andrew Haley:
> On 23/03/17 20:03, Roman Kennke wrote:
>> This fixes a bunch of issues with the matrix barriers in c1:
>>
>> - it needs longConst() for stride, otherwise the register sizes do not
>> match in the mult
>> - AArch64 macro assembler can't work with 64bit immediates in some math
>> ops, I changed it to explicitely load into regs first. X86 moves it to a
>> reg anyway.
>> - AAarch64 can't store a constant 1! I #ifdef'd it to load into register
>> first.
> What is this for?
>
> +#ifdef AARCH64
> +  // Aarch64 cannot (yet) move a constant 1 ...
> +  LIR_Opr one = new_register(T_INT);
> +  __ move(LIR_OprFact::intConst(1), one);
> +#else
> +  LIR_Opr one = LIR_OprFact::intConst(1);
> +#endif
> +  __ move(one, matrix_elem_addr);
>
> Surely a register move works everywhere.

Yeah, but x86 can move an immediate instead, no need to take a register
there.
AArch64's const2mem() would only move a zero.

Roman



More information about the shenandoah-dev mailing list