RFR: C1 fixes to matrix barriers

Andrew Haley aph at redhat.com
Fri Mar 24 08:20:37 UTC 2017

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);
+  LIR_Opr one = LIR_OprFact::intConst(1);
+  __ move(one, matrix_elem_addr);

Surely a register move works everywhere.


More information about the shenandoah-dev mailing list