OSDN Git Service

Add ports for TILE-Gx and TILEPro.
authorwalt <walt@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Feb 2012 10:02:21 +0000 (10:02 +0000)
committerwalt <walt@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Feb 2012 10:02:21 +0000 (10:02 +0000)
.
* MAINTAINERS (tilegx port): Add myself.
(tilepro port): Add myself.

contrib
* config-list.mk (LIST): Add tilegx-linux-gnu and
tilepro-linux-gnu.
* gcc_update (gcc/config/tilegx/mul-tables.c): New dependencies.
(gcc/config/tilepro/mul-tables.c): New dependencies.

gcc
* config.gcc: Handle tilegx and tilepro.
* configure.ac (gcc_cv_as_dwarf2_debug_line): Enable test for
tilegx and tilepro.
Add HAVE_AS_TLS check for tilegx and tilepro.
* configure: Regenerate.
* doc/contrib.texi: Add Mat Hostetter and self.
* doc/extend.texi (TILE-Gx Built-in Functions): New node.
Document instruction intrinsics and network accessing intrinsics.
(TILEPro Built-in Functions): New node.  Document instruction
intrinsics and network accessing intrinsics.
* doc/install.texi (Specific, tilegx-*-linux*): Document it.
(Specific, tilepro-*-linux*): Likewise.
* doc/invoke.texi (TILE-Gx Options): New section.
(TILEPro Options): New section.
* doc/md.texi (TILE-Gx): New section.
(TILEPro): New section.
* common/config/tilegx: New directory for tilegx.
* common/config/tilepro: New directory for tilepro.
* config/tilegx: New directory for tilegx.
* config/tilepro: New directory for tilepro.

gcc/testsuite
* g++.dg/other/PR23205.C: Disable test on tile.
* g++.dg/other/pr23205-2.C: Disable test on tile.
* gcc.dg/20020312-2.c: Add a condition for __tile__.
* gcc.dg/20040813-1.c: Disable test on tile.
* gcc.dg/lower-subreg-1.c: Disable test on tilegx.
* gcc.misc-tests/linkage.exp: Handle tilegx.

libcpp
* configure.ac: Require 64-bit hwint for tilegx and tilepro.
* configure: Regenerate.

libgcc
* config.host: Handle tilegx and tilepro.
* config/tilegx: New directory for tilegx.
* config/tilepro: New directory for tilepro.

libgomp
* configure.tgt: Handle tilegx and tilepro.
* config/linux/tile: New directory for tilegx and tilepro.

Added:
     trunk/gcc/common/config/tilegx/tilegx-common.c
     trunk/gcc/common/config/tilepro/tilepro-common.c
     trunk/gcc/config/tilegx/constraints.md
     trunk/gcc/config/tilegx/linux.h
     trunk/gcc/config/tilegx/mul-tables.c
     trunk/gcc/config/tilegx/predicates.md
     trunk/gcc/config/tilegx/sync.md
     trunk/gcc/config/tilegx/t-tilegx
     trunk/gcc/config/tilegx/tilegx-builtins.h
     trunk/gcc/config/tilegx/tilegx-c.c
     trunk/gcc/config/tilegx/tilegx-generic.md
     trunk/gcc/config/tilegx/tilegx-modes.def
     trunk/gcc/config/tilegx/tilegx-multiply.h
     trunk/gcc/config/tilegx/tilegx-protos.h
     trunk/gcc/config/tilegx/tilegx.c
     trunk/gcc/config/tilegx/tilegx.h
     trunk/gcc/config/tilegx/tilegx.md
     trunk/gcc/config/tilegx/tilegx.opt
     trunk/gcc/config/tilepro/constraints.md
     trunk/gcc/config/tilepro/gen-mul-tables.cc
     trunk/gcc/config/tilepro/linux.h
     trunk/gcc/config/tilepro/mul-tables.c
     trunk/gcc/config/tilepro/predicates.md
     trunk/gcc/config/tilepro/t-tilepro
     trunk/gcc/config/tilepro/tilepro-builtins.h
     trunk/gcc/config/tilepro/tilepro-c.c
     trunk/gcc/config/tilepro/tilepro-generic.md
     trunk/gcc/config/tilepro/tilepro-modes.def
     trunk/gcc/config/tilepro/tilepro-multiply.h
     trunk/gcc/config/tilepro/tilepro-protos.h
     trunk/gcc/config/tilepro/tilepro.c
     trunk/gcc/config/tilepro/tilepro.h
     trunk/gcc/config/tilepro/tilepro.md
     trunk/gcc/config/tilepro/tilepro.opt
     trunk/libgcc/config/tilegx/sfp-machine.h
     trunk/libgcc/config/tilegx/sfp-machine32.h
     trunk/libgcc/config/tilegx/sfp-machine64.h
     trunk/libgcc/config/tilegx/t-crtstuff
     trunk/libgcc/config/tilegx/t-softfp
     trunk/libgcc/config/tilegx/t-tilegx
     trunk/libgcc/config/tilepro/atomic.c
     trunk/libgcc/config/tilepro/atomic.h
     trunk/libgcc/config/tilepro/linux-unwind.h
     trunk/libgcc/config/tilepro/sfp-machine.h
     trunk/libgcc/config/tilepro/softdivide.c
     trunk/libgcc/config/tilepro/softmpy.S
     trunk/libgcc/config/tilepro/t-crtstuff
     trunk/libgcc/config/tilepro/t-tilepro
     trunk/libgomp/config/linux/tile/futex.h
Modified:
     trunk/MAINTAINERS
     trunk/contrib/config-list.mk
     trunk/contrib/gcc_update
     trunk/gcc/config.gcc
     trunk/gcc/configure
     trunk/gcc/configure.ac
     trunk/gcc/doc/contrib.texi
     trunk/gcc/doc/extend.texi
     trunk/gcc/doc/install.texi
     trunk/gcc/doc/invoke.texi
     trunk/gcc/doc/md.texi
     trunk/gcc/testsuite/g++.dg/other/PR23205.C
     trunk/gcc/testsuite/g++.dg/other/pr23205-2.C
     trunk/gcc/testsuite/gcc.dg/20020312-2.c
     trunk/gcc/testsuite/gcc.dg/20040813-1.c
     trunk/gcc/testsuite/gcc.dg/lower-subreg-1.c
     trunk/gcc/testsuite/gcc.misc-tests/linkage.exp
     trunk/libcpp/configure
     trunk/libcpp/configure.ac
     trunk/libgcc/config.host
     trunk/libgomp/configure.tgt

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184203 138bc75d-0d04-0410-961f-82ee72b054a4

77 files changed:
ChangeLog
MAINTAINERS
contrib/ChangeLog
contrib/config-list.mk
contrib/gcc_update
gcc/ChangeLog
gcc/common/config/tilegx/tilegx-common.c [new file with mode: 0644]
gcc/common/config/tilepro/tilepro-common.c [new file with mode: 0644]
gcc/config.gcc
gcc/config/tilegx/constraints.md [new file with mode: 0644]
gcc/config/tilegx/linux.h [new file with mode: 0644]
gcc/config/tilegx/mul-tables.c [new file with mode: 0644]
gcc/config/tilegx/predicates.md [new file with mode: 0644]
gcc/config/tilegx/sync.md [new file with mode: 0644]
gcc/config/tilegx/t-tilegx [new file with mode: 0644]
gcc/config/tilegx/tilegx-builtins.h [new file with mode: 0644]
gcc/config/tilegx/tilegx-c.c [new file with mode: 0644]
gcc/config/tilegx/tilegx-generic.md [new file with mode: 0644]
gcc/config/tilegx/tilegx-modes.def [new file with mode: 0644]
gcc/config/tilegx/tilegx-multiply.h [new file with mode: 0644]
gcc/config/tilegx/tilegx-protos.h [new file with mode: 0644]
gcc/config/tilegx/tilegx.c [new file with mode: 0644]
gcc/config/tilegx/tilegx.h [new file with mode: 0644]
gcc/config/tilegx/tilegx.md [new file with mode: 0644]
gcc/config/tilegx/tilegx.opt [new file with mode: 0644]
gcc/config/tilepro/constraints.md [new file with mode: 0644]
gcc/config/tilepro/gen-mul-tables.cc [new file with mode: 0644]
gcc/config/tilepro/linux.h [new file with mode: 0644]
gcc/config/tilepro/mul-tables.c [new file with mode: 0644]
gcc/config/tilepro/predicates.md [new file with mode: 0644]
gcc/config/tilepro/t-tilepro [new file with mode: 0644]
gcc/config/tilepro/tilepro-builtins.h [new file with mode: 0644]
gcc/config/tilepro/tilepro-c.c [new file with mode: 0644]
gcc/config/tilepro/tilepro-generic.md [new file with mode: 0644]
gcc/config/tilepro/tilepro-modes.def [new file with mode: 0644]
gcc/config/tilepro/tilepro-multiply.h [new file with mode: 0644]
gcc/config/tilepro/tilepro-protos.h [new file with mode: 0644]
gcc/config/tilepro/tilepro.c [new file with mode: 0644]
gcc/config/tilepro/tilepro.h [new file with mode: 0644]
gcc/config/tilepro/tilepro.md [new file with mode: 0644]
gcc/config/tilepro/tilepro.opt [new file with mode: 0644]
gcc/configure
gcc/configure.ac
gcc/doc/contrib.texi
gcc/doc/extend.texi
gcc/doc/install.texi
gcc/doc/invoke.texi
gcc/doc/md.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/PR23205.C
gcc/testsuite/g++.dg/other/pr23205-2.C
gcc/testsuite/gcc.dg/20020312-2.c
gcc/testsuite/gcc.dg/20040813-1.c
gcc/testsuite/gcc.dg/lower-subreg-1.c
gcc/testsuite/gcc.misc-tests/linkage.exp
libcpp/ChangeLog
libcpp/configure
libcpp/configure.ac
libgcc/ChangeLog
libgcc/config.host
libgcc/config/tilegx/sfp-machine.h [new file with mode: 0644]
libgcc/config/tilegx/sfp-machine32.h [new file with mode: 0644]
libgcc/config/tilegx/sfp-machine64.h [new file with mode: 0644]
libgcc/config/tilegx/t-crtstuff [new file with mode: 0644]
libgcc/config/tilegx/t-softfp [new file with mode: 0644]
libgcc/config/tilegx/t-tilegx [new file with mode: 0644]
libgcc/config/tilepro/atomic.c [new file with mode: 0644]
libgcc/config/tilepro/atomic.h [new file with mode: 0644]
libgcc/config/tilepro/linux-unwind.h [new file with mode: 0644]
libgcc/config/tilepro/sfp-machine.h [new file with mode: 0644]
libgcc/config/tilepro/softdivide.c [new file with mode: 0644]
libgcc/config/tilepro/softmpy.S [new file with mode: 0644]
libgcc/config/tilepro/t-crtstuff [new file with mode: 0644]
libgcc/config/tilepro/t-tilepro [new file with mode: 0644]
libgomp/ChangeLog
libgomp/config/linux/tile/futex.h [new file with mode: 0644]
libgomp/configure.tgt

index 43a18de..3a14fa7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 2012-02-14  Walter Lee  <walt@tilera.com>
 
-       * MAINTAINERS (Write After Approval): Add myself.
+       * MAINTAINERS (tilegx port): Add myself.
+       (tilepro port): Add myself.
+       (Write After Approval): Add myself.
 
 2012-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
 
index aeb2a14..2c8f466 100644 (file)
@@ -104,6 +104,8 @@ sparc port          Eric Botcazou           ebotcazou@libertysurf.fr
 spu port               Trevor Smigiel          trevor_smigiel@playstation.sony.com
 spu port               David Edelsohn          dje.gcc@gmail.com
 spu port               Ulrich Weigand          uweigand@de.ibm.com
+tilegx port            Walter Lee              walt@tilera.com
+tilepro port           Walter Lee              walt@tilera.com
 v850 port              Nick Clifton            nickc@redhat.com
 vax port               Matt Thomas             matt@3am-software.com
 x86-64 port            Jan Hubicka             jh@suse.cz
index 6386f08..789f345 100644 (file)
@@ -1,3 +1,10 @@
+2012-02-14  Walter Lee  <walt@tilera.com>
+
+       * config-list.mk (LIST): Add tilegx-linux-gnu and
+       tilepro-linux-gnu.
+       * gcc_update (gcc/config/tilegx/mul-tables.c): New dependencies.
+       (gcc/config/tilepro/mul-tables.c): New dependencies.
+
 2012-02-11  Mike Stump  <mikestump@comcast.net>
 
        * compare_tests (exit_status): Fix.
index e0e8554..108f84d 100644 (file)
@@ -60,7 +60,8 @@ LIST = alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \
   sparc-leon3-linux-gnuOPT-enable-target=all sparc-netbsdelf \
   sparc64-sun-solaris2.10OPT-with-gnu-ldOPT-with-gnu-asOPT-enable-threads=posix \
   sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux sparc64-freebsd6 \
-  sparc64-netbsd sparc64-openbsd spu-elf v850e-elf v850-elf vax-linux-gnu \
+  sparc64-netbsd sparc64-openbsd spu-elf tilegx-linux-gnu tilepro-linux-gnu \
+  v850e-elf v850-elf vax-linux-gnu \
   vax-netbsdelf vax-openbsd x86_64-apple-darwin \
   x86_64-pc-linux-gnuOPT-with-fpmath=avx \
   x86_64-elfOPT-with-fpmath=sse x86_64-freebsd6 x86_64-netbsd \
index 364a1a2..0289d9b 100755 (executable)
@@ -90,6 +90,8 @@ gcc/config/c6x/c6x-mult.md: gcc/config/c6x/c6x-mult.md.in gcc/config/c6x/genmult
 gcc/config/m68k/m68k-tables.opt: gcc/config/m68k/m68k-devices.def gcc/config/m68k/m68k-isas.def gcc/config/m68k/m68k-microarchs.def gcc/config/m68k/genopt.sh
 gcc/config/mips/mips-tables.opt: gcc/config/mips/mips-cpus.def gcc/config/mips/genopt.sh
 gcc/config/rs6000/rs6000-tables.opt: gcc/config/rs6000/rs6000-cpus.def gcc/config/rs6000/genopt.sh
+gcc/config/tilegx/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc
+gcc/config/tilepro/mul-tables.c: gcc/config/tilepro/gen-mul-tables.cc
 # And then, language-specific files
 gcc/cp/cfns.h: gcc/cp/cfns.gperf
 gcc/java/keyword.h: gcc/java/keyword.gperf
index 863952c..eca470c 100644 (file)
@@ -1,3 +1,56 @@
+2012-02-14  Walter Lee  <walt@tilera.com>
+
+       * config.gcc: Handle tilegx and tilepro.
+       * configure.ac (gcc_cv_as_dwarf2_debug_line): Enable test for
+       tilegx and tilepro.
+       Add HAVE_AS_TLS check for tilegx and tilepro.
+       * configure: Regenerate.
+       * doc/contrib.texi: Add Mat Hostetter and self.
+       * doc/extend.texi (TILE-Gx Built-in Functions): New node.
+       Document instruction intrinsics and network accessing intrinsics.
+       (TILEPro Built-in Functions): New node.  Document instruction
+       intrinsics and network accessing intrinsics.
+       * doc/install.texi (Specific, tilegx-*-linux*): Document it.
+       (Specific, tilepro-*-linux*): Likewise.
+       * doc/invoke.texi (TILE-Gx Options): New section.
+       (TILEPro Options): New section.
+       * doc/md.texi (TILE-Gx): New section.
+       (TILEPro): New section.
+       * common/config/tilegx/tilegx-common.c: New file.
+       * common/config/tilepro/tilepro-common.c: New file.
+       * config/tilegx/constraints.md: New file.
+       * config/tilegx/linux.h: New file.
+       * config/tilegx/mul-tables.c: New file.
+       * config/tilegx/predicates.md: New file.
+       * config/tilegx/sync.md: New file.
+       * config/tilegx/t-tilegx: New file.
+       * config/tilegx/tilegx-builtins.h: New file.
+       * config/tilegx/tilegx-c.c: New file.
+       * config/tilegx/tilegx-generic.md: New file.
+       * config/tilegx/tilegx-modes.def: New file.
+       * config/tilegx/tilegx-multiply.h: New file.
+       * config/tilegx/tilegx-protos.h: New file.
+       * config/tilegx/tilegx.c: New file.
+       * config/tilegx/tilegx.h: New file.
+       * config/tilegx/tilegx.md: New file.
+       * config/tilegx/tilegx.opt: New file.
+       * config/tilepro/constraints.md: New file.
+       * config/tilepro/gen-mul-tables.cc: New file.
+       * config/tilepro/linux.h: New file.
+       * config/tilepro/mul-tables.c: New file.
+       * config/tilepro/predicates.md: New file.
+       * config/tilepro/t-tilepro: New file.
+       * config/tilepro/tilepro-builtins.h: New file.
+       * config/tilepro/tilepro-c.c: New file.
+       * config/tilepro/tilepro-generic.md: New file.
+       * config/tilepro/tilepro-modes.def: New file.
+       * config/tilepro/tilepro-multiply.h: New file.
+       * config/tilepro/tilepro-protos.h: New file.
+       * config/tilepro/tilepro.c: New file.
+       * config/tilepro/tilepro.h: New file.
+       * config/tilepro/tilepro.md: New file.
+       * config/tilepro/tilepro.opt: New file.
+
 2012-02-14  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/52210
diff --git a/gcc/common/config/tilegx/tilegx-common.c b/gcc/common/config/tilegx/tilegx-common.c
new file mode 100644 (file)
index 0000000..7ee29b7
--- /dev/null
@@ -0,0 +1,55 @@
+/* Common hooks for TILE-Gx.
+   Copyright (C) 2011, 2012
+   Free Software Foundation, Inc.
+   Contributed by Walter Lee (walt@tilera.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "diagnostic-core.h"
+#include "tm.h"
+#include "common/common-target.h"
+#include "common/common-target-def.h"
+#include "opts.h"
+#include "flags.h"
+
+static const struct default_options tilegx_option_optimization_table[] = {
+  {OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1},
+  /* Scheduling and bundling are super important for our architecture, so
+     enable them at -O1. */
+  {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1},
+  {OPT_LEVELS_1_PLUS, OPT_fschedule_insns2, NULL, 1},
+  {OPT_LEVELS_NONE, 0, NULL, 0}
+};
+
+
+static void
+tilegx_option_init_struct (struct gcc_options *opts)
+{
+  opts->x_flag_asynchronous_unwind_tables = 1;
+}
+
+
+#undef  TARGET_OPTION_OPTIMIZATION_TABLE
+#define TARGET_OPTION_OPTIMIZATION_TABLE tilegx_option_optimization_table
+
+#undef  TARGET_OPTION_INIT_STRUCT
+#define TARGET_OPTION_INIT_STRUCT tilegx_option_init_struct
+
+struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
diff --git a/gcc/common/config/tilepro/tilepro-common.c b/gcc/common/config/tilepro/tilepro-common.c
new file mode 100644 (file)
index 0000000..01ceb7f
--- /dev/null
@@ -0,0 +1,56 @@
+/* Common hooks for TILEPro.
+   Copyright (C) 2011, 2012
+   Free Software Foundation, Inc.
+   Contributed by Walter Lee (walt@tilera.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "diagnostic-core.h"
+#include "tm.h"
+#include "common/common-target.h"
+#include "common/common-target-def.h"
+#include "opts.h"
+#include "flags.h"
+
+static const struct default_options tilepro_option_optimization_table[] = {
+  {OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1},
+  /* Scheduling and bundling are super important for our architecture, so
+     enable them at -O1. */
+  {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1},
+  {OPT_LEVELS_1_PLUS, OPT_fschedule_insns2, NULL, 1},
+  {OPT_LEVELS_NONE, 0, NULL, 0}
+};
+
+
+static void
+tilepro_option_init_struct (struct gcc_options *opts)
+{
+  opts->x_flag_asynchronous_unwind_tables = 1;
+}
+
+
+
+#undef  TARGET_OPTION_OPTIMIZATION_TABLE
+#define TARGET_OPTION_OPTIMIZATION_TABLE tilepro_option_optimization_table
+
+#undef  TARGET_OPTION_INIT_STRUCT
+#define TARGET_OPTION_INIT_STRUCT tilepro_option_init_struct
+
+struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
index 65a423a..bdd5eb3 100644 (file)
@@ -448,6 +448,14 @@ tic6x-*-*)
 xtensa*-*-*)
        extra_options="${extra_options} fused-madd.opt"
        ;;
+tilegx*-*-*)
+       cpu_type=tilegx
+       need_64bit_hwint=yes
+       ;;
+tilepro-*-*)
+       cpu_type=tilepro
+       need_64bit_hwint=yes
+       ;;
 esac
 
 tm_file=${cpu_type}/${cpu_type}.h
@@ -2468,6 +2476,20 @@ tic6x-*-uclinux)
        tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
        use_collect2=no
        ;;
+tilegx-*-linux*)
+       tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilegx/linux.h ${tm_file}"
+        tmake_file="${tmake_file} tilegx/t-tilegx"
+       extra_objs="mul-tables.o"
+       c_target_objs="tilegx-c.o"
+       cxx_target_objs="tilegx-c.o"
+       ;;
+tilepro-*-linux*)
+       tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}"
+        tmake_file="${tmake_file} tilepro/t-tilepro"
+       extra_objs="mul-tables.o"
+       c_target_objs="tilepro-c.o"
+       cxx_target_objs="tilepro-c.o"
+       ;;
 v850*-*-*)
        case ${target} in
        v850e2v3-*-*)
diff --git a/gcc/config/tilegx/constraints.md b/gcc/config/tilegx/constraints.md
new file mode 100644 (file)
index 0000000..fcbd220
--- /dev/null
@@ -0,0 +1,123 @@
+;; Constraint definitions for Tilera TILE-Gx.
+;; Copyright (C) 2011, 2012
+;; Free Software Foundation, Inc.
+;; Contributed by Walter Lee (walt@tilera.com)
+;;
+;; This file is part of GCC.
+;;
+;; GCC is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; GCC is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+;; License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GCC; see the file COPYING3.  If not see
+;; <http://www.gnu.org/licenses/>.
+
+(define_register_constraint "R00" "R0_REGS"  "r0")
+(define_register_constraint "R01" "R1_REGS"  "r1")
+(define_register_constraint "R02" "R2_REGS"  "r2")
+(define_register_constraint "R03" "R3_REGS"  "r3")
+(define_register_constraint "R04" "R4_REGS"  "r4")
+(define_register_constraint "R05" "R5_REGS"  "r5")
+(define_register_constraint "R06" "R6_REGS"  "r6")
+(define_register_constraint "R07" "R7_REGS"  "r7")
+(define_register_constraint "R08" "R8_REGS"  "r8")
+(define_register_constraint "R09" "R9_REGS"  "r9")
+(define_register_constraint "R10" "R10_REGS" "r10")
+
+(define_constraint "I"
+  "A signed 8 bit constant"
+  (and (match_code "const_int")
+       (match_test "ival >= -128 && ival <= 127")))
+
+(define_constraint "J"
+  "Signed 16-bit integer constant"
+  (and (match_code "const_int")
+       (match_test "ival >= -32768 && ival <= 32767")))
+
+(define_constraint "K"
+  "Unsigned 16-bit integer constant"
+  (and (match_code "const_int")
+       (match_test "(ival >= 0 && ival <= 65535)")))
+
+(define_constraint "L"
+  "Integer constant that fits in one signed byte when incremented"
+  (and (match_code "const_int")
+       (match_test "ival >= -129 && ival <= 126")))
+
+(define_constraint "M"
+  "A bit mask suitable for 'bfins'"
+  (and (match_code "const_int")
+       (match_test "tilegx_bitfield_operand_p (ival, NULL, NULL)")))
+
+(define_constraint "N"
+  "Integer constant that is a byte tiled out eight times"
+  (and (match_code "const_int")
+       (match_test "(ival == (ival & 0xFF) * 0x0101010101010101LL)")))
+
+(define_constraint "O"
+ "The integer zero constant"
+ (and (match_code "const_int")
+      (match_test "ival == 0")))
+
+(define_constraint "P"
+  "Integer constant that is a sign-extended byte tiled out as four shorts"
+  (and (match_code "const_int")
+       (match_test "(ival
+                     == ((trunc_int_for_mode (ival, QImode) & 0xFFFF)
+                         * 0x0001000100010001LL))")))
+
+(define_constraint "Q"
+  "Integer constant that fits in one signed byte when incremented, but not -1"
+  (and (match_code "const_int")
+       (match_test "ival >= -129 && ival <= 126 && ival != -1")))
+
+(define_constraint "S"
+  "Integer constant that has all 1 bits consecutive and starting at bit 0"
+  (and (match_code "const_int")
+       (match_test "ival != 0 && (ival & (ival + 1)) == 0")))
+
+(define_constraint "T"
+  "An unspec wrapper for a symbolc operand"
+  (ior (match_operand 0 "const_last_symbolic_operand")
+       (match_operand 0 "const_symbolic_operand")))
+
+(define_memory_constraint "U"
+  "Non-auto-incrementing memory"
+  (and (match_code "mem")
+       (match_test "GET_RTX_CLASS (GET_CODE (XEXP (op, 0))) != RTX_AUTOINC")))
+
+(define_constraint "W"
+  "An 8-element vector constant with identical elements"
+  (and (match_code "const_vector")
+       (match_test "CONST_VECTOR_NUNITS (op) == 8")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 2)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 3)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 4)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 5)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 6)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 7)")))
+
+(define_constraint "Y"
+  "A 4-element vector constant with identical elements"
+  (and (match_code "const_vector")
+       (match_test "CONST_VECTOR_NUNITS (op) == 4")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 1)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 2)")
+       (match_test "CONST_VECTOR_ELT (op, 0) == CONST_VECTOR_ELT (op, 3)")))
+(define_constraint "Z0"
+ "The integer constant 0xffffffff"
+ (and (match_code "const_int")
+      (match_test "ival == 0xffffffff")))
+
+(define_constraint "Z1"
+ "The integer constant 0xffffffff00000000"
+ (and (match_code "const_int")
+      (match_test "ival == (HOST_WIDE_INT)0xffffffff00000000LL")))
diff --git a/gcc/config/tilegx/linux.h b/gcc/config/tilegx/linux.h
new file mode 100644 (file)
index 0000000..b42e2bb
--- /dev/null
@@ -0,0 +1,72 @@
+/* Definitions for TILE-Gx running Linux-based GNU systems with ELF.
+   Copyright (C) 2011, 2012
+   Free Software Foundation, Inc.
+   Contributed by Walter Lee (walt@tilera.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#undef CPP_SPEC
+#define CPP_SPEC "%{pthread:-D_REENTRANT}"
+
+#undef ASM_SPEC
+#define ASM_SPEC "%{m32:--32} %{m64:--64}"
+
+#undef LINK_SPEC
+#define LINK_SPEC "%{m64:-m elf64tilegx} %{m32:-m elf32tilegx} \
+  %{shared:-shared} \
+  %{!shared: \
+    %{!static: \
+      %{rdynamic:-export-dynamic} \
+      -dynamic-linker \
+        %{ m32: /lib32/ld.so.1} \
+        %{!m32: /lib/ld.so.1}} \
+    %{static:-static}}"
+
+#define MULTILIB_DEFAULTS { "m64" }
+
+#define NO_PROFILE_COUNTERS    1
+
+#undef MCOUNT_NAME
+#define MCOUNT_NAME "__mcount"
+
+#undef NEED_INDICATE_EXEC_STACK
+#define NEED_INDICATE_EXEC_STACK 1
+
+#ifdef TARGET_LIBC_PROVIDES_SSP
+/* TILE-Gx glibc provides __stack_chk_guard two pointer-size words before
+   tp. */
+#define TARGET_THREAD_SSP_OFFSET (-2 * GET_MODE_SIZE (ptr_mode))
+#endif
+
+/* For __clear_cache in libgcc2.c.  */
+#ifdef IN_LIBGCC2
+
+#include <arch/icache.h>
+
+/* Use the minimum page size of 4K.  Alternatively we can call
+   getpagesize() but it introduces a libc dependence.  */
+#undef CLEAR_INSN_CACHE
+#define CLEAR_INSN_CACHE(beg, end) invalidate_icache (beg, end - beg, 4096)
+
+#else
+
+/* define CLEAR_INSN_CACHE so that gcc knows to expand __builtin__clear_cache
+   to the libraray call.  */
+#undef CLEAR_INSN_CACHE
+#define CLEAR_INSN_CACHE 1
+
+#endif
diff --git a/gcc/config/tilegx/mul-tables.c b/gcc/config/tilegx/mul-tables.c
new file mode 100644 (file)
index 0000000..b7d171f
--- /dev/null
@@ -0,0 +1,27244 @@
+/* Constant multiply table for TILE-Gx.
+   Copyright (C) 2011, 2012
+   Free Software Foundation, Inc.
+   Contributed by Walter Lee (walt@tilera.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "expr.h"
+#include "optabs.h"
+#include "tilegx-multiply.h"
+
+const enum insn_code tilegx_multiply_insn_seq_decode_opcode[] = {
+  CODE_FOR_nothing /* must be first */ ,
+  CODE_FOR_adddi3,
+  CODE_FOR_subdi3,
+  CODE_FOR_insn_shl1add,
+  CODE_FOR_insn_shl2add,
+  CODE_FOR_insn_shl3add,
+  CODE_FOR_ashldi3
+};
+
+const struct tilegx_multiply_insn_seq tilegx_multiply_insn_seq_table[] = {
+  {-9223372036854775807ll - 1 /* 0x8000000000000000 */ ,
+   {{6, 1, 63}}                        /* shli r2, r1, 63 */
+   },
+  {-9223372036854775807ll /* 0x8000000000000001 */ ,
+   {{6, 1, 63},                        /* shli r2, r1, 63 */
+    {1, 1, 2}}                 /* add r3, r1, r2 */
+   },
+  {-9223372036854775806ll /* 0x8000000000000002 */ ,
+   {{6, 1, 63},                        /* shli r2, r1, 63 */
+    {3, 1, 2}}                 /* shl1add r3, r1, r2 */
+   },
+  {-9223372036854775805ll /* 0x8000000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775804ll /* 0x8000000000000004 */ ,
+   {{6, 1, 63},                        /* shli r2, r1, 63 */
+    {4, 1, 2}}                 /* shl2add r3, r1, r2 */
+   },
+  {-9223372036854775803ll /* 0x8000000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775802ll /* 0x8000000000000006 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-9223372036854775801ll /* 0x8000000000000007 */ ,
+   {{6, 1, 63},                        /* shli r2, r1, 63 */
+    {2, 2, 1},                 /* sub r3, r2, r1 */
+    {5, 1, 3}}                 /* shl3add r4, r1, r3 */
+   },
+  {-9223372036854775800ll /* 0x8000000000000008 */ ,
+   {{6, 1, 63},                        /* shli r2, r1, 63 */
+    {5, 1, 2}}                 /* shl3add r3, r1, r2 */
+   },
+  {-9223372036854775799ll /* 0x8000000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775798ll /* 0x800000000000000a */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-9223372036854775792ll /* 0x8000000000000010 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775776ll /* 0x8000000000000020 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775744ll /* 0x8000000000000040 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775680ll /* 0x8000000000000080 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775552ll /* 0x8000000000000100 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854775296ll /* 0x8000000000000200 */ ,
+   {{6, 1, 9},                 /* shli r2, r1, 9 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854774784ll /* 0x8000000000000400 */ ,
+   {{6, 1, 10},                        /* shli r2, r1, 10 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854773760ll /* 0x8000000000000800 */ ,
+   {{6, 1, 11},                        /* shli r2, r1, 11 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854771712ll /* 0x8000000000001000 */ ,
+   {{6, 1, 12},                        /* shli r2, r1, 12 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854767616ll /* 0x8000000000002000 */ ,
+   {{6, 1, 13},                        /* shli r2, r1, 13 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854759424ll /* 0x8000000000004000 */ ,
+   {{6, 1, 14},                        /* shli r2, r1, 14 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854743040ll /* 0x8000000000008000 */ ,
+   {{6, 1, 15},                        /* shli r2, r1, 15 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854710272ll /* 0x8000000000010000 */ ,
+   {{6, 1, 16},                        /* shli r2, r1, 16 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854644736ll /* 0x8000000000020000 */ ,
+   {{6, 1, 17},                        /* shli r2, r1, 17 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854513664ll /* 0x8000000000040000 */ ,
+   {{6, 1, 18},                        /* shli r2, r1, 18 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036854251520ll /* 0x8000000000080000 */ ,
+   {{6, 1, 19},                        /* shli r2, r1, 19 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036853727232ll /* 0x8000000000100000 */ ,
+   {{6, 1, 20},                        /* shli r2, r1, 20 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036852678656ll /* 0x8000000000200000 */ ,
+   {{6, 1, 21},                        /* shli r2, r1, 21 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036850581504ll /* 0x8000000000400000 */ ,
+   {{6, 1, 22},                        /* shli r2, r1, 22 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036846387200ll /* 0x8000000000800000 */ ,
+   {{6, 1, 23},                        /* shli r2, r1, 23 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036837998592ll /* 0x8000000001000000 */ ,
+   {{6, 1, 24},                        /* shli r2, r1, 24 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036821221376ll /* 0x8000000002000000 */ ,
+   {{6, 1, 25},                        /* shli r2, r1, 25 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036787666944ll /* 0x8000000004000000 */ ,
+   {{6, 1, 26},                        /* shli r2, r1, 26 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036720558080ll /* 0x8000000008000000 */ ,
+   {{6, 1, 27},                        /* shli r2, r1, 27 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036586340352ll /* 0x8000000010000000 */ ,
+   {{6, 1, 28},                        /* shli r2, r1, 28 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372036317904896ll /* 0x8000000020000000 */ ,
+   {{6, 1, 29},                        /* shli r2, r1, 29 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372035781033984ll /* 0x8000000040000000 */ ,
+   {{6, 1, 30},                        /* shli r2, r1, 30 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372034707292160ll /* 0x8000000080000000 */ ,
+   {{6, 1, 31},                        /* shli r2, r1, 31 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372032559808512ll /* 0x8000000100000000 */ ,
+   {{6, 1, 32},                        /* shli r2, r1, 32 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372028264841216ll /* 0x8000000200000000 */ ,
+   {{6, 1, 33},                        /* shli r2, r1, 33 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372019674906624ll /* 0x8000000400000000 */ ,
+   {{6, 1, 34},                        /* shli r2, r1, 34 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223372002495037440ll /* 0x8000000800000000 */ ,
+   {{6, 1, 35},                        /* shli r2, r1, 35 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223371968135299072ll /* 0x8000001000000000 */ ,
+   {{6, 1, 36},                        /* shli r2, r1, 36 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223371899415822336ll /* 0x8000002000000000 */ ,
+   {{6, 1, 37},                        /* shli r2, r1, 37 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223371761976868864ll /* 0x8000004000000000 */ ,
+   {{6, 1, 38},                        /* shli r2, r1, 38 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223371487098961920ll /* 0x8000008000000000 */ ,
+   {{6, 1, 39},                        /* shli r2, r1, 39 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223370937343148032ll /* 0x8000010000000000 */ ,
+   {{6, 1, 40},                        /* shli r2, r1, 40 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223369837831520256ll /* 0x8000020000000000 */ ,
+   {{6, 1, 41},                        /* shli r2, r1, 41 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223367638808264704ll /* 0x8000040000000000 */ ,
+   {{6, 1, 42},                        /* shli r2, r1, 42 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223363240761753600ll /* 0x8000080000000000 */ ,
+   {{6, 1, 43},                        /* shli r2, r1, 43 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223354444668731392ll /* 0x8000100000000000 */ ,
+   {{6, 1, 44},                        /* shli r2, r1, 44 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223336852482686976ll /* 0x8000200000000000 */ ,
+   {{6, 1, 45},                        /* shli r2, r1, 45 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223301668110598144ll /* 0x8000400000000000 */ ,
+   {{6, 1, 46},                        /* shli r2, r1, 46 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223231299366420480ll /* 0x8000800000000000 */ ,
+   {{6, 1, 47},                        /* shli r2, r1, 47 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9223090561878065152ll /* 0x8001000000000000 */ ,
+   {{6, 1, 48},                        /* shli r2, r1, 48 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9222809086901354496ll /* 0x8002000000000000 */ ,
+   {{6, 1, 49},                        /* shli r2, r1, 49 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9222246136947933184ll /* 0x8004000000000000 */ ,
+   {{6, 1, 50},                        /* shli r2, r1, 50 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9221120237041090560ll /* 0x8008000000000000 */ ,
+   {{6, 1, 51},                        /* shli r2, r1, 51 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9218868437227405312ll /* 0x8010000000000000 */ ,
+   {{6, 1, 52},                        /* shli r2, r1, 52 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9214364837600034816ll /* 0x8020000000000000 */ ,
+   {{6, 1, 53},                        /* shli r2, r1, 53 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9205357638345293824ll /* 0x8040000000000000 */ ,
+   {{6, 1, 54},                        /* shli r2, r1, 54 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9187343239835811840ll /* 0x8080000000000000 */ ,
+   {{6, 1, 55},                        /* shli r2, r1, 55 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9151314442816847872ll /* 0x8100000000000000 */ ,
+   {{6, 1, 56},                        /* shli r2, r1, 56 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-9079256848778919936ll /* 0x8200000000000000 */ ,
+   {{6, 1, 57},                        /* shli r2, r1, 57 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-8935141660703064064ll /* 0x8400000000000000 */ ,
+   {{6, 1, 58},                        /* shli r2, r1, 58 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-8646911284551352320ll /* 0x8800000000000000 */ ,
+   {{6, 1, 59},                        /* shli r2, r1, 59 */
+    {6, 1, 63},                        /* shli r3, r1, 63 */
+    {1, 2, 3}}                 /* add r4, r2, r3 */
+   },
+  {-8070450532247928832ll /* 0x9000000000000000 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 2, 60}}                        /* shli r3, r2, 60 */
+   },
+  {-6917529027641081857ll /* 0x9fffffffffffffff */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 2, 61},                        /* shli r3, r2, 61 */
+    {2, 3, 1}}                 /* sub r4, r3, r1 */
+   },
+  {-6917529027641081856ll /* 0xa000000000000000 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 2, 61}}                        /* shli r3, r2, 61 */
+   },
+  {-4611686018427387912ll /* 0xbffffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 62},                        /* shli r3, r2, 62 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-4611686018427387911ll /* 0xbffffffffffffff9 */ ,
+   {{6, 1, 62},                        /* shli r2, r1, 62 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4611686018427387908ll /* 0xbffffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 62},                        /* shli r3, r2, 62 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-4611686018427387907ll /* 0xbffffffffffffffd */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 62},                        /* shli r3, r2, 62 */
+    {2, 3, 2}}                 /* sub r4, r3, r2 */
+   },
+  {-4611686018427387906ll /* 0xbffffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 62},                        /* shli r3, r2, 62 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-4611686018427387905ll /* 0xbfffffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 62},                        /* shli r3, r1, 62 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4611686018427387904ll /* 0xc000000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 62}}                        /* shli r3, r2, 62 */
+   },
+  {-4611686018427387903ll /* 0xc000000000000001 */ ,
+   {{6, 1, 62},                        /* shli r2, r1, 62 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-4611686018427387902ll /* 0xc000000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 62},                        /* shli r3, r1, 62 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4611686018427387901ll /* 0xc000000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 62},                        /* shli r3, r1, 62 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4611686018427387900ll /* 0xc000000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 62},                        /* shli r3, r1, 62 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4611686018427387899ll /* 0xc000000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 62},                        /* shli r3, r1, 62 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4611686018427387898ll /* 0xc000000000000006 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 62},                        /* shli r3, r2, 62 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-4611686018427387896ll /* 0xc000000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 62},                        /* shli r3, r1, 62 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4611686018427387895ll /* 0xc000000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 62},                        /* shli r3, r1, 62 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-3458764513820540929ll /* 0xcfffffffffffffff */ ,
+   {{6, 1, 60},                        /* shli r2, r1, 60 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2305843009213693960ll /* 0xdffffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 61},                        /* shli r3, r2, 61 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-2305843009213693959ll /* 0xdffffffffffffff9 */ ,
+   {{6, 1, 61},                        /* shli r2, r1, 61 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2305843009213693956ll /* 0xdffffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 61},                        /* shli r3, r2, 61 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-2305843009213693955ll /* 0xdffffffffffffffd */ ,
+   {{6, 1, 61},                        /* shli r2, r1, 61 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2305843009213693954ll /* 0xdffffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 61},                        /* shli r3, r2, 61 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-2305843009213693953ll /* 0xdfffffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 61},                        /* shli r3, r1, 61 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2305843009213693952ll /* 0xe000000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 61}}                        /* shli r3, r2, 61 */
+   },
+  {-2305843009213693951ll /* 0xe000000000000001 */ ,
+   {{6, 1, 61},                        /* shli r2, r1, 61 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-2305843009213693950ll /* 0xe000000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 61},                        /* shli r3, r1, 61 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2305843009213693949ll /* 0xe000000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 61},                        /* shli r3, r1, 61 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2305843009213693948ll /* 0xe000000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 61},                        /* shli r3, r1, 61 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2305843009213693947ll /* 0xe000000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 61},                        /* shli r3, r1, 61 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2305843009213693944ll /* 0xe000000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 61},                        /* shli r3, r1, 61 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2305843009213693943ll /* 0xe000000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 61},                        /* shli r3, r1, 61 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1729382256910270465ll /* 0xe7ffffffffffffff */ ,
+   {{6, 1, 59},                        /* shli r2, r1, 59 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1152921504606846984ll /* 0xeffffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 60},                        /* shli r3, r2, 60 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-1152921504606846983ll /* 0xeffffffffffffff9 */ ,
+   {{6, 1, 60},                        /* shli r2, r1, 60 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1152921504606846980ll /* 0xeffffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 60},                        /* shli r3, r2, 60 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-1152921504606846979ll /* 0xeffffffffffffffd */ ,
+   {{6, 1, 60},                        /* shli r2, r1, 60 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1152921504606846978ll /* 0xeffffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 60},                        /* shli r3, r2, 60 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-1152921504606846977ll /* 0xefffffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 60},                        /* shli r3, r1, 60 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1152921504606846976ll /* 0xf000000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 60}}                        /* shli r3, r2, 60 */
+   },
+  {-1152921504606846975ll /* 0xf000000000000001 */ ,
+   {{6, 1, 60},                        /* shli r2, r1, 60 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-1152921504606846974ll /* 0xf000000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 60},                        /* shli r3, r1, 60 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1152921504606846973ll /* 0xf000000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 60},                        /* shli r3, r1, 60 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1152921504606846972ll /* 0xf000000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 60},                        /* shli r3, r1, 60 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1152921504606846971ll /* 0xf000000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 60},                        /* shli r3, r1, 60 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1152921504606846968ll /* 0xf000000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 60},                        /* shli r3, r1, 60 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1152921504606846967ll /* 0xf000000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 60},                        /* shli r3, r1, 60 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-864691128455135233ll /* 0xf3ffffffffffffff */ ,
+   {{6, 1, 58},                        /* shli r2, r1, 58 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-576460752303423496ll /* 0xf7fffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 59},                        /* shli r3, r2, 59 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-576460752303423495ll /* 0xf7fffffffffffff9 */ ,
+   {{6, 1, 59},                        /* shli r2, r1, 59 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-576460752303423492ll /* 0xf7fffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 59},                        /* shli r3, r2, 59 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-576460752303423491ll /* 0xf7fffffffffffffd */ ,
+   {{6, 1, 59},                        /* shli r2, r1, 59 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-576460752303423490ll /* 0xf7fffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 59},                        /* shli r3, r2, 59 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-576460752303423489ll /* 0xf7ffffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 59},                        /* shli r3, r1, 59 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-576460752303423488ll /* 0xf800000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 59}}                        /* shli r3, r2, 59 */
+   },
+  {-576460752303423487ll /* 0xf800000000000001 */ ,
+   {{6, 1, 59},                        /* shli r2, r1, 59 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-576460752303423486ll /* 0xf800000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 59},                        /* shli r3, r1, 59 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-576460752303423485ll /* 0xf800000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 59},                        /* shli r3, r1, 59 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-576460752303423484ll /* 0xf800000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 59},                        /* shli r3, r1, 59 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-576460752303423483ll /* 0xf800000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 59},                        /* shli r3, r1, 59 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-576460752303423480ll /* 0xf800000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 59},                        /* shli r3, r1, 59 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-576460752303423479ll /* 0xf800000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 59},                        /* shli r3, r1, 59 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-432345564227567617ll /* 0xf9ffffffffffffff */ ,
+   {{6, 1, 57},                        /* shli r2, r1, 57 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-288230376151711752ll /* 0xfbfffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 58},                        /* shli r3, r2, 58 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-288230376151711751ll /* 0xfbfffffffffffff9 */ ,
+   {{6, 1, 58},                        /* shli r2, r1, 58 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-288230376151711748ll /* 0xfbfffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 58},                        /* shli r3, r2, 58 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-288230376151711747ll /* 0xfbfffffffffffffd */ ,
+   {{6, 1, 58},                        /* shli r2, r1, 58 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-288230376151711746ll /* 0xfbfffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 58},                        /* shli r3, r2, 58 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-288230376151711745ll /* 0xfbffffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 58},                        /* shli r3, r1, 58 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-288230376151711744ll /* 0xfc00000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 58}}                        /* shli r3, r2, 58 */
+   },
+  {-288230376151711743ll /* 0xfc00000000000001 */ ,
+   {{6, 1, 58},                        /* shli r2, r1, 58 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-288230376151711742ll /* 0xfc00000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 58},                        /* shli r3, r1, 58 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-288230376151711741ll /* 0xfc00000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 58},                        /* shli r3, r1, 58 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-288230376151711740ll /* 0xfc00000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 58},                        /* shli r3, r1, 58 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-288230376151711739ll /* 0xfc00000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 58},                        /* shli r3, r1, 58 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-288230376151711736ll /* 0xfc00000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 58},                        /* shli r3, r1, 58 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-288230376151711735ll /* 0xfc00000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 58},                        /* shli r3, r1, 58 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-216172782113783809ll /* 0xfcffffffffffffff */ ,
+   {{6, 1, 56},                        /* shli r2, r1, 56 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-144115188075855880ll /* 0xfdfffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 57},                        /* shli r3, r2, 57 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-144115188075855879ll /* 0xfdfffffffffffff9 */ ,
+   {{6, 1, 57},                        /* shli r2, r1, 57 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-144115188075855876ll /* 0xfdfffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 57},                        /* shli r3, r2, 57 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-144115188075855875ll /* 0xfdfffffffffffffd */ ,
+   {{6, 1, 57},                        /* shli r2, r1, 57 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-144115188075855874ll /* 0xfdfffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 57},                        /* shli r3, r2, 57 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-144115188075855873ll /* 0xfdffffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 57},                        /* shli r3, r1, 57 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-144115188075855872ll /* 0xfe00000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 57}}                        /* shli r3, r2, 57 */
+   },
+  {-144115188075855871ll /* 0xfe00000000000001 */ ,
+   {{6, 1, 57},                        /* shli r2, r1, 57 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-144115188075855870ll /* 0xfe00000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 57},                        /* shli r3, r1, 57 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-144115188075855869ll /* 0xfe00000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 57},                        /* shli r3, r1, 57 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-144115188075855868ll /* 0xfe00000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 57},                        /* shli r3, r1, 57 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-144115188075855867ll /* 0xfe00000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 57},                        /* shli r3, r1, 57 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-144115188075855864ll /* 0xfe00000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 57},                        /* shli r3, r1, 57 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-144115188075855863ll /* 0xfe00000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 57},                        /* shli r3, r1, 57 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-108086391056891905ll /* 0xfe7fffffffffffff */ ,
+   {{6, 1, 55},                        /* shli r2, r1, 55 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-72057594037927944ll /* 0xfefffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 56},                        /* shli r3, r2, 56 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-72057594037927943ll /* 0xfefffffffffffff9 */ ,
+   {{6, 1, 56},                        /* shli r2, r1, 56 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-72057594037927940ll /* 0xfefffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 56},                        /* shli r3, r2, 56 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-72057594037927939ll /* 0xfefffffffffffffd */ ,
+   {{6, 1, 56},                        /* shli r2, r1, 56 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-72057594037927938ll /* 0xfefffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 56},                        /* shli r3, r2, 56 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-72057594037927937ll /* 0xfeffffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 56},                        /* shli r3, r1, 56 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-72057594037927936ll /* 0xff00000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 56}}                        /* shli r3, r2, 56 */
+   },
+  {-72057594037927935ll /* 0xff00000000000001 */ ,
+   {{6, 1, 56},                        /* shli r2, r1, 56 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-72057594037927934ll /* 0xff00000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 56},                        /* shli r3, r1, 56 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-72057594037927933ll /* 0xff00000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 56},                        /* shli r3, r1, 56 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-72057594037927932ll /* 0xff00000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 56},                        /* shli r3, r1, 56 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-72057594037927931ll /* 0xff00000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 56},                        /* shli r3, r1, 56 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-72057594037927928ll /* 0xff00000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 56},                        /* shli r3, r1, 56 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-72057594037927927ll /* 0xff00000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 56},                        /* shli r3, r1, 56 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-54043195528445953ll /* 0xff3fffffffffffff */ ,
+   {{6, 1, 54},                        /* shli r2, r1, 54 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-36028797018963976ll /* 0xff7ffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 55},                        /* shli r3, r2, 55 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-36028797018963975ll /* 0xff7ffffffffffff9 */ ,
+   {{6, 1, 55},                        /* shli r2, r1, 55 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-36028797018963972ll /* 0xff7ffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 55},                        /* shli r3, r2, 55 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-36028797018963971ll /* 0xff7ffffffffffffd */ ,
+   {{6, 1, 55},                        /* shli r2, r1, 55 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-36028797018963970ll /* 0xff7ffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 55},                        /* shli r3, r2, 55 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-36028797018963969ll /* 0xff7fffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 55},                        /* shli r3, r1, 55 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-36028797018963968ll /* 0xff80000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 55}}                        /* shli r3, r2, 55 */
+   },
+  {-36028797018963967ll /* 0xff80000000000001 */ ,
+   {{6, 1, 55},                        /* shli r2, r1, 55 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-36028797018963966ll /* 0xff80000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 55},                        /* shli r3, r1, 55 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-36028797018963965ll /* 0xff80000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 55},                        /* shli r3, r1, 55 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-36028797018963964ll /* 0xff80000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 55},                        /* shli r3, r1, 55 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-36028797018963963ll /* 0xff80000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 55},                        /* shli r3, r1, 55 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-36028797018963960ll /* 0xff80000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 55},                        /* shli r3, r1, 55 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-36028797018963959ll /* 0xff80000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 55},                        /* shli r3, r1, 55 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-27021597764222977ll /* 0xff9fffffffffffff */ ,
+   {{6, 1, 53},                        /* shli r2, r1, 53 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-18014398509481992ll /* 0xffbffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 54},                        /* shli r3, r2, 54 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-18014398509481991ll /* 0xffbffffffffffff9 */ ,
+   {{6, 1, 54},                        /* shli r2, r1, 54 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-18014398509481988ll /* 0xffbffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 54},                        /* shli r3, r2, 54 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-18014398509481987ll /* 0xffbffffffffffffd */ ,
+   {{6, 1, 54},                        /* shli r2, r1, 54 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-18014398509481986ll /* 0xffbffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 54},                        /* shli r3, r2, 54 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-18014398509481985ll /* 0xffbfffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 54},                        /* shli r3, r1, 54 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-18014398509481984ll /* 0xffc0000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 54}}                        /* shli r3, r2, 54 */
+   },
+  {-18014398509481983ll /* 0xffc0000000000001 */ ,
+   {{6, 1, 54},                        /* shli r2, r1, 54 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-18014398509481982ll /* 0xffc0000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 54},                        /* shli r3, r1, 54 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-18014398509481981ll /* 0xffc0000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 54},                        /* shli r3, r1, 54 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-18014398509481980ll /* 0xffc0000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 54},                        /* shli r3, r1, 54 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-18014398509481979ll /* 0xffc0000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 54},                        /* shli r3, r1, 54 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-18014398509481976ll /* 0xffc0000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 54},                        /* shli r3, r1, 54 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-18014398509481975ll /* 0xffc0000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 54},                        /* shli r3, r1, 54 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-13510798882111489ll /* 0xffcfffffffffffff */ ,
+   {{6, 1, 52},                        /* shli r2, r1, 52 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-9007199254741000ll /* 0xffdffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 53},                        /* shli r3, r2, 53 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-9007199254740999ll /* 0xffdffffffffffff9 */ ,
+   {{6, 1, 53},                        /* shli r2, r1, 53 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-9007199254740996ll /* 0xffdffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 53},                        /* shli r3, r2, 53 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-9007199254740995ll /* 0xffdffffffffffffd */ ,
+   {{6, 1, 53},                        /* shli r2, r1, 53 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-9007199254740994ll /* 0xffdffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 53},                        /* shli r3, r2, 53 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-9007199254740993ll /* 0xffdfffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 53},                        /* shli r3, r1, 53 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-9007199254740992ll /* 0xffe0000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 53}}                        /* shli r3, r2, 53 */
+   },
+  {-9007199254740991ll /* 0xffe0000000000001 */ ,
+   {{6, 1, 53},                        /* shli r2, r1, 53 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-9007199254740990ll /* 0xffe0000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 53},                        /* shli r3, r1, 53 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-9007199254740989ll /* 0xffe0000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 53},                        /* shli r3, r1, 53 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-9007199254740988ll /* 0xffe0000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 53},                        /* shli r3, r1, 53 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-9007199254740987ll /* 0xffe0000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 53},                        /* shli r3, r1, 53 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-9007199254740984ll /* 0xffe0000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 53},                        /* shli r3, r1, 53 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-9007199254740983ll /* 0xffe0000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 53},                        /* shli r3, r1, 53 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-6755399441055745ll /* 0xffe7ffffffffffff */ ,
+   {{6, 1, 51},                        /* shli r2, r1, 51 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4503599627370504ll /* 0xffeffffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 52},                        /* shli r3, r2, 52 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-4503599627370503ll /* 0xffeffffffffffff9 */ ,
+   {{6, 1, 52},                        /* shli r2, r1, 52 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4503599627370500ll /* 0xffeffffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 52},                        /* shli r3, r2, 52 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-4503599627370499ll /* 0xffeffffffffffffd */ ,
+   {{6, 1, 52},                        /* shli r2, r1, 52 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4503599627370498ll /* 0xffeffffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 52},                        /* shli r3, r2, 52 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-4503599627370497ll /* 0xffefffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 52},                        /* shli r3, r1, 52 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4503599627370496ll /* 0xfff0000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 52}}                        /* shli r3, r2, 52 */
+   },
+  {-4503599627370495ll /* 0xfff0000000000001 */ ,
+   {{6, 1, 52},                        /* shli r2, r1, 52 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-4503599627370494ll /* 0xfff0000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 52},                        /* shli r3, r1, 52 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4503599627370493ll /* 0xfff0000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 52},                        /* shli r3, r1, 52 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4503599627370492ll /* 0xfff0000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 52},                        /* shli r3, r1, 52 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4503599627370491ll /* 0xfff0000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 52},                        /* shli r3, r1, 52 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4503599627370488ll /* 0xfff0000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 52},                        /* shli r3, r1, 52 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4503599627370487ll /* 0xfff0000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 52},                        /* shli r3, r1, 52 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-3377699720527873ll /* 0xfff3ffffffffffff */ ,
+   {{6, 1, 50},                        /* shli r2, r1, 50 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2251799813685256ll /* 0xfff7fffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 51},                        /* shli r3, r2, 51 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-2251799813685255ll /* 0xfff7fffffffffff9 */ ,
+   {{6, 1, 51},                        /* shli r2, r1, 51 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2251799813685252ll /* 0xfff7fffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 51},                        /* shli r3, r2, 51 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-2251799813685251ll /* 0xfff7fffffffffffd */ ,
+   {{6, 1, 51},                        /* shli r2, r1, 51 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2251799813685250ll /* 0xfff7fffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 51},                        /* shli r3, r2, 51 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-2251799813685249ll /* 0xfff7ffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 51},                        /* shli r3, r1, 51 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2251799813685248ll /* 0xfff8000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 51}}                        /* shli r3, r2, 51 */
+   },
+  {-2251799813685247ll /* 0xfff8000000000001 */ ,
+   {{6, 1, 51},                        /* shli r2, r1, 51 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-2251799813685246ll /* 0xfff8000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 51},                        /* shli r3, r1, 51 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2251799813685245ll /* 0xfff8000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 51},                        /* shli r3, r1, 51 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2251799813685244ll /* 0xfff8000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 51},                        /* shli r3, r1, 51 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2251799813685243ll /* 0xfff8000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 51},                        /* shli r3, r1, 51 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2251799813685240ll /* 0xfff8000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 51},                        /* shli r3, r1, 51 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2251799813685239ll /* 0xfff8000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 51},                        /* shli r3, r1, 51 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1688849860263937ll /* 0xfff9ffffffffffff */ ,
+   {{6, 1, 49},                        /* shli r2, r1, 49 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1125899906842632ll /* 0xfffbfffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 50},                        /* shli r3, r2, 50 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-1125899906842631ll /* 0xfffbfffffffffff9 */ ,
+   {{6, 1, 50},                        /* shli r2, r1, 50 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1125899906842628ll /* 0xfffbfffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 50},                        /* shli r3, r2, 50 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-1125899906842627ll /* 0xfffbfffffffffffd */ ,
+   {{6, 1, 50},                        /* shli r2, r1, 50 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1125899906842626ll /* 0xfffbfffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 50},                        /* shli r3, r2, 50 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-1125899906842625ll /* 0xfffbffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 50},                        /* shli r3, r1, 50 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1125899906842624ll /* 0xfffc000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 50}}                        /* shli r3, r2, 50 */
+   },
+  {-1125899906842623ll /* 0xfffc000000000001 */ ,
+   {{6, 1, 50},                        /* shli r2, r1, 50 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-1125899906842622ll /* 0xfffc000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 50},                        /* shli r3, r1, 50 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1125899906842621ll /* 0xfffc000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 50},                        /* shli r3, r1, 50 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1125899906842620ll /* 0xfffc000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 50},                        /* shli r3, r1, 50 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1125899906842619ll /* 0xfffc000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 50},                        /* shli r3, r1, 50 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1125899906842616ll /* 0xfffc000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 50},                        /* shli r3, r1, 50 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1125899906842615ll /* 0xfffc000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 50},                        /* shli r3, r1, 50 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-844424930131969ll /* 0xfffcffffffffffff */ ,
+   {{6, 1, 48},                        /* shli r2, r1, 48 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-562949953421320ll /* 0xfffdfffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 49},                        /* shli r3, r2, 49 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-562949953421319ll /* 0xfffdfffffffffff9 */ ,
+   {{6, 1, 49},                        /* shli r2, r1, 49 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-562949953421316ll /* 0xfffdfffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 49},                        /* shli r3, r2, 49 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-562949953421315ll /* 0xfffdfffffffffffd */ ,
+   {{6, 1, 49},                        /* shli r2, r1, 49 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-562949953421314ll /* 0xfffdfffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 49},                        /* shli r3, r2, 49 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-562949953421313ll /* 0xfffdffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 49},                        /* shli r3, r1, 49 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-562949953421312ll /* 0xfffe000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 49}}                        /* shli r3, r2, 49 */
+   },
+  {-562949953421311ll /* 0xfffe000000000001 */ ,
+   {{6, 1, 49},                        /* shli r2, r1, 49 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-562949953421310ll /* 0xfffe000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 49},                        /* shli r3, r1, 49 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-562949953421309ll /* 0xfffe000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 49},                        /* shli r3, r1, 49 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-562949953421308ll /* 0xfffe000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 49},                        /* shli r3, r1, 49 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-562949953421307ll /* 0xfffe000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 49},                        /* shli r3, r1, 49 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-562949953421304ll /* 0xfffe000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 49},                        /* shli r3, r1, 49 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-562949953421303ll /* 0xfffe000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 49},                        /* shli r3, r1, 49 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-422212465065985ll /* 0xfffe7fffffffffff */ ,
+   {{6, 1, 47},                        /* shli r2, r1, 47 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-281474976710664ll /* 0xfffefffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 48},                        /* shli r3, r2, 48 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-281474976710663ll /* 0xfffefffffffffff9 */ ,
+   {{6, 1, 48},                        /* shli r2, r1, 48 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-281474976710660ll /* 0xfffefffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 48},                        /* shli r3, r2, 48 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-281474976710659ll /* 0xfffefffffffffffd */ ,
+   {{6, 1, 48},                        /* shli r2, r1, 48 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-281474976710658ll /* 0xfffefffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 48},                        /* shli r3, r2, 48 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-281474976710657ll /* 0xfffeffffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 48},                        /* shli r3, r1, 48 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-281474976710656ll /* 0xffff000000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 48}}                        /* shli r3, r2, 48 */
+   },
+  {-281474976710655ll /* 0xffff000000000001 */ ,
+   {{6, 1, 48},                        /* shli r2, r1, 48 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-281474976710654ll /* 0xffff000000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 48},                        /* shli r3, r1, 48 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-281474976710653ll /* 0xffff000000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 48},                        /* shli r3, r1, 48 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-281474976710652ll /* 0xffff000000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 48},                        /* shli r3, r1, 48 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-281474976710651ll /* 0xffff000000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 48},                        /* shli r3, r1, 48 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-281474976710648ll /* 0xffff000000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 48},                        /* shli r3, r1, 48 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-281474976710647ll /* 0xffff000000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 48},                        /* shli r3, r1, 48 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-211106232532993ll /* 0xffff3fffffffffff */ ,
+   {{6, 1, 46},                        /* shli r2, r1, 46 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-140737488355336ll /* 0xffff7ffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 47},                        /* shli r3, r2, 47 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-140737488355335ll /* 0xffff7ffffffffff9 */ ,
+   {{6, 1, 47},                        /* shli r2, r1, 47 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-140737488355332ll /* 0xffff7ffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 47},                        /* shli r3, r2, 47 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-140737488355331ll /* 0xffff7ffffffffffd */ ,
+   {{6, 1, 47},                        /* shli r2, r1, 47 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-140737488355330ll /* 0xffff7ffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 47},                        /* shli r3, r2, 47 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-140737488355329ll /* 0xffff7fffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 47},                        /* shli r3, r1, 47 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-140737488355328ll /* 0xffff800000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 47}}                        /* shli r3, r2, 47 */
+   },
+  {-140737488355327ll /* 0xffff800000000001 */ ,
+   {{6, 1, 47},                        /* shli r2, r1, 47 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-140737488355326ll /* 0xffff800000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 47},                        /* shli r3, r1, 47 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-140737488355325ll /* 0xffff800000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 47},                        /* shli r3, r1, 47 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-140737488355324ll /* 0xffff800000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 47},                        /* shli r3, r1, 47 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-140737488355323ll /* 0xffff800000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 47},                        /* shli r3, r1, 47 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-140737488355320ll /* 0xffff800000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 47},                        /* shli r3, r1, 47 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-140737488355319ll /* 0xffff800000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 47},                        /* shli r3, r1, 47 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-105553116266497ll /* 0xffff9fffffffffff */ ,
+   {{6, 1, 45},                        /* shli r2, r1, 45 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-70368744177672ll /* 0xffffbffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 46},                        /* shli r3, r2, 46 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-70368744177671ll /* 0xffffbffffffffff9 */ ,
+   {{6, 1, 46},                        /* shli r2, r1, 46 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-70368744177668ll /* 0xffffbffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 46},                        /* shli r3, r2, 46 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-70368744177667ll /* 0xffffbffffffffffd */ ,
+   {{6, 1, 46},                        /* shli r2, r1, 46 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-70368744177666ll /* 0xffffbffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 46},                        /* shli r3, r2, 46 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-70368744177665ll /* 0xffffbfffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 46},                        /* shli r3, r1, 46 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-70368744177664ll /* 0xffffc00000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 46}}                        /* shli r3, r2, 46 */
+   },
+  {-70368744177663ll /* 0xffffc00000000001 */ ,
+   {{6, 1, 46},                        /* shli r2, r1, 46 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-70368744177662ll /* 0xffffc00000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 46},                        /* shli r3, r1, 46 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-70368744177661ll /* 0xffffc00000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 46},                        /* shli r3, r1, 46 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-70368744177660ll /* 0xffffc00000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 46},                        /* shli r3, r1, 46 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-70368744177659ll /* 0xffffc00000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 46},                        /* shli r3, r1, 46 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-70368744177656ll /* 0xffffc00000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 46},                        /* shli r3, r1, 46 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-70368744177655ll /* 0xffffc00000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 46},                        /* shli r3, r1, 46 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-52776558133249ll /* 0xffffcfffffffffff */ ,
+   {{6, 1, 44},                        /* shli r2, r1, 44 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-35184372088840ll /* 0xffffdffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 45},                        /* shli r3, r2, 45 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-35184372088839ll /* 0xffffdffffffffff9 */ ,
+   {{6, 1, 45},                        /* shli r2, r1, 45 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-35184372088836ll /* 0xffffdffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 45},                        /* shli r3, r2, 45 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-35184372088835ll /* 0xffffdffffffffffd */ ,
+   {{6, 1, 45},                        /* shli r2, r1, 45 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-35184372088834ll /* 0xffffdffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 45},                        /* shli r3, r2, 45 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-35184372088833ll /* 0xffffdfffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 45},                        /* shli r3, r1, 45 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-35184372088832ll /* 0xffffe00000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 45}}                        /* shli r3, r2, 45 */
+   },
+  {-35184372088831ll /* 0xffffe00000000001 */ ,
+   {{6, 1, 45},                        /* shli r2, r1, 45 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-35184372088830ll /* 0xffffe00000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 45},                        /* shli r3, r1, 45 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-35184372088829ll /* 0xffffe00000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 45},                        /* shli r3, r1, 45 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-35184372088828ll /* 0xffffe00000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 45},                        /* shli r3, r1, 45 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-35184372088827ll /* 0xffffe00000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 45},                        /* shli r3, r1, 45 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-35184372088824ll /* 0xffffe00000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 45},                        /* shli r3, r1, 45 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-35184372088823ll /* 0xffffe00000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 45},                        /* shli r3, r1, 45 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-26388279066625ll /* 0xffffe7ffffffffff */ ,
+   {{6, 1, 43},                        /* shli r2, r1, 43 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17592186044424ll /* 0xffffeffffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 44},                        /* shli r3, r2, 44 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-17592186044423ll /* 0xffffeffffffffff9 */ ,
+   {{6, 1, 44},                        /* shli r2, r1, 44 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-17592186044420ll /* 0xffffeffffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 44},                        /* shli r3, r2, 44 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-17592186044419ll /* 0xffffeffffffffffd */ ,
+   {{6, 1, 44},                        /* shli r2, r1, 44 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-17592186044418ll /* 0xffffeffffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 44},                        /* shli r3, r2, 44 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-17592186044417ll /* 0xffffefffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 44},                        /* shli r3, r1, 44 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17592186044416ll /* 0xfffff00000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 44}}                        /* shli r3, r2, 44 */
+   },
+  {-17592186044415ll /* 0xfffff00000000001 */ ,
+   {{6, 1, 44},                        /* shli r2, r1, 44 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-17592186044414ll /* 0xfffff00000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 44},                        /* shli r3, r1, 44 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17592186044413ll /* 0xfffff00000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 44},                        /* shli r3, r1, 44 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17592186044412ll /* 0xfffff00000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 44},                        /* shli r3, r1, 44 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17592186044411ll /* 0xfffff00000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 44},                        /* shli r3, r1, 44 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17592186044408ll /* 0xfffff00000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 44},                        /* shli r3, r1, 44 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17592186044407ll /* 0xfffff00000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 44},                        /* shli r3, r1, 44 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-13194139533313ll /* 0xfffff3ffffffffff */ ,
+   {{6, 1, 42},                        /* shli r2, r1, 42 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8796093022216ll /* 0xfffff7fffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 43},                        /* shli r3, r2, 43 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-8796093022215ll /* 0xfffff7fffffffff9 */ ,
+   {{6, 1, 43},                        /* shli r2, r1, 43 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8796093022212ll /* 0xfffff7fffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 43},                        /* shli r3, r2, 43 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-8796093022211ll /* 0xfffff7fffffffffd */ ,
+   {{6, 1, 43},                        /* shli r2, r1, 43 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8796093022210ll /* 0xfffff7fffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 43},                        /* shli r3, r2, 43 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-8796093022209ll /* 0xfffff7ffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 43},                        /* shli r3, r1, 43 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8796093022208ll /* 0xfffff80000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 43}}                        /* shli r3, r2, 43 */
+   },
+  {-8796093022207ll /* 0xfffff80000000001 */ ,
+   {{6, 1, 43},                        /* shli r2, r1, 43 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-8796093022206ll /* 0xfffff80000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 43},                        /* shli r3, r1, 43 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8796093022205ll /* 0xfffff80000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 43},                        /* shli r3, r1, 43 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8796093022204ll /* 0xfffff80000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 43},                        /* shli r3, r1, 43 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8796093022203ll /* 0xfffff80000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 43},                        /* shli r3, r1, 43 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8796093022200ll /* 0xfffff80000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 43},                        /* shli r3, r1, 43 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8796093022199ll /* 0xfffff80000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 43},                        /* shli r3, r1, 43 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-6597069766657ll /* 0xfffff9ffffffffff */ ,
+   {{6, 1, 41},                        /* shli r2, r1, 41 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4398046511112ll /* 0xfffffbfffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 42},                        /* shli r3, r2, 42 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-4398046511111ll /* 0xfffffbfffffffff9 */ ,
+   {{6, 1, 42},                        /* shli r2, r1, 42 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4398046511108ll /* 0xfffffbfffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 42},                        /* shli r3, r2, 42 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-4398046511107ll /* 0xfffffbfffffffffd */ ,
+   {{6, 1, 42},                        /* shli r2, r1, 42 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4398046511106ll /* 0xfffffbfffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 42},                        /* shli r3, r2, 42 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-4398046511105ll /* 0xfffffbffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 42},                        /* shli r3, r1, 42 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4398046511104ll /* 0xfffffc0000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 42}}                        /* shli r3, r2, 42 */
+   },
+  {-4398046511103ll /* 0xfffffc0000000001 */ ,
+   {{6, 1, 42},                        /* shli r2, r1, 42 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-4398046511102ll /* 0xfffffc0000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 42},                        /* shli r3, r1, 42 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4398046511101ll /* 0xfffffc0000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 42},                        /* shli r3, r1, 42 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4398046511100ll /* 0xfffffc0000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 42},                        /* shli r3, r1, 42 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4398046511099ll /* 0xfffffc0000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 42},                        /* shli r3, r1, 42 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4398046511096ll /* 0xfffffc0000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 42},                        /* shli r3, r1, 42 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4398046511095ll /* 0xfffffc0000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 42},                        /* shli r3, r1, 42 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-3298534883329ll /* 0xfffffcffffffffff */ ,
+   {{6, 1, 40},                        /* shli r2, r1, 40 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2199023255560ll /* 0xfffffdfffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 41},                        /* shli r3, r2, 41 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-2199023255559ll /* 0xfffffdfffffffff9 */ ,
+   {{6, 1, 41},                        /* shli r2, r1, 41 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2199023255556ll /* 0xfffffdfffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 41},                        /* shli r3, r2, 41 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-2199023255555ll /* 0xfffffdfffffffffd */ ,
+   {{6, 1, 41},                        /* shli r2, r1, 41 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2199023255554ll /* 0xfffffdfffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 41},                        /* shli r3, r2, 41 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-2199023255553ll /* 0xfffffdffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 41},                        /* shli r3, r1, 41 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2199023255552ll /* 0xfffffe0000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 41}}                        /* shli r3, r2, 41 */
+   },
+  {-2199023255551ll /* 0xfffffe0000000001 */ ,
+   {{6, 1, 41},                        /* shli r2, r1, 41 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-2199023255550ll /* 0xfffffe0000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 41},                        /* shli r3, r1, 41 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2199023255549ll /* 0xfffffe0000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 41},                        /* shli r3, r1, 41 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2199023255548ll /* 0xfffffe0000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 41},                        /* shli r3, r1, 41 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2199023255547ll /* 0xfffffe0000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 41},                        /* shli r3, r1, 41 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2199023255544ll /* 0xfffffe0000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 41},                        /* shli r3, r1, 41 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2199023255543ll /* 0xfffffe0000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 41},                        /* shli r3, r1, 41 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1649267441665ll /* 0xfffffe7fffffffff */ ,
+   {{6, 1, 39},                        /* shli r2, r1, 39 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1099511627784ll /* 0xfffffefffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 40},                        /* shli r3, r2, 40 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-1099511627783ll /* 0xfffffefffffffff9 */ ,
+   {{6, 1, 40},                        /* shli r2, r1, 40 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1099511627780ll /* 0xfffffefffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 40},                        /* shli r3, r2, 40 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-1099511627779ll /* 0xfffffefffffffffd */ ,
+   {{6, 1, 40},                        /* shli r2, r1, 40 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1099511627778ll /* 0xfffffefffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 40},                        /* shli r3, r2, 40 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-1099511627777ll /* 0xfffffeffffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 40},                        /* shli r3, r1, 40 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1099511627776ll /* 0xffffff0000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 40}}                        /* shli r3, r2, 40 */
+   },
+  {-1099511627775ll /* 0xffffff0000000001 */ ,
+   {{6, 1, 40},                        /* shli r2, r1, 40 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-1099511627774ll /* 0xffffff0000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 40},                        /* shli r3, r1, 40 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1099511627773ll /* 0xffffff0000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 40},                        /* shli r3, r1, 40 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1099511627772ll /* 0xffffff0000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 40},                        /* shli r3, r1, 40 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1099511627771ll /* 0xffffff0000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 40},                        /* shli r3, r1, 40 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1099511627768ll /* 0xffffff0000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 40},                        /* shli r3, r1, 40 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1099511627767ll /* 0xffffff0000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 40},                        /* shli r3, r1, 40 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-824633720833ll /* 0xffffff3fffffffff */ ,
+   {{6, 1, 38},                        /* shli r2, r1, 38 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-549755813896ll /* 0xffffff7ffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 39},                        /* shli r3, r2, 39 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-549755813895ll /* 0xffffff7ffffffff9 */ ,
+   {{6, 1, 39},                        /* shli r2, r1, 39 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-549755813892ll /* 0xffffff7ffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 39},                        /* shli r3, r2, 39 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-549755813891ll /* 0xffffff7ffffffffd */ ,
+   {{6, 1, 39},                        /* shli r2, r1, 39 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-549755813890ll /* 0xffffff7ffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 39},                        /* shli r3, r2, 39 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-549755813889ll /* 0xffffff7fffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 39},                        /* shli r3, r1, 39 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-549755813888ll /* 0xffffff8000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 39}}                        /* shli r3, r2, 39 */
+   },
+  {-549755813887ll /* 0xffffff8000000001 */ ,
+   {{6, 1, 39},                        /* shli r2, r1, 39 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-549755813886ll /* 0xffffff8000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 39},                        /* shli r3, r1, 39 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-549755813885ll /* 0xffffff8000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 39},                        /* shli r3, r1, 39 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-549755813884ll /* 0xffffff8000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 39},                        /* shli r3, r1, 39 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-549755813883ll /* 0xffffff8000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 39},                        /* shli r3, r1, 39 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-549755813880ll /* 0xffffff8000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 39},                        /* shli r3, r1, 39 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-549755813879ll /* 0xffffff8000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 39},                        /* shli r3, r1, 39 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-412316860417ll /* 0xffffff9fffffffff */ ,
+   {{6, 1, 37},                        /* shli r2, r1, 37 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-274877906952ll /* 0xffffffbffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 38},                        /* shli r3, r2, 38 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-274877906951ll /* 0xffffffbffffffff9 */ ,
+   {{6, 1, 38},                        /* shli r2, r1, 38 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-274877906948ll /* 0xffffffbffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 38},                        /* shli r3, r2, 38 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-274877906947ll /* 0xffffffbffffffffd */ ,
+   {{6, 1, 38},                        /* shli r2, r1, 38 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-274877906946ll /* 0xffffffbffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 38},                        /* shli r3, r2, 38 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-274877906945ll /* 0xffffffbfffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 38},                        /* shli r3, r1, 38 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-274877906944ll /* 0xffffffc000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 38}}                        /* shli r3, r2, 38 */
+   },
+  {-274877906943ll /* 0xffffffc000000001 */ ,
+   {{6, 1, 38},                        /* shli r2, r1, 38 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-274877906942ll /* 0xffffffc000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 38},                        /* shli r3, r1, 38 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-274877906941ll /* 0xffffffc000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 38},                        /* shli r3, r1, 38 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-274877906940ll /* 0xffffffc000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 38},                        /* shli r3, r1, 38 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-274877906939ll /* 0xffffffc000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 38},                        /* shli r3, r1, 38 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-274877906936ll /* 0xffffffc000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 38},                        /* shli r3, r1, 38 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-274877906935ll /* 0xffffffc000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 38},                        /* shli r3, r1, 38 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-206158430209ll /* 0xffffffcfffffffff */ ,
+   {{6, 1, 36},                        /* shli r2, r1, 36 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-137438953480ll /* 0xffffffdffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 37},                        /* shli r3, r2, 37 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-137438953479ll /* 0xffffffdffffffff9 */ ,
+   {{6, 1, 37},                        /* shli r2, r1, 37 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-137438953476ll /* 0xffffffdffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 37},                        /* shli r3, r2, 37 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-137438953475ll /* 0xffffffdffffffffd */ ,
+   {{6, 1, 37},                        /* shli r2, r1, 37 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-137438953474ll /* 0xffffffdffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 37},                        /* shli r3, r2, 37 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-137438953473ll /* 0xffffffdfffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 37},                        /* shli r3, r1, 37 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-137438953472ll /* 0xffffffe000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 37}}                        /* shli r3, r2, 37 */
+   },
+  {-137438953471ll /* 0xffffffe000000001 */ ,
+   {{6, 1, 37},                        /* shli r2, r1, 37 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-137438953470ll /* 0xffffffe000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 37},                        /* shli r3, r1, 37 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-137438953469ll /* 0xffffffe000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 37},                        /* shli r3, r1, 37 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-137438953468ll /* 0xffffffe000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 37},                        /* shli r3, r1, 37 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-137438953467ll /* 0xffffffe000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 37},                        /* shli r3, r1, 37 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-137438953464ll /* 0xffffffe000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 37},                        /* shli r3, r1, 37 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-137438953463ll /* 0xffffffe000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 37},                        /* shli r3, r1, 37 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-103079215105ll /* 0xffffffe7ffffffff */ ,
+   {{6, 1, 35},                        /* shli r2, r1, 35 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-68719476744ll /* 0xffffffeffffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 36},                        /* shli r3, r2, 36 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-68719476743ll /* 0xffffffeffffffff9 */ ,
+   {{6, 1, 36},                        /* shli r2, r1, 36 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-68719476740ll /* 0xffffffeffffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 36},                        /* shli r3, r2, 36 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-68719476739ll /* 0xffffffeffffffffd */ ,
+   {{6, 1, 36},                        /* shli r2, r1, 36 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-68719476738ll /* 0xffffffeffffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 36},                        /* shli r3, r2, 36 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-68719476737ll /* 0xffffffefffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 36},                        /* shli r3, r1, 36 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-68719476736ll /* 0xfffffff000000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 36}}                        /* shli r3, r2, 36 */
+   },
+  {-68719476735ll /* 0xfffffff000000001 */ ,
+   {{6, 1, 36},                        /* shli r2, r1, 36 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-68719476734ll /* 0xfffffff000000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 36},                        /* shli r3, r1, 36 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-68719476733ll /* 0xfffffff000000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 36},                        /* shli r3, r1, 36 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-68719476732ll /* 0xfffffff000000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 36},                        /* shli r3, r1, 36 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-68719476731ll /* 0xfffffff000000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 36},                        /* shli r3, r1, 36 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-68719476728ll /* 0xfffffff000000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 36},                        /* shli r3, r1, 36 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-68719476727ll /* 0xfffffff000000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 36},                        /* shli r3, r1, 36 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-51539607553ll /* 0xfffffff3ffffffff */ ,
+   {{6, 1, 34},                        /* shli r2, r1, 34 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-34359738376ll /* 0xfffffff7fffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 35},                        /* shli r3, r2, 35 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-34359738375ll /* 0xfffffff7fffffff9 */ ,
+   {{6, 1, 35},                        /* shli r2, r1, 35 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-34359738372ll /* 0xfffffff7fffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 35},                        /* shli r3, r2, 35 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-34359738371ll /* 0xfffffff7fffffffd */ ,
+   {{6, 1, 35},                        /* shli r2, r1, 35 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-34359738370ll /* 0xfffffff7fffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 35},                        /* shli r3, r2, 35 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-34359738369ll /* 0xfffffff7ffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 35},                        /* shli r3, r1, 35 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-34359738368ll /* 0xfffffff800000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 35}}                        /* shli r3, r2, 35 */
+   },
+  {-34359738367ll /* 0xfffffff800000001 */ ,
+   {{6, 1, 35},                        /* shli r2, r1, 35 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-34359738366ll /* 0xfffffff800000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 35},                        /* shli r3, r1, 35 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-34359738365ll /* 0xfffffff800000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 35},                        /* shli r3, r1, 35 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-34359738364ll /* 0xfffffff800000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 35},                        /* shli r3, r1, 35 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-34359738363ll /* 0xfffffff800000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 35},                        /* shli r3, r1, 35 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-34359738360ll /* 0xfffffff800000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 35},                        /* shli r3, r1, 35 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-34359738359ll /* 0xfffffff800000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 35},                        /* shli r3, r1, 35 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-25769803777ll /* 0xfffffff9ffffffff */ ,
+   {{6, 1, 33},                        /* shli r2, r1, 33 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17179869192ll /* 0xfffffffbfffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 34},                        /* shli r3, r2, 34 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-17179869191ll /* 0xfffffffbfffffff9 */ ,
+   {{6, 1, 34},                        /* shli r2, r1, 34 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-17179869188ll /* 0xfffffffbfffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 34},                        /* shli r3, r2, 34 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-17179869187ll /* 0xfffffffbfffffffd */ ,
+   {{6, 1, 34},                        /* shli r2, r1, 34 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-17179869186ll /* 0xfffffffbfffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 34},                        /* shli r3, r2, 34 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-17179869185ll /* 0xfffffffbffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 34},                        /* shli r3, r1, 34 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17179869184ll /* 0xfffffffc00000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 34}}                        /* shli r3, r2, 34 */
+   },
+  {-17179869183ll /* 0xfffffffc00000001 */ ,
+   {{6, 1, 34},                        /* shli r2, r1, 34 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-17179869182ll /* 0xfffffffc00000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 34},                        /* shli r3, r1, 34 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17179869181ll /* 0xfffffffc00000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 34},                        /* shli r3, r1, 34 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17179869180ll /* 0xfffffffc00000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 34},                        /* shli r3, r1, 34 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17179869179ll /* 0xfffffffc00000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 34},                        /* shli r3, r1, 34 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17179869176ll /* 0xfffffffc00000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 34},                        /* shli r3, r1, 34 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-17179869175ll /* 0xfffffffc00000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 34},                        /* shli r3, r1, 34 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-12884901889ll /* 0xfffffffcffffffff */ ,
+   {{6, 1, 32},                        /* shli r2, r1, 32 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8589934600ll /* 0xfffffffdfffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 33},                        /* shli r3, r2, 33 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-8589934599ll /* 0xfffffffdfffffff9 */ ,
+   {{6, 1, 33},                        /* shli r2, r1, 33 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8589934596ll /* 0xfffffffdfffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 33},                        /* shli r3, r2, 33 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-8589934595ll /* 0xfffffffdfffffffd */ ,
+   {{6, 1, 33},                        /* shli r2, r1, 33 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8589934594ll /* 0xfffffffdfffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 33},                        /* shli r3, r2, 33 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-8589934593ll /* 0xfffffffdffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 33},                        /* shli r3, r1, 33 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8589934592ll /* 0xfffffffe00000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 33}}                        /* shli r3, r2, 33 */
+   },
+  {-8589934591ll /* 0xfffffffe00000001 */ ,
+   {{6, 1, 33},                        /* shli r2, r1, 33 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-8589934590ll /* 0xfffffffe00000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 33},                        /* shli r3, r1, 33 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8589934589ll /* 0xfffffffe00000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 33},                        /* shli r3, r1, 33 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8589934588ll /* 0xfffffffe00000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 33},                        /* shli r3, r1, 33 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8589934587ll /* 0xfffffffe00000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 33},                        /* shli r3, r1, 33 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8589934584ll /* 0xfffffffe00000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 33},                        /* shli r3, r1, 33 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8589934583ll /* 0xfffffffe00000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 33},                        /* shli r3, r1, 33 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-6442450945ll /* 0xfffffffe7fffffff */ ,
+   {{6, 1, 31},                        /* shli r2, r1, 31 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4294967304ll /* 0xfffffffefffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 32},                        /* shli r3, r2, 32 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-4294967303ll /* 0xfffffffefffffff9 */ ,
+   {{6, 1, 32},                        /* shli r2, r1, 32 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4294967300ll /* 0xfffffffefffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 32},                        /* shli r3, r2, 32 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-4294967299ll /* 0xfffffffefffffffd */ ,
+   {{6, 1, 32},                        /* shli r2, r1, 32 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4294967298ll /* 0xfffffffefffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 32},                        /* shli r3, r2, 32 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-4294967297ll /* 0xfffffffeffffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 32},                        /* shli r3, r1, 32 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4294967296ll /* 0xffffffff00000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 32}}                        /* shli r3, r2, 32 */
+   },
+  {-4294967295ll /* 0xffffffff00000001 */ ,
+   {{6, 1, 32},                        /* shli r2, r1, 32 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-4294967294ll /* 0xffffffff00000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 32},                        /* shli r3, r1, 32 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4294967293ll /* 0xffffffff00000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 32},                        /* shli r3, r1, 32 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4294967292ll /* 0xffffffff00000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 32},                        /* shli r3, r1, 32 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4294967291ll /* 0xffffffff00000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 32},                        /* shli r3, r1, 32 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4294967288ll /* 0xffffffff00000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 32},                        /* shli r3, r1, 32 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4294967287ll /* 0xffffffff00000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 32},                        /* shli r3, r1, 32 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-3221225473ll /* 0xffffffff3fffffff */ ,
+   {{6, 1, 30},                        /* shli r2, r1, 30 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2147483656ll /* 0xffffffff7ffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 31},                        /* shli r3, r2, 31 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-2147483655ll /* 0xffffffff7ffffff9 */ ,
+   {{6, 1, 31},                        /* shli r2, r1, 31 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2147483652ll /* 0xffffffff7ffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 31},                        /* shli r3, r2, 31 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-2147483651ll /* 0xffffffff7ffffffd */ ,
+   {{6, 1, 31},                        /* shli r2, r1, 31 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2147483650ll /* 0xffffffff7ffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 31},                        /* shli r3, r2, 31 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-2147483649ll /* 0xffffffff7fffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 31},                        /* shli r3, r1, 31 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2147483648ll /* 0xffffffff80000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 31}}                        /* shli r3, r2, 31 */
+   },
+  {-2147483647ll /* 0xffffffff80000001 */ ,
+   {{6, 1, 31},                        /* shli r2, r1, 31 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-2147483646ll /* 0xffffffff80000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 31},                        /* shli r3, r1, 31 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2147483645ll /* 0xffffffff80000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 31},                        /* shli r3, r1, 31 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2147483644ll /* 0xffffffff80000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 31},                        /* shli r3, r1, 31 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2147483643ll /* 0xffffffff80000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 31},                        /* shli r3, r1, 31 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2147483640ll /* 0xffffffff80000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 31},                        /* shli r3, r1, 31 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2147483639ll /* 0xffffffff80000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 31},                        /* shli r3, r1, 31 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1610612737ll /* 0xffffffff9fffffff */ ,
+   {{6, 1, 29},                        /* shli r2, r1, 29 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1073741832ll /* 0xffffffffbffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 30},                        /* shli r3, r2, 30 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-1073741831ll /* 0xffffffffbffffff9 */ ,
+   {{6, 1, 30},                        /* shli r2, r1, 30 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1073741828ll /* 0xffffffffbffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 30},                        /* shli r3, r2, 30 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-1073741827ll /* 0xffffffffbffffffd */ ,
+   {{6, 1, 30},                        /* shli r2, r1, 30 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1073741826ll /* 0xffffffffbffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 30},                        /* shli r3, r2, 30 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-1073741825ll /* 0xffffffffbfffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 30},                        /* shli r3, r1, 30 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1073741824ll /* 0xffffffffc0000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 30}}                        /* shli r3, r2, 30 */
+   },
+  {-1073741823ll /* 0xffffffffc0000001 */ ,
+   {{6, 1, 30},                        /* shli r2, r1, 30 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-1073741822ll /* 0xffffffffc0000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 30},                        /* shli r3, r1, 30 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1073741821ll /* 0xffffffffc0000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 30},                        /* shli r3, r1, 30 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1073741820ll /* 0xffffffffc0000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 30},                        /* shli r3, r1, 30 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1073741819ll /* 0xffffffffc0000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 30},                        /* shli r3, r1, 30 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1073741816ll /* 0xffffffffc0000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 30},                        /* shli r3, r1, 30 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1073741815ll /* 0xffffffffc0000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 30},                        /* shli r3, r1, 30 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-805306369ll /* 0xffffffffcfffffff */ ,
+   {{6, 1, 28},                        /* shli r2, r1, 28 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-536870920ll /* 0xffffffffdffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 29},                        /* shli r3, r2, 29 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-536870919ll /* 0xffffffffdffffff9 */ ,
+   {{6, 1, 29},                        /* shli r2, r1, 29 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-536870916ll /* 0xffffffffdffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 29},                        /* shli r3, r2, 29 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-536870915ll /* 0xffffffffdffffffd */ ,
+   {{6, 1, 29},                        /* shli r2, r1, 29 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-536870914ll /* 0xffffffffdffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 29},                        /* shli r3, r2, 29 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-536870913ll /* 0xffffffffdfffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 29},                        /* shli r3, r1, 29 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-536870912ll /* 0xffffffffe0000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 29}}                        /* shli r3, r2, 29 */
+   },
+  {-536870911ll /* 0xffffffffe0000001 */ ,
+   {{6, 1, 29},                        /* shli r2, r1, 29 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-536870910ll /* 0xffffffffe0000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 29},                        /* shli r3, r1, 29 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-536870909ll /* 0xffffffffe0000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 29},                        /* shli r3, r1, 29 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-536870908ll /* 0xffffffffe0000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 29},                        /* shli r3, r1, 29 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-536870907ll /* 0xffffffffe0000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 29},                        /* shli r3, r1, 29 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-536870904ll /* 0xffffffffe0000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 29},                        /* shli r3, r1, 29 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-536870903ll /* 0xffffffffe0000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 29},                        /* shli r3, r1, 29 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-402653185ll /* 0xffffffffe7ffffff */ ,
+   {{6, 1, 27},                        /* shli r2, r1, 27 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-268435464ll /* 0xffffffffeffffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 28},                        /* shli r3, r2, 28 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-268435463ll /* 0xffffffffeffffff9 */ ,
+   {{6, 1, 28},                        /* shli r2, r1, 28 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-268435460ll /* 0xffffffffeffffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 28},                        /* shli r3, r2, 28 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-268435459ll /* 0xffffffffeffffffd */ ,
+   {{6, 1, 28},                        /* shli r2, r1, 28 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-268435458ll /* 0xffffffffeffffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 28},                        /* shli r3, r2, 28 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-268435457ll /* 0xffffffffefffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 28},                        /* shli r3, r1, 28 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-268435456ll /* 0xfffffffff0000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 28}}                        /* shli r3, r2, 28 */
+   },
+  {-268435455ll /* 0xfffffffff0000001 */ ,
+   {{6, 1, 28},                        /* shli r2, r1, 28 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-268435454ll /* 0xfffffffff0000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 28},                        /* shli r3, r1, 28 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-268435453ll /* 0xfffffffff0000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 28},                        /* shli r3, r1, 28 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-268435452ll /* 0xfffffffff0000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 28},                        /* shli r3, r1, 28 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-268435451ll /* 0xfffffffff0000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 28},                        /* shli r3, r1, 28 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-268435448ll /* 0xfffffffff0000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 28},                        /* shli r3, r1, 28 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-268435447ll /* 0xfffffffff0000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 28},                        /* shli r3, r1, 28 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-201326593ll /* 0xfffffffff3ffffff */ ,
+   {{6, 1, 26},                        /* shli r2, r1, 26 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-134217736ll /* 0xfffffffff7fffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 27},                        /* shli r3, r2, 27 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-134217735ll /* 0xfffffffff7fffff9 */ ,
+   {{6, 1, 27},                        /* shli r2, r1, 27 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-134217732ll /* 0xfffffffff7fffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 27},                        /* shli r3, r2, 27 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-134217731ll /* 0xfffffffff7fffffd */ ,
+   {{6, 1, 27},                        /* shli r2, r1, 27 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-134217730ll /* 0xfffffffff7fffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 27},                        /* shli r3, r2, 27 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-134217729ll /* 0xfffffffff7ffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 27},                        /* shli r3, r1, 27 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-134217728ll /* 0xfffffffff8000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 27}}                        /* shli r3, r2, 27 */
+   },
+  {-134217727ll /* 0xfffffffff8000001 */ ,
+   {{6, 1, 27},                        /* shli r2, r1, 27 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-134217726ll /* 0xfffffffff8000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 27},                        /* shli r3, r1, 27 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-134217725ll /* 0xfffffffff8000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 27},                        /* shli r3, r1, 27 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-134217724ll /* 0xfffffffff8000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 27},                        /* shli r3, r1, 27 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-134217723ll /* 0xfffffffff8000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 27},                        /* shli r3, r1, 27 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-134217720ll /* 0xfffffffff8000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 27},                        /* shli r3, r1, 27 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-134217719ll /* 0xfffffffff8000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 27},                        /* shli r3, r1, 27 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-100663297ll /* 0xfffffffff9ffffff */ ,
+   {{6, 1, 25},                        /* shli r2, r1, 25 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-67108872ll /* 0xfffffffffbfffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 26},                        /* shli r3, r2, 26 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-67108871ll /* 0xfffffffffbfffff9 */ ,
+   {{6, 1, 26},                        /* shli r2, r1, 26 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-67108868ll /* 0xfffffffffbfffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 26},                        /* shli r3, r2, 26 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-67108867ll /* 0xfffffffffbfffffd */ ,
+   {{6, 1, 26},                        /* shli r2, r1, 26 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-67108866ll /* 0xfffffffffbfffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 26},                        /* shli r3, r2, 26 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-67108865ll /* 0xfffffffffbffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 26},                        /* shli r3, r1, 26 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-67108864ll /* 0xfffffffffc000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 26}}                        /* shli r3, r2, 26 */
+   },
+  {-67108863ll /* 0xfffffffffc000001 */ ,
+   {{6, 1, 26},                        /* shli r2, r1, 26 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-67108862ll /* 0xfffffffffc000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 26},                        /* shli r3, r1, 26 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-67108861ll /* 0xfffffffffc000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 26},                        /* shli r3, r1, 26 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-67108860ll /* 0xfffffffffc000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 26},                        /* shli r3, r1, 26 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-67108859ll /* 0xfffffffffc000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 26},                        /* shli r3, r1, 26 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-67108856ll /* 0xfffffffffc000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 26},                        /* shli r3, r1, 26 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-67108855ll /* 0xfffffffffc000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 26},                        /* shli r3, r1, 26 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-50331649ll /* 0xfffffffffcffffff */ ,
+   {{6, 1, 24},                        /* shli r2, r1, 24 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-33554440ll /* 0xfffffffffdfffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 25},                        /* shli r3, r2, 25 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-33554439ll /* 0xfffffffffdfffff9 */ ,
+   {{6, 1, 25},                        /* shli r2, r1, 25 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-33554436ll /* 0xfffffffffdfffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 25},                        /* shli r3, r2, 25 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-33554435ll /* 0xfffffffffdfffffd */ ,
+   {{6, 1, 25},                        /* shli r2, r1, 25 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-33554434ll /* 0xfffffffffdfffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 25},                        /* shli r3, r2, 25 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-33554433ll /* 0xfffffffffdffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 25},                        /* shli r3, r1, 25 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-33554432ll /* 0xfffffffffe000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 25}}                        /* shli r3, r2, 25 */
+   },
+  {-33554431ll /* 0xfffffffffe000001 */ ,
+   {{6, 1, 25},                        /* shli r2, r1, 25 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-33554430ll /* 0xfffffffffe000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 25},                        /* shli r3, r1, 25 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-33554429ll /* 0xfffffffffe000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 25},                        /* shli r3, r1, 25 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-33554428ll /* 0xfffffffffe000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 25},                        /* shli r3, r1, 25 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-33554427ll /* 0xfffffffffe000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 25},                        /* shli r3, r1, 25 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-33554424ll /* 0xfffffffffe000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 25},                        /* shli r3, r1, 25 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-33554423ll /* 0xfffffffffe000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 25},                        /* shli r3, r1, 25 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-25165825ll /* 0xfffffffffe7fffff */ ,
+   {{6, 1, 23},                        /* shli r2, r1, 23 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16777224ll /* 0xfffffffffefffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 24},                        /* shli r3, r2, 24 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-16777223ll /* 0xfffffffffefffff9 */ ,
+   {{6, 1, 24},                        /* shli r2, r1, 24 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-16777220ll /* 0xfffffffffefffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 24},                        /* shli r3, r2, 24 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-16777219ll /* 0xfffffffffefffffd */ ,
+   {{6, 1, 24},                        /* shli r2, r1, 24 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-16777218ll /* 0xfffffffffefffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 24},                        /* shli r3, r2, 24 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-16777217ll /* 0xfffffffffeffffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 24},                        /* shli r3, r1, 24 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16777216ll /* 0xffffffffff000000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 24}}                        /* shli r3, r2, 24 */
+   },
+  {-16777215ll /* 0xffffffffff000001 */ ,
+   {{6, 1, 24},                        /* shli r2, r1, 24 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-16777214ll /* 0xffffffffff000002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 24},                        /* shli r3, r1, 24 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16777213ll /* 0xffffffffff000003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 24},                        /* shli r3, r1, 24 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16777212ll /* 0xffffffffff000004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 24},                        /* shli r3, r1, 24 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16777211ll /* 0xffffffffff000005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 24},                        /* shli r3, r1, 24 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16777208ll /* 0xffffffffff000008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 24},                        /* shli r3, r1, 24 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16777207ll /* 0xffffffffff000009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 24},                        /* shli r3, r1, 24 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-12582913ll /* 0xffffffffff3fffff */ ,
+   {{6, 1, 22},                        /* shli r2, r1, 22 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8388616ll /* 0xffffffffff7ffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 23},                        /* shli r3, r2, 23 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-8388615ll /* 0xffffffffff7ffff9 */ ,
+   {{6, 1, 23},                        /* shli r2, r1, 23 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8388612ll /* 0xffffffffff7ffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 23},                        /* shli r3, r2, 23 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-8388611ll /* 0xffffffffff7ffffd */ ,
+   {{6, 1, 23},                        /* shli r2, r1, 23 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8388610ll /* 0xffffffffff7ffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 23},                        /* shli r3, r2, 23 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-8388609ll /* 0xffffffffff7fffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 23},                        /* shli r3, r1, 23 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8388608ll /* 0xffffffffff800000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 23}}                        /* shli r3, r2, 23 */
+   },
+  {-8388607ll /* 0xffffffffff800001 */ ,
+   {{6, 1, 23},                        /* shli r2, r1, 23 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-8388606ll /* 0xffffffffff800002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 23},                        /* shli r3, r1, 23 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8388605ll /* 0xffffffffff800003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 23},                        /* shli r3, r1, 23 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8388604ll /* 0xffffffffff800004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 23},                        /* shli r3, r1, 23 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8388603ll /* 0xffffffffff800005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 23},                        /* shli r3, r1, 23 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8388600ll /* 0xffffffffff800008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 23},                        /* shli r3, r1, 23 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8388599ll /* 0xffffffffff800009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 23},                        /* shli r3, r1, 23 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-6291457ll /* 0xffffffffff9fffff */ ,
+   {{6, 1, 21},                        /* shli r2, r1, 21 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4194312ll /* 0xffffffffffbffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 22},                        /* shli r3, r2, 22 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-4194311ll /* 0xffffffffffbffff9 */ ,
+   {{6, 1, 22},                        /* shli r2, r1, 22 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4194308ll /* 0xffffffffffbffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 22},                        /* shli r3, r2, 22 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-4194307ll /* 0xffffffffffbffffd */ ,
+   {{6, 1, 22},                        /* shli r2, r1, 22 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4194306ll /* 0xffffffffffbffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 22},                        /* shli r3, r2, 22 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-4194305ll /* 0xffffffffffbfffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 22},                        /* shli r3, r1, 22 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4194304ll /* 0xffffffffffc00000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 22}}                        /* shli r3, r2, 22 */
+   },
+  {-4194303ll /* 0xffffffffffc00001 */ ,
+   {{6, 1, 22},                        /* shli r2, r1, 22 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-4194302ll /* 0xffffffffffc00002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 22},                        /* shli r3, r1, 22 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4194301ll /* 0xffffffffffc00003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 22},                        /* shli r3, r1, 22 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4194300ll /* 0xffffffffffc00004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 22},                        /* shli r3, r1, 22 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4194299ll /* 0xffffffffffc00005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 22},                        /* shli r3, r1, 22 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4194296ll /* 0xffffffffffc00008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 22},                        /* shli r3, r1, 22 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4194295ll /* 0xffffffffffc00009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 22},                        /* shli r3, r1, 22 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-3145729ll /* 0xffffffffffcfffff */ ,
+   {{6, 1, 20},                        /* shli r2, r1, 20 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2097160ll /* 0xffffffffffdffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 21},                        /* shli r3, r2, 21 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-2097159ll /* 0xffffffffffdffff9 */ ,
+   {{6, 1, 21},                        /* shli r2, r1, 21 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2097156ll /* 0xffffffffffdffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 21},                        /* shli r3, r2, 21 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-2097155ll /* 0xffffffffffdffffd */ ,
+   {{6, 1, 21},                        /* shli r2, r1, 21 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2097154ll /* 0xffffffffffdffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 21},                        /* shli r3, r2, 21 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-2097153ll /* 0xffffffffffdfffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 21},                        /* shli r3, r1, 21 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2097152ll /* 0xffffffffffe00000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 21}}                        /* shli r3, r2, 21 */
+   },
+  {-2097151ll /* 0xffffffffffe00001 */ ,
+   {{6, 1, 21},                        /* shli r2, r1, 21 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-2097150ll /* 0xffffffffffe00002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 21},                        /* shli r3, r1, 21 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2097149ll /* 0xffffffffffe00003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 21},                        /* shli r3, r1, 21 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2097148ll /* 0xffffffffffe00004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 21},                        /* shli r3, r1, 21 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2097147ll /* 0xffffffffffe00005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 21},                        /* shli r3, r1, 21 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2097144ll /* 0xffffffffffe00008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 21},                        /* shli r3, r1, 21 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2097143ll /* 0xffffffffffe00009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 21},                        /* shli r3, r1, 21 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1572865ll /* 0xffffffffffe7ffff */ ,
+   {{6, 1, 19},                        /* shli r2, r1, 19 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1048584ll /* 0xffffffffffeffff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 20},                        /* shli r3, r2, 20 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-1048583ll /* 0xffffffffffeffff9 */ ,
+   {{6, 1, 20},                        /* shli r2, r1, 20 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1048580ll /* 0xffffffffffeffffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 20},                        /* shli r3, r2, 20 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-1048579ll /* 0xffffffffffeffffd */ ,
+   {{6, 1, 20},                        /* shli r2, r1, 20 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1048578ll /* 0xffffffffffeffffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 20},                        /* shli r3, r2, 20 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-1048577ll /* 0xffffffffffefffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 20},                        /* shli r3, r1, 20 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1048576ll /* 0xfffffffffff00000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 20}}                        /* shli r3, r2, 20 */
+   },
+  {-1048575ll /* 0xfffffffffff00001 */ ,
+   {{6, 1, 20},                        /* shli r2, r1, 20 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-1048574ll /* 0xfffffffffff00002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 20},                        /* shli r3, r1, 20 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1048573ll /* 0xfffffffffff00003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 20},                        /* shli r3, r1, 20 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1048572ll /* 0xfffffffffff00004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 20},                        /* shli r3, r1, 20 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1048571ll /* 0xfffffffffff00005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 20},                        /* shli r3, r1, 20 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1048568ll /* 0xfffffffffff00008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 20},                        /* shli r3, r1, 20 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1048567ll /* 0xfffffffffff00009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 20},                        /* shli r3, r1, 20 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-786433ll /* 0xfffffffffff3ffff */ ,
+   {{6, 1, 18},                        /* shli r2, r1, 18 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-524296ll /* 0xfffffffffff7fff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 19},                        /* shli r3, r2, 19 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-524295ll /* 0xfffffffffff7fff9 */ ,
+   {{6, 1, 19},                        /* shli r2, r1, 19 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-524292ll /* 0xfffffffffff7fffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 19},                        /* shli r3, r2, 19 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-524291ll /* 0xfffffffffff7fffd */ ,
+   {{6, 1, 19},                        /* shli r2, r1, 19 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-524290ll /* 0xfffffffffff7fffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 19},                        /* shli r3, r2, 19 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-524289ll /* 0xfffffffffff7ffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 19},                        /* shli r3, r1, 19 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-524288ll /* 0xfffffffffff80000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 19}}                        /* shli r3, r2, 19 */
+   },
+  {-524287ll /* 0xfffffffffff80001 */ ,
+   {{6, 1, 19},                        /* shli r2, r1, 19 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-524286ll /* 0xfffffffffff80002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 19},                        /* shli r3, r1, 19 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-524285ll /* 0xfffffffffff80003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 19},                        /* shli r3, r1, 19 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-524284ll /* 0xfffffffffff80004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 19},                        /* shli r3, r1, 19 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-524283ll /* 0xfffffffffff80005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 19},                        /* shli r3, r1, 19 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-524280ll /* 0xfffffffffff80008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 19},                        /* shli r3, r1, 19 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-524279ll /* 0xfffffffffff80009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 19},                        /* shli r3, r1, 19 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-393217ll /* 0xfffffffffff9ffff */ ,
+   {{6, 1, 17},                        /* shli r2, r1, 17 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-262152ll /* 0xfffffffffffbfff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 18},                        /* shli r3, r2, 18 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-262151ll /* 0xfffffffffffbfff9 */ ,
+   {{6, 1, 18},                        /* shli r2, r1, 18 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-262148ll /* 0xfffffffffffbfffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 18},                        /* shli r3, r2, 18 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-262147ll /* 0xfffffffffffbfffd */ ,
+   {{6, 1, 18},                        /* shli r2, r1, 18 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-262146ll /* 0xfffffffffffbfffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 18},                        /* shli r3, r2, 18 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-262145ll /* 0xfffffffffffbffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 18},                        /* shli r3, r1, 18 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-262144ll /* 0xfffffffffffc0000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 18}}                        /* shli r3, r2, 18 */
+   },
+  {-262143ll /* 0xfffffffffffc0001 */ ,
+   {{6, 1, 18},                        /* shli r2, r1, 18 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-262142ll /* 0xfffffffffffc0002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 18},                        /* shli r3, r1, 18 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-262141ll /* 0xfffffffffffc0003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 18},                        /* shli r3, r1, 18 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-262140ll /* 0xfffffffffffc0004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 18},                        /* shli r3, r1, 18 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-262139ll /* 0xfffffffffffc0005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 18},                        /* shli r3, r1, 18 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-262136ll /* 0xfffffffffffc0008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 18},                        /* shli r3, r1, 18 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-262135ll /* 0xfffffffffffc0009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 18},                        /* shli r3, r1, 18 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-196609ll /* 0xfffffffffffcffff */ ,
+   {{6, 1, 16},                        /* shli r2, r1, 16 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-131080ll /* 0xfffffffffffdfff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 17},                        /* shli r3, r2, 17 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-131079ll /* 0xfffffffffffdfff9 */ ,
+   {{6, 1, 17},                        /* shli r2, r1, 17 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-131076ll /* 0xfffffffffffdfffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 17},                        /* shli r3, r2, 17 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-131075ll /* 0xfffffffffffdfffd */ ,
+   {{6, 1, 17},                        /* shli r2, r1, 17 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-131074ll /* 0xfffffffffffdfffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 17},                        /* shli r3, r2, 17 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-131073ll /* 0xfffffffffffdffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 17},                        /* shli r3, r1, 17 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-131072ll /* 0xfffffffffffe0000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 17}}                        /* shli r3, r2, 17 */
+   },
+  {-131071ll /* 0xfffffffffffe0001 */ ,
+   {{6, 1, 17},                        /* shli r2, r1, 17 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-131070ll /* 0xfffffffffffe0002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 17},                        /* shli r3, r1, 17 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-131069ll /* 0xfffffffffffe0003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 17},                        /* shli r3, r1, 17 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-131068ll /* 0xfffffffffffe0004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 17},                        /* shli r3, r1, 17 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-131067ll /* 0xfffffffffffe0005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 17},                        /* shli r3, r1, 17 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-131064ll /* 0xfffffffffffe0008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 17},                        /* shli r3, r1, 17 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-131063ll /* 0xfffffffffffe0009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 17},                        /* shli r3, r1, 17 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-98305ll /* 0xfffffffffffe7fff */ ,
+   {{6, 1, 15},                        /* shli r2, r1, 15 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-65544ll /* 0xfffffffffffefff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 16},                        /* shli r3, r2, 16 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-65543ll /* 0xfffffffffffefff9 */ ,
+   {{6, 1, 16},                        /* shli r2, r1, 16 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-65540ll /* 0xfffffffffffefffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 16},                        /* shli r3, r2, 16 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-65539ll /* 0xfffffffffffefffd */ ,
+   {{6, 1, 16},                        /* shli r2, r1, 16 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-65538ll /* 0xfffffffffffefffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 16},                        /* shli r3, r2, 16 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-65537ll /* 0xfffffffffffeffff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 16},                        /* shli r3, r1, 16 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-65536ll /* 0xffffffffffff0000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 16}}                        /* shli r3, r2, 16 */
+   },
+  {-65535ll /* 0xffffffffffff0001 */ ,
+   {{6, 1, 16},                        /* shli r2, r1, 16 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-65534ll /* 0xffffffffffff0002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 16},                        /* shli r3, r1, 16 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-65533ll /* 0xffffffffffff0003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 16},                        /* shli r3, r1, 16 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-65532ll /* 0xffffffffffff0004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 16},                        /* shli r3, r1, 16 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-65531ll /* 0xffffffffffff0005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 16},                        /* shli r3, r1, 16 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-65528ll /* 0xffffffffffff0008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 16},                        /* shli r3, r1, 16 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-65527ll /* 0xffffffffffff0009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 16},                        /* shli r3, r1, 16 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-49153ll /* 0xffffffffffff3fff */ ,
+   {{6, 1, 14},                        /* shli r2, r1, 14 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-32776ll /* 0xffffffffffff7ff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 15},                        /* shli r3, r2, 15 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-32775ll /* 0xffffffffffff7ff9 */ ,
+   {{6, 1, 15},                        /* shli r2, r1, 15 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-32772ll /* 0xffffffffffff7ffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 15},                        /* shli r3, r2, 15 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-32771ll /* 0xffffffffffff7ffd */ ,
+   {{6, 1, 15},                        /* shli r2, r1, 15 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-32770ll /* 0xffffffffffff7ffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 15},                        /* shli r3, r2, 15 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-32769ll /* 0xffffffffffff7fff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 15},                        /* shli r3, r1, 15 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-32768ll /* 0xffffffffffff8000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 15}}                        /* shli r3, r2, 15 */
+   },
+  {-32767ll /* 0xffffffffffff8001 */ ,
+   {{6, 1, 15},                        /* shli r2, r1, 15 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-32766ll /* 0xffffffffffff8002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 15},                        /* shli r3, r1, 15 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-32765ll /* 0xffffffffffff8003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 15},                        /* shli r3, r1, 15 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-32764ll /* 0xffffffffffff8004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 15},                        /* shli r3, r1, 15 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-32763ll /* 0xffffffffffff8005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 15},                        /* shli r3, r1, 15 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-32760ll /* 0xffffffffffff8008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 15},                        /* shli r3, r1, 15 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-32759ll /* 0xffffffffffff8009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 15},                        /* shli r3, r1, 15 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-24577ll /* 0xffffffffffff9fff */ ,
+   {{6, 1, 13},                        /* shli r2, r1, 13 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16392ll /* 0xffffffffffffbff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 14},                        /* shli r3, r2, 14 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-16391ll /* 0xffffffffffffbff9 */ ,
+   {{6, 1, 14},                        /* shli r2, r1, 14 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-16388ll /* 0xffffffffffffbffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 14},                        /* shli r3, r2, 14 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-16387ll /* 0xffffffffffffbffd */ ,
+   {{6, 1, 14},                        /* shli r2, r1, 14 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-16386ll /* 0xffffffffffffbffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 14},                        /* shli r3, r2, 14 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-16385ll /* 0xffffffffffffbfff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 14},                        /* shli r3, r1, 14 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16384ll /* 0xffffffffffffc000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 14}}                        /* shli r3, r2, 14 */
+   },
+  {-16383ll /* 0xffffffffffffc001 */ ,
+   {{6, 1, 14},                        /* shli r2, r1, 14 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-16382ll /* 0xffffffffffffc002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 14},                        /* shli r3, r1, 14 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16381ll /* 0xffffffffffffc003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 14},                        /* shli r3, r1, 14 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16380ll /* 0xffffffffffffc004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 14},                        /* shli r3, r1, 14 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16379ll /* 0xffffffffffffc005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 14},                        /* shli r3, r1, 14 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16376ll /* 0xffffffffffffc008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 14},                        /* shli r3, r1, 14 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-16375ll /* 0xffffffffffffc009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 14},                        /* shli r3, r1, 14 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-12289ll /* 0xffffffffffffcfff */ ,
+   {{6, 1, 12},                        /* shli r2, r1, 12 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8200ll /* 0xffffffffffffdff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 13},                        /* shli r3, r2, 13 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-8199ll /* 0xffffffffffffdff9 */ ,
+   {{6, 1, 13},                        /* shli r2, r1, 13 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8196ll /* 0xffffffffffffdffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 13},                        /* shli r3, r2, 13 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-8195ll /* 0xffffffffffffdffd */ ,
+   {{6, 1, 13},                        /* shli r2, r1, 13 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-8194ll /* 0xffffffffffffdffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 13},                        /* shli r3, r2, 13 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-8193ll /* 0xffffffffffffdfff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 13},                        /* shli r3, r1, 13 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8192ll /* 0xffffffffffffe000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 13}}                        /* shli r3, r2, 13 */
+   },
+  {-8191ll /* 0xffffffffffffe001 */ ,
+   {{6, 1, 13},                        /* shli r2, r1, 13 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-8190ll /* 0xffffffffffffe002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 13},                        /* shli r3, r1, 13 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8189ll /* 0xffffffffffffe003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 13},                        /* shli r3, r1, 13 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8188ll /* 0xffffffffffffe004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 13},                        /* shli r3, r1, 13 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8187ll /* 0xffffffffffffe005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 13},                        /* shli r3, r1, 13 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8184ll /* 0xffffffffffffe008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 13},                        /* shli r3, r1, 13 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-8183ll /* 0xffffffffffffe009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 13},                        /* shli r3, r1, 13 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-6145ll /* 0xffffffffffffe7ff */ ,
+   {{6, 1, 11},                        /* shli r2, r1, 11 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4104ll /* 0xffffffffffffeff8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 12},                        /* shli r3, r2, 12 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-4103ll /* 0xffffffffffffeff9 */ ,
+   {{6, 1, 12},                        /* shli r2, r1, 12 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4100ll /* 0xffffffffffffeffc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 12},                        /* shli r3, r2, 12 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-4099ll /* 0xffffffffffffeffd */ ,
+   {{6, 1, 12},                        /* shli r2, r1, 12 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-4098ll /* 0xffffffffffffeffe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 12},                        /* shli r3, r2, 12 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-4097ll /* 0xffffffffffffefff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4096ll /* 0xfffffffffffff000 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 12}}                        /* shli r3, r2, 12 */
+   },
+  {-4095ll /* 0xfffffffffffff001 */ ,
+   {{6, 1, 12},                        /* shli r2, r1, 12 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-4094ll /* 0xfffffffffffff002 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4093ll /* 0xfffffffffffff003 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4092ll /* 0xfffffffffffff004 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4091ll /* 0xfffffffffffff005 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4088ll /* 0xfffffffffffff008 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-4087ll /* 0xfffffffffffff009 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-3073ll /* 0xfffffffffffff3ff */ ,
+   {{6, 1, 10},                        /* shli r2, r1, 10 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-3072ll /* 0xfffffffffffff400 */ ,
+   {{6, 1, 10},                        /* shli r2, r1, 10 */
+    {6, 1, 12},                        /* shli r3, r1, 12 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2056ll /* 0xfffffffffffff7f8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 11},                        /* shli r3, r2, 11 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-2055ll /* 0xfffffffffffff7f9 */ ,
+   {{6, 1, 11},                        /* shli r2, r1, 11 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2052ll /* 0xfffffffffffff7fc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 11},                        /* shli r3, r2, 11 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-2051ll /* 0xfffffffffffff7fd */ ,
+   {{6, 1, 11},                        /* shli r2, r1, 11 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-2050ll /* 0xfffffffffffff7fe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 11},                        /* shli r3, r2, 11 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-2049ll /* 0xfffffffffffff7ff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 11},                        /* shli r3, r1, 11 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2048ll /* 0xfffffffffffff800 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 11}}                        /* shli r3, r2, 11 */
+   },
+  {-2047ll /* 0xfffffffffffff801 */ ,
+   {{6, 1, 11},                        /* shli r2, r1, 11 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-2046ll /* 0xfffffffffffff802 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 11},                        /* shli r3, r1, 11 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2045ll /* 0xfffffffffffff803 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 11},                        /* shli r3, r1, 11 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2044ll /* 0xfffffffffffff804 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 11},                        /* shli r3, r1, 11 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2043ll /* 0xfffffffffffff805 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 11},                        /* shli r3, r1, 11 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2040ll /* 0xfffffffffffff808 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 11},                        /* shli r3, r1, 11 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-2039ll /* 0xfffffffffffff809 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 11},                        /* shli r3, r1, 11 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1537ll /* 0xfffffffffffff9ff */ ,
+   {{6, 1, 9},                 /* shli r2, r1, 9 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1032ll /* 0xfffffffffffffbf8 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 10},                        /* shli r3, r2, 10 */
+    {5, 2, 3}}                 /* shl3add r4, r2, r3 */
+   },
+  {-1031ll /* 0xfffffffffffffbf9 */ ,
+   {{6, 1, 10},                        /* shli r2, r1, 10 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1028ll /* 0xfffffffffffffbfc */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 10},                        /* shli r3, r2, 10 */
+    {4, 2, 3}}                 /* shl2add r4, r2, r3 */
+   },
+  {-1027ll /* 0xfffffffffffffbfd */ ,
+   {{6, 1, 10},                        /* shli r2, r1, 10 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-1026ll /* 0xfffffffffffffbfe */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 10},                        /* shli r3, r2, 10 */
+    {3, 2, 3}}                 /* shl1add r4, r2, r3 */
+   },
+  {-1025ll /* 0xfffffffffffffbff */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1024ll /* 0xfffffffffffffc00 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 2, 10}}                        /* shli r3, r2, 10 */
+   },
+  {-1023ll /* 0xfffffffffffffc01 */ ,
+   {{6, 1, 10},                        /* shli r2, r1, 10 */
+    {2, 1, 2}}                 /* sub r3, r1, r2 */
+   },
+  {-1022ll /* 0xfffffffffffffc02 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1021ll /* 0xfffffffffffffc03 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1020ll /* 0xfffffffffffffc04 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1019ll /* 0xfffffffffffffc05 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1018ll /* 0xfffffffffffffc06 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 9},                 /* shli r3, r1, 9 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 1}}                 /* shli r5, r4, 1 */
+   },
+  {-1017ll /* 0xfffffffffffffc07 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {2, 2, 1},                 /* sub r3, r2, r1 */
+    {6, 2, 7},                 /* shli r4, r2, 7 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-1016ll /* 0xfffffffffffffc08 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1015ll /* 0xfffffffffffffc09 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1014ll /* 0xfffffffffffffc0a */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-1013ll /* 0xfffffffffffffc0b */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-1012ll /* 0xfffffffffffffc0c */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 2}}                 /* shli r5, r4, 2 */
+   },
+  {-1011ll /* 0xfffffffffffffc0d */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 1}}                 /* shl2add r5, r4, r1 */
+   },
+  {-1010ll /* 0xfffffffffffffc0e */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {3, 1, 3},                 /* shl1add r4, r1, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-1009ll /* 0xfffffffffffffc0f */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {2, 2, 1},                 /* sub r3, r2, r1 */
+    {6, 2, 6},                 /* shli r4, r2, 6 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-1008ll /* 0xfffffffffffffc10 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-1007ll /* 0xfffffffffffffc11 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {1, 1, 2},                 /* add r3, r1, r2 */
+    {6, 2, 6},                 /* shli r4, r2, 6 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-1006ll /* 0xfffffffffffffc12 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-1005ll /* 0xfffffffffffffc13 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 9},                 /* shli r3, r1, 9 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {3, 4, 1}}                 /* shl1add r5, r4, r1 */
+   },
+  {-1004ll /* 0xfffffffffffffc14 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 2}}                 /* shli r5, r4, 2 */
+   },
+  {-1003ll /* 0xfffffffffffffc15 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 1}}                 /* shl2add r5, r4, r1 */
+   },
+  {-1001ll /* 0xfffffffffffffc17 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-1000ll /* 0xfffffffffffffc18 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 3}}                 /* shli r5, r4, 3 */
+   },
+  {-999ll /* 0xfffffffffffffc19 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 1}}                 /* shl3add r5, r4, r1 */
+   },
+  {-997ll /* 0xfffffffffffffc1b */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-996ll /* 0xfffffffffffffc1c */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {4, 1, 3},                 /* shl2add r4, r1, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-994ll /* 0xfffffffffffffc1e */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {3, 1, 3},                 /* shl1add r4, r1, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-993ll /* 0xfffffffffffffc1f */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {2, 2, 1},                 /* sub r3, r2, r1 */
+    {6, 2, 5},                 /* shli r4, r2, 5 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-992ll /* 0xfffffffffffffc20 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-991ll /* 0xfffffffffffffc21 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {1, 1, 2},                 /* add r3, r1, r2 */
+    {6, 2, 5},                 /* shli r4, r2, 5 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-990ll /* 0xfffffffffffffc22 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {6, 2, 5},                 /* shli r4, r2, 5 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-988ll /* 0xfffffffffffffc24 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-987ll /* 0xfffffffffffffc25 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 1}}                 /* shl2add r5, r4, r1 */
+   },
+  {-984ll /* 0xfffffffffffffc28 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 3}}                 /* shli r5, r4, 3 */
+   },
+  {-983ll /* 0xfffffffffffffc29 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 1}}                 /* shl3add r5, r4, r1 */
+   },
+  {-979ll /* 0xfffffffffffffc2d */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-976ll /* 0xfffffffffffffc30 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 6},                 /* shli r3, r1, 6 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 4}}                 /* shli r5, r4, 4 */
+   },
+  {-975ll /* 0xfffffffffffffc31 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {1, 3, 4}}                 /* add r5, r3, r4 */
+   },
+  {-969ll /* 0xfffffffffffffc37 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {3, 2, 1},                 /* shl1add r3, r2, r1 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-968ll /* 0xfffffffffffffc38 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {5, 1, 3},                 /* shl3add r4, r1, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-967ll /* 0xfffffffffffffc39 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-965ll /* 0xfffffffffffffc3b */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 2, 6},                 /* shli r3, r2, 6 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-964ll /* 0xfffffffffffffc3c */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {4, 1, 3},                 /* shl2add r4, r1, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-963ll /* 0xfffffffffffffc3d */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {3, 3, 1},                 /* shl1add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-962ll /* 0xfffffffffffffc3e */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {3, 1, 3},                 /* shl1add r4, r1, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-961ll /* 0xfffffffffffffc3f */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {2, 2, 1},                 /* sub r3, r2, r1 */
+    {6, 2, 4},                 /* shli r4, r2, 4 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-960ll /* 0xfffffffffffffc40 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-959ll /* 0xfffffffffffffc41 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {1, 1, 2},                 /* add r3, r1, r2 */
+    {6, 2, 4},                 /* shli r4, r2, 4 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-958ll /* 0xfffffffffffffc42 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {6, 2, 4},                 /* shli r4, r2, 4 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-957ll /* 0xfffffffffffffc43 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {4, 2, 2},                 /* shl2add r3, r2, r2 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-956ll /* 0xfffffffffffffc44 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {6, 2, 4},                 /* shli r4, r2, 4 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-955ll /* 0xfffffffffffffc45 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 6},                 /* shli r3, r2, 6 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {4, 4, 4}}                 /* shl2add r5, r4, r4 */
+   },
+  {-953ll /* 0xfffffffffffffc47 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-952ll /* 0xfffffffffffffc48 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 3}}                 /* shli r5, r4, 3 */
+   },
+  {-951ll /* 0xfffffffffffffc49 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 1}}                 /* shl3add r5, r4, r1 */
+   },
+  {-945ll /* 0xfffffffffffffc4f */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 4, 3}}                 /* sub r5, r4, r3 */
+   },
+  {-944ll /* 0xfffffffffffffc50 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 6},                 /* shli r3, r1, 6 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 4}}                 /* shli r5, r4, 4 */
+   },
+  {-943ll /* 0xfffffffffffffc51 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-942ll /* 0xfffffffffffffc52 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {3, 4, 2}}                 /* shl1add r5, r4, r2 */
+   },
+  {-940ll /* 0xfffffffffffffc54 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 2, 6},                 /* shli r3, r2, 6 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-936ll /* 0xfffffffffffffc58 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 2, 4},                 /* shli r3, r2, 4 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-935ll /* 0xfffffffffffffc59 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-929ll /* 0xfffffffffffffc5f */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-928ll /* 0xfffffffffffffc60 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 5},                 /* shli r3, r1, 5 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 5}}                 /* shli r5, r4, 5 */
+   },
+  {-925ll /* 0xfffffffffffffc63 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-924ll /* 0xfffffffffffffc64 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 7},                 /* shli r4, r3, 7 */
+    {4, 3, 4}}                 /* shl2add r5, r3, r4 */
+   },
+  {-920ll /* 0xfffffffffffffc68 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-919ll /* 0xfffffffffffffc69 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-916ll /* 0xfffffffffffffc6c */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-913ll /* 0xfffffffffffffc6f */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-912ll /* 0xfffffffffffffc70 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-911ll /* 0xfffffffffffffc71 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-910ll /* 0xfffffffffffffc72 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 7},                 /* shli r4, r3, 7 */
+    {3, 3, 4}}                 /* shl1add r5, r3, r4 */
+   },
+  {-905ll /* 0xfffffffffffffc77 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-904ll /* 0xfffffffffffffc78 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-903ll /* 0xfffffffffffffc79 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 7},                 /* shli r4, r3, 7 */
+    {1, 3, 4}}                 /* add r5, r3, r4 */
+   },
+  {-902ll /* 0xfffffffffffffc7a */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-901ll /* 0xfffffffffffffc7b */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-900ll /* 0xfffffffffffffc7c */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-899ll /* 0xfffffffffffffc7d */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-898ll /* 0xfffffffffffffc7e */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-897ll /* 0xfffffffffffffc7f */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-896ll /* 0xfffffffffffffc80 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-895ll /* 0xfffffffffffffc81 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {1, 1, 2},                 /* add r3, r1, r2 */
+    {6, 2, 3},                 /* shli r4, r2, 3 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-894ll /* 0xfffffffffffffc82 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {6, 2, 3},                 /* shli r4, r2, 3 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-893ll /* 0xfffffffffffffc83 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {5, 2, 1},                 /* shl3add r4, r2, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-892ll /* 0xfffffffffffffc84 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {6, 2, 3},                 /* shli r4, r2, 3 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-891ll /* 0xfffffffffffffc85 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {6, 3, 7},                 /* shli r4, r3, 7 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-890ll /* 0xfffffffffffffc86 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {2, 2, 1},                 /* sub r3, r2, r1 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-889ll /* 0xfffffffffffffc87 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {2, 2, 1},                 /* sub r4, r2, r1 */
+    {5, 3, 4}}                 /* shl3add r5, r3, r4 */
+   },
+  {-888ll /* 0xfffffffffffffc88 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {5, 3, 2}}                 /* shl3add r4, r3, r2 */
+   },
+  {-887ll /* 0xfffffffffffffc89 */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {1, 1, 2},                 /* add r3, r1, r2 */
+    {2, 1, 2},                 /* sub r4, r1, r2 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-886ll /* 0xfffffffffffffc8a */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {3, 1, 2},                 /* shl1add r4, r1, r2 */
+    {5, 3, 4}}                 /* shl3add r5, r3, r4 */
+   },
+  {-884ll /* 0xfffffffffffffc8c */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {4, 1, 2},                 /* shl2add r4, r1, r2 */
+    {5, 3, 4}}                 /* shl3add r5, r3, r4 */
+   },
+  {-881ll /* 0xfffffffffffffc8f */ ,
+   {{6, 1, 7},                 /* shli r2, r1, 7 */
+    {2, 2, 1},                 /* sub r3, r2, r1 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-880ll /* 0xfffffffffffffc90 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-879ll /* 0xfffffffffffffc91 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {3, 4, 1}}                 /* shl1add r5, r4, r1 */
+   },
+  {-873ll /* 0xfffffffffffffc97 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 2, 5},                 /* shli r3, r2, 5 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-872ll /* 0xfffffffffffffc98 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-868ll /* 0xfffffffffffffc9c */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 2}}                 /* shl2add r5, r4, r2 */
+   },
+  {-865ll /* 0xfffffffffffffc9f */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 2, 5},                 /* shli r3, r2, 5 */
+    {4, 3, 1},                 /* shl2add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-864ll /* 0xfffffffffffffca0 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 5},                 /* shli r3, r1, 5 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 5}}                 /* shli r5, r4, 5 */
+   },
+  {-863ll /* 0xfffffffffffffca1 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 2},                 /* shl3add r3, r2, r2 */
+    {6, 3, 5},                 /* shli r4, r3, 5 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-861ll /* 0xfffffffffffffca3 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 2},                 /* shl3add r3, r2, r2 */
+    {6, 3, 5},                 /* shli r4, r3, 5 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-860ll /* 0xfffffffffffffca4 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 2, 5},                 /* shli r3, r2, 5 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-856ll /* 0xfffffffffffffca8 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-855ll /* 0xfffffffffffffca9 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 5},                 /* shli r3, r2, 5 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 4}}                 /* shl3add r5, r4, r4 */
+   },
+  {-847ll /* 0xfffffffffffffcb1 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-837ll /* 0xfffffffffffffcbb */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 2},                 /* shl3add r3, r2, r2 */
+    {6, 3, 5},                 /* shli r4, r3, 5 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-835ll /* 0xfffffffffffffcbd */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-834ll /* 0xfffffffffffffcbe */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {3, 4, 2}}                 /* shl1add r5, r4, r2 */
+   },
+  {-832ll /* 0xfffffffffffffcc0 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 4},                 /* shli r3, r1, 4 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 6}}                 /* shli r5, r4, 6 */
+   },
+  {-831ll /* 0xfffffffffffffcc1 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-829ll /* 0xfffffffffffffcc3 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-828ll /* 0xfffffffffffffcc4 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 2, 5},                 /* shli r3, r2, 5 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-827ll /* 0xfffffffffffffcc5 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-824ll /* 0xfffffffffffffcc8 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 7},                 /* shli r3, r1, 7 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {5, 4, 3}}                 /* shl3add r5, r4, r3 */
+   },
+  {-823ll /* 0xfffffffffffffcc9 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-819ll /* 0xfffffffffffffccd */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-816ll /* 0xfffffffffffffcd0 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-815ll /* 0xfffffffffffffcd1 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-803ll /* 0xfffffffffffffcdd */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-801ll /* 0xfffffffffffffcdf */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {4, 3, 1},                 /* shl2add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-800ll /* 0xfffffffffffffce0 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-799ll /* 0xfffffffffffffce1 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {6, 3, 5},                 /* shli r4, r3, 5 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-797ll /* 0xfffffffffffffce3 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {6, 3, 5},                 /* shli r4, r3, 5 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-796ll /* 0xfffffffffffffce4 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {4, 4, 2}}                 /* shl2add r5, r4, r2 */
+   },
+  {-795ll /* 0xfffffffffffffce5 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {4, 2, 2},                 /* shl2add r3, r2, r2 */
+    {6, 3, 5},                 /* shli r4, r3, 5 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-793ll /* 0xfffffffffffffce7 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {4, 3, 1},                 /* shl2add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-792ll /* 0xfffffffffffffce8 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 8},                 /* shli r4, r3, 8 */
+    {5, 3, 4}}                 /* shl3add r5, r3, r4 */
+   },
+  {-791ll /* 0xfffffffffffffce9 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 8},                 /* shli r3, r2, 8 */
+    {5, 2, 3},                 /* shl3add r4, r2, r3 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-789ll /* 0xfffffffffffffceb */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 8},                 /* shli r3, r2, 8 */
+    {5, 2, 3},                 /* shl3add r4, r2, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-788ll /* 0xfffffffffffffcec */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-785ll /* 0xfffffffffffffcef */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {4, 3, 1},                 /* shl2add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-784ll /* 0xfffffffffffffcf0 */ ,
+   {{6, 1, 4},                 /* shli r2, r1, 4 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-783ll /* 0xfffffffffffffcf1 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {3, 3, 2},                 /* shl1add r4, r3, r2 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-781ll /* 0xfffffffffffffcf3 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {4, 1, 2},                 /* shl2add r3, r1, r2 */
+    {4, 3, 1},                 /* shl2add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-780ll /* 0xfffffffffffffcf4 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 8},                 /* shli r4, r3, 8 */
+    {4, 3, 4}}                 /* shl2add r5, r3, r4 */
+   },
+  {-779ll /* 0xfffffffffffffcf5 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 8},                 /* shli r3, r2, 8 */
+    {4, 2, 3},                 /* shl2add r4, r2, r3 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-777ll /* 0xfffffffffffffcf7 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-776ll /* 0xfffffffffffffcf8 */ ,
+   {{6, 1, 3},                 /* shli r2, r1, 3 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-775ll /* 0xfffffffffffffcf9 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {6, 3, 5},                 /* shli r4, r3, 5 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-774ll /* 0xfffffffffffffcfa */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {6, 3, 8},                 /* shli r4, r3, 8 */
+    {3, 3, 4}}                 /* shl1add r5, r3, r4 */
+   },
+  {-773ll /* 0xfffffffffffffcfb */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-772ll /* 0xfffffffffffffcfc */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-771ll /* 0xfffffffffffffcfd */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {3, 4, 4}}                 /* shl1add r5, r4, r4 */
+   },
+  {-770ll /* 0xfffffffffffffcfe */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-769ll /* 0xfffffffffffffcff */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-768ll /* 0xfffffffffffffd00 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {6, 1, 10},                        /* shli r3, r1, 10 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-767ll /* 0xfffffffffffffd01 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 8},                 /* shli r3, r2, 8 */
+    {2, 1, 3}}                 /* sub r4, r1, r3 */
+   },
+  {-766ll /* 0xfffffffffffffd02 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 1, 1},                 /* shli r3, r1, 1 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-765ll /* 0xfffffffffffffd03 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 8},                 /* shli r3, r2, 8 */
+    {2, 2, 3}}                 /* sub r4, r2, r3 */
+   },
+  {-764ll /* 0xfffffffffffffd04 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {4, 3, 2}}                 /* shl2add r4, r3, r2 */
+   },
+  {-763ll /* 0xfffffffffffffd05 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {1, 1, 2},                 /* add r3, r1, r2 */
+    {2, 1, 2},                 /* sub r4, r1, r2 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-762ll /* 0xfffffffffffffd06 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 1},                 /* shli r3, r2, 1 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-761ll /* 0xfffffffffffffd07 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {3, 2, 1},                 /* shl1add r3, r2, r1 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-760ll /* 0xfffffffffffffd08 */ ,
+   {{6, 1, 1},                 /* shli r2, r1, 1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-759ll /* 0xfffffffffffffd09 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {3, 2, 2},                 /* shl1add r3, r2, r2 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-757ll /* 0xfffffffffffffd0b */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-756ll /* 0xfffffffffffffd0c */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 2},                 /* shli r3, r2, 2 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-755ll /* 0xfffffffffffffd0d */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-753ll /* 0xfffffffffffffd0f */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {4, 2, 2},                 /* shl2add r3, r2, r2 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-752ll /* 0xfffffffffffffd10 */ ,
+   {{6, 1, 2},                 /* shli r2, r1, 2 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-751ll /* 0xfffffffffffffd11 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {4, 4, 1}}                 /* shl2add r5, r4, r1 */
+   },
+  {-749ll /* 0xfffffffffffffd13 */ ,
+   {{6, 1, 8},                 /* shli r2, r1, 8 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {5, 1, 3},                 /* shl3add r4, r1, r3 */
+    {3, 4, 3}}                 /* shl1add r5, r4, r3 */
+   },
+  {-748ll /* 0xfffffffffffffd14 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-744ll /* 0xfffffffffffffd18 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 3},                 /* shli r3, r2, 3 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-743ll /* 0xfffffffffffffd19 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-741ll /* 0xfffffffffffffd1b */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 2, 2},                 /* shl3add r3, r2, r2 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-739ll /* 0xfffffffffffffd1d */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {5, 2, 1},                 /* shl3add r3, r2, r1 */
+    {3, 3, 3},                 /* shl1add r4, r3, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-737ll /* 0xfffffffffffffd1f */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {3, 2, 2},                 /* shl1add r3, r2, r2 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-736ll /* 0xfffffffffffffd20 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 5},                 /* shli r3, r1, 5 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 5}}                 /* shli r5, r4, 5 */
+   },
+  {-735ll /* 0xfffffffffffffd21 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {5, 4, 1}}                 /* shl3add r5, r4, r1 */
+   },
+  {-732ll /* 0xfffffffffffffd24 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {6, 1, 8},                 /* shli r3, r1, 8 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 3}}                 /* shl2add r5, r4, r3 */
+   },
+  {-729ll /* 0xfffffffffffffd27 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {5, 2, 2},                 /* shl3add r3, r2, r2 */
+    {5, 3, 3},                 /* shl3add r4, r3, r3 */
+    {5, 4, 4}}                 /* shl3add r5, r4, r4 */
+   },
+  {-728ll /* 0xfffffffffffffd28 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {3, 2, 2},                 /* shl1add r3, r2, r2 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-720ll /* 0xfffffffffffffd30 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 4},                 /* shli r3, r2, 4 */
+    {6, 2, 8},                 /* shli r4, r2, 8 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-719ll /* 0xfffffffffffffd31 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {5, 2, 2},                 /* shl3add r3, r2, r2 */
+    {6, 3, 4},                 /* shli r4, r3, 4 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-715ll /* 0xfffffffffffffd35 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {5, 2, 2},                 /* shl3add r3, r2, r2 */
+    {6, 3, 4},                 /* shli r4, r3, 4 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-712ll /* 0xfffffffffffffd38 */ ,
+   {{6, 1, 5},                 /* shli r2, r1, 5 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {3, 3, 3},                 /* shl1add r4, r3, r3 */
+    {5, 4, 2}}                 /* shl3add r5, r4, r2 */
+   },
+  {-711ll /* 0xfffffffffffffd39 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 2, 4},                 /* shli r3, r2, 4 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {5, 4, 4}}                 /* shl3add r5, r4, r4 */
+   },
+  {-708ll /* 0xfffffffffffffd3c */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {4, 4, 2}}                 /* shl2add r5, r4, r2 */
+   },
+  {-707ll /* 0xfffffffffffffd3d */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {4, 2, 1},                 /* shl2add r3, r2, r1 */
+    {3, 3, 3},                 /* shl1add r4, r3, r3 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-705ll /* 0xfffffffffffffd3f */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {3, 2, 2},                 /* shl1add r3, r2, r2 */
+    {4, 3, 1},                 /* shl2add r4, r3, r1 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-704ll /* 0xfffffffffffffd40 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 1, 4},                 /* shli r3, r1, 4 */
+    {2, 2, 3},                 /* sub r4, r2, r3 */
+    {6, 4, 6}}                 /* shli r5, r4, 6 */
+   },
+  {-703ll /* 0xfffffffffffffd41 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {3, 2, 1},                 /* shl1add r3, r2, r1 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-701ll /* 0xfffffffffffffd43 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {5, 1, 2},                 /* shl3add r3, r1, r2 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-700ll /* 0xfffffffffffffd44 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {3, 2, 2},                 /* shl1add r3, r2, r2 */
+    {2, 1, 3},                 /* sub r4, r1, r3 */
+    {4, 4, 2}}                 /* shl2add r5, r4, r2 */
+   },
+  {-699ll /* 0xfffffffffffffd45 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {3, 2, 1},                 /* shl1add r3, r2, r1 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-695ll /* 0xfffffffffffffd49 */ ,
+   {{5, 1, 1},                 /* shl3add r2, r1, r1 */
+    {3, 1, 2},                 /* shl1add r3, r1, r2 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 2, 4}}                 /* sub r5, r2, r4 */
+   },
+  {-693ll /* 0xfffffffffffffd4b */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {3, 2, 1},                 /* shl1add r3, r2, r1 */
+    {6, 3, 6},                 /* shli r4, r3, 6 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-692ll /* 0xfffffffffffffd4c */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {3, 3, 3},                 /* shl1add r4, r3, r3 */
+    {4, 4, 2}}                 /* shl2add r5, r4, r2 */
+   },
+  {-688ll /* 0xfffffffffffffd50 */ ,
+   {{6, 1, 6},                 /* shli r2, r1, 6 */
+    {2, 1, 2},                 /* sub r3, r1, r2 */
+    {4, 3, 2},                 /* shl2add r4, r3, r2 */
+    {4, 4, 2}}                 /* shl2add r5, r4, r2 */
+   },
+  {-680ll /* 0xfffffffffffffd58 */ ,
+   {{2, 0, 1},                 /* sub r2, zero, r1 */
+    {4, 2, 2},                 /* shl2add r3, r2, r2 */
+    {6, 3, 7},                 /* shli r4, r3, 7 */
+    {5, 3, 4}}                 /* shl3add r5, r3, r4 */
+   },
+  {-679ll /* 0xfffffffffffffd59 */ ,
+   {{4, 1, 1},                 /* shl2add r2, r1, r1 */
+    {6, 2, 7},                 /* shli r3, r2, 7 */
+    {5, 2, 3},                 /* shl3add r4, r2, r3 */
+    {2, 1, 4}}                 /* sub r5, r1, r4 */
+   },
+  {-675ll /* 0xfffffffffffffd5d */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 5},                 /* shli r3, r2, 5 */
+    {5, 3, 2},                 /* shl3add r4, r3, r2 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-673ll /* 0xfffffffffffffd5f */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+    {6, 2, 5},                 /* shli r3, r2, 5 */
+    {5, 3, 1},                 /* shl3add r4, r3, r1 */
+    {2, 3, 4}}                 /* sub r5, r3, r4 */
+   },
+  {-672ll /* 0xfffffffffffffd60 */ ,
+   {{3, 1, 1},                 /* shl1add r2, r1, r1 */
+&