[aarch64-port-dev ] Internal Error (assembler_aarch64.hpp:238) guarantee(val < (1U << nbits)) failed: Field too big for insn

Andrew Haley aph at redhat.com
Fri Nov 15 02:46:50 PST 2013


On 11/15/2013 04:59 AM, Cao Hoang Thu wrote:
> I built current source today (client and server), I got error:
> 
> #java -Xmx1024m -jar dacapo-9.12-bach.jar sunflow
> 
> Using scaled threading model. 8 processors detected, 8 threads used to drive the workload, in a possible range of [1,256]
> ===== DaCapo 9.12 sunflow starting =====
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  Internal Error (assembler_aarch64.hpp:238), pid=3161, tid=547480334864
> #  guarantee(val < (1U << nbits)) failed: Field too big for insn

Fixed thusly.

Andrew.



# HG changeset patch
# User aph
# Date 1384511583 18000
#      Fri Nov 15 05:33:03 2013 -0500
# Node ID fa8f1a444540e106765e3967e3c97a394389f706
# Parent  cbc8c470e3bd2fa1711f3e135bc5b52240ba14a0
Correct handling of 64-bit logical immediate operands.

diff -r cbc8c470e3bd -r fa8f1a444540 src/cpu/aarch64/vm/aarch64.ad
--- a/src/cpu/aarch64/vm/aarch64.ad	Thu Nov 14 12:59:57 2013 +0000
+++ b/src/cpu/aarch64/vm/aarch64.ad	Fri Nov 15 05:33:03 2013 -0500
@@ -3588,7 +3588,7 @@
 // TODO -- check this is right when e.g the mask is 0x80000000
 operand immILog()
 %{
-  predicate(Assembler::operand_valid_for_logical_immediate(true, (unsigned long)n->get_int()));
+  predicate(Assembler::operand_valid_for_logical_immediate(/*is32*/true, (unsigned long)n->get_int()));
   match(ConI);
   op_cost(0);
   format %{ %}
@@ -3665,7 +3665,7 @@
 // 64 bit integer valid for logical immediate
 operand immLLog()
 %{
-  predicate(Assembler::operand_valid_for_logical_immediate(true, (unsigned long)n->get_long()));
+  predicate(Assembler::operand_valid_for_logical_immediate(/*is32*/false, (unsigned long)n->get_long()));
   match(ConL);
   op_cost(0);
   format %{ %}




More information about the aarch64-port-dev mailing list